76 SUBROUTINE ufbmem(LUNIT,INEW,IRET,IUNIT)
83 CHARACTER*128 bort_str,errstr
91 CALL
openbf(lunit,
'IN',lunit)
116 CALL
status(lunit,lun,il,im)
123 IF ((itemp+1).EQ.ndxts) ldxts = ndxts
128 1 CALL
rdmsgw(lunit,mgwa,ier)
129 IF(ier.EQ.-1) goto 100
130 IF(ier.EQ.-2) goto 900
132 IF(
idxmsg(mgwa).EQ.1)
THEN
143 IF(nmsg .GT.maxmsg) iflg = 1
145 IF(lmem+mlast.GT.maxmem) iflg = 2
150 msgs(mlast+i) = mgwa(i)
166 100
IF(iflg.EQ.1)
THEN
172 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
173 WRITE ( unit=errstr, fmt=
'(A,A,I8,A)' )
174 .
'BUFRLIB: UFBMEM - THE NO. OF MESSAGES REQUIRED TO STORE ',
175 .
'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmsg,
176 .
') - INCOMPLETE READ'
178 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
179 .
'>>>UFBMEM STORED ', msgp(0),
' MESSAGES OUT OF ', nmsg,
'<<<'
181 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
182 .
'>>>UFBMEM STORED ', mlast0,
' BYTES OUT OF ', mlast,
'<<<'
184 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
196 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
197 WRITE ( unit=errstr, fmt=
'(A,A,I8,A)' )
198 .
'BUFRLIB: UFBMEM - THE NO. OF BYTES REQUIRED TO STORE ',
199 .
'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmem,
200 .
') - INCOMPLETE READ'
202 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
203 .
'>>>UFBMEM STORED ', mlast0,
' BYTES OUT OF ', mlast,
'<<<'
205 WRITE ( unit=errstr, fmt=
'(A,I8,A,I8,A)' )
206 .
'>>>UFBMEM STORED ', msgp(0),
' MESSAGES OUT OF ', nmsg,
'<<<'
208 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
217 IF(munit.NE.0) CALL
closbf(lunit)
218 IF(munit.EQ.0) munit = lunit
226 900
WRITE(bort_str,
'("BUFRLIB: UFBMEM - ERROR READING MESSAGE '//
227 .
'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 closbf(LUNIT)
This subroutine closes the connection between logical unit LUNIT and the BUFRLIB software.
subroutine cpdxmm(LUNIT)
This subroutine reads an entire DX BUFR table from a specified file into internal arrays...
subroutine openbf(LUNIT, IO, LUNDX)
This subroutine connects a new file to the BUFRLIB software for input or output operations.
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...
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 THE GIVEN BUFR MESSAGE IS A DX DICTIONARY MESSAGE THAT WAS CREATED B...
subroutine status(LUNIT, LUN, IL, IM)
This subroutine checks whether a specified Fortran logical unit number is currently connected to the ...
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() ...