前のページ|次のページ

%LOCALステートメント

マクロ変数を作成します。このマクロ変数は、その変数自身が定義されているマクロの実行中にのみ使用可能です。

種類: マクロステートメント
制限事項: マクロ定義でのみ使用可能
参照項目: %GLOBALステートメント

構文

%LOCAL macro-variable(s);
Or
%LOCAL / READONLY macro-variable=value;

必須引数

macro-variable(s)

1つ以上のマクロ変数名を指定するか、または1つ以上のマクロ変数名を生成するテキスト式を指定します。LOCALステートメントでは、SAS変数のリストや、SAS変数のリストを生成するマクロ式は使用できません。

オプション引数

READONLY macro-variable=value

新しい読み込み専用のローカルマクロ変数を作成します。

注: READONLYオプションは、単一の新規マクロ変数(ローカルまたはグローバル)を作成する際に使用できます。

macro-variable

マクロ名を指定するか、またはマクロ名を生成するテキスト式を指定します。名前は新しいマクロ変数名になります。

value

文字列またはテキスト式を指定します。

ヒント
valueを省略するとヌル値(長さがゼロの文字)が生成されます。
ヒント
valueの先頭および末尾にある空白は無視されます。値の先頭と末尾の空白を維持するには、値を%STR関数で囲んでください。

詳細

%LOCALステートメントは、1つ以上のローカルマクロ変数を作成します。%LOCALステートメントにより作成されるマクロ変数は、ユーザーが別の値を割り当てるまで、ヌル値を保持します。ローカルマクロ変数とは、その変数自身が定義されているマクロの実行時にのみ使用可能となる変数のことです。
%LOCALステートメントを使用すると、先にプログラム内で作成したマクロ変数の値が、現在のマクロ内の同じ名前の変数に割り当てた値によってうっかり変更されてしまうことを防止できます。すでに存在するマクロ変数を%LOCALステートメントで指定した場合、既存の値は変更されません。
READONLYオプションを使った%LOCALステートメントは、新しいローカルマクロ変数を1つ作成し、指定の値を割り当てます。既存のマクロ変数は読み込み専用にはできません。ローカルマクロ変数の値を変更することはできませんし、変数を削除することもできません。READONLYオプション付きで宣言されたマクロ変数は、同じスコープ内またはかっこで囲まれた任意のスコープ内では再宣言できません。すべての読み込み専用マクロ変数は、存在しているスコープが削除されるまでは保持されます。

比較

  • %LOCALステートメントおよび%GLOBALステートメントは、どちらも固有のスコープを持つマクロ変数を作成します。ただし、%LOCALステートメントは、その変数を含んでいるマクロの実行時のみ存在するローカルマクロ変数を作成します。一方、%GLOBALステートメントは、SASセッションやSASジョブの実行全体を通じて存在するグローバルマクロ変数を作成します。
  • ローカルマクロ変数とグローバルマクロ変数を同じ名前で定義した場合、マクロ機能は、そのローカル変数を含んでいるマクロの実行時には、同ローカル変数の値を使用します。そのローカル変数を含んでいるマクロが実行されていない場合、マクロ機能は同グローバル変数の値を使用します。

例: グローバル変数と同一名のローカル変数の使用

%let variable=1;
%macro routine;
   %put ***** Beginning ROUTINE *****;
   %local variable;
   %let variable=2;
   %put The value of variable inside ROUTINE is &variable;
   %put ***** Ending ROUTINE *****;
%mend routine;
%routine
%put The value of variable outside ROUTINE is &variable;
これらのステートメントをサブミットすると、次の行がSASログに書き込まれます。
*****Beginning ROUTINE ***** The value of variable inside ROUTINE is 2 ***** Ending ROUTINE ***** The value of variable outside ROUTINE is 1
前のページ|次のページ|ページの先頭へ