出错时停止SAS程序

Nic*_*son 5 sas

我正在使用宏来阻止我的SAS程序出错,但它总是断开与服务器的连接,然后我再也无法取回我的临时数据集了.

我试过了:

OPTIONS ERRORABEND;
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的宏:

%macro errchk;
%if &syserr >0 and &syserr ne 4 %then %abort;
%mend errchk;
Run Code Online (Sandbox Code Playgroud)

这个在达到错误后继续处理以下数据步骤.

我无法弄清楚如何阻止程序的其余部分运行,但不能断开与SAS服务器的连接.有任何想法吗?

use*_*489 1

您尝试过使用 %goto 吗?您可以将宏重定向到退出点,并向日志中打印一些内容以指示代码的哪一部分失败,而不是触发中止。

这里给出了语法示例:

http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a000209058.htm

我认为上面 %errchk 的问题可能是 %abort 语句仅适用于 %errchk 本身。如果您将 %abort 调用放在宏代码中间,而不将它们包装在另一个宏中,那么这种方法可能会取得更大的成功。或者您可以做一些事情来延迟 %abort 的执行,直到 %errchk 已经完成 - 也许通过将其包含在 %nrstr() 中?让我知道这是否有效 - 我明天就能测试它。