59 SUBROUTINE getg2ir(LUGB,MSK1,MSK2,MNUM,CBUF,NLEN,NNUM,NMESS,IRET)
62 parameter(init=50000,next=10000)
63 CHARACTER(LEN=1),
POINTER,
DIMENSION(:) :: CBUF
64 INTEGER,
INTENT(IN) :: LUGB,MSK1,MSK2,MNUM
65 INTEGER,
INTENT(OUT) :: NLEN,NNUM,NMESS,IRET
66 CHARACTER(LEN=1),
POINTER,
DIMENSION(:) :: CBUFTMP
68 SUBROUTINE ixgb2(LUGB,LSKIP,LGRIB,CBUF,NUMFLD,MLEN,IRET)
69 INTEGER,
INTENT(IN) :: LUGB,LSKIP,LGRIB
70 CHARACTER(LEN=1),
POINTER,
DIMENSION(:) :: CBUF
71 INTEGER,
INTENT(OUT) :: NUMFLD,MLEN,IRET
77 IF (
ASSOCIATED(cbuf))
NULLIFY(cbuf)
79 ALLOCATE(cbuf(mbuf),stat=istat)
87 CALL skgb(lugb,iseek,msk1,lskip,lgrib)
91 CALL skgb(lugb,iseek,msk2,lskip,lgrib)
99 dowhile(iret.EQ.0.AND.lgrib.GT.0)
100 CALL ixgb2(lugb,lskip,lgrib,cbuftmp,numfld,nbytes,iret1)
101 IF (iret1.NE.0) print *,
' SAGT ',numfld,nbytes,iret1
102 IF((nbytes+nlen).GT.mbuf)
THEN
104 newsize=max(mbuf+next,mbuf+nbytes)
105 CALL realloc(cbuf,nlen,newsize,istat)
106 IF ( istat .NE. 0 )
THEN
116 IF (
ASSOCIATED(cbuftmp) )
THEN
117 cbuf(nlen+1:nlen+nbytes)=cbuftmp(1:nbytes)
118 DEALLOCATE(cbuftmp,stat=istat)
120 print *,
' deallocating cbuftmp ... ',istat
130 CALL skgb(lugb,iseek,msk2,lskip,lgrib)