SURFEX v8.1
General documentation of Surfex
lfiecd.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 lfiecd_fort &
4 & (lfi, krep, krang, ktab, klong, &
5 & kposec, kretin )
6 USE lfimod, ONLY : lficom
7 USE parkind1, ONLY : jprb
8 USE yomhook , ONLY : lhook, dr_hook
10 IMPLICIT NONE
11 !****
12 ! SOUS-PROGRAMME *INTERNE* DU LOGICIEL DE FICHIERS INDEXES LFI
13 ! ECRITURE DES DONNEES PROPREMENT DITES, UNE FOIS L'ARTICLE LOGIQUE
14 ! DEFINI (PAR NOM, OU PAR POSITION) .
15 !**
16 ! ARGUMENTS : KREP (SORTIE) ==> CODE-REPONSE DU SOUS-PROGRAMME;
17 ! KRANG (ENTREE) ==> RANG ( DANS LA TABLE *LFI%NUMERO* )
18 ! DE L'UNITE LOGIQUE CONCERNEE;
19 ! KTAB (ENTREE) ==> PREMIER MOT A ECRIRE;
20 ! KLONG (ENTREE) ==> LONGUEUR DE L'ARTICLE A ECRIRE;
21 ! KPOSEC (ENTREE) ==> POSITION ( DANS LE FICHIER ) OU
22 ! COMMENCER A ECRIRE L'ARTICLE;
23 ! KRETIN (SORTIE) ==> CODE-RETOUR INTERNE.
24 !
25 !
26 TYPE(lficom) :: LFI
27 INTEGER (KIND=JPLIKB) KREP, KRANG, KLONG, KPOSEC, KRETIN
28 INTEGER (KIND=JPLIKB) KTAB (klong), IFOURT (lfi%jplarx)
29 INTEGER (KIND=JPLIKB) INUCPL (lfi%jpnpdf), INAPHY
30 INTEGER (KIND=JPLIKB) INUMER, ILARPH, IPODEB, IPOFIN
31 INTEGER (KIND=JPLIKB) IARDEB, IARFIN, IDCDEB, IDCFIN
32 INTEGER (KIND=JPLIKB) ICPLTI, ICPLTF, ICPTTN
33 INTEGER (KIND=JPLIKB) ICPTTX, INCPLT, INUMAP, J, JD
34 INTEGER (KIND=JPLIKB) IDECDE, IPAREC, ITAMLI
35 INTEGER (KIND=JPLIKB) INUMPJ, INUMPD, IARTIC, INPDRE
36 INTEGER (KIND=JPLIKB) INPDTA, INPDIS, INDIK1
37 INTEGER (KIND=JPLIKB) INDIK2, INDIC1, INDIC2, JI
38 INTEGER (KIND=JPLIKB) IFACTM, IRETOU, INIMES
39 INTEGER (KIND=JPLIKB) IRETIN
40 !
41 LOGICAL LLADON, LLDERN
42 !
43 CHARACTER(LEN=LFI%JPLSPX) CLNSPR
44 CHARACTER(LEN=LFI%JPLMES) CLMESS
45 CHARACTER(LEN=LFI%JPLFTX) CLACTI
46 LOGICAL LLFATA
47 
48 !**
49 ! 1. - CONTROLES DES PARAMETRES D'APPEL, PUIS INITIALISATIONS.
50 !-----------------------------------------------------------------------
51 !
52 REAL(KIND=JPRB) :: ZHOOK_HANDLE
53 IF (lhook) CALL dr_hook('LFIECD_FORT',0,zhook_handle)
54 clacti=''
55 iretou=0
56 !
57 IF (krang.LE.0.OR.krang.GT.lfi%JPNXFI.OR.kposec.EQ.0) &
58 & THEN
59  krep=-16
60  GOTO 1001
61 ENDIF
62 !
63 inumer=lfi%NUMERO(krang)
64 ifactm=lfi%MFACTM(krang)
65 ilarph=lfi%JPLARD*ifactm
66 krep=0
67 !**
68 ! 2. - PARTIE ECRITURE DES DONNEES .
69 !-----------------------------------------------------------------------
70 !*
71 ! 2.1 - UTILISATION DES ARTICLES PHYSIQUES PRESENTS EN MEMOIRE,
72 ! ET QUE L'ON S'APPRETE A ECRIRE *EN ENTIER*.
73 !-----------------------------------------------------------------------
74 !
75 ipodeb=kposec
76 ipofin=kposec+klong-1
77 iardeb=1+(ipodeb-1)/ilarph
78 iarfin=1+(ipofin-1)/ilarph
79 idcdeb=mod(ipodeb-1,ilarph)
80 idcfin=mod(ipofin ,ilarph)
81 lldern=idcfin.NE.0.AND.((iarfin.NE.iardeb) &
82 & .OR.(iarfin.EQ.iardeb.AND.idcdeb.EQ.0))
83 icplti=iardeb+(idcdeb+ilarph-1)/ilarph
84 icpltf=iarfin-1+(ilarph-idcfin)/ilarph
85 icpttn=icpltf+1
86 icpttx=icplti-1
87 incplt=0
88 !
89 IF (lfi%LMISOP) THEN
90  WRITE (unit=lfi%NULOUT,fmt=*)'KPOSEC= ',kposec, &
91 & ', IPODEB= ',ipodeb, &
92 & ', IPOFIN= ',ipofin
93  WRITE (unit=lfi%NULOUT,fmt=*)'IARDEB= ',iardeb, &
94 & ', IARFIN= ',iarfin, &
95 & ', IDCDEB= ',idcdeb
96  WRITE (unit=lfi%NULOUT,fmt=*)'IDCFIN= ',idcfin, &
97 & ', ICPLTI= ',icplti, &
98 & ', ICPLTF= ',icpltf
99  WRITE (unit=lfi%NULOUT,fmt=*)'ICPTTN= ',icpttn, &
100 & ', ICPTTX= ',icpttx
101 ENDIF
102 !
103 IF (icpltf.GE.icplti) THEN
104 !
105  DO j=0,lfi%JPNPDF-1
106  inumap=lfi%NUMAPD(j,krang)
107 !
108  IF (inumap.GE.icplti.AND.inumap.LE.icpltf) THEN
109  incplt=incplt+1
110  inucpl(incplt)=inumap
111  icpttn=min(icpttn,inumap)
112  icpttx=max(icpttx,inumap)
113  idecde=(inumap-iardeb)*ilarph-idcdeb
114 !
115  DO jd=1,ilarph
116  lfi%MTAMPD(ixt(jd,j,krang))=ktab(idecde+jd)
117  ENDDO
118 !
119  lfi%NLONPD(j,krang)=ilarph
120  lfi%LECRPD(j,krang)=.true.
121  IF (incplt.GT.(icpltf-icplti)) GOTO 220
122  ENDIF
123 !
124  ENDDO
125 !
126 ENDIF
127 !
128 220 CONTINUE
129 !*
130 ! 2.2 - TRAITEMENT DE LA PREMIERE PAGE DE DONNEES, SI L'ARTICLE
131 ! LOGIQUE NE COMMENCE PAS JUSTE EN DEBUT D'ARTICLE PHYSIQUE.
132 ! CETTE PAGE EST CONSERVEE... DES FOIS QUE LE PROCHAIN ACCES
133 ! AU FICHIER SOIT POUR L'ARTICLE LOGIQUE IMMEDIATEMENT DEVANT
134 ! ( CAS DE BALAYAGE INVERSE DU FICHIER, PAR EXEMPLE ) .
135 !-----------------------------------------------------------------------
136 !
137 idecde=0
138 !
139 IF (idcdeb.EQ.0) THEN
140  iparec=0
141  itamli=lfi%JPNPDF
142 ELSE
143  iparec=min(ilarph*iardeb,ipofin)-kposec+1
144  itamli=lfi%JPNPDF-1
145 !
146 ! L'ARTICLE DE DONNEES A ECRIRE NE COMMENCE PAS AU DEBUT D'UN
147 ! ARTICLE PHYSIQUE. IL FAUT DONC AVOIR CET ARTICLE PHYSIQUE
148 ! EN MEMOIRE POUR LE COMPLETER.
149 !
150  DO j=1,lfi%JPNPDF
151  inumpj=mod(lfi%NDERPD(krang)+j,lfi%JPNPDF)
152 !
153  IF (lfi%NUMAPD(inumpj,krang).EQ.iardeb) THEN
154 !
155 ! ARTICLE PHYSIQUE CHERCHE EN MEMOIRE.
156 !
157  IF (lfi%NLONPD(inumpj,krang).LT.idcdeb &
158 & .AND.iardeb.LE.lfi%MDES1D(ixm(lfi%JPAXPD,krang))) THEN
159 !
160 ! LA PAGE DE DONNEES EST INSUFFISAMMENT REMPLIE, ET A
161 ! UN ARTICLE ASSOCIE SUR FICHIER; IL FAUT DONC LIRE CET ARTICLE,
162 ! ET RECOLLER LES MORCEAUX...
163 !
164  inaphy=iardeb
165  CALL lfildo_fort &
166 & (lfi, krep,inumer,iardeb,ifourt,&
167 & lfi%NBREAD(krang),ifactm, &
168 & lfi%YLFIC (krang),iretin)
169 !
170  IF (iretin.NE.0) THEN
171  GOTO 904
172  ENDIF
173 !
174  DO jd=lfi%NLONPD(inumpj,krang)+1,ilarph
175  lfi%MTAMPD(ixt(jd,inumpj,krang))=ifourt(jd)
176  ENDDO
177 !
178  lfi%NLONPD(inumpj,krang)=ilarph
179  ENDIF
180 !
181  inumpd=inumpj
182  GOTO 223
183  ENDIF
184 !
185  ENDDO
186 !
187 ! ARTICLE PHYSIQUE CHERCHE PAS EN MEMOIRE... ON DOIT DONC LE LIRE.
188 !
189  inumpd=mod(1+lfi%NDERPD(krang),lfi%JPNPDF)
190  inaphy=0
191 !
192  IF (lfi%LECRPD(inumpd,krang)) THEN
193 !
194  CALL lfivid_fort &
195 & (lfi, krep,krang,inumpd,ifourt,iretin)
196 !
197  IF (iretin.EQ.1) THEN
198  GOTO 903
199  ELSEIF (iretin.EQ.2) THEN
200  GOTO 904
201  ELSEIF (iretin.NE.0) THEN
202  GOTO 1001
203  ENDIF
204 !
205  ENDIF
206 !
207  lfi%NUMAPD(inumpd,krang)=lfi%JPNIL
208  inaphy=iardeb
209  CALL lfildo_fort &
210 & (lfi, krep,inumer,iardeb, &
211 & lfi%MTAMPD(ixt(1_jplikb ,inumpd,krang)), &
212 & lfi%NBREAD(krang),ifactm, &
213 & lfi%YLFIC (krang),iretin)
214 !
215  IF (iretin.NE.0) THEN
216  GOTO 904
217  ENDIF
218 !
219  lfi%NUMAPD(inumpd,krang)=iardeb
220  lfi%NLONPD(inumpd,krang)=ilarph
221 !
222 223 CONTINUE
223 !
224 ! COMPLEMENT DE LA PAGE DE DONNEES ASSOCIEE AU PREMIER ARTICLE
225 ! PHYSIQUE OU DOIVENT ETRE STOCKEES LES DONNEES A ECRIRE.
226 !
227  DO jd=1,iparec
228  lfi%MTAMPD(ixt(idcdeb+jd,inumpd,krang))=ktab(jd)
229  ENDDO
230 !
231  lfi%LECRPD(inumpd,krang)=.true.
232  lfi%NLONPD(inumpd,krang)=max(lfi%NLONPD(inumpd,krang), &
233 & idcdeb+iparec)
234  lfi%NDERPD(krang)=inumpd
235 ENDIF
236 !*
237 ! 2.3 - ECRITURE DES ARTICLES PHYSIQUES COMPLETS NE TENANT PAS OU NE
238 ! DEVANT PAS ETRE STOCKES DANS LES PAGES DE DONNEES "TAMPON".
239 ! S'IL Y EN A, LES EVENTUELLES PAGES DE DONNEES COPIEES AUX
240 ! PARAGRAPHES PRECEDENTS (2.1 ET 2.2) PRECEDANT CES ARTICLES
241 ! DANS LE FICHIER SERONT ALORS ELLES AUSSI ECRITES SUR DISQUE.
242 !-----------------------------------------------------------------------
243 !
244 IF (.NOT.lfi%LTAMPE(krang)) THEN
245  itamli=0
246 ELSEIF (lldern) THEN
247  itamli=itamli-1
248 ENDIF
249 !
250 iartic=icplti-1
251 inpdre=(klong-iparec-idcfin+ilarph-1)/ilarph-incplt
252 inpdta=min(inpdre,itamli)
253 inpdis=inpdre-itamli
254 indik1=1
255 indik2=incplt
256 lladon=.true.
257 !
258 DO j=1,inpdis
259 !
260 231 CONTINUE
261 iartic=iartic+1
262 IF (lfi%LMISOP) WRITE (unit=lfi%NULOUT,fmt=*) &
263 & 'BOUCLE 235, J= ',j,', IARTIC= ',iartic,', IDECDE= ',idecde
264 !
265 IF (iartic.GE.icpttn.AND.iartic.LE.icpttx) THEN
266  IF (iartic.EQ.icpttn) icpttn=icpttn+1
267  IF (iartic.EQ.icpttx) icpttx=icpttx-1
268  indic1=indik1
269  indic2=indik2
270 !
271 ! ON FILTRE LES ARTICLES PHYSIQUES DEJA STOCKES DANS DES PAGES
272 ! DE DONNEES LORS DE LA PARTIE 2.1 ...
273 !
274  DO ji=indic1,indic2
275 !
276  IF (iartic.EQ.inucpl(ji)) THEN
277  IF (ji.EQ.indik1) indik1=indik1+1
278  IF (ji.EQ.indik2) indik2=indik2-1
279  GOTO 231
280  ENDIF
281 !
282  ENDDO
283 !
284 ENDIF
285 !
286 idecde=(iartic-iardeb)*ilarph-idcdeb
287 inaphy=0
288 CALL lfiecx_fort &
289 & (lfi, krep,krang,iartic,ktab(idecde+1), &
290 & lladon,iretin)
291 !
292 IF (iretin.EQ.1) THEN
293  GOTO 903
294 ELSEIF (iretin.EQ.2) THEN
295  GOTO 904
296 ELSEIF (iretin.NE.0) THEN
297  GOTO 1001
298 ENDIF
299 !
300 ENDDO
301 !*
302 ! 2.4 - ECRITURE DES ARTICLES PHYSIQUES COMPLETS QUE L'ON PEUT STOC-
303 ! KER DANS LES PAGES DE DONNEES "TAMPON".
304 ! ( TOUT EN PRESERVANT LES EMPLACEMENTS DE LA PREMIERE ET/OU
305 ! DE LA DERNIERE PAGE DE DONNEES, SI INCOMPLETE(S) )
306 !-----------------------------------------------------------------------
307 !
308 DO j=1,inpdta
309 inumpd=mod(lfi%NDERPD(krang)+j,lfi%JPNPDF)
310 !
311 241 CONTINUE
312 iartic=iartic+1
313 !
314 IF (iartic.GE.icpttn.AND.iartic.LE.icpttx) THEN
315  IF (iartic.EQ.icpttn) icpttn=icpttn+1
316  IF (iartic.EQ.icpttx) icpttx=icpttx-1
317  indic1=indik1
318  indic2=indik2
319 !
320 ! ON FILTRE LES ARTICLES PHYSIQUES DEJA STOCKES DANS DES PAGES
321 ! DE DONNEES LORS DE LA PARTIE 2.1 ...
322 !
323  DO ji=indic1,indic2
324 !
325  IF (iartic.EQ.inucpl(ji)) THEN
326  IF (ji.EQ.indik1) indik1=indik1+1
327  IF (ji.EQ.indik2) indik2=indik2-1
328  GOTO 241
329  ENDIF
330 !
331  ENDDO
332 !
333 ENDIF
334 !
335 ! SI NECESSAIRE, "VIDAGE" SUR FICHIER DE LA PAGE A UTILISER.
336 !
337 inaphy=0
338 !
339 IF (lfi%LECRPD(inumpd,krang)) THEN
340 !
341  CALL lfivid_fort &
342 & (lfi, krep,krang,inumpd,ifourt,iretin)
343 !
344  IF (iretin.EQ.1) THEN
345  GOTO 903
346  ELSEIF (iretin.EQ.2) THEN
347  GOTO 904
348  ELSEIF (iretin.NE.0) THEN
349  GOTO 1001
350  ENDIF
351 !
352 ENDIF
353 !
354 idecde=(iartic-iardeb)*ilarph-idcdeb
355 !
356 DO jd=1,ilarph
357 lfi%MTAMPD(ixt(jd,inumpd,krang))=ktab(idecde+jd)
358 ENDDO
359 !
360 lfi%LECRPD(inumpd,krang)=.true.
361 lfi%NUMAPD(inumpd,krang)=iartic
362 lfi%NLONPD(inumpd,krang)=ilarph
363 ENDDO
364 !
365 lfi%NDERPD(krang)=mod(lfi%NDERPD(krang)+inpdta,lfi%JPNPDF)
366 !*
367 ! 2.5 - TRAITEMENT DE LA DERNIERE PAGE DE DONNEES SI ELLE EST
368 ! INCOMPLETE, ET SI ON EST DANS L'UN DES 2 CAS SUIVANTS:
369 ! SOIT ELLE DIFFERE DE LA PREMIERE, SOIT C'EST LA MEME QUE LA
370 ! PREMIERE ET ELLE COMMENCE JUSTE EN DEBUT D'ARTICLE PHYSIQUE.
371 ! CETTE PAGE EST CONSERVEE...EN ESPERANT QUE LE PROCHAIN ACCES
372 ! AU FICHIER SERA POUR L'ARTICLE LOGIQUE IMMEDIATEMENT
373 ! DERRIERE ( CAS DE CREATION DU FICHIER, PAR EXEMPLE ) .
374 !-----------------------------------------------------------------------
375 !
376 IF (lldern) THEN
377 !
378  DO j=1,lfi%JPNPDF
379  inumpj=mod(lfi%NDERPD(krang)+j,lfi%JPNPDF)
380 !
381  IF (lfi%NUMAPD(inumpj,krang).EQ.iarfin) THEN
382 !
383 ! ARTICLE PHYSIQUE CHERCHE EN MEMOIRE.
384 !
385  inumpd=inumpj
386  GOTO 253
387  ENDIF
388 !
389  ENDDO
390 !
391 ! ARTICLE PHYSIQUE CHERCHE PAS EN MEMOIRE...
392 !
393  inumpd=mod(1+lfi%NDERPD(krang),lfi%JPNPDF)
394  inaphy=0
395 !
396  IF (lfi%LECRPD(inumpd,krang)) THEN
397 !
398  CALL lfivid_fort &
399 & (lfi, krep,krang,inumpd,ifourt,iretin)
400 !
401  IF (iretin.EQ.1) THEN
402  GOTO 903
403  ELSEIF (iretin.EQ.2) THEN
404  GOTO 904
405  ELSEIF (iretin.NE.0) THEN
406  GOTO 1001
407  ENDIF
408 !
409  ENDIF
410 !
411  IF (iarfin.LE.lfi%MDES1D(ixm(lfi%JPAXPD,krang))) THEN
412  lfi%NUMAPD(inumpd,krang)=lfi%JPNIL
413  inaphy=iarfin
414  CALL lfildo_fort &
415 & (lfi, krep,inumer,iarfin, &
416 & lfi%MTAMPD(ixt(1_jplikb ,inumpd,krang)), &
417 & lfi%NBREAD(krang),ifactm, &
418 & lfi%YLFIC (krang),iretin)
419 !
420  IF (iretin.NE.0) THEN
421  GOTO 904
422  ENDIF
423 !
424  lfi%NLONPD(inumpd,krang)=ilarph
425  ELSE
426  lfi%NLONPD(inumpd,krang)=0
427  ENDIF
428 !
429  lfi%NUMAPD(inumpd,krang)=iarfin
430 !
431 253 CONTINUE
432  idecde=(iarfin-iardeb)*ilarph-idcdeb
433 !
434 ! COMPLEMENT DE LA PAGE DE DONNEES ASSOCIEE AU DERNIER ARTICLE
435 ! PHYSIQUE OU DOIVENT ETRE STOCKEES LES DONNEES A ECRIRE.
436 !
437  DO jd=1,idcfin
438  lfi%MTAMPD(ixt(jd,inumpd,krang))=ktab(idecde+jd)
439  ENDDO
440 !
441  lfi%LECRPD(inumpd,krang)=.true.
442  lfi%NLONPD(inumpd,krang)=max(lfi%NLONPD(inumpd,krang),idcfin)
443  lfi%NDERPD(krang)=inumpd
444 ENDIF
445 !
446 GOTO 1001
447 !**
448 ! 9. - CI-DESSOUS, ETIQUETTES DE BRANCHEMENT EN CAS D'ERREUR E/S.
449 ! AU CAS OU, ON FORCE LE CODE-REPONSE ENTREE/SORTIE A ETRE POSITIF.
450 !-----------------------------------------------------------------------
451 !
452 903 CONTINUE
453 iretou=1
454 clacti='WRITE'
455 GOTO 909
456 !
457 904 CONTINUE
458 iretou=2
459 clacti='READ'
460 !
461 909 CONTINUE
462 krep=abs(krep)
463 IF (inaphy.NE.0) lfi%NUMAPH(krang)=inaphy
464 !**
465 ! 10. - PHASE TERMINALE : MESSAGERIE INTERNE EVENTUELLE,
466 ! VIA LE SOUS-PROGRAMME "LFIEMS", PUIS RETOUR.
467 !-----------------------------------------------------------------------
468 !
469 1001 CONTINUE
470 llfata=llmoer(krep,krang)
471 !
472 IF (krep.EQ.0) THEN
473  kretin=0
474 ELSEIF (krep.GT.0) THEN
475  kretin=iretou
476 ELSE
477  kretin=3
478 ENDIF
479 !
480 IF (lfi%LMISOP.OR.llfata) THEN
481  inimes=2
482  clnspr='LFIECD'
483  WRITE (unit=clmess,fmt='(''KREP='',I4,'', KRANG='',I3, &
484 & '', KLONG='',I7,'', KPOSEC='',I8,'', KRETIN='',I2)') &
485 & krep, krang, klong, kposec, kretin
486  CALL lfiems_fort &
487 & (lfi, inumer,inimes,krep,.false., &
488 & clmess,clnspr,clacti)
489 ENDIF
490 !
491 IF (lhook) CALL dr_hook('LFIECD_FORT',1,zhook_handle)
492 
493 CONTAINS
494 
495 #include "lficom2.ixm.h"
496 #include "lficom2.ixt.h"
497 #include "lficom2.llmoer.h"
498 
499 END SUBROUTINE lfiecd_fort
500 
501 
502 
503 ! Oct-2012 P. Marguinaud 64b LFI
504 SUBROUTINE lfiecd64 &
505 & (krep, krang, ktab, klong, kposec, kretin)
506 USE lfimod, ONLY : lfi => lficom_default, &
509 USE lfi_precision
510 IMPLICIT NONE
511 ! Arguments
512 INTEGER (KIND=JPLIKB) KREP ! OUT
513 INTEGER (KIND=JPLIKB) KRANG ! IN
514 INTEGER (KIND=JPLIKB) KLONG ! IN
515 INTEGER (KIND=JPLIKB) KTAB (klong) ! IN
516 INTEGER (KIND=JPLIKB) KPOSEC ! IN
517 INTEGER (KIND=JPLIKB) KRETIN ! OUT
518 
519 IF (.NOT. lficom_default_init) CALL new_lfi_default ()
520 
521 CALL lfiecd_fort &
522 & (lfi, krep, krang, ktab, klong, kposec, kretin)
523 
524 END SUBROUTINE lfiecd64
525 
526 SUBROUTINE lfiecd &
527 & (krep, krang, ktab, klong, kposec, kretin)
528 USE lfimod, ONLY : lfi => lficom_default, &
531 USE lfi_precision
532 IMPLICIT NONE
533 ! Arguments
534 INTEGER (KIND=JPLIKM) KREP ! OUT
535 INTEGER (KIND=JPLIKM) KRANG ! IN
536 INTEGER (KIND=JPLIKM) KLONG ! IN
537 INTEGER (KIND=JPLIKB) KTAB (klong) ! IN
538 INTEGER (KIND=JPLIKM) KPOSEC ! IN
539 INTEGER (KIND=JPLIKM) KRETIN ! OUT
540 
541 IF (.NOT. lficom_default_init) CALL new_lfi_default ()
542 
543 CALL lfiecd_mt &
544 & (lfi, krep, krang, ktab, klong, kposec, kretin)
545 
546 END SUBROUTINE lfiecd
547 
548 SUBROUTINE lfiecd_mt &
549 & (lfi, krep, krang, ktab, klong, kposec, kretin)
550 USE lfimod, ONLY : lficom
551 USE lfi_precision
552 IMPLICIT NONE
553 ! Arguments
554 type(lficom) lfi ! INOUT
555 INTEGER (KIND=JPLIKM) KREP ! OUT
556 INTEGER (KIND=JPLIKM) KRANG ! IN
557 INTEGER (KIND=JPLIKM) KLONG ! IN
558 INTEGER (KIND=JPLIKB) KTAB (klong) ! IN
559 INTEGER (KIND=JPLIKM) KPOSEC ! IN
560 INTEGER (KIND=JPLIKM) KRETIN ! OUT
561 ! Local integers
562 INTEGER (KIND=JPLIKB) IREP ! OUT
563 INTEGER (KIND=JPLIKB) IRANG ! IN
564 INTEGER (KIND=JPLIKB) ILONG ! IN
565 INTEGER (KIND=JPLIKB) IPOSEC ! IN
566 INTEGER (KIND=JPLIKB) IRETIN ! OUT
567 ! Convert arguments
568 
569 irang = int( krang, jplikb)
570 ilong = int( klong, jplikb)
571 iposec = int( kposec, jplikb)
572 
573 CALL lfiecd_fort &
574 & (lfi, irep, irang, ktab, ilong, iposec, iretin)
575 
576 krep = int( irep, jplikm)
577 kretin = int( iretin, jplikm)
578 
579 END SUBROUTINE lfiecd_mt
580 
581 !INTF KREP OUT
582 !INTF KRANG IN
583 !INTF KTAB IN DIMS=KLONG KIND=JPLIKB
584 !INTF KLONG IN
585 !INTF KPOSEC IN
586 !INTF KRETIN OUT
integer, parameter jplikb
subroutine lfiecd_mt(LFI, KREP, KRANG, KTAB, KLONG, KPOSEC, KRETIN)
Definition: lfiecd.F90:550
subroutine lfiecx_fort(LFI, KREP, KRANG, KREC, KZONE, LDADON, KRETIN)
Definition: lfiecx.F90:6
subroutine lfildo_fort(LFI, KREP, KNUMER, KREC, KTAB, KNBLEC, KFACTM, YDFIC, KRETIN)
Definition: lfildo.F90:6
subroutine lfiecd(KREP, KRANG, KTAB, KLONG, KPOSEC, KRETIN)
Definition: lfiecd.F90:528
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 lfiecd64(KREP, KRANG, KTAB, KLONG, KPOSEC, KRETIN)
Definition: lfiecd.F90:506
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
subroutine lfivid_fort(LFI, KREP, KRANG, KNUMPD, KTAMPO, KRETIN)
Definition: lfivid.F90:5
Definition: lfimod.F90:1
subroutine lfiecd_fort(LFI, KREP, KRANG, KTAB, KLONG, KPOSEC, KRETIN)
Definition: lfiecd.F90:6