程序如下;
%macro setymcurr(ns=);
data _null_;
set ymtot(firstobs=&ns. obs=&ns.);
call symput('ymcurr',ymcurr);
run;
%mend;
data _null_;
do i=1 to 2;
%setymcurr(ns=1);
put &ymcurr.;
end;
run;
结果如下:
data _null_;
31 do i=1 to 2;
32 %setymcurr(ns=1);
NOTE: 由于出错,SAS 系统停止处理该步。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
NOTE: 由调用宏“SETYMCURR”生成行。
32 data _null_; set ymtot(firstobs=&ns. obs=&ns.); call symput('ymcurr',ymcurr); run;
_
117
ERROR 117-185: 有 1 个未闭合的“DO”块。
NOTE: 数值已转换为字符值,位置:(行:列)。
2902:77
NOTE: 从数据集 WORK.YMTOT. 读取了 1 个观测
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
2 SAS 系统 2016年09月08日 星期四 下午03时29分54秒
33 put &ymcurr.;
33 put &ymcurr.;
___
180
ERROR 180-322: 语句无效或未按正确顺序使用。
34 end;
___
180
ERROR 180-322: 语句无效或未按正确顺序使用。