53 COMMON /tabccc/ icdw,icsc,icrv,incw
55 CHARACTER*128 bort_str
58 dimension drop(10),jmp0(10),nodl(10),ntag(10,2)
74 CALL
nemtab(lun,nemo,idn,tab,itab)
75 IF(tab.NE.
'D') goto 900
80 CALL
inctab(nemo,
'SUB',node)
88 CALL
nemtbd(lun,itab,nseq,nem(1,1),irp(1,1),krp(1,1))
103 IF(ntamc+1.GT.mxtamc) goto 913
104 inodtamc(ntamc+1) = node
111 1
DO n=ntag(limb,1),ntag(limb,2)
114 drop(limb) = n.EQ.ntag(limb,2)
116 CALL
nemtab(lun,nem(n,limb),idn,tab,itab)
123 READ(nems,
'(3X,I3)') iyyy
126 IF(icdw.NE.0) goto 907
131 ELSEIF(itab.EQ.2)
THEN
133 IF(icsc.NE.0) goto 908
138 ELSEIF(itab.EQ.3)
THEN
144 IF(ipfnrv.EQ.0) goto 911
149 ELSEIF(iyyy.EQ.255)
THEN
158 IF(ibtnrv.NE.0) goto 909
161 ELSEIF(itab.EQ.7)
THEN
163 IF(icdw.NE.0) goto 907
164 IF(icsc.NE.0) goto 908
165 icdw = ((10*iyyy)+2)/3
173 ELSEIF(itab.EQ.8)
THEN
175 ELSEIF((itab.GE.21).AND.(
iokoper(nems).EQ.1))
THEN
184 IF(ntco(ntamc)+1.GT.mxtco) goto 912
185 ntco(ntamc) = ntco(ntamc)+1
186 ctco(ntamc,ntco(ntamc)) = nems(1:6)
187 inodtco(ntamc,ntco(ntamc)) = ntab
194 CALL
tabent(lun,nems,tab,itab,irep,iknt,jum0)
204 IF(limb.GT.maxlim) goto 901
205 CALL
nemtbd(lun,itab,nseq,nem(1,limb),irp(1,limb),krp(1,limb))
210 ELSEIF(drop(limb))
THEN
211 2 link(nodl(limb)) = 0
214 IF(icrv.NE.1) goto 904
215 IF(icdw.NE.0) goto 902
216 IF(icsc.NE.0) goto 903
217 IF(incw.NE.0) goto 905
218 IF(ibtnrv.NE.0) goto 910
235 IF(drop(limb)) goto 2
236 link(nodl(limb)) = ntab+1
238 ELSEIF(tab.NE.
'C')
THEN
239 link(nodl(limb)) = ntab+1
250 900
WRITE(bort_str,
'("BUFRLIB: TABSUB - SUBSET NODE NOT IN TABLE D '//
251 .
'(TAB=",A,") FOR INPUT MNEMONIC ",A)') tab,nemo
253 901
WRITE(bort_str,
'("BUFRLIB: TABSUB - THERE ARE TOO MANY NESTED '//
254 .
'TABLE D SEQUENCES (TREES) WITHIN INPUT MNEMONIC ",A," - THE '//
255 .
'LIMIT IS",I4)') nemo,maxlim
257 902
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-01-YYY OPERATOR WAS '//
258 .
'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
260 903
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-02-YYY OPERATOR WAS '//
261 .
'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
263 904
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-07-YYY OPERATOR WAS '//
264 .
'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
266 905
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-08-YYY OPERATOR WAS '//
267 .
'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
269 906
WRITE(bort_str,
'("BUFRLIB: TABSUB - ENTITIES WERE NOT '//
270 .
'SUCCESSFULLY RESOLVED (BY EMULATING RESURSION) FOR SUBSET '//
271 .
'DEFINED BY TBL A MNEM. ",A)') nemo
273 907
WRITE(bort_str,
'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '//
274 .
'CHANGE DATA WIDTH OPERATIONS IN THE TREE BUILT FROM INPUT ' //
275 .
'MNEMONIC ",A)') nemo
277 908
WRITE(bort_str,
'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '//
278 .
'CHANGE DATA SCALE OPERATIONS IN THE TREE BUILT FROM INPUT ' //
279 .
'MNEMONIC ",A)') nemo
281 909
WRITE(bort_str,
'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '//
282 .
'CHANGE REF VALUE OPERATIONS IN THE TREE BUILT FROM INPUT ' //
283 .
'MNEMONIC ",A)') nemo
285 910
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-03-YYY OPERATOR WAS '//
286 .
'APPLIED WITHOUT ANY SUBSEQUENT 2-03-255 OPERATOR FOR '//
287 .
'INPUT MNEMONIC ",A)') nemo
289 911
WRITE(bort_str,
'("BUFRLIB: TABSUB - A 2-03-000 OPERATOR WAS '//
290 .
'ENCOUNTERED WITHOUT ANY PRIOR 2-03-YYY OPERATOR FOR '//
291 .
'INPUT MNEMONIC ",A)') nemo
293 912 CALL
bort(
'BUFRLIB: TABSUB - MXTCO OVERFLOW')
294 913 CALL
bort(
'BUFRLIB: TABSUB - MXTAMC OVERFLOW')
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...
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 inctab(ATAG, ATYP, NODE)
THIS SUBROUTINE RETURNS THE NEXT AVAILABLE POSITIONAL INDEX FOR WRITING INTO THE INTERNAL JUMP/LINK T...
This module contains array and variable declarations used to store the internal jump/link table...
subroutine tabsub(LUN, NEMO)
THIS SUBROUTINE BUILDS THE ENTIRE JUMP/LINK TREE (I.E., INCLUDING RECURSIVELY RESOLVING ALL "CHILD" M...
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() ...
subroutine nemtbd(LUN, ITAB, NSEQ, NEMS, IRPS, KNTS)
This subroutine returns information about a Table D descriptor from the internal DX BUFR tables...
INTEGER function iokoper(NEMO)
This function determines whether a specified mnemonic is a Table C operator supported by the BUFRLIB ...