File: DATUM.PS of Tape: Various/Decus/decus-3
(Source file text) 

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.