SURFEX v8.1
General documentation of Surfex
lfimoe.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 lfimoe_fort &
4 & ( lfi, krep, krang, 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 ! MODIFICATION DE L'ARTICLE DOCUMENTAIRE, LIMITEE A 3 ELEMENTS,
13 ! LORSQUE LE FICHIER A SUBI SA PREMIERE MODIFICATION DEPUIS LA
14 ! DERNIERE OUVERTURE.
15 !
16 ! APPELE PAR LFIECR, LFIREN, LFISUP.
17 !**
18 ! ARGUMENTS : KREP (SORTIE) ==> CODE-REPONSE DU SOUS-PROGRAMME;
19 ! KRANG (ENTREE) ==> RANG ( DANS LA TABLE *LFI%NUMERO* )
20 ! DE L'UNITE LOGIQUE CONCERNEE;
21 ! KRETIN (SORTIE) ==> CODE-RETOUR INTERNE.
22 !
23 !
24 TYPE(lficom) :: LFI
25 INTEGER (KIND=JPLIKB) IDESCR (lfi%jplarx)
26 INTEGER (KIND=JPLIKB) KREP, KRANG, KRETIN, INUMER, IFACTM, IREC
27 INTEGER (KIND=JPLIKB) IRANG, INAPHY, IRETOU, INIMES, IRETIN
28 !
29 CHARACTER(LEN=LFI%JPLSPX) CLNSPR
30 CHARACTER(LEN=LFI%JPLMES) CLMESS
31 CHARACTER(LEN=LFI%JPLFTX) CLACTI
32 LOGICAL LLFATA
33 
34 !**
35 ! 1. - CONTROLES DES PARAMETRES D'APPEL ET INITIALISATIONS.
36 !-----------------------------------------------------------------------
37 !
38 REAL(KIND=JPRB) :: ZHOOK_HANDLE
39 IF (lhook) CALL dr_hook('LFIMOE_FORT',0,zhook_handle)
40 clacti=''
41 iretou=0
42 !
43 IF (krang.LE.0.OR.krang.GT.lfi%JPNXFI) THEN
44  krep=-16
45  GOTO 1001
46 ENDIF
47 !
48 irang=krang
49 krep=0
50 inumer=lfi%NUMERO(irang)
51 ifactm=lfi%MFACTM(irang)
52 irec=1
53 !**
54 ! 2. - LECTURE/MODIFICATION/REECRITURE DE L'ARTICLE DOCUMENTAIRE.
55 !-----------------------------------------------------------------------
56 !
57 inaphy=irec
58 CALL lfildo_fort &
59 & (lfi, krep,inumer,irec,idescr(1),&
60 & lfi%NBREAD(irang),ifactm, &
61 & lfi%YLFIC (irang),iretin)
62 !
63 IF (iretin.NE.0) THEN
64  GOTO 904
65 ENDIF
66 !
67 idescr(lfi%JPFEAM)=1
68 CALL lfidah_fort &
69 & (lfi, idescr(lfi%JPDMNG),idescr(lfi%JPHMNG))
70 lfi%MDES1D(ixm(lfi%JPDMNG,irang))=idescr(lfi%JPDMNG)
71 lfi%MDES1D(ixm(lfi%JPHMNG,irang))=idescr(lfi%JPHMNG)
72 CALL lfiedo_fort &
73 & (lfi, krep,inumer,irec,idescr(1), &
74 & lfi%NBWRIT(irang),ifactm, &
75 & lfi%YLFIC (irang),iretin)
76 !
77 IF (iretin.NE.0) THEN
78  GOTO 903
79 ENDIF
80 !
81 GOTO 1001
82 !**
83 ! 9. - CI-DESSOUS, ETIQUETTES DE BRANCHEMENT EN CAS D'ERREUR E/S.
84 ! AU CAS OU, ON FORCE LE CODE-REPONSE ENTREE/SORTIE A ETRE POSITIF.
85 !-----------------------------------------------------------------------
86 !
87 903 CONTINUE
88 iretou=1
89 clacti='WRITE'
90 GOTO 909
91 !
92 904 CONTINUE
93 iretou=2
94 clacti='READ'
95 !
96 909 CONTINUE
97 krep=abs(krep)
98 lfi%NUMAPH(irang)=inaphy
99 !**
100 ! 10. - PHASE TERMINALE : MESSAGERIE INTERNE EVENTUELLE,
101 ! VIA LE SOUS-PROGRAMME "LFIEMS", PUIS RETOUR.
102 !-----------------------------------------------------------------------
103 !
104 1001 CONTINUE
105 llfata=llmoer(krep,krang)
106 !
107 IF (krep.EQ.0) THEN
108  kretin=0
109 ELSEIF (krep.GT.0) THEN
110  kretin=iretou
111 ELSE
112  kretin=3
113 ENDIF
114 !
115 IF (lfi%LMISOP.OR.llfata) THEN
116  inumer=lfi%NUMERO(krang)
117  inimes=2
118  clnspr='LFIMOE'
119  WRITE (unit=clmess,fmt='(''KREP='',I4,'', KRANG='',I3, &
120 & '', KRETIN='',I2)') &
121 & krep,krang,kretin
122  CALL lfiems_fort &
123 & (lfi, inumer,inimes,krep,.false., &
124 & clmess,clnspr,clacti)
125 ENDIF
126 !
127 IF (lhook) CALL dr_hook('LFIMOE_FORT',1,zhook_handle)
128 
129 CONTAINS
130 
131 #include "lficom2.ixm.h"
132 #include "lficom2.llmoer.h"
133 
134 END SUBROUTINE lfimoe_fort
135 
136 
137 
138 ! Oct-2012 P. Marguinaud 64b LFI
139 SUBROUTINE lfimoe64 &
140 & (krep, krang, kretin)
141 USE lfimod, ONLY : lfi => lficom_default, &
144 USE lfi_precision
145 IMPLICIT NONE
146 ! Arguments
147 INTEGER (KIND=JPLIKB) KREP ! OUT
148 INTEGER (KIND=JPLIKB) KRANG ! IN
149 INTEGER (KIND=JPLIKB) KRETIN ! OUT
150 
151 IF (.NOT. lficom_default_init) CALL new_lfi_default ()
152 
153 CALL lfimoe_fort &
154 & (lfi, krep, krang, kretin)
155 
156 END SUBROUTINE lfimoe64
157 
158 SUBROUTINE lfimoe &
159 & (krep, krang, kretin)
160 USE lfimod, ONLY : lfi => lficom_default, &
163 USE lfi_precision
164 IMPLICIT NONE
165 ! Arguments
166 INTEGER (KIND=JPLIKM) KREP ! OUT
167 INTEGER (KIND=JPLIKM) KRANG ! IN
168 INTEGER (KIND=JPLIKM) KRETIN ! OUT
169 
170 IF (.NOT. lficom_default_init) CALL new_lfi_default ()
171 
172 CALL lfimoe_mt &
173 & (lfi, krep, krang, kretin)
174 
175 END SUBROUTINE lfimoe
176 
177 SUBROUTINE lfimoe_mt &
178 & (lfi, krep, krang, kretin)
179 USE lfimod, ONLY : lficom
180 USE lfi_precision
181 IMPLICIT NONE
182 ! Arguments
183 type(lficom) lfi ! INOUT
184 INTEGER (KIND=JPLIKM) KREP ! OUT
185 INTEGER (KIND=JPLIKM) KRANG ! IN
186 INTEGER (KIND=JPLIKM) KRETIN ! OUT
187 ! Local integers
188 INTEGER (KIND=JPLIKB) IREP ! OUT
189 INTEGER (KIND=JPLIKB) IRANG ! IN
190 INTEGER (KIND=JPLIKB) IRETIN ! OUT
191 ! Convert arguments
192 
193 irang = int( krang, jplikb)
194 
195 CALL lfimoe_fort &
196 & (lfi, irep, irang, iretin)
197 
198 krep = int( irep, jplikm)
199 kretin = int( iretin, jplikm)
200 
201 END SUBROUTINE lfimoe_mt
202 
203 !INTF KREP OUT
204 !INTF KRANG IN
205 !INTF KRETIN OUT
subroutine lfimoe_fort(LFI, KREP, KRANG, KRETIN)
Definition: lfimoe.F90:5
integer, parameter jplikb
subroutine lfildo_fort(LFI, KREP, KNUMER, KREC, KTAB, KNBLEC, KFACTM, YDFIC, KRETIN)
Definition: lfildo.F90:6
subroutine lfimoe_mt(LFI, KREP, KRANG, KRETIN)
Definition: lfimoe.F90:179
subroutine new_lfi_default()
Definition: lfimod.F90:376
subroutine lfimoe(KREP, KRANG, KRETIN)
Definition: lfimoe.F90:160
logical, save lficom_default_init
Definition: lfimod.F90:371
integer, parameter jprb
Definition: parkind1.F90:32
subroutine lfidah_fort(LFI, KDATE, KHEURE)
Definition: lfidah.F90:6
subroutine lfimoe64(KREP, KRANG, KRETIN)
Definition: lfimoe.F90:141
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
subroutine lfiedo_fort(LFI, KREP, KNUMER, KREC, KTAB, KNBECR, KFACTM, YDFIC, KRETIN)
Definition: lfiedo.F90:6