マクロ変数は、SASコードの文字列を置換する場合に効果的です。マクロ変数を定義する最も簡単な方法は、%LETステートメントを使用して、標準SAS命名規則に従ってマクロ変数に名前と値を割り当てることです。
これで、New Orleans
というテキストを表示したいSASステートメントで、マクロ変数CITYを使用できます。次のTITLEステートメントに示すように、変数名の前にアンパサンド(&)を付けてこのマクロ変数を参照します。
マクロプロセッサは、マクロ変数CITYへの参照を次のように置換します。
title "Data for New Orleans";
マクロ変数は、マクロ定義内またはマクロ定義の外側のステートメント内(オープンコードと呼ばれる)で定義できます。
注: タイトルは、二重引用符で囲みます。オープンコード内の引用符で囲まれた文字列の内、マクロプロセッサは二重引用符で囲まれたマクロ変数参照を置換しますが、一重引用符で囲まれたマクロ変数参照を置換しません。
オープンコード内(マクロ定義の外側)で%LETステートメントを記述すると、グローバルマクロ変数が作成され、その変数が作成されたSASセッションが実行されている間、SASコード内の(DATALINESステートメント、CARDSステートメント以外の
)任意の場所で使用できます。
ローカルマクロ変数も用意されております。それらは、それらが作成されたマクロ定義の内部でのみ使用できます。グローバルおよびローカルマクロ変数の詳細については、
マクロ変数のスコープを参照してください。
マクロ変数には、SASデータセット変数と同じ長さ制限はありません。マクロ変数に割り当てる値に特定の特殊文字(たとえば、セミコロン、引用符、アンパサンド、パーセント記号)またはニーモニック(たとえば、AND、OR、LT)を使用することもできます。その場合、マクロクォーティング関数を使用して特殊文字をマスクする必要があります。そうしない場合、特殊文字やニーモニックが、マクロプロセッサによって誤って解釈される恐れがあります。
マクロクォーティングの詳細については、 マクロクォーティング を参照してください。
マクロ変数は、単純なテキスト置換に役立ちます。条件付き演算、DOループなどの複雑なタスクは実行できません。そのような処理を実行する場合は、マクロを定義する必要があります。