SURFEX v8.1
General documentation of Surfex
fanfan.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 fanfan_fort &
4 & (fa, krep, knumer, cdpref, knivau, cdsuff, &
5 & cdnoma, klnoma)
6 USE fa_mod, ONLY : fa_com
7 USE parkind1, ONLY : jprb
8 USE yomhook , ONLY : lhook, dr_hook
10 IMPLICIT NONE
11 !****
12 ! Sous-programme de construction du nom d'un article associe a un
13 ! champ.
14 !**
15 ! Arguments : KREP (Sortie) ==> Code-reponse du sous-programme;
16 ! KNUMER (Entree) ==> Numero de l'unite logique;
17 ! CDPREF (Entree) ==> Prefixe eventuel du nom d'article;
18 ! KNIVAU (Entree) ==> Niveau vertical eventuel;
19 ! CDSUFF (Entree) ==> Suffixe eventuel du nom d'article;
20 ! CDNOMA (Sortie) ==> Nom de l'article LFI
21 ! KLNOMA (Sortie) ==> Longueur du nom de l'article LFI
22 !
23 ! P MARGUINAUD 30/04/2012 CREATION
24 !
25 !
26 TYPE(fa_com) :: FA
27 INTEGER (KIND=JPLIKB) KREP, KNUMER, KNIVAU, KLNOMA
28 !
29 INTEGER (KIND=JPLIKB) IREP, ILPRFU, ILSUFU, IRANG, INIMES
30 INTEGER (KIND=JPLIKB) IB1PAR (fa%jplb1p)
31 !
32 LOGICAL LLVERF, LLRLFI
33 !
34 CHARACTER CDPREF*(*), CDSUFF*(*), CDNOMA*(*)
35 !
36 CHARACTER(LEN=FA%JPLMES) CLMESS
37 CHARACTER(LEN=FA%JPLSPX) CLNSPR
38 LOGICAL LLFATA
39 
40 !**
41 ! 1. - CONTROLES ET INITIALISATIONS.
42 !-----------------------------------------------------------------------
43 !
44 REAL(KIND=JPRB) :: ZHOOK_HANDLE
45 IF (lhook) CALL dr_hook('FANFAN_MT',0,zhook_handle)
46 llverf=.false.
47 llrlfi=.false.
48 ilprfu=int(len(cdpref), jplikb)
49 ilsufu=int(len(cdsuff), jplikb)
50 CALL fanumu_fort (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 (fa%LFI, fa%FICHIER(irang)%VRFICH,'ON')
60 llverf=fa%LFAMUL
61 !
62 IF (fa%FICHIER(irang)%LCREAF) THEN
63  irep=-85
64  GOTO 1001
65 ENDIF
66 !**
67 ! 2. - FABRICATION DU NOM D'ARTICLE VIA LE SOUS-PROGRAMME "FANFAR"
68 ! ( controles de CDPREF, KNIVAU, CDSUFF inclus )
69 !-----------------------------------------------------------------------
70 !
71 CALL fanfar_fort &
72 & (fa, irep,irang,cdpref,knivau,cdsuff,cdnoma, &
73 & ib1par(6),ilprfu,ilsufu,klnoma)
74 
75 IF (irep.NE.0) GOTO 1001
76 1001 CONTINUE
77 krep=irep
78 llfata=llmoer(irep,irang)
79 !
80 ! Deverrouillage eventuel du fichier.
81 !
82 IF (llverf) CALL lfiver_fort (fa%LFI, fa%FICHIER(irang)%VRFICH,'OFF')
83 
84 IF (llfata) THEN
85  inimes=2
86 ELSE
87  inimes=ixnvms(irang)
88 ENDIF
89 !
90 IF (.NOT.llfata.AND.inimes.NE.2) THEN
91  IF (lhook) CALL dr_hook('FANFAN_MT',1,zhook_handle)
92  RETURN
93 ENDIF
94 !
95 clnspr='FANFAN'
96 !
97 WRITE (unit=clmess,fmt='(''KREP='',I5,'', KNUMER='',I3, &
98 & '', CDPREF='''''',A,'''''', KNIVAU='',I6, &
99 & '', CDSUFF='''''',A,'''')') &
100 & krep,knumer,cdpref(1:ilprfu),knivau,cdsuff(1:ilsufu)
101 CALL faipar_fort &
102 & (fa, knumer,inimes,irep,llfata,clmess, &
103 & clnspr, cdnoma(1:klnoma),llrlfi)
104 !
105 IF (lhook) CALL dr_hook('FANFAN_MT',1,zhook_handle)
106 
107 CONTAINS
108 
109 #include "facom2.llmoer.h"
110 #include "facom2.ixnvms.h"
111 
112 END SUBROUTINE fanfan_fort
113 
114 
115 
116 ! Oct-2012 P. Marguinaud 64b LFI
117 SUBROUTINE fanfan64 &
118 & (krep, knumer, cdpref, knivau, cdsuff, cdnoma, &
119 & klnoma)
120 USE fa_mod, ONLY : fa => fa_com_default, &
123 USE lfi_precision
124 IMPLICIT NONE
125 ! Arguments
126 INTEGER (KIND=JPLIKB) KREP ! OUT
127 INTEGER (KIND=JPLIKB) KNUMER ! IN
128 CHARACTER (LEN=*) CDPREF ! IN
129 INTEGER (KIND=JPLIKB) KNIVAU ! IN
130 CHARACTER (LEN=*) CDSUFF ! IN
131 CHARACTER (LEN=*) CDNOMA ! OUT
132 INTEGER (KIND=JPLIKB) KLNOMA ! OUT
133 
134 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
135 
136 CALL fanfan_fort &
137 & (fa, krep, knumer, cdpref, knivau, cdsuff, cdnoma, &
138 & klnoma)
139 
140 END SUBROUTINE fanfan64
141 
142 SUBROUTINE fanfan &
143 & (krep, knumer, cdpref, knivau, cdsuff, cdnoma, &
144 & klnoma)
145 USE fa_mod, ONLY : fa => fa_com_default, &
148 USE lfi_precision
149 IMPLICIT NONE
150 ! Arguments
151 INTEGER (KIND=JPLIKM) KREP ! OUT
152 INTEGER (KIND=JPLIKM) KNUMER ! IN
153 CHARACTER (LEN=*) CDPREF ! IN
154 INTEGER (KIND=JPLIKM) KNIVAU ! IN
155 CHARACTER (LEN=*) CDSUFF ! IN
156 CHARACTER (LEN=*) CDNOMA ! OUT
157 INTEGER (KIND=JPLIKM) KLNOMA ! OUT
158 
159 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
160 
161 CALL fanfan_mt &
162 & (fa, krep, knumer, cdpref, knivau, cdsuff, cdnoma, &
163 & klnoma)
164 
165 END SUBROUTINE fanfan
166 
167 SUBROUTINE fanfan_mt &
168 & (fa, krep, knumer, cdpref, knivau, cdsuff, cdnoma, &
169 & klnoma)
170 USE fa_mod, ONLY : fa_com
171 USE lfi_precision
172 IMPLICIT NONE
173 ! Arguments
174 type(fa_com) fa ! INOUT
175 INTEGER (KIND=JPLIKM) KREP ! OUT
176 INTEGER (KIND=JPLIKM) KNUMER ! IN
177 CHARACTER (LEN=*) CDPREF ! IN
178 INTEGER (KIND=JPLIKM) KNIVAU ! IN
179 CHARACTER (LEN=*) CDSUFF ! IN
180 CHARACTER (LEN=*) CDNOMA ! OUT
181 INTEGER (KIND=JPLIKM) KLNOMA ! OUT
182 ! Local integers
183 INTEGER (KIND=JPLIKB) IREP ! OUT
184 INTEGER (KIND=JPLIKB) INUMER ! IN
185 INTEGER (KIND=JPLIKB) INIVAU ! IN
186 INTEGER (KIND=JPLIKB) ILNOMA ! OUT
187 ! Convert arguments
188 
189 inumer = int( knumer, jplikb)
190 inivau = int( knivau, jplikb)
191 
192 CALL fanfan_fort &
193 & (fa, irep, inumer, cdpref, inivau, cdsuff, cdnoma, &
194 & ilnoma)
195 
196 krep = int( irep, jplikm)
197 klnoma = int( ilnoma, jplikm)
198 
199 END SUBROUTINE fanfan_mt
200 
201 !INTF KREP OUT
202 !INTF KNUMER IN
203 !INTF CDPREF IN
204 !INTF KNIVAU IN
205 !INTF CDSUFF IN
206 !INTF CDNOMA OUT
207 !INTF KLNOMA OUT
subroutine fanfan_mt(FA, KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, CDNOMA, KLNOMA)
Definition: fanfan.F90:170
integer, parameter jplikb
subroutine fanfan_fort(FA, KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, CDNOMA, KLNOMA)
Definition: fanfan.F90:6
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 fanfar_fort(FA, KREP, KRANG, CDPREF, KNIVAU, CDSUFF, CDNOMA, KB1PAR, KLPRFU, KLSUFU, KLNOMU)
Definition: fanfar.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 faipar_fort(FA, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
Definition: faipar.F90:6
subroutine fanfan64(KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, CDNOMA, KLNOMA)
Definition: fanfan.F90:120
subroutine fanumu_fort(FA, KNUMER, KRANG)
Definition: fanumu.F90:5
subroutine fanfan(KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, CDNOMA, KLNOMA)
Definition: fanfan.F90:145