15 #define fdebufr fdebufr_
16 #define prtusage prtusage_
19 void fdebufr(
char *,
char *, f77int *,
char *,
char *,
char *,
char *,
char *,
20 size_t,
size_t,
size_t,
size_t,
size_t,
size_t,
size_t );
40 printf(
"\nUSAGE:\n" );
41 printf(
" %s [-v] [-h] [-b] [-c] [-m] [-o outfile] [-t tabledir] [-f tablefil] [-p prmstg] bufrfile\n\n", prgnam );
42 printf(
"\nWHERE:\n" );
43 printf(
" -v prints program version information and exits\n\n" );
44 printf(
" -h prints program help and usage information and exits\n\n" );
45 printf(
" -b specifies the \"basic\" option, meaning that only the\n" );
46 printf(
" information in Sections 0-3 will be decoded from each\n" );
47 printf(
" BUFR message in the bufrfile, and no attempt will be\n" );
48 printf(
" made to decode the data in Section 4\n\n" );
49 printf(
" -c specifies that code and flag table meanings should not\n" );
50 printf(
" be read from master BUFR tables and included in the output;\n" );
51 printf(
" otherwise this feature is enabled by default\n\n" );
52 printf(
" -m specifies that master BUFR tables will be used to\n" );
53 printf(
" decode the data messages in the file, regardless of\n" );
54 printf(
" whether it contains any embedded DX BUFR table messages.\n" );
55 printf(
" This option can be used to view the actual contents of\n" );
56 printf(
" DX BUFR table messages, which otherwise would not be\n" );
57 printf(
" printed in the output listing.\n\n" );
58 printf(
" outfile [path/]name of file to contain verbose output listing.\n" );
59 printf(
" The default is \"bufrfilename.debufr.out\" in the current\n" );
60 printf(
" working directory, where bufrfilename is the basename of\n" );
61 printf(
" the bufrfile (i.e. bufrfile with any preceding [path/]\n" );
62 printf(
" removed).\n\n" );
63 printf(
" tabledir [path/]name of directory containing tables to be used\n" );
64 printf(
" for decoding. This directory contains the DX BUFR tables\n" );
65 printf(
" file to be used (if one was specified via the -f option),\n" );
66 printf(
" or it may contain all of the master BUFR tables when these\n" );
67 printf(
" are being used to decode a file. If unspecified, the\n" );
68 printf(
" default directory location is\n" );
69 printf(
" \"/gpfs/dell2/emc/obsproc/noscrub/Jeff.Ator/NCEPLIBS-bufr-GitHub/build/install/tables\"\n\n" );
70 printf(
" tablefil file within tabledir containing DX BUFR tables to be used\n" );
71 printf(
" for decoding.\n\n" );
72 printf(
" prmstg string of comma-separated PARAMETER=VALUE pairs, up to a\n" );
73 printf(
" maximum of 20. For each pair, the dynamic allocation\n" );
74 printf(
" PARAMETER will be set to VALUE within the underlying\n" );
75 printf(
" BUFRLIB software, overriding the default value that would\n" );
76 printf(
" otherwise be used. A complete list of parameters that can\n" );
77 printf(
" be dynamically sized is included within the documentation\n" );
78 printf(
" for BUFRLIB function isetprm.\n\n" );
79 printf(
" bufrfile [path/]name of BUFR file to be decoded\n\n" );
172 int main(
int argc,
char *argv[ ] ) {
180 char tbldir[MXFLEN] =
"/gpfs/dell2/emc/obsproc/noscrub/Jeff.Ator/NCEPLIBS-bufr-GitHub/build/install/tables";
181 char outfile[MXFLEN];
184 char tblfil[(MXFLEN*2)+5];
185 char prmstg[300] =
"NULLPSTG";
197 while ( ( ch = getopt ( argc, argv,
"vhbcmo:t:f:p:" ) ) != EOF ) {
200 bvers ( bvstr,
sizeof(bvstr) );
202 for ( ii = 0; ii <
sizeof(bvstr); ii++ ) {
203 if ( ( bvstr[ii] !=
'.' ) && ( !isdigit(bvstr[ii]) ) ) {
208 printf(
"This is debufr v3.1.0, built with BUFRLIB v%s\n",
212 printf(
"\nPROGRAM %s\n", argv[0] );
213 printf(
"\nABSTRACT: This program decodes a BUFR file and generates a verbose\n" );
214 printf(
" listing of the contents. If a DX BUFR tables file is specified\n" );
215 printf(
" (using the -f option) or if the specified BUFR file contains an\n" );
216 printf(
" embedded DX BUFR tables message as the first message in the file,\n" );
217 printf(
" then this DX BUFR tables information is used to decode the data\n" );
218 printf(
" messages in the file. Otherwise, or whenever the -m option is\n" );
219 printf(
" specified, master BUFR tables are read and used to decode the\n" );
220 printf(
" data messages in the file.\n" );
234 strcpy ( outfile, optarg );
237 strcpy ( tbldir, optarg );
240 strcpy ( wkstr, optarg );
243 strcpy ( prmstg, optarg );
252 if ( (optind+1) != argc ) {
253 printf(
"\nERROR: You must specify an input BUFR file to be decoded!\n" );
261 cobfl( argv[optind], &io );
266 if ( strlen( wkstr ) > 0 ) {
267 sprintf( tblfil,
"%s%c%s", tbldir,
'/', wkstr );
270 strcpy( tblfil,
"NULLFILE" );
278 if ( strlen( outfile ) == 0 ) {
279 strcpy( wkstr2, argv[optind] );
280 strcpy( outfile, basename( wkstr2 ) );
281 strcat( outfile,
".debufr.out" );
287 strcpy( wkstr2, outfile );
288 strcpy( wkstr, dirname( wkstr2 ) );
289 if ( access( wkstr, W_OK ) != 0 ) {
290 printf(
"\nERROR: Cannot write output file to directory %s\n",
291 ( strcmp( wkstr,
"." ) == 0 ? getcwd( wkstr2, MXFLEN ) : wkstr ) );
299 lentd = (f77int) strlen(tbldir);
300 fdebufr( outfile, tbldir, &lentd, tblfil, prmstg, &basic, &forcemt, &cfms,
301 strlen(outfile), strlen(tbldir), strlen(tblfil), strlen(prmstg), 1, 1, 1 );
Define signatures to enable a number of BUFRLIB subprograms to be called directly from C application ...
void ccbfl(void)
This subroutine closes all system files that were opened via previous calls to subroutine cobfl()...
subroutine fdebufr(ofile, tbldir, lentd, tblfil, prmstg, basic, forcemt, cfms)
This subroutine reads, decodes, and generates a verbose output listing of the contents of every BUFR ...
subroutine bvers(CVERSTR)
This subroutine returns a character string containing the version number of the BUFRLIB software...
Define signatures and declare variables for reading or writing BUFR messages via a C language interfa...
void prtusage(char *)
This function prints program usage information to standard output.
void cobfl(char *bfl, char *io)
This subroutine opens a new file for reading or writing BUFR messages via a C language interface...
int main(int argc, char *argv[])
This program splits a single file containing one or more BUFR messages into one or more BUFR files ea...