146 SUBROUTINE w3fi72(ITYPE,FLD,IFLD,IBITL,
148 & IGFLAG,IGRID,IGDS,ICOMP,
149 & IBFLAG,IBMAP,IBLEN,IBDSFL,
150 & NPTS,KBUF,ITOT,JERR)
160 INTEGER NLEFT, NUMBMS
162 CHARACTER * 1 BDS11(11)
163 CHARACTER * 1 KBUF(*)
165 CHARACTER * 1 GDS(200)
166 CHARACTER(1),
ALLOCATABLE:: BMS(:)
167 CHARACTER(1),
ALLOCATABLE:: PFLD(:)
168 CHARACTER(1),
ALLOCATABLE:: IPFLD(:)
175 DATA ib / 71, 82, 73, 66/
193 IF (ipflag .EQ.0)
THEN
196 ELSE IF (ipflag .EQ. 1)
THEN
197 IF (iand(
mova2i(pds(8)),64) .EQ. 64)
THEN
200 ELSE IF (
mova2i(pds(8)) .EQ. 0)
THEN
220 IF (igflag .EQ. 0)
THEN
221 CALL w3fi71(igrid,igds,igerr)
222 IF (igerr .EQ. 1)
THEN
228 IF (igflag .EQ. 0 .OR. igflag .EQ.1)
THEN
230 IF (igerr .EQ. 1)
THEN
248 IF (
mova2i(pds(8)) .EQ. 64 .OR.
249 &
mova2i(pds(8)) .EQ. 192)
THEN
251 IF (ibflag .EQ. 0)
THEN
252 IF (iblen .NE. npts)
THEN
257 IF (mod(iblen,16).NE.0)
THEN
258 nleft = 16 - mod(iblen,16)
262 numbms = 6 + (iblen+nleft) / 8
263 ALLOCATE(bms(numbms))
266 CALL w3fi73(ibflag,ibmap,iblen,bms,lenbms,ier)
282 IF (iand(jscale,32768).NE.0)
THEN
283 jscale = - iand(jscale,32767)
285 scale = 10.0 ** jscale
286 IF (itype .EQ. 0)
THEN
288 fld(i) = fld(i) * scale
292 ifld(i) = nint(float(ifld(i)) * scale)
298 ALLOCATE(pfld(npts*4))
300 IF(ibdsfl(2).NE.0)
THEN
301 ALLOCATE(ipfld(npts*4))
307 CALL w3fi75(ibitl,itype,itoss,fld,ifld,ibmap,ibdsfl,
308 & npts,bds11,ipfld,pfld,len,lenbds,iberr,pds,igds)
310 IF(ibdsfl(2).NE.0)
THEN
318 IF (iberr .EQ. 1)
THEN
325 IF (jscale.NE.0)
THEN
329 fld(i) = fld(i) * dscale
333 fld(i) = nint(float(ifld(i)) * dscale)
343 itot = igribl + ipdsl +
lengds + lenbms + lenbds + 4
356 kbuf(i) = char(ib(i))
359 kbuf(5) = char(mod(itot / 65536,256))
360 kbuf(6) = char(mod(itot / 256,256))
361 kbuf(7) = char(mod(itot ,256))
366 istart = istart + igribl
370 kbuf(istart+ii) = pds(ii)
378 istart = istart + ipdsl
382 kbuf(istart+ii) = gds(ii)
389 IF (lenbms .GT. 0)
THEN
392 kbuf(istart+ii) = bms(ii)
400 istart = istart + lenbms
403 kbuf(istart+ii) = bds11(ii)
412 kbuf(istart+ii) = pfld(ii)
422 kbuf(istart+i) = seven
426 IF(
ALLOCATED(bms))
DEALLOCATE(bms)
427 IF(
ALLOCATED(pfld))
DEALLOCATE(pfld)