Thanks.
I have an error in my macro. When I run it with manual argument input it works, but not when passing array elements to it. The full code is as follows and the idea is to parse two text string dates for each record and then calculate the duration between these times and write a third variable for this record.
I have commented the rows that cannot be run when passing array elements to the macro:
%macro times(startvar, finishvar, answervar);
datetemp = &startvar;
datetemp = cat(scan(datetemp, 3), scan(datetemp, 2), scan(datetemp, -1), '/', scan(datetemp, 4));
datetemp_1 = input(datetemp, datetime20.);
format datetemp_1 datetime20.;
drop datetemp;
*drop &startvar;
*rename datetemp_1 = &startvar;
datetemp = &finishvar;
datetemp = cat(scan(datetemp, 3), scan(datetemp, 2), scan(datetemp, -1), '/', scan(datetemp, 4));
datetemp_01 = input(datetemp, datetime20.);
format datetemp_01 datetime20.;
drop datetemp;
*drop &finishvar;
*rename datetemp_0010 = &finishvar;
*format &answervar TIME10.;
*if datetemp_1 > 0 then &answervar = HMS(hour(datetemp_01 - datetemp_1), minute(datetemp_01 - datetemp_1), second(datetemp_01 - datetemp_1));
%mend times;
data temp;
set source;
array started starta startb startc;
array finished finisha finishb finishc;
array answered answera answerb answerc;
do i = 1 to dim(started);
%times(started(i), finished(i), answered(i));
end;
drop i;
run;
... View more