前のページ|次のページ

コンパイル済みマクロ機能を使用したマクロの保存

コンパイル済みマクロ機能の概要

コンパイル済みマクロ機能は、マクロをコンパイルして、指定されたライブラリ内の永続的なカタログに保存します。コンパイルは一度だけ実行されます。現在またはその後のセッションでコンパイル済みマクロを呼び出すと、マクロプロセッサはコンパイル済みのコードを実行します。
SAS 9.1.3以降では、コンパイル済みマクロカタログが、最初に読み込み専用で開かれます。コンパイル済みマクロをコンパイルまたは更新しようとする場合、このカタログは即座に閉じられ、更新の目的で再び開かれます。マクロがコンパイルされてカタログの更新または変更が完了すると、カタログが再び即座に閉じられ、読み込み専用で再び開かれます。

マクロ定義のコンパイルと保存

永続的なカタログ内のマクロ定義をコンパイルするには、まず、それぞれのコンパイル済みマクロのソースを作成する必要があります。コンパイル済みマクロを格納するには、次の手順を実行します。
  1. %MACROステートメントでSTOREオプションを使用します。SOURCEオプションを使用すると、ソースコードとコンパイル済みコードを格納できます。さらに、DES=オプションを指定することによって、SASカタログ内のマクロエントリに説明的なタイトルを割り当てることができます。例として、次の定義の%MACROステートメントに、STORE、SOURCE、DES=の各オプションを示します。
    %macro myfiles / store source
         des='Define filenames';
      filename file1 'external-file-1';
      filename file2 'external-file-2';
    %mend;
    注意:
    マクロソースコードを保存しておいてください。
    コンパイル済みマクロからソースステートメントを再作成することはできません。したがって、マクロを変更する場合、マクロの元のソースステートメントが保存されている必要があります。また、すべてのコンパイル済みマクロについて、マクロソースコードを文書化してください。%%MACROステートメントでSOURCEオプションを使用して、コンパイル済みコードと共にソースコードを保存できます。あるいは、ソースを別のファイルに保存することもできます。別のファイルにソースを保存する場合、そのソースコードをコンパイル済みマクロと同じカタログ内に保存することをお勧めします。次の例では、ソースコードは次のライブラリに保存されます。
    mylib.sasmacro.myfiles.source
    注: コンパイル済みマクロのソースを取り出す場合、%COPYステートメントを参照してください。
  2. MSTOREDシステムオプションを設定して、コンパイル済みマクロ機能を有効にします。詳細については、MSTOREDシステムオプションを参照してください。
  3. SASMSTOREオプションを割り当てることによって、コンパイル済みSASマクロのカタログが含まれる、または含まれる予定のSASライブラリを指定します。たとえば、コンパイル済みマクロをMYLIB.SASMACRという名前のSASカタログに格納したり、それを呼び出したりするには、次のステートメントをサブミットします。
    libname mylib 'SAS-library';
    options mstored sasmstore=mylib;
    詳細については、SASMSTORE=システムオプションを参照してください。
  4. コンパイルして永続的に格納するマクロごとに、ソースをサブミットします。
コンパイル済みマクロを、別のオペレーティングシステムまたはSASの別のリリースに移動することはできません。ただし、マクロソースコードを、別のオペレーティングシステムまたはSASの別のリリースに移動して、そこでコンパイルして格納することは可能です。詳細については、ホストのドキュメントを参照してください。

SAS提供の自動呼び出しマクロの保存

SASが提供する自動呼び出しライブラリに含まれるマクロを使用する場合、独自に作成したマクロに加えて、それらのマクロをコンパイルし、格納することによって、マクロをコンパイルする時間を省くことができます。SASが提供する自動呼び出しライブラリに含まれるBase SASソフトウェアに関連する多くのマクロは、コンパイルしてSASMacrという名前のSASカタログに格納できます。これは、SASが提供する自動呼び出しマクロCOMPSTORで可能です。詳細については、%COMPSTOR自動呼び出しマクロを参照してください。

コンパイル済みマクロの呼び出し

必要なシステムオプションが設定されていれば、コンパイル済みマクロの呼び出しは、セッション中にコンパイルされたマクロの呼び出しと全く同じです。ただし、マクロプロセッサがマクロをどのように検索するかについて、理解しておくことが重要です。マクロを呼び出すと、マクロプロセッサは、次の順序でマクロ名を検索します。
  1. 現在のセッション中にコンパイルされたマクロ
  2. 指定されたライブラリ内のSASMACRカタログに含まれるコンパイル済みマクロ(オプションMSTOREDおよびSASMSTORE=が有効の場合)
  3. SASAUTOSオプションで指定された各自動呼び出しライブラリ(オプションSASAUTOS=およびMAUTOSOURCEが有効の場合)
  4. SASHELPライブラリ内のSASMACRカタログに含まれるコンパイル済みマクロ
カタログ内のコンパイル済みマクロを含むエントリを表示できます。詳細については、マクロ機能のエラーメッセージとデバッグを参照してください。
前のページ|次のページ|ページの先頭へ