I do write an original SAS code before writing the macro. Your suggest is all right. After using normal DO loop, the error code disappears. However, the two variables (time and event) have the same value across all records. Here is the new macro:
%macro piece(indata=, outdata=, interval=, survt=, cens=, fcode=1);
data &outdata;
set &indata;
a = ceil(&survt/&interval);
do j = 1 to a;
time = &interval;
event = 0;
%if j = a and &survt = &fcode %then %do;
event = 1;
time = &survt - &interval*(a-1);
%end;
output;
end;
run;
%mend;
I feel that the %IF-%THEN-%DO statement does not work. I alternatively used the normal IF-THEN-DO statement, no thing is changed (but at least no more error message). I still think something wrong in the variable 'a' in the IF-THEN-DO statement, but cannot find out any bug.
... View more