%macro readmultidata(from,to); /*定义一个宏,带两个基本参数*/
%do i = &from. %to &to.; /*进行循环,从第一个参数执行到最后一个参数*/
data temp; /*每一次循环都建立一个名为temp的数据集,读入
路径下名为data+当前宏变量的数据*/
infile "d:\abc\def\data&i..csv";
input x;
run;
/* 在循环的第一步,注意是&i=&from,而不是上面的 i=from ,建立base数据集,注意只在第一步时建立,从第2步开始,每一步都向base追加新生成的temp文件,一直追加到循环的最后一步.*/
%if &i. = &from. %then %do; data base; set temp; run;%end;
%else %do; data base;set base temp;%end;
/*也可以把else do 后面的语句改成,
proc append base=base data=temp ,看得更清楚*/
%end;
%mend;
%readmultidata(1,50)
调用宏,反复读入50次数据,第1次建立base,随后49次追加到base,明白否?