SURFEX v8.1
General documentation of Surfex
lfiecc.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 lfiecc_fort &
4 & (lfi, krep, knumer, krec, cdtab, knbecr, &
5 & 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 Ecritures 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 "WRITE" FORTRAN sinon);
17 ! KNUMER (Entree) ==> NUMERo d'unite logique FORTRAN;
18 ! KREC (Entree) ==> Numero d'enregistrement a ecrire;
19 ! KTAB (Sortie) ==> Zone a ecrire, de Longueur
20 ! LFI%JPLARD*KFACTM *mots*;
21 ! KNBECR (Entree ==> Compteur d'ECRitures 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
30 INTEGER (KIND=JPLIKB) KNBECR, KFACTM, KRETIN
31 type(lficrw) ydfic
32 !
33 CHARACTER CDTAB (lfi%jpnxna*kfactm)*(lfi%jpncpn)
34 !
35 INTEGER (KIND=JPIB) IREP, ISIZE
36 !
37 ! ECRITURE .
38 !
39 REAL(KIND=JPRB) :: ZHOOK_HANDLE
40 IF (lhook) CALL dr_hook('LFIECC_FORT',0,zhook_handle)
41 
42 IF (knumer > 0) THEN
43  WRITE (unit=knumer,rec=krec,err=901,iostat=krep) cdtab
44 ELSE
45  krep=0
46  CALL lfisee (lfi, ydfic%N_C_FPDESC, ydfic%N_C_OFFSET, kfactm, krec, krep)
47  IF (krep /= 0) GOTO 901
48  isize = int(SIZE (cdtab) * len(cdtab), jplikb)
49  CALL fi_fwrite (irep, cdtab, 1_jplikb, isize, ydfic%N_C_FPDESC)
50  IF (irep /= isize) THEN
51  krep = 1
52  GOTO 901
53  ENDIF
54  ydfic%N_C_OFFSET = ydfic%N_C_OFFSET + isize
55 ENDIF
56 
57 !
58 IF (lfi%LMISOP) THEN
59  WRITE (unit=lfi%NULOUT,fmt=*) &
60 & '+++++ LFIECC - WRITE / ',knumer,', REC = ',krec, &
61 & ' +++++'
62 ENDIF
63 !
64 knbecr=knbecr+1
65 kretin=0
66 GOTO 1001
67 !
68 901 CONTINUE
69 kretin=1
70 !
71 1001 CONTINUE
72 !
73 IF (lhook) CALL dr_hook('LFIECC_FORT',1,zhook_handle)
74 END SUBROUTINE lfiecc_fort
subroutine lfiecc_fort(LFI, KREP, KNUMER, KREC, CDTAB, KNBECR, KFACTM, YDFIC, KRETIN)
Definition: lfiecc.F90:6
integer, parameter jplikb
integer, parameter jpim
Definition: parkind1.F90:13
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