有条件地终止SAS

时间:2015-02-11 06:41:02

标签: sas

如果满足某个条件,我试图停止处理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)

2 个答案:

答案 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