 DEFINITION MODULE Datum; (* Copyright 1993 by Kai Hofmann *)

 (*$ StackChk    := FALSE *)
 (*$ RangeChk    := FALSE *)
 (*$ OverflowChk := FALSE *)
 (*$ NilChk      := FALSE *)
 (*$ CaseChk     := FALSE *)
 (*$ ReturnChk   := FALSE *)
 (*$ LargeVars   := FALSE *)
 (*$ EntryClear  := TRUE  *)
 (*$ Volatile    := TRUE  *)
 (*$ StackParms  := TRUE  *)
 (*$ CStrings    := TRUE  *)


 TYPE
	wtstring = ARRAY [1..20] OF CHAR; (* Type für wochentag *)
	datestr  = ARRAY [1..20] OF CHAR; (* Type für Datum als string *)


 PROCEDURE Schaltjahr(Jahr : CARDINAL) : BOOLEAN;
			(* Ermittelt, ob Jahr ein Schaltjahr ist	  *)

 PROCEDURE maxDays(Monat : SHORTCARD; Jahr : CARDINAL) : SHORTCARD;
			(* Ergibt die Anzahl von Tagen, die ein Monat hat
			   (unter Berücksichtigung von Schaltjahr).	  *)

 PROCEDURE Weekday (Tag,Monat : SHORTCARD; Jahr : CARDINAL) : SHORTCARD;
			(* Ermittelt den Wochentag von t,m,j (1 = Monatg) *)

 PROCEDURE GetDate (VAR Wochentag,Tag,Monat : SHORTCARD; VAR Jahr : CARDINAL);
			(* Holt das Aktuelle Datum des Systems		  *)

 PROCEDURE GetTime (VAR Stunde,Minute,Sekunde : SHORTCARD);
			(* Holt die Aktuelle Uhrzeit des Systems	  *)

 PROCEDURE tagdiff(tag1,monat1 : SHORTCARD; jahr1 : CARDINAL; tag2,monat2 : SHORTCARD; jahr2 : CARDINAL) : LONGINT;
			(* Berechnet die Differenz zwischen zwei Daten
			   (Wenn Datum1 > Datum2, dann ist das Ergebnis
			    Negativ).					  *)

 PROCEDURE wochentag(Tag : SHORTCARD; VAR string : wtstring;
							Sprache : SHORTCARD) : SHORTCARD;
			(* Gibt den Wochentag von Weekday als String
			   (wtstring) in Sprache zurück.
			   Rückgabewert: max. mögliche Stringlänge  *)

 PROCEDURE GetWeek(Tag,Monat : SHORTCARD; Jahr : CARDINAL) : SHORTCARD;
			(* Holt die Wochennummer *)

 PROCEDURE FormatDate(Tag,Monat : SHORTCARD; Jahr : CARDINAL; VAR datum : datestr);
 			(* Wandelt Datum in String *)

 PROCEDURE monat(Monat : SHORTCARD; VAR string : wtstring;
							Sprache : SHORTCARD) : SHORTCARD;
		(* Gibt den Monat als String (wtstring) in Sprache zurück
		   Rückgabewert: max. mögliche Stringlänge		  *)

 PROCEDURE GetSysSec(Tag,Monat : SHORTCARD; Jahr : CARDINAL;
					 Std,Min,Sek : SHORTCARD) : LONGCARD;

 END Datum.
