%macro create (name, number);
%do n=1 %to &number;
&name.n
%end;
%mend create;
data %create(abc,3);
input a@@;
if a=1 then output abc1;
else if a=2 then output abc2;
else if a=3 then output abc3;
cards;
1 2 3
;
proc print data=abc1;
run;
proc print data=abc2;
run;
proc print data=abc3;
run;
运行结果:
178 %macro create (name, number);
179 %do n=1 %to &number;
180 &name.n
181 %end;
182 %mend create;
183 data %create(abc,3);
184 input a@@;
185 if a=1 then output abc1;
----
455
186 else if a=2 then output abc2;
----
455
187 else if a=3 then output abc3;
----
455
ERROR 455-185: 在 DATA 语句中未指定数据集。
188 cards;
ERROR: 已打开数据集 WORK.ABCN 用于输出。
NOTE: 由于出错,SAS 系统停止处理该步。
WARNING: 数据集 WORK.ABCN 可能不完整。该步停止时,共有 0 个观测和 1 个变量。
WARNING: 数据集 WORK.ABCN 由于该步已停止,而没有被替换。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.01 秒
CPU 时间 0.01 秒
190 ;
191 proc print data=abc1;
ERROR: 文件“WORK.ABC1.DATA”不存在。
192 run;
NOTE: 由于出错,SAS 系统停止处理该步。
NOTE: “PROCEDURE PRINT”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
193 proc print data=abc2;
ERROR: 文件“WORK.ABC2.DATA”不存在。
194 run;
NOTE: 由于出错,SAS 系统停止处理该步。
NOTE: “PROCEDURE PRINT”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
195 proc print data=abc3;
ERROR: 文件“WORK.ABC3.DATA”不存在。
196 run;
NOTE: 由于出错,SAS 系统停止处理该步。
NOTE: “PROCEDURE PRINT”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒