;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun typeD(n)
(if(and (integerp n) (>= n 1) (<= n 31)) t nil)
)
(defun typeM(n)
(if(and (integerp n) (>= n 1) (<= n 12)) t nil)
)
(defun typeY(n)
(if(and (integerp n) (> n 0)) t nil)
)
(defun typeDate(d m y)
(if (and (typeD d) (typeM m) (typeY y)) t nil)
)
(defun hari(d)
(car d)
)
(defun bulan(d)
(car (cdr d))
)
(defun tahun(d)
(car(cdr(cdr d)))
)
(defun makedate(d m y)
(if
(or
(and (and (integerp d) (>= d 1) (<= d 31))(or (= m 1) (= m 3) (= m 5) (= m 7) (= m 8) (=
m 10) (= m 12)))
(and (and (integerp d) (>= d 1) (<= d 30))(or (= m 4) (= m 6) (= m 9) (= m 11) ))
(and (= m 2)(and (=(mod y 4) 0) (not (= y 1900)))(and (integerp d) (>= d 1) (<= d 29)))
(and (= m 2)(not (and (=(mod y 4) 0) (not (= y 1900))))(and (integerp d) (>= d 1) (<= d
28)))
)