If date data have been entered as string variables and need to be converted into date variables, a macro can be used to do the conversion. The macro below, called ddate, takes a list of string variables and a suffix as arguments to create date (numeric) versions of the inputted string variables. In the example below, the string variables date1, date2 and date3, as well as the suffix _n, are supplied in the macro call. The new date (numeric) variables date1_n, date2_n and date3_n are created.
data list list
/date1 (a10) date2 (a10) date3 (a10).
begin data.
06/12/2005 07/05/2006 03/05/2009
12/11/2003 11/10/2005 10/05/2006
04/06/2007 09/10/2004 10/10/2006
end data.
define ddate( vlist = !charend('/')
/suffix = !cmdend)
!do !vname !in (!vlist)
!let !nname = !concat(!vname, !suffix)
string m (a2).
string d (a2).
string y (a4).
exe.
compute m = substr(!vname, 1, 2).
compute d = substr(!vname, 4, 2).
compute y = substr(!vname, 7, 4).
compute mn = numeric(m, f4.0).
compute dn = numeric(d, f4.0).
compute yn = numeric(y, f4.0).
compute !nname = date.dmy(dn, mn, yn).
formats !nname (date10).
exe.
delete variables m d y mn dn yn .
!doend
!enddefine.
ddate vlist = date1 date2 date3
/suffix = _n.
list.
date1 date2 date3 date1_n date2_n date3_n 06/12/2005 07/05/2006 03/05/2009 12-JUN-05 05-JUL-06 05-MAR-09 12/11/2003 11/10/2005 10/05/2006 11-DEC-03 10-NOV-05 05-OCT-06 04/06/2007 09/10/2004 10/10/2006 06-APR-07 10-SEP-04 10-OCT-06 Number of cases read: 3 Number of cases listed: 3
