00001 C Copyright 2005-2018 ECMWF
00002 C This software is licensed under the terms of the Apache Licence Version 2.0
00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
00004 C
00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
00007 C
00008 C
00009 C Fortran 77 Implementation: multi_fortran
00010 C
00011 C Description: How to decode grib messages containing multiple
00012 C fields. Try to turn on and off multi support to
00013 C see the difference. Default is OFF.
00014 C For all the tools defalut is multi support ON.
00015 C
00016 C
00017 C Author: Enrico Fucile
00018 C
00019 C
00020 C
00021 program multi
00022 implicit none
00023 include 'grib_api_f77.h'
00024 integer iret
00025 character*256 error
00026 integer*4 parameterCategory,parameterNumber,discipline
00027 integer ifile,igrib
00028
00029 call grib_check( grib_open_file(ifile
00030 X,'../../data/multi.grib2','r'))
00031
00032 C turn on support for multi fields messages */
00033 call grib_check(grib_multi_support_on())
00034
00035 C turn off support for multi fields messages */
00036 C call grib_check(grib_multi_support_off())
00037
00038 C Loop on all the messages in a file.
00039 10 iret=grib_new_from_file(ifile,igrib)
00040 if (igrib .eq. -1 ) then
00041 if (iret .ne.0) then
00042 call grib_check(iret)
00043 endif
00044 stop
00045 endif
00046
00047 C get as a integer*4
00048 call grib_check(grib_get_int(igrib,'discipline',discipline))
00049 write(*,*) 'discipline=',discipline
00050
00051 C get as a integer*4
00052 call grib_check(grib_get_int(igrib,'parameterCategory'
00053 X,parameterCategory))
00054 write(*,*) 'parameterCategory=',parameterCategory
00055
00056 C get as a integer*4
00057 call grib_check(grib_get_int(igrib,'parameterNumber'
00058 X,parameterNumber))
00059 write(*,*) 'parameterNumber=',parameterNumber
00060
00061 if ( discipline .eq. 0 .and. parameterCategory .eq. 2) then
00062 if (parameterNumber .eq. 2) then
00063 write(*,*) "-------- u -------"
00064 endif
00065 if (parameterNumber .eq. 3) then
00066 write(*,*) "-------- v -------"
00067 endif
00068 endif
00069
00070 goto 10
00071
00072 call grib_check(grib_release(igrib))
00073
00074 call grib_check(grib_close_file(ifile))
00075
00076 end
00077