SURFEX v8.1
General documentation of Surfex
faipar.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 faipar_fort &
4 & (fa, knumer, knimes, kcode, ldfata, cdmess, &
5 & cdnspr, cdacti, ldrlfi )
6 USE fa_mod, ONLY : fa_com, jpniil
7 USE parkind1, ONLY : jprb
8 USE yomhook, ONLY : lhook, dr_hook
9 USE sdl_mod, ONLY : sdl_srlabort
11 USE lfi_precision
12 IMPLICIT NONE
13 !****
14 ! Ce sous-programme est charge de FAIre PARt des Messages
15 ! emis par le logiciel de Fichiers ARPEGE, en faisant si besoin est
16 ! l'"ABORT" du programme .
17 !**
18 ! Arguments : KNUMER ==> Numero de l'unite logique eventuelle;
19 ! ( JPNIIL ==> pas d'unite logique )
20 ! KNIMES ==> Niveau (0,1,2) du message;
21 ! KCODE ==> Code correspondant a l'action;
22 ! LDFATA ==> Vrai si on doit avorter le programme;
23 ! CDMESS ==> si KNIMES#0, Message a emettre;
24 ! CDNSPR ==> Nom du Sous-Programme appelant;
25 ! CDACTI ==> Nom de l'action d'Entree/Sortie FORTRAN
26 ! (si KCODE >0), sinon fourre-tout !) .
27 ! LDRLFI ==> Vrai si le code-reponse different de 0
28 ! a ete detecte par le logiciel LFI.
29 !*
30 ! VALEURS POSSIBLES DES CODES-REPONSES DU LOGICIEL FICHIERS ARPEGE
31 !
32 ! 0 ==> Aucune erreur detectee, message informatif.
33 ! >0 ==> Il s'agit du code-reponse d'une erreur detectee lors d'un
34 ! OPEN, READ, WRITE, CLOSE, ou INQUIRE FORTRAN; voir manuels.
35 ! -(1a50)==> Code-reponse renvoye par le logiciel LFI.
36 ! -51 ==> Unite logique non ouverte pour le logiciel,
37 ! ou bien cadre non defini .
38 ! -52 ==> Valeur d'un "NIVEAU" hors plage [0-2] .
39 ! -53 ==> *** code-reponse inutilise pour le moment ***.
40 ! -54 ==> Changement explicite de mode Multi-Tasking avec au moins 1
41 ! unite logique ouverte-risque de problemes (s/p "FARINE") .
42 ! -55 ==> Unite logique deja ouverte ou cadre non redefinissable.
43 ! -56 ==> Trop d'unites logiques deja ouvertes ou de cadres definis.
44 ! -57 ==> Nouveau fichier, et cadre reference non defini au prealable
45 ! -58 ==> Fichier preexistant, et cadre reference non compatible .
46 ! -59 ==> Redefinition de cadre avec modification de parametre(s),
47 ! impossible car il y a au moins un fichier qui s'y rattache.
48 ! -60 ==> Un des articles definissant le cadre est manquant.
49 ! -61 ==> " " " " " " a une longueur inattendue.
50 ! -62 ==> L'article DATE est manquant.
51 ! -63 ==> L'article DATE a une longueur inattendue.
52 ! -64 ==> Argument d'appel de type ENTIER incorrect .
53 ! -65 ==> Argument d'appel de type CARACTERE incorrect .
54 ! -66 ==> INCOHERENCE tables, fichier, appels s/p internes, logiciel;
55 ! CE CODE EST LE SEUL QUE *FA%NRFAGA* VALANT 2 NE PEUT MASQUER,
56 ! ET PROVOQUE DONC UNE ERREUR FATALE DANS TOUS LES CAS.
57 ! -67 ==> Le cadre reference a au moins un fichier associe,
58 ! et ne peut donc pas etre supprime.
59 ! -68 ==> Nom d'article compose uniquement de BLANCS, non accepte
60 ! ( a cause du fonctionnement interne du logiciel LFI ),
61 ! ou cadre de nom blanc non accepte (les cadres non definis
62 ! sont reperes ainsi dans les tables du logiciel)
63 ! -69 ==> La variable CARACTERE donnee en argument est TROP COURTE
64 ! pour recevoir le NOM du cadre ou d'identificateur, meme en
65 ! supprimant les eventuels caracteres blancs en fin de nom .
66 ! -70 ==> Troncature hors plage [1-FA%NXTRON].
67 ! -71 ==> Nombre de latitudes de pole a pole hors plage [1-FA%NXLATI].
68 ! -72 ==> Nombre de niveaux verticaux hors plage [1-FA%NXNIVV].
69 ! -73 ==> Coefficient de dilatation inferieur a 1.
70 ! -74 ==> Un des nombres de points par parallele est <= 0 ou depasse
71 ! le nombre maximum annonce dans la description du cadre.
72 ! -75 ==> Un des nombres de points par parallele est inferieur
73 ! a celui qui le precede.
74 ! -76 ==> Un des nombres d'onde zonal maxi par parallele depasse
75 ! la troncature ou n'est pas positif.
76 ! -77 ==> Un des nombres d'onde zonal maxi par parallele est
77 ! inferieur a celui qui le precede.
78 ! -78 ==> Sur une latitude au moins, le nombre de points est insuffi-
79 ! sans vis-a-vis du nombre d'onde zonal maximum.
80 ! -79 ==> Inconsistance: le nombre de latitudes (de pole a pole)
81 ! est insuffisant vis-a-vis de la troncature.
82 ! -80 ==> Une valeur d'une des fonctions de la coordonnee hybride
83 ! est en-dehors de l'intervalle [0,1] .
84 ! -81 ==> Pour une couche, valeurs inadaptees des fonctions de la
85 ! coordonnee hybride.
86 ! -82 ==> L'article DATE a un contenu incorrect.
87 ! -83 ==> Le nombre maximum de points par parallele est en-dehors de
88 ! l'intervalle [1,FA%NXLONG]
89 ! -84 ==> Le nombre maximum de points par parallele est insuffisant
90 ! vis-a-vis de la troncature.
91 ! -85 ==> Fichier en mode creation, donc vide d'articles vis-a-vis
92 ! du logiciel (a la description du Cadre pres):
93 ! il faut le munir d'une date...
94 ! -86 ==> Prefixe et/ou suffixe "blanc" interdit.
95 ! -87 ==> Prefixe de champ trop long.
96 ! -88 ==> Troncature effective inferieure ou egale a
97 ! la sous-troncature "non compactee".
98 ! -89 ==> Article de type champ demande inexistant dans le fichier.
99 ! -90 ==> L'article de type champ existe, mais est trop long.
100 ! -91 ==> En-tete d'article champ incorrect.
101 ! -92 ==> L'article demande est en points-de-grille au lieu de
102 ! coefficients spectraux, ou vice-versa.
103 ! -93 ==> L'article demande est trop COURT sur le fichier.
104 ! -94 ==> L'article demande est trop LONG sur le fichier ( si cette
105 ! erreur n'est pas fatale, on traite le debut de l'article ).
106 ! -95 ==> Incoherence entre entete d'article champ et zone GRIB.
107 ! -96 ==> Niveau de codage GRIB trop grand.
108 ! -97 ==> Nombre de bits de codage trop grand.
109 ! -98 ==> Puissance de laplacien trop grande.
110 ! -99 ==> Sous-troncature superieure ou egale a la troncature
111 ! -100 ==> Une des lignes trigonometriques definissant le pole de
112 ! projection n'est pas dans [-1,1] .
113 ! -101 ==> Cosinus et Sinus de la longitude du pole de projection
114 ! incoherents.
115 ! -102 ==> Le Sinus d'une latitude de la grille n'est pas dans [-1,1].
116 ! -103 ==> Le Sinus d'une latitude est superieur ou egal a celui de
117 ! la latitude precedente.
118 ! -104 ==> Troncature maxi. incompatible avec cadre(s) deja defini(s).
119 ! -105 ==> Nombre maxi. de niveaux verticaux " " " " .
120 ! -106 ==> Nombre maxi. de latitudes pole a pole" " " .
121 ! -107 ==> Nombre maxi. de longitudes " " " " " .
122 ! -108 ==> Pression de reference aberrante.
123 ! -109 ==> Type de transformation horizontale hors plage [1-FA%NTYPTX]
124 ! -110 ==> Pas d'article "identificateur" (apres ceux du cadre)
125 ! -111 ==> Article de nom reserve, a ne pas ecrire ou lire ainsi
126 ! -112 ==> Caracteristiques des fichiers vraiment incompatibles,
127 ! recopie d'article "champ" impossible.
128 ! -113 ==> Sous-troncature implicite superieure ou egale a la
129 ! limite usager de troncature.
130 ! -114 ==> Ratio des troncatures (version LAM) superieur a 3.
131 ! Garde-fou, modifiable dans FARCIS, FACSIM et FAPULA.
132 ! -115 ==> (LAM) Le nombre maximum de points par parallele est insuffisant
133 ! vis-a-vis de la troncature.
134 ! -116 ==> (LAM) Le nombre maximum de points par meridien est insuffisant
135 ! vis-a-vis de la troncature.
136 ! -117 ==> (LAM) L'indicateur NDOMFP a une valeur hors de [-1,1]
137 ! -118 ==> (LAM) L'indice de depart (C+I) en longitude est hors plage [1-KNXLON].
138 ! -119 ==> (LAM) L'indice de fin (C+I) en longitude est errone.
139 ! -120 ==> (LAM) L'indice de depart (C+I) en latitude est hors plage [1-KNLATI].
140 ! -121 ==> (LAM) L'indice de fin (C+I) en latitude est errone.
141 ! -122 ==> (LAM) La largeur de la zone de relaxation est trop large en longitude.
142 ! -123 ==> (LAM) La largeur de la zone de relaxation est trop large en latitude.
143 ! -124 ==> Nombre de bits de codage nul alors qu'un codage est demande
144 ! -125 ==> Argument ayant une valeur incorrecte
145 ! -126 ==> Detection d'une incoherence dans un controle interne
146 ! -127 ==> (LAM) Description incoherente de l'ellipse contenant les troncatures
147 ! -128 ==> Message GRIB incorrect dans l'appel a DECF10
148 ! -129 ==> Impossible d'encoder ce champ avec ces reglages
149 ! -130 ==> Tableau trop court pour encoder ce champ
150 ! <-1000 ==> Erreur rapportee par GRIBEX
151 !
152 
153 
154 !
155 !
156 TYPE(fa_com) :: FA
157 INTEGER (KIND=JPLIKB) KNUMER, KNIMES, KCODE
158 !
159 INTEGER (KIND=JPLIKB) ILNSPR, ILACTI, ILACT2
160 INTEGER (KIND=JPLIKB) ILMESU, ILMESA, INUME1, INUME2
161 !
162 LOGICAL LDFATA, LDRLFI
163 !
164 CHARACTER(LEN=*) CDNSPR
165 CHARACTER(LEN=6) CLJOLI
166 CHARACTER(LEN=6) CLITID
167 CHARACTER(LEN=*) CDMESS
168 CHARACTER(LEN=80) CLMESA
169 CHARACTER(LEN=*) CDACTI
170 CHARACTER(LEN=FA%JPLMES) CLMESS
171 
172 !
173 REAL(KIND=JPRB) :: ZHOOK_HANDLE
174 IF (lhook) CALL dr_hook('FAIPAR_MT',0,zhook_handle)
175 ilnspr=min(int(len(cdnspr), jplikb),6_jplikb )
176 ilacti=min(int(len(cdacti), jplikb),8_jplikb )
177 ilact2=min(int(len(cdacti), jplikb),fa%NCPCAD)
178 !
179 IF (ldfata) THEN
180  cljoli=' *****'
181 ELSEIF (knimes.EQ.0.OR.kcode.NE.0) THEN
182  cljoli=' */*/*'
183 ELSE
184  cljoli=' /////'
185 ENDIF
186 IF (oml_in_parallel()) THEN
187  WRITE (clitid, '(" @",I4.4)') oml_my_thread()
188 ELSE
189  clitid=''
190 ENDIF
191 !
192 IF (knimes.NE.0) THEN
193  ilmesu=min(int(len(clmess), jplikb)- &
194 & int(len(cljoli), jplikb)-ilnspr-4, &
195 & int(len(cdmess), jplikb))
196  clmess=cljoli//' '//cdnspr(1:ilnspr)//' - '//trim(cdmess(1:ilmesu))//clitid
197  WRITE (unit=fa%NULOUT,fmt='(A)') trim(clmess)
198 ENDIF
199 !
200 IF (knimes.EQ.0.OR.ldfata) THEN
201 !
202 ! CONSTITUTION D'UN MESSAGE D'ERREUR AD HOC, EN FONCTION DE KCODE
203 !
204  IF (ldrlfi) THEN
205  WRITE (unit=clmess,fmt='(''CODE-REPONSE DE *'',A6,''* ='', &
206 & I4,'', UNITE ='',I3)') cdacti(1:ilacti),kcode,knumer
207 !
208  ELSEIF (kcode.GT.0) THEN
209  WRITE (unit=clmess, &
210 & fmt='(''ERREUR "'',A,''" FORTRAN, CODE ='', &
211 & I4,'', UNITE ='',I3)') cdacti(1:ilacti),kcode,knumer
212 !
213  ELSEIF (kcode.EQ.-51) THEN
214 !
215  IF (knumer.EQ.jpniil) THEN
216  clmess='CADRE "'//cdacti(1:ilact2)//'" NON DEFINI'
217  ELSE
218  WRITE (unit=clmess,fmt='(''UNITE LOGIQUE'',I3, &
219 & '' NON OUVERTE'')') knumer
220  ENDIF
221 !
222  ELSEIF (kcode.EQ.-52) THEN
223 !
224  IF (knumer.EQ.jpniil) THEN
225  clmess='PARAMETRE DE NIVEAU "KNIVAU" HORS PLAGE [0-2]'
226  ELSE
227  WRITE (unit=clmess,fmt= &
228 & '(''NIVEAU DE MESSAGERIE HORS PLAGE [0-2], UNITE'',I3)') knumer
229  ENDIF
230 !
231  ELSEIF (kcode.EQ.-53) THEN
232  clmess='CADRE "'//cdacti(1:ilact2)// &
233 & '", PARAMETRE(S) INCORRECT(S)'
234 !
235  ELSEIF (kcode.EQ.-54) THEN
236  clmess= &
237 & 'CHANGEMENT EXPLICITE MODE MULTI AVEC UNITES OUVERTES'
238 !
239  ELSEIF (kcode.EQ.-55) THEN
240 !
241  IF (knumer.EQ.jpniil) THEN
242  clmess='CADRE "'//cdacti(1:ilact2)// &
243 & '" NON REDEFINISSABLE'
244  ELSE
245  WRITE (unit=clmess,fmt='(''UNITE LOGIQUE'',I3, &
246 & '' DEJA OUVERTE'')') knumer
247  ENDIF
248 !
249  ELSEIF (kcode.EQ.-56) THEN
250 !
251  IF (knumer.EQ.jpniil) THEN
252  WRITE (unit=clmess,fmt= &
253 & '(I2,'' CADRES DEFINIS, PAS DE PLACE POUR "'',A,''"'')') &
254 & fa%JPNXCA,cdacti(1:ilact2)
255  ELSE
256  WRITE (unit=clmess,fmt='(I2, &
257 & '' UNITES LOGIQUES OUVERTES, PAS DE PLACE POUR'',I3)') &
258 & fa%JPNXFA,knumer
259  ENDIF
260 !
261  ELSEIF (kcode.EQ.-57) THEN
262  WRITE (unit=clmess, &
263 & fmt='(''UNITE'',I3,'' A CREER, CADRE "'',A, &
264 & ''" NON DEFINI'')') knumer,cdacti(1:ilact2)
265 !
266  ELSEIF (kcode.EQ.-58) THEN
267  WRITE (unit=clmess, &
268 & fmt='(''UNITE'',I3,'' /CADRE PREDEFINI "'', &
269 & A,''" INCOMPATIBLES'')') knumer,cdacti(1:ilact2)
270 !
271  ELSEIF (kcode.EQ.-59) THEN
272  clmess='CADRE "'//cdacti(1:ilact2)// &
273 & '" NON MODIFIABLE CAR UTILISE'
274 !
275  ELSEIF (kcode.EQ.-60) THEN
276  WRITE (unit=clmess,fmt= &
277 & '(''UN ARTICLE DU CADRE EST MANQUANT, UNITE'',I3)') knumer
278 !
279  ELSEIF (kcode.EQ.-61) THEN
280 !***** FAZZZZ - un article du cadre a une longueur inattendue, uniteiii *****
281  WRITE (unit=clmess,fmt= &
282 & '(''UN ARTICLE DU CADRE A UNE LONGUEUR INATTENDUE, UNITE'',I3)') &
283 & knumer
284 !
285  ELSEIF (kcode.EQ.-62) THEN
286  WRITE (unit=clmess,fmt= &
287 & '(''PAS D''''ARTICLE DATE SUR L''''UNITE'',I3)') knumer
288 !
289  ELSEIF (kcode.EQ.-63) THEN
290  WRITE (unit=clmess,fmt= &
291 &'(''L''''ARTICLE DATE A UNE LONGUEUR INATTENDUE SUR L'''' UNITE'', &
292 & I3)') knumer
293 !
294  ELSEIF (kcode.EQ.-64) THEN
295 !
296  IF (cdnspr.EQ.'FAIENC') THEN
297  WRITE (unit=clmess,fmt= &
298 & '(''NIVEAU VERTICAL HORS LIMITES, UNITE'',I3)') knumer
299  ELSEIF (cdnspr.EQ.'FAISAN'.OR.cdnspr.EQ.'FALAIS') THEN
300  WRITE (unit=clmess,fmt= &
301 & '(''LONGUEUR D''''ARTICLE <=0, UNITE'',I3)') knumer
302  ELSEIF (knumer.EQ.jpniil) THEN
303  clmess='RANG DANS UNE TABLE GLOBALE INCORRECT'
304  ELSE
305  WRITE (unit=clmess,fmt= &
306 & '(''ARGUMENT ENTIER INCORRECT, UNITE'',I3)') knumer
307  ENDIF
308 !
309  ELSEIF (kcode.EQ.-65) THEN
310 !
311  IF (cdnspr.EQ.'FAIENC'.OR.cdnspr.EQ.'FACILE'.OR. &
312 & cdnspr.EQ.'FAISAN'.OR.cdnspr.EQ.'FALAIS') THEN
313  WRITE (unit=clmess, &
314 & fmt='(''NOM D''''ARTICLE INCORRECT OU '', &
315 & ''TROP LONG, UNITE'',I3)') knumer
316  ELSEIF (knumer.EQ.jpniil) THEN
317  clmess='NOM DE CADRE INCORRECT OU TROP LONG: "' &
318 & //cdacti(1:ilact2)//'"'
319  ELSE
320  WRITE (unit=clmess, &
321 & fmt='(''CHAINE DE CARACTERES INCORRECT'', &
322 & ''E OU TROP LONGUE, UNITE'',I3)') knumer
323  ENDIF
324 !
325  ELSEIF (kcode.EQ.-66) THEN
326  WRITE (unit=clmess, &
327 & fmt='(''INCOHERENCE (TABLES, FICHIER, '', &
328 & ''APPELS S/P INT. OU FICHIER), UNITE'',I3)') knumer
329 !
330  ELSEIF (kcode.EQ.-67) THEN
331  clmess='FICHIER ASSOCIE, CADRE"'//cdacti(1:ilact2) &
332 & //'" DEVANT SUBSISTER'
333 !
334  ELSEIF (kcode.EQ.-68) THEN
335 !
336  IF (knumer.EQ.jpniil) THEN
337  clmess='CADRE DE NOM BLANC NON ACCEPTE'
338  ELSE
339  WRITE (unit=clmess,fmt= &
340 & '(''ARTICLE DE NOM BLANC NON ACCEPTE, UNITE'',I3)') knumer
341  ENDIF
342 !
343  ELSEIF (kcode.EQ.-69) THEN
344  WRITE (unit=clmess,fmt='(''VARIABLE CARACT. TROP COURTE '', &
345 & ''POUR "'',A,''", UNITE'',I3)') &
346 & cdacti(1:ilact2),knumer
347 !
348  ELSEIF (kcode.EQ.-70) THEN
349 !
350  IF (knumer.EQ.jpniil) THEN
351  WRITE (unit=clmess,fmt='(''TRONCATURE HORS PLAGE [1-'', &
352 & I4,''], CADRE "'',A,''"'')') &
353 & fa%NXTRON,cdacti(1:ilact2)
354  ELSE
355  WRITE (unit=clmess,fmt='(''TRONCATURE HORS PLAGE [1-'', &
356 & I4,''], UNITE'',I4)') fa%NXTRON,knumer
357  ENDIF
358 !
359  ELSEIF (kcode.EQ.-71) THEN
360 !
361  IF (knumer.EQ.jpniil) THEN
362  WRITE (unit=clmess,fmt='(''NOMBRE LATITUDES HORS [1-'', &
363 & I4,''], CADRE "'',A,''"'')') &
364 & fa%NXLATI,cdacti(1:ilact2)
365  ELSE
366  WRITE (unit=clmess,fmt='(''NOMBRE LATITUDES HORS [1-'', &
367 & I4,''], UNITE'',I3)') fa%NXLATI,knumer
368  ENDIF
369 !
370  ELSEIF (kcode.EQ.-72) THEN
371 !
372  IF (knumer.EQ.jpniil) THEN
373  WRITE (unit=clmess,fmt='(''NB. NIV. VERTICAUX HORS [1-'', &
374 & I3,''], CADRE "'',A,''"'')') &
375 & fa%NXNIVV,cdacti(1:ilact2)
376  ELSE
377  WRITE (unit=clmess,fmt='(''NB. NIV. VERTICAUX HORS [1-'', &
378 & I3,''], UNITE'',I3)') fa%NXNIVV,knumer
379  ENDIF
380 !
381  ELSEIF (kcode.EQ.-73) THEN
382 !
383  IF (knumer.EQ.jpniil) THEN
384  clmess='COEFF. DILATATION INFERIEUR A 1, CADRE "' &
385 & //cdacti(1:ilact2)//'"'
386  ELSE
387  WRITE (unit=clmess,fmt= &
388 & '(''COEFF. DILATATION INFERIEUR A 1, UNITE'',I3)') knumer
389  ENDIF
390 !
391  ELSEIF (kcode.EQ.-74) THEN
392 !
393  IF (knumer.EQ.jpniil) THEN
394  clmess='1 NB. POINTS/PARALL. HORS PLAGE, CADRE "' &
395 & //cdacti(1:ilact2)//'"'
396  ELSE
397  WRITE (unit=clmess,fmt= &
398 & '(''1 NB. POINTS/PARALL. HORS PLAGE, UNITE'',I3)') knumer
399  ENDIF
400 !
401  ELSEIF (kcode.EQ.-75) THEN
402 !
403  IF (knumer.EQ.jpniil) THEN
404  clmess='LISTE POINTS/PARALL. INCORRECTE, CADRE "' &
405 & //cdacti(1:ilact2)//'"'
406  ELSE
407  WRITE (unit=clmess,fmt= &
408 & '(''LISTE POINTS/PARALL. INCORRECTE, UNITE'',I3)') knumer
409  ENDIF
410 !
411  ELSEIF (kcode.EQ.-76) THEN
412 !
413  IF (knumer.EQ.jpniil) THEN
414  clmess='1 N.O.Z. MAX/PARALL. HORS PLAGE, CADRE "' &
415 & //cdacti(1:ilact2)//'"'
416  ELSE
417  WRITE (unit=clmess,fmt= &
418 & '(''1 N.O.Z. MAX/PARALL. HORS PLAGE, UNITE'',I3)') knumer
419  ENDIF
420 !
421  ELSEIF (kcode.EQ.-77) THEN
422 !
423  IF (knumer.EQ.jpniil) THEN
424  clmess='LISTE NOZMAX/PARALL. INCORRECTE, CADRE "' &
425 & //cdacti(1:ilact2)//'"'
426  ELSE
427  WRITE (unit=clmess,fmt= &
428 & '(''LISTE NOZMAX/PARALL. INCORRECTE, UNITE'',I3)') knumer
429  ENDIF
430 !
431  ELSEIF (kcode.EQ.-78) THEN
432 !
433  IF (knumer.EQ.jpniil) THEN
434  clmess='INCONSISTANCE NOZMAX/NB. POINTS, CADRE "' &
435 & //cdacti(1:ilact2)//'"'
436  ELSE
437  WRITE (unit=clmess,fmt= &
438 & '(''INCONSISTANCE NOZMAX/NB. POINTS, UNITE'',I3)') knumer
439  ENDIF
440 !
441  ELSEIF (kcode.EQ.-79) THEN
442 !
443  IF (knumer.EQ.jpniil) THEN
444  clmess='INCONSISTANCE NB.LAT/TRONCATURE, CADRE "' &
445 & //cdacti(1:ilact2)//'"'
446  ELSE
447  WRITE (unit=clmess,fmt= &
448 & '(''INCONSISTANCE NB.LAT/TRONCATURE, UNITE'',I3)') knumer
449  ENDIF
450 !
451  ELSEIF (kcode.EQ.-80) THEN
452 !
453  IF (knumer.EQ.jpniil) THEN
454  clmess='FONC. COORD. HYBRIDE HORS [0,1], CADRE "' &
455 & //cdacti(1:ilact2)//'"'
456  ELSE
457  WRITE (unit=clmess,fmt= &
458 & '(''FONC. COORD. HYBRIDE HORS [0,1], UNITE'',I3)') knumer
459  ENDIF
460 !
461  ELSEIF (kcode.EQ.-81) THEN
462 !
463  IF (knumer.EQ.jpniil) THEN
464 !***** FAZZZZ - fonc. coord. hybride inadaptees, CADRE "0123456789ABCDEF" *****
465  clmess='FONC. COORD. HYBRIDE INADAPTEES, CADRE "' &
466 & //cdacti(1:ilact2)//'"'
467  ELSE
468  WRITE (unit=clmess,fmt= &
469 & '(''FONC. COORD. HYBRIDE INADAPTEES, UNITE'',I3)') knumer
470  ENDIF
471 !
472  ELSEIF (kcode.EQ.-82) THEN
473 !
474  IF (cdnspr.EQ.'FANDAR') THEN
475 !***** FAZZZZ - La DATE proposee a un contenu incorrect, UNITEiii *****
476  WRITE (unit=clmess,fmt= &
477 & '(''LA DATE PROPOSEE A UN CONTENU INCORRECT, UNITE'',I3)') &
478 & knumer
479  ELSE
480  WRITE (unit=clmess,fmt= &
481 & '(''L''''ARTICLE DATE A UN CONTENU INCORRECT, UNITE'',I3)') &
482 & knumer
483  ENDIF
484 !
485  ELSEIF (kcode.EQ.-83) THEN
486 !
487  IF (knumer.EQ.jpniil) THEN
488 !***** FAZZZZ - Nb. Max. longitu. hors [1-iiii], CADRE "0123456789abcdef" *****
489  WRITE (unit=clmess,fmt='(''NB. MAX. LONGITU. HORS [1-'', &
490 & I4,''], CADRE "'',A,''"'')') &
491 & fa%NXLONG,cdacti(1:ilact2)
492  ELSE
493  WRITE (unit=clmess,fmt='(''NB. MAX. LONGITU. HORS [1-'', &
494 & I4,''], UNITE'',I3)') fa%NXLONG,knumer
495  ENDIF
496 !
497  ELSEIF (kcode.EQ.-84) THEN
498 !
499  IF (knumer.EQ.jpniil) THEN
500  clmess='INCONSISTANCE KNXLON/TRONCATURE, CADRE "' &
501 & //cdacti(1:ilact2)//'"'
502  ELSE
503  WRITE (unit=clmess,fmt= &
504 & '(''INCONSISTANCE KNXLON/TRONCATURE, UNITE'',I3)') knumer
505  ENDIF
506 !
507  ELSEIF (kcode.EQ.-85) THEN
508  WRITE (unit=clmess,fmt='(''UNITE'',I3, &
509 & '' PAS ENCORE MUNIE D''''UNE DATE'')') knumer
510 !
511  ELSEIF (kcode.EQ.-86) THEN
512  WRITE (unit=clmess,fmt= &
513 & '(''PREFIXE/SUFFIXE BLANC INTERDIT, UNITE'',I3)') knumer
514 !
515  ELSEIF (kcode.EQ.-87) THEN
516  WRITE (unit=clmess,fmt= &
517 & '(''PREFIXE DE CHAMP TROP LONG, UNITE'',I3)') knumer
518 !
519  ELSEIF (kcode.EQ.-88) THEN
520  WRITE (unit=clmess,fmt= &
521 & '(''TRONCATURE <= SOUS-TRONCATURE "NON COMPACTEE", UNITE'',I3)') &
522 & knumer
523 !
524  ELSEIF (kcode.EQ.-89) THEN
525  WRITE (unit=clmess,fmt='(''ARTICLE-CHAMP "'',A, &
526 & ''" INEXISTANT, UNITE'',I3)') cdacti(1:ilact2),knumer
527 !
528  ELSEIF (kcode.EQ.-90) THEN
529  WRITE (unit=clmess,fmt='(''ARTICLE-CHAMP "'',A, &
530 & ''" TROP LONG, UNITE'',I3)') cdacti(1:ilact2),knumer
531 !
532  ELSEIF (kcode.EQ.-91) THEN
533 !***** FAZZZZ - Entete d'article "0123456789abcdef" incorrect, uniteiii *****
534  WRITE (unit=clmess,fmt='(''ENTETE D''''ARTICLE "'',A, &
535 & ''" INCORRECT, UNITE'',I3)') cdacti(1:ilact2),knumer
536 !
537  ELSEIF (kcode.EQ.-92) THEN
538 !***** FAZZZZ - Desaccord Csp./pdg., Article "0123456789abcdef", uniteiii *****
539  WRITE (unit=clmess, &
540 & fmt='(''DESACCORD CSP./PDG., ARTICLE "'',A, &
541 & ''" , UNITE'',I3)') cdacti(1:ilact2),knumer
542 !
543  ELSEIF (kcode.EQ.-93) THEN
544  WRITE (unit=clmess,fmt='(''ARTICLE "'',A, &
545 & ''" TROP *COURT* SUR L''''UNITE'',I3)') &
546 & cdacti(1:ilact2),knumer
547 !
548  ELSEIF (kcode.EQ.-94) THEN
549  WRITE (unit=clmess,fmt='(''ARTICLE "'',A, &
550 & ''" TROP *LONG* SUR L''''UNITE'',I3)') &
551 & cdacti(1:ilact2),knumer
552 !
553  ELSEIF (kcode.EQ.-95) THEN
554 !***** FAZZZZ - inconsis entete/GRIB article "0123456789abcdef", uniteiii *****
555  WRITE (unit=clmess, &
556 & fmt='(''INCONSIS ENTETE/GRIB ARTICLE "'',A, &
557 & ''", UNITE'',I3)') &
558 & cdacti(1:ilact2),knumer
559 !
560  ELSEIF (kcode.EQ.-96) THEN
561 !
562  IF (knumer.EQ.jpniil) THEN
563  clmess='NIVEAU IMPLICITE DE CODAGE GRIB TROP GRAND'
564  ELSE
565  WRITE (unit=clmess,fmt= &
566 & '(''NIVEAU DE CODAGE GRIB TROP GRAND, UNITE'',I3)') knumer
567  ENDIF
568 !
569  ELSEIF (kcode.EQ.-97) THEN
570 !
571  IF (knumer.EQ.jpniil) THEN
572  WRITE (unit=clmess,fmt= &
573 & '(''NOMBRE(S) IMPLICITE(S) DE BITS PAR VALEUR > MAXI ('',I2, &
574 & '')'')') fa%NBIMAX
575  ELSE
576  WRITE (unit=clmess,fmt= &
577 & '(''NOMBRE(S) DE BITS PAR VALEUR > MAXI ('',I2,''), UNITE'', &
578 & I3)') fa%NBIMAX,knumer
579  ENDIF
580 !
581  ELSEIF (kcode.EQ.-98) THEN
582 !
583  IF (knumer.EQ.jpniil) THEN
584  clmess= &
585 & 'PUISSANCE IMPLICITE DE LAPLACIEN TROP GRANDE'
586  ELSE
587  WRITE (unit=clmess,fmt= &
588 & '(''PUISSANCE DE LAPLACIEN TROP GRANDE, UNITE'',I3)') &
589 & knumer
590  ENDIF
591 !
592  ELSEIF (kcode.EQ.-99) THEN
593 !
594  IF (cdnspr.EQ.'FARFLU') THEN
595  clmess= &
596 & 'TRONCATURE MAX INFERIEURE OU = SOUS-TRONCATURE IMPLICITE'
597  ELSEIF (knumer.EQ.jpniil) THEN
598  clmess= &
599 & 'SS-TRONCATURE IMPLICITE SUPERIEURE OU = A UNE TRONCATURE'
600  ELSE
601  WRITE (unit=clmess,fmt= &
602 & '(''SOUS-TRONCATURE SUPERIEURE OU = A LA TRONCATURE, UNITE'', &
603 & I3)') knumer
604  ENDIF
605 !
606  ELSEIF (kcode.EQ.-100) THEN
607 !
608  IF (knumer.EQ.jpniil) THEN
609  clmess='SIN/COS POLE PROJEC. HORS [-1,1], CADRE "' &
610 & //cdacti(1:ilact2)//'"'
611  ELSE
612  WRITE (unit=clmess,fmt= &
613 & '(''SINUS/COSINUS DU POLE DE PROJECTION HORS [-1,1], UNITE'', &
614 & I3)') knumer
615  ENDIF
616 !
617  ELSEIF (kcode.EQ.-101) THEN
618 !
619  IF (knumer.EQ.jpniil) THEN
620  clmess='INCOHERENCE COS/SIN LONGIT. POLE, CADRE "' &
621 & //cdacti(1:ilact2)//'"'
622  ELSE
623  WRITE (unit=clmess,fmt= &
624 & '(''INCOHERENCE COS/SIN LONGITUDE POLE PROJECTION, UNITE'', &
625 & I3)') knumer
626  ENDIF
627 !
628  ELSEIF (kcode.EQ.-102) THEN
629 !
630  IF (knumer.EQ.jpniil) THEN
631  clmess='SINUS D''UNE LATITUDE HORS [-1,1], CADRE "' &
632 & //cdacti(1:ilact2)//'"'
633  ELSE
634  WRITE (unit=clmess,fmt= &
635 & '(''SINUS D''''UNE LATITUDE DE LA GRILLE HORS [-1,1], UNITE'', &
636 & I3)') knumer
637  ENDIF
638 !
639  ELSEIF (kcode.EQ.-103) THEN
640 !
641  IF (knumer.EQ.jpniil) THEN
642 !***** FAZZZZ - sinus latitudes non decroissants, cadre '0123456789abcdef" *****
643  clmess='SINUS LATITUDES NON DECROISSANTS, CADRE "' &
644 & //cdacti(1:ilact2)//'"'
645  ELSE
646  WRITE (unit=clmess,fmt= &
647 & '(''SINUS DES LATITUDES NON DECROISSANTS, UNITE'', &
648 & I3)') knumer
649  ENDIF
650 !
651  ELSEIF (kcode.EQ.-104) THEN
652 !
653  clmess= &
654 & 'TRONCATURE MAXI INCOMPATIBLE AVEC CADRE(S) DEJA DEFINI(S)'
655 !
656  ELSEIF (kcode.EQ.-105) THEN
657 !
658  clmess= &
659 & 'NB MAX NIVEAUX VERTICAUX/CADRE(S) DEFINI(S) INCOMPATIBLES'
660 !
661  ELSEIF (kcode.EQ.-106) THEN
662 !
663  clmess= &
664 & 'NOMBRE MAXI DE LATITUDES/CADRE(S) DEFINI(S) INCOMPATIBLES'
665 !
666  ELSEIF (kcode.EQ.-107) THEN
667 !
668  clmess= &
669 & 'NOMBRE MAX DE LONGITUDES/CADRE(S) DEFINI(S) INCOMPATIBLES'
670 !
671  ELSEIF (kcode.EQ.-108) THEN
672 !
673 !***** FAZZZZ - Pression de reference aberrante, cadre "0123456789abcdef" *****
674  IF (knumer.EQ.jpniil) THEN
675  clmess='PRESSION DE REFERENCE ABERRANTE, CADRE "' &
676 & //cdacti(1:ilact2)//'"'
677  ELSE
678  WRITE (unit=clmess,fmt= &
679 & '(''PRESSION DE REFERENCE ABERRANTE, UNITE'',I3)') &
680 & knumer
681  ENDIF
682 !
683  ELSEIF (kcode.EQ.-109) THEN
684 !
685  IF (knumer.EQ.jpniil) THEN
686  WRITE (unit=clmess, &
687 & fmt='(''TYPE TRANSFO HORIZ. HORS [1-'', &
688 & I2,''], CADRE "'',A,''"'')') &
689 & fa%NTYPTX,cdacti(1:ilact2)
690  ELSE
691  WRITE (unit=clmess, &
692 & fmt='(''TYPE TRANSFO HORIZ. HORS [1-'', &
693 & I2,''], UNITE'',I3)') fa%NTYPTX,knumer
694  ENDIF
695 !
696  ELSEIF (kcode.EQ.-110) THEN
697  WRITE (unit=clmess,fmt= &
698 & '(''PAS D''''ARTICLE DERRIERE CEUX DU CADRE, UNITE'',I3)') &
699 & knumer
700 !
701  ELSEIF (kcode.EQ.-111) THEN
702  WRITE (unit=clmess,fmt= &
703 & '(''NOM RESERVE, NE PEUT ETRE UTILISE AINSI, UNITE'',I3)') &
704 & knumer
705 !
706  ELSEIF (kcode.EQ.-112) THEN
707  inume1=knumer/1000
708  inume2=mod(knumer,1000_jplikb )
709  WRITE (unit=clmess, &
710 & fmt='(''COPIE DE '''''',A,'''''': UNITES'', &
711 & I3,'' ET'',I3,'' INCOMPATIBLES'')') cdacti(1:ilact2), &
712 & inume1,inume2
713 !
714  ELSEIF (kcode.EQ.-113) THEN
715  clmess= &
716 & 'SS-TRONCATURE IMPLICITE SUPERIEURE OU = A TRONCATURE MAXI'
717 !
718  ELSEIF (kcode.EQ.-114) THEN
719  clmess= &
720 & 'RATIO DES TRONCATURES HORIZ. (VERSION LAM) SUPERIEUR A 3: &
721 & GARDE-FOU, MODIFIABLE DANS FARCIS+FACSIM'
722 !
723  ELSEIF (kcode.EQ.-115) THEN
724  IF (knumer.EQ.jpniil) THEN
725  clmess='KNXLON<(-2*KTYPTR+1), CADRE "' &
726 & //cdacti(1:ilact2)//'"'
727  ELSE
728  WRITE (unit=clmess,fmt= &
729 & '(''KNXLON<(-2*KTYPTR+1), UNITE'',I3)') knumer
730  ENDIF
731 !
732  ELSEIF (kcode.EQ.-116) THEN
733  IF (knumer.EQ.jpniil) THEN
734  clmess='KNXLON<(2*KTRONC+1), CADRE "' &
735 & //cdacti(1:ilact2)//'"'
736  ELSE
737  WRITE (unit=clmess,fmt= &
738 & '(''KNXLON<(2*KTRONC+1), UNITE'',I3)') knumer
739  ENDIF
740 !
741  ELSEIF (kcode.EQ.-117) THEN
742 !
743  IF (knumer.EQ.jpniil) THEN
744  clmess='INDICATEUR DE DOMAINE HORS [-1,1], CADRE "' &
745 & //cdacti(1:ilact2)//'"'
746  ELSE
747  WRITE (unit=clmess,fmt= &
748 & '(''INDICATEUR DE DOMAINE HORS [-1,1], UNITE'', &
749 & I3)') knumer
750  ENDIF
751 !
752  ELSEIF (kcode.EQ.-118) THEN
753 !
754  IF (knumer.EQ.jpniil) THEN
755  clmess= &
756 & 'INDICE DE DEPART EN LONGITUDE HORS [1,KNXLON], CADRE "' &
757 & //cdacti(1:ilact2)//'"'
758  ELSE
759  WRITE (unit=clmess,fmt= &
760 & '(''INDICE DE DEPART EN LONGITUDE HORS [1,KNXLON], UNITE'', &
761 & I3)') knumer
762  ENDIF
763 !
764  ELSEIF (kcode.EQ.-119) THEN
765 !
766  IF (knumer.EQ.jpniil) THEN
767  clmess='INDICE DE FIN EN LONGITUDE ERRONE, CADRE "' &
768 & //cdacti(1:ilact2)//'"'
769  ELSE
770  WRITE (unit=clmess,fmt= &
771 & '(''INDICE DE FIN EN LONGITUDE ERRONE, UNITE'', &
772 & I3)') knumer
773  ENDIF
774 !
775  ELSEIF (kcode.EQ.-120) THEN
776 !
777  IF (knumer.EQ.jpniil) THEN
778  clmess= &
779 & 'INDICE DE DEPART EN LATITUDE HORS [1,KNLATI], CADRE "' &
780 & //cdacti(1:ilact2)//'"'
781  ELSE
782  WRITE (unit=clmess,fmt= &
783 & '(''INDICE DE DEPART EN LATITUDE HORS [1,KNLATI], UNITE'', &
784 & I3)') knumer
785  ENDIF
786 !
787  ELSEIF (kcode.EQ.-121) THEN
788 !
789  IF (knumer.EQ.jpniil) THEN
790  clmess='INDICE DE FIN EN LATITUDE ERRONE, CADRE "' &
791 & //cdacti(1:ilact2)//'"'
792  ELSE
793  WRITE (unit=clmess,fmt= &
794 & '(''INDICE DE FIN EN LATITUDE ERRONE, UNITE'', &
795 & I3)') knumer
796  ENDIF
797 !
798  ELSEIF (kcode.EQ.-122) THEN
799 !
800  IF (knumer.EQ.jpniil) THEN
801  clmess='ZONE DE RELAXATION TROP LARGE '// &
802 & 'EN LONGITUDE, CADRE "' &
803 & //cdacti(1:ilact2)//'"'
804  ELSE
805  WRITE (unit=clmess,fmt= &
806 & '(''ZONE DE RELAXATION TROP LARGE EN LONGITUDE, UNITE'', &
807 & I3)') knumer
808  ENDIF
809 !
810  ELSEIF (kcode.EQ.-123) THEN
811 !
812  IF (knumer.EQ.jpniil) THEN
813  clmess='ZONE DE RELAXATION TROP LARGE '// &
814 & 'EN LATITUDE, CADRE "' &
815 & //cdacti(1:ilact2)//'"'
816  ELSE
817  WRITE (unit=clmess,fmt= &
818 & '(''ZONE DE RELAXATION TROP LARGE EN LATITUDE, UNITE'', &
819 & I3)') knumer
820  ENDIF
821 !
822  ELSEIF (kcode.EQ.-124) THEN
823  clmess= &
824 & 'NB DE BITS POUR CODER NUL'
825 !
826  ELSEIF (kcode.EQ.-125) THEN
827  clmess= &
828 & 'ARGUMENT AYANT UNE VALEUR INCORRECTE'
829 !
830  ELSEIF (kcode.EQ.-126) THEN
831  clmess= &
832 & 'INCOHERENCE DANS UN CONTROLE INTERNE'
833 !
834  ELSEIF (kcode.EQ.-127) THEN
835  clmess= &
836 & 'INCOHERENCE DANS LE CONTROLE DE L''ELLIPSE'
837 !
838  ELSEIF (kcode.EQ.-128) THEN
839  clmess= &
840 & 'MESSAGE GRIB INCORRECT POUR DECF10'
841 !
842  ELSEIF (kcode.EQ.-129) THEN
843  clmess= &
844 & 'IMPOSSIBLE D''ENCODER CE CHAMP AVEC CES REGLAGES'
845 !
846  ELSEIF (kcode.EQ.-130) THEN
847  clmess= &
848 & 'TABLEAU TROP COURT POUR ENCODER CE CHAMP'
849 !
850  ELSEIF (kcode.LT.-1000) THEN
851  clmess= &
852 & 'ERREUR RAPPORTEE PAR GRIBEX (cf manuel, avec kret=-krep-1000)'
853 !
854  ELSEIF (knumer.EQ.jpniil) THEN
855  WRITE (unit=clmess,fmt='(''ERREUR GLOBALE NUMERO'',I6)') &
856 & kcode
857 !
858  ELSE
859  WRITE (unit=clmess,fmt='(''ERREUR GRIB'',I6, &
860 & '' SUR UNITE LOGIQUE'',I3)') 200+kcode,knumer
861  ENDIF
862 !
863  ilmesa=int(len(clmesa), jplikb)
864  ilmesu=ilmesa-1-2*int(len(cljoli), jplikb)-ilnspr-4
865  clmesa=cljoli//' '//cdnspr(1:ilnspr)//' - '//clmess(1:ilmesu) &
866 & //cljoli
867  clmesa=trim(clmesa)//clitid
868  WRITE (unit=fa%NULOUT,fmt='(A)') clmesa
869 !
870  WRITE (unit=fa%NULOUT,fmt=*) clmesa
871  IF (ldfata.AND.kcode.NE.0) THEN
872  CALL flush(int(fa%NULOUT))
873  CALL sdl_srlabort
874  ENDIF
875 !
876 ENDIF
877 !
878 IF (lhook) CALL dr_hook('FAIPAR_MT',1,zhook_handle)
879 END SUBROUTINE faipar_fort
880 
881 
882 
883 ! Oct-2012 P. Marguinaud 64b LFI
884 SUBROUTINE faipar64 &
885 & (knumer, knimes, kcode, ldfata, cdmess, cdnspr, &
886 & cdacti, ldrlfi)
887 USE fa_mod, ONLY : fa => fa_com_default, &
890 USE lfi_precision
891 IMPLICIT NONE
892 ! Arguments
893 INTEGER (KIND=JPLIKB) KNUMER ! IN
894 INTEGER (KIND=JPLIKB) KNIMES ! IN
895 INTEGER (KIND=JPLIKB) KCODE ! IN
896 LOGICAL LDFATA ! IN
897 CHARACTER (LEN=*) CDMESS ! IN
898 CHARACTER (LEN=*) CDNSPR ! IN
899 CHARACTER (LEN=*) CDACTI ! IN
900 LOGICAL LDRLFI ! IN
901 
902 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
903 
904 CALL faipar_fort &
905 & (fa, knumer, knimes, kcode, ldfata, cdmess, cdnspr, &
906 & cdacti, ldrlfi)
907 
908 END SUBROUTINE faipar64
909 
910 SUBROUTINE faipar &
911 & (knumer, knimes, kcode, ldfata, cdmess, cdnspr, &
912 & cdacti, ldrlfi)
913 USE fa_mod, ONLY : fa => fa_com_default, &
916 USE lfi_precision
917 IMPLICIT NONE
918 ! Arguments
919 INTEGER (KIND=JPLIKM) KNUMER ! IN
920 INTEGER (KIND=JPLIKM) KNIMES ! IN
921 INTEGER (KIND=JPLIKM) KCODE ! IN
922 LOGICAL LDFATA ! IN
923 CHARACTER (LEN=*) CDMESS ! IN
924 CHARACTER (LEN=*) CDNSPR ! IN
925 CHARACTER (LEN=*) CDACTI ! IN
926 LOGICAL LDRLFI ! IN
927 
928 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
929 
930 CALL faipar_mt &
931 & (fa, knumer, knimes, kcode, ldfata, cdmess, cdnspr, &
932 & cdacti, ldrlfi)
933 
934 END SUBROUTINE faipar
935 
936 SUBROUTINE faipar_mt &
937 & (fa, knumer, knimes, kcode, ldfata, cdmess, cdnspr, &
938 & cdacti, ldrlfi)
939 USE fa_mod, ONLY : fa_com
940 USE lfi_precision
941 IMPLICIT NONE
942 ! Arguments
943 type(fa_com) fa ! INOUT
944 INTEGER (KIND=JPLIKM) KNUMER ! IN
945 INTEGER (KIND=JPLIKM) KNIMES ! IN
946 INTEGER (KIND=JPLIKM) KCODE ! IN
947 LOGICAL LDFATA ! IN
948 CHARACTER (LEN=*) CDMESS ! IN
949 CHARACTER (LEN=*) CDNSPR ! IN
950 CHARACTER (LEN=*) CDACTI ! IN
951 LOGICAL LDRLFI ! IN
952 ! Local integers
953 INTEGER (KIND=JPLIKB) INUMER ! IN
954 INTEGER (KIND=JPLIKB) INIMES ! IN
955 INTEGER (KIND=JPLIKB) ICODE ! IN
956 ! Convert arguments
957 
958 inumer = int( knumer, jplikb)
959 inimes = int( knimes, jplikb)
960 icode = int( kcode, jplikb)
961 
962 CALL faipar_fort &
963 & (fa, inumer, inimes, icode, ldfata, cdmess, cdnspr, &
964 & cdacti, ldrlfi)
965 
966 
967 END SUBROUTINE faipar_mt
968 
969 !INTF KNUMER IN
970 !INTF KNIMES IN
971 !INTF KCODE IN
972 !INTF LDFATA IN
973 !INTF CDMESS IN
974 !INTF CDNSPR IN
975 !INTF CDACTI IN
976 !INTF LDRLFI IN
static const char * trim(const char *name, int *n)
Definition: drhook.c:2383
subroutine faipar_mt(FA, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
Definition: faipar.F90:939
integer, parameter jplikb
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine new_fa_default()
Definition: fa_mod.F90:649
subroutine faipar(KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
Definition: faipar.F90:913
logical function, public oml_in_parallel()
Definition: oml_mod.F90:125
Definition: fa_mod.F90:1
subroutine faipar64(KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
Definition: faipar.F90:887
integer, parameter jprb
Definition: parkind1.F90:32
integer(kind=jpim) function, public oml_my_thread()
Definition: oml_mod.F90:249
logical lhook
Definition: yomhook.F90:15
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 sdl_srlabort
Definition: sdl_srlabort.F90:2
integer(kind=jplikb), parameter jpniil
Definition: fa_mod.F90:31