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

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

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

Discussion stats
  • 5 replies
  • 2940 views
  • 5 likes
  • 4 in conversation