各位大大,小弟遇见一个问题,如题。希望在data 里生成一个变量然后直接在data step里用看下面程序,希望把j做成一个macro变量。这样就可以写成 var&j.=pay_date了。谢谢!
data g;
input indexs 1. pay_dt date9. due_dt date9.;
format pay_dt date9. due_dt date9.;
datalines;
1 12Dec14 11Dec14
2 14Jan15 11Jan15
3 17Mar15 11Feb15
4 17Apr15 11Mar15
5 13May15 11Apr15
6 11May15
7 11Jun15
8 11Jul15
9 11Aug15
;
run;
proc sql noprint;
select max(indexs) into :max_index
from g;
quit;
%macro varlist(n);
%do i=1 %to &n;
format var&i. date9.;
retain var&i.;
%end;
%mend;
%macro t;
data test;
set g;
retain j;
%varlist(&max_index);
if not missing(pay_dt) then do;
days_diff=intck('days',due_dt,pay_dt);
if days_diff>3 then do;
j+1;
if j=1 then var1=pay_dt;
if j=2 then var2=pay_dt;
if j=3 then var3=pay_dt;
if j=4 then var4=pay_dt;
if j=5 then var5=pay_dt;
if j=6 then var6=pay_dt;
if j=7 then var7=pay_dt;
if j=8 then var8=pay_dt;
if j=9 then var9=pay_dt;
end;
end;
run;
%mend;
%t;