26 SUBROUTINE cktaba(LUN,SUBSET,JDATE,IRET)
33 COMMON /padesc/ ibct,ipd1,ipd2,ipd3,ipd4
36 CHARACTER*128 BORT_STR,ERRSTR
42 DATA cpfx /
'NC',
'FR',
'FN' /
64 IF(
isc3(lun).EQ.0)
THEN
73 CALL getlens(
mbay(1,lun),3,len0,len1,len2,len3,l4,l5)
93 IF(
isc3(lun).NE.0)
THEN
96 CALL nemtbax(lun,subset,mty1,msb1,inod)
99 mbyt(lun) = 8*(iad4+4)
109 5
CALL numtab(lun,isub,subset,tab,itab)
111 CALL nemtbax(lun,subset,mty1,msb1,inod)
123 CALL numtab(lun,ksub,subset,tab,itab)
125 CALL nemtbax(lun,subset,mty1,msb1,inod)
128 mbyt(lun) = 8*(iad4+4)
139 DO WHILE(ii.LE.ncpfx)
140 WRITE(subset,
'(A2,2I3.3)') cpfx(ii),mtyp,msbt
142 CALL nemtbax(lun,subset,mty1,msb1,inod)
145 IF(ksub.EQ.ibct)
THEN
149 mbyt(lun) = 8*(iad4+4)
167 CALL errwrt(
'++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
168 errstr =
'BUFRLIB: CKTABA - LAST RESORT, CHECK FOR EXTERNAL'//
169 .
' BUFR TABLE VIA CALL TO IN-LINE OPENBT'
171 CALL errwrt(
'++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
187 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
188 errstr =
'BUFRLIB: CKTABA - UNRECOGNIZED TABLE A MESSAGE TYPE ('//
189 . subset //
') - RETURN WITH IRET = -1'
191 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
200 10
IF(
isc3(lun).EQ.0)
THEN
201 IF(mtyp.NE.mty1)
GOTO 900
202 IF(msbt.NE.msb1.AND.digit(subset(3:8)))
GOTO 901
227 900
WRITE(bort_str,
'("BUFRLIB: CKTABA - MESSAGE TYPE MISMATCH '//
228 .
'(SUBSET=",A8,", MTYP=",I3,", MTY1=",I3)') subset,mtyp,mty1
230 901
WRITE(bort_str,
'("BUFRLIB: CKTABA - MESSAGE SUBTYPE MISMATCH '//
231 .
'(SUBSET=",A8,", MSBT=",I3,", MSB1=",I3)') subset,msbt,msb1
subroutine bort(STR)
Log one error message and abort application program.
subroutine cktaba(LUN, SUBSET, JDATE, IRET)
This subroutine parses the Table A mnemonic and date out of Section 1 of a BUFR message that was prev...
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
recursive subroutine getlens(MBAY, LL, LEN0, LEN1, LEN2, LEN3, LEN4, LEN5)
This subroutine reads the lengths of all of the individual sections of a given BUFR message,...
recursive function i4dy(IDATE)
This function converts a date-time with a 2-digit year (YYMMDDHH) to a date-time with a 4-digit year ...
recursive function igetdate(MBAY, IYR, IMO, IDY, IHR)
This function returns the date-time from within Section 1 of a BUFR message.
recursive function iupb(MBAY, NBYT, NBIT)
Decode an integer value from an integer array.
recursive function iupbs01(MBAY, S01MNEM)
Read a data value from Section 0 or Section 1 of a BUFR message.
recursive function iupbs3(MBAY, S3MNEM)
This function returns a specified value from within Section 3 of a BUFR message.
This module contains array and variable declarations used to store BUFR messages internally for multi...
integer, dimension(:,:), allocatable mbay
Current BUFR message for each internal I/O stream.
integer, dimension(:), allocatable mbyt
Length (in bytes) of current BUFR message for each internal I/O stream.
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.
integer, dimension(:), allocatable idate
Section 1 date-time of message.
integer, dimension(:), allocatable nmsg
Current message pointer within logical unit.
integer, dimension(:), allocatable msub
Total number of data subsets in message.
integer, dimension(:), allocatable nsub
Current subset pointer within message.
This module contains an array declaration used to store a switch for each internal I/O stream index,...
character *8, dimension(:), allocatable tamnem
Table A mnemonic most recently read from each internal I/O stream index, if isc3 = 1 for that stream.
integer, dimension(:), allocatable isc3
Section 3 switch for each internal I/O stream index:
This module contains an array declaration used to store, for each I/O stream index from which a BUFR ...
integer, dimension(:), allocatable msgunp
Flag indicating how to unpack data subsets from BUFR message:
subroutine nemtbax(LUN, NEMO, MTYP, MSBT, INOD)
This subroutine searches for a descriptor within Table A of the internal DX BUFR tables.
subroutine numtab(LUN, IDN, NEMO, TAB, IRET)
Get information about a descriptor, based on the WMO bit-wise representation of an FXY value.
recursive subroutine openbt(LUNDX, MTYP)
This subroutine is called as a last resort from within subroutine cktaba(), in the event the latter s...
subroutine rdusdx(LUNDX, LUN)
Read a complete DX BUFR table.