2016-05-13 11 views
0

スペースを含む変数をマクロに渡す必要があります。この変数を使用してロジックを作成し、マクロ内に新しい列を作成します。SAS 9.3でスペースに変数をマクロに渡す

私のようなものを試してみた:

%MACRO func(var); 
    if first.id then &var = 0; 
    retain &var; 
    if descr = %unquote(%str(%'&var%')) then &var = 1; 
%MEND; 


proc sort data=work.table5a; 
    by id; 
run; 

data temp; 
set work.table5a; 
by id; 
    %func(PLUTO) 
    %func(PAPERINO) 
    %func(BANDA BASSOTTI) 
if last.id; 
run; 

ERRORは次のとおりです。

注:ラインマクロ変数 "VAR" によって生成されます。 37 BANDA BASSOTTI _____ ERROR 180-322:ステートメントが無効であるか、適切な順序で使用されていません。

もし私がコメント%prova(BANDA BASSOTTI)なら、それは動作します。助言がありますか ?例えば、あなたが変数名を作成するために& VARを使用している、とあなたがそれにスペースで変数名を持つようにしたい場合は、変数名のリテラルを使用する必要が

おかげ

答えて

2

"BANDA BASSOTTI" n。私はこれを自分でやっていないが、コードを醜くて書くのが難しいようだが、このようなものはうまくいくようだ:

options validvarname=any; 

%MACRO func(var); 
    retain "&var"n; 
    if first.id then "&var"n = 0; 
    if descr = "&var" then "&var"n = 1; 
%MEND; 
+0

それは働く。ありがとう。 – arj

関連する問題