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 a descriptor from its bit-wise (integer) representation to its 5 or 6 characte...
subroutine nemtab(LUN, NEMO, IDN, TAB, IRET)
THIS SUBROUTINE SEARCHES FOR MNEMONIC NEMO WITHIN THE INTERNAL TABLE B AND D ARRAYS HOLDING THE DICTI...
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.