SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/XRD38/LFI/mt/lfipos_mt.F
Go to the documentation of this file.
00001 C Jan-2011 P. Marguinaud Thread-safe LFI
00002       SUBROUTINE LFIPOS_MT (LFI, KREP, KNUMER )
00003       USE LFIMOD, ONLY : LFICOM
00004       USE PARKIND1, ONLY : JPRB
00005       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
00006 C****
00007 C        SOUS-PROGRAMME REMETTANT A LA VALEUR INITIALE LE "POINTEUR" DU
00008 C     FICHIER, QUI SERT AUX ACCES "PSEUDO-SEQUENTIELS" SUR UNE UNITE
00009 C     LOGIQUE OUVERTE POUR LE LOGICIEL DE FICHIERS INDEXES *LFI* .
00010 C        APRES APPEL A CE SOUS-PROGRAMME, LE PREMIER APPEL SUIVANT A
00011 C     *LFICAS* OU *LFILAS* D'UNE PART, OU BIEN A *LFICAP* OU *LFILAP*
00012 C     D'AUTRE PART, CONCERNERA LE PREMIER (RESPECTIVEMENT LE DERNIER)
00013 C     ARTICLE LOGIQUE DE DONNEES PRESENT (EN POSITION) DANS LE FICHIER,
00014 C     SI L'ON N'APPELLE PAS *LFILEC* ENTRETEMPS.
00015 C**
00016 C    ARGUMENTS : KREP   (SORTIE) ==> CODE-REPONSE DU SOUS-PROGRAMME;
00017 C                KNUMER (ENTREE) ==> LFI%NUMERO DE L'UNITE LOGIQUE.
00018 C
00019 #ifndef f77
00020 #include "precision.h"
00021 #endif
00022 C
00023       TYPE(LFICOM) :: LFI
00024       INTEGER KREP, KNUMER, IREP, IRANG, INIMES
00025 C
00026 #include "lficom2.h"
00027 #include "lficom_mt.h"
00028 C**
00029 C     1.  -  CONTROLES DES PARAMETRES D'APPEL, PUIS INITIALISATIONS.
00030 C-----------------------------------------------------------------------
00031 C
00032       REAL(KIND=JPRB) :: ZHOOK_HANDLE
00033       IF (LHOOK) CALL DR_HOOK('LFIPOS_MT',0,ZHOOK_HANDLE)
00034       IREP=0
00035       CALL LFINUM_MT (LFI, KNUMER,IRANG)
00036 C
00037       IF (IRANG.EQ.0) THEN
00038         IREP=-1
00039         GOTO 1001
00040       ENDIF
00041 C
00042        IF (LFI%LMULTI) CALL LFIVER_MT (LFI, LFI%VERRUE(IRANG),'ON')
00043 C**
00044 C     2.  -  REINITIALISATION DU "POINTEUR" ET DES VALEURS "SUIVANTE"
00045 C            ET "PRECEDENTE" .
00046 C-----------------------------------------------------------------------
00047 C
00048       LFI%NDERGF(IRANG)=LFI%JPNIL
00049       LFI%CNDERA(IRANG)=' '
00050       LFI%NSUIVF(IRANG)=LFI%JPNIL
00051       LFI%NPRECF(IRANG)=LFI%JPNIL
00052 C**
00053 C    10.  -  PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
00054 C            VIA LE SOUS-PROGRAMME "LFIEMS" .
00055 C-----------------------------------------------------------------------
00056 C
00057  1001 CONTINUE
00058       KREP=IREP
00059       LLFATA=LLMOER (IREP,IRANG)
00060 C
00061       IF (IRANG.NE.0) THEN
00062         LFI%NDEROP(IRANG)=14
00063         LFI%NDERCO(IRANG)=IREP
00064          IF (LFI%LMULTI) CALL LFIVER_MT (LFI, LFI%VERRUE(IRANG),'OFF')
00065       ENDIF
00066 C
00067       IF (LLFATA.OR.IXNIMS (IRANG).EQ.2) THEN
00068         INIMES=2
00069       ELSE
00070         IF (LHOOK) CALL DR_HOOK('LFIPOS_MT',1,ZHOOK_HANDLE)
00071         RETURN
00072       ENDIF
00073 C
00074       CLNSPR='LFIPOS'
00075       WRITE (UNIT=CLMESS,FMT='(''KREP='',I4,'', KNUMER='',I3)')
00076      S     KREP,KNUMER
00077       CALL LFIEMS_MT (LFI, KNUMER,INIMES,IREP,LLFATA,
00078      S                CLMESS,CLNSPR,CLACTI)
00079 C
00080       IF (LHOOK) CALL DR_HOOK('LFIPOS_MT',1,ZHOOK_HANDLE)
00081       END
00082