24 COMMON /tabccc/ icdw,icsc,icrv,incw
26 CHARACTER*128 BORT_STR
29 dimension drop(10),jmp0(10),nodl(10),ntag(10,2)
45 CALL nemtab(lun,nemo,idn,tab,itab)
46 IF(tab.NE.
'D')
GOTO 900
51 CALL inctab(nemo,
'SUB',node)
82 1
DO n=ntag(limb,1),ntag(limb,2)
85 drop(limb) = n.EQ.ntag(limb,2)
94 READ(nems,
'(3X,I3)') iyyy
97 IF(icdw.NE.0)
GOTO 907
102 ELSEIF(itab.EQ.2)
THEN
104 IF(icsc.NE.0)
GOTO 908
109 ELSEIF(itab.EQ.3)
THEN
120 ELSEIF(iyyy.EQ.255)
THEN
132 ELSEIF(itab.EQ.7)
THEN
134 IF(icdw.NE.0)
GOTO 907
135 IF(icsc.NE.0)
GOTO 908
136 icdw = ((10*iyyy)+2)/3
144 ELSEIF(itab.EQ.8)
THEN
146 ELSEIF((itab.GE.21).AND.(
iokoper(nems).EQ.1))
THEN
165 CALL tabent(lun,nems,tab,itab,irep,iknt,jum0)
175 IF(limb.GT.maxlim)
GOTO 901
181 ELSEIF(drop(limb))
THEN
182 2
link(nodl(limb)) = 0
185 IF(icrv.NE.1)
GOTO 904
186 IF(icdw.NE.0)
GOTO 902
187 IF(icsc.NE.0)
GOTO 903
188 IF(incw.NE.0)
GOTO 905
206 IF(drop(limb))
GOTO 2
209 ELSEIF(tab.NE.
'C')
THEN
221 900
WRITE(bort_str,
'("BUFRLIB: TABSUB - SUBSET NODE NOT IN TABLE D '//
222 .
'(TAB=",A,") FOR INPUT MNEMONIC ",A)') tab,nemo
224 901
WRITE(bort_str,
'("BUFRLIB: TABSUB - THERE ARE TOO MANY NESTED '//
225 .
'TABLE D SEQUENCES (TREES) WITHIN INPUT MNEMONIC ",A," - THE '//
226 .
'LIMIT IS",I4)') nemo,maxlim
228 902
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-01-YYY OPERATOR WAS '//
229 .
'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
231 903
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-02-YYY OPERATOR WAS '//
232 .
'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
234 904
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-07-YYY OPERATOR WAS '//
235 .
'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
237 905
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-08-YYY OPERATOR WAS '//
238 .
'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
240 906
WRITE(bort_str,
'("BUFRLIB: TABSUB - ENTITIES WERE NOT '//
241 .
'SUCCESSFULLY RESOLVED (BY EMULATING RESURSION) FOR SUBSET '//
242 .
'DEFINED BY TBL A MNEM. ",A)') nemo
244 907
WRITE(bort_str,
'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '//
245 .
'CHANGE DATA WIDTH OPERATIONS IN THE TREE BUILT FROM INPUT ' //
246 .
'MNEMONIC ",A)') nemo
248 908
WRITE(bort_str,
'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '//
249 .
'CHANGE DATA SCALE OPERATIONS IN THE TREE BUILT FROM INPUT ' //
250 .
'MNEMONIC ",A)') nemo
252 909
WRITE(bort_str,
'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '//
253 .
'CHANGE REF VALUE OPERATIONS IN THE TREE BUILT FROM INPUT ' //
254 .
'MNEMONIC ",A)') nemo
256 910
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-03-YYY OPERATOR WAS '//
257 .
'APPLIED WITHOUT ANY SUBSEQUENT 2-03-255 OPERATOR FOR '//
258 .
'INPUT MNEMONIC ",A)') nemo
260 911
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-03-000 OPERATOR WAS '//
261 .
'ENCOUNTERED WITHOUT ANY PRIOR 2-03-YYY OPERATOR FOR '//
262 .
'INPUT MNEMONIC ",A)') nemo
264 912
CALL bort(
'BUFRLIB: TABSUB - MXTCO OVERFLOW')
265 913
CALL bort(
'BUFRLIB: TABSUB - MXTAMC OVERFLOW')
subroutine bort(STR)
Log one error message and abort application program.
subroutine inctab(ATAG, ATYP, NODE)
This subroutine returns the next available positional index for writing into the internal jump/link t...
integer function iokoper(NEMO)
This function determines whether a specified mnemonic is a Table C operator supported by the BUFRLIB ...
This module contains array and variable declarations used to store bitmaps internally within a data s...
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 inodtamc
Entries within jump/link table which contain Table A mnemonics.
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 by various subroutines to hold information about Ta...
integer, dimension(:,:), allocatable krp
Replication counts corresponding to nem:
integer, dimension(:,:), allocatable irp
Replication indicators corresponding to nem:
character *8, dimension(:,:), allocatable nem
Child mnemonics within Table D sequences.
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...
integer nnrv
Number of entries in the jump/link table which contain new reference values (up to a maximum of MXNRV...
integer ipfnrv
A number between 1 and nnrv, denoting the first entry within the module arrays which applies to the c...
integer ibtnrv
Number of bits in Section 4 occupied by each new reference value for the current 2-03-YYY operator in...
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:
integer, dimension(:), allocatable jmpb
Jump backward indices corresponding to tag and typ:
integer ntab
Number of entries in the jump/link table.
integer, dimension(:), allocatable jump
Jump forward indices corresponding to tag and typ:
integer, dimension(:), allocatable link
Link indices corresponding to tag, typ and jmpb:
This module declares and initializes the MXTAMC variable.
integer mxtamc
Maximum number of Table A mnemonics in the internal jump/link table which contain at least one Table ...
This module declares and initializes the MXTCO variable.
integer mxtco
Maximum number of Table C operators with an XX value of 21 or greater that can appear within the data...
subroutine nemtab(LUN, NEMO, IDN, TAB, IRET)
Get information about a descriptor, based on the mnemonic.
subroutine nemtbd(LUN, ITAB, NSEQ, NEMS, IRPS, KNTS)
This subroutine returns information about a Table D descriptor from the internal DX BUFR tables.
subroutine tabent(LUN, NEMO, TAB, ITAB, IREP, IKNT, JUM0)
This subroutine builds and stores an entry for a Table B or Table D mnemonic within the internal jump...
subroutine tabsub(LUN, NEMO)
This subroutine builds the entire jump/link tree (including recursively resolving all "child" mnemoni...