! (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. ! ! ! Description: How to get PL values. ! ! program grib_get_pl use eccodes implicit none integer :: infile integer :: igrib integer :: PLPresent, nb_pl integer(kind=8), dimension(:), allocatable :: pl_8 integer(kind=4), dimension(:), allocatable :: pl_4 call codes_open_file(infile, '../../data/reduced_gaussian_surface.grib1', 'r') ! A new grib message is loaded from file ! igrib is the grib id to be used in subsequent calls call codes_grib_new_from_file(infile, igrib) ! get PLPresent to see if the 'pl' array is there call codes_get(igrib, 'PLPresent', PLPresent) print *, "PLPresent= ", PLPresent if (PLPresent == 1) then call codes_get_size(igrib, 'pl', nb_pl) print *, "there are ", nb_pl, " PL values" allocate (pl_4(nb_pl)) call codes_get(igrib, 'pl', pl_4) allocate (pl_8(nb_pl)) call codes_get(igrib, 'pl', pl_8) ! print *, "pl = ", pl deallocate (pl_4) deallocate (pl_8) else print *, "There are no PL values in your GRIB message!" end if call codes_release(igrib) call codes_close_file(infile) end program grib_get_pl