36 subroutine gf_unpack5(cgrib,lcgrib,iofst,ndpts,idrsnum,idrstmpl,
42 character(len=1),
intent(in) :: cgrib(lcgrib)
43 integer,
intent(in) :: lcgrib
44 integer,
intent(inout) :: iofst
45 integer,
intent(out) :: ndpts,idrsnum
46 integer,
pointer,
dimension(:) :: idrstmpl
47 integer,
intent(out) :: ierr
49 integer,
allocatable :: mapdrs(:)
59 allocate(mapdrs(lensec))
69 if(
allocated(mapdrs) )
deallocate(mapdrs)
78 if (mapdrslen.gt.0)
allocate(idrstmpl(mapdrslen),stat=istat)
82 if(
allocated(mapdrs) )
deallocate(mapdrs)
86 nbits=iabs(mapdrs(i))*8
87 if ( mapdrs(i).ge.0 )
then
88 call g2_gbytec(cgrib,idrstmpl(i),iofst,nbits)
91 call g2_gbytec(cgrib,idrstmpl(i),iofst+1,nbits-1)
92 if (isign.eq.1) idrstmpl(i)=-idrstmpl(i)
105 call realloc(idrstmpl,mapdrslen,newmapdrslen,istat)
107 do i=mapdrslen+1,newmapdrslen
108 nbits=iabs(mapdrs(i))*8
109 if ( mapdrs(i).ge.0 )
then
110 call g2_gbytec(cgrib,idrstmpl(i),iofst,nbits)
113 call g2_gbytec(cgrib,idrstmpl(i),iofst+1,nbits-1)
114 if (isign.eq.1) idrstmpl(i)=-idrstmpl(i)
118 mapdrslen=newmapdrslen
120 if(
allocated(mapdrs) )
deallocate(mapdrs)