WITH Ada.Calendar;
PACKAGE BODY DayWeek IS
--------------------------------------------------------------------
--| Finds the day of the week on which a given date falls.
--| Created by Jason Guthrie 4/18/92
--| modified by Michael Feldman 4/28/92 and 9/30/96
--------------------------------------------------------------------
FUNCTION DayOfWeek (Month: Ada.Calendar.Month_Number;
Day : Ada.Calendar.Day_Number;
Year : Ada.Calendar.Year_Number) RETURN DaysOfWeek IS
Month_Code: DaysOfWeek;
Answer : DaysOfWeek;
Century : DaysOfWeek;
BEGIN -- DayOfWeek
CASE Month IS
WHEN 1 => IF Year REM 4 = 0 THEN
Month_Code := 5;
ELSE
Month_Code := 6;
END IF;
WHEN 2 => IF Year REM 4 = 0 THEN
Month_Code := 1;
ELSE
Month_Code := 2;
END IF;
WHEN 3 => Month_Code := 2;
WHEN 4 => Month_Code := 5;
WHEN 5 => Month_Code := 0;
WHEN 6 => Month_Code := 3;
WHEN 7 => Month_Code := 5;
WHEN 8 => Month_Code := 1;
WHEN 9 => Month_Code := 4;
WHEN 10 => Month_Code := 6;
WHEN 11 => Month_Code := 2;
WHEN 12 => Month_Code := 4;
END CASE;
IF Year/100 = 19 THEN
Century := 0;
ELSE
Century := 6;
END IF;
Answer := (((Year REM 100) + ((Year REM 100) / 4)
+ Day + Month_Code + Century)
REM 7);
RETURN Answer;
END DayOfWeek;
END DayWeek;