マクロの開発中に、グローバルシンボルテーブルやローカルシンボルテーブルのコンテンツのすべて、またはその一部を、SASログに書き込むと役に立つ場合があります。これを実行するには、次のオプションのいずれかを指定して%PUTステートメントを使用します。
_ALL_
スコープに関係なく、現在定義されているすべてのマクロ変数を表示します。この出力には、ユーザー定義のグローバル変数とローカル変数、および自動マクロ変数が含まれます。スコープは、最も内側から外側に向かう順序で表示されます。
_AUTOMATIC_
すべての自動マクロ変数を表示します。スコープは、AUTOMATICとして表示されます。自動マクロ変数は、SYSPBUFFを除き、すべてグローバルです。SYSPBUFFなどの自動マクロ変数の詳細については、
自動マクロ変数を参照してください。
_GLOBAL_
マクロプロセッサによって作成されていない、すべてのグローバルマクロ変数を表示します。スコープは、GLOBALとして表示されます。自動マクロ変数は表示されません。
_LOCAL_
現在実行中のマクロ内で定義された、ユーザー定義のローカルマクロ変数を表示します。スコープは、そのマクロ変数が定義されているマクロの名前で表示されます。
_READONLY_
スコープに関係なく、ユーザー定義の読み込み専用マクロ変数をすべて表示します。 スコープは、グローバルマクロ変数の場合はGLOBALとして表示され、そうでない場合は、そのマクロ変数が定義されているマクロの名前として表示されます。
_USER_
スコープに関係なく、ユーザー定義のマクロ変数をすべて表示します。スコープは、グローバルマクロ変数の場合はGLOBALとして表示され、そうでない場合は、そのマクロ変数が定義されているマクロの名前として表示されます。
_WRITABLE_
スコープに関係なく、ユーザー定義の読み込み/書き込みマクロ変数をすべて表示します。スコープは、グローバルマクロ変数の場合はGLOBALとして表示され、そうでない場合は、そのマクロ変数が定義されているマクロの名前として表示されます。
たとえば、次のプログラムについて考えます。
%let origin=North America;
%macro dogs(type=);
data _null_;
set all_dogs;
where dogtype="&type" and dogorig="&origin";
put breed " is for &type.";
run;
%put _user_;
%mend dogs;
%dogs(type=work)
%MENDステートメントの前に記述された%PUTステートメントによって、ユーザーが作成したすべてのマクロ変数のスコープ、名前、および値が、次のようにSASログに書き込まれます。
DOGS TYPE work
GLOBAL ORIGIN North America
TYPEは、マクロパラメータであるためマクロDOGSに対してローカルであり、その値はwork
です。ORIGINは、オープンコードで定義されているため、グローバルです。