©
serviceprofessionalgmbh
It makes sense to check in the program whether a date field is formally correct even when the date was entered in an ISPF
panel.
Dates coming from an ISPF panel may well be wrong because it is not allowed to do calculations in the )PROC Section
of panels and without them you cannot work out leap year dates.
/* 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)
back to Date & Time