SURFEX v8.1
General documentation of Surfex
lfipos.F90
Go to the documentation of this file.
1 ! Oct-2012 P. Marguinaud 64b LFI
2 ! Jan-2011 P. Marguinaud Thread-safe LFI
3 
4 SUBROUTINE lfipos_fort &
5 & (lfi, krep, knumer )
6 USE lfimod, ONLY : lficom
7 USE parkind1, ONLY : jprb
8 USE yomhook , ONLY : lhook, dr_hook
10 IMPLICIT NONE
11 !****
12 ! SOUS-PROGRAMME REMETTANT A LA VALEUR INITIALE LE "POINTEUR" DU
13 ! FICHIER, QUI SERT AUX ACCES "PSEUDO-SEQUENTIELS" SUR UNE UNITE
14 ! LOGIQUE OUVERTE POUR LE LOGICIEL DE FICHIERS INDEXES *LFI* .
15 ! APRES APPEL A CE SOUS-PROGRAMME, LE PREMIER APPEL SUIVANT A
16 ! *LFICAS* OU *LFILAS* D'UNE PART, OU BIEN A *LFICAP* OU *LFILAP*
17 ! D'AUTRE PART, CONCERNERA LE PREMIER (RESPECTIVEMENT LE DERNIER)
18 ! ARTICLE LOGIQUE DE DONNEES PRESENT (EN POSITION) DANS LE FICHIER,
19 ! SI L'ON N'APPELLE PAS *LFILEC* ENTRETEMPS.
20 !**
21 ! ARGUMENTS : KREP (SORTIE) ==> CODE-REPONSE DU SOUS-PROGRAMME;
22 ! KNUMER (ENTREE) ==> LFI%NUMERO DE L'UNITE LOGIQUE.
23 !
24 !
25 TYPE(lficom) :: LFI
26 INTEGER (KIND=JPLIKB) KREP, KNUMER, IREP, IRANG, INIMES
27 !
28 CHARACTER(LEN=LFI%JPLSPX) CLNSPR
29 CHARACTER(LEN=LFI%JPLMES) CLMESS
30 CHARACTER(LEN=LFI%JPLFTX) CLACTI
31 LOGICAL LLFATA
32 
33 !**
34 ! 1. - CONTROLES DES PARAMETRES D'APPEL, PUIS INITIALISATIONS.
35 !-----------------------------------------------------------------------
36 !
37 REAL(KIND=JPRB) :: ZHOOK_HANDLE
38 IF (lhook) CALL dr_hook('LFIPOS_FORT',0,zhook_handle)
39 clacti=''
40 irep=0
41 CALL lfinum_fort &
42 & (lfi, knumer,irang)
43 !
44 IF (irang.EQ.0) THEN
45  irep=-1
46  GOTO 1001
47 ENDIF
48 !
49  IF (lfi%LMULTI) CALL lfiver_fort &
50 & (lfi, lfi%VERRUE(irang),'ON')
51 !**
52 ! 2. - REINITIALISATION DU "POINTEUR" ET DES VALEURS "SUIVANTE"
53 ! ET "PRECEDENTE" .
54 !-----------------------------------------------------------------------
55 !
56 lfi%NDERGF(irang)=lfi%JPNIL
57 lfi%CNDERA(irang)=' '
58 lfi%NSUIVF(irang)=lfi%JPNIL
59 lfi%NPRECF(irang)=lfi%JPNIL
60 !**
61 ! 10. - PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
62 ! VIA LE SOUS-PROGRAMME "LFIEMS" .
63 !-----------------------------------------------------------------------
64 !
65 1001 CONTINUE
66 krep=irep
67 llfata=llmoer(irep,irang)
68 !
69 IF (irang.NE.0) THEN
70  lfi%NDEROP(irang)=14
71  lfi%NDERCO(irang)=irep
72  IF (lfi%LMULTI) CALL lfiver_fort &
73 & (lfi, lfi%VERRUE(irang),'OFF')
74 ENDIF
75 !
76 IF (llfata.OR.ixnims(irang).EQ.2) THEN
77  inimes=2
78 ELSE
79  IF (lhook) CALL dr_hook('LFIPOS_FORT',1,zhook_handle)
80  RETURN
81 ENDIF
82 !
83 clnspr='LFIPOS'
84 WRITE (unit=clmess,fmt='(''KREP='',I4,'', KNUMER='',I3)') &
85 & krep,knumer
86 CALL lfiems_fort &
87 & (lfi, knumer,inimes,irep,llfata, &
88 & clmess,clnspr,clacti)
89 !
90 IF (lhook) CALL dr_hook('LFIPOS_FORT',1,zhook_handle)
91 
92 CONTAINS
93 
94 #include "lficom2.ixnims.h"
95 #include "lficom2.llmoer.h"
96 
97 END SUBROUTINE lfipos_fort
98 
99 
100 
101 ! Oct-2012 P. Marguinaud 64b LFI
102 SUBROUTINE lfipos64 &
103 & (krep, knumer)
104 USE lfimod, ONLY : lfi => lficom_default, &
107 USE lfi_precision
108 IMPLICIT NONE
109 ! Arguments
110 INTEGER (KIND=JPLIKB) KREP ! OUT
111 INTEGER (KIND=JPLIKB) KNUMER ! IN
112 
113 IF (.NOT. lficom_default_init) CALL new_lfi_default ()
114 
115 CALL lfipos_fort &
116 & (lfi, krep, knumer)
117 
118 END SUBROUTINE lfipos64
119 
120 SUBROUTINE lfipos &
121 & (krep, knumer)
122 USE lfimod, ONLY : lfi => lficom_default, &
125 USE lfi_precision
126 IMPLICIT NONE
127 ! Arguments
128 INTEGER (KIND=JPLIKM) KREP ! OUT
129 INTEGER (KIND=JPLIKM) KNUMER ! IN
130 
131 IF (.NOT. lficom_default_init) CALL new_lfi_default ()
132 
133 CALL lfipos_mt &
134 & (lfi, krep, knumer)
135 
136 END SUBROUTINE lfipos
137 
138 SUBROUTINE lfipos_mt &
139 & (lfi, krep, knumer)
140 USE lfimod, ONLY : lficom
141 USE lfi_precision
142 IMPLICIT NONE
143 ! Arguments
144 type(lficom) lfi ! INOUT
145 INTEGER (KIND=JPLIKM) KREP ! OUT
146 INTEGER (KIND=JPLIKM) KNUMER ! IN
147 ! Local integers
148 INTEGER (KIND=JPLIKB) IREP ! OUT
149 INTEGER (KIND=JPLIKB) INUMER ! IN
150 ! Convert arguments
151 
152 inumer = int( knumer, jplikb)
153 
154 CALL lfipos_fort &
155 & (lfi, irep, inumer)
156 
157 krep = int( irep, jplikm)
158 
159 END SUBROUTINE lfipos_mt
160 
161 !INTF KREP OUT
162 !INTF KNUMER IN
integer, parameter jplikb
subroutine lfipos_mt(LFI, KREP, KNUMER)
Definition: lfipos.F90:140
subroutine new_lfi_default()
Definition: lfimod.F90:376
subroutine lfipos64(KREP, KNUMER)
Definition: lfipos.F90:104
logical, save lficom_default_init
Definition: lfimod.F90:371
subroutine lfinum_fort(LFI, KNUMER, KRANG)
Definition: lfinum.F90:6
subroutine lfiver_fort(LFI, PVEROU, CDSENS)
Definition: lfiver.F90:6
integer, parameter jprb
Definition: parkind1.F90:32
subroutine lfipos(KREP, KNUMER)
Definition: lfipos.F90:122
subroutine lfipos_fort(LFI, KREP, KNUMER)
Definition: lfipos.F90:6
type(lficom), target, save lficom_default
Definition: lfimod.F90:370
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
subroutine lfiems_fort(LFI, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI)
Definition: lfiems.F90:7
Definition: lfimod.F90:1