The Nameless City

何故か製薬やSAS関連のブログ、の予定。

SASonDemandという名前は、某多分シェア一番ぐらいになるEDCのSASデータセットアウトプット機能の名称とバッティングするので紛らわしいよなと思いつつ、まあどうでもいいアドバイスなど。

ill-identified.hatenablog.com
で言及されました。うん、TBやっぱあった方がいいよね、はてなブログ
まあそれはともかくとして。

半角カタカナはデータとして避けた方がよいです。

SASv8ではエラーになったり出力時にバグが発生したりしました。SAS9になっても残ってる部分はあると思います。SAS9.4ではどうなってるかまでは把握してないですが、SAS9.4ではODSの周りでデグレ起こっている可能性が(デグレではないかも知れないが、UTF-8周りでのフォントの扱いに何かしら難点がある)あるのもあって、まだ完全には対応し切れていない可能性があります。

System Optionには、起動後に変更出来ないものがある。

DBCSLANGとかは起動後には変更出来ません。利用するSASHELPとかが完全に違ってくるとかあるので。多分MEMSIZEとか、XCMDとかもです。
「OPTIONSステートメント」「SAS システムオプションウィンドウ」と記載されていない場合には、起動後の変更は無理です。
多分SASonDemandは今のSAS Integration Technologiesベースでしょうし、マルチなエンコードは想定されてないので無理です。

「Default」エンコーディングという謎。

1つは, 何らかの理由で, sas7bdat から文字コード情報が欠落しているため文字化けが起こる場合, もう1つは, 変換後の文字列のバイト数が文字変数の長さを超えてしまうため文字列の切り捨てが起こる場合である.

1つ目の, 文字コード情報が欠落している場合は, 対処が簡単で, テキストファイルのときと同様に, 文字コードを指定するオプションを使う. これには2つ方法があり, 1つは libname ステートメントに inencoding= オプションを使うことでライブラリのデータセットに一括で指定する方法で, もう1つはデータセットオプションの encoding= を使う方法がある (Technical Support, SAS(R) 9.2 National Language Support (NLS): Reference Guide).また, これらはどうやら v9 以降でしか使えないようなので注意. 具体的には, こういうようなコードになる.

SASでの文字コードの扱い方 - ill-identified diary

UTF-8環境だと「Default」、S-JISなどだと「S-JIS」と表記されてしまうSASデータセットですが、実際に存在します。
で、この何らかの理由なんですが、微妙に思い出して来たのですが、「.sas7bdat」で表現されるこのデータセット、上位互換とは言いながら、v8の時代には「エンコーディング」の情報はなかったっぽいです。
参考:
英語版SASで作成したSASデータセットを編集モードで開けない


道理でやたらあると思った。日本でのSASの普及から考えるとv6からv7をスキップしてv8.2とかだったんで、このv8.2辺りで作成されるとエンコーディング情報がないんですね。


もう一つ。XPORTファイルを作成する場合には、エンコーディング情報が同様にすっ飛びます。.sas7bdatではないですが。