SURFEX v8.1
General documentation of Surfex
fandax.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 fandax_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/Sortie) ==> Date elle-meme (FA%JPLDAT*2 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*2)
26 !
27 INTEGER (KIND=JPLIKB) IRANG, IREP, INIMES, J
28 !
29 LOGICAL LLVERF, LLRLFI, LLMODA
30 !
31 CHARACTER(LEN=FA%JPXNOM) CLACTI
32 CHARACTER(LEN=FA%JPLMES) CLMESS
33 CHARACTER(LEN=FA%JPLSPX) CLNSPR
34 LOGICAL LLFATA
35 
36 !**
37 ! 1. - CONTROLES DES PARAMETRES D'APPEL, PUIS INITIALISATIONS.
38 !-----------------------------------------------------------------------
39 !
40 REAL(KIND=JPRB) :: ZHOOK_HANDLE
41 IF (lhook) CALL dr_hook('FANDAX_MT',0,zhook_handle)
42 clacti=''
43 llverf=.false.
44 llrlfi=.false.
45 llmoda=.false.
46 CALL fanumu_fort &
47 & (fa, knumer,irang)
48 !
49 IF (irang.EQ.0) THEN
50  irep=-51
51  GOTO 1001
52 ENDIF
53 !
54 ! Verrouillage eventuel du fichier.
55 !
56 IF (fa%LFAMUL) CALL lfiver_fort &
57 & (fa%LFI, fa%FICHIER(irang)%VRFICH,'ON')
58 llverf=fa%LFAMUL
59 !**
60 ! 2. - DEFINITION PROPREMENT DITE VIA LE SOUS-PROGRAMME "FANDAI".
61 ! ( controles, puis mise a jour de FA%MADATE(.,IRANG) )
62 !-----------------------------------------------------------------------
63 !
64 CALL fandai_fort &
65 & (fa,irep,irang,kdatef(1:fa%JPLDAT), &
66 & kdatef(fa%JPLDAT+1:fa%JPLDAT*2),llmoda)
67 !
68 IF (irep.EQ.0) THEN
69  IF (fa%FICHIER(irang)%LNOMME) THEN
70 !**
71 ! 3. - ECRITURE DE LA DATE SUR LE FICHIER.
72 !-----------------------------------------------------------------------
73 !
74  CALL lfiecr_fort &
75 & (fa%LFI, irep,knumer,fa%CPDATE,kdatef(1:fa%JPLDAT),fa%JPLDAT)
76  CALL lfiecr_fort &
77 & (fa%LFI, irep,knumer,fa%CPDATX,kdatef(fa%JPLDAT+1:fa%JPLDAT*2),fa%JPLDAT)
78  llrlfi=irep.NE.0
79  fa%FICHIER(irang)%LCREAF=fa%FICHIER(irang)%LCREAF.AND.llrlfi
80  ELSE
81  llrlfi=.false.
82  fa%FICHIER(irang)%LCREAF=.false.
83  ENDIF
84 ENDIF
85 !**
86 ! 10. - PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
87 ! VIA LE SOUS-PROGRAMME "FAIPAR" .
88 !-----------------------------------------------------------------------
89 !
90 1001 CONTINUE
91 krep=irep
92 llfata=llmoer(irep,irang)
93 !
94 ! Deverrouillage eventuel du fichier.
95 !
96 IF (llverf) CALL lfiver_fort &
97 & (fa%LFI, fa%FICHIER(irang)%VRFICH,'OFF')
98 !
99 IF (llfata) THEN
100  inimes=2
101 ELSEIF (irep.NE.0) THEN
102  inimes=0
103 ELSE
104  inimes=ixnvms(irang)
105 ENDIF
106 !
107 IF (.NOT.llfata.AND.inimes.NE.2) THEN
108  IF (lhook) CALL dr_hook('FANDAX_MT',1,zhook_handle)
109  RETURN
110 ENDIF
111 !
112 clnspr='FANDAX'
113 !
114 IF (inimes.GE.1.AND.llmoda) THEN
115  WRITE (unit=clmess,fmt= &
116 & '(''MODIFICATION DE LA DATE, UNITE'',I3)') knumer
117 
118  CALL faipar_fort &
119 & (fa, knumer,inimes,irep,.false.,clmess, &
120 & clnspr,clacti,.false.)
121 ENDIF
122 !
123 IF (inimes.EQ.2) THEN
124 !***** FAZZZZ - KREP=iiii, KNUMER=iii, KDATEF(1:5)=iiiii/ii/ii iii:ii, *****
125 !***** KDATEF(7:8)=iiiiii-iiiiii *****
126  WRITE (unit=clmess,fmt='(''KREP='',I4,'', KNUMER='',I3, &
127 & '', KDATEF(1:5)='',I5,2(''/'',I2),I3,'':'',I2.2, &
128 & '', KDATEF(7:8)='',I6,''-'',I6)') krep,knumer, &
129 & (kdatef(j),j=1,5),(kdatef(j),j=7,8)
130  CALL faipar_fort &
131 & (fa, knumer,inimes,irep,llfata,clmess, &
132 & clnspr,clacti,llrlfi)
133 ENDIF
134 !
135 IF (lhook) CALL dr_hook('FANDAX_MT',1,zhook_handle)
136 
137 CONTAINS
138 
139 #include "facom2.llmoer.h"
140 #include "facom2.ixnvms.h"
141 
142 END SUBROUTINE fandax_fort
143 
144 
145 
146 ! Oct-2012 P. Marguinaud 64b LFI
147 SUBROUTINE fandax64 &
148 & (krep, knumer, kdatef)
149 USE fa_mod, ONLY : fa => fa_com_default, &
152 USE lfi_precision
153 IMPLICIT NONE
154 ! Arguments
155 INTEGER (KIND=JPLIKB) KREP ! OUT
156 INTEGER (KIND=JPLIKB) KNUMER ! IN
157 INTEGER (KIND=JPLIKB) KDATEF (*) ! INOUT
158 
159 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
160 
161 CALL fandax_fort &
162 & (fa, krep, knumer, kdatef)
163 
164 END SUBROUTINE fandax64
165 
166 SUBROUTINE fandax &
167 & (krep, knumer, kdatef)
168 USE fa_mod, ONLY : fa => fa_com_default, &
171 USE lfi_precision
172 IMPLICIT NONE
173 ! Arguments
174 INTEGER (KIND=JPLIKM) KREP ! OUT
175 INTEGER (KIND=JPLIKM) KNUMER ! IN
176 INTEGER (KIND=JPLIKM) KDATEF (*) ! INOUT
177 
178 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
179 
180 CALL fandax_mt &
181 & (fa, krep, knumer, kdatef)
182 
183 END SUBROUTINE fandax
184 
185 SUBROUTINE fandax_mt &
186 & (fa, krep, knumer, kdatef)
187 USE fa_mod, ONLY : fa_com
188 USE lfi_precision
189 IMPLICIT NONE
190 ! Arguments
191 type(fa_com) fa ! INOUT
192 INTEGER (KIND=JPLIKM) KREP ! OUT
193 INTEGER (KIND=JPLIKM) KNUMER ! IN
194 INTEGER (KIND=JPLIKM) KDATEF (fa%jpldat*2) ! INOUT
195 ! Local integers
196 INTEGER (KIND=JPLIKB) IREP ! OUT
197 INTEGER (KIND=JPLIKB) INUMER ! IN
198 INTEGER (KIND=JPLIKB) IDATEF (fa%jpldat*2) ! INOUT
199 ! Convert arguments
200 
201 inumer = int( knumer, jplikb)
202 idatef = int( kdatef, jplikb)
203 
204 CALL fandax_fort &
205 & (fa, irep, inumer, idatef)
206 
207 krep = int( irep, jplikm)
208 kdatef = int( idatef, jplikm)
209 
210 END SUBROUTINE fandax_mt
211 
212 !INTF KREP OUT
213 !INTF KNUMER IN
214 !INTF KDATEF INOUT DIMS=FA%JPLDAT*2
subroutine lfiecr_fort(LFI, KREP, KNUMER, CDNOMA, KTAB, KLONG)
Definition: lfiecr.F90:6
integer, parameter jplikb
subroutine fandax(KREP, KNUMER, KDATEF)
Definition: fandax.F90:168
subroutine fandax64(KREP, KNUMER, KDATEF)
Definition: fandax.F90:149
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
Definition: fa_mod.F90:1
subroutine fandax_fort(FA, KREP, KNUMER, KDATEF)
Definition: fandax.F90:5
subroutine lfiver_fort(LFI, PVEROU, CDSENS)
Definition: lfiver.F90:6
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
subroutine faipar_fort(FA, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
Definition: faipar.F90:6
subroutine fandax_mt(FA, KREP, KNUMER, KDATEF)
Definition: fandax.F90:187
subroutine fanumu_fort(FA, KNUMER, KRANG)
Definition: fanumu.F90:5