BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
scdent
Obsidian | Level 7

amatsuさんのSAS忘備録「特定のシステムオプションをSAS起動時に戻す」という記事を参考に「全てのシステムオプションをSAS起動時に戻す」マクロを検討しています。

 

それで、optsave、optload プロシジャやSashelp.Voptionテーブルの利用可能性を検討しています。

 

SAS忘備録の記事でstartupvalueオプションがあることを知り、またoptions ステートメントで設定変更するとSashelp.Voptionのデータも変更されることを見ていて、optsaveプロシジャで現在の設定を一挙に入手できるように、もしかしたらSAS起動時の設定も一挙に入手できるのではないかと考えています。

 

そうすれば入手したデータをoptloadプロシジャで指定するだけで、「全てのシステムオプションをSAS起動時に戻す」ことができると期待しています。

 

という訳で、optsaveプロシジャで現在の設定をデータセット化するように、SAS起動時の設定をデータセット化できる方法がありましたらお教えください。 よろしくお願いします。

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
yu_sas
SAS Employee

こんにちは。

 

少し調べてみましたが、一括で起動時の変数を参照できるようなビュー等はなさそうでした。

そのため、GETOPTION関数を使うのがいいかなと思います。あとは、頻繁に初期設定を変えないなら

SASUSERライブラリのような永久ライブラリにOPTSAVEプロシジャで保存しておくのもいいかと思います。

 

簡単なサンプルを作ってみました。オプションのリストはOPTSAVEから引っ張ってきています。

DATEオプションなどはOPTSAVEプロシジャではDATEなら1、NODATEなら0のように格納されていますが

GETOPTION関数ではDATE、NODATEのまま返されますので、ここは整形が必要です。

 

proc optsave out=opt;
run;

proc sql;
create table opt2 as
select optname, case getoption(optname,'startupvalue')
      when optname then "1"  when 'NO' || optname then "0"
      else getoption(optname,'startupvalue') end as optvalue
from opt;
quit;

proc optload data=opt2;
run;

View solution in original post

5 REPLIES 5
yu_sas
SAS Employee

こんにちは。

 

少し調べてみましたが、一括で起動時の変数を参照できるようなビュー等はなさそうでした。

そのため、GETOPTION関数を使うのがいいかなと思います。あとは、頻繁に初期設定を変えないなら

SASUSERライブラリのような永久ライブラリにOPTSAVEプロシジャで保存しておくのもいいかと思います。

 

簡単なサンプルを作ってみました。オプションのリストはOPTSAVEから引っ張ってきています。

DATEオプションなどはOPTSAVEプロシジャではDATEなら1、NODATEなら0のように格納されていますが

GETOPTION関数ではDATE、NODATEのまま返されますので、ここは整形が必要です。

 

proc optsave out=opt;
run;

proc sql;
create table opt2 as
select optname, case getoption(optname,'startupvalue')
      when optname then "1"  when 'NO' || optname then "0"
      else getoption(optname,'startupvalue') end as optvalue
from opt;
quit;

proc optload data=opt2;
run;
izumi_sas
SAS Employee

SAS起動時のオプション設定を保存するのであれば、SAS起動時にSASプログラムを実行したいときに使用する、-autoexec起動オプションで起動時に実行したいSASプログラムファイルを指定し、その中でPROC OPTSAVEを使用して保存しておけば良いと思いますが、いかがでしょうか?

 

例)

SASの起動コマンドを以下のように(Windowsの場合):

 

"C:\Program Files\SASHome\SASFoundation\9.4\sas.exe" -CONFIG "C:\Program Files\SASHome\SASFoundation\9.4\nls\ja\sasv9.cfg" -autoexec "C:\autoexec.sas"

指定したautoexec.sasの中身:

proc optsave out=work.initopt;
run;

 

scdent
Obsidian | Level 7
yu_sasさん、Izumi123さん

簡潔で完璧な回答ありがとうございました!
amatsu
Obsidian | Level 7

こんにちは。

以下のサイトにも解説がされていました。

 

Jedi SAS Tricks: Reset SAS System Options

 

 

scdent
Obsidian | Level 7
amatsuさん

いつもありがとうございます!