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様

 

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

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

 

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

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