我需要从SAS数据集T_Final_summary产生报告。当我使用
时PROC报告或Proc Charpulate我将无法获得那些列的行
没有价值。因此,我创建了一个名为Expiring的新数据集
与报告相同的列。
t_final_summary的列名为 - sub_lob,group,mat_month和comm_incl。我正在尝试将宏的价值从该表传递到另一个表
命名有效的列,该列名为sub_lob,group,sum_of_comm_incl
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无法解决。有什么
宏语句中的错误。我不知道。谁能帮我吗?
由于宏的其余部分似乎正确,所以我只是在解决如何获取作为宏变量解决的参数。宏变量需要在将其传递给宏之前进行全局。
代码:
%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