前のページ|次のページ

マクロ変数のスコープ

すべてのマクロ変数にはscopeがあります。マクロ変数のスコープは、マクロ変数にどのように値が割り当てられ、マクロプロセッサよってどのようにマクロ変数参照が置換されるかを決定します。
マクロ変数には、グローバルローカルという2種類のスコープが存在します。グローバルマクロ変数は、SASセッションが存続する間存在し、マクロの内部、外部を問わず、プログラム内のどの場所(ただし、CARDSとDATALINESを除く)でも参照できます。ローカルマクロ変数は、それが作成されたマクロが実行中の間だけ存在し、マクロ定義の外側では意味を持ちません。
スコープは、箱の中に箱を入れるようにネストすることができます。たとえば、マクロ変数LOC1を作成するマクロAと、マクロ変数LOC2を作成するマクロBが存在するとします。マクロBがマクロAの内部でネスト(実行)されている場合、LOC1はAとBの両方に対してローカルです。しかし、LOC2は、Bに対してのみローカルです。
マクロ変数は、マクロ変数の名前と値の一覧を保持するシンボルテーブルに格納されます。すべてのグローバルマクロ変数を格納する、グローバルシンボルテーブルが存在します。ローカルマクロ変数は、マクロの実行開始時に作成されるローカルシンボルテーブルに格納されます。
%SYMEXIST関数を使用して、マクロ変数が存在するかどうかを表示できます。詳細については、%SYMEXIST関数を参照してください。
前のページ|次のページ|ページの先頭へ