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

 

PROC DS2で質問が御座います。

 

libname mylib "適当なライブラリ" access=readonly;
options missing=' ';

proc ds2;
data mylib.out1 (overwrite=yes);

dcl double a;
dcl char(10) b;

method run();
a = .;
b = cats(a);
end;

enddata;
run;
quit;

 

 


質問内容
1. readonlyのライブラリに上書き保存が出来てしまう
2. missingシステムオプションが効かない(文字列変換時にドットになってしまう)

 

これらはds2では現状、制御不可でしょうか?

(私の使用している環境はSAS Studioのバージョン9.4M6ですが、他の環境や以前のバージョンでも起きていた現象です)


どうぞ、よろしくお願いいたします。

1 ACCEPTED SOLUTION

Accepted Solutions
yu_sas
SAS Employee

1番ですが、結論から言えばDS2プロシジャに反映させることはできません。

 

実はDS2プロシジャはDATAステップや他のプロシジャと異なり、定義されているライブラリ情報から

接続情報を取得しデータにアクセスしています。この時利用される情報は、BASE(V9)エンジンの場合

物理パスのみで、他のオプションは無視されてしまいます。メッセージレベルを上げてみると、ログに

接続情報が出力され、この点が確認できます。

 

options msglevel=i;

 

ドキュメントには以下のように記載されています。

 

PROC DS2 uses libref attributes for connection information only (such as physical location). In general, the procedure does not use libref attributes that define behavior. For example, if a previously submitted LIBNAME statement for the Base SAS engine specifies that SAS data sets are to be compressed, the compression attribute is not used by the procedure.

 

 

2番目ですが、DS2プロシジャは残念ながらグローバルのシステムオプションはサポートされていないようです。

確かに、OBSやBUFSIZE、COMPRESS等も結果に影響していません。テーブルオプションに同等のオプションが

あればそれを利用頂けますが、MISSINGは残念ながらないと思われます。

 

Note: DS2 does not support Base SAS system options.

View solution in original post

2 REPLIES 2
yu_sas
SAS Employee

1番ですが、結論から言えばDS2プロシジャに反映させることはできません。

 

実はDS2プロシジャはDATAステップや他のプロシジャと異なり、定義されているライブラリ情報から

接続情報を取得しデータにアクセスしています。この時利用される情報は、BASE(V9)エンジンの場合

物理パスのみで、他のオプションは無視されてしまいます。メッセージレベルを上げてみると、ログに

接続情報が出力され、この点が確認できます。

 

options msglevel=i;

 

ドキュメントには以下のように記載されています。

 

PROC DS2 uses libref attributes for connection information only (such as physical location). In general, the procedure does not use libref attributes that define behavior. For example, if a previously submitted LIBNAME statement for the Base SAS engine specifies that SAS data sets are to be compressed, the compression attribute is not used by the procedure.

 

 

2番目ですが、DS2プロシジャは残念ながらグローバルのシステムオプションはサポートされていないようです。

確かに、OBSやBUFSIZE、COMPRESS等も結果に影響していません。テーブルオプションに同等のオプションが

あればそれを利用頂けますが、MISSINGは残念ながらないと思われます。

 

Note: DS2 does not support Base SAS system options.

amatsu
Obsidian | Level 7

yu_sas様

 

早速のご回答ありがとうございます。

どちらもリファレンスを見逃しておりました。。

 

今後の対応にも期待をしたいと思います。

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

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
  • 2 replies
  • 1052 views
  • 1 like
  • 2 in conversation