无法将参数传递到宏以作为宏变量解决



我需要从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

最新更新