我需要从sas数据集t_final_Summary生成报告。我用的时候
proc报告或proc表格我不会得到列为什么的行
没有它们的价值。因此,我创建了一个名为Expiring
的新数据集
与报告中的列相同。
t_final_Summary具有名为Sub_LOB,Group,Mat_Month和Comm_Incl的列。
我试图将宏的值从该表传递到另一个表
命名为Expiring,其中包含名为Sub_LOB,Group,Sum_of_Comm_Incl的列
改变Mat_month。我写了以下代码:
%macro mat (sub,grp,mth,MCRO);
proc sql no print;
select case
when Sum(Comm_incl)=. then 0
else sum(Comm_Incl)
end format=16.2
into :&MCRO.
from t_final_Summary
where Sub_LOB= "&sub."
and Group="&grp."
and Mat_Month="&mth.";
quit;
%mend mat;
%mat(CRE Commercial, Carolina Group, _Expired, goid);
/*Now I want to check my macro variable goid using %put*/
%put &goid;
然后日志总是告诉我宏goid没有解决。有没有 宏语句中的错误。 我弄清楚了。有人可以帮帮我吗?
答案 0 :(得分:0)
由于宏的其余部分似乎是正确的,我只讨论如何将参数解析为宏变量。在将宏变量传递给宏之前,需要将其变为全局变量。
代码:
%Macro Testit(received_var);
Proc sql noprint;
Select make into :&received_var from sashelp.cars where make="Acura";
Quit;
%Put Received_Var(Local): &&&received_var;
%mend;
%Global Passed_Var;
%Testit(passed_var);
%Put Passed_Var(Global) : &passed_var;
日志:
24 %Macro Testit(received_var);
25
26 Proc sql noprint;
27 Select make into :&received_var from sashelp.cars where Make="Acura";
28 Quit;
29
30 %Put Received_Var(Local): &&&received_var;
31
32 %mend;
33
34 %Global Passed_Var;
35 %Testit(passed_var);
NOTE: PROCEDURE SQL used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
Received_Var(Local): Acura
36
37 %Put Passed_Var(Global) : &passed_var;
Passed_Var(Global) : Acura