SURFEX v8.1
General documentation of Surfex
falsif.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 falsif_fort &
4 & (fa, krep, knumer, cdiden )
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 renvoyant le NOM de l'Identificateur
12 ! d'un fichier ARPEGE.
13 ! ( Lecture Specifique de l'Identificateur de Fichier )
14 !**
15 ! Arguments : KREP (Sortie) ==> Code-reponse du sous-programme;
16 ! KNUMER (Entree) ==> Numero de l'unite logique;
17 ! CDIDEN (Sortie) ==> Nom de l'identificateur.
18 !
19 !
20 !
21 TYPE(fa_com) :: FA
22 INTEGER (KIND=JPLIKB) KREP, KNUMER
23 !
24 INTEGER (KIND=JPLIKB) IREP, ILIDEN, IRANG
25 INTEGER (KIND=JPLIKB) J, ILONGN, INIMES, ILACTI
26 !
27 LOGICAL LLVERF, LLRLFI
28 !
29 CHARACTER CDIDEN*(*)
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 ET INITIALISATIONS.
38 !-----------------------------------------------------------------------
39 !
40 REAL(KIND=JPRB) :: ZHOOK_HANDLE
41 IF (lhook) CALL dr_hook('FALSIF_MT',0,zhook_handle)
42 clacti=''
43 llverf=.false.
44 llrlfi=.false.
45 iliden=int(len(cdiden), jplikb)
46 CALL fanumu_fort &
47 & (fa, knumer,irang)
48 !
49 IF (irang.EQ.0) THEN
50  irep=-51
51  GOTO 1001
52 ELSEIF (iliden.LE.0) THEN
53  irep=-65
54  GOTO 1001
55 ELSE
56  irep=0
57 ENDIF
58 !
59 ! Verrouillage eventuel du fichier.
60 !
61 IF (fa%LFAMUL) CALL lfiver_fort &
62 & (fa%LFI, fa%FICHIER(irang)%VRFICH,'ON')
63 llverf=fa%LFAMUL
64 !**
65 ! 2. - ON RENVOIE LE NOM D'IDENTIFICATEUR, APRES CONTROLE EVENTUEL
66 ! D'UNE VARIABLE CARACTERE SUFISAMMENT LONGUE.
67 !-----------------------------------------------------------------------
68 !
69 IF (iliden.GE.fa%NCPCAD) THEN
70  cdiden=fa%FICHIER(irang)%CIDENT
71 ELSE
72 !
73  DO j=fa%NCPCAD,1,-1
74 !
75  IF (fa%FICHIER(irang)%CIDENT(j:j).NE.' ') THEN
76  ilongn=j
77  GOTO 202
78  ENDIF
79 !
80  ENDDO
81 !
82  irep=-66
83  GOTO 1001
84 !
85 202 CONTINUE
86 !
87  IF (ilongn.GT.iliden) THEN
88  irep=-69
89  ELSE
90  cdiden=fa%FICHIER(irang)%CIDENT(1:ilongn)
91  ENDIF
92 !
93 ENDIF
94 !**
95 ! 10. - PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
96 ! VIA LE SOUS-PROGRAMME "FAIPAR" .
97 !-----------------------------------------------------------------------
98 !
99 1001 CONTINUE
100 krep=irep
101 llfata=llmoer(irep,irang)
102 !
103 ! Deverrouillage eventuel du fichier.
104 !
105 IF (llverf) CALL lfiver_fort &
106 & (fa%LFI, fa%FICHIER(irang)%VRFICH,'OFF')
107 !
108 IF (llfata) THEN
109  inimes=2
110 ELSE
111  inimes=ixnvms(irang)
112 ENDIF
113 !
114 IF (.NOT.llfata.AND.inimes.NE.2) THEN
115  IF (lhook) CALL dr_hook('FALSIF_MT',1,zhook_handle)
116  RETURN
117 ENDIF
118 !
119 clnspr='FALSIF'
120 !
121 IF (irep.EQ.0.OR.irep.EQ.-69) THEN
122  ilacti=fa%NCPCAD
123  clacti=fa%FICHIER(irang)%CIDENT(1:ilacti)
124 ELSE
125  ilacti=8
126  clacti(1:ilacti)=fa%CHAINC(:ilacti)
127 ENDIF
128 !
129 WRITE (unit=clmess,fmt='(''KREP='',I4,'', KNUMER='',I3, &
130 & '', CDIDEN='''''',A,'''''''')') &
131 & krep,knumer,clacti(1:ilacti)
132 CALL faipar_fort &
133 & (fa, knumer,inimes,irep,llfata,clmess, &
134 & clnspr,clacti(1:ilacti),llrlfi)
135 !
136 IF (lhook) CALL dr_hook('FALSIF_MT',1,zhook_handle)
137 RETURN
138 
139 CONTAINS
140 
141 #include "facom2.llmoer.h"
142 #include "facom2.ixnvms.h"
143 
144 END SUBROUTINE falsif_fort
145 
146 
147 
148 ! Oct-2012 P. Marguinaud 64b LFI
149 SUBROUTINE falsif64 &
150 & (krep, knumer, cdiden)
151 USE fa_mod, ONLY : fa => fa_com_default, &
154 USE lfi_precision
155 IMPLICIT NONE
156 ! Arguments
157 INTEGER (KIND=JPLIKB) KREP ! OUT
158 INTEGER (KIND=JPLIKB) KNUMER ! IN
159 CHARACTER (LEN=*) CDIDEN ! OUT
160 
161 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
162 
163 CALL falsif_fort &
164 & (fa, krep, knumer, cdiden)
165 
166 END SUBROUTINE falsif64
167 
168 SUBROUTINE falsif &
169 & (krep, knumer, cdiden)
170 USE fa_mod, ONLY : fa => fa_com_default, &
173 USE lfi_precision
174 IMPLICIT NONE
175 ! Arguments
176 INTEGER (KIND=JPLIKM) KREP ! OUT
177 INTEGER (KIND=JPLIKM) KNUMER ! IN
178 CHARACTER (LEN=*) CDIDEN ! OUT
179 
180 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
181 
182 CALL falsif_mt &
183 & (fa, krep, knumer, cdiden)
184 
185 END SUBROUTINE falsif
186 
187 SUBROUTINE falsif_mt &
188 & (fa, krep, knumer, cdiden)
189 USE fa_mod, ONLY : fa_com
190 USE lfi_precision
191 IMPLICIT NONE
192 ! Arguments
193 type(fa_com) fa ! INOUT
194 INTEGER (KIND=JPLIKM) KREP ! OUT
195 INTEGER (KIND=JPLIKM) KNUMER ! IN
196 CHARACTER (LEN=*) CDIDEN ! OUT
197 ! Local integers
198 INTEGER (KIND=JPLIKB) IREP ! OUT
199 INTEGER (KIND=JPLIKB) INUMER ! IN
200 ! Convert arguments
201 
202 inumer = int( knumer, jplikb)
203 
204 CALL falsif_fort &
205 & (fa, irep, inumer, cdiden)
206 
207 krep = int( irep, jplikm)
208 
209 END SUBROUTINE falsif_mt
210 
211 !INTF KREP OUT
212 !INTF KNUMER IN
213 !INTF CDIDEN OUT
integer, parameter jplikb
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine new_fa_default()
Definition: fa_mod.F90:649
Definition: fa_mod.F90:1
subroutine lfiver_fort(LFI, PVEROU, CDSENS)
Definition: lfiver.F90:6
integer, parameter jprb
Definition: parkind1.F90:32
subroutine falsif(KREP, KNUMER, CDIDEN)
Definition: falsif.F90:170
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 falsif64(KREP, KNUMER, CDIDEN)
Definition: falsif.F90:151
subroutine falsif_mt(FA, KREP, KNUMER, CDIDEN)
Definition: falsif.F90:189
subroutine fanumu_fort(FA, KNUMER, KRANG)
Definition: fanumu.F90:5
subroutine falsif_fort(FA, KREP, KNUMER, CDIDEN)
Definition: falsif.F90:5