4 & (fa, krep, krang, cdnoma, kvalco, klonga, &
5 & pchamp, ldcosp, cdpref, knivau, cdsuff, &
40 INTEGER (KIND=JPLIKB) KREP, KRANG, KLONGA, KNIVAU
42 INTEGER (KIND=JPLIKB),
TARGET :: KVALCO(klonga)
43 REAL (KIND=JPDBLR) PCHAMP(*)
45 REAL (KIND=JPDBLR) PUNDF
47 LOGICAL LDCOSP, LDUNDF, LLUNDF, LLLTLN
49 CHARACTER CDNOMA*(*), CDPREF*(*), CDSUFF*(*)
51 REAL (KIND=JPDBLR) ZUNDF
53 INTEGER (KIND=JPLIKB) ILCHAM
54 INTEGER (KIND=JPLIKB) ITRONC
55 INTEGER (KIND=JPLIKB) INIMES
56 INTEGER (KIND=JPLIKB) INUMER
58 LOGICAL LLMLAM, LLCOSP, LLMGLO
60 type(
fafich),
POINTER :: ylfich
61 type(
facadr),
POINTER :: ylcadr
63 CHARACTER,
ALLOCATABLE :: CLGRIB (:)
65 REAL (KIND=JPDBLR),
ALLOCATABLE :: ZCHAMP (:)
67 INTEGER (KIND=JPLIKB) ILGRIB, IRANGC
68 INTEGER (KIND=JPLIKB) JLAT, JLON, JN, IDX, J
69 INTEGER (KIND=JPLIKM) IGRIBH, IRET, IBITMAP, INDATV, IBTMP
70 CHARACTER(LEN=FA%JPLSPX) CLNSPR
71 CHARACTER(LEN=FA%JPLMES) CLMESS
72 CHARACTER(LEN=FA%JPXNOM) CLNOMU
74 INTEGER (KIND=JPLIKB) IMULTM, IMULTE
76 REAL (KIND=JPDBLR) ZMULTI
77 INTEGER IEDITION, IPARAM
78 LOGICAL LLLOCSEC, LLGRIB1
84 REAL(KIND=JPRB) :: ZHOOK_HANDLE
90 ylfich => fa%FICHIER(krang)
91 irangc = ylfich%NUCADR
92 ylcadr => fa%CADRE(irangc)
94 llmlam = ylcadr%LIMLAM
95 llltln = ylcadr%SINLAT(2) < 0 .AND. llmlam
96 llmglo = (.NOT. llltln) .AND. (.NOT. llmlam)
106 IF ((.NOT. falgra(kvalco(1))).OR. &
107 & kvalco(2).LT.0.OR.kvalco(2).GT.1)
THEN 111 llcosp=kvalco(2).EQ.1
114 IF ((llcosp.AND..NOT.ldcosp).OR.(.NOT.llcosp.AND.ldcosp))
THEN 121 ilcham = ylcadr%NSFLAM
123 ilcham =(1+ylcadr%MTRONC)*(2+ylcadr%MTRONC)
134 ilgrib = (klonga-3)*8
136 ALLOCATE (clgrib(ilgrib))
137 clgrib = transfer(kvalco(4:klonga), clgrib)
138 CALL grib_new_from_message_char (igribh, clgrib, status=iret)
142 llgrib1 = iedition == 1
150 IF (.NOT. lllocsec)
THEN 156 IF (.NOT. lllocsec)
THEN 159 CALL stru (cdsuff, clnomu)
161 CALL stru (cdnoma, clnomu)
172 IF (iparam == 255)
THEN 173 WRITE (fa%NULOUT,
'(" FADGRA: Field `",A,"'' is not & 174 &declared in `faFieldName.def'' and has no encoded & 175 &FMULTM and FMULTE")')
trim(cdnoma)
181 zmulti =
REAL (IMULTM, JPDBLR) * 10._JPDBLR ** IMULTE
195 IF (indatv < ilcham)
THEN 198 ELSEIF (indatv > ilcham)
THEN 205 ALLOCATE (zchamp(ilcham))
208 DO jlat = 1, ylcadr%NLATIT
209 DO jlon = 1, ylcadr%NXLOPA
210 jn = jlon+ylcadr%NXLOPA*(jlat-1)
211 idx = jlon+ylcadr%NXLOPA*(ylcadr%NLATIT-jlat)
212 pchamp(jn) = zchamp(idx)
223 llundf = ibitmap /= 0
235 pchamp(1:ilcham) = pchamp(1:ilcham) / zmulti
236 zundf = zundf / zmulti
239 IF (ldundf .AND. llundf)
THEN 241 IF (pchamp(j) == zundf)
THEN 257 llfata=llmoer(krep,krang)
259 IF (fa%LFAMOP.OR.llfata)
THEN 264 WRITE (unit=clmess,fmt=
'(''KREP='',I5,'', KRANG='',I4, & 265 & '', CDNOMA='''''',A,'''''', KLONGA= '',I8, & 266 & '', LDCOSP='',L1)') &
267 & krep, krang, cdnoma, klonga, ldcosp
269 & (fa, inumer,inimes,krep,.false.,clmess, &
270 & clnspr,cdnoma,.false.)
277 #include "facom2.llmoer.h" 280 SUBROUTINE stru (CDS, CDU)
281 CHARACTER (LEN=*) :: CDS, CDU
282 INTEGER (KIND=JPLIKB) :: J
288 DO j = 1, len_trim(cds)
289 IF (cds(j:j) ==
' ')
THEN subroutine, public igrib_is_defined(KHANDLE, CDKEY, LDDEFINED, KRET)
static const char * trim(const char *name, int *n)
subroutine fadgra_fort(FA, KREP, KRANG, CDNOMA, KVALCO, KLONGA, PCHAMP, LDCOSP, CDPREF, KNIVAU, CDSUFF, LDUNDF, PUNDF)
subroutine, public igrib_release(KHANDLE)
integer, parameter jpdblr
subroutine stru(CDS, CDU)
subroutine faipar_fort(FA, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
integer(kind=jplikb), parameter jpniil