sas中没有匹配的%宏错误

时间:2013-09-21 19:45:17

标签: macros sas

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

1 个答案:

答案 0 :(得分:0)

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