eccodes/examples/F90/grib_sections_copy.f90

40 lines
1.4 KiB
Fortran
Raw Permalink Normal View History

2024-01-21 14:33:45 +00:00
! (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 grib_sections_copy
use eccodes
implicit none
2024-01-21 15:35:02 +00:00
integer :: igrib_a, igrib_b, igrib_c, iret
2024-08-14 14:08:39 +00:00
character(len=40) :: error_message = ''
2024-01-21 14:33:45 +00:00
2024-01-21 15:35:02 +00:00
call codes_grib_new_from_samples(igrib_a, 'regular_ll_sfc_grib1')
call codes_grib_new_from_samples(igrib_b, 'reduced_gg_pl_640_grib1')
2024-01-21 14:33:45 +00:00
! Turn all bits on:
! GRIB_SECTION_PRODUCT, GRIB_SECTION_GRID, GRIB_SECTION_LOCAL
! GRIB_SECTION_DATA, GRIB_SECTION_BITMAP
2024-01-21 15:35:02 +00:00
call codes_grib_util_sections_copy(igrib_a, igrib_b, 31, igrib_c)
2024-01-21 14:33:45 +00:00
2024-01-21 15:35:02 +00:00
call codes_release(igrib_a)
call codes_release(igrib_b)
call codes_release(igrib_c)
! Try from grib1 to grib2
call codes_grib_new_from_samples(igrib_a, 'GRIB1')
call codes_grib_new_from_samples(igrib_b, 'GRIB2')
call codes_grib_util_sections_copy(igrib_a, igrib_b, 31, igrib_c, iret)
if (iret /= GRIB_DIFFERENT_EDITION) then
call codes_check(CODES_INTERNAL_ERROR, 'Error', 'codes_grib_util_sections_copy: Should have failed')
end if
call codes_get_error_string(iret, error_message)
write (*, *) 'error message: ', adjustl( adjustr(trim(error_message)) )
2024-01-21 14:33:45 +00:00
end program