SURFEX v8.1
General documentation of Surfex
lfipha.F90
Go to the documentation of this file.
1 ! Oct-2012 P. Marguinaud 64b LFI
2 ! Jan-2011 P. Marguinaud Thread-safe LFI
3 SUBROUTINE lfipha_fort &
4 & (lfi, krep, krang, krgpim, kretin )
5 USE lfimod, ONLY : lficom
6 USE parkind1, ONLY : jprb
7 USE yomhook , ONLY : lhook, dr_hook
9 IMPLICIT NONE
10 !****
11 ! SOUS-PROGRAMME *INTERNE* DU LOGICIEL DE FICHIERS INDEXES LFI
12 ! PHASAGE D'UNE PAGE D'INDEX "LONGUEUR/POSITION"
13 ! AVEC LA PAGE D'INDEX "NOMS" CORRESPONDANTE.
14 ! IL EST ABSOLUMENT NECESSAIRE QUE LA PAGE D'INDEX "NOMS" SOIT
15 ! EFFECTIVEMENT ALIMENTEE AVANT L'APPEL DE CE SOUS-PROGRAMME...
16 !**
17 ! ARGUMENTS : KREP (SORTIE) ==> CODE-REPONSE DE LA LECTURE DE PAGE;
18 ! KRANG (ENTREE) ==> RANG DE L'UNITE LOGIQUE CONCERNEE;
19 ! KRGPIM (ENTREE) ==> LFI%NUMERO DE LA PAGE CONCERNEE;
20 ! KRETIN (SORTIE) ==> CODE-RETOUR INTERNE.
21 !
22 !
23 TYPE(lficom) :: LFI
24 INTEGER (KIND=JPLIKB) KREP, KRANG, KRGPIM, KRETIN, INUMER
25 INTEGER (KIND=JPLIKB) IREC, INAPHY, INIMES
26 INTEGER (KIND=JPLIKB) IRETOU, IRETIN
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 REAL(KIND=JPRB) :: ZHOOK_HANDLE
35 IF (lhook) CALL dr_hook('LFIPHA_FORT',0,zhook_handle)
36 clacti=''
37 iretou=0
38 inumer=lfi%NUMERO(krang)
39 CALL lfirec_fort &
40 & (lfi, lfi%MRGPIF(krgpim),krang,irec)
41 inaphy=irec+1
42 CALL lfildo_fort &
43 & (lfi, krep,inumer,irec+1, &
44 & lfi%MLGPOS(ixm(1_jplikb ,krgpim)), &
45 & lfi%NBREAD(krang),lfi%MFACTM(krang), &
46 & lfi%YLFIC (krang),iretin)
47 !
48 IF (iretin.NE.0) THEN
49  GOTO 904
50 ENDIF
51 !
52 lfi%LPHASP(krgpim)=.true.
53 GOTO 1001
54 !
55 904 CONTINUE
56 iretou=2
57 clacti='READ'
58 !
59 ! AU CAS OU, ON FORCE LE CODE-REPONSE ENTREE/SORTIE A ETRE POSITIF.
60 !
61 krep=abs(krep)
62 lfi%NUMAPH(krang)=inaphy
63 !**
64 ! 10. - PHASE TERMINALE : MESSAGERIE INTERNE EVENTUELLE,
65 ! VIA LE SOUS-PROGRAMME "LFIEMS", PUIS RETOUR.
66 !-----------------------------------------------------------------------
67 !
68 1001 CONTINUE
69 llfata=llmoer(krep,krang)
70 !
71 IF (krep.EQ.0) THEN
72  kretin=0
73 ELSEIF (krep.GT.0) THEN
74  kretin=iretou
75 ELSE
76  kretin=3
77 ENDIF
78 !
79 IF (lfi%LMISOP.OR.llfata) THEN
80  inimes=2
81  clnspr='LFIPHA'
82  WRITE (unit=clmess,fmt='(''KREP='',I4,'', KRANG='',I3, &
83 & '', KRGPIM='',I3,'', KRETIN='',I2)') &
84 & krep,krang,krgpim,kretin
85  CALL lfiems_fort &
86 & (lfi, inumer,inimes,krep,.false., &
87 & clmess,clnspr,clacti)
88 ENDIF
89 !
90 IF (lhook) CALL dr_hook('LFIPHA_FORT',1,zhook_handle)
91 
92 CONTAINS
93 
94 #include "lficom2.ixm.h"
95 #include "lficom2.llmoer.h"
96 
97 END SUBROUTINE lfipha_fort
98 
99 
100 
101 ! Oct-2012 P. Marguinaud 64b LFI
102 SUBROUTINE lfipha64 &
103 & (krep, krang, krgpim, kretin)
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) KRANG ! IN
112 INTEGER (KIND=JPLIKB) KRGPIM ! IN
113 INTEGER (KIND=JPLIKB) KRETIN ! OUT
114 
115 IF (.NOT. lficom_default_init) CALL new_lfi_default ()
116 
117 CALL lfipha_fort &
118 & (lfi, krep, krang, krgpim, kretin)
119 
120 END SUBROUTINE lfipha64
121 
122 SUBROUTINE lfipha &
123 & (krep, krang, krgpim, kretin)
124 USE lfimod, ONLY : lfi => lficom_default, &
127 USE lfi_precision
128 IMPLICIT NONE
129 ! Arguments
130 INTEGER (KIND=JPLIKM) KREP ! OUT
131 INTEGER (KIND=JPLIKM) KRANG ! IN
132 INTEGER (KIND=JPLIKM) KRGPIM ! IN
133 INTEGER (KIND=JPLIKM) KRETIN ! OUT
134 
135 IF (.NOT. lficom_default_init) CALL new_lfi_default ()
136 
137 CALL lfipha_mt &
138 & (lfi, krep, krang, krgpim, kretin)
139 
140 END SUBROUTINE lfipha
141 
142 SUBROUTINE lfipha_mt &
143 & (lfi, krep, krang, krgpim, kretin)
144 USE lfimod, ONLY : lficom
145 USE lfi_precision
146 IMPLICIT NONE
147 ! Arguments
148 type(lficom) lfi ! INOUT
149 INTEGER (KIND=JPLIKM) KREP ! OUT
150 INTEGER (KIND=JPLIKM) KRANG ! IN
151 INTEGER (KIND=JPLIKM) KRGPIM ! IN
152 INTEGER (KIND=JPLIKM) KRETIN ! OUT
153 ! Local integers
154 INTEGER (KIND=JPLIKB) IREP ! OUT
155 INTEGER (KIND=JPLIKB) IRANG ! IN
156 INTEGER (KIND=JPLIKB) IRGPIM ! IN
157 INTEGER (KIND=JPLIKB) IRETIN ! OUT
158 ! Convert arguments
159 
160 irang = int( krang, jplikb)
161 irgpim = int( krgpim, jplikb)
162 
163 CALL lfipha_fort &
164 & (lfi, irep, irang, irgpim, iretin)
165 
166 krep = int( irep, jplikm)
167 kretin = int( iretin, jplikm)
168 
169 END SUBROUTINE lfipha_mt
170 
171 !INTF KREP OUT
172 !INTF KRANG IN
173 !INTF KRGPIM IN
174 !INTF KRETIN OUT
integer, parameter jplikb
subroutine lfipha64(KREP, KRANG, KRGPIM, KRETIN)
Definition: lfipha.F90:104
subroutine lfildo_fort(LFI, KREP, KNUMER, KREC, KTAB, KNBLEC, KFACTM, YDFIC, KRETIN)
Definition: lfildo.F90:6
subroutine lfipha(KREP, KRANG, KRGPIM, KRETIN)
Definition: lfipha.F90:124
subroutine lfirec_fort(LFI, KRGPIF, KRANG, KREC)
Definition: lfirec.F90:5
subroutine new_lfi_default()
Definition: lfimod.F90:376
logical, save lficom_default_init
Definition: lfimod.F90:371
integer, parameter jprb
Definition: parkind1.F90:32
subroutine lfipha_mt(LFI, KREP, KRANG, KRGPIM, KRETIN)
Definition: lfipha.F90:144
type(lficom), target, save lficom_default
Definition: lfimod.F90:370
logical lhook
Definition: yomhook.F90:15
subroutine lfipha_fort(LFI, KREP, KRANG, KRGPIM, KRETIN)
Definition: lfipha.F90:5
integer, parameter jplikm
subroutine lfiems_fort(LFI, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI)
Definition: lfiems.F90:7
Definition: lfimod.F90:1