65 SUBROUTINE ufbmem(LUNIT,INEW,IRET,IUNIT)
72 CHARACTER*128 bort_str,errstr
80 CALL
openbf(lunit,
'IN',lunit)
105 CALL
status(lunit,lun,il,im)
112 IF ((itemp+1).EQ.ndxts) ldxts = ndxts
117 1 CALL
rdmsgw(lunit,mgwa,ier)
118 IF(ier.EQ.-1) goto 100
119 IF(ier.EQ.-2) goto 900
121 IF(
idxmsg(mgwa).EQ.1)
THEN
132 IF(nmsg .GT.maxmsg) iflg = 1
134 IF(lmem+mlast.GT.maxmem) iflg = 2
139 msgs(mlast+i) = mgwa(i)
155 100
IF(iflg.EQ.1)
THEN
161 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
162 WRITE ( unit=errstr, fmt=
'(A,A,I8,A)' )
163 .
'BUFRLIB: UFBMEM - THE NO. OF MESSAGES REQUIRED TO STORE ',
164 .
'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmsg,
165 .
') - INCOMPLETE READ'
167 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
168 .
'>>>UFBMEM STORED ', msgp(0),
' MESSAGES OUT OF ', nmsg,
'<<<'
170 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
171 .
'>>>UFBMEM STORED ', mlast0,
' BYTES OUT OF ', mlast,
'<<<'
173 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
185 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
186 WRITE ( unit=errstr, fmt=
'(A,A,I8,A)' )
187 .
'BUFRLIB: UFBMEM - THE NO. OF BYTES REQUIRED TO STORE ',
188 .
'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmem,
189 .
') - INCOMPLETE READ'
191 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
192 .
'>>>UFBMEM STORED ', mlast0,
' BYTES OUT OF ', mlast,
'<<<'
194 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
195 .
'>>>UFBMEM STORED ', msgp(0),
' MESSAGES OUT OF ', nmsg,
'<<<'
197 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
206 IF(munit.NE.0) CALL
closbf(lunit)
207 IF(munit.EQ.0) munit = lunit
215 900
WRITE(bort_str,
'("BUFRLIB: UFBMEM - ERROR READING MESSAGE '//
216 .
'NUMBER",I5," INTO MEMORY FROM UNIT",I3)') nmsg+1,lunit
function nmwrd(MBAY)
GIVEN AN INTEGER ARRAY CONTAINING SECTION ZERO FROM A BUFR MESSAGE, THIS FUNCTION DETERMINES A COUNT ...
void backbufr(f77int *nfile)
This subroutine backspaces a BUFR file by one BUFR message.
subroutine cpdxmm(LUNIT)
This subroutine reads an entire DX BUFR table from a specified file into internal arrays...
subroutine ufbmem(LUNIT, INEW, IRET, IUNIT)
This subroutine connects a new system file to the BUFRLIB software for input operations, then reads the entire file contents into internal arrays so that any of the individual BUFR messages can later be accessed from memory, instead of having to read them one at a time sequentially from the system file.
subroutine rdmsgw(LUNIT, MESG, IRET)
THIS SUBROUTINE READS THE NEXT BUFR MESSAGE FROM LOGICAL UNIT LUNIT AS AN ARRAY OF INTEGER WORDS...
subroutine closbf(LUNIT)
This subroutine closes the connection between logical unit LUNIT and the BUFRLIB software.
This module contains array and variable declarations used to store the contents of one or more BUFR f...
function idxmsg(MESG)
This function determines whether a given BUFR message contains DX BUFR tables information that was ge...
subroutine status(LUNIT, LUN, IL, IM)
This subroutine checks whether a specified Fortran logical unit number is currently connected to the ...
subroutine openbf(LUNIT, IO, LUNDX)
This subroutine connects a new file to the BUFRLIB software for input or output operations.
void cewind(f77int *nfile)
This subroutine rewinds a BUFR file back to its beginning.
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...