有条件地终止 SAS

Conditionally terminate 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)

使用以下语句:

abort abend;

我个人倾向于总是使用 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