47 RECURSIVE SUBROUTINE ufbmem(LUNIT,INEW,IRET,IUNIT)
60 CHARACTER*128 bort_str,errstr
71 CALL x84(lunit,my_lunit,1)
72 CALL x84(inew,my_inew,1)
73 CALL ufbmem(my_lunit,my_inew,iret,iunit)
75 CALL x48(iunit,iunit,1)
84 CALL openbf(lunit,
'IN',lunit)
109 CALL status(lunit,lun,il,im)
122 IF(ier.EQ.-1)
GOTO 100
123 IF(ier.EQ.-2)
GOTO 900
136 IF(nmsg .GT.
maxmsg) iflg = 1
159 100
IF(iflg.EQ.1)
THEN
165 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
166 WRITE ( unit=errstr, fmt=
'(A,A,I8,A)' )
167 .
'BUFRLIB: UFBMEM - THE NO. OF MESSAGES REQUIRED TO STORE ',
168 .
'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (',
maxmsg,
169 .
') - INCOMPLETE READ'
171 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
172 .
'>>>UFBMEM STORED ',
msgp(0),
' MESSAGES OUT OF ', nmsg,
'<<<'
174 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
175 .
'>>>UFBMEM STORED ', mlast0,
' BYTES OUT OF ',
mlast,
'<<<'
177 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
189 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
190 WRITE ( unit=errstr, fmt=
'(A,A,I8,A)' )
191 .
'BUFRLIB: UFBMEM - THE NO. OF BYTES REQUIRED TO STORE ',
192 .
'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (',
maxmem,
193 .
') - INCOMPLETE READ'
195 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
196 .
'>>>UFBMEM STORED ', mlast0,
' BYTES OUT OF ',
mlast,
'<<<'
198 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
199 .
'>>>UFBMEM STORED ',
msgp(0),
' MESSAGES OUT OF ', nmsg,
'<<<'
201 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
219 900
WRITE(bort_str,
'("BUFRLIB: UFBMEM - ERROR READING MESSAGE '//
220 .
'NUMBER",I5," INTO MEMORY FROM UNIT",I3)') nmsg+1,lunit
subroutine bort(STR)
Log one error message and abort application program.
recursive subroutine closbf(LUNIT)
Close the connection between logical unit LUNIT and the NCEPLIBS-bufr software.
subroutine cpdxmm(LUNIT)
This subroutine reads an entire DX BUFR table from a specified file into internal arrays.
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
recursive function idxmsg(MESG)
Check whether a BUFR message contains DX BUFR tables information.
Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
This module contains a declaration for an array used by various subroutines and functions to hold a t...
integer, dimension(:), allocatable mgwa
Temporary working copy of BUFR message.
This module contains array and variable declarations used to store the contents of one or more BUFR f...
integer, dimension(:), allocatable msgp
Pointers to the beginning of each message within msgs (up to a maximum of MAXMSG, and where array ele...
integer, dimension(:), allocatable msgs
BUFR messages read from one or more BUFR files.
integer munit
Fortran logical unit number for use in accessing contents of BUFR files within internal memory.
integer ndxm
Number of DX BUFR table messages stored within mdx (up to a maximum of MXDXM).
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 ldxts
Number of DX BUFR table that is currently in scope, depending on which BUFR message within msgs is cu...
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 IM8B variable.
logical, public im8b
Status indicator to keep track of whether all future calls to BUFRLIB subroutines and functions from ...
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.
recursive function nmwrd(MBAY)
Given an integer array containing Section 0 from a BUFR message, this function determines the array s...
recursive subroutine openbf(LUNIT, IO, LUNDX)
Connects a new file to the NCEPLIBS-bufr software for input or output operations, or initializes the ...
subroutine rdmsgw(lunit, mesg, iret)
Read the next BUFR message from logical unit lunit as an array of integer words.
recursive subroutine status(LUNIT, LUN, IL, IM)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
recursive subroutine ufbmem(LUNIT, INEW, IRET, IUNIT)
This subroutine connects a new file to the NCEPLIBS-bufr software for input operations,...
subroutine x48(IIN4, IOUT8, NVAL)
Encode one or more 4-byte integer values as 8-byte integer values.
subroutine x84(IIN8, IOUT4, NVAL)
Encode one or more 8-byte integer values as 4-byte integer values.