40 CALL status(lunit,lun,il,im)
45 DO WHILE ( .NOT. done )
46 CALL rdmsgw ( lunit, mgwa, ier )
47 IF ( ier .EQ. -1 )
THEN
57 ELSE IF ( ier .EQ. -2 )
THEN
59 ELSE IF (
idxmsg(mgwa) .NE. 1 )
THEN
68 ELSE IF (
iupbs3(mgwa,
'NSUB') .EQ. 0 )
THEN
80 IF ( (
ndxm + ict ) .GT. mxdxm )
GOTO 902
83 IF ( (
ldxm + lmem ) .GT. mxdxw )
GOTO 903
93 IF ( ict .GT. 0 )
THEN
99 IF ( iprt .GE. 2 )
THEN
100 CALL errwrt(
'+++++++++++++++++++++++++++++++++++++++++++++')
101 WRITE ( unit=errstr, fmt=
'(A,I3,A,I3,A)')
102 .
'BUFRLIB: CPDXMM - STORED NEW DX TABLE #',
ndxts,
103 .
' CONSISTING OF ', ict,
' MESSAGES'
105 CALL errwrt(
'+++++++++++++++++++++++++++++++++++++++++++++')
111 900
CALL bort(
'BUFRLIB: CPDXMM - MXDXTS OVERFLOW')
112 901
CALL bort(
'BUFRLIB: CPDXMM - UNEXPECTED READ ERROR')
113 902
CALL bort(
'BUFRLIB: CPDXMM - MXDXM OVERFLOW')
114 903
CALL bort(
'BUFRLIB: CPDXMM - MXDXW OVERFLOW')
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
subroutine cpdxmm(LUNIT)
This subroutine reads an entire DX BUFR table from a specified file into internal arrays.
void backbufr(f77int *nfile)
This subroutine backspaces a BUFR file by one BUFR message.
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
function idxmsg(MESG)
This function determines whether a given BUFR message contains DX BUFR tables information that was ge...
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 the contents of one or more BUFR f...
integer ldxm
Number of array elements filled within mdx (up to a maximum of MXDXW).
integer, dimension(:), allocatable ifdxts
Pointers to the beginning of each DX BUFR table within mdx.
integer, dimension(:), allocatable icdxts
Number of consecutive messages within mdx which constitute each DX BUFR table, beginning with the cor...
integer, dimension(:), allocatable ipdxm
Pointers to the beginning of each message within mdx.
integer ndxm
Number of DX BUFR table messages stored within mdx (up to a maximum of MXDXM).
integer, dimension(:), allocatable mdx
DX BUFR table messages read from one or more BUFR files, for use in decoding the messages in msgs.
integer, dimension(:), allocatable ipmsgs
Pointers to first message within msgs for which each DX BUFR table applies.
integer, dimension(:), allocatable msgp
Pointers to the beginning of each message within msgs (up to a maximum of MAXMSG, and where array ele...
integer ndxts
Number of DX BUFR tables represented by the messages within mdx (up to a maximum of MXDXTS).
This module declares and initializes the MXDXTS variable.
integer mxdxts
Maximum number of dictionary tables that can be stored for use with BUFR messages in internal memory.
function nmwrd(MBAY)
GIVEN AN INTEGER ARRAY CONTAINING SECTION ZERO FROM A BUFR MESSAGE, THIS FUNCTION DETERMINES A COUNT ...
subroutine rdmsgw(LUNIT, MESG, IRET)
THIS SUBROUTINE READS THE NEXT BUFR MESSAGE FROM LOGICAL UNIT LUNIT AS AN ARRAY OF INTEGER WORDS.
subroutine status(LUNIT, LUN, IL, IM)
This subroutine checks whether a specified Fortran logical unit number is currently connected to the ...