WITH Dates; USE Dates;
WITH Ada.Text_IO;
WITH Ada.Integer_Text_IO;
PROCEDURE Test_Dates IS
------------------------------------------------------------------
--|
--| Simple test of Dates package
--|
--| Author: Michael B. Feldman, The George Washington University
--| Last Modified: October 1995
--|
------------------------------------------------------------------
TYPE Days IS (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
PACKAGE Days_IO IS NEW Ada.Text_IO.Enumeration_IO(Enum => Days);
ThatDay, ThisDay: Date;
PROCEDURE PutDate(Item: IN Date) IS
BEGIN
-- DayOfWeek returns 1..7, but positions are 0..6.
Days_IO.Put(Item => Days'Val(DayOfWeek(Item) - 1), Width => 4);
Ada.Integer_Text_IO.Put(Item => Month(Item), Width => 1);
Ada.Text_IO.Put('/');
Ada.Integer_Text_IO.Put(Item => DayOfMonth(Item), Width => 1);
Ada.Text_IO.Put('/');
Ada.Integer_Text_IO.Put(Item => Year(Item) REM 100, Width => 1);
END PutDate;
BEGIN -- Test_Dates
-- First, is today's date OK?
ThisDay := Today;
PutDate(Item => ThisDay);
Ada.Text_IO.New_Line(Spacing => 2);
-- Now make a table of dates for the current year.
Ada.Text_IO.Put("Today Yesterday 31 days from today");
Ada.Text_IO.New_Line(Spacing => 2);
FOR WhichMonth IN MonthNumber LOOP
ThisDay := MakeDate(Year => Year(ThisDay), Month => WhichMonth, Day => 1);
ThatDay := ThisDay - 1;
PutDate(Item => ThisDay);
Ada.Text_IO.Put(Item => " ");
PutDate(Item => ThatDay);
Ada.Text_IO.Put(Item => " ");
PutDate(Item => ThisDay + 31);
Ada.Text_IO.New_Line;
END LOOP;
-- Now make a table of dates for a leap year.
Ada.Text_IO.New_Line;
Ada.Text_IO.Put("Today Yesterday 31 days from today");
Ada.Text_IO.New_Line(Spacing => 2);
FOR WhichMonth IN MonthNumber LOOP
ThisDay := MakeDate(Year => 1992, Month => WhichMonth, Day => 1);
ThatDay := ThisDay - 1;
PutDate(Item => ThisDay);
Ada.Text_IO.Put(Item => " ");
PutDate(Item => ThatDay);
Ada.Text_IO.Put(Item => " ");
PutDate(Item => ThisDay + 31);
Ada.Text_IO.New_Line;
END LOOP;
END Test_Dates;