SURFEX v7.3
General documentation of Surfex
|
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