41 SUBROUTINE sntbde ( LUNT, IFXYN, LINE, MXMTBD, MXELEM,
42 . NMTBD, IMFXYN, CMMNEM, CMDSC, CMSEQ,
43 . NMELEM, IEFXYN, CEELEM )
46 CHARACTER*200 TAGS(10), CLINE
47 CHARACTER*128 BORT_STR1, BORT_STR2
48 CHARACTER*120 CEELEM(MXMTBD,MXELEM)
49 CHARACTER*6 ADN30, ADSC, CLEMON
51 CHARACTER CMSEQ(120,*)
54 INTEGER IMFXYN(*), NMELEM(*),
55 . IEFXYN(MXMTBD,MXELEM)
62 IF ( nmtbd .GE. mxmtbd )
GOTO 900
67 imfxyn( nmtbd ) = ifxyn
73 cmmnem( ii, nmtbd ) =
' '
77 cmseq( ii, nmtbd ) =
' '
79 ipt = index( line,
'|' )
80 IF ( ipt .NE. 0 )
THEN
84 CALL parstr ( line(ipt+1:), tags, 10, ntag,
';', .false. )
85 IF ( ntag .GT. 0 )
THEN
87 tags(1) = adjustl( tags(1) )
89 IF ( ( tags(1) .NE.
' ' ) .AND.
90 . (
nemock( tags(1) ) .NE. 0 ) )
THEN
91 bort_str2 =
' HAS ILLEGAL MNEMONIC'
95 cmmnem( ii, nmtbd ) = tags(1)(ii:ii)
98 IF ( ntag .GT. 1 )
THEN
100 tags(2) = adjustl( tags(2) )
101 cmdsc( nmtbd ) = tags(2)(1:4)
103 IF ( ntag .GT. 2 )
THEN
105 tags(3) = adjustl( tags(3) )
107 cmseq( ii, nmtbd ) = tags(3)(ii:ii)
118 DO WHILE ( .NOT. done )
119 IF (
igetntbl( lunt, cline ) .NE. 0 )
THEN
120 bort_str2 =
' IS INCOMPLETE'
123 CALL parstr ( cline, tags, 10, ntag,
'|', .false. )
124 IF ( ntag .LT. 2 )
THEN
125 bort_str2 =
' HAS BAD ELEMENT CARD'
131 IF (
igetfxy( tags(2), adsc ) .NE. 0 )
THEN
132 bort_str2 =
' HAS BAD OR MISSING' //
133 .
' ELEMENT FXY NUMBER'
136 IF ( nelem .GE. mxelem )
GOTO 900
138 iefxyn( nmtbd, nelem ) =
ifxy( adsc )
142 IF ( ntag .GT. 2 )
THEN
143 tags(3) = adjustl( tags(3) )
144 ceelem( nmtbd, nelem ) = tags(3)(1:120)
146 ceelem( nmtbd, nelem ) =
' '
151 IF ( index( tags(2),
' >' ) .EQ. 0 ) done = .true.
153 nmelem( nmtbd ) = nelem
157 900
CALL bort(
'BUFRLIB: SNTBDE - OVERFLOW OF MERGED ARRAYS')
158 901 clemon = adn30( ifxyn, 6 )
159 WRITE(bort_str1,
'("BUFRLIB: SNTBDE - TABLE D ENTRY FOR' //
160 .
' SEQUENCE DESCRIPTOR: ",5A)')
161 . clemon(1:1),
'-', clemon(2:3),
'-', clemon(4:6)
162 CALL bort2(bort_str1,bort_str2)
subroutine bort2(STR1, STR2)
Log two error messages and abort application program.
subroutine bort(STR)
Log one error message and abort application program.
function ifxy(ADSC)
Convert an FXY value from its 6 character representation to its WMO bit-wise representation.
function igetfxy(STR, CFXY)
This function looks for and returns a valid FXY number from within the given input string.
function igetntbl(LUNT, LINE)
This subroutine reads the next line from an ASCII master table B, table D or Code/Flag table file,...
function nemock(NEMO)
This function checks a mnemonic to verify that it has a length of between 1 and 8 characters and that...
subroutine parstr(STR, TAGS, MTAG, NTAG, SEP, LIMIT80)
Parse a string containing one or more substrings into an array of substrings.
subroutine sntbde(LUNT, IFXYN, LINE, MXMTBD, MXELEM, NMTBD, IMFXYN, CMMNEM, CMDSC, CMSEQ, NMELEM, IEFXYN, CEELEM)
This subroutine stores the first line of an entry that was previously read from an ASCII master Table...