gpt4 book ai didi

SAS 数据步骤 if 语句不起作用

转载 作者:行者123 更新时间:2023-12-02 04:19:46 25 4
gpt4 key购买 nike

使用下面的代码,电子邮件总是被发送。 1 显然不等于 0,但它仍然运行。我尝试删除 do 部分,但仍然遇到同样的问题。

data _null_;
set TestTable;
if 1 = 0 then do;
file sendit email
to=("email@gmail.com")
subject="Some Subject Line";
end;
run;

最佳答案

虽然 file 语句被认为是可执行语句(因此不应在错误的 if 语句后面执行),但这并不完全正确。 SAS 在编译期间看到 file 语句,并且知道它需要创建一个文件来写入 - 因此,它有点编译时间。这就是这里发生的事情 - SAS 作为编译器事件的结果创建文件(在本例中为电子邮件),然后实际上没有用任何东西填充它,但在一天结束时仍然有一封电子邮件。

任何其他文件都会发生同样的事情 - 就像这样:

data _null_;
set sashelp.class;
if 0 then do;
file "c:\temp\test_non_zero.txt";
put name $;
end;
run;

该代码创建了一个空白文件。

如果您需要有条件地发送电子邮件,我建议将您的电子邮件代码包装在一个宏中,然后使用 call execute 或数据集中的类似方法调用该宏。像这样:

%macro write_email(parameters);
data _null_;
file sendit email
to=("email@gmail.com")
subject="Some Subject Line";
run;
%mend write_email;

data _null_;
set TestTable;
if 0 then do;
call execute('%write_email(parameters)');
end;
run;

关于SAS 数据步骤 if 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37060456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com