1 subroutine jpcunpack(cpack,len,idrstmpl,ndpts,fld)
2 !$$$ SUBPROGRAM DOCUMENTATION BLOCK
4 ! SUBPROGRAM: jpcunpack
5 ! PRGMMR: Gilbert ORG: W/NP11 DATE: 2002-12-17
7 ! ABSTRACT: This subroutine unpacks a data field that was packed into a
9 ! using info from the GRIB2 Data Representation Template 5.40 or 5.40000.
11 ! PROGRAM HISTORY LOG:
14 ! USAGE: CALL jpcunpack(cpack,len,idrstmpl,ndpts,fld)
15 ! INPUT ARGUMENT LIST:
16 ! cpack - The packed data field (character*1 array)
17 ! len - length of packed field cpack().
18 ! idrstmpl - Contains the array of values for Data Representation
19 ! Template 5.40 or 5.40000
20 ! ndpts - The number of data values to unpack
22 ! OUTPUT ARGUMENT LIST:
23 ! fld() - Contains the unpacked data values
28 ! LANGUAGE: XL Fortran 90
33 character(len=1),intent(in) :: cpack(len)
34 integer,intent(in) :: ndpts,len
35 integer,intent(in) :: idrstmpl(*)
36 real,intent(out) :: fld(ndpts)
38 integer :: ifld(ndpts)
40 real :: ref,bscale,dscale
41 integer :: dec_jpeg2000
44 call rdieee(ieee,ref,1)
45 bscale = 2.0**real(idrstmpl(2))
46 dscale = 10.0**real(-idrstmpl(3))
49 ! if nbits equals 0, we have a constant field where the reference value
50 ! is the data value at each gridpoint
53 ! call g2lib_gbytes(cpack,ifld,0,nbits,0,ndpts)
54 iret=dec_jpeg2000(cpack,len,ifld)
56 fld(j)=((real(ifld(j))*bscale)+ref)*dscale