2016-12-20 30 views
0

sasデータセットt_final_Summaryからレポートを生成する必要があります。
procレポートまたはprocテーブルを使用すると、列
が値を持たない行は表示されません。そこで、Expiring
という名前の新しいデータセットをレポートと同じ列で作成しました。マクロ変数に渡すパラメータをマクロに渡すことができません

t_final_Summaryには、 - Sub_LOB、Group、Mat_Month、およびComm_Inclという名前の列があります。 マクロの値をそのテーブルから別のテーブル
という名前のExpiringに渡そうとしていますが、
のMat_monthのSub_LOB、Group、Sum_of_Comm_Inclという名前の列があります。私は次のコードを書いた:

%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

あなたはPRELOADFMTを試してみましたか? – Reeza

+0

マクロ変数スコープ - マクロの外側に変数のダイが存在しません。間違いなく、この質問の両方の点で重複しています。 – Reeza

+0

[マクロ内にマクロ変数を作成する方法は?](http://stackoverflow.com/questions/38361696/how-to-create-a-macro-variable-within-a-macro) – Reeza

答えて

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 
+0

はい、あなたは正しいです。マクロはproc sqlのマクロに渡す前にグローバルである必要があります。ご助力ありがとうございます – shankar

関連する問題