ストアドプログラムの作成方法

[OS]ALL
[リリース] 6.09e, 6.12, 8.1, 8.2
[キーワード] pgm=, redirect, input

[質問]

DATAステッププログラムをあらかじめコンパイルして保存しておき、後で呼び出して実行することはできますか?

[回答]

通常、DATAステップでプログラムをサブミットすると、SASはプログラムをコンパイルし、その後に実行しますが、ストアドプログラムはすでにコンパイル済みのため、コンパイルせずに実行することが可能です。したがって、多くのステートメントを含むDATAステップをストアドプログラムとして作成すれば、コンパイル時間を節約できるため、プログラムの実行時間が短縮されます。

また、ストアドプログラムの実行時に、元のプログラムで指定した入・出力データセット名を変更することも可能です。定型的な処理を行なうDATAステップを頻繁に使用する場合に向いている機能といえます。 以下は、ストアドプログラムの作成、および実行例となります。


  /** ストアドプログラムの作成 **/
              /* PGM=に作成するストアドプログラム名を指定 */
  DATA store1 / PGM=makedata; 
    SET sashelp.class;
  RUN;

  /** ストアドプログラムの実行 **/
       /* PGM=実行するストアドプログラム名を指定 */
  DATA PGM=makedata;
  RUN;

  /** 出力データセット名を変更 **/
  DATA PGM=makedata;
     /* store1(旧出力データセット) = store2(新出力データセット) */
    REDIRECT OUTPUT store1=sotre2; 
  RUN;

なお、入力データセット名を変更する場合は、REDIRECTステートメントにて以下を指定します。

  REDIRECT INPUT 旧入力データセット = 新入力データセット;

その際、新しく指定する入力データセットに含まれる変数の数や属性は、元の入力データセットに含まれているものと一致している必要があります。