NCEPLIBS-bufr  11.5.0
 All Data Structures Files Functions Variables Pages
openmb.f File Reference

Open a new message for output in a BUFR file that was previously opened for writing. More...

Go to the source code of this file.

Functions/Subroutines

subroutine openmb (LUNIT, SUBSET, JDATE)
 This subroutine opens and initializes a new BUFR message within internal arrays, for eventual output to logical unit LUNIT. More...
 

Detailed Description

Open a new message for output in a BUFR file that was previously opened for writing.

Definition in file openmb.f.

Function/Subroutine Documentation

subroutine openmb (   LUNIT,
character*(*)  SUBSET,
  JDATE 
)

This subroutine opens and initializes a new BUFR message within internal arrays, for eventual output to logical unit LUNIT.

Author
J. Woollen
Date
1994-01-06
Parameters
[in]LUNIT- integer: Fortran logical unit number for BUFR file
[in]SUBSET- character*(*): Table A mnemonic for type of BUFR message to be opened (see DX BUFR Tables for further information about Table A mnemonics)
[in]JDATE- integer: Date-time to be stored within Section 1 of BUFR message being opened, in format of either YYMMDDHH or YYYYMMDDHH

Logical unit LUNIT should have already been opened for output operations via a previous call to subroutine openbf().

This subroutine is similar to subroutine openmg(), except that it will only open a new message if either SUBSET or JDATE has changed since the previous call to this subroutine. Otherwise, it will leave the existing internal message unchanged so that the next data subset can be written into the same internal message, thereby improving overall storage efficiency by allowing the maximum number of data subsets to be stored within each output BUFR message. For this reason, openmb() is much more widely used than openmg().

If this subroutine does need to open and initialize a new BUFR message for output (e.g. if the value of SUBSET or JDATE has changed since the previous call to this subroutine), then any existing message within the internal arrays will be automatically flushed and written to logical unit LUNIT via an internal call to subroutine closmg(). In this case, the behavior of this subroutine then becomes exactly like that of subroutine openmg().

Program history log:

  • 1994-01-06 J. Woollen – Original author
  • 1998-07-08 J. Woollen – Replaced call to Cray library routine "ABORT" with call to new internal BUFRLIB routine "BORT"; modified to make Y2K compliant
  • 1999-11-18 J. Woollen – The number of BUFR files which can be opened at one time increased from 10 to 32 (necessary in order to process multiple BUFR files under the MPI)
  • 2003-11-04 J. Ator – Added documentation
  • 2003-11-04 S. Bender – Added remarks and routine interdependencies
  • 2003-11-04 D. Keyser – Unified/portable for WRF; added history documentation; outputs more complete diagnostic info when routine terminates abnormally
  • 2014-12-10 J. Ator – Use modules instead of COMMON blocks

Definition at line 59 of file openmb.f.

References bort(), closmg(), i4dy(), msgini(), nemtba(), status(), usrtpl(), and wtstat().