当我运行以下代码时,日志中会显示三个错误: 错误:此%MEND语句没有匹配的%MACRO语句。 错误:宏NO仍在执行,无法重新定义。 错误:将编译虚拟宏。 我想知道这是不是黑洞问题。但我找不到任何语法错误。谁能告诉我这是什么问题?谢谢!
%Macro table(x);
data m_&x; set A (where=(seqno=0));
LENGTH DD_&x 8;
run;
%mend table;
data _null_;
Do u=1 to 17;
call execute ('%nrstr(%table('||u||'))');
end;
run;
%macro sumup_DD (x, Startdate, Enddate,i);
data B; set A (where=(seqno=&i));
DD_&x=sum(of &Startdate-&Enddate);
run;
proc append base=m_&x data=B;
run;
%mend sumup_DD;
%macro no;
%do n=1 %to 17;
data _null_; set A;
call execute('%nrstr(%sumup_DD ('||&n||','||rr&n||','||rr%eval(&n+1)||','||seqno||'))');
run;
%end;
%mend no;
%no;
答案 0 :(得分:0)
我发现了这个错误。这确实是黑洞问题,这是由我的一条评论中的单引号引起的!这个单引号使'%mend'被识别为文字标记。因此,我运行的所有以下代码都被识别为宏的一部分。