Listing 3

/*
** datetest.c -- test program for DateObjects
*/

#include  <stdio.h>
#include  <stream.hpp>
#include  "dates.hpp"

void main(void)
{
DateObject d1(1, 1, -4700, "d mmmm yyyy");
DateObject d2(31, 12, 25000, "d mmmm yyyy");
DateObject d3(23, 5, 1968, "d mmm yyy");
DateObject d4;          /* initialize to todays date */
DateObject d5;
long Diff;

   cout << "DateObjects can span dates from " << d1.DateToString() << "\n";
   cout << "to" << d2.DateToString() << ", or ";
   cout << (Diff = (d2 - d1)) <<" days.\n\n";

   cout << "A good reference date is" << d3.DateToString() << "\n";
   cout << "which should have a Julian date of 2440000.\n";
   cout << "If we call GetJulian() to make sure, we find\n";
   cout<< "that it does";

   if (d3.GetJulian() != 2440000L)
      cout <<" not";
   cout << ", in fact, equal 2440000.\n\n";

   cout << "Attempting to add" << Diff <<" days to" <<
      d3.DateToString() << "\n";
   cout << "yields a" << (d3 + Diff).DateToString() << ".\n";

   cout << "Attempting to subtract " << Diff <<" days from" <<
      d3.DateToString() << "\n";
   cout << "yields a" << (d3 - Diff).DateToString() << ".\n";

   cout << "However, adding" << Diff <<" days to" <<
      d1.DateToString()<< "\n";
   cout << "yields" << (d1 + Diff).DateToString() << ".\n\n";

   cout << "Today is "<< d4.DateToString() << ".\n";
   d4.ChangeFormat("dddd");
   cout << "The next five days are:\n";
   for (++d4 ; d4 <= d5 + 5; d4++)
      cout << d4.DateToString() << "\n";
   cout << "\n";
}