数据集为zhu_20050601至zhu_20050624,其中如zhu_20050604等几个数据集不存在。我想用最基本的data…… set……语句把这些数据集串接,但是如果只是设置简单循环,则因为有不存在的数据集而无法串接。所以我想能不能用%sysfunc先判断一下数据集是否存在,如果存在就执行set。程序如下:
%macro set;
data zhu;
set %do i=%eval(20050601) %to %eval(20050624);
data _null_;
call symput('id',put(&i,z8.));
run;
%let dset=zhu_&id;
%let dsid=%sysfunc(exist(&dset));
%if &dsid %then &dset;
%end;
;
run;
%mend set;
但是这个宏无法执行,日志显示为:
ERROR: 文件“WORK.DATA.DATA”不存在。
NOTE: SAS 系统由于错误而停止了该步的处理。
WARNING: 数据集 WORK.ZHU 可能不完整。该步停止时,共有 0 个观测和 0 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.01 秒
CPU 时间 0.01 秒
WARNING: 没有解析符号引用 ID。
WARNING: 没有解析符号引用 ID。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
NOTE: 由宏变量“DSET”生成行。
1 exer.zhu_20050602
-----------------
180
ERROR 180-322: 语句无效或未按正确顺序使用。
NOTE: 由调用宏“SET”生成行。
9 call symput('id',put(&i,z8.));
----
180
ERROR 180-322: 语句无效或未按正确顺序使用。
请各位大侠帮帮忙,看看问题可能出在哪里?万分感谢!