#!/usr/pkg/bin/perl
use strict;
# $Id: cbr-to-zone,v 1.1.1.1 2011/02/15 05:33:51 makoto Exp $
# input cbr format from standard input
# and display  zone x freq matrix

my %FREQ;
my %CHECK;
my @ZONE = qw(01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
              21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40); 

while (<>) {
    if (/^QSO:/ ) {
	my ($qso, $freq, $mode, $date, $gmt, $op, $rst, $tw, $call, $recv, $zone)
	    = split;
	$freq = int($freq/1000);
	if ($freq == 1 ) { $freq = 1.8;}
	if ($freq == 3 ) { $freq = 3.5;}
	$FREQ{$freq}++;
	$CHECK{$freq,$zone}++; } }

printf "%2s ", ' ';
foreach my $high ( 0 .. 3) { printf "%d                   ", $high;}
print "4\n";

printf "%4s ", ' ';
foreach my $high ( 0 .. 3)  {
    foreach my $low ( 1 .. 9, 0) { printf "%d ", $low;}
}
print "\n";
my $zone_total;
foreach my  $freq ( sort { $a <=> $b } keys %FREQ) {
    my $band_total = 0;
    printf "%4s ", $freq;
    foreach my $zone ( @ZONE) {
	if ($CHECK{$freq,$zone})  { printf("%s ", 'x'); $band_total++;}
	else                      { printf("%s ", ' ');}
    }
    printf " %2d\n", $band_total;
    $zone_total += $band_total;
}
printf "%88d\n", $zone_total;
