48 SUBROUTINE sntbde ( LUNT, IFXYN, LINE, MXMTBD, MXELEM,
49 . nmtbd, imfxyn, cmmnem, cmdsc, cmseq,
50 . nmelem, iefxyn, ceelem )
53 character*200 tags(10), cline
54 character*128 bort_str1, bort_str2
55 character*120 ceelem(mxmtbd,mxelem)
56 character*6
adn30, adsc, clemon
58 character cmseq(120,*)
61 integer imfxyn(*), nmelem(*),
62 . iefxyn(mxmtbd,mxelem)
69 IF ( nmtbd .GE. mxmtbd ) goto 900
74 imfxyn( nmtbd ) = ifxyn
80 cmmnem( ii, nmtbd ) =
' '
84 cmseq( ii, nmtbd ) =
' '
86 ipt = index( line,
'|' )
87 IF ( ipt .NE. 0 )
THEN
91 CALL
parstr( line(ipt+1:), tags, 10, ntag,
';', .false. )
92 IF ( ntag .GT. 0 )
THEN
94 tags(1) = adjustl( tags(1) )
96 IF ( ( tags(1) .NE.
' ' ) .AND.
97 . (
nemock( tags(1) ) .NE. 0 ) )
THEN
98 bort_str2 =
' HAS ILLEGAL MNEMONIC'
102 cmmnem( ii, nmtbd ) = tags(1)(ii:ii)
105 IF ( ntag .GT. 1 )
THEN
107 tags(2) = adjustl( tags(2) )
108 cmdsc( nmtbd ) = tags(2)(1:4)
110 IF ( ntag .GT. 2 )
THEN
112 tags(3) = adjustl( tags(3) )
114 cmseq( ii, nmtbd ) = tags(3)(ii:ii)
125 DO WHILE ( .NOT. done )
126 IF (
igetntbl( lunt, cline ) .NE. 0 )
THEN
127 bort_str2 =
' IS INCOMPLETE'
130 CALL
parstr( cline, tags, 10, ntag,
'|', .false. )
131 IF ( ntag .LT. 2 )
THEN
132 bort_str2 =
' HAS BAD ELEMENT CARD'
138 IF (
igetfxy( tags(2), adsc ) .NE. 0 )
THEN
139 bort_str2 =
' HAS BAD OR MISSING' //
140 .
' ELEMENT FXY NUMBER'
143 IF ( nelem .GE. mxelem ) goto 900
145 iefxyn( nmtbd, nelem ) =
ifxy( adsc )
149 IF ( ntag .GT. 2 )
THEN
150 tags(3) = adjustl( tags(3) )
151 ceelem( nmtbd, nelem ) = tags(3)(1:120)
153 ceelem( nmtbd, nelem ) =
' '
158 IF ( index( tags(2),
' >' ) .EQ. 0 ) done = .true.
160 nmelem( nmtbd ) = nelem
164 900 CALL
bort(
'BUFRLIB: SNTBDE - OVERFLOW OF MERGED ARRAYS')
165 901 clemon =
adn30( ifxyn, 6 )
166 WRITE(bort_str1,
'("BUFRLIB: SNTBDE - TABLE D ENTRY FOR' //
167 .
' SEQUENCE DESCRIPTOR: ",5A)')
168 . clemon(1:1),
'-', clemon(2:3),
'-', clemon(4:6)
169 CALL
bort2(bort_str1,bort_str2)
subroutine parstr(STR, TAGS, MTAG, NTAG, SEP, LIMIT80)
THIS SUBROUTINE PARSES A STRING CONTAINING ONE OR MORE SUBSTRINGS INTO AN ARRAY OF SUBSTRINGS...
subroutine bort2(STR1, STR2)
This subroutine calls subroutine errwrt() to log two error messages, then calls subroutine bort_exit(...
function nemock(NEMO)
THIS FUNCTION CHECKS A MNEMONIC TO VERIFY THAT IT HAS A LENGTH OF BETWEEN ONE AND EIGHT CHARACTERS AN...
function igetfxy(STR, CFXY)
THIS FUNCTION LOOKS FOR AND RETURNS A VALID FXY NUMBER FROM WITHIN THE GIVEN INPUT STRING...
character *(*) function adn30(IDN, L30)
This function converts an FXY value from its bit-wise (integer) representation to its 5 or 6 characte...
function ifxy(ADSC)
This function converts an FXY value from its 6 character representation to its bit-wise (integer) rep...
function igetntbl(LUNT, LINE)
This subroutine reads the next line from an ASCII master table B, table D or Code/Flag table file...
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...
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...