2016-10-05 3 views
-2

上記の例では、特定のライブラリgrpのすべてのDataSetの特定の変数を検索して追加しています。私はすべての変数で2 DSを持っていますが、1 DSからの値だけが選択されています& frm DS 2 &もエラーになります。 &データリストのシンボリックリファレンスが見つかりません....特定のライブラリ内に複数の変数を持つDSを追加します。

+0

あなたのコードは、あなたが言うこと、つまりテーブルを追加するか、「AGE」に等しい変数を選択します。あなたの質問を適切に定式化するために時間をかけてください。 – Reeza

+0

いいえ、SASにコードをコピーするとそのまま実行されません。まず、AGEは引用符で囲む必要があります。 TEMPとは何が関係しているのか分かりません。それにかかわらず、私は前の質問に答えを掲示しました。 – Reeza

+0

あなたの他の質問に私のコメントを見ましたか? INオペレータのhttp://support.sas.com/documentation/cdl/en/lrcon/62955/HTML/default/viewer.htm#a000780367.htmを参照するか、ORを使用してください。 a = 1またはa = 2 ... – Reeza

答えて

0

マクロを作成する前に、コードがマクロなしでどのように見えるかをメモしてください。

この場合には、限り、あなたは引用符とコンマのこれはあなたが探しているものだろうとを通して、あなたのパラメータを渡すよう

Name in ("Name", "Age", "Sex"); 

だろう。

編集:

%macro chk(lib=,varlist=); 
proc sql noprint; 
    select distinct catx(".",libname,memname) into : datalist  separated by " " 
    from dictionary.columns 
    where %upcase(libname) = %upcase("&lib") and %upcase(name) in (&varlist); 
quit; 

***rest of code; 
%mend; 

あなたは、マクロまたはマクロ最初の内にそれを処理する有効な文字列を渡す必要があります。リストを手動で決定したり、どこかから引っ張っているかどうかは指定していません。コンマを含める場合は、リストをマスクする必要があります。基本的に、文字列 '名前の年齢性別'を '名前'、 '年齢'、 '性別'に変換する方法を見つけるか、単純にその形式でマクロに渡します。

%chk(lib=grp,varlist=%str('NAME', 'AGE', 'SEX')); 
+0

私はあなたのコメントを理解していません。この回答の問題点は何ですか? – Reeza

関連する問題