diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt index cad7dee1a..cf5f42450 100644 --- a/examples/F90/CMakeLists.txt +++ b/examples/F90/CMakeLists.txt @@ -29,6 +29,7 @@ if( HAVE_BUILD_TOOLS ) grib_get_pl grib_get_pv grib_keys_iterator + grib_keys_iterator_skip grib_multi_write grib_multi grib_nearest @@ -80,6 +81,7 @@ else() grib_get_pl grib_get_pv grib_keys_iterator + grib_keys_iterator_skip grib_multi grib_nearest grib_nearest_single diff --git a/examples/F90/grib_keys_iterator_skip.f90 b/examples/F90/grib_keys_iterator_skip.f90 new file mode 100644 index 000000000..f6c58d227 --- /dev/null +++ b/examples/F90/grib_keys_iterator_skip.f90 @@ -0,0 +1,57 @@ +! (C) Copyright 2005- ECMWF. +! +! This software is licensed under the terms of the Apache Licence Version 2.0 +! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +! +! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +! +! +program keys_iterator_skip + use eccodes + implicit none + character(len=20) :: name_space + integer :: kiter, ifile, igrib, iret + character(len=256) :: key + character(len=256) :: value + character(len=512) :: all1 + integer :: grib_count + + call codes_open_file(ifile, & + '../../data/regular_latlon_surface.grib1', 'r') + + ! Loop on all the messages in a file + grib_count = 0 + do while (.true.) + call codes_grib_new_from_file(ifile, igrib, iret) + if (iret == CODES_END_OF_FILE) exit + + grib_count = grib_count + 1 + write (*, *) '-- GRIB N. ', grib_count, ' --' + + ! Choose a namespace. E.g. "ls", "time", "parameter", "geography", "statistics" + name_space = 'ls' + + call codes_keys_iterator_new(igrib, kiter, name_space) + call codes_skip_computed(kiter) + call codes_skip_coded(kiter) + call codes_skip_duplicates(kiter) + call codes_skip_read_only(kiter) + + do + call codes_keys_iterator_next(kiter, iret) + if (iret .ne. CODES_SUCCESS) exit !terminate the loop + + call codes_keys_iterator_get_name(kiter, key) + call codes_get(igrib, trim(key), value) + all1 = trim(key)//' = '//trim(value) + write (*, *) trim(all1) + end do + + call codes_keys_iterator_delete(kiter) + call codes_release(igrib) + end do + + call codes_close_file(ifile) + +end program keys_iterator_skip diff --git a/examples/F90/grib_keys_iterator_skip.sh b/examples/F90/grib_keys_iterator_skip.sh new file mode 100755 index 000000000..03b05fb8b --- /dev/null +++ b/examples/F90/grib_keys_iterator_skip.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + +. ./include.ctest.sh + +${examples_dir}/eccodes_f_grib_keys_iterator_skip