22 SUBROUTINE tabent(LUN,NEMO,TAB,ITAB,IREP,IKNT,JUM0)
32 COMMON /reptab/ idnr(5,2),typs(5,2),reps(5,2),lens(5)
34 COMMON /tabccc/ icdw,icsc,icrv,incw
36 CHARACTER*128 BORT_STR
50 rtag = reps(irep,1)//nemo
52 IF(rtag(i:i).EQ.
' ')
THEN
53 rtag(i:i) = reps(irep,2)
54 CALL inctab(rtag,typs(irep,1),node)
58 ibt(node) = lens(irep)
61 IF(irep.EQ.1)
irf(node) = iknt
74 CALL nemtbb(lun,itab,unit,iscl,iref,ibit)
75 IF(unit(1:5).EQ.
'CCITT')
THEN
80 CALL inctab(nemo,typt,node)
87 IF(unit(1:4).EQ.
'CODE')
THEN
89 ELSEIF(unit(1:4).EQ.
'FLAG')
THEN
93 IF( (typt.EQ.
'NUM') .AND. (
ibtnrv.NE.0) )
THEN
104 ELSEIF( (typt.EQ.
'NUM') .AND. (nemo(1:3).NE.
'204') )
THEN
105 ibt(node) =
ibt(node) + icdw
106 isc(node) =
isc(node) + icsc
107 irf(node) =
irf(node) * icrv
108 ELSEIF( (typt.EQ.
'CHR') .AND. (incw.GT.0) )
THEN
112 ELSEIF(tab.EQ.
'D')
THEN
119 CALL inctab(nemo,typt,node)
137 900
WRITE(bort_str,
'("BUFRLIB: TABENT - REPLICATOR ERROR FOR INPUT '//
138 .
'MNEMONIC ",A,", RTAG IS ",A)') nemo,rtag
140 901
WRITE(bort_str,
'("BUFRLIB: TABENT - UNDEFINED TAG (",A,") FOR '//
141 .
'INPUT MNEMONIC ",A)') tab,nemo
143 902
CALL bort(
'BUFRLIB: TABENT - MXNRV 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...
This module contains array and variable declarations for use with any 2-03-YYY (change reference valu...
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 ipfnrv
A number between 1 and nnrv, denoting the first entry within the module arrays which applies to the c...
integer, dimension(:), allocatable inodnrv
Entries within jump/link table which contain new reference values.
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, 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 MXNRV variable.
integer mxnrv
Maximum number of entries in the internal jump/link table that can contain new reference values.
subroutine nemtbb(LUN, ITAB, UNIT, ISCL, IREF, IBIT)
Get information about a Table B descriptor.
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...