120 SUBROUTINE parutg(LUN,IO,UTG,NOD,KON,VAL)
125 COMMON /utgprm/ picky
128 CHARACTER*128 bort_str1,bort_str2
130 CHARACTER*3 atyp,btyp
132 dimension btyp(8),iok(8)
136 DATA btyp /
'SUB',
'SEQ',
'REP',
'RPC',
'RPS',
'DRB',
'DRP',
'DRS'/
137 DATA iok / -1 , -1 , -1 , -1 , -1 , 0 , 0 , 0 /
156 ltg = min(20,len(utg))
166 IF((utg(1:1).EQ.
'<').AND.(index(utg(3:),
'>').NE.0))
THEN
172 IF(utg(i:i).EQ.
' ') goto 1
174 IF(utg(i:i).EQ.cond(j))
THEN
187 DO nod=inod,isc(inod)
188 IF(atag.EQ.tag(nod)) goto 2
205 IF(kon.EQ.0 .AND. (io.EQ.0.OR.atag.EQ.
'NUL'.OR..NOT.picky))
THEN
225 IF(typ(nod-1).NE.
'DRP' .AND. typ(nod-1).NE.
'DRS') goto 901
226 ELSEIF(kon.NE.6)
THEN
230 IF(atyp.EQ.btyp(i) .AND. io.GT.iok(i)) goto 902
238 CALL
strnum(utg(icv:ltg),num)
239 IF(num.LT.0) goto 903
247 900
WRITE(bort_str1,
'("BUFRLIB: PARUTG - TRYING TO WRITE A MNEMONIC'//
248 .
' (",A,") WHICH DOES NOT EXIST IN SUBSET TABLE")') atag
249 WRITE(bort_str2,
'(18X,"(UPON INPUT, IT CONTAINED THE CONDITION '//
250 .
'CHARACTER ",A,")")') utg(icv-1:icv-1)
251 CALL
bort2(bort_str1,bort_str2)
252 901
WRITE(bort_str1,
'("BUFRLIB: PARUTG - BUMP NODE (MNEMONIC ",A,")'//
253 .
' MUST REFER TO A DELAYED REPLICATION SEQUENCE, HERE TYPE IS "'//
254 .
',A)') atag,typ(nod-1)
256 902
WRITE(bort_str1,
'("BUFRLIB: PARUTG - ILLEGAL NODE TYPE: ",A," '//
257 .
'FOR MNEMONIC ",A)') atyp,atag
259 903
WRITE(bort_str1,
'("BUFRLIB: PARUTG - CONDITION VALUE IN '//
260 .
'MNEMONIC ",A," ILLEGAL BECAUSE ALL OTHER CHARACTERS IN '//
261 .
'MNEMONIC MUST BE NUMERIC")') utg
subroutine bort2(STR1, STR2)
This subroutine calls subroutine errwrt() to log two error messages, then calls subroutine bort_exit(...
subroutine strnum(STR, NUM)
This subroutine decodes an integer from a character string.
This module contains array and variable declarations used to store the internal jump/link table...
subroutine parutg(LUN, IO, UTG, NOD, KON, VAL)
THIS SUBROUTINE PARSES A USER-SPECIFIED TAG (MNEMONIC) (UTG) THAT REPRESENTS A VALUE EITHER BEING DEC...
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...