8

我正在编写一个也使用一些宏的 SAS 程序。但是,SAS 突然停止运行我提交的代码。如果我选择并提交部分代码,我可以在日志中看到它被复制,但仅此而已。没有注释、错误或警告。代码也没有被执行。如果代码是没有任何宏变量的简单数据步骤,则无关紧要。我错过了什么吗?我应该检查或验证什么?

4

3 回答 3

10

这听起来像是一个宏中不平衡引号的经典案例。运行下面的代码应该可以清除它,然后您需要检查代码是否存在错误。

*); */; /*’*/ /*”*/; %mend;
于 2014-06-06T09:18:48.343 回答
1

我在宏编码期间也发生了同样的问题,除了括号不匹配。问题代码的原始行是

"...%then %let DLINE=%str(if (P ge 22 and STAFF eq 0 then STAFF=1;);"

注意 P 变量之前不匹配的“(”字符。在“eq 0”之后删除“(”或添加“)”可以解决问题。

于 2015-03-12T15:52:48.253 回答
0

我弄清楚为什么我也遇到了这个问题。

当我折叠所有宏代码(只是在我的项目代码的同一文件中的临时代码)并重新运行它时。

SAS实际上只是运行折叠部分,所以它只是宏的第一行。

上面的代码解决了我的问题,但我还需要再次重新运行扩展的宏代码以避免将来出现错误。

于 2015-04-02T03:21:43.333 回答