SASシステムオプションの値をマクロ変数に格納する方法

[OS]ALL
[リリース] 6.12, 8.1, 8.2
[キーワード] _LAST_, dictionary table

[質問]

プログラム中で最後に作成したデータセット名は、SASシステムオプションの「_LAST_」に格納されますが、マクロ変数として「_LAST_」の値を使いたい場合にはどうしたらよいでしょうか。

[回答]

SASシステムオプションは、システムで用意されている「dictionaryテーブル」の「dictionary.options」に格納されています。これを利用することでマクロ変数に格納することができます。

  %MACRO lastdata;
    %GLOBAL lastdata;
      PROC SQL NOPRINT ;
        SELECT setting INTO :lastdata FROM dictionary.options
               WHERE optname = '_LAST_'    ;
      QUIT;
    %LET lastdata = %trim(&lastdata);
  %MEND lastdata;

  %lastdata ;

  %PUT 最終作成データセット:&lastdata ;

上記サンプルプログラム中のそれぞれの変数の説明は次のとおりです。

setting 実際のSASシステムオプションの値
optname SASシステムオプションの各項目名