PROGRAM DATUM(INPUT,OUTPUT); VAR JJ,MM,TT,WT: INTEGER; PROCEDURE LIESDATUM; (*********) VAR STRICH: CHAR; BEGIN READ(JJ, STRICH, MM, STRICH, TT) END (* LIESDATUM *); PROCEDURE WOCHENTAG; (*********) VAR F,G: INTEGER; BEGIN IF MM>2 THEN BEGIN F := 1900 + JJ; G := MM + 1 END ELSE BEGIN F := 1900 + JJ - 1; G := MM + 13 END; WT := ( TRUNC(365.25*F) + TRUNC(30.6*G) + TT - 621049 ) MOD 7 END (* WOCHENTAG *); PROCEDURE DATUMSTEXT; (**********) PROCEDURE WRITEWOCHENTAG; BEGIN CASE WT OF 0: WRITE("SONNTAG"); 1: WRITE("MONTAG"); 2: WRITE("DIENSTAG"); 3: WRITE("MITTWOCH"); 4: WRITE("DONNERSTAG"); 5: WRITE("FREITAG"); 6: WRITE("SAMSTAG") END END (* WRITEWOCHENTAG *); PROCEDURE WRITEMONAT; BEGIN CASE MM OF 1: WRITE("JAENNER"); 2: WRITE("FEBRUAR"); 3: WRITE("MAERZ"); 4: WRITE("APRIL"); 5: WRITE("MAI"); 6: WRITE("JUNI"); 7: WRITE("JULI"); 8: WRITE("AUGUST"); 9: WRITE("SEPTEMBER"); 10: WRITE("OKTOBER"); 11: WRITE("NOVEMBER"); 12: WRITE("DEZEMBER") END END (* WRITEMONAT *); BEGIN WRITE("HEUTE IST "); WRITEWOCHENTAG; WRITE(", DER", TT:3, ". "); WRITEMONAT; WRITELN(1900+JJ:5) END (* DATUMSTEXT *); BEGIN LIESDATUM; WOCHENTAG; DATUMSTEXT END.