43 character*128 bort_str
44 character*6 cflwopr,
adn30,fxy
54 IF ( itp(node) .GT. 1 )
THEN
55 IF ( node .EQ. lstnod )
THEN
56 lstnodct = lstnodct + 1
66 IF ( ntamc .GT. 0 )
THEN
67 nodtam =
lstjpb( node, lun,
'SUB' )
69 IF ( nodtam .EQ. inodtamc(ii) )
THEN
75 IF ( ( idxta .GT. 0 ) .AND. ( nbtm .GT. 0 ) )
THEN
83 IF (
imrkopr(tag(node)) .EQ. 1 )
THEN
84 cflwopr = tag(node)(1:3) //
'000'
86 CALL
nemtab( lun, tag(node), idn, tab, nn )
87 IF ( tab .EQ.
'B' )
THEN
89 IF ( fxy(2:3) .EQ.
'33' ) cflwopr =
'222000'
92 IF ( cflwopr .EQ.
'XXXXXX' )
THEN
93 IF (
imrkopr(tag(node)) .EQ. 1 ) goto 900
104 IF ( ( ctco(idxta,jj) .EQ. cflwopr ) .AND.
105 . ( inodtco(idxta,jj) .GE. inode(lun) ) .AND.
106 . ( inodtco(idxta,jj) .LE. isc(inode(lun)) ) .AND.
107 . ( inodtco(idxta,jj) .LT. node ) )
108 . nodflw = inodtco(idxta,jj)
110 IF ( nodflw .EQ. 0 )
THEN
111 IF (
imrkopr(tag(node)) .EQ. 1 ) goto 901
122 DO WHILE ( ( jj .LE. ntc ) .AND.
123 . ( inodtco(idxta,jj) .GE. inode(lun) ) .AND.
124 . ( inodtco(idxta,jj) .LE. isc(inode(lun)) ) .AND.
125 . ( nodbmap .EQ. 0 ) )
126 IF ( ctco(idxta,jj) .EQ.
'236000' )
THEN
127 nodl236 = inodtco(idxta,jj)
128 IF ( inodtco(idxta,jj) .EQ. nodflw )
THEN
131 ELSE IF ( ( ctco(idxta,jj) .EQ.
'235000' ) .OR.
132 . ( ctco(idxta,jj) .EQ.
'237255' ) )
THEN
134 ELSE IF ( ( ctco(idxta,jj) .EQ.
'237000' ) .AND.
135 . ( inodtco(idxta,jj) .EQ. nodflw ) .AND.
136 . ( nodl236 .NE. 0 ) )
THEN
141 IF ( nodbmap .EQ. 0 )
THEN
153 DO WHILE ( ( idxbtm .EQ. 0 ) .AND.
154 . ( nn .LE. nval(lun) ) )
155 IF ( inv( nn, lun ) .GT. nodbmap )
THEN
157 DO WHILE ( ( idxbtm .EQ. 0 ) .AND.
159 IF ( nn .EQ. istbtm(ii) )
THEN
168 IF ( idxbtm .EQ. 0 )
THEN
169 IF (
imrkopr(tag(node)) .EQ. 1 ) goto 902
178 IF ( lstnodct .GT. nbtmse(idxbtm) )
THEN
179 IF (
imrkopr(tag(node)) .EQ. 1 ) goto 903
182 iemrk = iszbtm(idxbtm) - ibtmse(idxbtm,lstnodct) + 1
184 DO WHILE ( ( nn .GE. 1 ) .AND. (
igetrfel .EQ. 0 ) )
185 nodnn = inv( nn, lun )
186 IF ( nodnn .LE. nodbmap )
THEN
188 IF ( ( nodnn .EQ. inodtco(idxta,jj) ) .AND.
189 . ( ctco(idxta,jj) .EQ.
'235000' ) )
THEN
190 IF (
imrkopr(tag(node)) .EQ. 1 ) goto 903
194 IF ( itp(nodnn) .GT. 1 )
THEN
196 IF ( iect .EQ. iemrk )
igetrfel = nn
202 IF (
imrkopr(tag(node)) .EQ. 1 ) goto 903
206 IF (
imrkopr(tag(node)) .EQ. 1 )
THEN
213 isc(node) = isc(nodrfe)
214 IF ( tag(node)(1:3) .EQ.
'225' )
THEN
215 ibt(node) = ibt(nodrfe) + 1
216 irf(node) = -1 * (2 ** ibt(nodrfe))
218 ibt(node) = ibt(nodrfe)
219 irf(node) = irf(nodrfe)
220 IF ( nnrv .GT. 0 )
THEN
222 IF ( ( nodrfe .NE. inodnrv(ii) ) .AND.
223 . ( tag(nodrfe)(1:8) .EQ. tagnrv(ii) ) .AND.
224 . ( nodrfe .GE. isnrv(ii) ) .AND.
225 . ( nodrfe .LE. ienrv(ii) ) )
THEN
238 900
WRITE(bort_str,
'("BUFRLB: IGETRFEL - UNABLE TO DETERMINE '//
239 .
'FOLLOW OPERATOR FOR MARKER OPERATOR ",A)') tag(node)
241 901
WRITE(bort_str,
'("BUFRLB: IGETRFEL - UNABLE TO FIND FOLLOW '//
242 .
'OPERATOR ",A," IN SUBSET")') cflwopr
244 902
WRITE(bort_str,
'("BUFRLB: IGETRFEL - UNABLE TO FIND BITMAP '//
245 .
'FOR MARKER OPERATOR ",A)') tag(node)
247 903
WRITE(bort_str,
'("BUFRLB: IGETRFEL - UNABLE TO FIND PREVIOUS '//
248 .
'ELEMENT REFERENCED BY MARKER OPERATOR ",A)') tag(node)
function lstjpb(NODE, LUN, JBTYP)
THIS FUNCTION SEARCHES BACKWARDS, BEGINNING FROM A GIVEN NODE WITHIN THE JUMP/LINK TABLE...
This module contains array and variable declarations for use with any 2-03-YYY (change reference valu...
This module contains array and variable declarations used to store bitmaps internally within a data s...
This module contains array and variable declarations used to store the internal jump/link table...
character *(*) function adn30(IDN, L30)
This function converts an FXY value from its bit-wise (integer) representation to its 5 or 6 characte...
subroutine nemtab(LUN, NEMO, IDN, TAB, IRET)
This subroutine returns information about a descriptor from the internal DX BUFR tables, based on the mnemonic associated with that descriptor.
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
INTEGER function igetrfel(N, LUN)
THIS FUNCTION CHECKS WHETHER THE INPUT ELEMENT REFERS TO A PREVIOUS ELEMENT WITHIN THE SAME SUBSET VI...
INTEGER function imrkopr(NEMO)
This function determines whether a specified mnemonic is a Table C marker operator.