#!/usr/bin/perl -w

#  Program to get EOM reservoir stage from BOR web site
#
#  Willem A. Schreuder
#  August 17, 2004

use strict;

# List of reservoirs:
# Bonny, Enders, HughButler, HarlanCounty, HarryStrunk, KSebelius, Swanson/Trenton
my @res = ('BONC','EDNE','HBNE','HCNE','HSNE','KSKS','TRNE');

#  Month strings
my %mon  = (1=>'JAN',2=>'FEB',3=>'MAR',4=>'APR',5=>'MAY',6=>'JUN',7=>'JUL',8=>'AUG',9=>'SEP',10=>'OCT',11=>'NOV',12=>'DEC');
my @ndm   = (undef,31,28,31,30,31,30,31,31,30,31,30,31);

(@ARGV>0) || die "Usage: $0 <years>\n";

#  Loop over requested calendar years
foreach my $yr (@ARGV)
{
   #  Loop over calendar months
   foreach my $mo (1 .. 12)
   {
      my $last = ($yr%4==0 && $mo==2) ? 29 : $ndm[$mo];
      printf '%4d%.2d' , $yr , $mo;
      #  Water year
      my $wyr = ($mo>9) ? $yr+1 : $yr;
      foreach my $res (@res)
      {
         #  Get month of data - the last value will be EOM
         open(GET,"wget -O- -q \"https://www.usbr.gov/gp-bin/arc040.pl?station=$res&year=$wyr&month=$mon{$mo}&parameters=FB\" |") || die "Cannot wget $res $mo/$yr\n";
         my ($dy,$fb) = (0,0);
         while (my $line = <GET>)
         {
            #  Check for valid data (skip headers and other crud)
            ($line =~ /^\s*(\d+)\s+(\d+\.\d+)\s*$/) || next;
            ($dy,$fb) = ($1,$2);
         }
         ($dy != $last) && warn "$res: $mo/$dy/$yr used as EOM\n";
         printf '%8.2f' , $fb;
      }
      print "\n";
   }
}
