©
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