前のページ|次のページ

マクロの保存および再利用

マクロ定義をサブミットすると、デフォルトでは、マクロプロセッサはそのマクロをコンパイルし、WORKライブラリ内のSASカタログに格納します。それらのマクロは、セッションコンパイル済みマクロと呼ばれ、現在のSASセッションが存続している間だけ、存在します。セッション間で頻繁に使用されるマクロを保存するには、自動呼び出しマクロ機能またはコンパイル済みマクロ機能を使用します。
自動呼び出しマクロ機能は、SASマクロのソースを、自動呼び出しライブラリと呼ばれる外部ファイルの集合に格納します。自動呼び出し機能は、さまざまなアプリケーションおよびユーザーからアクセスできる場所に、マクロを容易に管理できるプールを作成する場合に役立ちます。自動呼び出しライブラリは、まとめて連結できます。自動呼び出し機能の主なデメリットは、自動呼び出しマクロが、最初にセッションで呼ばれたときにマクロプロセッサによってコンパイルされることです。このコンパイルはオーバーヘッドになります。このオーバーヘッドは、コンパイル済みマクロ機能を使用することで回避できます。
コンパイル済みマクロ機能は、指定したSASライブラリのSASカタログに、コンパイルされたマクロを格納します。コンパイル済みマクロを使用することで、プロダクションレベルのジョブにおいて、マクロをコンパイルする時間を省くことができます。ただし、これらのマクロはコンパイルされて格納されるため、マクロ定義のソースを別の場所に保存して管理する必要があります。
自動呼び出しマクロ機能とコンパイル済みマクロ機能には、それぞれメリットがあります。マクロ定義の保存方法を決定する要因には、次のものがあります。
  • マクロを使用する頻度
  • マクロを変更する頻度
  • マクロを実行する必要のあるユーザーの数
  • マクロに含まれるコンパイルされるマクロステートメントの数
新しいプログラムを開発している場合、マクロを作成し、それらを現在のセッション中にコンパイルすることを検討してください。ネームスタイルマクロを使用してプロダクションレベルのジョブを実行している場合、コンパイル済みマクロの使用を検討してください。ユーザーグループでマクロを共有している場合、自動呼び出し機能の使用を検討してください。
注: コンパイル済みマクロ機能を使用する場合、さらに効率を高めるために、ネームスタイルマクロのみを格納してください。ステートメントスタイルマクロおよびコマンドスタイルマクロは、効率が劣ります。
コンパイル済みマクロまたは自動呼び出しマクロをプログラミングする場合、%LOCALステートメントを使用して定義することをお勧めします。そのステートメントでは、そのマクロないでのみ使用されるマクロ変数を定義するようにします。そうするのは、現在のマクロの外部で定義されたマクロ変数の値は、変更される可能性があるからです。マクロ変数のスコープの説明については、マクロ変数のスコープを参照してください。
通常、SASマクロ機能では、マクロ名と変数名の大文字小文字は区別されず、内部で大文字に変更されます。SASマクロ機能では、値の大文字小文字は区別され、変更されません。
自動呼び出しマクロまたはコンパイル済みマクロを呼び出すと、マクロ名が大文字に変更されてカタログルーチンに渡され、その名前のメンバが開かれます。カタログルーチンはホストに依存しており、メンバを検索するときに、特定のホストのデフォルトの大文字小文字規則を使用します。マクロカタログエントリは、対象となるホストのデフォルトの大文字小文字規則を使用して作成する必要があります。各ホストのデフォルトは次のとおりです。
  • UNIXのデフォルトは小文字
  • z/OSのデフォルトは大文字
  • Windowsのデフォルトは小文字
注: UNIXでは、自動呼び出しマクロが格納されるメンバの名前をすべて小文字にする必要があります。
前のページ|次のページ|ページの先頭へ