SURFEX v8.1
General documentation of Surfex
grib_api_interface.F90
Go to the documentation of this file.
2 
3 !define GRIB_API_TRACE
4 
5 !**** Interface to GRIB_API
6 
7 ! Purpose.
8 ! --------
9 ! Fortran 90 Interface to calling GRIB API
10 
11 ! Author.
12 ! -------
13 ! M.Hamrud ECMWF
14 
15 ! Modifications.
16 ! --------------
17 ! Original: 2005-11-15
18 ! F. Vana 05-Mar-2015 Support for single precision
19 
20 ! ------------------------------------------------------------------
21 
22 USE parkind1 , ONLY : jprd, jpim, jpib, jprb, jprm
23 USE yomhook , ONLY : lhook, dr_hook
24 USE grib_api
25 #ifdef SFX_MPI
26 USE mpl_module, ONLY : mpl_abort
27 #endif
28 IMPLICIT NONE
29 
30 INTERFACE igrib_get_value
31 MODULE PROCEDURE &
35 END INTERFACE
36 INTERFACE igrib_set_value
37 MODULE PROCEDURE &
41 END INTERFACE
43 MODULE PROCEDURE &
45 END INTERFACE
47 MODULE PROCEDURE &
49 END INTERFACE
50 
56 
57 INTEGER, PARAMETER :: jpgrib_success=grib_success
58 INTEGER, PARAMETER :: jpgrib_end_of_file=grib_end_of_file
59 INTEGER, PARAMETER :: jpgrib_buffer_too_small=grib_buffer_too_small
60 
61 PRIVATE
62 #ifdef GRIB_API_1
63 INTEGER, PARAMETER, PUBLIC :: jpksize_t=jpim
64 #else
65 INTEGER, PARAMETER, PUBLIC :: jpksize_t=kindofsize_t
66 #endif
67 
68 LOGICAL, PUBLIC :: lgrib_api_trace = .false.
69 
70 CONTAINS
71 
72 SUBROUTINE igrib_get_int8(KHANDLE,CDKEY,KVAL,KRET)
73 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
74 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
75 INTEGER(KIND=JPIB),INTENT(OUT) :: KVAL
76 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
77 
78 INTEGER(KIND=JPIM) :: IRET
79 REAL(KIND=JPRB) :: ZHOOK_HANDLE
80 
81 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_INT8',0,zhook_handle)
82 CALL grib_get_long(khandle,cdkey,kval,status=iret)
83 IF(PRESENT(kret)) THEN
84  kret = iret
85 ELSEIF(iret /= jpgrib_success) THEN
86  WRITE(0,*) 'GRIB_GET_LONG',khandle,' ',cdkey,' FAILED',iret
87  CALL err_msg(iret)
88 #ifdef SFX_MPI
89  CALL mpl_abort('GRIB_GET_VALUE FAILED')
90 #endif
91 ENDIF
92 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_INT8',1,zhook_handle)
93 
94 END SUBROUTINE igrib_get_int8
95 
96 SUBROUTINE igrib_get_int(KHANDLE,CDKEY,KVAL,KRET)
97 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
98 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
99 INTEGER(KIND=JPIM),INTENT(OUT) :: KVAL
100 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
101 
102 INTEGER(KIND=JPIM) :: IRET
103 REAL(KIND=JPRB) :: ZHOOK_HANDLE
104 
105 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_INT',0,zhook_handle)
106 CALL grib_get_int(khandle,cdkey,kval,status=iret)
107 IF(PRESENT(kret)) THEN
108  kret = iret
109 ELSEIF(iret /= jpgrib_success) THEN
110  WRITE(0,*) 'GRIB_GET_INT',khandle,' ',cdkey,' FAILED',iret
111  CALL err_msg(iret)
112 #ifdef SFX_MPI
113  CALL mpl_abort('GRIB_GET_VALUE FAILED')
114 #endif
115 ENDIF
116 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_INT',1,zhook_handle)
117 
118 END SUBROUTINE igrib_get_int
119 
120 SUBROUTINE igrib_get_real4(KHANDLE,CDKEY,PVAL,KRET)
121 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
122 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
123 REAL(KIND=JPRM) ,INTENT(OUT) :: PVAL
124 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
125 
126 INTEGER(KIND=JPIM) :: IRET
127 REAL(KIND=JPRB) :: ZHOOK_HANDLE
128 
129 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_REAL4',0,zhook_handle)
130 CALL grib_get_real4(khandle,cdkey,pval,status=iret)
131 IF(PRESENT(kret)) THEN
132  kret = iret
133 ELSEIF(iret /= jpgrib_success) THEN
134  WRITE(0,*) 'GRIB_GET_REAL4',khandle,' ',cdkey,' FAILED',iret
135  CALL err_msg(iret)
136 #ifdef SFX_MPI
137  CALL mpl_abort('GRIB_GET_VALUE FAILED')
138 #endif
139 ENDIF
140 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_REAL4',1,zhook_handle)
141 
142 END SUBROUTINE igrib_get_real4
143 
144 SUBROUTINE igrib_get_real8(KHANDLE,CDKEY,PVAL,KRET)
145 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
146 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
147 REAL(KIND=JPRD) ,INTENT(OUT) :: PVAL
148 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
149 
150 INTEGER(KIND=JPIM) :: IRET
151 REAL(KIND=JPRB) :: ZHOOK_HANDLE
152 
153 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_REAL8',0,zhook_handle)
154 CALL grib_get_real8(khandle,cdkey,pval,status=iret)
155 IF(PRESENT(kret)) THEN
156  kret = iret
157 ELSEIF(iret /= jpgrib_success) THEN
158  WRITE(0,*) 'GRIB_GET_REAL8',khandle,' ',cdkey,' FAILED',iret
159  CALL err_msg(iret)
160 #ifdef SFX_MPI
161  CALL mpl_abort('GRIB_GET_VALUE FAILED')
162 #endif
163 ENDIF
164 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_REAL8',1,zhook_handle)
165 
166 END SUBROUTINE igrib_get_real8
167 
168 SUBROUTINE igrib_get_char(KHANDLE,CDKEY,CDVAL,KRET)
169 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
170 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
171 CHARACTER(LEN=*) ,INTENT(OUT) :: CDVAL
172 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
173 INTEGER(KIND=JPIM) :: IRET
174 REAL(KIND=JPRB) :: ZHOOK_HANDLE
175 
176 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_CHAR',0,zhook_handle)
177 CALL grib_get_string(khandle,cdkey,cdval,status=iret)
178 IF(PRESENT(kret)) THEN
179  kret = iret
180 ELSEIF(iret /= jpgrib_success) THEN
181  WRITE(0,*) 'GRIB_GET_STRING',khandle,' ',cdkey,' FAILED',iret
182  CALL err_msg(iret)
183 #ifdef SFX_MPI
184  CALL mpl_abort('GRIB_GET_VALUE FAILED')
185 #endif
186 ENDIF
187 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_CHAR',1,zhook_handle)
188 
189 END SUBROUTINE igrib_get_char
190 
191 SUBROUTINE igrib_get_int_array(KHANDLE,CDKEY,KVAL,KRET)
192 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
193 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
194 INTEGER(KIND=JPIM),INTENT(OUT) :: KVAL(:)
195 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
196 
197 INTEGER(KIND=JPIM) :: IRET,ISIZE
198 REAL(KIND=JPRB) :: ZHOOK_HANDLE
199 
200 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_INT_ARRAY',0,zhook_handle)
201 
202 CALL grib_get_int_array(khandle,cdkey,kval,status=iret)
203 IF(PRESENT(kret)) THEN
204  kret = iret
205 ELSEIF(iret /= jpgrib_success) THEN
206  WRITE(0,*) 'GRIB_GET_INT',khandle,' ',cdkey,' FAILED',iret
207  CALL err_msg(iret)
208 #ifdef SFX_MPI
209  CALL mpl_abort('GRIB_GET_VALUE FAILED')
210 #endif
211 ENDIF
212 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_INT_ARRAY',1,zhook_handle)
213 
214 END SUBROUTINE igrib_get_int_array
215 
216 SUBROUTINE igrib_get_real4_array(KHANDLE,CDKEY,PVAL,KRET)
217 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
218 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
219 REAL(KIND=JPRM) ,INTENT(OUT) :: PVAL(:)
220 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
221 
222 INTEGER(KIND=JPIM) :: IRET
223 REAL(KIND=JPRB) :: ZHOOK_HANDLE
224 
225 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_REAL4_ARRAY',0,zhook_handle)
226 
227 CALL grib_get_real4_array(khandle,cdkey,pval,status=iret)
228 IF(PRESENT(kret)) THEN
229  kret = iret
230 ELSEIF(iret /= jpgrib_success) THEN
231  WRITE(0,*) 'GRIB_GET_REAL4_ARRAY',khandle,' ',cdkey,' FAILED',iret
232  CALL err_msg(iret)
233 #ifdef SFX_MPI
234  CALL mpl_abort('GRIB_GET_VALUE FAILED')
235 #endif
236 ENDIF
237 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_REAL4_ARRAY',1,zhook_handle)
238 
239 END SUBROUTINE igrib_get_real4_array
240 
241 SUBROUTINE igrib_get_real8_array(KHANDLE,CDKEY,PVAL,KRET)
242 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
243 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
244 REAL(KIND=JPRD) ,INTENT(OUT) :: PVAL(:)
245 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
246 
247 INTEGER(KIND=JPIM) :: IRET
248 REAL(KIND=JPRB) :: ZHOOK_HANDLE
249 
250 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_REAL8_ARRAY',0,zhook_handle)
251 
252 CALL grib_get_real8_array(khandle,cdkey,pval,status=iret)
253 IF(PRESENT(kret)) THEN
254  kret = iret
255 ELSEIF(iret /= jpgrib_success) THEN
256  WRITE(0,*) 'GRIB_GET_REAL8_ARRAY',khandle,' ',cdkey,' FAILED',iret
257  CALL err_msg(iret)
258 #ifdef SFX_MPI
259  CALL mpl_abort('GRIB_GET_VALUE FAILED')
260 #endif
261 ENDIF
262 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_REAL8_ARRAY',1,zhook_handle)
263 
264 END SUBROUTINE igrib_get_real8_array
265 !====================================================================
266 SUBROUTINE igrib_set_int8(KHANDLE,CDKEY,KVAL,KRET)
267 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
268 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
269 INTEGER(KIND=JPIB),INTENT(IN) :: KVAL
270 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
271 
272 INTEGER(KIND=JPIM) :: IRET
273 REAL(KIND=JPRB) :: ZHOOK_HANDLE
274 
275 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_INT8',0,zhook_handle)
276 
277 #ifdef GRIB_API_TRACE
278 IF (lgrib_api_trace) WRITE (0, *) 'CALL GRIB_SET_LONG (IGRIBH, ', '"'//trim(cdkey)//'"', ', ', kval, ')'
279 #endif
280 
281 CALL grib_set_long(khandle,cdkey,kval,status=iret)
282 IF(PRESENT(kret)) THEN
283  kret = iret
284 ELSEIF(iret /= jpgrib_success) THEN
285  WRITE(0,*) 'GRIB_SET_LONG',khandle,' ',cdkey,' ',kval,' FAILED',iret
286  CALL err_msg(iret)
287 #ifdef SFX_MPI
288  CALL mpl_abort('GRIB_SET_VALUE FAILED')
289 #endif
290 ENDIF
291 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_INT8',1,zhook_handle)
292 
293 END SUBROUTINE igrib_set_int8
294 
295 SUBROUTINE igrib_set_int(KHANDLE,CDKEY,KVAL,KRET)
296 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
297 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
298 INTEGER(KIND=JPIM),INTENT(IN) :: KVAL
299 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
300 
301 INTEGER(KIND=JPIM) :: IRET
302 REAL(KIND=JPRB) :: ZHOOK_HANDLE
303 
304 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_INT',0,zhook_handle)
305 
306 #ifdef GRIB_API_TRACE
307 IF (lgrib_api_trace) WRITE (0, *) 'CALL GRIB_SET_INT (IGRIBH, ', '"'//trim(cdkey)//'"', ', ', kval, ')'
308 #endif
309 
310 CALL grib_set_int(khandle,cdkey,kval,status=iret)
311 IF(PRESENT(kret)) THEN
312  kret = iret
313 ELSEIF(iret /= jpgrib_success) THEN
314  WRITE(0,*) 'GRIB_SET_INT',khandle,' ',cdkey,' ',kval,' FAILED',iret
315  CALL err_msg(iret)
316 #ifdef SFX_MPI
317  CALL mpl_abort('GRIB_SET_VALUE FAILED')
318 #endif
319 ENDIF
320 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_INT',1,zhook_handle)
321 
322 END SUBROUTINE igrib_set_int
323 
324 SUBROUTINE igrib_set_real4(KHANDLE,CDKEY,PVAL,KRET)
325 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
326 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
327 REAL(KIND=JPRM) ,INTENT(IN) :: PVAL
328 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
329 
330 INTEGER(KIND=JPIM) :: IRET
331 REAL(KIND=JPRB) :: ZHOOK_HANDLE
332 
333 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_REAL4',0,zhook_handle)
334 CALL grib_set_real4(khandle,cdkey,pval,status=iret)
335 IF(PRESENT(kret)) THEN
336  kret = iret
337 ELSEIF(iret /= jpgrib_success) THEN
338  WRITE(0,*) 'GRIB_SET_REAL4',khandle,' ',cdkey,' ',pval,' FAILED',iret
339  CALL err_msg(iret)
340 #ifdef SFX_MPI
341  CALL mpl_abort('GRIB_SET_VALUE FAILED')
342 #endif
343 ENDIF
344 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_REAL4',1,zhook_handle)
345 
346 END SUBROUTINE igrib_set_real4
347 
348 SUBROUTINE igrib_set_real8(KHANDLE,CDKEY,PVAL,KRET)
349 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
350 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
351 REAL(KIND=JPRD) ,INTENT(IN) :: PVAL
352 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
353 
354 INTEGER(KIND=JPIM) :: IRET
355 REAL(KIND=JPRB) :: ZHOOK_HANDLE
356 
357 #ifdef GRIB_API_TRACE
358 IF (lgrib_api_trace) WRITE (0, *) 'CALL GRIB_SET_REAL8 (IGRIBH, ', '"'//trim(cdkey)//'"', ', ', pval, ')'
359 #endif
360 
361 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_REAL8',0,zhook_handle)
362 CALL grib_set_real8(khandle,cdkey,pval,status=iret)
363 IF(PRESENT(kret)) THEN
364  kret = iret
365 ELSEIF(iret /= jpgrib_success) THEN
366  WRITE(0,*) 'GRIB_SET_REAL8',khandle,' ',cdkey,' ',pval,' FAILED',iret
367  CALL err_msg(iret)
368 #ifdef SFX_MPI
369  CALL mpl_abort('GRIB_SET_VALUE FAILED')
370 #endif
371 ENDIF
372 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_REAL8',1,zhook_handle)
373 
374 END SUBROUTINE igrib_set_real8
375 
376 SUBROUTINE igrib_set_char(KHANDLE,CDKEY,CDVAL,KRET)
377 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
378 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
379 CHARACTER(LEN=*) ,INTENT(IN) :: CDVAL
380 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
381 
382 INTEGER(KIND=JPIM) :: IRET
383 REAL(KIND=JPRB) :: ZHOOK_HANDLE
384 
385 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_CHAR',0,zhook_handle)
386 
387 #ifdef GRIB_API_TRACE
388 IF (lgrib_api_trace) WRITE (0, *) 'CALL GRIB_SET_STRING (IGRIBH, ', '"'//trim(cdkey)//'"', ', ', '"'//trim(cdval)//'"', ')'
389 #endif
390 
391 CALL grib_set_string(khandle,cdkey,cdval,status=iret)
392 IF(PRESENT(kret)) THEN
393  kret = iret
394 ELSEIF(iret /= jpgrib_success) THEN
395  WRITE(0,*) 'GRIB_SET_STRING',khandle,' ',cdkey,' ',cdval,' FAILED',iret
396  CALL err_msg(iret)
397 #ifdef SFX_MPI
398  CALL mpl_abort('GRIB_SET_VALUE FAILED')
399 #endif
400 ENDIF
401 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_CHAR',1,zhook_handle)
402 
403 END SUBROUTINE igrib_set_char
404 
405 SUBROUTINE igrib_set_int8_array(KHANDLE,CDKEY,KVAL,KRET)
406 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
407 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
408 INTEGER(KIND=JPIB),INTENT(IN) :: KVAL(:)
409 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
410 
411 INTEGER(KIND=JPIM) :: IRET
412 INTEGER(KIND=JPIM) :: I
413 REAL(KIND=JPRB) :: ZHOOK_HANDLE
414 
415 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_INT8_ARRAY',0,zhook_handle)
416 
417 #ifdef GRIB_API_TRACE
418 IF (lgrib_api_trace) &
419 & WRITE (0, *) 'CALL GRIB_SET_LONG_ARRAY (IGRIBH, ', '"'//trim(cdkey)//'"', &
420 & ', (/ ', kval(1), ((', ', kval(i)), i = 2, SIZE (kval)), ' /))'
421 #endif
422 
423 CALL grib_set_long_array(khandle,cdkey,kval,status=iret)
424 IF(PRESENT(kret)) THEN
425  kret = iret
426 ELSEIF(iret /= jpgrib_success) THEN
427  WRITE(0,*) 'GRIB_SET_LONG_ARRAY',khandle,' ',cdkey,' FAILED',iret
428  CALL err_msg(iret)
429 #ifdef SFX_MPI
430  CALL mpl_abort('GRIB_SET_VALUE FAILED')
431 #endif
432 ENDIF
433 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_INT8_ARRAY',1,zhook_handle)
434 
435 END SUBROUTINE igrib_set_int8_array
436 
437 SUBROUTINE igrib_set_int_array(KHANDLE,CDKEY,KVAL,KRET)
438 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
439 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
440 INTEGER(KIND=JPIM),INTENT(IN) :: KVAL(:)
441 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
442 
443 INTEGER(KIND=JPIM) :: IRET
444 INTEGER(KIND=JPIM) :: I
445 REAL(KIND=JPRB) :: ZHOOK_HANDLE
446 
447 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_INT_ARRAY',0,zhook_handle)
448 
449 #ifdef GRIB_API_TRACE
450 IF (lgrib_api_trace) &
451 & WRITE (0, *) 'CALL GRIB_SET_INT_ARRAY (IGRIBH, ', '"'//trim(cdkey)//'"', &
452 & ', (/ ', kval(1), ((', ', kval(i)), i = 2, SIZE (kval)), ' /))'
453 #endif
454 
455 CALL grib_set_int_array(khandle,cdkey,kval,status=iret)
456 IF(PRESENT(kret)) THEN
457  kret = iret
458 ELSEIF(iret /= jpgrib_success) THEN
459  WRITE(0,*) 'GRIB_SET_INT_ARRAY',khandle,' ',cdkey,' FAILED',iret
460  CALL err_msg(iret)
461 #ifdef SFX_MPI
462  CALL mpl_abort('GRIB_SET_VALUE FAILED')
463 #endif
464 ENDIF
465 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_INT_ARRAY',1,zhook_handle)
466 
467 END SUBROUTINE igrib_set_int_array
468 
469 SUBROUTINE igrib_set_real4_array(KHANDLE,CDKEY,PVAL,KRET)
470 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
471 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
472 REAL(KIND=JPRM) ,INTENT(IN) :: PVAL(:)
473 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
474 
475 INTEGER(KIND=JPIM) :: IRET
476 REAL(KIND=JPRB) :: ZHOOK_HANDLE
477 
478 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_REAL4_ARRAY',0,zhook_handle)
479 CALL grib_set_real4_array(khandle,cdkey,pval,status=iret)
480 IF(PRESENT(kret)) THEN
481  kret = iret
482 ELSEIF(iret /= jpgrib_success) THEN
483  WRITE(0,*) 'GRIB_SET_REAL4_ARRAY',khandle,' ',cdkey,' FAILED',iret
484  CALL err_msg(iret)
485 #ifdef SFX_MPI
486  CALL mpl_abort('GRIB_SET_VALUE FAILED')
487 #endif
488 ENDIF
489 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_REAL4_ARRAY',1,zhook_handle)
490 
491 END SUBROUTINE igrib_set_real4_array
492 
493 SUBROUTINE igrib_set_real8_array(KHANDLE,CDKEY,PVAL,KRET)
494 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
495 CHARACTER(LEN=*) ,INTENT(IN) :: CDKEY
496 REAL(KIND=JPRD) ,INTENT(IN) :: PVAL(:)
497 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
498 
499 INTEGER(KIND=JPIM) :: IRET
500 INTEGER(KIND=JPIM) :: I
501 REAL(KIND=JPRB) :: ZHOOK_HANDLE
502 
503 #ifdef GRIB_API_TRACE
504 IF (lgrib_api_trace) &
505 & WRITE (0, *) 'CALL GRIB_SET_REAL8_ARRAY (IGRIBH, ', '"'//trim(cdkey)//'"', &
506 & ', (/ ', pval(1), ((', ', pval(i)), i = 2, SIZE (pval)), '/))'
507 #endif
508 
509 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_REAL8_ARRAY',0,zhook_handle)
510 CALL grib_set_real8_array(khandle,cdkey,pval,status=iret)
511 IF(PRESENT(kret)) THEN
512  kret = iret
513 ELSEIF(iret /= jpgrib_success) THEN
514  WRITE(0,*) 'GRIB_SET_REAL8_ARRAY',khandle,' ',cdkey,' FAILED',iret
515  CALL err_msg(iret)
516 #ifdef SFX_MPI
517  CALL mpl_abort('GRIB_SET_VALUE FAILED')
518 #endif
519 ENDIF
520 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_SET_REAL8_ARRAY',1,zhook_handle)
521 
522 END SUBROUTINE igrib_set_real8_array
523 
524 SUBROUTINE igrib_open_file(KFILE,CDPATH,CDMODE)
525 INTEGER(KIND=JPIM),INTENT(OUT) :: KFILE
526 CHARACTER(LEN=*) ,INTENT(IN) :: CDPATH
527 CHARACTER(LEN=1) ,INTENT(IN) :: CDMODE
528 
529 INTEGER(KIND=JPIM) :: IRET
530 REAL(KIND=JPRB) :: ZHOOK_HANDLE
531 
532 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_OPEN_FILE',0,zhook_handle)
533 CALL grib_open_file(kfile,cdpath,cdmode,status=iret)
534 IF(iret /= jpgrib_success) THEN
535  WRITE(0,*) 'GRIB_OPEN_FILE ',trim(cdpath),' FAILED',iret
536  CALL err_msg(iret)
537 #ifdef SFX_MPI
538  CALL mpl_abort('GRIB_OPEN_FILE FAILED')
539 #endif
540 ENDIF
541 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_OPEN_FILE',1,zhook_handle)
542 
543 END SUBROUTINE igrib_open_file
544 
545 SUBROUTINE igrib_close_file(KFILE)
546 INTEGER(KIND=JPIM),INTENT(IN) :: KFILE
547 
548 INTEGER(KIND=JPIM) :: IRET
549 REAL(KIND=JPRB) :: ZHOOK_HANDLE
550 
551 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_CLOSE_FILE',0,zhook_handle)
552 CALL grib_close_file(kfile,status=iret)
553 IF(iret /= jpgrib_success) THEN
554  WRITE(0,*) 'GRIB_CLOSE_FILE ',kfile,' FAILED',iret
555  CALL err_msg(iret)
556 #ifdef SFX_MPI
557  CALL mpl_abort('GRIB_CLOSE_FILE FAILED')
558 #endif
559 ENDIF
560 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_CLOSE_FILE',1,zhook_handle)
561 
562 END SUBROUTINE igrib_close_file
563 
564 SUBROUTINE igrib_read_from_file(KFILE,KBUF,KBYTES,KRET)
565 INTEGER(KIND=JPIM),INTENT(IN) :: KFILE
566 INTEGER(KIND=JPIM),INTENT(OUT) :: KBUF(:)
567 INTEGER(KIND=JPKSIZE_T),INTENT(INOUT) :: KBYTES
568 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
569 INTEGER(KIND=JPIM) :: IRET,ILEN
570 REAL(KIND=JPRB) :: ZHOOK_HANDLE
571 
572 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_READ_FROM_FILE',0,zhook_handle)
573 
574 CALL grib_read_from_file(kfile,kbuf,kbytes,iret)
575 IF(PRESENT(kret)) THEN
576  kret = iret
577 ELSEIF(iret /= jpgrib_success .AND. iret /= jpgrib_end_of_file ) THEN
578  WRITE(0,*) 'GRIB_READ_FROM_FILE ',kfile,' FAILED',iret
579  CALL err_msg(iret)
580 #ifdef SFX_MPI
581  CALL mpl_abort('GRIB_READ_FROM_FILE FAILED')
582 #endif
583 ENDIF
584 
585 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_READ_FROM_FILE',1,zhook_handle)
586 
587 END SUBROUTINE igrib_read_from_file
588 
589 SUBROUTINE igrib_read_bytes_int(KFILE,KBUF,KBYTES,KRET)
590 INTEGER(KIND=JPIM),INTENT(IN) :: KFILE
591 INTEGER(KIND=JPIM),INTENT(OUT) :: KBUF(:)
592 INTEGER(KIND=JPKSIZE_T),INTENT(INOUT) :: KBYTES
593 INTEGER(KIND=JPIM),INTENT(OUT) :: KRET
594 INTEGER(KIND=JPIM) :: IRET,ILEN
595 REAL(KIND=JPRB) :: ZHOOK_HANDLE
596 
597 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_READ_BYTES_INT',0,zhook_handle)
598 CALL grib_read_bytes(kfile,kbuf,kbytes,iret)
599 IF(iret /= jpgrib_success .AND. iret /= jpgrib_end_of_file ) THEN
600  WRITE(0,*) 'GRIB_READ_BYTES_INT ',kfile,' ',kbytes,' FAILED',iret
601  CALL err_msg(iret)
602 #ifdef SFX_MPI
603  CALL mpl_abort('GRIB_READ_BYTES_INT FAILED')
604 #endif
605 ENDIF
606 kret = iret
607 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_READ_BYTES_INT',1,zhook_handle)
608 
609 END SUBROUTINE igrib_read_bytes_int
610 
611 SUBROUTINE igrib_read_bytes_real4(KFILE,PBUF,KBYTES,KRET)
612 INTEGER(KIND=JPIM),INTENT(IN) :: KFILE
613 REAL(KIND=JPRM) ,INTENT(OUT) :: PBUF(:)
614 INTEGER(KIND=JPKSIZE_T),INTENT(INOUT) :: KBYTES
615 INTEGER(KIND=JPIM),INTENT(OUT) :: KRET
616 INTEGER(KIND=JPIM) :: IRET,ILEN
617 REAL(KIND=JPRB) :: ZHOOK_HANDLE
618 
619 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_READ_BYTES_REAL4',0,zhook_handle)
620 
621 CALL grib_read_bytes(kfile,pbuf,kbytes,iret)
622 IF(iret /= jpgrib_success .AND. iret /= jpgrib_end_of_file ) THEN
623  WRITE(0,*) 'GRIB_READ_BYTES_INT ',kfile,' FAILED',iret
624  CALL err_msg(iret)
625 #ifdef SFX_MPI
626  CALL mpl_abort('GRIB_READ_BYTES_REAL4 FAILED')
627 #endif
628 ENDIF
629 kret = iret
630 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_READ_BYTES_REAL4',1,zhook_handle)
631 END SUBROUTINE igrib_read_bytes_real4
632 
633 SUBROUTINE igrib_read_bytes_real8(KFILE,PBUF,KBYTES,KRET)
634 INTEGER(KIND=JPIM),INTENT(IN) :: KFILE
635 REAL(KIND=JPRD) ,INTENT(OUT) :: PBUF(:)
636 INTEGER(KIND=JPKSIZE_T),INTENT(INOUT) :: KBYTES
637 INTEGER(KIND=JPIM),INTENT(OUT) :: KRET
638 INTEGER(KIND=JPIM) :: IRET,ILEN
639 REAL(KIND=JPRB) :: ZHOOK_HANDLE
640 
641 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_READ_BYTES_REAL8',0,zhook_handle)
642 
643 CALL grib_read_bytes(kfile,pbuf,kbytes,iret)
644 IF(iret /= jpgrib_success .AND. iret /= jpgrib_end_of_file ) THEN
645  WRITE(0,*) 'GRIB_READ_BYTES_REAL8 ',kfile,' FAILED',iret
646  CALL err_msg(iret)
647 #ifdef SFX_MPI
648  CALL mpl_abort('GRIB_READ_BYTES_REAL8 FAILED')
649 #endif
650 ENDIF
651 kret = iret
652 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_READ_BYTES_REAL8',1,zhook_handle)
653 END SUBROUTINE igrib_read_bytes_real8
654 
655 SUBROUTINE igrib_read_bytes_char(KFILE,CDBUF,KBYTES,KRET)
656 INTEGER(KIND=JPIM),INTENT(IN) :: KFILE
657 CHARACTER(LEN=1) ,INTENT(OUT) :: CDBUF(:)
658 INTEGER(KIND=JPKSIZE_T),INTENT(INOUT) :: KBYTES
659 INTEGER(KIND=JPIM),INTENT(OUT) :: KRET
660 INTEGER(KIND=JPIM) :: IRET,ILEN
661 REAL(KIND=JPRB) :: ZHOOK_HANDLE
662 
663 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_READ_BYTES_CHAR',0,zhook_handle)
664 
665 CALL grib_read_bytes(kfile,cdbuf,kbytes,iret)
666 IF(iret /= jpgrib_success .AND. iret /= jpgrib_end_of_file ) THEN
667  WRITE(0,*) 'GRIB_READ_BYTES_CHAR ',kfile,' FAILED',iret
668  CALL err_msg(iret)
669 #ifdef SFX_MPI
670  CALL mpl_abort('GRIB_READ_BYTES_CHAR FAILED')
671 #endif
672 ENDIF
673 kret = iret
674 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_READ_BYTES_CHAR',1,zhook_handle)
675 
676 END SUBROUTINE igrib_read_bytes_char
677 
678 
679 SUBROUTINE igrib_write_bytes_int(KFILE,KBUF,KBYTES)
680 INTEGER(KIND=JPIM),INTENT(IN) :: KFILE
681 INTEGER(KIND=JPIM),INTENT(IN) :: KBUF(:)
682 INTEGER(KIND=JPKSIZE_T),INTENT(INOUT) :: KBYTES
683 INTEGER(KIND=JPIM) :: IRET,ILEN
684 REAL(KIND=JPRB) :: ZHOOK_HANDLE
685 
686 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_WRITE_BYTES_INT',0,zhook_handle)
687 
688 CALL grib_write_bytes(kfile,kbuf,kbytes,iret)
689 IF(iret /= jpgrib_success ) THEN
690  WRITE(0,*) 'GRIB_WRITE_BYTES_INT ',kfile,' ',kbytes,' FAILED',iret
691  CALL err_msg(iret)
692 #ifdef SFX_MPI
693  CALL mpl_abort('GRIB_WRITE_BYTES_INT FAILED')
694 #endif
695 ENDIF
696 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_WRITE_BYTES_INT',1,zhook_handle)
697 
698 END SUBROUTINE igrib_write_bytes_int
699 
700 SUBROUTINE igrib_write_bytes_real4(KFILE,PBUF,KBYTES)
701 INTEGER(KIND=JPIM),INTENT(IN) :: KFILE
702 REAL(KIND=JPRM) ,INTENT(IN) :: PBUF(:)
703 INTEGER(KIND=JPKSIZE_T),INTENT(INOUT) :: KBYTES
704 INTEGER(KIND=JPIM) :: IRET,ILEN
705 REAL(KIND=JPRB) :: ZHOOK_HANDLE
706 
707 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_WRITE_BYTES_REAL4',0,zhook_handle)
708 
709 CALL grib_write_bytes(kfile,pbuf,kbytes,iret)
710 IF(iret /= jpgrib_success ) THEN
711  WRITE(0,*) 'GRIB_WRITE_BYTES_INT ',kfile,' FAILED',iret
712  CALL err_msg(iret)
713 #ifdef SFX_MPI
714  CALL mpl_abort('GRIB_WRITE_BYTES_REAL4 FAILED')
715 #endif
716 ENDIF
717 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_WRITE_BYTES_REAL4',1,zhook_handle)
718 
719 END SUBROUTINE igrib_write_bytes_real4
720 
721 SUBROUTINE igrib_write_bytes_real8(KFILE,PBUF,KBYTES)
722 INTEGER(KIND=JPIM),INTENT(IN) :: KFILE
723 REAL(KIND=JPRD) ,INTENT(IN) :: PBUF(:)
724 INTEGER(KIND=JPKSIZE_T),INTENT(INOUT) :: KBYTES
725 INTEGER(KIND=JPIM) :: IRET,ILEN
726 REAL(KIND=JPRB) :: ZHOOK_HANDLE
727 
728 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_WRITE_BYTES_REAL8',0,zhook_handle)
729 
730 CALL grib_write_bytes(kfile,pbuf,kbytes,iret)
731 IF(iret /= jpgrib_success ) THEN
732  WRITE(0,*) 'GRIB_WRITE_BYTES_INT ',kfile,' FAILED',iret
733  CALL err_msg(iret)
734 #ifdef SFX_MPI
735  CALL mpl_abort('GRIB_WRITE_BYTES_REAL8 FAILED')
736 #endif
737 ENDIF
738 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_WRITE_BYTES_REAL8',1,zhook_handle)
739 
740 END SUBROUTINE igrib_write_bytes_real8
741 
742 SUBROUTINE igrib_write_bytes_char(KFILE,CDBUF,KBYTES)
743 INTEGER(KIND=JPIM),INTENT(IN) :: KFILE
744 CHARACTER(LEN=1) ,INTENT(IN) :: CDBUF(:)
745 INTEGER(KIND=JPKSIZE_T),INTENT(INOUT) :: KBYTES
746 INTEGER(KIND=JPIM) :: IRET
747 REAL(KIND=JPRB) :: ZHOOK_HANDLE
748 
749 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_WRITE_BYTES_CHAR',0,zhook_handle)
750 
751 CALL grib_write_bytes(kfile,cdbuf,kbytes,iret)
752 IF(iret /= jpgrib_success) THEN
753  WRITE(0,*) 'GRIB_WRITE_BYTES_CHAR ',kfile,' FAILED',iret
754  CALL err_msg(iret)
755 #ifdef SFX_MPI
756  CALL mpl_abort('GRIB_WRITE_BYTES_CHAR FAILED')
757 #endif
758 ENDIF
759 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_WRITE_BYTES_CHAR',1,zhook_handle)
760 
761 END SUBROUTINE igrib_write_bytes_char
762 
763 SUBROUTINE igrib_new_from_file(KFILE,KHANDLE,KRET)
764 INTEGER(KIND=JPIM),INTENT(IN) :: KFILE
765 INTEGER(KIND=JPIM),INTENT(OUT) :: KHANDLE
766 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
767 
768 INTEGER(KIND=JPIM) :: IRET
769 REAL(KIND=JPRB) :: ZHOOK_HANDLE
770 
771 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_NEW_FROM_FILE',0,zhook_handle)
772 
773 CALL grib_new_from_file(kfile,khandle,status=iret)
774 
775 IF(PRESENT(kret)) THEN
776  kret = iret
777 ELSEIF(iret /= jpgrib_success .AND. iret /= jpgrib_end_of_file ) THEN
778  WRITE(0,*) 'GRIB_NEW_FROM_FILE ',kfile,' FAILED',iret
779  CALL err_msg(iret)
780 #ifdef SFX_MPI
781  CALL mpl_abort('GRIB_NEW_FROM_FILE FAILED')
782 #endif
783 ENDIF
784 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_NEW_FROM_FILE',1,zhook_handle)
785 
786 END SUBROUTINE igrib_new_from_file
787 
788 SUBROUTINE igrib_new_from_message(KHANDLE,KBUF)
789 INTEGER(KIND=JPIM),INTENT(OUT) :: KHANDLE
790 INTEGER(KIND=JPIM),INTENT(IN) :: KBUF(:)
791 
792 INTEGER(KIND=JPIM) :: IRET
793 REAL(KIND=JPRB) :: ZHOOK_HANDLE
794 
795 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_NEW_FROM_MESSAGE',0,zhook_handle)
796 
797 CALL grib_new_from_message(khandle,kbuf,status=iret)
798 
799 IF(iret /= jpgrib_success) THEN
800  WRITE(0,*) 'CALL TO GRIB_NEW_FROM_MESSAGE FAILED',iret
801  CALL err_msg(iret)
802 #ifdef SFX_MPI
803  CALL mpl_abort('IGRIB_NEW_FROM_MESSAGE FAILED')
804 #endif
805 ENDIF
806 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_NEW_FROM_MESSAGE',1,zhook_handle)
807 
808 END SUBROUTINE igrib_new_from_message
809 
810 SUBROUTINE igrib_release(KHANDLE)
811 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
812 
813 INTEGER(KIND=JPIM) :: IRET
814 REAL(KIND=JPRB) :: ZHOOK_HANDLE
815 
816 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_RELEASE',0,zhook_handle)
817 
818 CALL grib_release(khandle,status=iret)
819 IF(iret /= jpgrib_success) THEN
820  WRITE(0,*) 'GRIB_RELEASE ',khandle,' FAILED',iret
821  CALL err_msg(iret)
822 #ifdef SFX_MPI
823  CALL mpl_abort('GRIB_RELEASE FAILED')
824 #endif
825 ENDIF
826 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_RELEASE',1,zhook_handle)
827 
828 END SUBROUTINE igrib_release
829 
830 SUBROUTINE igrib_get_message_size(KHANDLE,KBYTES)
831 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
832 INTEGER(KIND=JPKSIZE_T),INTENT(OUT) :: KBYTES
833 INTEGER(KIND=JPIM) :: IRET
834 INTEGER(KIND=KINDOFSIZE_T) :: IBYTES
835 REAL(KIND=JPRB) :: ZHOOK_HANDLE
836 
837 
838 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_MESSAGE_SIZE',0,zhook_handle)
839 CALL grib_get_message_size(khandle,ibytes,status=iret)
840 kbytes = ibytes
841 IF(iret /= jpgrib_success) THEN
842  WRITE(0,*) 'GRIB_GET_MESSAGE_SIZE ',khandle,' FAILED',iret
843  CALL err_msg(iret)
844 #ifdef SFX_MPI
845  CALL mpl_abort(' GRIB_GET_MESSAGE_SIZE FAIL')
846 #endif
847 ENDIF
848 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_MESSAGE_SIZE',1,zhook_handle)
849 
850 END SUBROUTINE igrib_get_message_size
851 
852 SUBROUTINE igrib_get_message(KHANDLE,KGRIB)
853 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE
854 INTEGER(KIND=JPIM),INTENT(OUT) :: KGRIB(:)
855 
856 INTEGER(KIND=JPIM) :: IRET
857 REAL(KIND=JPRB) :: ZHOOK_HANDLE
858 CHARACTER(LEN=1),ALLOCATABLE :: CLS(:)
859 INTEGER(KIND=JPIM) :: ILENINT
860 INTEGER(KIND=JPKSIZE_T) :: ILEN
861 
862 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_MESSAGE',0,zhook_handle)
863 
864 !TEMP CODING
865 CALL igrib_get_message_size(khandle,ilen)
866 ilenint=(ilen+3)/4
867 ALLOCATE(cls(ilenint*4))
868 cls(ilenint*4-3:ilenint*4)=' '
869 CALL grib_copy_message(khandle,cls,status=iret)
870 kgrib(1:ilenint)=transfer(cls,kgrib)
871 DEALLOCATE(cls)
872 !CALL GRIB_COPY_MESSAGE(KHANDLE,KGRIB,STATUS=IRET)
873 IF(iret /= jpgrib_success) THEN
874  WRITE(0,*) 'GRIB_COPY_MESSAGE ',khandle,' FAILED',iret
875  CALL err_msg(iret)
876 #ifdef SFX_MPI
877  CALL mpl_abort(' GRIB_COPY_MESSAGE FAILED')
878 #endif
879 ENDIF
880 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_GET_MESSAGE',1,zhook_handle)
881 
882 END SUBROUTINE igrib_get_message
883 
884 SUBROUTINE igrib_new_from_samples(KHANDLE,CDNAME,KRET)
885 INTEGER(KIND=JPIM),INTENT(OUT) :: KHANDLE
886 CHARACTER(LEN=*),INTENT(IN) :: CDNAME
887 INTEGER(KIND=JPIM),OPTIONAL,INTENT(OUT) :: KRET
888 
889 INTEGER(KIND=JPIM) :: IRET
890 REAL(KIND=JPRB) :: ZHOOK_HANDLE
891 
892 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_NEW_FROM_SAMPLES',0,zhook_handle)
893 CALL grib_new_from_samples(khandle,trim(cdname),status=iret)
894 IF (PRESENT (kret)) THEN
895  kret = iret
896 ELSEIF(iret /= jpgrib_success) THEN
897  WRITE(0,*) 'GRIB_NEW_FROM_SAMPLES ',trim(cdname),' FAILED',iret
898  CALL err_msg(iret)
899 #ifdef SFX_MPI
900  CALL mpl_abort(' GRIB_NEW_FROM_SAMPLES FAILED')
901 #endif
902 ENDIF
903 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_NEW_FROM_SAMPLES',1,zhook_handle)
904 
905 END SUBROUTINE igrib_new_from_samples
906 
907 SUBROUTINE igrib_clone(KHANDLE1,KHANDLE2)
908 INTEGER(KIND=JPIM),INTENT(IN) :: KHANDLE1
909 INTEGER(KIND=JPIM),INTENT(OUT) :: KHANDLE2
910 
911 INTEGER(KIND=JPIM) :: IRET
912 REAL(KIND=JPRB) :: ZHOOK_HANDLE
913 
914 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_CLONE',0,zhook_handle)
915 CALL grib_clone(khandle1,khandle2,status=iret)
916 
917 IF(iret /= jpgrib_success) THEN
918  WRITE(0,*) 'GRIB_CLONE FAILED',iret
919  CALL err_msg(iret)
920 #ifdef SFX_MPI
921  CALL mpl_abort(' GRIB_CLONE FAILED')
922 #endif
923 ENDIF
924 IF (lhook) CALL dr_hook('GRIB_API:IGRIB_CLONE',1,zhook_handle)
925 
926 END SUBROUTINE igrib_clone
927 
928 SUBROUTINE err_msg(KRET)
929 INTEGER(KIND=JPIM),INTENT(IN) :: KRET
930 INTEGER(KIND=JPIM) :: IRET
931 CHARACTER(LEN=256) :: CLERRMSG
932 
933 clerrmsg = ''
934 CALL grib_get_error_string(kret,clerrmsg,status=iret)
935 WRITE(0,*) 'GRIB_API ERROR MSG: ',trim(clerrmsg)
936 END SUBROUTINE err_msg
937 
938 
939 SUBROUTINE igrib_is_defined(KHANDLE, CDKEY, LDDEFINED, KRET)
940 INTEGER(KIND=JPIM), INTENT(IN) :: KHANDLE
941 CHARACTER(LEN=*), INTENT(IN) :: CDKEY
942 LOGICAL, INTENT(OUT) :: LDDEFINED
943 INTEGER(KIND=JPIM), OPTIONAL, INTENT(OUT) :: KRET
944 
945 INTEGER(KIND=JPIM) :: IS_DEFINED, IRET
946 
947 is_defined = 0
948 #define FAGRIB2
949 #ifdef FAGRIB2
950 CALL grib_is_defined (khandle, cdkey, is_defined, iret)
951 #else
952 #ifdef SFX_MPI
953 CALL mpl_abort('GRIB_IS_DEFINED FAILED')
954 #endif
955 #endif
956 
957 IF (PRESENT (kret)) THEN
958  kret = iret
959 ELSEIF (iret /= jpgrib_success) THEN
960  WRITE(0,*) 'GRIB_IS_DEFINED',khandle,' ',cdkey,' FAILED',iret
961  CALL err_msg(iret)
962 #ifdef SFX_MPI
963  CALL mpl_abort('GRIB_IS_DEFINED FAILED')
964 #endif
965 ENDIF
966 
967 lddefined = is_defined /= 0
968 
969 END SUBROUTINE igrib_is_defined
970 
971 
972 END MODULE grib_api_interface
973 
subroutine, public igrib_is_defined(KHANDLE, CDKEY, LDDEFINED, KRET)
static const char * trim(const char *name, int *n)
Definition: drhook.c:2383
subroutine igrib_read_bytes_int(KFILE, KBUF, KBYTES, KRET)
integer, parameter jpim
Definition: parkind1.F90:13
subroutine igrib_write_bytes_int(KFILE, KBUF, KBYTES)
subroutine igrib_get_char(KHANDLE, CDKEY, CDVAL, KRET)
subroutine igrib_set_int8_array(KHANDLE, CDKEY, KVAL, KRET)
integer, parameter jprd
Definition: parkind1.F90:39
subroutine, public igrib_new_from_file(KFILE, KHANDLE, KRET)
subroutine igrib_set_real4(KHANDLE, CDKEY, PVAL, KRET)
subroutine, public igrib_read_from_file(KFILE, KBUF, KBYTES, KRET)
subroutine igrib_write_bytes_char(KFILE, CDBUF, KBYTES)
subroutine igrib_set_char(KHANDLE, CDKEY, CDVAL, KRET)
subroutine, public igrib_clone(KHANDLE1, KHANDLE2)
subroutine igrib_read_bytes_char(KFILE, CDBUF, KBYTES, KRET)
integer, parameter, public jpgrib_success
subroutine igrib_set_real8_array(KHANDLE, CDKEY, PVAL, KRET)
subroutine err_msg(KRET)
subroutine igrib_write_bytes_real8(KFILE, PBUF, KBYTES)
integer, parameter jprb
Definition: parkind1.F90:32
subroutine igrib_get_real8(KHANDLE, CDKEY, PVAL, KRET)
subroutine, public igrib_release(KHANDLE)
subroutine, public igrib_get_message_size(KHANDLE, KBYTES)
subroutine igrib_get_real4(KHANDLE, CDKEY, PVAL, KRET)
subroutine igrib_get_int8(KHANDLE, CDKEY, KVAL, KRET)
subroutine igrib_write_bytes_real4(KFILE, PBUF, KBYTES)
subroutine igrib_set_real4_array(KHANDLE, CDKEY, PVAL, KRET)
integer, parameter jprm
Definition: parkind1.F90:30
subroutine igrib_set_real8(KHANDLE, CDKEY, PVAL, KRET)
subroutine, public igrib_new_from_samples(KHANDLE, CDNAME, KRET)
logical, public lgrib_api_trace
subroutine, public igrib_new_from_message(KHANDLE, KBUF)
subroutine igrib_get_real4_array(KHANDLE, CDKEY, PVAL, KRET)
logical lhook
Definition: yomhook.F90:15
subroutine igrib_set_int(KHANDLE, CDKEY, KVAL, KRET)
subroutine igrib_get_int(KHANDLE, CDKEY, KVAL, KRET)
subroutine, public igrib_open_file(KFILE, CDPATH, CDMODE)
subroutine igrib_read_bytes_real8(KFILE, PBUF, KBYTES, KRET)
subroutine igrib_read_bytes_real4(KFILE, PBUF, KBYTES, KRET)
integer, parameter, public jpgrib_end_of_file
subroutine, public igrib_close_file(KFILE)
integer, parameter jpib
Definition: parkind1.F90:14
integer, parameter, public jpgrib_buffer_too_small
subroutine, public igrib_get_message(KHANDLE, KGRIB)
subroutine igrib_set_int_array(KHANDLE, CDKEY, KVAL, KRET)
subroutine igrib_get_int_array(KHANDLE, CDKEY, KVAL, KRET)
subroutine igrib_set_int8(KHANDLE, CDKEY, KVAL, KRET)
subroutine igrib_get_real8_array(KHANDLE, CDKEY, PVAL, KRET)
integer, parameter, public jpksize_t