#!/usr/bin/perl -w
# Dump all flag tables in table file.
# Flag tables not found is printed to STDERR.
# Author: P.Sannes, met.no 2010-05-12
use strict;
use Geo::BUFR;
my $table_path = '/usr/local/lib/bufrtables';
my $Btable = 'B0000000000000014000.TXT';
my $Ctable = 'C0000000000000014000.TXT';
Geo::BUFR->set_tablepath($table_path);
my $bufr = Geo::BUFR->new();
$bufr->load_BDtables($Btable);
$bufr->load_Ctable($Ctable);
for my $i (1..48000) {
my $desc = sprintf "%06d", $i;
my ($name, $unit) = ($bufr->element_descriptor($desc))[0,1];
next unless defined $unit && $unit =~ /^FLAG TABLE/;
my $dump = $bufr->dump_codetable($desc, $Ctable);
if ($dump) {
print "$desc $name\n";
print $dump;
} elsif ($desc%1000 < 192) {
# Don't care about local tables missing
print STDERR "Flag table $desc is missing in $Ctable\n"
}
}