2017-02-23 16 views
0

マクロ変数名のリストをループするプログラムに、マクロ変数名だけを返すのではなく、%DOループ内の各マクロ変数の値を返します。マクロ変数によるSASループ

%let macro_list = AA BB CC; 
%let loop = %sysfunc(countw(&macro_list.)); 

%let AA = 123; 
%let BB = 456; 
%let CC = 789; 

%macro test(); 

    %do i = 1 %to &loop.; 

%let var = %scan(&macro_list.,&i); 
%put &var.; /* I want this to return 123 not AA!!!*/ 

    %end; 
%mend test; 

%test; 

は現在、マクロは、私もこれを実装する他の方法に開いだろう789

AA、BB、CCの代わりに、123、456、の値を返します。ありがとう!

+0

あなたが '&var'を求めると、リストからのものである' var'の値を返します。 '&& var.'を入力すると、'&AA'が返され、123に解決されます。詳細については、Googleの「ダブルアンパサンドとSASの解決」を参照してください。 – mjsqu

答えて

2

あなたがより&

%put &var = &&&var ; 

または使用%superq()機能を追加する必要があります。

%put &var = %superq(&var) ; 
+0

おかげさまで、トラブルシューティング中に2つの&&を試しましたが、3つに&&& !!! %superq()はきれいに見え、読みやすくする必要があります。 – Wolfspirit

関連する問題