;+ ; Contains the valid_day function ; ; :Author: ; Gaƫlle Boisnard ; ; :History: ; 2004/03/29: Created ; ; 2004/03/29: Last Edit ;- ; ;+ ; Transforms the string month in a long integer, if possible ; ; :Returns: ; <return desc here> ; ; :Params: ; day: in, required, type=sometype ; A parameter named day ; month: in, required, type=sometype ; A parameter named month ; year: in, required, type=sometype ; A parameter named year ;- FUNCTION valid_day, day, month, year tab01_31=['1', '2', '3', '4', '5', '6', '7', '8', '9', '01', '02', '03', '04', '05', '06', '07', $ '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', $ '22', '23', '24', '25', '26', '27', '28', '29', '30', '31'] day=strtrim(day, 2) case 1 of (month eq 1) or (month eq 3) or (month eq 5) or (month eq 7) or (month eq 8) or (month eq 10) $ or (month eq 12): begin ind=where(day eq tab01_31, count) if (count eq 0) then begin return, 0 endif end (month eq 4) or (month eq 6) or (month eq 9) or (month eq 11): begin ind=where(day eq tab01_31(0:38), count) if (count eq 0) then begin return, 0 endif end (month eq 2) and ( (year mod 4) eq 0): begin ind=where(day eq tab01_31(0:37), count) if (count eq 0) then begin return, 0 endif end (month eq 2) and ( (year mod 4) ne 0): begin ind=where(day eq tab01_31(0:36), count) if (count eq 0) then begin return, 0 endif end endcase return, long(day) end