出错时停止SAS程序

时间:2012-02-27 18:30:54

标签: sas

我正在使用宏来阻止我的SAS程序发生错误,但它总是与服务器断开连接,然后我再也无法恢复我的临时数据集了。

我试过了:

OPTIONS ERRORABEND;

这是我尝试过的宏:

%macro errchk;
%if &syserr >0 and &syserr ne 4 %then %abort;
%mend errchk;

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

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

2 个答案:

答案 0 :(得分:1)

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

这里给出了一个语法示例:

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

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

答案 1 :(得分:1)

我无法测试这个,因为我没有远程连接,但%ABORT有几个可选参数。通常我在使用它时会使用%ABORT cancel;。尝试每个附加参数,看看是否有任何工作。

链接到%ABORT文档:

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