仅出于调试目的:是否有办法在第一个错误时停止执行一系列提交的语句?
假设,我有三个步骤,其中第二条语句有错误。假设我在SAS窗口中一次运行所有它们。然后,我希望SAS由于第二句中检测到错误而成功执行了第一句并停止工作。然后我可以轻松地去那里解决此问题。
但是实际上,SAS试图执行所有三个步骤(即第一,第二(尽管有错误)和第三)。希望对此有解决方案。
两句话:
options syntaxcheck dmssynchk;
errorabend
,因为它会关闭SAS会话本身。我只希望我的SAS停止“提交的代码”并想解决此问题。提前感谢。
有一个称为%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以获取其他解决方案。