SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/XRD38/LFI/mt/lfifer_mt.F
Go to the documentation of this file.
00001 C Jan-2011 P. Marguinaud Thread-safe LFI
00002       SUBROUTINE LFIFER_MT (LFI, KREP, KNUMER, CDSTTC )
00003       USE LFIMOD, ONLY : LFICOM
00004       USE PARKIND1, ONLY : JPRB
00005       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
00006 C****
00007 C        SOUS-PROGRAMME DE FERMETURE D'UN FICHIER INDEXE AU SENS DU
00008 C     LOGICIEL DE FICHIERS INDEXES LFI.
00009 C        CETTE FERMETURE EST VITALE SI LE FICHIER A ETE MODIFIE DEPUIS
00010 C     LA DERNIERE OUVERTURE, ET EST DE TOUTE MANIERE CHAUDEMENT
00011 C     RECOMMANDEE AVANT DE SORTIR DU PROGRAMME UTILISATEUR.
00012 C
00013 C        De maniere generale, il vaut mieux fermer une unite logique
00014 C     des que l'on n'en a plus besoin, de maniere a ne pas bloquer un
00015 C     espace dans les tables qui pourrait faire defaut lors d'une
00016 C     ouverture ulterieure, particulierement pour un fichier "multiple"
00017 C     qui a besoin d'espace CONTIGU dans les tables des unites logiques.
00018 C     Par ailleurs, tout fichier ouvert (au sens FORTRAN du terme cette
00019 C     fois) "occupe" generalement un morceau de la memoire du programme.
00020 C**
00021 C    ARGUMENTS : KREP   (SORTIE) ==> CODE-REPONSE DU SOUS-PROGRAMME;
00022 C                KNUMER (ENTREE) ==> LFI%NUMERO DE L'UNITE LOGIQUE;
00023 C                CDSTTC (ENTREE) ==> "STATUS" EVENTUEL POUR "CLOSE".
00024 C
00025 C    Modifications:
00026 C
00027 C    02/06/97, Jean Clochard.
00028 C
00029 C              -Modification des impressions pour que l'annee puisse
00030 C               etre imprimee avec 4 chiffres.
00031 C
00032 #ifndef f77
00033 #include "precision.h"
00034 #endif
00035 C
00036       TYPE(LFICOM) :: LFI
00037       CHARACTER CDSTTC*(*), CLSTTC*(LFI%JPLSTX), CLAUXI*3
00038 C
00039 #ifndef f77
00040       INTEGER (KIND=JPDBLE) ITAMPO (LFI%JPLARX)
00041 #else
00042       INTEGER ITAMPO (LFI%JPLARX)
00043 #endif
00044       INTEGER KREP, KNUMER, IEXPLO (LFI%JPNPIA+LFI%JPNPIS)
00045       INTEGER ILSTTU, IREPX, INAPHY, IRANG, IREP, ILSTTC, IREC, INPPIM
00046       INTEGER IFACTM, ILARPH, INALPP, INBALO, INTPPI, INTRLZ, IDECAL, J
00047       INTEGER IPOTZC, IRGPFC, IRGPMC, ILFORC, INPILE, INIMES, IPOTZS, JJ
00048       INTEGER IRGPFS, IPOTZE, IRGPMS, INTCON, IPOSFE, JNPAGE, IRGPFE, JR
00049       INTEGER IRGPME, IRANGM, IDECDB, INBARE, IRGPC2, IRGPS2, IDECDC
00050       INTEGER INBARC, IDECDS, INBARS, INBART, INTPPN, ILOMIN, ILOMAX
00051       INTEGER IRPIFN, INPIME, IDEBEX, IRGPIM, IRGPIF, INLNOM, IDEBUT
00052       INTEGER ILONGA, INALDO, IPOSNU, IRANIE, IRETIN, IAUXIL
00053 C
00054       LOGICAL LLSTTU, LLVERF, LLVERG, LLECRD, LLIMST
00055 C
00056 #include "lficom2.h"
00057 #include "lficom_mt.h"
00058 C**
00059 C     1.  -  CONTROLES DES PARAMETRES D'APPEL, PUIS INITIALISATIONS.
00060 C-----------------------------------------------------------------------
00061 C
00062       REAL(KIND=JPRB) :: ZHOOK_HANDLE
00063       IF (LHOOK) CALL DR_HOOK('LFIFER_MT',0,ZHOOK_HANDLE)
00064       IF (LFI%LMISOP) WRITE (UNIT=LFI%NULOUT,FMT=*)'DEBUT LFIFER'
00065       CLNSPR='LFIFER'
00066       ILSTTU=MIN0 (LEN (CLSTTC), LEN (CDSTTC))
00067       CLSTTC=CDSTTC(:ILSTTU)
00068       IREPX=0
00069       INAPHY=0
00070       LLVERF=.FALSE.
00071       LLVERG=.FALSE.
00072       CALL LFINUM_MT (LFI, KNUMER,IRANG)
00073 C
00074       IF (IRANG.EQ.0) THEN
00075         IREP=-1
00076         GOTO 1001
00077       ENDIF
00078 C
00079        IF (LFI%LMULTI) CALL LFIVER_MT (LFI, LFI%VERRUE(IRANG),'ON')
00080       LLVERF=LFI%LMULTI
00081 C
00082       IF (CDSTTC.EQ.'KEEP'.AND.LFI%CSTAOP(IRANG).EQ.'SCRATCH') THEN
00083         IREP=-19
00084         LLFATA=LLMOER (IREP,IRANG)
00085 C
00086         IF (LLFATA) THEN
00087           GOTO 1001
00088         ELSE
00089 C
00090 C        SI L'ERREUR (-19) N'EST PAS FATALE, ON FERME L'UNITE LOGIQUE,
00091 C       MAIS SANS PRECISER DE DIRECTIVE "STATUS" DANS LE "CLOSE".
00092 C
00093           LLSTTU=.FALSE.
00094           GOTO 105
00095         ENDIF
00096 C
00097       ELSE
00098         LLSTTU=CDSTTC.EQ.'KEEP'.OR.CDSTTC.EQ.'DELETE'
00099 C
00100         IF (LLSTTU) THEN
00101           ILSTTC=INDEX (CDSTTC,' ')-1
00102           IF (ILSTTC.GT.0) ILSTTU=ILSTTC
00103           CLSTTC=CDSTTC(:ILSTTU)
00104         ELSE
00105           CLSTTC=LFI%CHINCO(:ILSTTU)
00106         ENDIF
00107 C
00108       ENDIF
00109 C
00110       IREP=0
00111 C
00112   105 CONTINUE
00113       IREPX=IREP
00114       INPPIM=LFI%NPPIMM(IRANG)
00115       IFACTM=LFI%MFACTM(IRANG)
00116       ILARPH=LFI%JPLARD*IFACTM
00117       INALPP=LFI%JPNAPP*IFACTM
00118       INBALO=LFI%MDES1D(IXM(LFI%JPNALO,IRANG))
00119       INTPPI=(INBALO-1+INALPP)/INALPP
00120 C**
00121 C     2.  -  TRAITEMENT D'EVENTUELS "TROUS" D'INDEX DE LONGUEUR ZERO.
00122 C            CES "PARASITES" PEUVENT AVOIR ETE CREES PAR LE RECYCLAGE
00123 C            DE TROUS DANS LE FICHIER; ON VA LES SUPPRIMER.
00124 C
00125 C         L'ALGORITHME CHOISI N'EST PEUT-ETRE PAS LE PLUS EFFICACE;
00126 C     MAIS A PARTIR DU MOMENT OU LA PROBABILITE DE GENERER DES TROUS
00127 C     DE LONGUEUR NULLE EST FAIBLE, ET OU ON NE LES RETASSE
00128 C     QU'A LA FERMETURE, IL N'Y A PAS LIEU DE RAFFINER A OUTRANCE !
00129 C-----------------------------------------------------------------------
00130 C
00131       INTRLZ=LFI%NTRULZ(IRANG)
00132       IF (INTRLZ.EQ.0) GOTO 300
00133 C
00134       IDECAL=0
00135       IPOTZC=LFI%NRFPTZ(IRANG)
00136       IRGPFC=1+(IPOTZC-1)/INALPP
00137 C*
00138 C     2.1 - MISE EN MEMOIRE DE LA PREMIERE P.A.I. AYANT UN TEL TROU.
00139 C-----------------------------------------------------------------------
00140 C
00141       DO 211 J=1,INPPIM
00142       IRGPMC=LFI%MRGPIM(J,IRANG)
00143 C
00144       IF (LFI%MRGPIF(IRGPMC).EQ.IRGPFC) THEN
00145 C
00146       IF (.NOT.LFI%LPHASP(IRGPMC)) THEN
00147 C
00148         CALL LFIPHA_MT (LFI, IREP,IRANG,IRGPMC,IRETIN)
00149 C
00150           IF (IRETIN.EQ.1) THEN
00151             GOTO 903
00152           ELSEIF (IRETIN.EQ.2) THEN
00153             GOTO 904
00154           ELSEIF (IRETIN.NE.0) THEN
00155             GOTO 1001
00156           ENDIF
00157 C
00158         ENDIF
00159 C
00160         GOTO 220
00161 C
00162       ENDIF
00163 C
00164   211 CONTINUE
00165 C
00166       ILFORC=IRGPFC+1
00167       INPILE=2
00168       CALL LFIPIM_MT (LFI, IREP,IRANG,IRANGM,IRGPMC,IRGPFC,
00169      S                ILFORC,INPILE,IRETIN)
00170 C
00171       IF (IRETIN.EQ.1) THEN
00172         GOTO 903
00173       ELSEIF (IRETIN.EQ.2) THEN
00174         GOTO 904
00175       ELSEIF (IRETIN.NE.0) THEN
00176         GOTO 1001
00177       ENDIF
00178 C
00179       INPPIM=MAX0 (INPPIM,IRANGM)
00180 C
00181   220 CONTINUE
00182 C*
00183 C     2.2 - AMORCAGE DE LA RECHERCHE DU NOMBRE DE TROUS NULS CONSECUTIFS
00184 C           ET DE L'EVENTUEL TROU NUL "SUIVANT" CE PAQUET.
00185 C-----------------------------------------------------------------------
00186 C
00187       IPOTZS=IPOTZC+IDECAL
00188       IRGPFS=1+(IPOTZS-1)/INALPP
00189       IPOTZE=IPOTZS
00190       IRGPMS=0
00191 C
00192 C       ON ELIMINE LES CAS "TRIVIAUX"
00193 C
00194       IF (INTRLZ.EQ.1.OR.IPOTZE+INTRLZ.GT.INBALO) THEN
00195         INTCON=INTRLZ
00196         IPOSFE=INBALO
00197         GOTO 250
00198       ENDIF
00199 C*
00200 C     2.3 - DECOMPTE DU NOMBRE DE TROUS NULS CONSECUTIFS.
00201 C-----------------------------------------------------------------------
00202 C
00203       DO 235 JNPAGE=IRGPFS,INTPPI
00204       IRGPFE=JNPAGE
00205 C
00206       DO 231 J=1,INPPIM
00207       IRGPME=LFI%MRGPIM(J,IRANG)
00208 C
00209       IF (LFI%MRGPIF(IRGPME).EQ.IRGPFE) THEN
00210 C
00211         IF (.NOT.LFI%LPHASP(IRGPME)) THEN
00212 C
00213           CALL LFIPHA_MT (LFI, IREP,IRANG,IRGPME,IRETIN)
00214 C
00215           IF (IRETIN.EQ.1) THEN
00216             GOTO 903
00217           ELSEIF (IRETIN.EQ.2) THEN
00218             GOTO 904
00219           ELSEIF (IRETIN.NE.0) THEN
00220             GOTO 1001
00221           ENDIF
00222 C
00223         ENDIF
00224 C
00225         GOTO 233
00226 C
00227       ENDIF
00228 C
00229   231 CONTINUE
00230 C
00231       INPILE=2
00232       CALL LFIPIM_MT (LFI, IREP,IRANG,IRANGM,IRGPME,
00233      S                IRGPFE,IRGPFC,INPILE,IRETIN)
00234 C
00235       IF (IRETIN.EQ.1) THEN
00236         GOTO 903
00237       ELSEIF (IRETIN.EQ.2) THEN
00238         GOTO 904
00239       ELSEIF (IRETIN.NE.0) THEN
00240         GOTO 1001
00241       ENDIF
00242 C
00243       INPPIM=MAX0 (INPPIM,IRANGM)
00244 C
00245   233 CONTINUE
00246       IF (IRGPMS.EQ.0) IRGPMS=IRGPME
00247       IDECDB=IPOTZE-1-(IRGPFE-1)*INALPP
00248       INBARE=MIN0 (INBALO,IRGPFE*INALPP)-IPOTZE+1
00249       INTCON=0
00250 C
00251       DO 234 J=1,INBARE
00252 C
00253       IF (LFI%MLGPOS(IXM(2*(J+IDECDB)-1,IRGPME)).NE.0) THEN
00254         INTCON=INTCON+J-1
00255         GOTO 240
00256       ENDIF
00257 C
00258   234 CONTINUE
00259 C
00260       INTCON=INTCON+INBARE
00261       IPOTZE=IPOTZE+INBARE
00262   235 CONTINUE
00263 C*
00264 C     2.4 - RECHERCHE DU PROCHAIN TROU NUL, APRES LE PAQUET TROUVE.
00265 C-----------------------------------------------------------------------
00266 C
00267   240 CONTINUE
00268       IPOTZE=IPOTZE+INTCON
00269 C
00270 C             D'ABORD, ELIMINATION DES CAS "TRIVIAUX"
00271 C
00272       IF (INTCON.EQ.INTRLZ) THEN
00273 C
00274 C        ON A TROUVE TOUS LES TROUS NULS RESTANT.
00275 C
00276         IPOSFE=INBALO
00277       ELSEIF (INTCON.EQ.(INTRLZ-1)) THEN
00278 C
00279 C        PLUS QU'UN SEUL TROU NUL... CE SERA DONC CELUI DE RANG MAXIMUM.
00280 C
00281         IPOSFE=LFI%NRFDTZ(IRANG)-1
00282       ELSE
00283 C
00284 C          CAS GENERAL.
00285 C
00286         DO 245 JNPAGE=IRGPFE,INTPPI
00287 C
00288         IF (JNPAGE.NE.IRGPFE) THEN
00289 C
00290           DO 241 J=1,INPPIM
00291           IRGPME=LFI%MRGPIM(J,IRANG)
00292 C
00293           IF (LFI%MRGPIF(IRGPME).EQ.JNPAGE) THEN
00294 C
00295             IF (.NOT.LFI%LPHASP(IRGPME)) THEN
00296 C
00297               CALL LFIPHA_MT (LFI, IREP,IRANG,IRGPME,IRETIN)
00298 C
00299               IF (IRETIN.EQ.1) THEN
00300                 GOTO 903
00301               ELSEIF (IRETIN.EQ.2) THEN
00302                 GOTO 904
00303               ELSEIF (IRETIN.NE.0) THEN
00304                 GOTO 1001
00305               ENDIF
00306 C
00307             ENDIF
00308 C
00309             GOTO 243
00310 C
00311           ENDIF
00312 C
00313   241     CONTINUE
00314 C
00315           INPILE=2
00316           CALL LFIPIM_MT (LFI, IREP,IRANG,IRANGM,IRGPME,JNPAGE,
00317      S                    IRGPFC,INPILE,IRETIN)
00318 C
00319           IF (IRETIN.EQ.1) THEN
00320             GOTO 903
00321           ELSEIF (IRETIN.EQ.2) THEN
00322             GOTO 904
00323           ELSEIF (IRETIN.NE.0) THEN
00324             GOTO 1001
00325           ENDIF
00326 C
00327           INPPIM=MAX0 (INPPIM,IRANGM)
00328         ENDIF
00329 C
00330   243   CONTINUE
00331         IDECDB=IPOTZE-1-(JNPAGE-1)*INALPP
00332         INBARE=MIN0 (INBALO,JNPAGE*INALPP)-IPOTZE+1
00333 C
00334         DO 244 J=1,INBARE
00335 C
00336         IF (LFI%MLGPOS(IXM(2*(J+IDECDB)-1,IRGPME)).EQ.0) THEN
00337           IPOSFE=(JNPAGE-1)*INALPP+J-1
00338           GOTO 250
00339         ENDIF
00340 C
00341   244   CONTINUE
00342 C
00343   245   CONTINUE
00344 C
00345       ENDIF
00346 C
00347   250 CONTINUE
00348 C*
00349 C     2.5 - RETASSAGE "A GAUCHE" D'UNE PARTIE DE L'INDEX.
00350 C-----------------------------------------------------------------------
00351 C
00352       IDECAL=IDECAL+INTCON
00353 C
00354   251 CONTINUE
00355       IPOTZS=IPOTZC+IDECAL
00356       IRGPC2=1+(IPOTZC-1)/INALPP
00357       IRGPS2=1+(IPOTZS-1)/INALPP
00358 C
00359       IF (IRGPC2.NE.IRGPFC) THEN
00360         IRGPFC=IRGPC2
00361 C
00362         DO 252 J=2,INPPIM
00363         IRGPMC=LFI%MRGPIM(J,IRANG)
00364 C
00365         IF (LFI%MRGPIF(IRGPMC).EQ.IRGPFC) THEN
00366 C
00367           IF (.NOT.LFI%LPHASP(IRGPMC)) THEN
00368 C
00369             CALL LFIPHA_MT (LFI, IREP,IRANG,IRGPMC,IRETIN)
00370 C
00371             IF (IRETIN.EQ.1) THEN
00372               GOTO 903
00373             ELSEIF (IRETIN.EQ.2) THEN
00374               GOTO 904
00375             ELSEIF (IRETIN.NE.0) THEN
00376               GOTO 1001
00377             ENDIF
00378 C
00379           ENDIF
00380 C
00381           GOTO 254
00382 C
00383         ENDIF
00384 C
00385   252   CONTINUE
00386 C
00387         INPILE=2
00388         CALL LFIPIM_MT (LFI, IREP,IRANG,IRANGM,IRGPMC,IRGPFC,
00389      S                  IRGPS2,INPILE,IRETIN)
00390 C
00391         IF (IRETIN.EQ.1) THEN
00392           GOTO 903
00393         ELSEIF (IRETIN.EQ.2) THEN
00394           GOTO 904
00395         ELSEIF (IRETIN.NE.0) THEN
00396           GOTO 1001
00397         ENDIF
00398 C
00399         INPPIM=MAX0 (INPPIM,IRANGM)
00400       ENDIF
00401 C
00402   254 CONTINUE
00403 C
00404       IF (IRGPS2.NE.IRGPFS) THEN
00405         IRGPFS=IRGPS2
00406 C
00407         DO 255 J=2,INPPIM
00408         IRGPMS=LFI%MRGPIM(J,IRANG)
00409 C
00410         IF (LFI%MRGPIF(IRGPMS).EQ.IRGPFS) THEN
00411 C
00412           IF (.NOT.LFI%LPHASP(IRGPMS)) THEN
00413 C
00414             CALL LFIPHA_MT (LFI, IREP,IRANG,IRGPMS,IRETIN)
00415 C
00416             IF (IRETIN.EQ.1) THEN
00417               GOTO 903
00418             ELSEIF (IRETIN.EQ.2) THEN
00419               GOTO 904
00420             ELSEIF (IRETIN.NE.0) THEN
00421               GOTO 1001
00422             ENDIF
00423 C
00424           ENDIF
00425 C
00426           GOTO 257
00427 C
00428         ENDIF
00429 C
00430   255   CONTINUE
00431 C
00432         INPILE=2
00433         CALL LFIPIM_MT (LFI, IREP,IRANG,IRANGM,IRGPMS,IRGPFS,
00434      S                  IRGPFC,INPILE,IRETIN)
00435 C
00436         IF (IRETIN.EQ.1) THEN
00437           GOTO 903
00438         ELSEIF (IRETIN.EQ.2) THEN
00439           GOTO 904
00440         ELSEIF (IRETIN.NE.0) THEN
00441           GOTO 1001
00442         ENDIF
00443 C
00444         INPPIM=MAX0 (INPPIM,IRANGM)
00445       ENDIF
00446 C
00447   257 CONTINUE
00448       IDECDC=IPOTZC-1+(IRGPFC-1)/INALPP
00449       INBARC=MIN0 (INBALO-IDECAL,IRGPFC*INALPP)-IPOTZC+1
00450       IDECDS=IPOTZS-1+(IRGPFS-1)/INALPP
00451       INBARS=MIN0 (INBALO,IRGPFS*INALPP)-IPOTZS+1
00452       INBART=MIN0 (INBARC,INBARS)
00453 C
00454       DO 258 J=1,INBART
00455       LFI%CNOMAR(IXC(IDECDC+J,IRGPMC))=LFI%CNOMAR(IXC(IDECDS+J,IRGPMS))
00456   258 CONTINUE
00457 C
00458       DO 259 J=1,2*INBART
00459       LFI%MLGPOS(IXM(2*IDECDC+J,IRGPMC))=
00460      S                   LFI%MLGPOS(IXM(2*IDECDS+J,IRGPMS))
00461   259 CONTINUE
00462 C
00463       IPOTZC=IPOTZC+INBART
00464 C
00465       IF (IPOTZS+INBART.LT.IPOSFE) THEN
00466         GOTO 251
00467       ELSEIF (IPOSFE.LT.INBALO) THEN
00468         GOTO 220
00469       ENDIF
00470 C*
00471 C     2.6 - MISE A JOUR DE CERTAINES TABLES.
00472 C-----------------------------------------------------------------------
00473 C
00474       LFI%NBTROU(IRANG)=LFI%NBTROU(IRANG)-IDECAL
00475       INBALO=INBALO-IDECAL
00476       LFI%MDES1D(IXM(LFI%JPNALO,IRANG))=INBALO
00477       INTPPN=(INBALO-1+INALPP)/INALPP
00478       LFI%NALDPI(IRANG)=INBALO-(INTPPN-1)*INALPP
00479 C
00480       IF (INTPPN.NE.INTPPI) THEN
00481 C
00482 C           ON A DONC LAISSE DES P.P.I. "PARASITES" EN MEMOIRE.
00483 C        A PRIORI CE N'EST PAS GENANT, CAR ON VA BIENTOT RELACHER
00484 C        TOUTES CELLES RELATIVES AU FICHIER QUE L'ON TRAITE.
00485 C        NEANMOINS IL EST PREFERABLE DE REDEFINIR LE RANG EN MEMOIRE
00486 C        DE LA DERNIERE P.P.I. DU FICHIER.
00487 C
00488         LFI%NPODPI(IRANG)=IRGPMC
00489         INTPPI=INTPPN
00490       ENDIF
00491 C
00492   300 CONTINUE
00493 C**
00494 C     3.  -  CAS OU IL FAUT RECALCULER LES LONGUEURS EXTREMES DES
00495 C            ARTICLES DE DONNEES.
00496 C-----------------------------------------------------------------------
00497 C
00498       IF (.NOT.LFI%LMIMAL(IRANG)) GOTO 400
00499 C*
00500 C     3.1 - EXPLORATION DES P.P.I., PUIS EVENTUELLEMENT DES P.A.I. .
00501 C-----------------------------------------------------------------------
00502 C
00503       ILOMIN=0
00504       ILOMAX=0
00505       IRPIFN=1
00506       INPIME=0
00507 C
00508       IF (LFI%NPODPI(IRANG).EQ.2) THEN
00509         IDEBEX=3
00510       ELSE
00511         IDEBEX=2
00512       ENDIF
00513 C
00514       DO 317 JNPAGE=1,INTPPI
00515 C
00516       IF (JNPAGE.LE.INPPIM) THEN
00517 C
00518 C           IL S'AGIT D'UNE EXPLORATION EN MEMOIRE ( PAGES D'INDEX ).
00519 C
00520         IRGPIM=LFI%MRGPIM(JNPAGE,IRANG)
00521         IRGPIF=LFI%MRGPIF(IRGPIM)
00522         INPIME=INPIME+1
00523         IEXPLO(INPIME)=IRGPIF
00524         IF (IRGPIF.EQ.(IRPIFN+1)) IRPIFN=IRGPIF
00525 C
00526         IF (.NOT.LFI%LPHASP(IRGPIM)) THEN
00527 C
00528           CALL LFIPHA_MT (LFI, IREP,IRANG,IRGPIM,IRETIN)
00529 C
00530           IF (IRETIN.EQ.1) THEN
00531             GOTO 903
00532           ELSEIF (IRETIN.EQ.2) THEN
00533             GOTO 904
00534           ELSEIF (IRETIN.NE.0) THEN
00535             GOTO 1001
00536           ENDIF
00537 C
00538         ENDIF
00539 C
00540       ELSE
00541 C
00542 C           IL S'AGIT D'UNE EXPLORATION "HORS MEMOIRE";
00543 C         ON CHERCHE LA PROCHAINE P.A.I. NON EXPLOREE .
00544 C
00545         IF (JNPAGE.EQ.INPPIM+1) IRGPIF=IRPIFN
00546 C
00547   311   CONTINUE
00548         IRGPIF=IRGPIF+1
00549 C
00550         DO 312 J=IDEBEX,INPIME
00551         IF (IEXPLO(J).EQ.IRGPIF) GOTO 311
00552   312   CONTINUE
00553 C
00554         ILFORC=1
00555         INPILE=2
00556         CALL LFIPIM_MT (LFI, IREP,IRANG,IRANGM,IRGPIM,IRGPIF,
00557      S                  ILFORC,INPILE,IRETIN)
00558 C
00559         IF (IRETIN.EQ.1) THEN
00560           GOTO 903
00561         ELSEIF (IRETIN.EQ.2) THEN
00562           GOTO 904
00563         ELSEIF (IRETIN.NE.0) THEN
00564           GOTO 1001
00565         ENDIF
00566 C
00567       ENDIF
00568 C
00569       INBART=MIN0 (INALPP,INBALO-(IRGPIF-1)*INALPP)
00570 C
00571       IF (ILOMIN.EQ.0) THEN
00572 C
00573         DO 314 J=1,INBART
00574 C
00575         IF (LFI%CNOMAR(IXC(J,IRGPIM)).NE.' ') THEN
00576           ILOMIN=LFI%MLGPOS(IXM(2*J-1,IRGPIM))
00577           ILOMAX=ILOMIN
00578           IDEBUT=J+1
00579           GOTO 315
00580         ENDIF
00581 C
00582   314   CONTINUE
00583 C
00584         GOTO 317
00585       ELSE
00586         IDEBUT=1
00587       ENDIF
00588 C
00589   315 CONTINUE
00590 C
00591       DO 316 J=IDEBUT,INBART
00592 C
00593       IF (LFI%CNOMAR(IXC(J,IRGPIM)).NE.' ') THEN
00594         ILONGA=LFI%MLGPOS(IXM(2*J-1,IRGPIM))
00595         ILOMIN=MIN0 (ILONGA,ILOMIN)
00596         ILOMAX=MAX0 (ILONGA,ILOMAX)
00597       ENDIF
00598 C
00599   316 CONTINUE
00600 C
00601   317 CONTINUE
00602 C*
00603 C     3.2 - MISE A JOUR DES TABLES CONCERNEES.
00604 C-----------------------------------------------------------------------
00605 C
00606       LFI%MDES1D(IXM(LFI%JPLNAL,IRANG))=ILOMIN
00607       LFI%MDES1D(IXM(LFI%JPLXAL,IRANG))=ILOMAX
00608 C
00609   400 CONTINUE
00610 C**
00611 C     4.  -  "VIDAGE" SUR FICHIER DES PAGES RESTANT A ECRIRE.
00612 C-----------------------------------------------------------------------
00613 C*
00614 C     4.1 -  PAGES DE *DONNEES* RESTANT A ECRIRE.
00615 C-----------------------------------------------------------------------
00616 C
00617       DO 411 J=0,LFI%JPNPDF-1
00618 C
00619       IF (LFI%LECRPD(J,IRANG)) THEN
00620 C
00621         CALL LFIVID_MT (LFI, IREP,IRANG,J,ITAMPO(1),IRETIN)
00622 C
00623         IF (IRETIN.EQ.1) THEN
00624           GOTO 903
00625         ELSEIF (IRETIN.EQ.2) THEN
00626           GOTO 904
00627         ELSEIF (IRETIN.NE.0) THEN
00628           GOTO 1001
00629         ENDIF
00630 C
00631       ENDIF
00632 C
00633   411 CONTINUE
00634 C*
00635 C     4.2 -  (PAIRES DE) PAGES D'*INDEX* RESTANT A ECRIRE.
00636 C-----------------------------------------------------------------------
00637 C
00638       INPPIM=LFI%NPPIMM(IRANG)
00639 C
00640       DO 423 J=1,INPPIM
00641       IRGPIM=LFI%MRGPIM(J,IRANG)
00642       IRGPIF=LFI%MRGPIF(IRGPIM)
00643       CALL LFIREC_MT (LFI, IRGPIF,IRANG,IREC)
00644 C
00645       IF (LFI%LECRPI(IRGPIM,1)) THEN
00646 C
00647         IF (J.EQ.LFI%NPODPI(IRANG).AND.LFI%NALDPI(IRANG).NE.INALPP) THEN
00648 C
00649 C          COMPLEMENT DE LA DERNIERE PAGE D'INDEX NOMS AVEC UN NOM
00650 C        CONVENTIONNEL.
00651 C
00652           DO 421 JJ=LFI%NALDPI(IRANG)+1,LFI%JPNXNA*IFACTM
00653           LFI%CNOMAR(IXC(JJ,IRGPIM))='**FIN D''INDEX**'
00654   421     CONTINUE
00655 C
00656         ENDIF
00657 C
00658         INAPHY=IREC
00659         CALL LFIECC_MT (LFI, IREP,KNUMER,IREC,LFI%CNOMAR(IXC(1,IRGPIM)),
00660      S               LFI%NBWRIT(IRANG),IFACTM,IRETIN)
00661 C
00662         IF (IRETIN.EQ.1) THEN
00663           GOTO 903
00664         ELSEIF (IRETIN.NE.0) THEN
00665           GOTO 1001
00666         ENDIF
00667 C
00668         LFI%LECRPI(IRGPIM,1)=.FALSE.
00669       ENDIF
00670 C
00671       IF (LFI%LECRPI(IRGPIM,2).AND.LFI%LPHASP(IRGPIM)) THEN
00672 C
00673         IF (J.EQ.LFI%NPODPI(IRANG).AND.LFI%NALDPI(IRANG).NE.INALPP) THEN
00674 C
00675 C          COMPLEMENT DE LA DERNIERE PAGE D'INDEX LONGUEUR/POSITION
00676 C        AVEC DES ZEROS.
00677 C
00678           DO 422 JJ=2*LFI%NALDPI(IRANG)+1,ILARPH
00679           LFI%MLGPOS(IXM(JJ,IRGPIM))=0
00680   422     CONTINUE
00681 C
00682         ENDIF
00683 C
00684         INAPHY=IREC+1
00685         CALL LFIEDO_MT (LFI, IREP,KNUMER,IREC+1,
00686      S                  LFI%MLGPOS(IXM(1,IRGPIM)),
00687      S                  LFI%NBWRIT(IRANG),IFACTM,IRETIN)
00688 C
00689         IF (IRETIN.EQ.1) THEN
00690           GOTO 903
00691         ELSEIF (IRETIN.NE.0) THEN
00692           GOTO 1001
00693         ENDIF
00694 C
00695         LFI%LECRPI(IRGPIM,2)=.FALSE.
00696       ENDIF
00697 C
00698   423 CONTINUE
00699 C*
00700 C     4.3 -  CAS DE L'ARTICLE DOCUMENTAIRE, SI NECESSAIRE.
00701 C-----------------------------------------------------------------------
00702 C
00703       LLECRD=LFI%LMODIF(IRANG).OR.LFI%NBWRIT(IRANG).NE.0
00704 C
00705       IF (LLECRD) THEN
00706 C
00707 C        AU PREALABLE, MISE A JOUR DE CET ARTICLE DOCUMENTAIRE.
00708 C
00709         IAUXIL=IXM(LFI%JPNRES,IRANG)
00710         LFI%MDES1D(IAUXIL)=LFI%MDES1D(IAUXIL)+LFI%NREESP(IRANG)
00711         IAUXIL=IXM(LFI%JPNREC,IRANG)
00712         LFI%MDES1D(IAUXIL)=LFI%MDES1D(IAUXIL)+LFI%NREECO(IRANG)
00713         IAUXIL=IXM(LFI%JPNREL,IRANG)
00714         LFI%MDES1D(IAUXIL)=LFI%MDES1D(IAUXIL)+LFI%NREELO(IRANG)
00715         IAUXIL=IXM(LFI%JPNTRU,IRANG)
00716         LFI%MDES1D(IAUXIL)=LFI%MDES1D(IAUXIL)+LFI%NBTROU(IRANG)
00717         CALL LFIDAH_MT (LFI, LFI%MDES1D(IXM(LFI%JPDDMG,IRANG)),
00718      S               LFI%MDES1D(IXM(LFI%JPHDMG,IRANG)))
00719         IREC=1
00720         INAPHY=IREC
00721         CALL LFIEDO_MT (LFI, IREP,KNUMER,IREC,LFI%MDES1D(IXM(1,IRANG)),
00722      S               LFI%NBWRIT(IRANG),IFACTM,IRETIN)
00723 C
00724         IF (IRETIN.EQ.1) THEN
00725           GOTO 903
00726         ELSEIF (IRETIN.NE.0) THEN
00727           GOTO 1001
00728         ENDIF
00729 C
00730       ENDIF
00731 C**
00732 C     5.  -  FERMETURE EFFECTIVE (*CLOSE*) DU FICHIER.
00733 C-----------------------------------------------------------------------
00734 C
00735       INALDO=INBALO-LFI%MDES1D(IXM(LFI%JPNTRU,IRANG))
00736       INAPHY=0
00737 C
00738       IF (LLSTTU) THEN
00739         CLOSE (UNIT=KNUMER,STATUS=CLSTTC,ERR=905,IOSTAT=IREP)
00740       ELSE
00741 C
00742         IF (INALDO.EQ.0) THEN
00743 C
00744 C       SI ON SE RETROUVE AVEC UN FICHIER "VIDE" ET QUE L'ON N'A PAS DE
00745 C       PARAMETRE "STATUS" POUR LE "CLOSE", ON VA ESSAYER DE RELACHER LE
00746 C       FICHIER, AFIN DE NE PAS LAISSER TRAINER UN TEL FICHIER "ZOMBIE".
00747 C             ( "VIDE" = SANS ARTICLE LOGIQUE DE DONNEES )
00748 C       ON N'A PAS DE GARANTIE D'Y ARRIVER, DANS LA MESURE OU ON N'EST
00749 C       PAS SUR D'AVOIR DES DROITS D'ACCES SUFFISANTS.
00750 C
00751           CLOSE (UNIT=KNUMER,STATUS='DELETE',ERR=511)
00752           CLSTTC='DELETE'
00753           LLSTTU=.TRUE.
00754           GOTO 600
00755         ENDIF
00756 C
00757   511   CONTINUE
00758 C
00759         CLOSE (UNIT=KNUMER,ERR=905,IOSTAT=IREP)
00760 C
00761       ENDIF
00762 C
00763   600 CONTINUE
00764 C**
00765 C     6.  -  IMPRESSION EVENTUELLE DE STATISTIQUES D'UTILISATION.
00766 C-----------------------------------------------------------------------
00767 C
00768       LFI%NDEROP(IRANG)=9
00769       LFI%NDERCO(IRANG)=IREP
00770       LLIMST=LFI%NISTAG.EQ.2.OR.(LFI%NISTAG.EQ.1.AND.LFI%LISTAT(IRANG))
00771       IF (LLIMST) CALL LFIIST_MT (LFI, IRANG,.TRUE.)
00772 C**
00773 C     7.  -  "NETTOYAGE" DES TABLES AYANT PERMIS DE GERER LE FICHIER.
00774 C            ( AU MOINS CELLES AYANT UN CARACTERE "GLOBAL"; A NOTER
00775 C              TOUTEFOIS QU'ON NE TOUCHE PAS AUX CARACTERISTIQUES DES
00776 C              PAGES D'INDEX PREAFFECTEES )
00777 C-----------------------------------------------------------------------
00778 C
00779        IF (LFI%LMULTI) CALL LFIVER_MT (LFI, LFI%VERGLA,'ON')
00780       LLVERG=LFI%LMULTI
00781 C
00782       DO 702 J=2,MIN0 (INPPIM,LFI%JPNPIA)
00783       IRGPIM=LFI%MRGPIM(J,IRANG)
00784 C
00785       DO 701 JR=IRGPIM,IRGPIM+IFACTM-1
00786       LFI%MRGPIF(JR)=LFI%JPNIL
00787   701 CONTINUE
00788 C
00789   702 CONTINUE
00790 C
00791       DO 704 J=LFI%JPNPIA+1,INPPIM
00792       IRGPIM=LFI%MRGPIM(J,IRANG)
00793 C
00794       DO 703 JR=IRGPIM,IRGPIM+IFACTM-1
00795       LFI%MCOPIF(JR)=LFI%JPNIL
00796       LFI%MRGPIF(JR)=LFI%JPNIL
00797   703 CONTINUE
00798 C
00799   704 CONTINUE
00800 C
00801       LFI%NPISAF=LFI%NPISAF-MAX0 (0,(INPPIM-LFI%JPNPIA)*IFACTM)
00802 C
00803       DO 705 JR=IRANG,IRANG+IFACTM-1
00804       LFI%NUMERO(JR)=LFI%JPNIL
00805   705 CONTINUE
00806 C
00807       DO 706 J=1,LFI%NBFIOU
00808 C
00809       IF (LFI%NUMIND(J).EQ.IRANG) THEN
00810         IPOSNU=J
00811         GOTO 707
00812       ENDIF
00813 C
00814   706 CONTINUE
00815 C
00816       IREP=-16
00817       GOTO 1001
00818 C
00819   707 CONTINUE
00820 C
00821       LFI%NBFIOU=LFI%NBFIOU-1
00822       LFI%NFACTM=LFI%NFACTM-IFACTM
00823 C
00824       DO 708 J=IPOSNU,LFI%NBFIOU
00825       LFI%NUMIND(J)=LFI%NUMIND(J+1)
00826   708 CONTINUE
00827 C*
00828 C     7.1 -  ASPECTS SPECIFIQUES AUX TABLES D'IMPORT/EXPORT.
00829 C-----------------------------------------------------------------------
00830 C
00831       IF (LFI%NEXPOR(IRANG).GT.0.OR.LFI%NIMPOR(IRANG).GT.0) THEN
00832         IRANIE=MAX0 (LFI%NEXPOR(IRANG),LFI%NIMPOR(IRANG))
00833         INIMES=IXNIMS (IRANG)
00834 C
00835         IF (INIMES.GE.1) THEN
00836           WRITE (UNIT=CLMESS,FMT='(''KNUMER='
00837 ',I3,     S           '', ATTENTION: IMPORT/EXPORT NON TERMINE'')') KNUMER
00838           CALL LFIEMS_MT (LFI, KNUMER,INIMES,IREP,.FALSE.,
00839      S                    CLMESS,CLNSPR,CLACTI)
00840         ENDIF
00841 C
00842         DO 711 J=1,LFI%NUIMEX
00843 C
00844         IF (LFI%NINIEX(J).EQ.IRANIE) THEN
00845           IPOSNU=J
00846           GOTO 712
00847         ENDIF
00848 C
00849   711   CONTINUE
00850 C
00851         IREP=-16
00852         GOTO 1001
00853 C
00854   712   CONTINUE
00855 C
00856         LFI%MNUIEX(IRANG)=LFI%JPNIL
00857         LFI%NUIMEX=LFI%NUIMEX-1
00858 C
00859         DO 713 J=IPOSNU,LFI%NUIMEX
00860         LFI%NINIEX(J)=LFI%NINIEX(J+1)
00861   713   CONTINUE
00862 C
00863       ENDIF
00864 C
00865        IF (LFI%LMULTI) THEN
00866          CALL LFIVER_MT (LFI, LFI%VERRUE(IRANG),'OFF')
00867          CALL LFIVER_MT (LFI, LFI%VERRUE(IRANG),'REL')
00868        ENDIF
00869 C
00870       LLVERF=.FALSE.
00871       IREP=IREPX
00872       GOTO 1001
00873 C**
00874 C     9.  - CI-DESSOUS, ETIQUETTES DE BRANCHEMENT EN CAS D'ERREUR E/S.
00875 C-----------------------------------------------------------------------
00876 C
00877   903 CONTINUE
00878       CLACTI='WRITE'
00879       GOTO 909
00880 C
00881   904 CONTINUE
00882       CLACTI='READ'
00883       GOTO 909
00884 C
00885   905 CONTINUE
00886       CLACTI='CLOSE'
00887 C
00888   909 CONTINUE
00889       IF (INAPHY.NE.0) LFI%NUMAPH(IRANG)=INAPHY
00890 C
00891 C      AU CAS OU, ON FORCE LE CODE-REPONSE ENTREE/SORTIE A ETRE POSITIF.
00892 C
00893       IREP=IABS (IREP)
00894 C**
00895 C    10.  -  PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
00896 C            VIA LE SOUS-PROGRAMME "LFIEMS" .
00897 C-----------------------------------------------------------------------
00898 C
00899  1001 CONTINUE
00900       KREP=IREP
00901       LLFATA=LLMOER (IREP,IRANG)
00902 C
00903       IF (LLFATA) THEN
00904         INIMES=2
00905       ELSE
00906         INIMES=IXNIMS (IRANG)
00907       ENDIF
00908 C
00909        IF (LLVERF) CALL LFIVER_MT (LFI, LFI%VERRUE(IRANG),'OFF')
00910        IF (LLVERG) CALL LFIVER_MT (LFI, LFI%VERGLA,'OFF')
00911 C
00912       IF (.NOT.LLFATA.AND.INIMES.EQ.0)  THEN 
00913         IF (LHOOK) CALL DR_HOOK('LFIFER_MT',1,ZHOOK_HANDLE)
00914         RETURN
00915       ENDIF
00916 C
00917       IF (INIMES.EQ.2) THEN
00918         WRITE (UNIT=CLMESS,FMT='(''KREP='',I4,'', KNUMER='
00919 ',I3,     S         '', CDSTTC='''''',A,'''''''')')
00920      S      KREP,KNUMER,CLSTTC(:ILSTTU)
00921         CALL LFIEMS_MT (LFI, KNUMER,INIMES,IREP,LLFATA,
00922      S                  CLMESS,CLNSPR,CLACTI)
00923       ENDIF
00924 C
00925 C       LA MESSAGERIE QUI SUIT N'EST PAS EMISE EN CAS D'ERREUR FATALE.
00926 C
00927       IF (INIMES.GE.1.AND.(IREP.EQ.0.OR.IREP.EQ.-19)) THEN
00928         CLAUXI='   '
00929 C
00930         IF (LFI%LFRANC) THEN
00931           WRITE (UNIT=CLMESS,FMT='(''Unite'
00932 ',I3,     S           '' traitee, Fichier'',A)')
00933      S            KNUMER,CLAUXI
00934         ELSE
00935           WRITE (UNIT=CLMESS,FMT='(''Unit'
00936 ',I3,     S           '' processed, File'',A)')
00937      S            KNUMER,CLAUXI
00938         ENDIF
00939 C
00940         IDECAL=INDEX (CLMESS,CLAUXI)
00941 C
00942         IF (INBALO.EQ.0) THEN
00943 C
00944           IF (LFI%LFRANC) THEN
00945             CLMESS(IDECAL+1:)='*VIDE*'//CLAUXI
00946           ELSE
00947             CLMESS(IDECAL+1:)='*EMPTY*'//CLAUXI
00948           ENDIF
00949 C
00950           IDECAL=IDECAL+INDEX (CLMESS(IDECAL+1:),CLAUXI)
00951         ENDIF
00952 C
00953         IF (LFI%LFRANC) THEN
00954 C
00955           IF (LFI%LNOUFI(IRANG)) THEN
00956             CLMESS(IDECAL+1:)='$CREE$ &'//CLAUXI
00957           ELSEIF (LLECRD) THEN
00958             CLMESS(IDECAL+1:)='$MODIFIE$ &'//CLAUXI
00959           ELSE
00960             CLMESS(IDECAL+1:)='non modifie &'//CLAUXI
00961           ENDIF
00962 C
00963           IDECAL=IDECAL+INDEX (CLMESS(IDECAL+1:),CLAUXI)
00964 C
00965           IF (.NOT.LLSTTU) THEN
00966             CLMESS(IDECAL+1:)='FERME'//CLAUXI
00967           ELSEIF (CLSTTC.EQ.'KEEP') THEN
00968             CLMESS(IDECAL+1:)='GARDE'//CLAUXI
00969           ELSE
00970             CLMESS(IDECAL+1:)='*RELACHE*'//CLAUXI
00971           ENDIF
00972 C
00973           IF (LFI%LNOUFI(IRANG).OR.LLECRD) THEN
00974             IDECAL=IDECAL+INDEX (CLMESS(IDECAL+1:),CLAUXI)
00975             WRITE (UNIT=CLMESS(IDECAL+1:),
00976      S             FMT='(''a'',I9.6,''_'
00977 ',I6.6,     S       '','',I7,'' Articles de donnees,'',I9,'' mots en tout'')')
00978      S       LFI%MDES1D(IXM(LFI%JPDDMG,IRANG)),
00979      S       LFI%MDES1D(IXM(LFI%JPHDMG,IRANG)),
00980      S       INALDO,ILARPH*LFI%MDES1D(IXM(LFI%JPNAPH,IRANG))
00981           ENDIF
00982 C
00983         ELSE
00984 C
00985           IF (LFI%LNOUFI(IRANG)) THEN
00986             CLMESS(IDECAL+1:)='$CREATED$ &'//CLAUXI
00987           ELSEIF (LLECRD) THEN
00988             CLMESS(IDECAL+1:)='$MODIFIED$ &'//CLAUXI
00989           ELSE
00990             CLMESS(IDECAL+1:)='not modified &'//CLAUXI
00991           ENDIF
00992 C
00993           IDECAL=IDECAL+INDEX (CLMESS(IDECAL+1:),CLAUXI)
00994 C
00995           IF (.NOT.LLSTTU) THEN
00996             CLMESS(IDECAL+1:)='CLOSED'//CLAUXI
00997           ELSEIF (CLSTTC.EQ.'KEEP') THEN
00998             CLMESS(IDECAL+1:)='KEPT'//CLAUXI
00999           ELSE
01000             CLMESS(IDECAL+1:)='*RELEASED*'//CLAUXI
01001           ENDIF
01002 C
01003           IF (LFI%LNOUFI(IRANG).OR.LLECRD) THEN
01004             IDECAL=IDECAL+INDEX (CLMESS(IDECAL+1:),CLAUXI)
01005             WRITE (UNIT=CLMESS(IDECAL+1:),FMT='(''at'',I9.6,''_'
01006 ',     S I6.6,'','',I7,'' data Records,'',I9,'' words for a whole'')')
01007      S       LFI%MDES1D(IXM(LFI%JPDDMG,IRANG)),
01008      S       LFI%MDES1D(IXM(LFI%JPHDMG,IRANG)),
01009      S       INALDO,ILARPH*LFI%MDES1D(IXM(LFI%JPNAPH,IRANG))
01010           ENDIF
01011 C
01012         ENDIF
01013 C
01014         CALL LFIEMS_MT (LFI, KNUMER,INIMES,IREP,.FALSE.,
01015      S                  CLMESS,CLNSPR,CLACTI)
01016 C
01017         IF (LFI%LFRANC) THEN
01018           INLNOM=MIN0 (LFI%NLNOMF(IRANG),LFI%JPLFIX,LEN (CLMESS)-6)
01019           CLMESS='Nom='''//LFI%CNOMFI(IRANG)(1:INLNOM)//''''
01020         ELSE
01021           INLNOM=MIN0 (LFI%NLNOMF(IRANG),LFI%JPLFIX,LEN (CLMESS)-7)
01022           CLMESS='Name='''//LFI%CNOMFI(IRANG)(1:INLNOM)//''''
01023         ENDIF
01024 C
01025         CALL LFIEMS_MT (LFI, KNUMER,INIMES,IREP,.FALSE.,
01026      S                  CLMESS,CLNSPR,CLACTI)
01027 C
01028         IF (LFI%CNOMSY(IRANG)(1:LFI%NLNOMS(IRANG)).NE.
01029      S      LFI%CNOMFI(IRANG)(1:LFI%NLNOMF(IRANG))) THEN
01030 C
01031           IF (LFI%LFRANC) THEN
01032             INLNOM=MIN0 (LFI%NLNOMS(IRANG),LFI%JPLFIX,
01033      S                   LEN (CLMESS)-14)
01034             CLMESS='Nom SYSTEME='''//
01035      S                 LFI%CNOMSY(IRANG)(1:INLNOM)//''''
01036           ELSE
01037             INLNOM=MIN0 (LFI%NLNOMS(IRANG),LFI%JPLFIX,
01038      S                   LEN (CLMESS)-14)
01039             CLMESS='SYSTEM Name='''//
01040      S                  LFI%CNOMSY(IRANG)(1:INLNOM)//''''
01041           ENDIF
01042 C
01043           CALL LFIEMS_MT (LFI, KNUMER,INIMES,IREP,.FALSE.,
01044      S                    CLMESS,CLNSPR,CLACTI)
01045         ENDIF
01046 C
01047       ENDIF
01048 C
01049       IF (LHOOK) CALL DR_HOOK('LFIFER_MT',1,ZHOOK_HANDLE)
01050       END
01051