我有两个 SAS 代码 1 和 2,我想合并这两个代码以从 SAS 发送自动电子邮件,我想替换第二个代码的 put (PUT "Code1???????????? ??????”)首先,我不知道该怎么做,你能帮助我吗?
/**********Code1********/
%macro Controle_QDD (Branche);
data SITMVT&Branche.;
set Stock&Branche.;
merge Stock&Branche. (in=A) Base&Branche. (in=B);
by &Varlist.
;
if A and not B;
run;
proc sql noprint;
select count(*) as NB&Branche.
from SITMVT&Branche.;
quit;
%if NB&Branche. > 0 %then
%put Le contrôle QDD est OK pour SITMVT&Branche. ;
%else
%put Le contrôle est KO pour SITMVT&Branche. Je vous invite à vérifier les résultats en exécutant le code ;
%mend;
%Controle_QDD(B);
%Controle_QDD(L);
/******Code2********/
filename mymail email FROM= "XXX"
TO=(
"XXX"
)
Cc=("XXX"
)
TYPE="text/html"
CONTENT_TYPE="text/html";
DATA _null_;
FILE mymail
SUBJECT="Controle QDD ";
PUT 'Bonjour,';
PUT '<br>';
PUT '<br>';
PUT '<br>';
PUT "Code1???????????????? "; /**** replace by Code 1 ????****/
PUT '<br>';
PUT 'Pour avis :-)';
PUT '<br>';
PUT '<br>';
PUT '<i>Note: ce mail est généré automatiquement, merci de ne pas y répondre.</i> ';
PUT '<br>';
PUT '<Cordialement,>';
RUN;
```---------------------------------
您的“代码 1”将无法正常工作。看起来您正在尝试在 SQL 步骤中创建一个名为 NB&Branche 的宏变量,但您现有的代码只是创建一个临时 SQL 变量。你需要:
proc sql noprint;
select count(*) into :NB&Branche from SITMVT&Branche;
quit;
将值存储到宏变量中。然后,您的以下宏 IF 语句需要像这样解析该宏变量的值(请注意开头的额外 && ):
%if &&NB&Branche > 0 %then
%put Le contrôle QDD est OK pour SITMVT&Branche. ;
%else
%put Le contrôle est KO pour SITMVT&Branche. Je vous invite à vérifier les résultats en exécutant le code ;
您基本上可以在“代码 2”中重复该部分:
PUT '<br>';
%let branche = B;
%if &&NB&Branche > 0 %then
PUT "Le contrôle QDD est OK pour SITMVT&Branche.";
%else
PUT "Le contrôle est KO pour SITMVT&Branche. Je vous invite à vérifier les résultats en exécutant le code";
%let branche = L;
%if &&NB&Branche > 0 %then
PUT "Le contrôle QDD est OK pour SITMVT&Branche.";
%else
PUT "Le contrôle est KO pour SITMVT&Branche. Je vous invite à vérifier les résultats en exécutant le code";
PUT '<br>';
PUT 'Pour avis :-)';
有条件地将一条消息或另一条消息添加到您的电子邮件中。整个事情可以变得更加简洁 - 例如,您可以在“代码 1”期间将每个“分支”所需的消息保存到宏变量中 - 但这应该足以让它工作......
好机会!