SURFEX v8.1
General documentation of Surfex
facoch.F90
Go to the documentation of this file.
1 ! Oct-2012 P. Marguinaud Use JNGEOM & JNEXPL parameters
2 ! Oct-2012 P. Marguinaud 64b LFI
3 ! Jan-2011 P. Marguinaud Thread-safe FA
4 SUBROUTINE facoch_fort &
5 & (fa, krep, knume1, knume2, &
6 & cdpref, knivau, cdsuff )
8 USE parkind1, ONLY : jprb
9 USE yomhook , ONLY : lhook, dr_hook
10 USE lfi_precision
11 IMPLICIT NONE
12 !****
13 ! Sous-programme de reCOpie d'un Champ Horizontal d'un fichier
14 ! ARPEGE sur un autre.
15 !**
16 ! Arguments : KREP (Sortie) ==> Code-reponse du sous-programme;
17 ! KNUME1 (Entree) ==> Numero d'unite logique en entree;
18 ! KNUME2 (Entree) ==> Numero d'unite logique en sortie;
19 ! CDPREF (Entree) ==> Prefixe eventuel du nom d'article;
20 ! KNIVAU (Entree) ==> Niveau vertical eventuel;
21 ! CDSUFF (Entree) ==> Suffixe eventuel du nom d'article.
22 !
23 ! Modifications
24 ! -------------
25 !
26 ! Avril 2004, D. Paradis, DSI/DEV:
27 ! -Declaration IVALCO en ALLOCATABLE (gain memoire)
28 ! Juin 2004, D. Paradis, DSI/DEV:
29 ! -Prise en compte des codages type -1 et 3
30 !
31 !
32 !
33 TYPE(fa_com) :: FA
34 INTEGER (KIND=JPLIKB) KREP, KNUME1, KNUME2, KNIVAU
35 !
36 INTEGER (KIND=JPLIKB) IREP, ILPRFU, ILSUFU, ILNOMU
37 INTEGER (KIND=JPLIKB) ILONGA, IRANC1, IRANC2
38 INTEGER (KIND=JPLIKB) INIMES, J, INUMFI, IPOSEX, INPAHE
39 INTEGER (KIND=JPLIKB) INPAHEL, JLAT, IZPAHEL
40 INTEGER (KIND=JPLIKB) ISPAHEL, JNIV, ILPREF, ILSUFF
41 INTEGER (KIND=JPLIKB) INUMRO, IRANG2, IGRIB
42 !
43 INTEGER (KIND=JPLIKB), ALLOCATABLE :: IVALCO(:)
44 INTEGER (KIND=JPLIKB) IRANG (2), INUMER (2), IB1PAR (3)
45 !
46 LOGICAL LLVERF (2), LLRLFI, LLCOSP, LLMESS, LLNOMU
47 LOGICAL LLMLAM1, LLMLAM2
48 !
49 CHARACTER CDPREF*(*), CDSUFF*(*)
50 CHARACTER CLPREF*(fa%jpxnom), &
51 & CLSUFF*(FA%JPXSUF)
52 !
53 CHARACTER(LEN=FA%JPXNOM) CLACTI
54 CHARACTER(LEN=FA%JPXNOM) CLNOMA
55 CHARACTER(LEN=FA%JPLMES) CLMESS
56 CHARACTER(LEN=FA%JPLSPX) CLNSPR
57 LOGICAL LLFATA
58 
59 !**
60 ! 1. - CONTROLES ET INITIALISATIONS.
61 !-----------------------------------------------------------------------
62 !
63 REAL(KIND=JPRB) :: ZHOOK_HANDLE
64 IF (lhook) CALL dr_hook('FACOCH_MT',0,zhook_handle)
65 clacti=''
66 llrlfi=.false.
67 llmess=.false.
68 llnomu=.false.
69 ilprfu=int(len(cdpref), jplikb)
70 ilsufu=int(len(cdsuff), jplikb)
71 iranc1=0
72 iranc2=0
73 inumer(1)=knume1
74 inumer(2)=knume2
75 llverf(1)=.false.
76 llverf(2)=.false.
77 irang(2)=0
78 !
79 DO j=1,2
80 inumfi=j
81 CALL fanumu_fort &
82 & (fa, inumer(j),irang(j))
83 !
84 IF (irang(j).EQ.0) THEN
85  irep=-51
86  GOTO 1001
87 ENDIF
88 !
89 ! Verrouillage eventuel du fichier.
90 !
91 IF (fa%LFAMUL) CALL lfiver_fort &
92 & (fa%LFI, fa%FICHIER(irang(j))%VRFICH,'ON')
93 llverf(j)=fa%LFAMUL
94 !
95 IF (fa%FICHIER(irang(j))%LCREAF) THEN
96  irep=-85
97  GOTO 1001
98 ENDIF
99 !*
100 ! FABRICATION DU NOM D'ARTICLE VIA LE SOUS-PROGRAMME "FANFAR"
101 ! ( controles de CDPREF, KNIVAU, CDSUFF inclus )
102 !
103 CALL fanfar_fort &
104 & (fa, irep,irang(j),cdpref,knivau, &
105 & cdsuff,clnoma,ib1par, &
106 & ilprfu,ilsufu,ilnomu)
107 IF (irep.NE.0) GOTO 1001
108 ENDDO
109 !
110 llnomu=.true.
111 !**
112 ! 2. - LECTURE DE L'ARTICLE SUR LE FICHIER, CONTROLES.
113 !-----------------------------------------------------------------------
114 !
115 CALL lfinfo_fort &
116 & (fa%LFI, irep,knume1,clnoma(1:ilnomu), &
117 & ilonga,iposex)
118 !
119 IF (irep.NE.0) THEN
120  llrlfi=.true.
121  GOTO 1001
122 ELSEIF (ilonga.EQ.0) THEN
123  irep=-89
124  GOTO 1001
125 ELSEIF (ilonga.GT.fa%JPXCHA+2) THEN
126  irep=-90
127  GOTO 1001
128 ENDIF
129 !
130 ALLOCATE (ivalco(ilonga))
131 CALL lfilec_fort &
132 & (fa%LFI, irep,knume1, &
133 & clnoma(1:ilnomu),ivalco,ilonga)
134 llrlfi=irep.NE.0
135 IF (llrlfi) GOTO 1001
136 !
137 IF (ivalco(1).LT.-1.OR.ivalco(1).GT.3.OR. &
138 & ivalco(2).LT.0 .OR.ivalco(2).GT.1.OR. &
139 & (ivalco(1).GT.0.AND.ivalco(2).EQ.1.AND.ivalco(4).LT.0)) THEN
140  irep=-91
141  GOTO 1001
142 ELSE
143  llcosp=ivalco(2).EQ.1
144 ENDIF
145 !**
146 ! 3. - CONTROLE DE COHERENCE ENTRE LES FICHIERS, VIS-A-VIS DU TYPE
147 ! DE DONNEES LUES (points de grille/coefficients spectraux).
148 !-----------------------------------------------------------------------
149 !
150 iranc1=fa%FICHIER(irang(1))%NUCADR
151 iranc2=fa%FICHIER(irang(2))%NUCADR
152 inpahe=(1+fa%CADRE(iranc1)%NLATIT)/2
153 llmlam1=fa%CADRE(iranc1)%NTYPTR.LE. -1
154 llmlam2=fa%CADRE(iranc2)%NTYPTR.LE. -1
155 !
156 IF (iranc1.NE.iranc2) THEN
157 !
158 ! On a pris ici une optique souple: n'est fatale qu'une erreur
159 ! vraiment grossiere. Toute autre discordance est signalee par un
160 ! message global de niveau 1.
161 !
162  IF ( (llmlam1.AND..NOT.llmlam2).OR. &
163 & (llmlam2.AND..NOT.llmlam1).OR. &
164 & (llcosp.AND.((.NOT.llmlam1.AND..NOT.llmlam2.AND. &
165 & fa%CADRE(iranc1)%MTRONC.NE.fa%CADRE(iranc2)%MTRONC) .OR. &
166 & (llmlam1.AND.llmlam2.AND. &
167 & fa%CADRE(iranc1)%MTRONC.NE.fa%CADRE(iranc2)%MTRONC.AND. &
168 & fa%CADRE(iranc1)%NTYPTR.NE.fa%CADRE(iranc2)%NTYPTR )) &
169 & ).OR. &
170 & (.NOT.llcosp.AND.(fa%CADRE(iranc1)%NLATIT.NE. &
171 & fa%CADRE(iranc2)%NLATIT.OR. &
172 & fa%CADRE(iranc1)%NVAPDG.NE.fa%CADRE(iranc2)%NVAPDG)) &
173 & ) THEN
174  irep=-112
175  GOTO 1001
176 !
177  ELSEIF (.NOT.llcosp) THEN
178 !
179  IF (.NOT.llmlam1.AND..NOT.llmlam2) THEN
180  inpahel=inpahe
181  ELSE
182  inpahel=8
183  ENDIF
184  DO jlat=1,inpahel
185  llmess=llmess.OR.fa%CADRE(iranc1)%NLOPAR(jlat).NE. &
186 & fa%CADRE(iranc2)%NLOPAR(jlat)
187  ENDDO
188 !
189  IF (llmess) THEN
190  irep=-112
191  GOTO 1001
192  ENDIF
193 !
194  ENDIF
195 !
196  llmess=fa%CADRE(iranc1)%MTRONC.NE.fa%CADRE(iranc2)%MTRONC.OR. &
197 & fa%CADRE(iranc1)%NTYPTR.NE.fa%CADRE(iranc2)%NTYPTR.OR. &
198 & (knivau.GT.0.AND.(fa%CADRE(iranc1)%NNIVER.NE. &
199 & fa%CADRE(iranc2)%NNIVER).OR. &
200 & (fa%CADRE(iranc1)%SPREFE.NE. &
201 & fa%CADRE(iranc2)%SPREFE)).OR. &
202 & fa%CADRE(iranc1)%NLATIT.NE.fa%CADRE(iranc2)%NLATIT.OR. &
203 & fa%CADRE(iranc1)%SSLAPO.NE.fa%CADRE(iranc2)%SSLAPO.OR. &
204 & fa%CADRE(iranc1)%SCLOPO.NE.fa%CADRE(iranc2)%SCLOPO.OR. &
205 & fa%CADRE(iranc1)%SSLOPO.NE.fa%CADRE(iranc2)%SSLOPO.OR. &
206 & fa%CADRE(iranc1)%SCODIL.NE.fa%CADRE(iranc2)%SCODIL
207 !
208  IF (.NOT.llmess) THEN
209 !
210  IF (.NOT.llmlam1.AND..NOT.llmlam2) THEN
211  inpahel=inpahe
212  izpahel=inpahe
213  ispahel=inpahe
214  ELSE
215  inpahel=jnexpl
216  izpahel=0
217  ispahel=jngeom
218  ENDIF
219  DO jlat=1,inpahel
220  llmess=fa%CADRE(iranc1)%NLOPAR(jlat).NE.fa%CADRE(iranc2)%NLOPAR(jlat) &
221 & .OR.llmess
222  ENDDO
223  DO jlat=1,izpahel
224  llmess=fa%CADRE(iranc1)%NOZPAR(jlat).NE.fa%CADRE(iranc2)%NOZPAR(jlat) &
225 & .OR.llmess
226  ENDDO
227  DO jlat=1,ispahel
228  llmess=fa%CADRE(iranc1)%SINLAT(jlat).NE.fa%CADRE(iranc2)%SINLAT(jlat) &
229 & .OR.llmess
230  ENDDO
231 !
232  IF (.NOT.llmess.AND.knivau.GT.0) THEN
233 !
234  DO jniv=0,fa%CADRE(iranc1)%NNIVER
235  llmess=fa%CADRE(iranc1)%SFOHYB(1,jniv).NE. &
236 & fa%CADRE(iranc2)%SFOHYB(1,jniv).OR. &
237 & llmess.OR.fa%CADRE(iranc1)%SFOHYB(2,jniv).NE. &
238 & fa%CADRE(iranc2)%SFOHYB(2,jniv)
239  ENDDO
240 !
241  ENDIF
242 !
243  ENDIF
244 !
245 ENDIF
246 !**
247 ! 4. - ECRITURE DE L'ARTICLE "CHAMP" SUR LE FICHIER.
248 !-----------------------------------------------------------------------
249 !
250 ! Deverrouillage eventuel de l'unite logique d'entree.
251 !
252 IF (llverf(1)) CALL lfiver_fort &
253 & (fa%LFI, fa%FICHIER(irang(1))%VRFICH,'OFF')
254 llverf(1)=.false.
255 !
256 CALL lfiecr_fort &
257 & (fa%LFI, irep,knume2,clnoma(1:ilnomu), &
258 & ivalco,ilonga)
259 inumfi=2
260 llrlfi=irep.NE.0
261 IF (llrlfi) GOTO 1001
262 !
263 ! Controle de l'homogeneite du type de rangement de coeff. spectraux
264 ! parmi les champs lus/ecrits: ces champs compactes avec
265 ! IGRIB=-1 ou 3 doivent etre ranges comme dans le modele ("verticalement"
266 ! soit selon des colonnes JM=cst consecutives) et contrairement si compactes
267 ! avec IGRIB= 0,1 ou 2.
268 !
269 irang2 = irang(2)
270 igrib = ivalco(1)
271 IF (llcosp) THEN
272  IF (igrib.EQ.-1 .OR. igrib.EQ.3) THEN
273  fa%FICHIER(irang2)%NRASVE=fa%FICHIER(irang2)%NRASVE+1
274  IF (fa%FICHIER(irang2)%NRASVE.EQ.1 .AND. fa%FICHIER(irang2)%NRASHO.GT.0) THEN
275  WRITE(fa%NULOUT,*) &
276 & '------------------------------------------------'
277  WRITE(fa%NULOUT,*)' FACOCH : WARNING !!!!! '
278  WRITE(fa%NULOUT,*) &
279 & ' Un champ de coef. spect. avec rangt type modele'
280  WRITE(fa%NULOUT,*)' va etre ecrit sur l''unite ',knume2, &
281 & ' alors que'
282  WRITE(fa%NULOUT,*) &
283 & ' d''autres champs y ont un rangement different.'
284  WRITE(fa%NULOUT,*) &
285 & '------------------------------------------------'
286  ENDIF
287  ELSEIF (igrib.GE.0 .AND. igrib.LE.2) THEN
288  fa%FICHIER(irang2)%NRASHO=fa%FICHIER(irang2)%NRASHO+1
289  IF (fa%FICHIER(irang2)%NRASHO.EQ.1 .AND. fa%FICHIER(irang2)%NRASVE.GT.0) THEN
290  WRITE(fa%NULOUT,*) &
291 & '------------------------------------------------'
292  WRITE(fa%NULOUT,*)' FACOCH : WARNING !!!!! '
293  WRITE(fa%NULOUT,*) &
294 & ' Un champ de coef. spect. avec rangt autre que'
295  WRITE(fa%NULOUT,*) &
296 & ' celui du modele va etre ecrit sur l''unite ', knume2
297  WRITE(fa%NULOUT,*) &
298 & ' alors que d''autres champs y ont le rangt modele'
299  WRITE(fa%NULOUT,*) &
300 & '------------------------------------------------'
301  ENDIF
302  ENDIF
303 ENDIF
304 !
305 !**
306 ! 10. - PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
307 ! VIA LE SOUS-PROGRAMME "FAIPAR" .
308 !-----------------------------------------------------------------------
309 !
310 1001 CONTINUE
311 IF (ALLOCATED( ivalco )) DEALLOCATE ( ivalco )
312 krep=irep
313 llfata=llmoer(irep,irang(inumfi))
314 !
315 ! Deverrouillage eventuel des fichiers.
316 !
317 IF (llverf(1)) CALL lfiver_fort &
318 & (fa%LFI, fa%FICHIER(irang(1))%VRFICH,'OFF')
319 IF (llverf(2)) CALL lfiver_fort &
320 & (fa%LFI, fa%FICHIER(irang(2))%VRFICH,'OFF')
321 !
322 clnspr='FACOCH'
323 !
324 ! Messages d'avertissement eventuels.
325 !
326 IF (fa%NIMSGA.NE.0.AND.irep.EQ.0) THEN
327 !
328  IF (llmess) THEN
329  inimes=1
330  WRITE (unit=clmess,fmt='(''*ATTENTION* - LES UNITES'',I3, &
331 & '' ET'',I3,'' ONT DES CARACTERISTIQUES "CADRE" DIFFERENTES'')') &
332 & knume1,knume2
333  CALL faipar_fort &
334 & (fa, jpniil,inimes,irep,.false.,clmess, &
335 & clnspr,clacti,.false.)
336  ELSEIF (iranc1.NE.iranc2) THEN
337  inimes=1
338  WRITE (unit=clmess,fmt='(''REMARQUE: CADRES '''''',A, &
339 & '''''' ET '''''',A, &
340 & '''''' DISTINCTS MAIS DE CONTENU IDENTIQUE (UNITES'', &
341 & I3,'' ET'',I3,'' )'')') &
342 & fa%CADRE(iranc1)%CNOMCA(1:fa%CADRE(iranc1)%NLCCAD), &
343 & fa%CADRE(iranc2)%CNOMCA(1:fa%CADRE(iranc2)%NLCCAD),knume1,knume2
344  CALL faipar_fort &
345 & (fa, jpniil,inimes,irep,.false.,clmess, &
346 & clnspr,clacti,.false.)
347  ENDIF
348 !
349 ENDIF
350 !
351 IF (llfata) THEN
352  inimes=2
353 ELSE
354  inimes=ixnvms(irang(inumfi))
355 ENDIF
356 !
357 IF (.NOT.llfata.AND.inimes.NE.2) THEN
358  IF (lhook) CALL dr_hook('FACOCH_MT',1,zhook_handle)
359  RETURN
360 ENDIF
361 !
362 IF (ilprfu.GE.1) THEN
363  ilpref=min(ilprfu,int(len(clpref), jplikb))
364  clpref(1:ilpref)=cdpref(1:ilpref)
365 ELSE
366  ilpref=8
367  clpref(1:ilpref)=fa%CHAINC(:ilpref)
368 ENDIF
369 !
370 IF (ilsufu.GE.1) THEN
371  ilsuff=min(ilsufu,int(len(clsuff), jplikb))
372  clsuff(1:ilsuff)=cdsuff(1:ilsuff)
373 ELSE
374  ilsuff=8
375  clsuff(1:ilsuff)=fa%CHAINC(:ilsuff)
376 ENDIF
377 !
378 IF (.NOT.llnomu) THEN
379  ilnomu=min(ilpref,fa%NCPCAD)
380  clnoma(1:ilnomu)=clpref(1:ilpref)
381 ENDIF
382 !
383 WRITE (unit=clmess,fmt='(''KREP='',I4,'', KNUME1='',I3, &
384 & '', KNUME2='',I3,'', CDPREF='''''',A,'''''', KNIVAU='',I6, &
385 & '', CDSUFF='''''',A,'''''''')') krep,knume1,knume2, &
386 & clpref(1:ilpref),knivau,clsuff(1:ilsuff)
387 !
388 IF (irep.EQ.-112) THEN
389  inumro=1000*knume1+knume2
390 ELSE
391  inumro=inumer(inumfi)
392 ENDIF
393 !
394 CALL faipar_fort &
395 & (fa, inumro,inimes,irep,llfata,clmess, &
396 & clnspr, clnoma(1:ilnomu),llrlfi)
397 !
398 IF (lhook) CALL dr_hook('FACOCH_MT',1,zhook_handle)
399 
400 CONTAINS
401 
402 #include "facom2.llmoer.h"
403 #include "facom2.ixnvms.h"
404 
405 END SUBROUTINE facoch_fort
406 
407 
408 
409 ! Oct-2012 P. Marguinaud 64b LFI
410 SUBROUTINE facoch64 &
411 & (krep, knume1, knume2, cdpref, knivau, cdsuff)
412 USE fa_mod, ONLY : fa => fa_com_default, &
415 USE lfi_precision
416 IMPLICIT NONE
417 ! Arguments
418 INTEGER (KIND=JPLIKB) KREP ! OUT
419 INTEGER (KIND=JPLIKB) KNUME1 ! IN
420 INTEGER (KIND=JPLIKB) KNUME2 ! IN
421 CHARACTER (LEN=*) CDPREF ! IN
422 INTEGER (KIND=JPLIKB) KNIVAU ! IN
423 CHARACTER (LEN=*) CDSUFF ! IN
424 
425 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
426 
427 CALL facoch_fort &
428 & (fa, krep, knume1, knume2, cdpref, knivau, cdsuff)
429 
430 END SUBROUTINE facoch64
431 
432 SUBROUTINE facoch &
433 & (krep, knume1, knume2, cdpref, knivau, cdsuff)
434 USE fa_mod, ONLY : fa => fa_com_default, &
437 USE lfi_precision
438 IMPLICIT NONE
439 ! Arguments
440 INTEGER (KIND=JPLIKM) KREP ! OUT
441 INTEGER (KIND=JPLIKM) KNUME1 ! IN
442 INTEGER (KIND=JPLIKM) KNUME2 ! IN
443 CHARACTER (LEN=*) CDPREF ! IN
444 INTEGER (KIND=JPLIKM) KNIVAU ! IN
445 CHARACTER (LEN=*) CDSUFF ! IN
446 
447 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
448 
449 CALL facoch_mt &
450 & (fa, krep, knume1, knume2, cdpref, knivau, cdsuff)
451 
452 END SUBROUTINE facoch
453 
454 SUBROUTINE facoch_mt &
455 & (fa, krep, knume1, knume2, cdpref, knivau, cdsuff)
456 USE fa_mod, ONLY : fa_com
457 USE lfi_precision
458 IMPLICIT NONE
459 ! Arguments
460 type(fa_com) fa ! INOUT
461 INTEGER (KIND=JPLIKM) KREP ! OUT
462 INTEGER (KIND=JPLIKM) KNUME1 ! IN
463 INTEGER (KIND=JPLIKM) KNUME2 ! IN
464 CHARACTER (LEN=*) CDPREF ! IN
465 INTEGER (KIND=JPLIKM) KNIVAU ! IN
466 CHARACTER (LEN=*) CDSUFF ! IN
467 ! Local integers
468 INTEGER (KIND=JPLIKB) IREP ! OUT
469 INTEGER (KIND=JPLIKB) INUME1 ! IN
470 INTEGER (KIND=JPLIKB) INUME2 ! IN
471 INTEGER (KIND=JPLIKB) INIVAU ! IN
472 ! Convert arguments
473 
474 inume1 = int( knume1, jplikb)
475 inume2 = int( knume2, jplikb)
476 inivau = int( knivau, jplikb)
477 
478 CALL facoch_fort &
479 & (fa, irep, inume1, inume2, cdpref, inivau, cdsuff)
480 
481 krep = int( irep, jplikm)
482 
483 END SUBROUTINE facoch_mt
484 
485 !INTF KREP OUT
486 !INTF KNUME1 IN
487 !INTF KNUME2 IN
488 !INTF CDPREF IN
489 !INTF KNIVAU IN
490 !INTF CDSUFF IN
subroutine lfiecr_fort(LFI, KREP, KNUMER, CDNOMA, KTAB, KLONG)
Definition: lfiecr.F90:6
subroutine facoch_mt(FA, KREP, KNUME1, KNUME2, CDPREF, KNIVAU, CDSUFF)
Definition: facoch.F90:456
integer, parameter jplikb
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine new_fa_default()
Definition: fa_mod.F90:649
integer(kind=jplikb), parameter jnexpl
Definition: fa_mod.F90:29
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 fanfar_fort(FA, KREP, KRANG, CDPREF, KNIVAU, CDSUFF, CDNOMA, KB1PAR, KLPRFU, KLSUFU, KLNOMU)
Definition: fanfar.F90:6
subroutine lfilec_fort(LFI, KREP, KNUMER, CDNOMA, KTAB, KLONG)
Definition: lfilec.F90:6
subroutine facoch_fort(FA, KREP, KNUME1, KNUME2, CDPREF, KNIVAU, CDSUFF)
Definition: facoch.F90:7
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
integer(kind=jplikb), parameter jngeom
Definition: fa_mod.F90:28
subroutine faipar_fort(FA, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
Definition: faipar.F90:6
subroutine facoch(KREP, KNUME1, KNUME2, CDPREF, KNIVAU, CDSUFF)
Definition: facoch.F90:434
subroutine facoch64(KREP, KNUME1, KNUME2, CDPREF, KNIVAU, CDSUFF)
Definition: facoch.F90:412
subroutine fanumu_fort(FA, KNUMER, KRANG)
Definition: fanumu.F90:5
integer(kind=jplikb), parameter jpniil
Definition: fa_mod.F90:31