マクロカタログからマクロのソースコードを参照する

[OS] ALL
[リリース] SAS 9.1以降
[キーワード] MACRO, stored macro, source, %COPY

[質問]

マクロカタログ(sasmacr.sas7bcat)があります。
SASからライブラリを割り当てることでエントリ(マクロ名)の一覧を確認することができたのですが、マクロを実行せずにソースコードを参照することはできないでしょうか。

[回答]

SAS 8.2では、コンパイル済みのマクロ(ストアドコンパイルマクロ)からソースコードを参照することはできません。

SAS9では%MACROステートメントにSOURCEオプションが追加されました。
このオプションはマクロカタログ内にマクロのソースコードを格納します。ストアドコンパイルマクロの作成時にSOURCEオプションを指定しておくと、後からソースコードを参照することができます。
ソースコードの参照は%COPYステートメントを使用します。

(1) ストアドコンパイルマクロの作成

  LIBNAME maclib 'C:¥temp';
    OPTIONS MSTORED SASMSTORE=maclib;

    %MACRO sample /STORE SOURCE;
      DATA class;
        SET sashelp.class;
      RUN;
    %MEND;

(2) ソースコードの参照

  LIBNAME maclib 'C:¥temp';
    OPTIONS MSTORED SASMSTORE=maclib;
                        /* ソースコードをSASログに表示 */
    %COPY sample /SOURCE;
                /* ソースコードをテキストファイルに保存 */
    %COPY sample /SOURCE OUT='C:¥temp¥sample.sas';