SURFEX v8.1
General documentation of Surfex
lfildo.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 lfildo_fort &
4 & (lfi, krep, knumer, krec, ktab, knblec, &
5 & kfactm, ydfic, kretin)
6 USE lfimod, ONLY : lficom, lficrw
7 USE parkind1, ONLY : jprb, jpib, jpia, jpim
8 USE yomhook , ONLY : lhook, dr_hook
10 IMPLICIT NONE
11 !****
12 ! Sous-programme charge des Lectures de DOnnees du logiciel LFI,
13 ! *SAUF* pour les articles d'index de type caractere.
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=JPLIKB) KTAB (lfi%jplard*kfactm)
33 INTEGER (KIND=JPIB) IREP, ISIZE
34 
35 !
36 ! LECTURE .
37 !
38 REAL(KIND=JPRB) :: ZHOOK_HANDLE
39 IF (lhook) CALL dr_hook('LFILDO_FORT',0,zhook_handle)
40 
41 IF (knumer > 0) THEN
42  READ (unit=knumer,rec=krec,err=901,iostat=krep) ktab
43 ELSE
44  krep=0
45  CALL lfisee (lfi, ydfic%N_C_FPDESC, ydfic%N_C_OFFSET, kfactm, krec, krep)
46  IF (krep /= 0) GOTO 901
47  isize = int(SIZE (ktab) * 8, jplikb)
48  CALL fi_fread (irep, ktab, 1_jplikb, isize, ydfic%N_C_FPDESC)
49  IF (irep /= isize) THEN
50  krep = 1
51  GOTO 901
52  ENDIF
53  ydfic%N_C_OFFSET = ydfic%N_C_OFFSET + isize
54 ENDIF
55 
56 !IF (YDFIC%L_C_BTSWAP) CALL JSWAP (KTAB, KTAB, 8_JPLIKM, INT (SIZE (KTAB), JPLIKM))
57 
58 IF (lfi%LMISOP) THEN
59  WRITE (unit=lfi%NULOUT,fmt=*) &
60 & '+++++ LFILDO - READ / ',knumer,', REC = ',krec, &
61 & ' +++++'
62 ENDIF
63 !
64 knblec=knblec+1
65 kretin=0
66 GOTO 1001
67 !
68 901 CONTINUE
69 kretin=2
70 !
71 1001 CONTINUE
72 !
73 IF (lhook) CALL dr_hook('LFILDO_FORT',1,zhook_handle)
74 END SUBROUTINE lfildo_fort
integer, parameter jplikb
integer, parameter jpim
Definition: parkind1.F90:13
subroutine lfildo_fort(LFI, KREP, KNUMER, KREC, KTAB, KNBLEC, KFACTM, YDFIC, KRETIN)
Definition: lfildo.F90:6
integer, parameter jprb
Definition: parkind1.F90:32
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