-1

当我运行以下代码时,日志中显示三个错误:错误:此 %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;
4

1 回答 1

0

我发现了这个错误。确实是黑洞问题,是我的一个评论中的单引号引起的!这个单引号使 '%mend' 被识别为文字标记。因此,我运行的所有以下代码都被识别为宏的一部分。

于 2013-09-22T05:21:36.727 回答