错误时停止SAS程序

错误时停止SAS程序,sas,Sas,我正在使用宏在出现错误时停止SAS程序,但它总是与服务器断开连接,然后我再也无法恢复临时数据集 我试过: OPTIONS ERRORABEND; %macro errchk; %if &syserr >0 and &syserr ne 4 %then %abort; %mend errchk; 以下是我尝试过的宏: OPTIONS ERRORABEND; %macro errchk; %if &syserr >0 and &syserr ne 4

我正在使用宏在出现错误时停止SAS程序,但它总是与服务器断开连接,然后我再也无法恢复临时数据集

我试过:

OPTIONS ERRORABEND;
%macro errchk;
%if &syserr >0 and &syserr ne 4 %then %abort;
%mend errchk;
以下是我尝试过的宏:

OPTIONS ERRORABEND;
%macro errchk;
%if &syserr >0 and &syserr ne 4 %then %abort;
%mend errchk;
这一个在到达错误后继续处理以下数据步骤


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

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

此处给出了一个语法示例:


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

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

链接到
%ABORT
文档:


那么你是远程连接到服务器来运行你的程序?我是在工作时连接的,所以我想如果你设置一些转到开关,让处理在检测到错误后到达代码的末尾,可能会有所帮助?