SURFEX v8.1
General documentation of Surfex
lfilcc.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 lfilcc_fort &
4 & (lfi, krep, knumer, krec, cdtab, &
5 & knblec, kfactm, ydfic, kretin)
6 USE lfimod, ONLY : lficom, lficrw
7 USE parkind1, ONLY : jprb, jpia, jpib, jpim
8 USE yomhook , ONLY : lhook, dr_hook
10 IMPLICIT NONE
11 !****
12 ! Sous-programme charge des Lectures de Chaines de Caracteres
13 ! du logiciel LFI (articles d'index "noms").
14 !**
15 ! Arguments: KREP (Sortie) ==> Code-reponse ( zero si OK; code-
16 ! reponse du "READ" FORTRAN sinon);
17 ! KNUMER (Entree) ==> NUMERo d'unite logique FORTRAN;
18 ! KREC (Entree) ==> Numero d'enregistrement a lire;
19 ! KTAB (Sortie) ==> Zone a lire, de Longueur
20 ! LFI%JPLARD*KFACTM *mots*;
21 ! KNBLEC (Entree) ==> Compteur de LECtures sur l'unite;
22 ! +Sortie)
23 ! KFACTM (Entree) ==> FACteur Multiplicatif LFI de
24 ! l'unite logique;
25 ! KRETIN (Sortie) ==> Code-retour interne.
26 !
27 !
28 TYPE(lficom) :: LFI
29 INTEGER (KIND=JPLIKB) KREP, KNUMER, KREC, KNBLEC, KFACTM, KRETIN
30 type(lficrw) ydfic
31 !
32 INTEGER (KIND=JPIB) IREP, ISIZE
33 CHARACTER CDTAB (lfi%jpnxna*kfactm)*(lfi%jpncpn)
34 !
35 ! LECTURE .
36 !
37 REAL(KIND=JPRB) :: ZHOOK_HANDLE
38 IF (lhook) CALL dr_hook('LFILCC_FORT',0,zhook_handle)
39 
40 IF (knumer > 0) THEN
41  READ (unit=knumer,rec=krec,err=901,iostat=krep) cdtab
42 ELSE
43  krep=0
44  CALL lfisee (lfi, ydfic%N_C_FPDESC, ydfic%N_C_OFFSET, kfactm, krec, krep)
45  IF (krep /= 0) GOTO 901
46  isize = int(SIZE (cdtab) * len(cdtab), jplikb)
47  CALL fi_fread (irep, cdtab, 1_jplikb, isize, ydfic%N_C_FPDESC)
48  IF (irep /= isize) THEN
49  krep = 1
50  GOTO 901
51  ENDIF
52  ydfic%N_C_OFFSET = ydfic%N_C_OFFSET + isize
53 ENDIF
54 
55 !
56 IF (lfi%LMISOP) THEN
57  WRITE (unit=lfi%NULOUT,fmt=*) &
58 & '+++++ LFILCC - READ / ',knumer,', REC = ',krec, &
59 & ' +++++'
60 ENDIF
61 !
62 knblec=knblec+1
63 kretin=0
64 GOTO 1001
65 !
66 901 CONTINUE
67 kretin=2
68 !
69 1001 CONTINUE
70 !
71 IF (lhook) CALL dr_hook('LFILCC_FORT',1,zhook_handle)
72 END SUBROUTINE lfilcc_fort
integer, parameter jplikb
integer, parameter jpim
Definition: parkind1.F90:13
integer, parameter jprb
Definition: parkind1.F90:32
subroutine lfilcc_fort(LFI, KREP, KNUMER, KREC, CDTAB, KNBLEC, KFACTM, YDFIC, KRETIN)
Definition: lfilcc.F90:6
integer, parameter jpia
Definition: parkind1.F90:19
logical lhook
Definition: yomhook.F90:15
subroutine lfisee(LFI, KFPDESC, KOFFSET, KFACTM, KREC, KREP)
Definition: lfisee.F90:2
integer, parameter jpib
Definition: parkind1.F90:14
Definition: lfimod.F90:1