マクロ変数を作成する場所(ローカル or グローバル)を明示的に指定することが出来ます。
・「%LOCALステートメント」で「ローカルマクロ変数」を作成できます。
・「%GLOBALステートメント」で「グローバルマクロ変数」を作成できます。
構文
| %LOCAL マクロ変数1 マクロ変数2 ・・・; %GLOBAL マクロ変数1 マクロ変数2 ・・・; | 
使用例の前にまずは、今回つかうマクロ変数をリセット(削除)しときます。
| 
%symdel  MAC1 MAC2 MAC3 MAC4 MAC5  /  nowarn; | 
例
| 
%macro TEST; %local MAC1 MAC2 ; %global MAC3 ; %put _user_; %mend; %TEST; TEST MAC1 TEST MAC2 GLOBAL MAC3 | 
CALL SYMPUTXの第3引数で、ローカル・グローバルどちらに作成するか指定できます。
構文
| CALL SYMPUTX( "マクロ変数名", "格納する値" , "G") ; CALL SYMPUTX( "マクロ変数名", "格納する値" , "L") ; | 
"G": グローバルマクロ変数にする
"L": ローカルマクロ変数にする(マクロ外で実行するとグローバルマクロ変数になる)
例
| 
%macro TEST; data _null_; call symputx("MAC4","abcd","L"); call symputx("MAC5","1234","G"); run; %put _user_; %mend; %TEST; TEST MAC4 abcd GLOBAL MAC5 1234 | 
ローカルマクロ変数はマクロ終了とともに消えるので、無駄なマクロ変数が残りません。
なのでローカルマクロ変数を明示的に定義する方が内部的にはキレイなプログラムといえると思います。
1. 基本概念
2. %LET編
3. CALL SYMPUT編
4. マクロ変数の展開
5. マクロ変数の作成場所を明示的に指定する
 


