PROCEDURE Days(day: Calendarday) : INTEGER;
(* liefert die Anzahl der Tage seit Beginn des
zugehoerigen Kalendarjahres plus die Anzahl
der Schalttage seit dem Jahr 0, wobei
Kalenderreformen ignoriert werden
*)
VAR
days: INTEGER;
i: Month;
BEGIN
(* Anzahl der Schaltjahre ermitteln *)
days := day.year DIV 4 - day.year DIV 100 +
day.year DIV 400;
(* Anzahl der Tage im aktuellen Jahr hinzuzaehlen *)
INC(days, day.day);
FOR i := 1 TO day.month - 1 DO
INC(days, md[i]);
END;
(* Fehlerkorrektur bei Schaltjahren notwendig, wenn wir
im Januar oder Februar sind
*)
IF (day.month < 3) & LeapYear(day.year) THEN
DEC(days);
END;
RETURN days
END Days;
|