SURFEX v7.3
General documentation of Surfex
|
00001 C Jan-2011 P. Marguinaud Thread-safe FA 00002 SUBROUTINE FAIPAR_MT (FA, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, 00003 S CDNSPR, CDACTI, LDRLFI ) 00004 USE FA_MOD, ONLY : FA_COM 00005 USE PARKIND1, ONLY : JPRB 00006 USE YOMHOOK , ONLY : LHOOK, DR_HOOK 00007 C**** 00008 C Ce sous-programme est charge de FAIre PARt des Messages 00009 C emis par le logiciel de Fichiers ARPEGE, en faisant si besoin est 00010 C l'"ABORT" du programme . 00011 C** 00012 C Arguments : KNUMER ==> Numero de l'unite logique eventuelle; 00013 C ( FA%JPNIIL ==> pas d'unite logique ) 00014 C KNIMES ==> Niveau (0,1,2) du message; 00015 C KCODE ==> Code correspondant a l'action; 00016 C LDFATA ==> Vrai si on doit avorter le programme; 00017 C CDMESS ==> si KNIMES#0, Message a emettre; 00018 C CDNSPR ==> Nom du Sous-Programme appelant; 00019 C CDACTI ==> Nom de l'action d'Entree/Sortie FORTRAN 00020 C (si KCODE >0), sinon fourre-tout !) . 00021 C LDRLFI ==> Vrai si le code-reponse different de 0 00022 C a ete detecte par le logiciel LFI. 00023 C* 00024 C VALEURS POSSIBLES DES CODES-REPONSES DU LOGICIEL FICHIERS ARPEGE 00025 C 00026 C 0 ==> Aucune erreur detectee, message informatif. 00027 C >0 ==> Il s'agit du code-reponse d'une erreur detectee lors d'un 00028 C OPEN, READ, WRITE, CLOSE, ou INQUIRE FORTRAN; voir manuels. 00029 C -(1a50)==> Code-reponse renvoye par le logiciel LFI. 00030 C -51 ==> Unite logique non ouverte pour le logiciel, 00031 C ou bien cadre non defini . 00032 C -52 ==> Valeur d'un "NIVEAU" hors plage [0-2] . 00033 C -53 ==> *** code-reponse inutilise pour le moment ***. 00034 C -54 ==> Changement explicite de mode Multi-Tasking avec au moins 1 00035 C unite logique ouverte-risque de problemes (s/p "FARINE") . 00036 C -55 ==> Unite logique deja ouverte ou cadre non redefinissable. 00037 C -56 ==> Trop d'unites logiques deja ouvertes ou de cadres definis. 00038 C -57 ==> Nouveau fichier, et cadre reference non defini au prealable 00039 C -58 ==> Fichier preexistant, et cadre reference non compatible . 00040 C -59 ==> Redefinition de cadre avec modification de parametre(s), 00041 C impossible car il y a au moins un fichier qui s'y rattache. 00042 C -60 ==> Un des articles definissant le cadre est manquant. 00043 C -61 ==> " " " " " " a une longueur inattendue. 00044 C -62 ==> L'article DATE est manquant. 00045 C -63 ==> L'article DATE a une longueur inattendue. 00046 C -64 ==> Argument d'appel de type ENTIER incorrect . 00047 C -65 ==> Argument d'appel de type CARACTERE incorrect . 00048 C -66 ==> INCOHERENCE tables, fichier, appels s/p internes, logiciel; 00049 C CE CODE EST LE SEUL QUE *FA%NRFAGA* VALANT 2 NE PEUT MASQUER, 00050 C ET PROVOQUE DONC UNE ERREUR FATALE DANS TOUS LES CAS. 00051 C -67 ==> Le cadre reference a au moins un fichier associe, 00052 C et ne peut donc pas etre supprime. 00053 C -68 ==> Nom d'article compose uniquement de BLANCS, non accepte 00054 C ( a cause du fonctionnement interne du logiciel LFI ), 00055 C ou cadre de nom blanc non accepte (les cadres non definis 00056 C sont reperes ainsi dans les tables du logiciel) 00057 C -69 ==> La variable CARACTERE donnee en argument est TROP COURTE 00058 C pour recevoir le NOM du cadre ou d'identificateur, meme en 00059 C supprimant les eventuels caracteres blancs en fin de nom . 00060 C -70 ==> Troncature hors plage [1-FA%NXTRON]. 00061 C -71 ==> Nombre de latitudes de pole a pole hors plage [1-FA%NXLATI]. 00062 C -72 ==> Nombre de niveaux verticaux hors plage [1-FA%NXNIVV]. 00063 C -73 ==> Coefficient de dilatation inferieur a 1. 00064 C -74 ==> Un des nombres de points par parallele est <= 0 ou depasse 00065 C le nombre maximum annonce dans la description du cadre. 00066 C -75 ==> Un des nombres de points par parallele est inferieur 00067 C a celui qui le precede. 00068 C -76 ==> Un des nombres d'onde zonal maxi par parallele depasse 00069 C la troncature ou n'est pas positif. 00070 C -77 ==> Un des nombres d'onde zonal maxi par parallele est 00071 C inferieur a celui qui le precede. 00072 C -78 ==> Sur une latitude au moins, le nombre de points est insuffi- 00073 C sans vis-a-vis du nombre d'onde zonal maximum. 00074 C -79 ==> Inconsistance: le nombre de latitudes (de pole a pole) 00075 C est insuffisant vis-a-vis de la troncature. 00076 C -80 ==> Une valeur d'une des fonctions de la coordonnee hybride 00077 C est en-dehors de l'intervalle [0,1] . 00078 C -81 ==> Pour une couche, valeurs inadaptees des fonctions de la 00079 C coordonnee hybride. 00080 C -82 ==> L'article DATE a un contenu incorrect. 00081 C -83 ==> Le nombre maximum de points par parallele est en-dehors de 00082 C l'intervalle [1,FA%NXLONG] 00083 C -84 ==> Le nombre maximum de points par parallele est insuffisant 00084 C vis-a-vis de la troncature. 00085 C -85 ==> Fichier en mode creation, donc vide d'articles vis-a-vis 00086 C du logiciel (a la description du Cadre pres): 00087 C il faut le munir d'une date... 00088 C -86 ==> Prefixe et/ou suffixe "blanc" interdit. 00089 C -87 ==> Prefixe de champ trop long. 00090 C -88 ==> Troncature effective inferieure ou egale a 00091 C la sous-troncature "non compactee". 00092 C -89 ==> Article de type champ demande inexistant dans le fichier. 00093 C -90 ==> L'article de type champ existe, mais est trop long. 00094 C -91 ==> En-tete d'article champ incorrect. 00095 C -92 ==> L'article demande est en points-de-grille au lieu de 00096 C coefficients spectraux, ou vice-versa. 00097 C -93 ==> L'article demande est trop COURT sur le fichier. 00098 C -94 ==> L'article demande est trop LONG sur le fichier ( si cette 00099 C erreur n'est pas fatale, on traite le debut de l'article ). 00100 C -95 ==> Incoherence entre entete d'article champ et zone GRIB. 00101 C -96 ==> Niveau de codage GRIB trop grand. 00102 C -97 ==> Nombre de bits de codage trop grand. 00103 C -98 ==> Puissance de laplacien trop grande. 00104 C -99 ==> Sous-troncature superieure ou egale a la troncature 00105 C -100 ==> Une des lignes trigonometriques definissant le pole de 00106 C projection n'est pas dans [-1,1] . 00107 C -101 ==> Cosinus et Sinus de la longitude du pole de projection 00108 C incoherents. 00109 C -102 ==> Le Sinus d'une latitude de la grille n'est pas dans [-1,1]. 00110 C -103 ==> Le Sinus d'une latitude est superieur ou egal a celui de 00111 C la latitude precedente. 00112 C -104 ==> Troncature maxi. incompatible avec cadre(s) deja defini(s). 00113 C -105 ==> Nombre maxi. de niveaux verticaux " " " " . 00114 C -106 ==> Nombre maxi. de latitudes pole a pole" " " . 00115 C -107 ==> Nombre maxi. de longitudes " " " " " . 00116 C -108 ==> Pression de reference aberrante. 00117 C -109 ==> Type de transformation horizontale hors plage [1-FA%NTYPTX] 00118 C -110 ==> Pas d'article "identificateur" (apres ceux du cadre) 00119 C -111 ==> Article de nom reserve, a ne pas ecrire ou lire ainsi 00120 C -112 ==> Caracteristiques des fichiers vraiment incompatibles, 00121 C recopie d'article "champ" impossible. 00122 C -113 ==> Sous-troncature implicite superieure ou egale a la 00123 C limite usager de troncature. 00124 C -114 ==> Ratio des troncatures (version LAM) superieur a 3. 00125 C Garde-fou, modifiable dans FARCIS, FACSIM et FAPULA. 00126 C -115 ==> (LAM) Le nombre maximum de points par parallele est insuffisant 00127 C vis-a-vis de la troncature. 00128 C -116 ==> (LAM) Le nombre maximum de points par meridien est insuffisant 00129 C vis-a-vis de la troncature. 00130 C -117 ==> (LAM) L'indicateur NDOMFP a une valeur hors de [-1,1] 00131 C -118 ==> (LAM) L'indice de depart (C+I) en longitude est hors plage [1-KNXLON]. 00132 C -119 ==> (LAM) L'indice de fin (C+I) en longitude est errone. 00133 C -120 ==> (LAM) L'indice de depart (C+I) en latitude est hors plage [1-KNLATI]. 00134 C -121 ==> (LAM) L'indice de fin (C+I) en latitude est errone. 00135 C -122 ==> (LAM) La largeur de la zone de relaxation est trop large en longitude. 00136 C -123 ==> (LAM) La largeur de la zone de relaxation est trop large en latitude. 00137 C -124 ==> Nombre de bits de codage nul alors qu'un codage est demande 00138 C -125 ==> Argument ayant une valeur incorrecte 00139 C -126 ==> Detection d'une incoherence dans un controle interne 00140 C -127 ==> (LAM) Description incoherente de l'ellipse contenant les troncatures 00141 C -128 ==> Message GRIB incorrect dans l'appel a DECF10 00142 C <-1000 ==> Erreur rapportee par GRIBEX 00143 C 00144 00145 USE SDL_MOD , ONLY : SDL_SRLABORT 00146 00147 #include "precision.h" 00148 C 00149 C 00150 TYPE(FA_COM) :: FA 00151 INTEGER KNUMER, KNIMES, KCODE 00152 C 00153 INTEGER ILNSPR, ILACTI, ILACT2, ILMESU, ILMESA, INUME1, INUME2 00154 C 00155 LOGICAL LDFATA, LDRLFI 00156 C 00157 CHARACTER CDNSPR*(*), CLJOLI*6, CDMESS*(*), CLMESA*80, CDACTI*(*) 00158 #include "facom_mt.h" 00159 C 00160 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00161 IF (LHOOK) CALL DR_HOOK('FAIPAR_MT',0,ZHOOK_HANDLE) 00162 ILNSPR=MIN (LEN (CDNSPR),6) 00163 ILACTI=MIN (LEN (CDACTI),8) 00164 ILACT2=MIN (LEN (CDACTI),FA%NCPCAD) 00165 C 00166 IF (LDFATA) THEN 00167 CLJOLI=' *****' 00168 ELSEIF (KNIMES.EQ.0.OR.KCODE.NE.0) THEN 00169 CLJOLI=' */*/*' 00170 ELSE 00171 CLJOLI=' /////' 00172 ENDIF 00173 C 00174 IF (KNIMES.NE.0) THEN 00175 ILMESU=MIN (LEN (CLMESS)-LEN (CLJOLI)-ILNSPR-4,LEN (CDMESS)) 00176 CLMESS=CLJOLI//' '//CDNSPR(1:ILNSPR)//' - '//CDMESS(1:ILMESU) 00177 WRITE (UNIT=FA%NULOUT,FMT='(A)') CLMESS 00178 ENDIF 00179 C 00180 IF (KNIMES.EQ.0.OR.LDFATA) THEN 00181 C 00182 C CONSTITUTION D'UN MESSAGE D'ERREUR AD HOC, EN FONCTION DE KCODE 00183 C 00184 IF (LDRLFI) THEN 00185 WRITE (UNIT=CLMESS,FMT='(''CODE-REPONSE DE *'',A6,''* =' 00186 ', S I4,'', UNITE ='',I3)') CDACTI(1:ILACTI),KCODE,KNUMER 00187 C 00188 ELSEIF (KCODE.GT.0) THEN 00189 WRITE (UNIT=CLMESS, 00190 S FMT='(''ERREUR "'',A,''" FORTRAN, CODE =' 00191 ', S I4,'', UNITE ='',I3)') CDACTI(1:ILACTI),KCODE,KNUMER 00192 C 00193 ELSEIF (KCODE.EQ.-51) THEN 00194 C 00195 IF (KNUMER.EQ.FA%JPNIIL) THEN 00196 CLMESS='CADRE "'//CDACTI(1:ILACT2)//'" NON DEFINI' 00197 ELSE 00198 WRITE (UNIT=CLMESS,FMT='(''UNITE LOGIQUE' 00199 ',I3, S '' NON OUVERTE'')') KNUMER 00200 ENDIF 00201 C 00202 ELSEIF (KCODE.EQ.-52) THEN 00203 C 00204 IF (KNUMER.EQ.FA%JPNIIL) THEN 00205 CLMESS='PARAMETRE DE NIVEAU "KNIVAU" HORS PLAGE [0-2]' 00206 ELSE 00207 WRITE (UNIT=CLMESS,FMT= 00208 S '(''NIVEAU DE MESSAGERIE HORS PLAGE [0-2], UNITE'',I3)') KNUMER 00209 ENDIF 00210 C 00211 ELSEIF (KCODE.EQ.-53) THEN 00212 CLMESS='CADRE "'//CDACTI(1:ILACT2)// 00213 S '", PARAMETRE(S) INCORRECT(S)' 00214 C 00215 ELSEIF (KCODE.EQ.-54) THEN 00216 CLMESS= 00217 S 'CHANGEMENT EXPLICITE MODE MULTI AVEC UNITES OUVERTES' 00218 C 00219 ELSEIF (KCODE.EQ.-55) THEN 00220 C 00221 IF (KNUMER.EQ.FA%JPNIIL) THEN 00222 CLMESS='CADRE "'//CDACTI(1:ILACT2)// 00223 S '" NON REDEFINISSABLE' 00224 ELSE 00225 WRITE (UNIT=CLMESS,FMT='(''UNITE LOGIQUE' 00226 ',I3, S '' DEJA OUVERTE'')') KNUMER 00227 ENDIF 00228 C 00229 ELSEIF (KCODE.EQ.-56) THEN 00230 C 00231 IF (KNUMER.EQ.FA%JPNIIL) THEN 00232 WRITE (UNIT=CLMESS,FMT= 00233 S '(I2,'' CADRES DEFINIS, PAS DE PLACE POUR "'',A,''"'')') 00234 S FA%JPNXCA,CDACTI(1:ILACT2) 00235 ELSE 00236 WRITE (UNIT=CLMESS,FMT= 00237 '(I2, S '' UNITES LOGIQUES OUVERTES, PAS DE PLACE POUR'',I3)') 00238 S FA%JPNXFA,KNUMER 00239 ENDIF 00240 C 00241 ELSEIF (KCODE.EQ.-57) THEN 00242 WRITE (UNIT=CLMESS, 00243 S FMT='(''UNITE'',I3,'' A CREER, CADRE "' 00244 ',A, S ''" NON DEFINI'')') KNUMER,CDACTI(1:ILACT2) 00245 C 00246 ELSEIF (KCODE.EQ.-58) THEN 00247 WRITE (UNIT=CLMESS, 00248 S FMT='(''UNITE'',I3,'' /CADRE PREDEFINI "' 00249 ', S A,''" INCOMPATIBLES'')') KNUMER,CDACTI(1:ILACT2) 00250 C 00251 ELSEIF (KCODE.EQ.-59) THEN 00252 CLMESS='CADRE "'//CDACTI(1:ILACT2)// 00253 S '" NON MODIFIABLE CAR UTILISE' 00254 C 00255 ELSEIF (KCODE.EQ.-60) THEN 00256 WRITE (UNIT=CLMESS,FMT= 00257 S '(''UN ARTICLE DU CADRE EST MANQUANT, UNITE'',I3)') KNUMER 00258 C 00259 ELSEIF (KCODE.EQ.-61) THEN 00260 C***** FAZZZZ - un article du cadre a une longueur inattendue, uniteiii ***** 00261 WRITE (UNIT=CLMESS,FMT= 00262 S '(''UN ARTICLE DU CADRE A UNE LONGUEUR INATTENDUE, UNITE'',I3)') 00263 S KNUMER 00264 C 00265 ELSEIF (KCODE.EQ.-62) THEN 00266 WRITE (UNIT=CLMESS,FMT= 00267 S '(''PAS D''''ARTICLE DATE SUR L''''UNITE'',I3)') KNUMER 00268 C 00269 ELSEIF (KCODE.EQ.-63) THEN 00270 WRITE (UNIT=CLMESS,FMT= 00271 S'(''L''''ARTICLE DATE A UNE LONGUEUR INATTENDUE SUR L'''' UNITE' 00272 ', S I3)') KNUMER 00273 C 00274 ELSEIF (KCODE.EQ.-64) THEN 00275 C 00276 IF (CDNSPR.EQ.'FAIENC') THEN 00277 WRITE (UNIT=CLMESS,FMT= 00278 S '(''NIVEAU VERTICAL HORS LIMITES, UNITE'',I3)') KNUMER 00279 ELSEIF (CDNSPR.EQ.'FAISAN'.OR.CDNSPR.EQ.'FALAIS') THEN 00280 WRITE (UNIT=CLMESS,FMT= 00281 S '(''LONGUEUR D''''ARTICLE <=0, UNITE'',I3)') KNUMER 00282 ELSEIF (KNUMER.EQ.FA%JPNIIL) THEN 00283 CLMESS='RANG DANS UNE TABLE GLOBALE INCORRECT' 00284 ELSE 00285 WRITE (UNIT=CLMESS,FMT= 00286 S '(''ARGUMENT ENTIER INCORRECT, UNITE'',I3)') KNUMER 00287 ENDIF 00288 C 00289 ELSEIF (KCODE.EQ.-65) THEN 00290 C 00291 IF (CDNSPR.EQ.'FAIENC'.OR.CDNSPR.EQ.'FACILE'.OR. 00292 S CDNSPR.EQ.'FAISAN'.OR.CDNSPR.EQ.'FALAIS') THEN 00293 WRITE (UNIT=CLMESS, 00294 S FMT='(''NOM D''''ARTICLE INCORRECT OU ' 00295 ', S ''TROP LONG, UNITE'',I3)') KNUMER 00296 ELSEIF (KNUMER.EQ.FA%JPNIIL) THEN 00297 CLMESS='NOM DE CADRE INCORRECT OU TROP LONG: "' 00298 S //CDACTI(1:ILACT2)//'"' 00299 ELSE 00300 WRITE (UNIT=CLMESS, 00301 S FMT='(''CHAINE DE CARACTERES INCORRECT' 00302 ', S ''E OU TROP LONGUE, UNITE'',I3)') KNUMER 00303 ENDIF 00304 C 00305 ELSEIF (KCODE.EQ.-66) THEN 00306 WRITE (UNIT=CLMESS, 00307 S FMT='(''INCOHERENCE (TABLES, FICHIER, ' 00308 ', S ''APPELS S/P INT. OU FICHIER), UNITE'',I3)') KNUMER 00309 C 00310 ELSEIF (KCODE.EQ.-67) THEN 00311 CLMESS='FICHIER ASSOCIE, CADRE"'//CDACTI(1:ILACT2) 00312 S //'" DEVANT SUBSISTER' 00313 C 00314 ELSEIF (KCODE.EQ.-68) THEN 00315 C 00316 IF (KNUMER.EQ.FA%JPNIIL) THEN 00317 CLMESS='CADRE DE NOM BLANC NON ACCEPTE' 00318 ELSE 00319 WRITE (UNIT=CLMESS,FMT= 00320 S '(''ARTICLE DE NOM BLANC NON ACCEPTE, UNITE'',I3)') KNUMER 00321 ENDIF 00322 C 00323 ELSEIF (KCODE.EQ.-69) THEN 00324 WRITE (UNIT=CLMESS,FMT='(''VARIABLE CARACT. TROP COURTE ' 00325 ', S ''POUR "'',A,''", UNITE'',I3)') 00326 S CDACTI(1:ILACT2),KNUMER 00327 C 00328 ELSEIF (KCODE.EQ.-70) THEN 00329 C 00330 IF (KNUMER.EQ.FA%JPNIIL) THEN 00331 WRITE (UNIT=CLMESS,FMT='(''TRONCATURE HORS PLAGE [1-' 00332 ', S I3,''], CADRE "'',A,''"'')') 00333 S FA%NXTRON,CDACTI(1:ILACT2) 00334 ELSE 00335 WRITE (UNIT=CLMESS,FMT='(''TRONCATURE HORS PLAGE [1-' 00336 ', S I3,''], UNITE'',I3)') FA%NXTRON,KNUMER 00337 ENDIF 00338 C 00339 ELSEIF (KCODE.EQ.-71) THEN 00340 C 00341 IF (KNUMER.EQ.FA%JPNIIL) THEN 00342 WRITE (UNIT=CLMESS,FMT='(''NOMBRE LATITUDES HORS [1-' 00343 ', S I4,''], CADRE "'',A,''"'')') 00344 S FA%NXLATI,CDACTI(1:ILACT2) 00345 ELSE 00346 WRITE (UNIT=CLMESS,FMT='(''NOMBRE LATITUDES HORS [1-' 00347 ', S I4,''], UNITE'',I3)') FA%NXLATI,KNUMER 00348 ENDIF 00349 C 00350 ELSEIF (KCODE.EQ.-72) THEN 00351 C 00352 IF (KNUMER.EQ.FA%JPNIIL) THEN 00353 WRITE (UNIT=CLMESS,FMT='(''NB. NIV. VERTICAUX HORS [1-' 00354 ', S I3,''], CADRE "'',A,''"'')') 00355 S FA%NXNIVV,CDACTI(1:ILACT2) 00356 ELSE 00357 WRITE (UNIT=CLMESS,FMT='(''NB. NIV. VERTICAUX HORS [1-' 00358 ', S I3,''], UNITE'',I3)') FA%NXNIVV,KNUMER 00359 ENDIF 00360 C 00361 ELSEIF (KCODE.EQ.-73) THEN 00362 C 00363 IF (KNUMER.EQ.FA%JPNIIL) THEN 00364 CLMESS='COEFF. DILATATION INFERIEUR A 1, CADRE "' 00365 S //CDACTI(1:ILACT2)//'"' 00366 ELSE 00367 WRITE (UNIT=CLMESS,FMT= 00368 S '(''COEFF. DILATATION INFERIEUR A 1, UNITE'',I3)') KNUMER 00369 ENDIF 00370 C 00371 ELSEIF (KCODE.EQ.-74) THEN 00372 C 00373 IF (KNUMER.EQ.FA%JPNIIL) THEN 00374 CLMESS='1 NB. POINTS/PARALL. HORS PLAGE, CADRE "' 00375 S //CDACTI(1:ILACT2)//'"' 00376 ELSE 00377 WRITE (UNIT=CLMESS,FMT= 00378 S '(''1 NB. POINTS/PARALL. HORS PLAGE, UNITE'',I3)') KNUMER 00379 ENDIF 00380 C 00381 ELSEIF (KCODE.EQ.-75) THEN 00382 C 00383 IF (KNUMER.EQ.FA%JPNIIL) THEN 00384 CLMESS='LISTE POINTS/PARALL. INCORRECTE, CADRE "' 00385 S //CDACTI(1:ILACT2)//'"' 00386 ELSE 00387 WRITE (UNIT=CLMESS,FMT= 00388 S '(''LISTE POINTS/PARALL. INCORRECTE, UNITE'',I3)') KNUMER 00389 ENDIF 00390 C 00391 ELSEIF (KCODE.EQ.-76) THEN 00392 C 00393 IF (KNUMER.EQ.FA%JPNIIL) THEN 00394 CLMESS='1 N.O.Z. MAX/PARALL. HORS PLAGE, CADRE "' 00395 S //CDACTI(1:ILACT2)//'"' 00396 ELSE 00397 WRITE (UNIT=CLMESS,FMT= 00398 S '(''1 N.O.Z. MAX/PARALL. HORS PLAGE, UNITE'',I3)') KNUMER 00399 ENDIF 00400 C 00401 ELSEIF (KCODE.EQ.-77) THEN 00402 C 00403 IF (KNUMER.EQ.FA%JPNIIL) THEN 00404 CLMESS='LISTE NOZMAX/PARALL. INCORRECTE, CADRE "' 00405 S //CDACTI(1:ILACT2)//'"' 00406 ELSE 00407 WRITE (UNIT=CLMESS,FMT= 00408 S '(''LISTE NOZMAX/PARALL. INCORRECTE, UNITE'',I3)') KNUMER 00409 ENDIF 00410 C 00411 ELSEIF (KCODE.EQ.-78) THEN 00412 C 00413 IF (KNUMER.EQ.FA%JPNIIL) THEN 00414 CLMESS='INCONSISTANCE NOZMAX/NB. POINTS, CADRE "' 00415 S //CDACTI(1:ILACT2)//'"' 00416 ELSE 00417 WRITE (UNIT=CLMESS,FMT= 00418 S '(''INCONSISTANCE NOZMAX/NB. POINTS, UNITE'',I3)') KNUMER 00419 ENDIF 00420 C 00421 ELSEIF (KCODE.EQ.-79) THEN 00422 C 00423 IF (KNUMER.EQ.FA%JPNIIL) THEN 00424 CLMESS='INCONSISTANCE NB.LAT/TRONCATURE, CADRE "' 00425 S //CDACTI(1:ILACT2)//'"' 00426 ELSE 00427 WRITE (UNIT=CLMESS,FMT= 00428 S '(''INCONSISTANCE NB.LAT/TRONCATURE, UNITE'',I3)') KNUMER 00429 ENDIF 00430 C 00431 ELSEIF (KCODE.EQ.-80) THEN 00432 C 00433 IF (KNUMER.EQ.FA%JPNIIL) THEN 00434 CLMESS='FONC. COORD. HYBRIDE HORS [0,1], CADRE "' 00435 S //CDACTI(1:ILACT2)//'"' 00436 ELSE 00437 WRITE (UNIT=CLMESS,FMT= 00438 S '(''FONC. COORD. HYBRIDE HORS [0,1], UNITE'',I3)') KNUMER 00439 ENDIF 00440 C 00441 ELSEIF (KCODE.EQ.-81) THEN 00442 C 00443 IF (KNUMER.EQ.FA%JPNIIL) THEN 00444 C***** FAZZZZ - fonc. coord. hybride inadaptees, CADRE "0123456789ABCDEF" ***** 00445 CLMESS='FONC. COORD. HYBRIDE INADAPTEES, CADRE "' 00446 S //CDACTI(1:ILACT2)//'"' 00447 ELSE 00448 WRITE (UNIT=CLMESS,FMT= 00449 S '(''FONC. COORD. HYBRIDE INADAPTEES, UNITE'',I3)') KNUMER 00450 ENDIF 00451 C 00452 ELSEIF (KCODE.EQ.-82) THEN 00453 C 00454 IF (CDNSPR.EQ.'FANDAR') THEN 00455 C***** FAZZZZ - La DATE proposee a un contenu incorrect, UNITEiii ***** 00456 WRITE (UNIT=CLMESS,FMT= 00457 S '(''LA DATE PROPOSEE A UN CONTENU INCORRECT, UNITE'',I3)') 00458 S KNUMER 00459 ELSE 00460 WRITE (UNIT=CLMESS,FMT= 00461 S '(''L''''ARTICLE DATE A UN CONTENU INCORRECT, UNITE'',I3)') 00462 S KNUMER 00463 ENDIF 00464 C 00465 ELSEIF (KCODE.EQ.-83) THEN 00466 C 00467 IF (KNUMER.EQ.FA%JPNIIL) THEN 00468 C***** FAZZZZ - Nb. Max. longitu. hors [1-iiii], CADRE "0123456789abcdef" ***** 00469 WRITE (UNIT=CLMESS,FMT='(''NB. MAX. LONGITU. HORS [1-' 00470 ', S I4,''], CADRE "'',A,''"'')') 00471 S FA%NXLONG,CDACTI(1:ILACT2) 00472 ELSE 00473 WRITE (UNIT=CLMESS,FMT='(''NB. MAX. LONGITU. HORS [1-' 00474 ', S I4,''], UNITE'',I3)') FA%NXLONG,KNUMER 00475 ENDIF 00476 C 00477 ELSEIF (KCODE.EQ.-84) THEN 00478 C 00479 IF (KNUMER.EQ.FA%JPNIIL) THEN 00480 CLMESS='INCONSISTANCE KNXLON/TRONCATURE, CADRE "' 00481 S //CDACTI(1:ILACT2)//'"' 00482 ELSE 00483 WRITE (UNIT=CLMESS,FMT= 00484 S '(''INCONSISTANCE KNXLON/TRONCATURE, UNITE'',I3)') KNUMER 00485 ENDIF 00486 C 00487 ELSEIF (KCODE.EQ.-85) THEN 00488 WRITE (UNIT=CLMESS,FMT='(''UNITE' 00489 ',I3, S '' PAS ENCORE MUNIE D''''UNE DATE'')') KNUMER 00490 C 00491 ELSEIF (KCODE.EQ.-86) THEN 00492 WRITE (UNIT=CLMESS,FMT= 00493 S '(''PREFIXE/SUFFIXE BLANC INTERDIT, UNITE'',I3)') KNUMER 00494 C 00495 ELSEIF (KCODE.EQ.-87) THEN 00496 WRITE (UNIT=CLMESS,FMT= 00497 S '(''PREFIXE DE CHAMP TROP LONG, UNITE'',I3)') KNUMER 00498 C 00499 ELSEIF (KCODE.EQ.-88) THEN 00500 WRITE (UNIT=CLMESS,FMT= 00501 S '(''TRONCATURE <= SOUS-TRONCATURE "NON COMPACTEE", UNITE'',I3)') 00502 S KNUMER 00503 C 00504 ELSEIF (KCODE.EQ.-89) THEN 00505 WRITE (UNIT=CLMESS,FMT='(''ARTICLE-CHAMP "' 00506 ',A, S ''" INEXISTANT, UNITE'',I3)') CDACTI(1:ILACT2),KNUMER 00507 C 00508 ELSEIF (KCODE.EQ.-90) THEN 00509 WRITE (UNIT=CLMESS,FMT='(''ARTICLE-CHAMP "' 00510 ',A, S ''" TROP LONG, UNITE'',I3)') CDACTI(1:ILACT2),KNUMER 00511 C 00512 ELSEIF (KCODE.EQ.-91) THEN 00513 C***** FAZZZZ - Entete d'article "0123456789abcdef" incorrect, uniteiii ***** 00514 WRITE (UNIT=CLMESS,FMT='(''ENTETE D''''ARTICLE "' 00515 ',A, S ''" INCORRECT, UNITE'',I3)') CDACTI(1:ILACT2),KNUMER 00516 C 00517 ELSEIF (KCODE.EQ.-92) THEN 00518 C***** FAZZZZ - Desaccord Csp./pdg., Article "0123456789abcdef", uniteiii ***** 00519 WRITE (UNIT=CLMESS, 00520 S FMT='(''DESACCORD CSP./PDG., ARTICLE "' 00521 ',A, S ''" , UNITE'',I3)') CDACTI(1:ILACT2),KNUMER 00522 C 00523 ELSEIF (KCODE.EQ.-93) THEN 00524 WRITE (UNIT=CLMESS,FMT='(''ARTICLE "' 00525 ',A, S ''" TROP *COURT* SUR L''''UNITE'',I3)') 00526 S CDACTI(1:ILACT2),KNUMER 00527 C 00528 ELSEIF (KCODE.EQ.-94) THEN 00529 WRITE (UNIT=CLMESS,FMT='(''ARTICLE "' 00530 ',A, S ''" TROP *LONG* SUR L''''UNITE'',I3)') 00531 S CDACTI(1:ILACT2),KNUMER 00532 C 00533 ELSEIF (KCODE.EQ.-95) THEN 00534 C***** FAZZZZ - inconsis entete/GRIB article "0123456789abcdef", uniteiii ***** 00535 WRITE (UNIT=CLMESS, 00536 S FMT='(''INCONSIS ENTETE/GRIB ARTICLE "' 00537 ', S ''", UNITE'',I3)') 00538 S CDACTI(1:ILACT2),KNUMER 00539 C 00540 ELSEIF (KCODE.EQ.-96) THEN 00541 C 00542 IF (KNUMER.EQ.FA%JPNIIL) THEN 00543 CLMESS='NIVEAU IMPLICITE DE CODAGE GRIB TROP GRAND' 00544 ELSE 00545 WRITE (UNIT=CLMESS,FMT= 00546 S '(''NIVEAU DE CODAGE GRIB TROP GRAND, UNITE'',I3)') KNUMER 00547 ENDIF 00548 C 00549 ELSEIF (KCODE.EQ.-97) THEN 00550 C 00551 IF (KNUMER.EQ.FA%JPNIIL) THEN 00552 WRITE (UNIT=CLMESS,FMT= 00553 S '(''NOMBRE(S) IMPLICITE(S) DE BITS PAR VALEUR > MAXI (' 00554 ',I2, S '')'')') FA%NBIMAX 00555 ELSE 00556 WRITE (UNIT=CLMESS,FMT= 00557 S '(''NOMBRE(S) DE BITS PAR VALEUR > MAXI ('',I2,''), UNITE' 00558 ', S I3)') FA%NBIMAX,KNUMER 00559 ENDIF 00560 C 00561 ELSEIF (KCODE.EQ.-98) THEN 00562 C 00563 IF (KNUMER.EQ.FA%JPNIIL) THEN 00564 CLMESS= 00565 S 'PUISSANCE IMPLICITE DE LAPLACIEN TROP GRANDE' 00566 ELSE 00567 WRITE (UNIT=CLMESS,FMT= 00568 S '(''PUISSANCE DE LAPLACIEN TROP GRANDE, UNITE'',I3)') 00569 S KNUMER 00570 ENDIF 00571 C 00572 ELSEIF (KCODE.EQ.-99) THEN 00573 C 00574 IF (CDNSPR.EQ.'FARFLU') THEN 00575 CLMESS= 00576 S 'TRONCATURE MAX INFERIEURE OU = SOUS-TRONCATURE IMPLICITE' 00577 ELSEIF (KNUMER.EQ.FA%JPNIIL) THEN 00578 CLMESS= 00579 S 'SS-TRONCATURE IMPLICITE SUPERIEURE OU = A UNE TRONCATURE' 00580 ELSE 00581 WRITE (UNIT=CLMESS,FMT= 00582 S '(''SOUS-TRONCATURE SUPERIEURE OU = A LA TRONCATURE, UNITE' 00583 ', S I3)') KNUMER 00584 ENDIF 00585 C 00586 ELSEIF (KCODE.EQ.-100) THEN 00587 C 00588 IF (KNUMER.EQ.FA%JPNIIL) THEN 00589 CLMESS='SIN/COS POLE PROJEC. HORS [-1,1], CADRE "' 00590 S //CDACTI(1:ILACT2)//'"' 00591 ELSE 00592 WRITE (UNIT=CLMESS,FMT= 00593 S '(''SINUS/COSINUS DU POLE DE PROJECTION HORS [-1,1], UNITE' 00594 ', S I3)') KNUMER 00595 ENDIF 00596 C 00597 ELSEIF (KCODE.EQ.-101) THEN 00598 C 00599 IF (KNUMER.EQ.FA%JPNIIL) THEN 00600 CLMESS='INCOHERENCE COS/SIN LONGIT. POLE, CADRE "' 00601 S //CDACTI(1:ILACT2)//'"' 00602 ELSE 00603 WRITE (UNIT=CLMESS,FMT= 00604 S '(''INCOHERENCE COS/SIN LONGITUDE POLE PROJECTION, UNITE' 00605 ', S I3)') KNUMER 00606 ENDIF 00607 C 00608 ELSEIF (KCODE.EQ.-102) THEN 00609 C 00610 IF (KNUMER.EQ.FA%JPNIIL) THEN 00611 CLMESS='SINUS D''UNE LATITUDE HORS [-1,1], CADRE "' 00612 S //CDACTI(1:ILACT2)//'"' 00613 ELSE 00614 WRITE (UNIT=CLMESS,FMT= 00615 S '(''SINUS D''''UNE LATITUDE DE LA GRILLE HORS [-1,1], UNITE' 00616 ', S I3)') KNUMER 00617 ENDIF 00618 C 00619 ELSEIF (KCODE.EQ.-103) THEN 00620 C 00621 IF (KNUMER.EQ.FA%JPNIIL) THEN 00622 C***** FAZZZZ - sinus latitudes non decroissants, cadre '0123456789abcdef" ***** 00623 CLMESS='SINUS LATITUDES NON DECROISSANTS, CADRE "' 00624 S //CDACTI(1:ILACT2)//'"' 00625 ELSE 00626 WRITE (UNIT=CLMESS,FMT= 00627 S '(''SINUS DES LATITUDES NON DECROISSANTS, UNITE' 00628 ', S I3)') KNUMER 00629 ENDIF 00630 C 00631 ELSEIF (KCODE.EQ.-104) THEN 00632 C 00633 CLMESS= 00634 S 'TRONCATURE MAXI INCOMPATIBLE AVEC CADRE(S) DEJA DEFINI(S)' 00635 C 00636 ELSEIF (KCODE.EQ.-105) THEN 00637 C 00638 CLMESS= 00639 S 'NB MAX NIVEAUX VERTICAUX/CADRE(S) DEFINI(S) INCOMPATIBLES' 00640 C 00641 ELSEIF (KCODE.EQ.-106) THEN 00642 C 00643 CLMESS= 00644 S 'NOMBRE MAXI DE LATITUDES/CADRE(S) DEFINI(S) INCOMPATIBLES' 00645 C 00646 ELSEIF (KCODE.EQ.-107) THEN 00647 C 00648 CLMESS= 00649 S 'NOMBRE MAX DE LONGITUDES/CADRE(S) DEFINI(S) INCOMPATIBLES' 00650 C 00651 ELSEIF (KCODE.EQ.-108) THEN 00652 C 00653 C***** FAZZZZ - Pression de reference aberrante, cadre "0123456789abcdef" ***** 00654 IF (KNUMER.EQ.FA%JPNIIL) THEN 00655 CLMESS='PRESSION DE REFERENCE ABERRANTE, CADRE "' 00656 S //CDACTI(1:ILACT2)//'"' 00657 ELSE 00658 WRITE (UNIT=CLMESS,FMT= 00659 S '(''PRESSION DE REFERENCE ABERRANTE, UNITE'',I3)') 00660 S KNUMER 00661 ENDIF 00662 C 00663 ELSEIF (KCODE.EQ.-109) THEN 00664 C 00665 IF (KNUMER.EQ.FA%JPNIIL) THEN 00666 WRITE (UNIT=CLMESS, 00667 S FMT='(''TYPE TRANSFO HORIZ. HORS [1-' 00668 ', S I2,''], CADRE "'',A,''"'')') 00669 S FA%NTYPTX,CDACTI(1:ILACT2) 00670 ELSE 00671 WRITE (UNIT=CLMESS, 00672 S FMT='(''TYPE TRANSFO HORIZ. HORS [1-' 00673 ', S I2,''], UNITE'',I3)') FA%NTYPTX,KNUMER 00674 ENDIF 00675 C 00676 ELSEIF (KCODE.EQ.-110) THEN 00677 WRITE (UNIT=CLMESS,FMT= 00678 S '(''PAS D''''ARTICLE DERRIERE CEUX DU CADRE, UNITE'',I3)') 00679 S KNUMER 00680 C 00681 ELSEIF (KCODE.EQ.-111) THEN 00682 WRITE (UNIT=CLMESS,FMT= 00683 S '(''NOM RESERVE, NE PEUT ETRE UTILISE AINSI, UNITE'',I3)') 00684 S KNUMER 00685 C 00686 ELSEIF (KCODE.EQ.-112) THEN 00687 INUME1=KNUMER/1000 00688 INUME2=MOD (KNUMER,1000) 00689 WRITE (UNIT=CLMESS, 00690 S FMT='(''COPIE DE '''''',A,'''''': UNITES' 00691 ', S I3,'' ET'',I3,'' INCOMPATIBLES'')') CDACTI(1:ILACT2), 00692 S INUME1,INUME2 00693 C 00694 ELSEIF (KCODE.EQ.-113) THEN 00695 CLMESS= 00696 S 'SS-TRONCATURE IMPLICITE SUPERIEURE OU = A TRONCATURE MAXI' 00697 C 00698 ELSEIF (KCODE.EQ.-114) THEN 00699 CLMESS= 00700 S 00701 'RATIO DES TRONCATURES HORIZ. (VERSION LAM) SUPERIEUR A 3: S GARDE-FOU, MODIFIABLE DANS FARCIS+FACSIM' 00702 C 00703 ELSEIF (KCODE.EQ.-115) THEN 00704 IF (KNUMER.EQ.FA%JPNIIL) THEN 00705 CLMESS='KNXLON<(-2*KTYPTR+1), CADRE "' 00706 S //CDACTI(1:ILACT2)//'"' 00707 ELSE 00708 WRITE (UNIT=CLMESS,FMT= 00709 S '(''KNXLON<(-2*KTYPTR+1), UNITE'',I3)') KNUMER 00710 ENDIF 00711 C 00712 ELSEIF (KCODE.EQ.-116) THEN 00713 IF (KNUMER.EQ.FA%JPNIIL) THEN 00714 CLMESS='KNXLON<(2*KTRONC+1), CADRE "' 00715 S //CDACTI(1:ILACT2)//'"' 00716 ELSE 00717 WRITE (UNIT=CLMESS,FMT= 00718 S '(''KNXLON<(2*KTRONC+1), UNITE'',I3)') KNUMER 00719 ENDIF 00720 C 00721 ELSEIF (KCODE.EQ.-117) THEN 00722 C 00723 IF (KNUMER.EQ.FA%JPNIIL) THEN 00724 CLMESS='INDICATEUR DE DOMAINE HORS [-1,1], CADRE "' 00725 S //CDACTI(1:ILACT2)//'"' 00726 ELSE 00727 WRITE (UNIT=CLMESS,FMT= 00728 S '(''INDICATEUR DE DOMAINE HORS [-1,1], UNITE' 00729 ', S I3)') KNUMER 00730 ENDIF 00731 C 00732 ELSEIF (KCODE.EQ.-118) THEN 00733 C 00734 IF (KNUMER.EQ.FA%JPNIIL) THEN 00735 CLMESS= 00736 S 'INDICE DE DEPART EN LONGITUDE HORS [1,KNXLON], CADRE "' 00737 S //CDACTI(1:ILACT2)//'"' 00738 ELSE 00739 WRITE (UNIT=CLMESS,FMT= 00740 S '(''INDICE DE DEPART EN LONGITUDE HORS [1,KNXLON], UNITE' 00741 ', S I3)') KNUMER 00742 ENDIF 00743 C 00744 ELSEIF (KCODE.EQ.-119) THEN 00745 C 00746 IF (KNUMER.EQ.FA%JPNIIL) THEN 00747 CLMESS='INDICE DE FIN EN LONGITUDE ERRONE, CADRE "' 00748 S //CDACTI(1:ILACT2)//'"' 00749 ELSE 00750 WRITE (UNIT=CLMESS,FMT= 00751 S '(''INDICE DE FIN EN LONGITUDE ERRONE, UNITE' 00752 ', S I3)') KNUMER 00753 ENDIF 00754 C 00755 ELSEIF (KCODE.EQ.-120) THEN 00756 C 00757 IF (KNUMER.EQ.FA%JPNIIL) THEN 00758 CLMESS= 00759 S 'INDICE DE DEPART EN LATITUDE HORS [1,KNLATI], CADRE "' 00760 S //CDACTI(1:ILACT2)//'"' 00761 ELSE 00762 WRITE (UNIT=CLMESS,FMT= 00763 S '(''INDICE DE DEPART EN LATITUDE HORS [1,KNLATI], UNITE' 00764 ', S I3)') KNUMER 00765 ENDIF 00766 C 00767 ELSEIF (KCODE.EQ.-121) THEN 00768 C 00769 IF (KNUMER.EQ.FA%JPNIIL) THEN 00770 CLMESS='INDICE DE FIN EN LATITUDE ERRONE, CADRE "' 00771 S //CDACTI(1:ILACT2)//'"' 00772 ELSE 00773 WRITE (UNIT=CLMESS,FMT= 00774 S '(''INDICE DE FIN EN LATITUDE ERRONE, UNITE' 00775 ', S I3)') KNUMER 00776 ENDIF 00777 C 00778 ELSEIF (KCODE.EQ.-122) THEN 00779 C 00780 IF (KNUMER.EQ.FA%JPNIIL) THEN 00781 CLMESS='ZONE DE RELAXATION TROP LARGE '// 00782 S 'EN LONGITUDE, CADRE "' 00783 S //CDACTI(1:ILACT2)//'"' 00784 ELSE 00785 WRITE (UNIT=CLMESS,FMT= 00786 S '(''ZONE DE RELAXATION TROP LARGE EN LONGITUDE, UNITE' 00787 ', S I3)') KNUMER 00788 ENDIF 00789 C 00790 ELSEIF (KCODE.EQ.-123) THEN 00791 C 00792 IF (KNUMER.EQ.FA%JPNIIL) THEN 00793 CLMESS='ZONE DE RELAXATION TROP LARGE '// 00794 S 'EN LATITUDE, CADRE "' 00795 S //CDACTI(1:ILACT2)//'"' 00796 ELSE 00797 WRITE (UNIT=CLMESS,FMT= 00798 S '(''ZONE DE RELAXATION TROP LARGE EN LATITUDE, UNITE' 00799 ', S I3)') KNUMER 00800 ENDIF 00801 C 00802 ELSEIF (KCODE.EQ.-124) THEN 00803 CLMESS= 00804 S 'NB DE BITS POUR CODER NUL' 00805 C 00806 ELSEIF (KCODE.EQ.-125) THEN 00807 CLMESS= 00808 S 'ARGUMENT AYANT UNE VALEUR INCORRECTE' 00809 C 00810 ELSEIF (KCODE.EQ.-126) THEN 00811 CLMESS= 00812 S 'INCOHERENCE DANS UN CONTROLE INTERNE' 00813 C 00814 ELSEIF (KCODE.EQ.-127) THEN 00815 CLMESS= 00816 S 'INCOHERENCE DANS LE CONTROLE DE L''ELLIPSE' 00817 C 00818 ELSEIF (KCODE.EQ.-128) THEN 00819 CLMESS= 00820 S 'MESSAGE GRIB INCORRECT POUR DECF10' 00821 C 00822 ELSEIF (KCODE.LT.-1000) THEN 00823 CLMESS= 00824 S 'ERREUR RAPPORTEE PAR GRIBEX (cf manuel, avec kret=-krep-1000)' 00825 C 00826 ELSEIF (KNUMER.EQ.FA%JPNIIL) THEN 00827 WRITE (UNIT=CLMESS,FMT='(''ERREUR GLOBALE NUMERO'',I6)') 00828 S KCODE 00829 C 00830 ELSE 00831 WRITE (UNIT=CLMESS,FMT='(''ERREUR GRIB' 00832 ',I6, S '' SUR UNITE LOGIQUE'',I3)') 200+KCODE,KNUMER 00833 ENDIF 00834 C 00835 ILMESA=LEN (CLMESA) 00836 ILMESU=ILMESA-1-2*LEN (CLJOLI)-ILNSPR-4 00837 CLMESA=CLJOLI//' '//CDNSPR(1:ILNSPR)//' - '//CLMESS(1:ILMESU) 00838 S //CLJOLI 00839 WRITE (UNIT=FA%NULOUT,FMT='(A)') CLMESA 00840 C 00841 WRITE (UNIT=FA%NULOUT,FMT=*) CLMESA 00842 IF (LDFATA.AND.KCODE.NE.0) THEN 00843 CALL SDL_SRLABORT 00844 ENDIF 00845 C 00846 ENDIF 00847 C 00848 IF (LHOOK) CALL DR_HOOK('FAIPAR_MT',1,ZHOOK_HANDLE) 00849 END 00850