2016-10-06 31 views
0

マクロループをテストしています。コードはシンプルですが、常に "マクロ関数%SCANの引数が多すぎます"というエラーメッセージが表示されます。理由を理解できませんでした。誰でもそれを説明できますか?ありがとう! コードは:マクロvarriableにおいて単純なSASマクロのエラー

%macro test; 
proc sql;select distinct tj, max(tj) into: tp separated by ",", : maxtp from ASA_k where tj>0;quit;  

%do i=1 %to &maxtp.; 
    %let timep=%scan(&tp.,&i.,","); 
    %put &timep.; 
%end; 

%mend; 

%test; 

答えて

4

、あなたがカンマで区切られた値を格納し、これらのコンマは問題があります。 %bquoteマクロ関数を使用して、マクロ変数を解決した後にマスクする必要があります。また、%scan関数の3番目のパラメータは正しくありません。セパレータは,"です。 %strマクロ機能を使用してカンマをマスクするだけです。ちょうどそのように:

%macro test; 
proc sql; 
    select distinct tj, max(tj) 
    into :tp separated by ",", :maxtp 
    from ASA_k 
    where tj>0; 
quit;  

%do i=1 %to &maxtp.; 
    %let timep=%scan(%bquote(&tp.),&i.,%str(,)); 
    %put &timep.; 
%end; 
%mend; 

%test; 
+0

または別の文字で区切って使用してください –

+0

説明のために、ロバート! – Andrea

関連する問題