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さん

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

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
Discussion stats
  • 5 replies
  • 3341 views
  • 5 likes
  • 4 in conversation