56 COMMON /tabccc/ icdw,icsc,icrv,incw
58 CHARACTER*128 BORT_STR
61 dimension drop(10),jmp0(10),nodl(10),ntag(10,2)
77 CALL nemtab(lun,nemo,idn,tab,itab)
78 IF(tab.NE.
'D')
GOTO 900
83 CALL inctab(nemo,
'SUB',node)
91 CALL nemtbd(lun,itab,nseq,nem(1,1),irp(1,1),krp(1,1))
1141
DO n=ntag(limb,1),ntag(limb,2)
117 drop(limb) = n.EQ.ntag(limb,2)
119 CALL nemtab(lun,nem(n,limb),idn,tab,itab)
126 READ(nems,
'(3X,I3)') iyyy
129 IF(icdw.NE.0)
GOTO 907
134 ELSEIF(itab.EQ.2)
THEN
136 IF(icsc.NE.0)
GOTO 908
141 ELSEIF(itab.EQ.3)
THEN
152 ELSEIF(iyyy.EQ.255)
THEN
164 ELSEIF(itab.EQ.7)
THEN
166 IF(icdw.NE.0)
GOTO 907
167 IF(icsc.NE.0)
GOTO 908
168 icdw = ((10*iyyy)+2)/3
176 ELSEIF(itab.EQ.8)
THEN
178 ELSEIF((itab.GE.21).AND.(
iokoper(nems).EQ.1))
THEN
197 CALL tabent(lun,nems,tab,itab,irep,iknt,jum0)
207 IF(limb.GT.maxlim)
GOTO 901
208 CALL nemtbd(lun,itab,nseq,nem(1,limb),irp(1,limb),krp(1,limb))
213 ELSEIF(drop(limb))
THEN
2142
link(nodl(limb)) = 0
217 IF(icrv.NE.1)
GOTO 904
218 IF(icdw.NE.0)
GOTO 902
219 IF(icsc.NE.0)
GOTO 903
220 IF(incw.NE.0)
GOTO 905
238 IF(drop(limb))
GOTO 2
241 ELSEIF(tab.NE.
'C')
THEN
253900
WRITE(bort_str,
'("BUFRLIB: TABSUB - SUBSET NODE NOT IN TABLE D '//
254 .
'(TAB=",A,") FOR INPUT MNEMONIC ",A)') tab,nemo
256901
WRITE(bort_str,
'("BUFRLIB: TABSUB - THERE ARE TOO MANY NESTED '//
257 .
'TABLE D SEQUENCES (TREES) WITHIN INPUT MNEMONIC ",A," - THE '//
258 .
'LIMIT IS",I4)') nemo,maxlim
260902
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-01-YYY OPERATOR WAS '//
261 .
'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
263903
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-02-YYY OPERATOR WAS '//
264 .
'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
266904
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-07-YYY OPERATOR WAS '//
267 .
'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
269905
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-08-YYY OPERATOR WAS '//
270 .
'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
272906
WRITE(bort_str,
'("BUFRLIB: TABSUB - ENTITIES WERE NOT '//
273 .
'SUCCESSFULLY RESOLVED (BY EMULATING RESURSION) FOR SUBSET '//
274 .
'DEFINED BY TBL A MNEM. ",A)') nemo
276907
WRITE(bort_str,
'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '//
277 .
'CHANGE DATA WIDTH OPERATIONS IN THE TREE BUILT FROM INPUT ' //
278 .
'MNEMONIC ",A)') nemo
280908
WRITE(bort_str,
'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '//
281 .
'CHANGE DATA SCALE OPERATIONS IN THE TREE BUILT FROM INPUT ' //
282 .
'MNEMONIC ",A)') nemo
284909
WRITE(bort_str,
'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '//
285 .
'CHANGE REF VALUE OPERATIONS IN THE TREE BUILT FROM INPUT ' //
286 .
'MNEMONIC ",A)') nemo
288910
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-03-YYY OPERATOR WAS '//
289 .
'APPLIED WITHOUT ANY SUBSEQUENT 2-03-255 OPERATOR FOR '//
290 .
'INPUT MNEMONIC ",A)') nemo
292911
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-03-000 OPERATOR WAS '//
293 .
'ENCOUNTERED WITHOUT ANY PRIOR 2-03-YYY OPERATOR FOR '//
294 .
'INPUT MNEMONIC ",A)') nemo
296912
CALL bort(
'BUFRLIB: TABSUB - MXTCO OVERFLOW')
297913
CALL bort(
'BUFRLIB: TABSUB - MXTAMC OVERFLOW')
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
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 inodtamc
Entries within jump/link table which contain Table A mnemonics.
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 ntco
Number of Table C operators (with an XX value of 21 or greater) within the data subset definition of ...
character *6, dimension(:,:), allocatable ctco
Table C operators corresponding to inodtco.
This module contains array and variable declarations for use with any 2-03-YYY (change reference valu...
integer nnrv
Number of entries in the jump/link table which contain new reference values (up to a maximum of MXNRV...
integer, dimension(:), allocatable ienrv
End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
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 link
Link indices corresponding to tag, typ and jmpb:
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
integer, dimension(:), allocatable jump
Jump forward indices corresponding to tag and typ:
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
integer ntab
Number of entries in the jump/link table.
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
integer, dimension(:), allocatable jmpb
Jump backward indices corresponding to tag and typ:
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)
This subroutine returns information about a descriptor from the internal DX BUFR tables,...
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 (NEMO) WITHIN THE INTERN...
subroutine tabsub(LUN, NEMO)
THIS SUBROUTINE BUILDS THE ENTIRE JUMP/LINK TREE (I.E., INCLUDING RECURSIVELY RESOLVING ALL "CHILD" M...