状况不工作 - 发送电子邮件 SAS GUIDE

问题描述 投票:0回答:1

我必须在SAS指南中做一个条件,如果SYSERRORTEXT是否为空,但我创建的代码只给我值0,表明代码不好,即使我收到了电子邮件。我已经尝试了好几天一切,但一切都有效。我尝试过 IS MISSING、IS NULL、“”、LIKE 等。我也尝试过变量 SYSERR、prxmatch('/ERROR\d+/', text) > 0,任何东西,但这让我发疯。我怎样才能得到它的最佳代码?非常感谢!

%let emails = "[email protected]";

filename msg email
to=(&emails)
from="[email protected]"
subject="yurusg"
type="text/html"
attach=('C:\\Temp\\RESULT_VALID_DT_REF_BO.xlsx')
;

ods html file=msg rs=none;

proc odstext;
p " ";
p "Olá, ";
p " ";
p "Segue em anexo o resultado da validação da DT_REFERENCIA_BO nas entidades CONTRATO e CONTA. ";
p " ";
p "Obrigada. ";
run;
ods html close;

%END;

/\* Check if there was an error \*/
%put &SYSERRORTEXT ;

data Var_tab;
FORMAT varerror best8.;

proc sql ;

SELECT CASE WHEN "&SYSERRORTEXT" = "" THEN varerror = 1 ELSE varerror = 0 END AS VAR8
into :varerror
from WORK.Var_tab ;quit;


我想要一个变量告诉我 SYSERRORTEXT 是否为空。

sas sas-macro
1个回答
0
投票

我想你想要:

proc sql ;
    SELECT CASE WHEN "%superq(&SYSERRORTEXT)" = "" THEN  1 ELSE 0 END into :varerror
        from WORK.Var_tab ;
quit;

CASE WHEN
子句内的原始代码中,
varerror = 1
是一个逻辑表达式,如果 varerror 为 1,则等于 1,否则等于 0。
varerror = 0
是一个逻辑表达式,如果 varerror 为 0,则等于 1,否则等于 0。由于缺少
varerror
,因此两个条件都不成立,因此结果为 0。

如果

%superq()
包含双引号,则包含
&SYSERRORTEXT

测试时不要忘记使用

%let syserrortext=;
重置此宏变量,因为我很确定它的值在您的会话期间仍然存在。

© www.soinside.com 2019 - 2024. All rights reserved.