我可以在遇到第一个错误时停止提交的语句吗?

问题描述 投票:0回答:1

仅出于调试目的:是否有办法在第一个错误时停止执行一系列提交的语句?

假设,我有三个步骤,其中第二条语句有错误。假设我在SAS窗口中一次运行所有它们。然后,我希望SAS由于第二句中检测到错误而成功执行了第一句并停止工作。然后我可以轻松地去那里解决此问题。

但是实际上,SAS试图执行所有三个步骤(即第一,第二(尽管有错误)和第三)。希望对此有解决方案。

两句话:

  1. 我发现以下代码可能会有所帮助,但实际上没有帮助。否则,请赐教。
options syntaxcheck dmssynchk;
  1. 我不想使用SAS选项,errorabend,因为它会关闭SAS会话本身。我只希望我的SAS停止“提交的代码”并想解决此问题。

提前感谢。

error-handling sas
1个回答
0
投票

有一个称为%runquit的常用宏,它允许...不确定其起源,但它在这里:

%macro runquit;
  ; run; quit;
  %if &syserr. ne 0 %then %do;
     %abort cancel;
  %end;
%mend runquit;

proc sort data=asdasd;
 by _all_;
%runquit;

data abc;
 a = 1;
 b = 2;
 c = 3;
%runquit;

缺点是您必须用对run;的调用替换任何quit;%runquit语句,从而使代码不太美观。

可以找到一个相关的StackOverflow问题here

另请参阅this discussion以获取其他解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.