SURFEX v8.1
General documentation of Surfex
fadiex.F90
Go to the documentation of this file.
1 ! Oct-2012 P. Marguinaud 64b LFI
2 ! Jan-2011 P. Marguinaud Thread-safe FA
3 SUBROUTINE fadiex_fort &
4 & (fa, krep, knumer, kdatef )
5 USE fa_mod, ONLY : fa_com
6 USE parkind1, ONLY : jprb
7 USE yomhook , ONLY : lhook, dr_hook
9 IMPLICIT NONE
10 !****
11 ! Sous-programme permettant d'obtenir la date d'un fichier ouvert
12 ! pour le logiciel de Fichiers ARPEGE, et deja muni d'une date.
13 ! ( "DIES" = jour en latin... )
14 !**
15 ! Arguments : KREP (Sortie) ==> Code-reponse du sous-programme;
16 ! KNUMER (Entree) ==> Numero de l'unite logique;
17 ! (Tableau) KDATEF (Sortie) ==> Date elle-meme (FA%JPLDAT mots).
18 !
19 !
20 !
21 TYPE(fa_com) :: FA
22 INTEGER (KIND=JPLIKB) KREP, KNUMER
23 INTEGER (KIND=JPLIKB) KDATEF (fa%jpldat*2)
24 !
25 INTEGER (KIND=JPLIKB) IRANG, IREP, INIMES, J
26 !
27 LOGICAL LLVERF
28 !
29 CHARACTER(LEN=FA%JPXNOM) CLACTI
30 CHARACTER(LEN=FA%JPLMES) CLMESS
31 CHARACTER(LEN=FA%JPLSPX) CLNSPR
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('FADIEX_MT',0,zhook_handle)
40 clacti=''
41 llverf=.false.
42 CALL fanumu_fort &
43 & (fa, knumer,irang)
44 !
45 IF (irang.EQ.0) THEN
46  irep=-51
47  GOTO 1001
48 ENDIF
49 !
50 ! Verrouillage eventuel du fichier.
51 !
52 IF (fa%LFAMUL) CALL lfiver_fort &
53 & (fa%LFI, fa%FICHIER(irang)%VRFICH,'ON')
54 llverf=fa%LFAMUL
55 !**
56 ! 2. - CONTROLE DE DEFINITION PREALABLE DE LA DATE.
57 !-----------------------------------------------------------------------
58 !
59 IF (fa%FICHIER(irang)%LCREAF) THEN
60  irep=-85
61  GOTO 1001
62 ENDIF
63 !**
64 ! 3. - TRANSFERT DE LA TABLE "FA%MADATE" DANS LE TABLEAU ARGUMENT.
65 !-----------------------------------------------------------------------
66 !
67 kdatef(1:fa%JPLDAT)=fa%FICHIER(irang)%MADATE(:)
68 kdatef(fa%JPLDAT+1:fa%JPLDAT*2)=fa%FICHIER(irang)%MADATX(:)
69 !
70 irep=0
71 !**
72 ! 10. - PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
73 ! VIA LE SOUS-PROGRAMME "FAIPAR" .
74 !-----------------------------------------------------------------------
75 !
76 1001 CONTINUE
77 krep=irep
78 llfata=llmoer(irep,irang)
79 !
80 ! Deverrouillage eventuel du fichier.
81 !
82 IF (llverf) CALL lfiver_fort &
83 & (fa%LFI, fa%FICHIER(irang)%VRFICH,'OFF')
84 !
85 IF (llfata.OR.ixnvms(irang).EQ.2) THEN
86  inimes=2
87 ELSE
88  IF (lhook) CALL dr_hook('FADIEX_MT',1,zhook_handle)
89  RETURN
90 ENDIF
91 !
92 clnspr='FADIEX'
93 !
94 IF (inimes.EQ.2) THEN
95  WRITE (unit=clmess,fmt='(''KREP='',I4,'', KNUMER='',I3, &
96 & '', KDATEF(1:5)='',I5,2(''/'',I2),I3,'':'',I2.2, &
97 & '', KDATEF(7:8)='',I6,''-'',I6)') krep,knumer, &
98 & (kdatef(j),j=1,5),(kdatef(j),j=7,8)
99  CALL faipar_fort &
100 & (fa, knumer,inimes,irep,llfata,clmess, &
101 & clnspr,clacti,.false.)
102 ENDIF
103 !
104 IF (lhook) CALL dr_hook('FADIEX_MT',1,zhook_handle)
105 
106 CONTAINS
107 
108 #include "facom2.llmoer.h"
109 #include "facom2.ixnvms.h"
110 
111 END SUBROUTINE fadiex_fort
112 
113 
114 
115 ! Oct-2012 P. Marguinaud 64b LFI
116 SUBROUTINE fadiex64 &
117 & (krep, knumer, kdatef)
118 USE fa_mod, ONLY : fa => fa_com_default, &
121 USE lfi_precision
122 IMPLICIT NONE
123 ! Arguments
124 INTEGER (KIND=JPLIKB) KREP ! OUT
125 INTEGER (KIND=JPLIKB) KNUMER ! IN
126 INTEGER (KIND=JPLIKB) KDATEF (*) ! OUT
127 
128 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
129 
130 CALL fadiex_fort &
131 & (fa, krep, knumer, kdatef)
132 
133 END SUBROUTINE fadiex64
134 
135 SUBROUTINE fadiex &
136 & (krep, knumer, kdatef)
137 USE fa_mod, ONLY : fa => fa_com_default, &
140 USE lfi_precision
141 IMPLICIT NONE
142 ! Arguments
143 INTEGER (KIND=JPLIKM) KREP ! OUT
144 INTEGER (KIND=JPLIKM) KNUMER ! IN
145 INTEGER (KIND=JPLIKM) KDATEF (*) ! OUT
146 
147 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
148 
149 CALL fadiex_mt &
150 & (fa, krep, knumer, kdatef)
151 
152 END SUBROUTINE fadiex
153 
154 SUBROUTINE fadiex_mt &
155 & (fa, krep, knumer, kdatef)
156 USE fa_mod, ONLY : fa_com
157 USE lfi_precision
158 IMPLICIT NONE
159 ! Arguments
160 type(fa_com) fa ! INOUT
161 INTEGER (KIND=JPLIKM) KREP ! OUT
162 INTEGER (KIND=JPLIKM) KNUMER ! IN
163 INTEGER (KIND=JPLIKM) KDATEF (fa%jpldat*2) ! OUT
164 ! Local integers
165 INTEGER (KIND=JPLIKB) IREP ! OUT
166 INTEGER (KIND=JPLIKB) INUMER ! IN
167 INTEGER (KIND=JPLIKB) IDATEF (fa%jpldat*2) ! OUT
168 ! Convert arguments
169 
170 inumer = int( knumer, jplikb)
171 
172 CALL fadiex_fort &
173 & (fa, irep, inumer, idatef)
174 
175 krep = int( irep, jplikm)
176 kdatef = int( idatef, jplikm)
177 
178 END SUBROUTINE fadiex_mt
179 
180 !INTF KREP OUT
181 !INTF KNUMER IN
182 !INTF KDATEF OUT DIMS=FA%JPLDAT*2
183 
integer, parameter jplikb
subroutine fadiex64(KREP, KNUMER, KDATEF)
Definition: fadiex.F90:118
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine new_fa_default()
Definition: fa_mod.F90:649
subroutine fadiex_mt(FA, KREP, KNUMER, KDATEF)
Definition: fadiex.F90:156
Definition: fa_mod.F90:1
subroutine fadiex_fort(FA, KREP, KNUMER, KDATEF)
Definition: fadiex.F90:5
subroutine lfiver_fort(LFI, PVEROU, CDSENS)
Definition: lfiver.F90:6
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
subroutine faipar_fort(FA, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
Definition: faipar.F90:6
subroutine fadiex(KREP, KNUMER, KDATEF)
Definition: fadiex.F90:137
subroutine fanumu_fort(FA, KNUMER, KRANG)
Definition: fanumu.F90:5