NCEPLIBS-bufr  11.6.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:

Date Programmer Comments
1994-01-06 J. Woollen Original author
1998-07-08 J. Woollen Replaced call to Cray library routine "ABORT" with call to new internal 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
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 documentation; outputs more complete diagnostic info when routine terminates abnormally
2014-12-10 J. Ator Use modules instead of COMMON blocks

Definition at line 52 of file openmb.f.

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