160 SUBROUTINE getgb2r(LUGB,CINDEX,GFLD,IRET)
164 INTEGER,
INTENT(IN) :: LUGB
165 CHARACTER(LEN=1),
INTENT(IN) :: CINDEX(*)
166 INTEGER,
INTENT(OUT) :: IRET
169 INTEGER :: LSKIP,SKIP6,SKIP7
170 CHARACTER(LEN=1):: CSIZE(4)
171 CHARACTER(LEN=1),
ALLOCATABLE :: CTEMP(:)
172 real,
pointer,
dimension(:) :: newfld
175 subroutine gf_unpack6(cgrib,lcgrib,iofst,ngpts,ibmap,
177 character(len=1),
intent(in) :: cgrib(lcgrib)
178 integer,
intent(in) :: lcgrib,ngpts
179 integer,
intent(inout) :: iofst
180 integer,
intent(out) :: ibmap
181 integer,
intent(out) :: ierr
182 logical*1,
pointer,
dimension(:) :: bmap
184 subroutine gf_unpack7(cgrib,lcgrib,iofst,igdsnum,igdstmpl,
185 & idrsnum,idrstmpl,ndpts,fld,ierr)
186 character(len=1),
intent(in) :: cgrib(lcgrib)
187 integer,
intent(in) :: lcgrib,ndpts,idrsnum,igdsnum
188 integer,
intent(inout) :: iofst
189 integer,
pointer,
dimension(:) :: idrstmpl,igdstmpl
190 integer,
intent(out) :: ierr
191 real,
pointer,
dimension(:) :: fld
196 NULLIFY(gfld%bmap,gfld%fld)
204 IF ( gfld%ibmap.eq.0.OR.gfld%ibmap.eq.254 )
THEN
206 CALL baread(lugb,iskip,4,lread,csize)
208 ALLOCATE(ctemp(ilen))
209 CALL baread(lugb,iskip,ilen,lread,ctemp)
210 IF (ilen.NE.lread)
THEN
216 CALL gf_unpack6(ctemp,ilen,iofst,gfld%ngrdpts,idum,
228 CALL baread(lugb,iskip,4,lread,csize)
230 if (ilen.lt.6) ilen=6
231 ALLOCATE(ctemp(ilen))
232 CALL baread(lugb,iskip,ilen,lread,ctemp)
233 IF (ilen.NE.lread)
THEN
239 CALL gf_unpack7(ctemp,ilen,iofst,gfld%igdtnum,gfld%igdtmpl,
240 & gfld%idrtnum,gfld%idrtmpl,gfld%ndpts,
251 if ( gfld%ibmap .ne. 255 .AND.
associated(gfld%bmap) )
then
252 allocate(newfld(gfld%ngrdpts))
257 if ( gfld%bmap(j) )
then
258 newfld(j)=gfld%fld(n)
264 deallocate(gfld%fld);