DEFINITION Date;

TYPE
  Weekdays = SHORTINT;

CONST
  dayerr = 0;
  monday = 1;
  tuesday = 2;
  wednesday = 3;
  thursday = 4;
  freiday = 5;
  saturday = 6;
  sunday = 7;

PROCEDURE JulianLeapYear(year: INTEGER): BOOLEAN;
PROCEDURE GregorianLeapYear(year: INTEGER): BOOLEAN;
PROCEDURE HeisLeapYear(year: INTEGER): BOOLEAN;
PROCEDURE JulianMonthDays(month: SHORTINT; year: INTEGER): SHORTINT;
PROCEDURE GregorianMonthDays(month: SHORTINT; year: INTEGER): SHORTINT;
PROCEDURE HeisMonthDays(month: SHORTINT; year: INTEGER): SHORTINT;
PROCEDURE JulianYearDays(year: INTEGER): INTEGER;
PROCEDURE GregorianYearDays(year: INTEGER): INTEGER;
PROCEDURE HeisYearDays(year: INTEGER): INTEGER;
PROCEDURE JulianDaySmaller(day1, month1: SHORTINT; year1: INTEGER; day2, month2: SHORTINT; year2: INTEGER): BOOLEAN;
PROCEDURE GregorianDaySmaller(day1, month1: SHORTINT; year1: INTEGER; day2, month2: SHORTINT; year2: INTEGER): BOOLEAN;
PROCEDURE HeisDaySmaller(day1, month1: SHORTINT; year1: INTEGER; day2, month2: SHORTINT; year2: INTEGER): BOOLEAN;
PROCEDURE JulianDayGreater(day1, month1: SHORTINT; year1: INTEGER; day2, month2: SHORTINT; year2: INTEGER): BOOLEAN;
PROCEDURE GregorianDayGreater(day1, month1: SHORTINT; year1: INTEGER; day2, month2: SHORTINT; year2: INTEGER): BOOLEAN;
PROCEDURE HeisDayGreater(day1, month1: SHORTINT; year1: INTEGER; day2, month2: SHORTINT; year2: INTEGER): BOOLEAN;
PROCEDURE JulianDayDiff(day1, month1: SHORTINT; year1: INTEGER; day2, month2: SHORTINT; year2: INTEGER): LONGINT;
PROCEDURE GregorianDayDiff(day1, month1: SHORTINT; year1: INTEGER; day2, month2: SHORTINT; year2: INTEGER): LONGINT;
PROCEDURE HeisDayDiff(day1, month1: SHORTINT; year1: INTEGER; day2, month2: SHORTINT; year2: INTEGER): LONGINT;
PROCEDURE JulianWeekday(day, month: SHORTINT; year: INTEGER): Weekdays;
PROCEDURE GregorianWeekday(day, month: SHORTINT; year: INTEGER): Weekdays;
PROCEDURE HeisWeekday(day, month: SHORTINT; year: INTEGER): Weekdays;
PROCEDURE JulianDaysBeforeWeekday(day, month: SHORTINT; year: INTEGER; weekday: Weekdays): SHORTINT;
PROCEDURE GregorianDaysBeforeWeekday(day, month: SHORTINT; year: INTEGER; weekday: Weekdays): SHORTINT;
PROCEDURE HeisDaysBeforeWeekday(day, month: SHORTINT; year: INTEGER; weekday: Weekdays): SHORTINT;
PROCEDURE JulianDaysAfterWeekday(day, month: SHORTINT; year: INTEGER; weekday: Weekdays): SHORTINT;
PROCEDURE GregorianDaysAfterWeekday(day, month: SHORTINT; year: INTEGER; weekday: Weekdays): SHORTINT;
PROCEDURE HeisDaysAfterWeekday(day, month: SHORTINT; year: INTEGER; weekday: Weekdays): SHORTINT;
PROCEDURE JulianDiffDate(day, month: SHORTINT; year, days: INTEGER; VAR dday, dmonth: SHORTINT; VAR dyear: INTEGER);
PROCEDURE GregorianDiffDate(day, month: SHORTINT; year, days: INTEGER; VAR dday, dmonth: SHORTINT; VAR dyear: INTEGER);
PROCEDURE HeisDiffDate(day, month: SHORTINT; year, days: INTEGER; VAR dday, dmonth: SHORTINT; VAR dyear: INTEGER);
PROCEDURE JYearToScaliger(year: INTEGER): INTEGER;
PROCEDURE GYearToScaliger(year: INTEGER): INTEGER;
PROCEDURE HYearToScaliger(year: INTEGER): INTEGER;
PROCEDURE ScaligerYearToJ(syear: INTEGER): INTEGER;
PROCEDURE ScaligerYearToG(syear: INTEGER): INTEGER;
PROCEDURE ScaligerYearToH(syear: INTEGER): INTEGER;
PROCEDURE JSYearToJD(syear: INTEGER): LONGINT;
PROCEDURE GSYearToJD(syear: INTEGER): LONGINT;
PROCEDURE HSYearToJD(syear: INTEGER): LONGINT;
PROCEDURE JDtoMJD(jd: LONGINT): LONGINT;
PROCEDURE MJDtoJD(mjd: LONGINT): LONGINT;
PROCEDURE JulianToJD(day, month: SHORTINT; year: INTEGER): LONGINT;
PROCEDURE GregorianToJD(day, month: SHORTINT; year: INTEGER): LONGINT;
PROCEDURE HeisToJD(day, month: SHORTINT; year: INTEGER): LONGINT;
PROCEDURE TimeToJD(hour, min, sec: SHORTINT): REAL;
PROCEDURE JDToTime(jd: REAL; VAR rhour, rmin, rsec: SHORTINT);
PROCEDURE GregorianMoonAge(day, month: SHORTINT; year: INTEGER): SHORTINT;
PROCEDURE GregorianEaster(year: INTEGER; VAR dday, dmonth: SHORTINT);
PROCEDURE TimeZoneFactor(degree: SHORTINT): SHORTINT;
PROCEDURE LMT(secs: LONGINT; meridiandegree, posdegree: REAL): LONGINT;
PROCEDURE TimeToSec(hour, min, sec: SHORTINT): LONGINT;
PROCEDURE SecToTime(secs: LONGINT; VAR hour, min, sec: SHORTINT);
PROCEDURE JulianWeek(day, month: SHORTINT; year: INTEGER): SHORTINT;
PROCEDURE GregorianWeek(day, month: SHORTINT; year: INTEGER): SHORTINT;
PROCEDURE HeisWeek(day, month: SHORTINT; year: INTEGER): SHORTINT;

END Date.

