投稿

ラベル(SAS環境設定)が付いた投稿を表示しています

SASの環境設定ファイル ( Configファイル ) の格納場所を知りたい - システムオプション config

イメージ
SASの環境設定ファイルは、使用するWORK領域のパス、メモリの最大サイズ、リスト・ログの出力場所、マルチバイト DBCS への対応、デフォルトのエンコーディング、実行するSASプログラムの実行前に動かすSASプログラムの指定、などなど、様々な設定をすることができます。そんな環境設定ファイルですが、けっこうディレクトリの深い場所にあって、SASのインストール場所にも依存しますし、OSによっても違います。見つけるのはなかなか面倒なファイルです。 そんな環境設定ファイルの格納場所ですが、システムオプションconfig にて設定されています。オプションの値をログに出力する proc options を用いることで簡単に見つけることが出来ます。 58 proc options option=config value; 59 run; SAS (R) PROPRIETARY SOFTWARE RELEASE 9.4 TS1M2 SAS オプション CONFIG のオプション値の情報 値 : ( /opt/sasinside/SASHome/SASFoundation/9.4/sasv9.cfg /opt/sasinside/SASHome/SASFoundation/9.4/nls/u8/sasv9.cfg /opt/sasinside/SASHome/SASFoundation/9.4/sasv9_local.cfg /opt/sasinside/SASConfig/Lev1/SASApp/sasv9.cfg /opt/sasinside/SASConfig/Lev1/SASApp/sasv9_usermods.cfg /opt/sasinside/SASConfig/Lev1/SASApp/WorkspaceServer/sasv9.cfg /opt/sasinside/SASConfig/Lev1/SASApp/WorkspaceServer/sasv9_usermods.cfg ) スコープ : SAS Session オプション値の設定方法 : Internal NOTE: PROCEDURE OPTIONS処理(合計処理時間): 処理...

SASプログラムの実行前後で、別のSASプログラム、または任意のステートメントを動かしたい - システムオプション autoexec, initstmt, termstmt

イメージ
SASプログラムの実行前や実行後に必ず実行したいプログラムとかってあるかと思います。すべてのプログラムまたは一部のプログラムにおいて、WORK領域の場所を統一したい、オプション LOG を使ってデフォルトのパスを統一したい、options msglevel=i ; は全てのプログラムで実行させたい、などなど。それを実現するためのシステムオプションのお話です。 SASプログラム実行前に実行するSASプログラムを指定する システムオプション autoexec システムオプション autoexec は、SASプログラムを指定します。指定されたSASプログラムは、SASプログラムを実行する前に、毎度実行されます。 SASプログラムの実行前に、SASプログラム /TEST/BEFORE.sas を実行するには、例えば以下のように書きます。 SASバッチモード autoexecの指定例 sas /TEST/SAMPLE.sas -autoexec /TEST/BEFORE.sas SAS環境設定ファイル autoexecの指定例 環境設定ファイルに下記の内容を追記/修正してください。 -autoexec /TEST/BEFORE.sas SAS雲丹(SAS University Edition) autoexecの指定例 SAS雲丹(SAS University Edition) では、autoexecは、以下のように設定します。画面右上のアイコンのメニューから、「Autoexecファイルの編集」を押します。 表示されたウィンドウの中に実行したいコードを入力して保存します。 これで、記載したコードが、SASプログラム実行される前に実行されるようになります。書いたコードは、フォルダの直下に autoexec.sas として保存され、直接編集することも出来ます。 SASプログラムの実行前後で、ステートメントを実行する システムオプション initstmt, termstmt ※システムオプション initstmt, termstmt は、SASの環境によっては使用できないようなので、ご注意ください。 autoexecは、SASプログラムを実行するものでしたが、これらのオプションは、任...

SASをマルチプロセスで実行したい - OSコマンドを非同期/同期で実行する systaskステートメント、実行が終るまで処理を止める waitforステートメント

今回は、(現時点では) SAS雲丹(SAS University Edition) で実行できないステートメントのお話。 SAS9.4では、DS2 でマルチスレッドができるみたいですけど、SAS9.3以前で似たようなものができないものか。proc sortとか一部のプロシージャはマルチで動くようになったけど、それだけでは足りない。SPDエンジンは使える環境ではない。どうしたものか。 そんなこんなで探して見つけたのが、systaskステートメントです。systaskステートメントは、OSのコマンドを実行するためのステートメントです。OSのコマンドを実行するには、filenameステートメントのpipe、Xステートメント、call systemルーチンなどがありますが、非同期では実行できません。systaskステートメントならば非同期または同期のどちらかを指定して実行することが出来ます。(同期 = 実行終了を待って後続の処理を実行、 非同期 = 実行終了待たずに後続の処理を実行) まず、どのように書くのかを見てみましょう。 systask command "pwd" taskname="TASK_1" status=STATUS_1 ; 上記の例では、現在のディレクトリの位置を表示する pwd コマンドを実行しています。 taskname= で指定したのがタスク名です。指定したタスクが実行終るまで待つ、指定したタスクを kill する、といったときにタスク名を使います。 status= ではコマンドの出力結果が、指定したマクロ変数に格納されます。OSやらコマンドにもよると思いますが、例えば、正常終了ならば 0 、異常終了ならば 1 が格納される、といった感じです。 また、コマンドの標準出力の結果は、ログに出力されます。 さて、systaskステートメントでどうやってマルチで動かすかというと、SASのバッチ実行を使います。SASバッチを使うことで、SASの中で、SASを非同期で実行させます。 systask command "sas sample1.sas" taskname="TASK_1" status=STATUS_1 ; systask com...