30 CHARACTER*128 bort_str
31 CHARACTER*6 cflwopr,
adn30,fxy
41 IF (
itp(node) .GT. 1 )
THEN
42 IF ( node .EQ.
lstnod )
THEN
53 IF (
ntamc .GT. 0 )
THEN
54 nodtam =
lstjpb( node, lun,
'SUB' )
62 IF ( ( idxta .GT. 0 ) .AND. (
nbtm .GT. 0 ) )
THEN
71 cflwopr =
tag(node)(1:3) //
'000'
73 CALL nemtab( lun,
tag(node), idn, tab, nn )
74 IF ( tab .EQ.
'B' )
THEN
76 IF ( fxy(2:3) .EQ.
'33' ) cflwopr =
'222000'
79 IF ( cflwopr .EQ.
'XXXXXX' )
THEN
91 IF ( (
ctco(idxta,jj) .EQ. cflwopr ) .AND.
94 . (
inodtco(idxta,jj) .LT. node ) )
97 IF ( nodflw .EQ. 0 )
THEN
109 DO WHILE ( ( jj .LE. ntc ) .AND.
112 . ( nodbmap .EQ. 0 ) )
113 IF (
ctco(idxta,jj) .EQ.
'236000' )
THEN
115 IF (
inodtco(idxta,jj) .EQ. nodflw )
THEN
118 ELSE IF ( (
ctco(idxta,jj) .EQ.
'235000' ) .OR.
119 . (
ctco(idxta,jj) .EQ.
'237255' ) )
THEN
121 ELSE IF ( (
ctco(idxta,jj) .EQ.
'237000' ) .AND.
122 . (
inodtco(idxta,jj) .EQ. nodflw ) .AND.
123 . ( nodl236 .NE. 0 ) )
THEN
128 IF ( nodbmap .EQ. 0 )
THEN
140 DO WHILE ( ( idxbtm .EQ. 0 ) .AND.
141 . ( nn .LE.
nval(lun) ) )
142 IF (
inv( nn, lun ) .GT. nodbmap )
THEN
144 DO WHILE ( ( idxbtm .EQ. 0 ) .AND.
146 IF ( nn .EQ.
istbtm(ii) )
THEN
155 IF ( idxbtm .EQ. 0 )
THEN
171 DO WHILE ( ( nn .GE. 1 ) .AND. (
igetrfel .EQ. 0 ) )
172 nodnn =
inv( nn, lun )
173 IF ( nodnn .LE. nodbmap )
THEN
175 IF ( ( nodnn .EQ.
inodtco(idxta,jj) ) .AND.
176 . (
ctco(idxta,jj) .EQ.
'235000' ) )
THEN
181 IF (
itp(nodnn) .GT. 1 )
THEN
183 IF ( iect .EQ. iemrk )
igetrfel = nn
201 IF (
tag(node)(1:3) .EQ.
'225' )
THEN
202 ibt(node) =
ibt(nodrfe) + 1
203 irf(node) = -1 * (2 **
ibt(nodrfe))
207 IF (
nnrv .GT. 0 )
THEN
209 IF ( ( nodrfe .NE.
inodnrv(ii) ) .AND.
210 . (
tag(nodrfe)(1:8) .EQ.
tagnrv(ii) ) .AND.
211 . ( nodrfe .GE.
isnrv(ii) ) .AND.
212 . ( nodrfe .LE.
ienrv(ii) ) )
THEN
225 900
WRITE(bort_str,
'("BUFRLB: IGETRFEL - UNABLE TO DETERMINE '//
226 .
'FOLLOW OPERATOR FOR MARKER OPERATOR ",A)')
tag(node)
228 901
WRITE(bort_str,
'("BUFRLB: IGETRFEL - UNABLE TO FIND FOLLOW '//
229 .
'OPERATOR ",A," IN SUBSET")') cflwopr
231 902
WRITE(bort_str,
'("BUFRLB: IGETRFEL - UNABLE TO FIND BITMAP '//
232 .
'FOR MARKER OPERATOR ",A)')
tag(node)
234 903
WRITE(bort_str,
'("BUFRLB: IGETRFEL - UNABLE TO FIND PREVIOUS '//
235 .
'ELEMENT REFERENCED BY MARKER OPERATOR ",A)')
tag(node)
character *(*) function adn30(IDN, L30)
Convert a WMO bit-wise representation of an FXY value to a character string of length 5 or 6.
subroutine bort(STR)
Log one error message and abort application program.
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)
Check whether a specified mnemonic is a Table C marker operator.
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 used to store bitmaps internally within a data s...
integer, dimension(:), allocatable iszbtm
Size of bitmap (total number of entries, whether "set" (set to a value of 0) or not).
integer lstnod
Most recent jump/link table entry that was processed by function igetrfel() and whose corresponding v...
integer, dimension(:,:), allocatable inodtco
Entries within jump/link table which contain Table C operators.
integer ntamc
Number of Table A mnemonics in jump/link table (up to a maximum of MXTAMC) which contain at least one...
integer, dimension(:), allocatable istbtm
Ordinal position in data subset definition corresponding to the first entry of the bitmap.
integer nbtm
Number of stored bitmaps for the current data subset (up to a maximum of MXBTM).
integer, dimension(:), allocatable inodtamc
Entries within jump/link table which contain Table A mnemonics.
integer, dimension(:,:), allocatable ibtmse
Ordinal positions in bitmap of bits that were "set" (set to a value of 0); these ordinal positions ca...
integer lstnodct
Current count of consecutive occurrences of lstnod.
integer, dimension(:), allocatable nbtmse
Number of "set" entries (set to a value of 0) in the bitmap.
character *6, dimension(:,:), allocatable ctco
Table C operators corresponding to inodtco.
integer, dimension(:), allocatable ntco
Number of Table C operators (with an XX value of 21 or greater) within the data subset definition of ...
This module contains declarations for arrays used to store information about the current BUFR message...
integer, dimension(:), allocatable inode
Table A mnemonic for type of BUFR message.
This module contains array and variable declarations for use with any 2-03-YYY (change reference valu...
integer, dimension(:), allocatable ienrv
End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
character *8, dimension(:), allocatable tagnrv
Table B mnemonic to which the corresponding new reference value in nrv applies.
integer, dimension(:), allocatable isnrv
Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
integer nnrv
Number of entries in the jump/link table which contain new reference values (up to a maximum of MXNRV...
integer *8, dimension(:), allocatable nrv
New reference values corresponding to inodnrv.
integer, dimension(:), allocatable inodnrv
Entries within jump/link table which contain new reference values.
This module contains array and variable declarations used to store the internal jump/link table.
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
This module contains declarations for arrays used to store data values and associated metadata for th...
integer, dimension(:), allocatable nval
Number of data values in BUFR data subset.
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
subroutine nemtab(LUN, NEMO, IDN, TAB, IRET)
Get information about a descriptor, based on the mnemonic.