50 SUBROUTINE ufbmex(LUNIT,LUNDX,INEW,IRET,MESG)
60 CHARACTER*128 BORT_STR,ERRSTR
70 CALL openbf(lunit,
'IN',lundx)
971
CALL rdmsgw(lunit,mgwa,ier)
98 IF(ier.EQ.-1)
GOTO 100
99 IF(ier.EQ.-2)
GOTO 900
102 mesg(nmsg) =
iupbs01(mgwa,
'MTYP')
103 IF(nmsg .GT.
maxmsg) iflg = 1
126100
IF(iflg.EQ.1)
THEN
132 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
133 WRITE ( unit=errstr, fmt=
'(A,A,I8,A)' )
134 .
'BUFRLIB: UFBMEX - THE NO. OF MESSAGES REQUIRED TO STORE ',
135 .
'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (',
maxmsg,
136 .
') - INCOMPLETE READ'
138 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
139 .
'>>>UFBMEX STORED ',
msgp(0),
' MESSAGES OUT OF ', nmsg,
'<<<'
141 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
142 .
'>>>UFBMEX STORED ', mlast0,
' BYTES OUT OF ',
mlast,
'<<<'
144 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
156 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
157 WRITE ( unit=errstr, fmt=
'(A,A,I8,A)' )
158 .
'BUFRLIB: UFBMEX - THE NO. OF BYTES REQUIRED TO STORE ',
159 .
'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (',
maxmem,
160 .
') - INCOMPLETE READ'
162 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
163 .
'>>>UFBMEX STORED ', mlast0,
' BYTES OUT OF ',
mlast,
'<<<'
165 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
166 .
'>>>UFBMEX STORED ',
msgp(0),
' MESSAGES OUT OF ', nmsg,
'<<<'
168 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
185900
WRITE(bort_str,
'("BUFRLIB: UFBMEX - ERROR READING MESSAGE '//
186 .
'NUMBER",I5," INTO MEMORY FROM UNIT",I3)') nmsg+1,lunit
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
subroutine closbf(LUNIT)
This subroutine closes the connection between logical unit LUNIT and the BUFRLIB software.
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
function iupbs01(MBAY, S01MNEM)
This function returns a specified value from within Section 0 or Section 1 of a BUFR message.
This module contains array and variable declarations used to store the contents of one or more BUFR f...
integer, dimension(:), allocatable msgs
BUFR messages read from one or more BUFR files.
integer ldxm
Number of array elements filled within mdx (up to a maximum of MXDXW).
integer mlast
Number of array elements filled within msgs (up to a maximum of MAXMEM).
integer ndxm
Number of DX BUFR table messages stored within mdx (up to a maximum of MXDXM).
integer munit
Fortran logical unit number for use in accessing contents of BUFR files within internal memory.
integer ldxts
Number of DX BUFR table that is currently in scope, depending on which BUFR message within msgs is cu...
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 MAXMEM variable.
integer maxmem
Maximum number of bytes that can be used to store BUFR messages within internal memory.
This module declares and initializes the MAXMSG variable.
integer maxmsg
Maximum number of BUFR messages that can be stored within internal memory.
function nmwrd(MBAY)
GIVEN AN INTEGER ARRAY CONTAINING SECTION ZERO FROM A BUFR MESSAGE, THIS FUNCTION DETERMINES A COUNT ...
subroutine openbf(LUNIT, IO, LUNDX)
This subroutine connects a new file to the BUFRLIB software for input or output operations.
subroutine rdmsgw(LUNIT, MESG, IRET)
THIS SUBROUTINE READS THE NEXT BUFR MESSAGE FROM LOGICAL UNIT LUNIT AS AN ARRAY OF INTEGER WORDS.
subroutine ufbmex(LUNIT, LUNDX, INEW, IRET, MESG)
This subroutine connects a new system file to the BUFRLIB software for input operations,...