25 CHARACTER*128 BORT_STR1
26 CHARACTER*156 BORT_STR2
44 1
READ(lundx,
'(A80)',
END=200,ERR=200) card
50 IF(card(1: 1).EQ.
'*')
GOTO 1
52 IF(card(3:10).EQ.
'--------')
GOTO 1
54 IF(card(3:10).EQ.
' ')
GOTO 1
56 IF(card(3:10).EQ.
'MNEMONIC')
GOTO 1
58 IF(card(3:10).EQ.
'TABLE D')
GOTO 1
60 IF(card(3:10).EQ.
'TABLE B')
GOTO 1
65 IF(card(12:12).EQ.
'|' .AND. card(21:21).EQ.
'|')
THEN
70 IF(iret.EQ.-2)
GOTO 901
75 IF(nmb2(1:1).EQ.
'A') nmb2(1:1) =
'3'
77 IF(iret.EQ.-1)
GOTO 902
78 IF(iret.EQ.-2)
GOTO 903
79 IF(iret.EQ.-3)
GOTO 904
80 IF(iret.EQ.-4)
GOTO 905
85 IF(numb(1:1).EQ.
'A')
THEN
87 CALL stntbia ( n, lun, numb, nemo, card(23:) )
88 IF ( idna(n,lun,1) .EQ. 11 )
GOTO 906
97 IF(numb(1:1).EQ.
'0')
THEN
105 IF(numb(1:1).EQ.
'3')
THEN
118 IF(card(12:12).EQ.
'|' .AND. card(19:19).NE.
'|')
THEN
126 IF(card(12:12).EQ.
'|' .AND. card(19:19).EQ.
'|')
THEN
145 901
WRITE(bort_str1,
'("BUFRLIB: RDUSDX - CARD READ IN IS: ",A)') card
146 WRITE(bort_str2,
'(18X,"MNEMONIC ",A," IN USER DICTIONARY HAS '//
147 .
'INVALID CHARACTERS")') nemo
148 CALL bort2(bort_str1,bort_str2)
149 902
WRITE(bort_str1,
'("BUFRLIB: RDUSDX - CARD READ IN IS: ",A)') card
150 WRITE(bort_str2,
'(18X,"DESCRIPTOR NUMBER ",A," IN USER '//
151 .
'DICTIONARY HAS AN INVALID FIRST CHARACTER (F VALUE) - MUST BE'//
152 .
' A, 0 OR 3")') numb
153 CALL bort2(bort_str1,bort_str2)
154 903
WRITE(bort_str1,
'("BUFRLIB: RDUSDX - CARD READ IN IS: ",A)') card
155 WRITE(bort_str2,
'(18X,"DESCRIPTOR NUMBER ",A," IN USER '//
156 .
'DICTIONARY HAS NON-NUMERIC VALUES IN CHARACTERS 2-6 (X AND Y '//
158 CALL bort2(bort_str1,bort_str2)
159 904
WRITE(bort_str1,
'("BUFRLIB: RDUSDX - CARD READ IN IS: ",A)') card
160 WRITE(bort_str2,
'(18X,"DESCRIPTOR NUMBER ",A," IN USER '//
161 .
'DICTIONARY HAS INVALID NUMBER IN CHARACTERS 2-3 (X VALUE) - '//
162 .
'MUST BE BETWEEN 00 AND 63")') numb
163 CALL bort2(bort_str1,bort_str2)
164 905
WRITE(bort_str1,
'("BUFRLIB: RDUSDX - CARD READ IN IS: ",A)') card
165 WRITE(bort_str2,
'(18X,"DESCRIPTOR NUMBER ",A," IN USER '//
166 .
'DICTIONARY HAS INVALID NUMBER IN CHARACTERS 4-6 (Y VALUE) - '//
167 .
'MUST BE BETWEEN 000 AND 255")') numb
168 CALL bort2(bort_str1,bort_str2)
169 906
WRITE(bort_str1,
'("BUFRLIB: RDUSDX - CARD READ IN IS: ",A)') card
170 WRITE(bort_str2,
'(18X,"USER-DEFINED MESSAGE TYPE ""011"" IS '//
171 .
'RESERVED FOR DICTIONARY MESSAGES")')
172 CALL bort2(bort_str1,bort_str2)
173 907
WRITE(bort_str1,
'("BUFRLIB: RDUSDX - CARD READ IN IS: ",A)') card
174 WRITE(bort_str2,
'(18X,"THIS CARD HAS A BAD FORMAT - IT IS NOT '//
175 .
'RECOGNIZED BY THIS SUBROUTINE")')
176 CALL bort2(bort_str1,bort_str2)
subroutine bort2(STR1, STR2)
Log two error messages and abort application program.
subroutine dxinit(LUN, IOI)
This subroutine initializes the internal arrays (in module moda_tababd) holding the DX BUFR table.
subroutine elemdx(CARD, LUN)
This subroutine decodes the scale factor, reference value, bit width and units (i....
function igetntbi(LUN, CTB)
This function returns the next available index for storing an entry within a specified internal DX BU...
subroutine makestab
This subroutine constructs the internal jump/link table within module tables, using all of the intern...
This module contains array and variable declarations used to store DX BUFR tables internally for mult...
function nemock(NEMO)
This function checks a mnemonic to verify that it has a length of between 1 and 8 characters and that...
function numbck(NUMB)
This function checks the input character string to determine whether it contains a valid FXY (descrip...
subroutine rdusdx(LUNDX, LUN)
Read a complete DX BUFR table.
subroutine seqsdx(CARD, LUN)
Decode the sequence information from a Table D mnemonic definition.
subroutine stntbi(N, LUN, NUMB, NEMO, CELSQ)
Store a new entry within the internal BUFR Table B or D.
subroutine stntbia(N, LUN, NUMB, NEMO, CELSQ)
This subroutine stores a new entry within internal BUFR Table A.