@wlierman,
Not to dissuade you from finding your own coding style and solution, but here's one possible solution:
DATA WORK.Merge_data_E_18_c ;
Set WORK.Merge_data_E_18(RENAME=(DOB=Old_DOB));
IF INPUT(Old_DOB, 5.) THEN
DO;
DOB = INPUT(Old_DOB, 5.) + '30DEC1899'd;
Fmt_DOB = PUT(DOB, MMDDYYS10.);
END;
ELSE
DO;
DOB = DATEPART((INPUT(Old_DOB, ANYDTDTE19.) * 86400));
Fmt_DOB = PUT(DOB, MMDDYYS10.);
END;
IF STRIP(Fmt_DOB) = '.' THEN
Fmt_DOB = ' ';
RUN;
The results look like:
You'd probably want to drop "Old_DOB," but I left it in for now so you can see:
The original Excel value
The numeric SAS equivalent of the original
The formatted appearance of the SAS numeric value.
Notice that an invalid date (the very last example) results in missing values.
Jim
... View more