PROGRAM datum(input,output);

{Das Programm giebt ein sauberes Datum aus}

VAR tag,monat,jahr:integer;
    tagmin,tagmax,monatmin,monatmax,jahrmin,jahrmax:integer;
    abbruch:integer;

BEGIN

  tagmin:=1;
  tagmax:=31;
  monatmin:=1;
  monatmax:=12;
  jahrmin:=-9999;
  jahrmax:=9999;

  REPEAT
    write('geben Sie das Datum als JJJJ MM DD ein');
    writeln(' (Abbruch mit 0 0 0)');
    readln(jahr,monat,tag);
    IF (monat<monatmin) OR (monat>monatmax) OR (tag<tagmin) OR (tag>tagmax)
       OR (jahr<jahrmin) OR (jahr>jahrmax) THEN
      writeln('fehlerhafte Eingabe')
    ELSE
      CASE monat OF
        1:writeln(tag,' Januar ',jahr);
        2:writeln(tag,' Februar ',jahr);
        3:writeln(tag,' Maerz ',jahr);
        4:writeln(tag,' April ',jahr);
        5:writeln(tag,' Mai ',jahr);
        6:writeln(tag,' Juni ',jahr);
        7:writeln(tag,' July ',jahr);
        8:writeln(tag,' August ',jahr);
        9:writeln(tag,' September ',jahr);
       10:writeln(tag,' Oktober ',jahr);
       11:writeln(tag,' November ',jahr);
       12:writeln(tag,' Dezember ',jahr)
      END {CASE}
  UNTIL ((tag OR monat) = 0)
END.
