標準入力からプログラムを読み込む方法

[OS]ALL
[リリース] 6.12,8.1,8.2
[キーワード] STDIO

[質問]

UNIX版SASで、標準入力から直接プログラムを読み込んで実行する方法はありますか。

[回答]

STDIOシステムオプションを指定することによって可能です。このオプションによって、プログラムを標準入力から読み込み、プロシジャ出力を標準出力に、ログを標準エラーにそれぞれ書き出します。
次の例では、シェルプロンプトから以下の1行を実行することで、SETINITプロシジャの結果を出力させています。

$ echo proc setinit\; | sas -stdio

また、この機能によって、シェルスクリプトの中にSASプログラムを記述したり、SASの出力を他のコマンドの標準入力として渡すことが可能となります。
次の例では、OPTIONSプロシジャと%PUTステートメントの出力から任意の文字列を検索するシェルスクリプトを作成し、実行しています。

  $ cat stdio.sh
  #!/bin/sh
  (
  /usr/bin/sas -stdio 2>&1 << SRC
  proc options;
  run;
  %put _automatic_;
  SRC
  ) | \
  grep $1
  $ ./stdio.sh TIME
  NOFULLSTIMER システムパフォーマンス統計量のログ出力を無効にします
  STIMEFMT=M   STIMER出力で用いる出力形式を指定します
  STIMER       システムパフォーマンス統計量のログ出力を有効にします
  AUTOMATIC SYSTIME 12:34