The Nameless City

何故か製薬やSAS関連のブログ、の予定。

バッチ実行とかを深く知りたいなら・・・・・・

Windows固有のシステムオプション
https://documentation.sas.com/doc/ja/pgmsascdc/9.4_3.5/hostwin/p06aurwhmyt63on1cg067ogdnnfe.htm


ここの中にprintオプションとかの説明があります。まあ、コメントプロンプトからのバッチ実行については、基本的に環境依存だと思ってもらえれば。
環境変数を実はSASプログラムで参照出来るとかあるんですが、そんなものは知らなくても人生なんとでもなる。


死ぬほどオプションをなぶり倒した後、困ったらSASUSERライブラリに示されてる内容を消したら、SASHELPの中からコピーされて復活出来るので、幾らでもなぶり倒して下さいな。


バッチ実行と関係は直接はないのですが。


SASUSERライブラリは実はSASプロセスを起動するサーバに、実行ユーザーごとに一つという制限があります。その為、バッチだろうがDMSだろうが同時実行をしてしまうとよく「SASUSERライブラリが~」というWARNINGが出ますが、configファイルで別のフォルダにする事でその辺りの問題を回避する事が出来ます。
ちなみにrsasuserオプションというのでここを読み取り専用にしてしまうという方法はありますが、これ主にSASソリューション用です。自分で違うところにSASUSERライブラリを配置する形でカスタマイズすると幸せになれるとは思います。ちなみに、本物をSASHomeから頑張って読み込む必要はなく、「-config "大本のファイル名"」の内容をつけて、カスタマイズしたい内容のオプションを書くので簡単につくれます(昔は無かった)。


バッチ実行時にコマンドプロンプトからSASに読み込める文字数に制限がありますが、今は制限どこら辺かはわかりません。が、Windows環境でのDOSプロンプトとかを使っている限り、8191文字が限界にはなるので注意は必要です。DOS側の制限があります。多分DDEも同じ感じで制限がかかります。が、まあそもそも無制限というものは存在しないと思っていただければ。


AUTOEXECもシステムオプションで設定されるもので、ファイル名指定されている場合に探し方がちょっと変わってます。
https://documentation.sas.com/doc/ja/pgmsascdc/9.4_3.5/hostwin/p0bmj7wjme32ayn1h4wim7trkhp6.htm#p0ceb6r7y2mkdsn1lc2ice1mx1dc
実は環境変数PATHが通ってるところも探しにいきます。この中で見つかったものを一回だけ読みます(それ以降の場所であっても読み込みしません)。正直DMS使ってるような環境では使い勝手は良くないです。ちなみに、バッチだけの機能ではありません。SAS Studio使ってる環境で使ってたりしますが、説明がいくらか必要で、SAS Studioの裏でSASがサーバ上に起動しており、そのカレントディレクトリが/home/、なのでここに保存されたautoexec.sasが動きます。
余談ですが、autoexecというのは結構古くから伝統である、「起動時に一回実行されるプログラム」の名前として、SAS以外でもいろんなところで同じ名称で使われてます。私が最初に知ったのは、Lotus1-2-3。


SASのシステムオプションは、結構たくさんあるのですが、大半「デフォルトそうなってんだーへえ」で終わってしまうのですが、このあたりを深くやってくと、自然OS知識とかが必要になってきて、それはそれで楽しいのですが、
時間が莫大に吸い取られますので気をつけましょう。いやまあ独身ならいいかもですが。