82 SUBROUTINE parutg(LUN,IO,UTG,NOD,KON,VAL)
90 CHARACTER*128 BORT_STR1,BORT_STR2
94 dimension btyp(8),iok(8)
98 DATA btyp /
'SUB',
'SEQ',
'REP',
'RPC',
'RPS',
'DRB',
'DRP',
'DRS'/
99 DATA iok / -1 , -1 , -1 , -1 , -1 , 0 , 0 , 0 /
118 ltg = min(20,len(utg))
128 IF((utg(1:1).EQ.
'<').AND.(index(utg(3:),
'>').NE.0))
THEN
134 IF(utg(i:i).EQ.
' ')
GOTO 1
136 IF(utg(i:i).EQ.cond(j))
THEN
149 DO nod=inod,
isc(inod)
150 IF(atag.EQ.
tag(nod))
GOTO 2
167 IF(kon.EQ.0 .AND. (io.EQ.0.OR.atag.EQ.
'NUL'.OR..NOT.picky))
THEN
187 IF(
typ(nod-1).NE.
'DRP' .AND.
typ(nod-1).NE.
'DRS')
GOTO 901
188 ELSEIF(kon.NE.6)
THEN
192 IF(atyp.EQ.btyp(i) .AND. io.GT.iok(i))
GOTO 902
200 CALL strnum(utg(icv:ltg),num,ier)
201 IF(ier.LT.0)
GOTO 903
209 900
WRITE(bort_str1,
'("BUFRLIB: PARUTG - TRYING TO WRITE A MNEMONIC'//
210 .
' (",A,") WHICH DOES NOT EXIST IN SUBSET TABLE")') atag
211 WRITE(bort_str2,
'(18X,"(UPON INPUT, IT CONTAINED THE CONDITION '//
212 .
'CHARACTER ",A,")")') utg(icv-1:icv-1)
213 CALL bort2(bort_str1,bort_str2)
214 901
WRITE(bort_str1,
'("BUFRLIB: PARUTG - BUMP NODE (MNEMONIC ",A,")'//
215 .
' MUST REFER TO A DELAYED REPLICATION SEQUENCE, HERE TYPE IS "'//
216 .
',A)') atag,
typ(nod-1)
218 902
WRITE(bort_str1,
'("BUFRLIB: PARUTG - ILLEGAL NODE TYPE: ",A," '//
219 .
'FOR MNEMONIC ",A)') atyp,atag
221 903
WRITE(bort_str1,
'("BUFRLIB: PARUTG - CONDITION VALUE IN '//
222 .
'MNEMONIC ",A," ILLEGAL BECAUSE ALL OTHER CHARACTERS IN '//
223 .
'MNEMONIC MUST BE NUMERIC")') utg
subroutine bort2(STR1, STR2)
Log two error messages and abort application program.
subroutine bort(STR)
Log one error message and abort application program.
This module contains declarations for arrays used to store information about the current BUFR message...
integer, dimension(:), allocatable inode
Table A mnemonic for type of BUFR message.
This module contains array and variable declarations used to store the internal jump/link table.
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
character *3, dimension(:), allocatable typ
Type indicators corresponding to tag:
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
subroutine parutg(LUN, IO, UTG, NOD, KON, VAL)
Parse a mnemonic from a character string.
recursive subroutine strnum(str, num, iret)
Decode an integer from a character string.