有条件地终止 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
我试图在满足特定条件时停止 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