2017-07-03 9 views
2

私はSASコードを調べて、マクロ変数を参照する次の方法を見つけました。すでに定義されているマクロ変数を参照してください

  1. & 変数名
  2. & 変数名

私が参照する第1の方法は、我々は、SASで定義されたマクロ変数を参照する方法を通常の方法であることを知っています。

しかし、あなたは(マクロ変数名の後にピリオドなし)第二の方法は、それが変数を参照するための短い道である第一の方法

+0

これらはマクロ変数参照です。変数を参照するには、その名前を使用するだけです。 – Tom

答えて

1

異なっているんどのように説明してください可能性があります。しかし、それは出力を連結したときに違いが:

%let lib = sashelp; 
data temp; 
    set &lib..class; 
run; 

私は常にバリアント&variable.を使用することをお勧めします:あなたは間違いなく.必要

%let var = My name ; 

%put &var.is Paul; 
// Output: My name is Paul. 

%put &varis Paul; 
// Output: WARNING: Apparent symbolic reference VARIS not resolved. 
// &varis Paul 

別の例。変数がどこで終了するのかは明らかです。

+0

ありがとう@ zuluk。私はインターネット上で検索しようとしましたが、この違いを見つけることができませんでした – ethan

+0

"マクロ変数期間"という用語で検索する必要があります。変数はマクロ変数と異なるため、何も返されません。 – Reeza

3

マクロ変数を参照すると、&サイン信号がマクロ変数参照を開始しています。また、マクロ・プロセッサーは、マクロ変数参照の終了を決定する必要があります。

ほとんどの場合、マクロ参照は空白またはセミコロンで終了します。

38 %let x=Hello; 
39 
40 %put &x; *semicolon ends the reference; 
Hello 
41 
42 %put &x World; *white space ends the reference; 
Hello World 

マクロ変数名には、文字、数字、下線が使用できます。マクロ変数に含めることができないシンボルは、参照を終了します。たとえば、疑問符:動作しませんでした

46 %put &xWorld; 
WARNING: Apparent symbolic reference XWORLD not resolved. 
&xWorld 

44 %put &x?; *Question mark ends the reference; 
Hello? 

は、こんにちは、世界の間にスペースなしで、あなたは文字列のHelloWorldを生成するとします。マクロプロセッサは、xWorldという名前のマクロ変数への参照を参照しました。そのようなマクロ変数はありません。そこで、マクロ変数参照がxの後で終わることをマクロプロセッサに伝える方法が必要です。 xの後ろにピリオドを追加して、「マクロ変数参照がここで終わる」と言うことができます。

47 %put &x.World; 
HelloWorld 

重要なことに、入力した期間はログに書き込まれたテキストには表示されません。マクロ・プロセッサーは、マクロ変数参照の終わりとして使用している期間を「食べる」。

これは、マクロ変数参照の後にピリオドを付ける場合は、ピリオドを2つ入力する必要があることを意味します。最初のものは、マクロプロセッサによって食べられます。通常の例として、librefを使用しています。

48 %let mylib=sashelp; 
49 
50 proc print data=&mylib.class;run; 
ERROR: File WORK.SASHELPCLASS.DATA does not exist. 

NOTE: The SAS System stopped processing this step because of errors. 
51 
52 proc print data=&mylib..class;run; 

NOTE: There were 19 observations read from the data set SASHELP.CLASS. 

マクロ変数参照の後のピリオドは、コーディングスタイルとして常に使用する人がいます。個人的には、マクロ変数参照の終わりを指定する必要がある場合にのみ使用します。

関連する問題