前のページ|次のページ

%GLOBALステートメント

実行中のSASセッション全体で使用可能なマクロ変数を作成します。

種類: マクロステートメント
制限事項: マクロ定義またはオープンコードで使用可能
参照項目: %LOCALステートメント

構文

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

必須引数

macro-variable(s)

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

オプション引数

READONLY macro-variable=value

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

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

macro-variable

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

value

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

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

詳細

%GLOBALステートメントは、1つ以上のマクロ変数を作成し、同変数にヌル値を割り当てます。グローバルマクロ変数とは、実行中のSASセッションまたはSASジョブの全体で利用できる変数です。
%GLOBALステートメントにより作成されるマクロ変数は、ユーザーが別の値を割り当てるまで、ヌル値を保持します。すでに存在するマクロ変数を%GLOBALステートメントで指定した場合、既存の値は変更されません。
READONLYオプションを使った%GLOBALステートメントは、新しいグローバルマクロ変数を1つ作成し、指定の値を割り当てます。既存のマクロ変数は読み込み専用にはできません。グローバルマクロ変数の値を変更することはできませんし、変数を削除することもできません。READONLYオプション付きで宣言されたマクロ変数は、同じスコープ内またはかっこで囲まれた任意のスコープ内では再宣言できません。すべての読み込み専用マクロ変数は、存在しているスコープが削除されるまでは保持されます。

比較

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

例: マクロ定義にグローバル変数を作成する

%macro vars(first=1,last=);
   %global gfirst glast;
   %let gfirst=&first;
   %let glast=&last;
   var test&first-test&last;
%mend vars;
次のプログラムをサブミットすると、マクロVARSは、VARステートメントと、TITLEステートメントで使用されるマクロ変数の値を生成します。
proc print;
   %vars(last=50)
   title "Analysis of Tests &gfirst-&glast";
run;
このマクロを実行すると、次のSASステートメントが生成されます。
PROC PRINT;
   VAR TEST1-TEST50;
   TITLE "Analysis of Tests 1-50";
RUN;
前のページ|次のページ|ページの先頭へ