我必须在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 是否为空。
我想你想要:
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=;
重置此宏变量,因为我很确定它的值在您的会话期间仍然存在。