SURFEX v8.1
General documentation of Surfex
fandar.F90
Go to the documentation of this file.
1 ! Oct-2012 P. Marguinaud 64b LFI
2 ! Jan-2011 P. Marguinaud Thread-safe FA
3 SUBROUTINE fandar_fort &
4 & (fa, krep, knumer, kdatef)
5 USE fa_mod, ONLY : fa_com
6 USE parkind1, ONLY : jprb
7 USE yomhook , ONLY : lhook, dr_hook
9 IMPLICIT NONE
10 !****
11 ! Sous-programme de definition d'une (Nouvelle) Date sur un fichier
12 ! ARpege.
13 !**
14 ! Arguments : KREP (Sortie) ==> Code-reponse du sous-programme;
15 ! KNUMER (Entree) ==> Numero de l'unite logique;
16 ! (Tableau) KDATEF (Entree) ==> Date elle-meme (FA%JPLDAT mots).
17 !*
18 ! En cas de modification effective (si le fichier etait deja muni
19 ! d'une date), il y a messagerie de niveau 1.
20 !
21 !
22 !
23 TYPE(fa_com) :: FA
24 INTEGER (KIND=JPLIKB) KREP, KNUMER
25 INTEGER (KIND=JPLIKB) KDATEF (fa%jpldat)
26 !
27 INTEGER (KIND=JPLIKB) IRANG, IREP, INIMES, J
28 INTEGER (KIND=JPLIKB) ILONG, IPOSEX
29 INTEGER (KIND=JPLIKB) IDATXF (fa%jpldat)
30 !
31 LOGICAL LLVERF, LLRLFI, LLMODA
32 !
33 CHARACTER(LEN=FA%JPXNOM) CLACTI
34 CHARACTER(LEN=FA%JPLMES) CLMESS
35 CHARACTER(LEN=FA%JPLSPX) CLNSPR
36 LOGICAL LLFATA
37 
38 !**
39 ! 1. - CONTROLES DES PARAMETRES D'APPEL, PUIS INITIALISATIONS.
40 !-----------------------------------------------------------------------
41 !
42 REAL(KIND=JPRB) :: ZHOOK_HANDLE
43 IF (lhook) CALL dr_hook('FANDAR_MT',0,zhook_handle)
44 clacti=''
45 llverf=.false.
46 llrlfi=.false.
47 llmoda=.false.
48 idatxf=0
49 CALL fanumu_fort &
50 & (fa, knumer,irang)
51 !
52 IF (irang.EQ.0) THEN
53  irep=-51
54  GOTO 1001
55 ENDIF
56 !
57 ! Verrouillage eventuel du fichier.
58 !
59 IF (fa%LFAMUL) CALL lfiver_fort &
60 & (fa%LFI, fa%FICHIER(irang)%VRFICH,'ON')
61 llverf=fa%LFAMUL
62 !**
63 ! 2. - DEFINITION PROPREMENT DITE VIA LE SOUS-PROGRAMME "FANDAI".
64 ! ( controles, puis mise a jour de FA%MADATE(.,IRANG) )
65 !-----------------------------------------------------------------------
66 !
67 CALL fandai_fort &
68 & (fa, irep,irang,kdatef,idatxf,llmoda)
69 !
70 IF (irep.EQ.0) THEN
71  IF (fa%FICHIER(irang)%LNOMME) THEN
72 !**
73 ! 3. - ECRITURE DE LA DATE SUR LE FICHIER.
74 !-----------------------------------------------------------------------
75 !
76  CALL lfiecr_fort &
77 & (fa%LFI,irep,knumer,fa%CPDATE,kdatef,fa%JPLDAT)
78  llrlfi=irep.NE.0
79  fa%FICHIER(irang)%LCREAF=fa%FICHIER(irang)%LCREAF.AND.llrlfi
80  CALL lfinfo_fort &
81 & (fa%LFI,irep,knumer,fa%CPDATX,ilong,iposex)
82  IF (ilong > 0) THEN
83  CALL lfisup_fort &
84 & (fa%LFI,irep,knumer,fa%CPDATX,ilong)
85  IF (irep /= 0) GOTO 1001
86  ENDIF
87  ELSE
88  llrlfi=.false.
89  fa%FICHIER(irang)%LCREAF=.false.
90  ENDIF
91 ENDIF
92 !**
93 ! 10. - PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
94 ! VIA LE SOUS-PROGRAMME "FAIPAR" .
95 !-----------------------------------------------------------------------
96 !
97 1001 CONTINUE
98 krep=irep
99 llfata=llmoer(irep,irang)
100 !
101 ! Deverrouillage eventuel du fichier.
102 !
103 IF (llverf) CALL lfiver_fort &
104 & (fa%LFI, fa%FICHIER(irang)%VRFICH,'OFF')
105 !
106 IF (llfata) THEN
107  inimes=2
108 ELSEIF (irep.NE.0) THEN
109  inimes=0
110 ELSE
111  inimes=ixnvms(irang)
112 ENDIF
113 !
114 IF (.NOT.llfata.AND.inimes.EQ.0) THEN
115  IF (lhook) CALL dr_hook('FANDAR_MT',1,zhook_handle)
116  RETURN
117 ENDIF
118 !
119 clnspr='FANDAR'
120 !
121 IF (inimes.GE.1.AND.llmoda) THEN
122  WRITE (unit=clmess,fmt= &
123 & '(''MODIFICATION DE LA DATE, UNITE'',I3)') knumer
124  CALL faipar_fort &
125 & (fa, knumer,inimes,irep,.false.,clmess, &
126 & clnspr,clacti,.false.)
127 ENDIF
128 !
129 IF (inimes.EQ.2) THEN
130 !***** FAZZZZ - KREP=iiii, KNUMER=iii, KDATEF(1:5)=iiiii/ii/ii iii:ii, *****
131 !***** KDATEF(7:8)=iiiiii-iiiiii *****
132  WRITE (unit=clmess,fmt='(''KREP='',I4,'', KNUMER='',I3, &
133 & '', KDATEF(1:5)='',I5,2(''/'',I2),I3,'':'',I2.2, &
134 & '', KDATEF(7:8)='',I6,''-'',I6)') krep,knumer, &
135 & (kdatef(j),j=1,5),(kdatef(j),j=7,8)
136  CALL faipar_fort &
137 & (fa, knumer,inimes,irep,llfata,clmess, &
138 & clnspr,clacti,llrlfi)
139 ENDIF
140 !
141 IF (lhook) CALL dr_hook('FANDAR_MT',1,zhook_handle)
142 
143 CONTAINS
144 
145 #include "facom2.llmoer.h"
146 #include "facom2.ixnvms.h"
147 
148 END SUBROUTINE fandar_fort
149 
150 
151 
152 ! Oct-2012 P. Marguinaud 64b LFI
153 SUBROUTINE fandar64 &
154 & (krep, knumer, kdatef)
155 USE fa_mod, ONLY : fa => fa_com_default, &
158 USE lfi_precision
159 IMPLICIT NONE
160 ! Arguments
161 INTEGER (KIND=JPLIKB) KREP ! OUT
162 INTEGER (KIND=JPLIKB) KNUMER ! IN
163 INTEGER (KIND=JPLIKB) KDATEF (*) ! IN
164 
165 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
166 
167 CALL fandar_fort &
168 & (fa, krep, knumer, kdatef)
169 
170 END SUBROUTINE fandar64
171 
172 SUBROUTINE fandar &
173 & (krep, knumer, kdatef)
174 USE fa_mod, ONLY : fa => fa_com_default, &
177 USE lfi_precision
178 IMPLICIT NONE
179 ! Arguments
180 INTEGER (KIND=JPLIKM) KREP ! OUT
181 INTEGER (KIND=JPLIKM) KNUMER ! IN
182 INTEGER (KIND=JPLIKM) KDATEF (*) ! IN
183 
184 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
185 
186 CALL fandar_mt &
187 & (fa, krep, knumer, kdatef)
188 
189 END SUBROUTINE fandar
190 
191 SUBROUTINE fandar_mt &
192 & (fa, krep, knumer, kdatef)
193 USE fa_mod, ONLY : fa_com
194 USE lfi_precision
195 IMPLICIT NONE
196 ! Arguments
197 type(fa_com) fa ! INOUT
198 INTEGER (KIND=JPLIKM) KREP ! OUT
199 INTEGER (KIND=JPLIKM) KNUMER ! IN
200 INTEGER (KIND=JPLIKM) KDATEF (fa%jpldat) ! IN
201 ! Local integers
202 INTEGER (KIND=JPLIKB) IREP ! OUT
203 INTEGER (KIND=JPLIKB) INUMER ! IN
204 INTEGER (KIND=JPLIKB) IDATEF (fa%jpldat) ! IN
205 ! Convert arguments
206 
207 inumer = int( knumer, jplikb)
208 idatef = int( kdatef, jplikb)
209 
210 CALL fandar_fort &
211 & (fa, irep, inumer, idatef)
212 
213 krep = int( irep, jplikm)
214 
215 END SUBROUTINE fandar_mt
216 
217 !INTF KREP OUT
218 !INTF KNUMER IN
219 !INTF KDATEF IN DIMS=FA%JPLDAT
220 
221 
subroutine lfiecr_fort(LFI, KREP, KNUMER, CDNOMA, KTAB, KLONG)
Definition: lfiecr.F90:6
integer, parameter jplikb
subroutine lfisup_fort(LFI, KREP, KNUMER, CDNOMA, KLONUT)
Definition: lfisup.F90:6
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine new_fa_default()
Definition: fa_mod.F90:649
subroutine fandai_fort(FA, KREP, KRANG, KDATEF, KDATXF, LDMODA)
Definition: fandai.F90:5
subroutine fandar_fort(FA, KREP, KNUMER, KDATEF)
Definition: fandar.F90:5
Definition: fa_mod.F90:1
subroutine lfinfo_fort(LFI, KREP, KNUMER, CDNOMA, KLONG, KPOSEX)
Definition: lfinfo.F90:6
subroutine lfiver_fort(LFI, PVEROU, CDSENS)
Definition: lfiver.F90:6
integer, parameter jprb
Definition: parkind1.F90:32
subroutine fandar_mt(FA, KREP, KNUMER, KDATEF)
Definition: fandar.F90:193
subroutine fandar64(KREP, KNUMER, KDATEF)
Definition: fandar.F90:155
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
subroutine fandar(KREP, KNUMER, KDATEF)
Definition: fandar.F90:174
subroutine faipar_fort(FA, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
Definition: faipar.F90:6
subroutine fanumu_fort(FA, KNUMER, KRANG)
Definition: fanumu.F90:5