SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/XRD38/FA/mt/faitou_mt.F
Go to the documentation of this file.
00001 C Jan-2011 P. Marguinaud Thread-safe FA
00002       SUBROUTINE FAITOU_MT (FA,  KREP, KNUMER, LDNOMM, CDNOMF, CDSTTU, 
00003      S                      LDERFA, LDIMST, KNIMES, KNBARP, KNBARI, 
00004      S                      CDNOMC )
00005       USE FA_MOD, ONLY : FA_COM
00006       USE PARKIND1, ONLY : JPRB
00007       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
00008 C****
00009 C        Sous-programme d'OUVERTURE d'une unite logique "Fichier ARPEGE"
00010 C     Il s'agit d'un fichier indexe, traite par le logiciel LFI.
00011 C
00012 C**
00013 C     ARGUMENTS : Ce sont les memes que pour "LFIOUV", avec CDNOMC comme
00014 C                 argument supplementaire.
00015 C
00016 C                 KREP   (Sortie) ==> Code-reponse du sous-programme;
00017 C                 KNUMER (Entree) ==> Numero de l'unite logique;
00018 C                 LDNOMM (Entree) ==> Vrai si l'unite logique doit etre
00019 C                                     associee a un NOM de Fichier EXP-
00020 C                                     LICITE lors de l'"OPEN" FORTRAN;
00021 C                 CDNOMF (Entree) ==> Nom de fichier explicite, si
00022 C                                     *LDNOMM* est VRAI - Meme si ce
00023 C                                     n'est pas le cas, ce *DOIT* ETRE
00024 C                                     UN OBJET DE TYPE "CHARACTER" .
00025 C                 CDSTTU (Entree) ==> "STATUS" pour l'"OPEN" FORTRAN
00026 C                                     ('OLD','NEW','UNKNOWN','SCRATCH')
00027 C                                     par defaut, mettre 'UNKNOWN';
00028 C                 LDERFA (Entree) ==> Option d'erreur fatale;
00029 C                 LDIMST (Entree) ==> Option impression de Statistiques
00030 C                                     au moment de la fermeture;
00031 C                 KNIMES (Entree) ==> Niveau de la Messagerie (0,1 ou 2)
00032 C                                     ( 0==>Rien, 2==>Tout )
00033 C                 KNBARP (Entree) ==> Nombre d'articles logiques prevus,
00034 C                                     ce qui n'est utilise que lors de
00035 C                                     la Creation du fichier,
00036 C                                     et qui n'empeche quand meme pas
00037 C                                     d'avoir plus d'articles logiques;
00038 C                 KNBARI (Sortie) ==> Nombre d'articles logiques de don-
00039 C                                     nees sur le fichier, initialement.
00040 C                                     (zero si creation)
00041 C                 CDNOMC (Entree) ==> Nom du CADRE associe au fichier.
00042 C*
00043 C     N.B. :  Pour un fichier en mode creation, ce cadre doit avoir ete
00044 C          defini au prealable (via le sous-programme FACADE, ou par
00045 C          l'ouverture d'un fichier preexistant).
00046 C             Pour un fichier ARPEGE preexistant, le cadre est lu sur le
00047 C          fichier; s'il etait deja defini auparavant, il y a controle
00048 C          de coherence entre les deux versions du cadre.
00049 C
00050 #include "precision.h"
00051 C
00052 C
00053       TYPE(FA_COM) :: FA
00054       INTEGER KREP, KNUMER, KNIMES, KNBARP, KNBARI
00055 C
00056       CHARACTER CPNOMD*(*)
00057       PARAMETER ( CPNOMD='%%%%% FICHIER SANS NOM %%%%%' )
00058 C
00059       INTEGER IRANG, INUMER, IRANMS, IREPOU, ILNOMC, ILOMIN, IREP, J
00060       INTEGER INBARP, IRANER, IRANGC, INPAHE, INLATI, ISULEI, INPIND
00061       INTEGER INPGEO, INIVER, ILONGA, ITRONC, ILACTI, INIMES, INXLON
00062       INTEGER ITYPTR, IPHASE, IGARDE, IPOSEX, IPUILA
00063 C
00064       INTEGER IDIMEN (FA%JPCADI), IRDPOL (FA%JPXPAH+FA%JPXIND)
00065       INTEGER IDATEF (FA%JPLDAT)
00066       INTEGER (KIND=JPDBLE) ILDIMEN(FA%JPCADI),
00067      S                      ILRDPOL(FA%JPXPAH+FA%JPXIND)
00068       INTEGER (KIND=JPDBLE) ILPNVER, ILDATEF(FA%JPLDAT)
00069 C
00070       REAL (KIND=JPDBLR) ZCHMID (FA%JPCAFS), ZSINLA (FA%JPXGEO)
00071       REAL (KIND=JPDBLR) ZHYBRI (0:(1+FA%JPXNIV)*2)
00072 C
00073       LOGICAL LDNOMM, LDERFA, LDIMST, LLVERG, LLNOUF, LLNOUC, LLRLFI
00074       LOGICAL LLMODC, LLREDF, LLMODA, LLMLAM
00075 C
00076       CHARACTER CDNOMF*(*), CDSTTU*(*), CDNOMC*(*)
00077 C
00078 #include "facom2.h"
00079 #include "facom_mt.h"
00080 C**
00081 C     1.  -  CONTROLES DIVERS, ET OUVERTURE DU FICHIER AU SENS "LFI".
00082 C-----------------------------------------------------------------------
00083 C
00084 C     Controle sommaire sur les arguments...le reste est "sous-traite"
00085 C     au sous-programme LFIOUV.
00086 C
00087       REAL(KIND=JPRB) :: ZHOOK_HANDLE
00088       IF (LHOOK) CALL DR_HOOK('FAITOU_MT',0,ZHOOK_HANDLE)
00089       IRANG=0
00090       IRANER=0
00091       IRANMS=0
00092       IREPOU=FA%JPNIIL
00093       LLRLFI=.FALSE.
00094       LLVERG=.FALSE.
00095       ILNOMC=LEN (CDNOMC)
00096       ILOMIN=MIN ( LEN (CDNOMF), LEN (CDSTTU), ILNOMC)
00097 C
00098 C        L'appel ci-dessous est legerement anticipe, de maniere a
00099 C     initialiser les variables globales du logiciel s'il s'agit
00100 C     du premier appel a un sous-programme de ce logiciel.
00101 C
00102       CALL FANUMU_MT (FA, KNUMER,IRANG)
00103 C
00104       IF (ILOMIN.LE.0) THEN
00105         IREP=-65
00106         GOTO 1001
00107       ELSEIF (IRANG.NE.0) THEN
00108 C
00109 C            Controle de non-ouverture prealable (au sens du logiciel)
00110 C
00111         IREP=-55
00112         IRANMS=IRANG
00113         GOTO 1001
00114       ENDIF
00115 C
00116 C             Verrouillage global, si necessaire.
00117 C
00118       IF (FA%LFAMUL) CALL LFIVER_MT (FA%LFI, FA%VRGLAS,'ON')
00119       LLVERG=FA%LFAMUL
00120 C
00121 C        A-t-on deja atteint le nombre limite de fichiers ARPEGE
00122 C     ouverts simultanement ? Si non, on cherche un emplacement libre
00123 C     dans la table FA%NULOGI (logiquement, il devrait en exister un)
00124 C
00125       IF (FA%NFIOUV.GE.FA%JPNXFA) THEN
00126         IREP=-56
00127         GOTO 1001
00128       ELSE
00129 C
00130         DO 101 J=1,FA%JPNXFA
00131 C
00132         IF (FA%NULOGI(J).EQ.FA%JPNIIL) THEN
00133           IRANG=J
00134           GOTO 102
00135         ENDIF
00136 C
00137   101   CONTINUE
00138 C
00139         IREP=-66
00140         GOTO 1001
00141 C
00142   102   CONTINUE
00143 C
00144       ENDIF
00145 C
00146 C              Ouverture du fichier au sens du logiciel LFI.
00147 C     (on ajoute au nombre d'articles prevus par l'utilisateur les
00148 C      articles constituant le cadre, la date et l'identificateur)
00149 C
00150       INBARP=KNBARP+7
00151       CALL LFIOUV_MT (FA%LFI, IREPOU,KNUMER,LDNOMM,CDNOMF,CDSTTU,
00152      S             LDERFA,LDIMST,
00153      S             KNIMES,INBARP,KNBARI)
00154 C
00155       IF (IREPOU.NE.0.AND.IREPOU.NE.-11) THEN
00156         IREP=IREPOU
00157         LLRLFI=.TRUE.
00158         GOTO 1001
00159       ENDIF
00160 C**
00161 C     2.  -  CONTROLES SPECIFIQUES AU LOGICIEL DE FICHIERS ARPEGE.
00162 C-----------------------------------------------------------------------
00163 C
00164       LLNOUF=KNBARI.EQ.0
00165       CALL FANUCA_MT (FA, CDNOMC,IRANGC,.FALSE.)
00166       LLNOUC=IRANGC.EQ.0
00167 C
00168       IF (LLNOUF) THEN
00169 C
00170         IF (LLNOUC) THEN
00171           IREP=-57
00172           GOTO 1001
00173         ELSE
00174 C
00175 C         Fichier en mode creation et cadre predefini... OK a ce niveau.
00176 C
00177 C       On ecrit les articles definissant le cadre sur le fichier,
00178 C     ainsi qu'un article ayant pour nom l'identificateur "par defaut",
00179 C     (en fait, le nom du cadre) de maniere a ce que cet article soit
00180 C     sequentiellement celui qui suit le dernier article du cadre.
00181 C
00182           LLMLAM=FA%LIMLAM(IRANGC)
00183 C          
00184           IDIMEN(1)=FA%MTRONC(IRANGC)
00185           INLATI=FA%NLATIT(IRANGC)
00186           IF (.NOT.LLMLAM) THEN
00187              INPAHE=(1+INLATI)/2
00188           ELSE
00189              INPAHE=8
00190              ISULEI=FA%NOZPAR(1,IRANGC)
00191 C
00192              INPIND=2*ISULEI+4
00193              INPGEO=18
00194           ENDIF                   
00195           IDIMEN(2)=INLATI
00196           IDIMEN(3)=FA%NXLOPA(IRANGC)
00197           INIVER=FA%NNIVER(IRANGC)
00198           IDIMEN(4)=INIVER
00199           IDIMEN(5)=FA%NTYPTR(IRANGC)
00200           ZCHMID(1)=FA%SSLAPO(IRANGC)
00201           ZCHMID(2)=FA%SCLOPO(IRANGC)
00202           ZCHMID(3)=FA%SSLOPO(IRANGC)
00203           ZCHMID(4)=FA%SCODIL(IRANGC)
00204           ZHYBRI(0)=FA%SPREFE(IRANGC)
00205           ILNOMC=FA%NLCCAD(IRANGC)
00206           CLNOMA=CDNOMC
00207 C
00208           IF (.NOT.LLMLAM) THEN
00209 C
00210              DO 201 J=1,INPAHE
00211              IRDPOL(J)=FA%NLOPAR(J,IRANGC)
00212              IRDPOL(INPAHE+J)=FA%NOZPAR(J,IRANGC)
00213              ZSINLA(J)=FA%SINLAT(J,IRANGC)
00214   201        CONTINUE
00215 C
00216           ELSE
00217              DO 211 J=1,INPGEO
00218                 ZSINLA(J)=FA%SINLAT(J,IRANGC)
00219   211        CONTINUE
00220              DO 213 J=1,INPAHE
00221                 IRDPOL(J)=FA%NLOPAR(J,IRANGC)
00222   213        CONTINUE
00223              DO 215 J=1,INPIND
00224                 IRDPOL(INPAHE+J)=FA%NOZPAR(J,IRANGC)
00225   215        CONTINUE
00226 C
00227           ENDIF
00228 C
00229           DO 202 J=0,INIVER
00230           ZHYBRI(J+1)=FA%SFOHYB(1,J,IRANGC)
00231           ZHYBRI(J+2+INIVER)=FA%SFOHYB(2,J,IRANGC)
00232   202     CONTINUE
00233 C
00234           LLRLFI=.TRUE.
00235           ILDIMEN=IDIMEN
00236           CALL LFIECR_MT(FA%LFI,IREP,KNUMER,FA%CPCADI,ILDIMEN,FA%JPCADI)
00237           IDIMEN=ILDIMEN
00238           IF (IREP.NE.0) GOTO 1001
00239 C
00240           CALL LFIECR_MT(FA%LFI,IREP,KNUMER,FA%CPCAFS,ZCHMID,FA%JPCAFS)
00241           IF (IREP.NE.0) GOTO 1001
00242 C
00243          IF (.NOT.LLMLAM) THEN
00244 C
00245              ILONGA=INPAHE*2
00246              ILRDPOL=IRDPOL
00247              CALL LFIECR_MT(FA%LFI,IREP,KNUMER,FA%CPCARP,ILRDPOL,ILONGA)
00248              IRDPOL=ILRDPOL
00249              IF (IREP.NE.0) GOTO 1001
00250 C
00251              ILONGA=INPAHE
00252              CALL LFIECR_MT(FA%LFI,IREP,KNUMER,FA%CPCASL,ZSINLA,ILONGA)
00253              IF (IREP.NE.0) GOTO 1001
00254 C
00255           ELSE
00256 C
00257              ILONGA=INPAHE+INPIND
00258              ILRDPOL=IRDPOL
00259              CALL LFIECR_MT(FA%LFI,IREP,KNUMER,FA%CPCARP,ILRDPOL,ILONGA)
00260              IRDPOL=ILRDPOL
00261              IF (IREP.NE.0) GOTO 1001
00262 C
00263              ILONGA=INPGEO
00264              CALL LFIECR_MT(FA%LFI,IREP,KNUMER,FA%CPCASL,ZSINLA,ILONGA)
00265              IF (IREP.NE.0) GOTO 1001
00266 C
00267           ENDIF
00268 C           
00269           ILONGA=1+(1+INIVER)*2
00270           CALL LFIECR_MT (FA%LFI, IREP,KNUMER,FA%CPCACH,ZHYBRI,ILONGA)
00271           IF (IREP.NE.0) GOTO 1001
00272 C
00273           ILPNVER=FA%JPNVER
00274           CALL LFIECR_MT (FA%LFI, IREP,KNUMER,
00275      S                 CLNOMA(1:ILNOMC),ILPNVER,1)
00276           IF (IREP.NE.0) GOTO 1001
00277 C
00278           LLRLFI=.FALSE.
00279           GOTO 300
00280         ENDIF
00281 C
00282       ENDIF
00283 C*
00284 C     2.1 - Fichier preexistant...lecture et controle du Cadre "Fichier"
00285 C-----------------------------------------------------------------------
00286 C
00287       CALL LFINFO_MT (FA%LFI, IREP,KNUMER,FA%CPCADI,ILONGA,IPOSEX)
00288 C
00289       IF (IREP.NE.0) THEN
00290         LLRLFI=.TRUE.
00291         GOTO 1001
00292       ELSEIF (ILONGA.EQ.0) THEN
00293         IREP=-60
00294         GOTO 1001
00295       ELSEIF (ILONGA.NE.FA%JPCADI) THEN
00296         IREP=-61
00297         GOTO 1001
00298       ENDIF
00299 C
00300       ILDIMEN=IDIMEN
00301       CALL LFILEC_MT (FA%LFI, IREP,KNUMER,FA%CPCADI,ILDIMEN,FA%JPCADI)
00302       IDIMEN=ILDIMEN
00303 C
00304       IF (IREP.NE.0) THEN
00305         LLRLFI=.TRUE.
00306         GOTO 1001
00307       ENDIF
00308 C
00309       CALL LFINFO_MT (FA%LFI, IREP,KNUMER,FA%CPCAFS,ILONGA,IPOSEX)
00310 C
00311       IF (IREP.NE.0) THEN
00312         LLRLFI=.TRUE.
00313         GOTO 1001
00314       ELSEIF (ILONGA.EQ.0) THEN
00315         IREP=-60
00316         GOTO 1001
00317       ELSEIF (ILONGA.NE.FA%JPCAFS) THEN
00318         IREP=-61
00319         GOTO 1001
00320       ENDIF
00321 C
00322       CALL LFILEC_MT (FA%LFI, IREP,KNUMER,FA%CPCAFS,ZCHMID,FA%JPCAFS)
00323 C
00324       IF (IREP.NE.0) THEN
00325         LLRLFI=.TRUE.
00326         GOTO 1001
00327       ENDIF
00328 C
00329 C        Coherence des dimensions par rapport aux valeurs "licites",
00330 C     que l'on doit faire avant de poursuivre les lectures.
00331 C
00332       IF(IDIMEN(5).LE.0) LLMLAM = .TRUE.
00333       ITRONC=IDIMEN(1)
00334       INLATI=IDIMEN(2)
00335       INPAHE=(1+INLATI)/2
00336       INXLON=IDIMEN(3)
00337       INIVER=IDIMEN(4)
00338       ITYPTR=IDIMEN(5)
00339       IPHASE=1
00340       IGARDE=1
00341       CALL FACADI_MT(FA, IREP,CDNOMC,ITYPTR,ZCHMID(1),ZCHMID(2),
00342      S               ZCHMID(3),ZCHMID(4),ITRONC,INLATI,INXLON,IRDPOL(1),
00343      S               IRDPOL(FA%JPXPAH+1),ZSINLA,
00344      S               INIVER,ZHYBRI(0),ZHYBRI(1),ZHYBRI(FA%JPXNIV+2),
00345      S               LLMODC,LLREDF,IPHASE,IRANGC,ILNOMC,IGARDE)
00346       IF (IREP.NE.0) GOTO 1001
00347 C
00348       CALL LFINFO_MT (FA%LFI, IREP,KNUMER,FA%CPCARP,ILONGA,IPOSEX)
00349 C
00350       IF (IREP.NE.0) THEN
00351         LLRLFI=.TRUE.
00352         GOTO 1001
00353       ELSEIF (ILONGA.EQ.0) THEN
00354         IREP=-60
00355         GOTO 1001
00356       ELSEIF (ILONGA.NE.INPAHE*2) THEN
00357         IF (.NOT.LLMLAM) THEN
00358            IREP=-61
00359            GOTO 1001
00360         ENDIF    
00361       ENDIF
00362 C
00363       ILRDPOL=IRDPOL
00364       CALL LFILEC_MT (FA%LFI, IREP,KNUMER,FA%CPCARP,ILRDPOL,ILONGA)
00365       IRDPOL=ILRDPOL
00366 C
00367       IF (IREP.NE.0) THEN
00368         LLRLFI=.TRUE.
00369         GOTO 1001
00370       ENDIF
00371 C
00372       CALL LFINFO_MT (FA%LFI, IREP,KNUMER,FA%CPCASL,ILONGA,IPOSEX)
00373 C
00374       IF (IREP.NE.0) THEN
00375         LLRLFI=.TRUE.
00376         GOTO 1001
00377       ELSEIF (ILONGA.EQ.0) THEN
00378         IREP=-60
00379         GOTO 1001
00380       ELSEIF (ILONGA.NE.INPAHE) THEN
00381         IF (.NOT.LLMLAM) THEN
00382            IREP=-61
00383            GOTO 1001
00384         ENDIF      
00385       ENDIF
00386 C
00387       CALL LFILEC_MT (FA%LFI, IREP,KNUMER,FA%CPCASL,ZSINLA,ILONGA)
00388 C
00389       IF (IREP.NE.0) THEN
00390         LLRLFI=.TRUE.
00391         GOTO 1001
00392       ENDIF
00393 C
00394       CALL LFINFO_MT (FA%LFI, IREP,KNUMER,FA%CPCACH,ILONGA,IPOSEX)
00395 C
00396       IF (IREP.NE.0) THEN
00397         LLRLFI=.TRUE.
00398         GOTO 1001
00399       ELSEIF (ILONGA.EQ.0) THEN
00400         IREP=-60
00401         GOTO 1001
00402       ELSEIF (ILONGA.NE.1+(1+INIVER)*2) THEN
00403         IF (.NOT.LLMLAM) THEN
00404            IREP=-61
00405            GOTO 1001
00406         ENDIF      
00407       ENDIF
00408 C
00409       CALL LFILEC_MT (FA%LFI, IREP,KNUMER,FA%CPCACH,ZHYBRI,ILONGA)
00410 C
00411       IF (IREP.NE.0) THEN
00412         LLRLFI=.TRUE.
00413         GOTO 1001
00414       ENDIF
00415 C
00416 C        Tests complementaires sur les valeurs lues.
00417 C
00418       IPHASE=2
00419       CALL FACADI_MT(FA, IREP,CDNOMC,ITYPTR,ZCHMID(1),ZCHMID(2),
00420      S               ZCHMID(3),ZCHMID(4),ITRONC,INLATI,INXLON,IRDPOL(1),
00421      S               IRDPOL(INPAHE+1),ZSINLA,
00422      S               INIVER,ZHYBRI(0),ZHYBRI(1),ZHYBRI(INIVER+2),
00423      S               LLMODC,LLREDF,IPHASE,IRANGC,ILNOMC,IGARDE)
00424       IF (IREP.NE.0) GOTO 1001
00425 C*
00426 C     2.2 - Fichier preexistant...l'identificateur du fichier est le
00427 C           premier article suivant les articles du cadre.
00428 C-----------------------------------------------------------------------
00429 C
00430       CALL LFICAS_MT (FA%LFI, IREP,KNUMER,CLNOMA,ILONGA,
00431      S                IPOSEX,.FALSE.)
00432 C
00433       IF (IREP.NE.0) THEN
00434         LLRLFI=.TRUE.
00435         GOTO 1001
00436       ELSEIF (ILONGA.EQ.0) THEN
00437         IREP=-110
00438         GOTO 1001
00439       ENDIF
00440 C
00441 C*
00442 C     2.3 - Fichier preexistant...lecture et controle de l'article DATE.
00443 C-----------------------------------------------------------------------
00444 C
00445       CALL LFINFO_MT (FA%LFI, IREP,KNUMER,FA%CPDATE,ILONGA,IPOSEX)
00446 C
00447       IF (IREP.NE.0) THEN
00448         LLRLFI=.TRUE.
00449         GOTO 1001
00450       ELSEIF (ILONGA.EQ.0) THEN
00451         IREP=-62
00452         GOTO 1001
00453       ELSEIF (ILONGA.NE.FA%JPLDAT) THEN
00454         IREP=-63
00455         GOTO 1001
00456       ENDIF
00457 C
00458       ILDATEF=IDATEF
00459       CALL LFILEC_MT (FA%LFI, IREP,KNUMER,FA%CPDATE,ILDATEF,FA%JPLDAT)
00460       IDATEF=ILDATEF
00461 C
00462       IF (IREP.NE.0) THEN
00463         LLRLFI=.TRUE.
00464         GOTO 1001
00465       ENDIF
00466 C
00467 C        La ligne ci-dessous evite a FANDAI de croire, eventuellement,
00468 C     a une redefinition de date.
00469 C
00470       FA%LCREAF(IRANG)=.TRUE.
00471 C
00472 C        Controle de la Date fichier, et stockage dans FA%MADATE.
00473 C
00474       CALL FANDAI_MT (FA, IREP,IRANG,IDATEF,LLMODA)
00475       IF (IREP.NE.0) GOTO 1001
00476 C
00477 C         Definition du Cadre proprement dite.
00478 C
00479       IPHASE=3
00480       CALL FACADI_MT(FA, IREP,CDNOMC,ITYPTR,ZCHMID(1),ZCHMID(2),
00481      S               ZCHMID(3),ZCHMID(4),ITRONC,INLATI,INXLON,IRDPOL(1),
00482      S               IRDPOL(INPAHE+1),ZSINLA,
00483      S               INIVER,ZHYBRI(0),ZHYBRI(1),ZHYBRI(INIVER+2),
00484      S               LLMODC,LLREDF,IPHASE,IRANGC,ILNOMC,IGARDE)
00485       IF (IREP.NE.0) GOTO 1001
00486 C**
00487 C     3.  -  ON MET A JOUR LES TABLES RELATIVES AUX FICHIERS.
00488 C-----------------------------------------------------------------------
00489 C
00490   300 CONTINUE
00491 C
00492       FA%NFIOUV=FA%NFIOUV+1
00493       FA%NULIND(FA%NFIOUV)=IRANG
00494       FA%NULOGI(IRANG)=KNUMER
00495       FA%NUCADR(IRANG)=IRANGC
00496 C
00497       FA%LNOMME(IRANG)=LDNOMM
00498       FA%NIVOMS(IRANG)=KNIMES
00499       FA%LERRFA(IRANG)=LDERFA
00500       FA%LCREAF(IRANG)=LLNOUF
00501       FA%NBFPDG(IRANG)=FA%NBIPDG
00502       FA%NBFCSP(IRANG)=FA%NBICSP
00503       FA%NPUFLA(IRANG)=FA%NPUILA
00504       FA%NMFDPL(IRANG)=FA%NMIDPL
00505       FA%NFGRIB(IRANG)=FA%NIGRIB
00506       FA%CIDENT(IRANG)=CLNOMA
00507       ITRONC=FA%MTRONC(IRANGC)
00508       ITYPTR=FA%NTYPTR(IRANGC)
00509 C
00510       IF (ITYPTR.LT.0) THEN
00511         FA%NSTROF(IRANG)=MIN (FA%NSTROI,ITRONC-1,-ITYPTR-1)
00512       ELSE
00513         FA%NSTROF(IRANG)=MIN (FA%NSTROI,ITRONC-1)
00514       ENDIF
00515 C
00516 C Appel a FAINOC pour interpreter les eventuels defauts
00517 C de -1 pris par FA%NBFPDG, FA%NBFCSP, FA%NSTROF et FA%NPUFLA en
00518 C IRANG-ieme position.
00519 C
00520       CALL FAINOC_MT (FA,  IRANG )
00521 C
00522       IRANER=IRANG
00523       IRANMS=IRANG
00524       IPUILA=FA%NPUFLA(IRANG)
00525 C
00526       FA%NCOGRIF(:,IRANG)=FA%NCODGRI(:)
00527       FA%NRASHO(IRANG) = 0
00528       FA%NRASVE(IRANG) = 0
00529 C
00530 C   L'initialisation de FLAP1Dx sera faite dans FACSIM
00531 C
00532       FA%LIFLAP(IRANG)=.TRUE.
00533 C
00534 C
00535       IF (FA%LFAMUL) CALL LFIVER_MT (FA%LFI, FA%VRFICH(IRANG),'ASGN')
00536 C
00537 C        On incremente le nombre de fichiers attaches au cadre specifie.
00538 C
00539       FA%NULCAD(IRANGC)=FA%NULCAD(IRANGC)+1
00540       IREP=IREPOU
00541       GOTO 1001
00542 C**
00543 C     9.  - CI-DESSOUS, ETIQUETTES DE BRANCHEMENT EN CAS D'ERREUR E/S.
00544 C-----------------------------------------------------------------------
00545 C
00546   901 CONTINUE
00547       CLACTI='INQUIRE'
00548 C
00549 C      AU CAS OU, ON FORCE LE CODE-REPONSE ENTREE/SORTIE A ETRE POSITIF.
00550 C
00551       IREP=IABS (IREP)
00552 C**
00553 C    10.  -  PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
00554 C            VIA LE SOUS-PROGRAMME "LFIEMS" .
00555 C-----------------------------------------------------------------------
00556 C
00557  1001 CONTINUE
00558       KREP=IREP
00559       LLFATA=LLMOER (IREP,IRANER)
00560 C
00561       IF (LLFATA) THEN
00562         INIMES=2
00563       ELSE
00564         INIMES=IXNVMS (IRANMS)
00565       ENDIF
00566 C
00567 C           Deverrouillage global eventuel.
00568 C
00569       IF (LLVERG) CALL LFIVER_MT (FA%LFI, FA%VRGLAS,'OFF')
00570 C
00571       IF (.NOT.LLFATA.AND.INIMES.EQ.0)  THEN 
00572         IF (LHOOK) CALL DR_HOOK('FAITOU_MT',1,ZHOOK_HANDLE)
00573         RETURN
00574       ENDIF
00575 C
00576       CLNSPR='FAITOU'
00577 C
00578       IF (INIMES.EQ.2) THEN
00579 C
00580         IF (ILNOMC.GT.0) THEN
00581           ILACTI=MIN (LEN (CLACTI),ILNOMC)
00582           CLACTI(1:ILACTI)=CDNOMC(1:ILNOMC)
00583         ELSE
00584           ILACTI=8
00585           CLACTI=FA%CHAINC(:ILACTI)
00586         ENDIF
00587 C
00588         WRITE (UNIT=CLMESS,FMT='(''KREP='',I4,'', KNUMER='
00589 ',I3,     S     '', LDNOMM= '',L1,'', CDSTTU='''''',A7,'''''', LDERFA= '
00590 ',L1,     S     '',  LDIMST= '
00591 ',L1,     S         '', KNIMES='',I2,'', KNBARP='',I6,'' KNBARI='',I6)')
00592      S   KREP,KNUMER,LDNOMM,CDSTTU,LDERFA,LDIMST,KNIMES,KNBARP,KNBARI
00593         CALL FAIPAR_MT (FA, KNUMER,INIMES,IREP,.FALSE.,CLMESS,
00594      S                  CLNSPR,CLACTI(1:ILACTI),LLRLFI)
00595         CLMESS='CDNOMC='''//CLACTI(1:ILACTI)//''''
00596         CALL FAIPAR_MT (FA, KNUMER,INIMES,IREP,LLFATA,CLMESS,
00597      S               CLNSPR,CLACTI(1:ILACTI),LLRLFI)
00598       ENDIF
00599 C
00600       IF (LHOOK) CALL DR_HOOK('FAITOU_MT',1,ZHOOK_HANDLE)
00601       END
00602