我正在编写一个SAS程序,它也使用了一些宏。但是,SAS突然停止运行我提交的代码。如果我选择并提交部分代码,我可以看到它复制在日志中,但就是这样。没有注释,错误或警告。代码也没有执行。如果代码是没有任何宏变量的简单数据步骤,则无关紧要。 我错过了什么吗?我应该检查或验证什么?
答案 0 :(得分:9)
这听起来像是一个宏中不平衡报价的经典案例。运行下面的代码应该清除它,然后你需要检查错误的代码。
*); */; /*’*/ /*”*/; %mend;
答案 1 :(得分:1)
在宏编码期间,我发生了同样的问题,除了它是无法匹配的括号。问题代码的原始行是
“...%然后%let DLINE =%str(if(P ge 22和STAFF eq 0,然后STAFF = 1;);”
注意不匹配的“(”P变量前的字符。删除“(” 或者在“eq 0”之后添加“)”解决问题。
答案 2 :(得分:0)
我弄清楚为什么我也遇到了这个问题。
当我折叠所有宏代码(只是在项目代码的同一文件中的临时代码)时,重新运行它。
SAS实际上只是运行折叠的部分,所以它只是宏的第一行。
上面的代码解决了我的问题,但我还需要重新运行扩展的宏代码以避免将来出现错误。