35 SUBROUTINE getgb2rp(LUGB,CINDEX,EXTRACT,GRIBM,LENG,IRET)
37 INTEGER,
INTENT(IN) :: LUGB
38 CHARACTER(LEN=1),
INTENT(IN) :: CINDEX(*)
39 LOGICAL,
INTENT(IN) :: EXTRACT
40 INTEGER,
INTENT(OUT) :: LENG,IRET
41 CHARACTER(LEN=1),
POINTER,
DIMENSION(:) :: GRIBM
43 INTEGER,
PARAMETER :: ZERO=0
44 CHARACTER(LEN=1),
ALLOCATABLE,
DIMENSION(:) :: CSEC2,CSEC6,CSEC7
45 CHARACTER(LEN=4) :: Ctemp
55 if ( iskp2 .gt. 0 )
then
56 CALL baread(lugb,iskip+iskp2,4,lread,ctemp)
59 CALL baread(lugb,iskip+iskp2,len2,lread,csec2)
74 IF ( ibmap .eq. 254 )
THEN
76 CALL baread(lugb,iskip+iskp6,4,lread,ctemp)
83 CALL baread(lugb,iskip+iskp7,4,lread,ctemp)
86 CALL baread(lugb,iskip+iskp7,len7,lread,csec7)
88 leng=len0+len1+len2+len3+len4+len5+len6+len7+len8
89 IF (.NOT.
ASSOCIATED(gribm))
ALLOCATE(gribm(leng))
109 gribm(17:16+len1)=cindex(45:44+len1)
115 if ( iskp2 .gt. 0 )
then
116 gribm(lencur+1:lencur+len2)=csec2(1:len2)
122 gribm(lencur+1:lencur+len3+len4+len5)=
123 & cindex(ipos+1:ipos+len3+len4+len5)
124 lencur=lencur+len3+len4+len5
125 ipos=ipos+len3+len4+len5
129 if ( len6 .eq. 6 .AND. ibmap .ne. 254 )
then
130 gribm(lencur+1:lencur+len6)=cindex(ipos+1:ipos+len6)
134 CALL baread(lugb,iskip+iskp6,4,lread,ctemp)
136 ALLOCATE(csec6(len6))
137 CALL baread(lugb,iskip+iskp6,len6,lread,csec6)
138 gribm(lencur+1:lencur+len6)=csec6(1:len6)
140 IF (
allocated(csec6))
DEALLOCATE(csec6)
145 gribm(lencur+1:lencur+len7)=csec7(1:len7)
157 IF (
allocated(csec2))
DEALLOCATE(csec2)
158 IF (
allocated(csec7))
deallocate(csec7)
164 IF (.NOT.
ASSOCIATED(gribm))
ALLOCATE(gribm(leng))
165 CALL baread(lugb,iskip,leng,lread,gribm)
166 IF ( leng .NE. lread )
THEN