如题,程序如下:
%macro directory(dir);
%let rs=%sysfunc(filename(filref,&dir));
%let did=%sysfunc(dopen(&filref));
%let nobs=%sysfunc(dnum(&did));
%do i=1 %to &nobs;
%let name=%qscan(%qsysfunc(dread(&did,&i)),1,.);
%let ext=%qscan(%qsysfunc(dread(&did,&i)),-1,.);
data tj_tjjg&i;
infile "&dir.\&name..&ext" MISSOVER dsd delimiter=',' firstobs=2 truncover lrecl=32767;
然后日志窗口提示:
WARNING: %SYSFUNC 或 %QSYSFUNC 宏函数所引用的参数 1(函数 DNUM)超出范围。
NOTE: 执行 %SYSFUNC 函数时无法执行数学运算。运算结果已设为缺失值。
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: &nobs
ERROR: %TO 值(%DO I 循环中)无效。
ERROR: 宏 DIRECTORY 将终止执行。
这是为什么呢?