|##########| |#MAGIC #|CLABLNFP |#PROJECT #|"" |#PATHS #|"StdProject" |#FLAGS #|xx---x--x--xxxx----------------- |#USERSW #|-------------------------------- |#USERMASK#|-------------------------------- |#SWITCHES#|xxxx-x---x------ |##########| |==============================================================================| | Modul : Dates | | Autor : Ulrich Sigmund und Thomas Pfrengle | | Datum : 13.10.1991 | | Verwendung : Umwandlung eines Dos-Datums in ein Standarddatum, und umgekehrt.| | Änderungen : - | |==============================================================================| DEFINITION MODULE Dates; FROM Dos IMPORT Date; FROM Exceptions IMPORT RangeViolation; EXCEPTION | | NoLeapYear : Es wurde in einem Nicht-Schaltjahr, ein 29. Februar | übergeben. NoLeapYear : "Only in leap-years there is a 29.th, february"; | | TooMuchDays : Das übergebene Tagesdatum, ist größer als der Monat | Tage hat TooMuchDays : "This month has less days, than passed"; | | NotBefore78 : Es können keine Daten vor 1978 verarbeitet werden NotBefore78 : "Year was earlier than 1978"; TYPE Months = [1..12]; Days = [1..31]; Hours = [0..23]; US_Hours = [1..12]; Min_Secs = [0..59]; WeekDays = [1..7]; MonthNameType = ARRAY Months OF STRING(10); ShortNameType = ARRAY Months OF STRING(3); DayNameType = ARRAY WeekDays OF STRING(10); | | FullDate : Record, der das umgewandelte Datum enthält. | .year : Jahr | .month : Monat | .day : Tag im Monat | .dayInWeek : Tag in der Woche | .dayInYear : Tag im laufenden Jahr | .hour : Stunde im 24 Stunden-Tag | .us_Hour : Stunde im anglo-amerikanischen 12 Stunden Tag | .pm : TRUE für hour OF 13..0 | minute : Minuten der angebrochenen Stunde | second : Sekunde der angebrochenen Minute | ticks : 1/50 Sekunden der angebrochenen Sekunde | FullDate = RECORD year : [1978..2099]; month : Months; day : [1..31]; dayInWeek : WeekDays; dayInYear : [1..366]; hour : [0..23]; us_Hour : [1..12]; pm : BOOLEAN; minute, second : [0..59]; ticks : [0..49]; END; CONST | | Die folgenden Konstanten dienen zur einfachen Konvertierung der Felder | month und dayInWeek zu Strings. Jeweils auf deutsch und auf englisch | US_Months = MonthNameType:("January","February","March","April","May", "June","July","August","September", "October","November","December"); D_Months = MonthNameType:("Januar","Februar","März","April","Mai", "Juni","Juli","August","September", "Oktober","November","Dezember"); ShortNames = ShortNameType:("Jan","Feb","Mar","Apr","May","Jun", "Jul","Aug","Sep","Okt","Nov","Dez"); US_DayNames = DayNameType:("Sunday","Monday","Tuesday","Wednesday", "Thursday","Friday","Saturday"); D_DayNames = DayNameType:("Sonntag","Montag","Dienstag","Mittwoch", "Donnerstag","Freitag","Samstag"); | | Funktion : Wandelt ein Dos-Date in ein FullDate um | Parameter : data <- Dos-Date | -> FullDate | tested PROCEDURE FullDateOf(date : Date):FullDate; | | Funktion : Erzeugt aus einem deustchen Standarddatum ein Dos-Date | Parameter : day <- Tag im Monat | month <- Monat | year <- Jahr | hour <- Stunde | min <- Minute | second <- Sekunde | tested PROCEDURE ValToDate(day : Days; month : Months; year : CARDINAL; hour : Hours; min, second : Min_Secs):Date; CONST am = FALSE; | Vormittag 1-12 Uhr pm = TRUE; | Nachmittag 13-0 Uhr | | Funktion : Erzeugt aus einem anglo-amerikanischen Standarddatum ein | Dos-Date | Parameter : Wie ValToDate außer: | pm : Flag ob am oder pm | tested PROCEDURE US_ValToDate(month : Months; day : Days; year : CARDINAL; hour : US_Hours; min, second : Min_Secs; pm : BOOLEAN:=FALSE):Date; GROUP All = Months,WeekDays,MonthNameType,ShortNameType,DayNameType, FullDate,US_Months,D_Months,ShortNames,US_DayNames,D_DayNames, FullDateOf,ValToDate,Date,Dos.DateStamp,US_ValToDate; END Dates.