NCEPLIBS-bufr  11.5.0
 All Data Structures Files Functions Variables Pages
debufr.c File Reference

C language code for debufr utility. More...

#include <ctype.h>
#include <string.h>
#include <stdio.h>
#include <libgen.h>
#include <unistd.h>
#include "bufrlib.h"
#include "cobfl.h"

Go to the source code of this file.

Macros

#define MXFLEN   125
 

Functions

void fdebufr (char *, char *, f77int *, char *, char *, char *, char *, char *, f77int, f77int, f77int, f77int, f77int, f77int, f77int)
 
int main (int argc, char *argv[])
 This program decodes a BUFR file and generates a verbose listing of the contents. More...
 
void prtusage (char *prgnam)
 This function prints program usage information to standard output. More...
 

Detailed Description

C language code for debufr utility.

Definition in file debufr.c.

Function Documentation

int main ( int  argc,
char *  argv[] 
)

This program decodes a BUFR file and generates a verbose listing of the contents.

If a DX BUFR Tables file is specified (using the -f option) or if the specified BUFR file contains an embedded DX BUFR tables message as the first message in the file, then this information is used to decode the data messages in the file. Otherwise, or whenever the -m option is specified, master BUFR tables are read and used to decode the data messages in the file.

Author
J. Ator
Date
2009-07-01

Usage

  debufr [-v] [-h] [-b] [-c] [-m] [-o outfile] [-t tabledir] [-f tablefil] [-p prmstg] bufrfile
    where:
      -v        prints version information and exits
      -h        prints program help and usage information and exits
      -b        specifies the "basic" option, meaning that only the
                information in Sections 0-3 will be decoded from each
                BUFR message in the bufrfile, and no attempt will be
                made to decode the data in Section 4
      -c        specifies that code and flag table meanings should not
                be read from master BUFR tables and included in the
                output; otherwise this feature is enabled by default
      -m        specifies that master BUFR tables will be used to
                decode the data messages in the file, regardless of
                whether it contains any embedded DX BUFR table
                messages.  This option can be used to view the actual
                contents of DX BUFR table messages, which otherwise
                would not be printed in the output listing.
      outfile   [path/]name of file to contain verbose output listing.
                The default is "bufrfilename.debufr.out" in the current
                working directory, where bufrfilename is the basename of
                the bufrfile (i.e. bufrfile with any preceding [path/]
                removed).
      tabledir  [path/]name of directory containing tables to be used
                for decoding.  This directory contains the DX BUFR
                tables file to be used (if one was specified
                via the -f option), or it may contain all of the master
                BUFR tables when these are being used to decode a
                file.  If unspecified, the default directory location is
                the defined value of the MASTER_TABLE_DIR macro when the
                utility was built.
      tablefil  file within tabledir containing DX BUFR tables
                to be used for decoding.
      prmstg    string of comma-separated PARAMETER=VALUE pairs, up to a
                maximum of 20.  For each pair, the dynamic allocation
                PARAMETER will be set to VALUE within the underlying
                BUFRLIB software, overriding the default value that
                would otherwise be used.  A complete list of parameters
                that can be dynamically sized is included within the
                documentation for BUFRLIB function isetprm().
      bufrfile  [path/]name of BUFR file to be decoded
Remarks
  • Fortran logical unit numbers 51, 90, 91, 92 and 93 are reserved for use within this program.

Program history log:

  • 2009-07-01 J. Ator – Original author
  • 2012-06-18 J. Ator – Modified to allow decoding of BUFR files based on NCEP DX dictionary table information. The program can now process any files that previously required the use of ckbufr.
  • 2012-12-07 J. Ator – Modified to add -m and -v options and inline version of OPENBT subroutine for mixed BUFR files
  • 2013-10-07 J. Ator – Print Section 1 tank receipt time information for NCEP/NCO BUFR messages if available
  • 2013-11-15 J. Ator – Add -h option and check for non-existent tablefil
  • 2014-09-15 J. Ator – Change default path for tabledir, change default name for outfile, and confirm outfile is writeable
  • 2018-01-19 J. Ator – Add print of code and flag table meanings.
  • 2018-04-09 J. Ator – Add -c option to turn off print of code and flag table meanings (default is "on").
  • 2018-09-05 J. Ator – Add -p option to pass in one or more BUFRLIB dynamic allocation parameters to override default settings
  • 2019-02-01 J. Ator – Remove limit on length of prmstg, and allow up to 20 PARAMETER=VALUE pairs
  • 2021-03-02 J. Ator – Add missing #include files, remove unused errflg variable, and other general cleanup.

Definition at line 180 of file debufr.c.

References bvers(), ccbfl(), cobfl(), fdebufr(), and prtusage().

void prtusage ( char *  prgnam)

This function prints program usage information to standard output.

Author
J. Ator
Date
2018-03-01
Parameters
[in]prgnam- char*: [path/]name of program executable

Program history log:

  • 2018-03-01 J. Ator – Original author

Definition at line 37 of file debufr.c.

Referenced by main().