soporaeternus 发表于 2010-8-19 15:50 
%macro t;
data b(keep=%do i=1 %to 132 %by 1;A&i B&i%end;);
set a1;
run;
%mend t;
%t;
嗯
记得宏只是文本替换
简单的宏完全可以人工解析出来自己看运行机制
楼上这段代码data步执行了132次,第&i次仅保留A&i和B&i变量
由于生成集都叫a
故后次覆盖前次
最后次就保留了A132和B132
If you want to data step, it could be as simple as,
data t1;
retain a1-a20 0;
output;
run;
data t2;
set t1(rename=(a1-a20=b1-b20));
run;
data t3;
set t1;
rename a1-a20=b1-b20;
run;
It is fine if the data set is small. The more efficient one in such a case is to use SAS utility procedure proc datasets.