如果满足某个条件,我试图停止处理SAS程序。我创建了一个宏变量,如果该变量是> 0.5然后我想要一个硬停止的程序。
当前程序看起来像
data a1;
set Server.a2;
run;
%macro1(a1);
%macro2(_t1); /* _t1 generated from %macro1.
data _null_;
if %stopit(_t2) > 0.5 then `?????`; /* _t2 generated from %macro2.
run;
%macro3;
%macro4;
如果%macro(_t2) > 0.5
,我想停止整个程序而不运行其余的程序(%macro3和%macro4)
答案 0 :(得分:2)
使用以下声明:
abort abend;
答案 1 :(得分:1)
我个人倾向于总是使用abort cancel;
(或%abort cancel;
),因为它在交互模式和批处理模式下运行时具有灵活性。
交互式地它只会取消提交的代码(但会保持会话开放)。
在批处理模式下,它将停止整个作业。
还有其他选项。您可以在文档here中找到完整列表。
还有endsas
命令,但我不喜欢它,因为它关闭了当前的交互式会话(并且有条件地执行它更加困难)。
以下是一个例子:
%let x = 1;
data _null_;
if &x then abort cancel;
put "This won't print";
run;
%put This won't print either;
日志中的结果将显示:
ERROR: Execution terminated by an ABORT CANCEL statement at line 4 column 14.
_ERROR_=1 _N_=1