61 SUBROUTINE sntbde ( LUNT, IFXYN, LINE, MXMTBD, MXELEM,
62 . nmtbd, imfxyn, cmmnem, cmdsc, cmseq,
63 . nmelem, iefxyn, ceelem )
68 character*200 tags(10), cline
69 character*128 bort_str1, bort_str2
70 character*120 ceelem(mxmtbd,mxelem)
71 character*6
adn30, adsc, clemon
73 character cmseq(120,*)
76 integer imfxyn(*), nmelem(*),
77 . iefxyn(mxmtbd,mxelem)
84 IF ( nmtbd .GE. mxmtbd ) goto 900
89 imfxyn( nmtbd ) = ifxyn
95 cmmnem( ii, nmtbd ) =
' '
99 cmseq( ii, nmtbd ) =
' '
101 ipt = index( line,
'|' )
102 IF ( ipt .NE. 0 )
THEN
106 CALL
parstr( line(ipt+1:), tags, 10, ntag,
';', .false. )
107 IF ( ntag .GT. 0 )
THEN
109 CALL
jstchr( tags(1), iret )
111 IF ( ( iret .EQ. 0 ) .AND.
112 . (
nemock( tags(1) ) .NE. 0 ) )
THEN
113 bort_str2 =
' HAS ILLEGAL MNEMONIC'
117 cmmnem( ii, nmtbd ) = tags(1)(ii:ii)
120 IF ( ntag .GT. 1 )
THEN
122 CALL
jstchr( tags(2), iret )
123 cmdsc( nmtbd ) = tags(2)(1:4)
125 IF ( ntag .GT. 2 )
THEN
127 CALL
jstchr( tags(3), iret )
129 cmseq( ii, nmtbd ) = tags(3)(ii:ii)
140 DO WHILE ( .NOT. done )
141 IF (
igetntbl( lunt, cline ) .NE. 0 )
THEN
142 bort_str2 =
' IS INCOMPLETE'
145 CALL
parstr( cline, tags, 10, ntag,
'|', .false. )
146 IF ( ntag .LT. 2 )
THEN
147 bort_str2 =
' HAS BAD ELEMENT CARD'
153 IF (
igetfxy( tags(2), adsc ) .NE. 0 )
THEN
154 bort_str2 =
' HAS BAD OR MISSING' //
155 .
' ELEMENT FXY NUMBER'
158 IF ( nelem .GE. mxelem ) goto 900
160 iefxyn( nmtbd, nelem ) =
ifxy( adsc )
164 IF ( ntag .GT. 2 )
THEN
165 CALL
jstchr( tags(3), iret )
166 ceelem( nmtbd, nelem ) = tags(3)(1:120)
168 ceelem( nmtbd, nelem ) =
' '
173 IF ( index( tags(2),
' >' ) .EQ. 0 ) done = .true.
175 nmelem( nmtbd ) = nelem
179 900 CALL
bort(
'BUFRLIB: SNTBDE - OVERFLOW OF MERGED ARRAYS')
180 901 clemon =
adn30( ifxyn, 6 )
181 WRITE(bort_str1,
'("BUFRLIB: SNTBDE - TABLE D ENTRY FOR' //
182 .
' SEQUENCE DESCRIPTOR: ",5A)')
183 . clemon(1:1),
'-', clemon(2:3),
'-', clemon(4:6)
184 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 a descriptor from its bit-wise (integer) representation to its 5 or 6 characte...
function ifxy(ADSC)
THIS FUNCTION RETURNS THE INTEGER CORRESPONDING TO THE BIT-WISE REPRESENTATION OF AN INPUT CHARACTER ...
function igetntbl(LUNT, LINE)
THIS FUNCTION GETS THE NEXT LINE FROM THE ASCII MASTER TABLE FILE SPECIFIED BY LUNT, IGNORING ANY BLANK LINES OR COMMENT LINES IN THE PROCESS.
subroutine jstchr(STR, IRET)
THIS SUBROUTINE LEFT-JUSTIFIES (I.E.
subroutine sntbde(LUNT, IFXYN, LINE, MXMTBD, MXELEM, NMTBD, IMFXYN, CMMNEM, CMDSC, CMSEQ, NMELEM, IEFXYN, CEELEM)
THIS SUBROUTINE PARSES 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() ...