プログラムの呼び戻し

[OS] UNIX
[リリース] ALL
[キーワード] UNIX, LINE MODE, RECALL, SPOOL

[質問]

UNIX版SASをラインモードで使用しています。
DMSモードで使用しているときのように、一度サブミットしたプログラムを呼び戻して実行したいのですが、何か方法はありますか?

[回答]

SAS起動時、または環境設定ファイルでSPOOL オプションを指定すれば、プログラムを呼び戻して実行できます。UNIX版SASをラインモードで起動する際にSPOOLオプションを使用する場合は、下記のように実行します。

  $/usr/local/sas82/sas_ja -nodms -spool
実際にプログラムを呼び戻して実行するには、%incステートメントの後に呼び戻して実行したいプログラムの行番号を指定します。実行したプログラムの行番号を知りたい場合は、%listステートメントを実行すれば、これまでに実行したプログラムの一覧を行番号付きで表示できます。
  %list;
行番号の指定方法は、下記のように%incステートメントを実行します。
呼び戻す行 指定方法
プログラムの任意の1行を呼び戻す 行番号を指定する 1行目を呼び戻す場合
%inc 1;
複数の連続する行を呼び戻す 「- (ハイフン)」でつないで指定する 1〜5行目を呼び戻す場合
%inc 1-5;
任意の連続しない複数行を呼び戻す 「:(コロン」で区切って指定する 2行目と4行目を呼び戻す場合
%inc 2:4;


実行例
すでに、下記のプログラムが実行済みであると仮定します。
data test;
  x=1;
  y=2;
  z=3;
run;
%listステートメントを実行し、過去にサブミットしたプログラムの一覧を表示します。
6 %list; /* %listで一覧の取得*/
1 data test;
2   x=1;
3   y=2;
4   z=3;
5 run;
6 %list;

7 %inc 1-5; /* 1行目から5行目までを呼び戻して実行*/

NOTE: データセットWORK.TEST は1 オブザベーション、3 変数です。
NOTE: DATA ステートメント処理:
      処理時間              0.00 秒
      CPU時間               0.01 秒

13 data test2;
14 %inc 2:4; /* 2行目と4行目のみを呼び戻して実行*/
17 run;

NOTE: データセットWORK.TEST2 は1 オブザベーション、2 変数です。
NOTE: DATA ステートメント処理:
      処理時間0.00 秒
      CPU時間0.01  秒