NCEPLIBS-g2  3.4.7
gf_unpack2.F90
Go to the documentation of this file.
1 
5 
25 subroutine gf_unpack2(cgrib, lcgrib, iofst, lencsec2, csec2, ierr)
26  implicit none
27 
28  character(len = 1), intent(in) :: cgrib(lcgrib)
29  integer, intent(in) :: lcgrib
30  integer, intent(inout) :: iofst
31  integer, intent(out) :: lencsec2
32  integer, intent(out) :: ierr
33  character(len = 1), pointer, dimension(:) :: csec2
34  integer :: lensec, istat, isecnum, ipos
35 
36  ierr = 0
37  lencsec2 = 0
38  nullify(csec2)
39 
40  call g2_gbytec(cgrib, lensec, iofst, 32) ! Get Length of Section
41  iofst = iofst + 32
42  lencsec2 = lensec-5
43  call g2_gbytec(cgrib, isecnum, iofst, 8) ! Get Section Number
44  iofst = iofst + 8
45  ipos = (iofst / 8) + 1
46 
47  if (isecnum .ne. 2) then
48  ierr = 6
49  print *, 'gf_unpack2: Not Section 2 data. '
50  return
51  endif
52 
53  allocate(csec2(lencsec2), stat = istat)
54  if (istat .ne. 0) then
55  ierr = 6
56  nullify(csec2)
57  return
58  endif
59 
60  csec2(1:lencsec2) = cgrib(ipos:ipos + lencsec2 - 1)
61  iofst = iofst + (lencsec2 * 8)
62 
63 end subroutine gf_unpack2
64 
subroutine g2_gbytec(in, iout, iskip, nbits)
Extract arbitrary size values from a packed bit string, right justifying each value in the unpacked a...
Definition: g2_gbytesc.F90:20
subroutine gf_unpack2(cgrib, lcgrib, iofst, lencsec2, csec2, ierr)
Unpack Section 2 (Local Use Section) of a GRIB2 message.
Definition: gf_unpack2.F90:26