SURFEX v8.1
General documentation of Surfex
fautif.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 fautif_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 permettant de donner un NOM a l'Identificateur
12 ! d'un fichier ARPEGE.
13 ! ( l'Utilisateur Traite son Identificateur de Fichier )
14 !**
15 ! Arguments : KREP (Sortie) ==> Code-reponse du sous-programme;
16 ! KNUMER (Entree) ==> Numero de l'unite logique;
17 ! CDIDEN (Entree) ==> Nom de l'identificateur.
18 !
19 ! Une messagerie de niveau 1 est emise dans les cas "normaux"
20 !
21 !
22 !
23 TYPE(fa_com) :: FA
24 INTEGER (KIND=JPLIKB) KREP, KNUMER
25 !
26 INTEGER (KIND=JPLIKB) IREP, ILIDEN, IRANG, INIMES, ILACTI
27 !
28 LOGICAL LLVERF, LLRLFI
29 !
30 CHARACTER CDIDEN*(*)
31 !
32 CHARACTER(LEN=FA%JPXNOM) CLACTI
33 CHARACTER(LEN=FA%JPXNOM) CLNOMA
34 CHARACTER(LEN=FA%JPLMES) CLMESS
35 CHARACTER(LEN=FA%JPLSPX) CLNSPR
36 LOGICAL LLFATA
37 
38 !**
39 ! 1. - CONTROLES ET INITIALISATIONS.
40 !-----------------------------------------------------------------------
41 !
42 REAL(KIND=JPRB) :: ZHOOK_HANDLE
43 IF (lhook) CALL dr_hook('FAUTIF_MT',0,zhook_handle)
44 clacti=''
45 llverf=.false.
46 llrlfi=.false.
47 iliden=int(len(cdiden), jplikb)
48 CALL fanumu_fort &
49 & (fa, knumer,irang)
50 !
51 IF (irang.EQ.0) THEN
52  irep=-51
53  GOTO 1001
54 ELSEIF (iliden.LE.0) THEN
55  irep=-65
56  GOTO 1001
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 clnoma=fa%FICHIER(irang)%CIDENT
65 !
66 IF (cdiden.EQ.fa%CPCACH.OR.cdiden.EQ.fa%CPCADI.OR. &
67 & cdiden.EQ.fa%CPCAFS.OR.cdiden.EQ.fa%CPCARP.OR. &
68 & cdiden.EQ.fa%CPDATE.OR.cdiden.EQ.fa%CPDATX) THEN
69  irep=-111
70  GOTO 1001
71 ENDIF
72 !**
73 ! 2. - ON RENOMME L'ARTICLE IDENTIFICATEUR, QUI EXISTE TOUJOURS SI
74 ! LE FICHIER EST OUVERT, AU MOINS AVEC UN NOM PAR DEFAUT.
75 !-----------------------------------------------------------------------
76 !
77 IF (cdiden.NE.fa%FICHIER(irang)%CIDENT) THEN
78  CALL lfiren_fort &
79 & (fa%LFI, irep,knumer,fa%FICHIER(irang)%CIDENT,cdiden)
80  llrlfi=irep.NE.0
81  IF (.NOT.llrlfi) fa%FICHIER(irang)%CIDENT=cdiden
82 ELSE
83  irep=0
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 ELSE
102  inimes=ixnvms(irang)
103 ENDIF
104 !
105 IF (.NOT.llfata.AND.inimes.EQ.0) THEN
106  IF (lhook) CALL dr_hook('FAUTIF_MT',1,zhook_handle)
107  RETURN
108 ENDIF
109 !
110 clnspr='FAUTIF'
111 !
112 IF (irep.NE.-65) THEN
113  ilacti=fa%NCPCAD
114  clacti(1:ilacti)=cdiden(1:min(iliden,ilacti))
115 ELSE
116  ilacti=8
117  clacti(1:ilacti)=fa%CHAINC(:ilacti)
118 ENDIF
119 !
120 IF (inimes.EQ.2) THEN
121  WRITE (unit=clmess,fmt='(''KREP='',I4,'', KNUMER='',I3, &
122 & '', CDIDEN='''''',A,'''''''')') &
123 & krep,knumer,clacti(1:ilacti)
124  CALL faipar_fort &
125 & (fa, knumer,inimes,irep,llfata, &
126 & clmess,clnspr, &
127 & clacti(1:ilacti),llrlfi)
128 ENDIF
129 !
130 ! La messagerie qui suit n'est pas emise en cas d'erreur fatale.
131 !
132 IF (inimes.GE.1.AND.irang.NE.0) THEN
133  WRITE (unit=clmess,fmt= &
134 & '(''Ancien Identificateur de l''''unite logique'',I3, &
135 & '' : '''''',A,'''''', Nouveau: '''''',A,'''''''')') &
136 & knumer,clnoma,fa%FICHIER(irang)%CIDENT
137  CALL faipar_fort &
138 & (fa, knumer,inimes,irep,.false.,clmess, &
139 & clnspr,clacti(1:ilacti),.false.)
140 ENDIF
141 !
142 IF (lhook) CALL dr_hook('FAUTIF_MT',1,zhook_handle)
143 
144 CONTAINS
145 
146 #include "facom2.llmoer.h"
147 #include "facom2.ixnvms.h"
148 
149 END SUBROUTINE fautif_fort
150 
151 
152 
153 ! Oct-2012 P. Marguinaud 64b LFI
154 SUBROUTINE fautif64 &
155 & (krep, knumer, cdiden)
156 USE fa_mod, ONLY : fa => fa_com_default, &
159 USE lfi_precision
160 IMPLICIT NONE
161 ! Arguments
162 INTEGER (KIND=JPLIKB) KREP ! OUT
163 INTEGER (KIND=JPLIKB) KNUMER ! IN
164 CHARACTER (LEN=*) CDIDEN ! IN
165 
166 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
167 
168 CALL fautif_fort &
169 & (fa, krep, knumer, cdiden)
170 
171 END SUBROUTINE fautif64
172 
173 SUBROUTINE fautif &
174 & (krep, knumer, cdiden)
175 USE fa_mod, ONLY : fa => fa_com_default, &
178 USE lfi_precision
179 IMPLICIT NONE
180 ! Arguments
181 INTEGER (KIND=JPLIKM) KREP ! OUT
182 INTEGER (KIND=JPLIKM) KNUMER ! IN
183 CHARACTER (LEN=*) CDIDEN ! IN
184 
185 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
186 
187 CALL fautif_mt &
188 & (fa, krep, knumer, cdiden)
189 
190 END SUBROUTINE fautif
191 
192 SUBROUTINE fautif_mt &
193 & (fa, krep, knumer, cdiden)
194 USE fa_mod, ONLY : fa_com
195 USE lfi_precision
196 IMPLICIT NONE
197 ! Arguments
198 type(fa_com) fa ! INOUT
199 INTEGER (KIND=JPLIKM) KREP ! OUT
200 INTEGER (KIND=JPLIKM) KNUMER ! IN
201 CHARACTER (LEN=*) CDIDEN ! IN
202 ! Local integers
203 INTEGER (KIND=JPLIKB) IREP ! OUT
204 INTEGER (KIND=JPLIKB) INUMER ! IN
205 ! Convert arguments
206 
207 inumer = int( knumer, jplikb)
208 
209 CALL fautif_fort &
210 & (fa, irep, inumer, cdiden)
211 
212 krep = int( irep, jplikm)
213 
214 END SUBROUTINE fautif_mt
215 
216 !INTF KREP OUT
217 !INTF KNUMER IN
218 !INTF CDIDEN IN
integer, parameter jplikb
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine fautif_mt(FA, KREP, KNUMER, CDIDEN)
Definition: fautif.F90:194
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 fautif_fort(FA, KREP, KNUMER, CDIDEN)
Definition: fautif.F90:5
subroutine fautif64(KREP, KNUMER, CDIDEN)
Definition: fautif.F90:156
subroutine lfiren_fort(LFI, KREP, KNUMER, CDNOM1, CDNOM2)
Definition: lfiren.F90:6
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
subroutine fautif(KREP, KNUMER, CDIDEN)
Definition: fautif.F90:175
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