© serviceprofessionalgmbh

Die Prüfung eines formal richtig ausgefüllten Datumsfeldes ist etwas, das sinnvollerweise immer im Programm zu erfolgen hat, auch wenn das Datumsfeld in einem ISPF-Panel eingegeben wird.

Eine vernünftige Prüfung im Panel ist nicht möglich, da für die Schaltjahresermittlung gerechnet werden muss und dies in der )PROC Section des Panels leider nicht erlaubt ist.


/* REXX
   Eingabe: tt.mm.jjjj
   Ausgabe: "OK" oder entsprechende Fehlermeldung
*/
ARG CHECKDAT
MSG = "OK"
PARSE VAR CHECKDAT 1 TAG 3 P1 4 MON 6 P2 7 JAHR
SELECT
   WHEN length(checkdat) <> 10 ! P1!!P2 <> ".." ! ,
        datatype(TAG!!MON!!JAHR,"W") = 0 THEN
        MSG="Falsches Eingabeformat ,RICHTIG: TT.MM.JJJJ"
   WHEN MON < 1 ! MON > 12 THEN
        MSG="Monat falsch"
   OTHERWISE DO
        /* don't look bad */
        FEB = 28 + schaltjahr(JAHR)
        Tage_im_Jahr = "31" FEB "31 30 31 30 31 31 30 31 30 31"
        IF TAG > word(Tage_im_Jahr,MON) THEN
        MSG = "Tag falsch"
   END
END
RETURN MSG

SCHALTJAHR:
RETURN (JAHR // 4 = 0) - (JAHR // 100 = 0) + (JAHR // 400 = 0)
zurück zu Datum & Zeit