英語版SASで作成したSASデータセットを編集モードで開けない

[OS] ALL
[リリース] SAS 9.1以降
[キーワード] Base, ENCODING, INENCODING, OUTENCODING

[質問]

英語版SASで作成したSASデータセットをデータセットビューを使って開き、編集モードに切り替えようとすると、下記のメッセージが出て、SASデータセットを編集することができません。
どうすれば編集できるでしょうか。


  WARNING: xxxxxxは編集モードで開けません。代わりに表示モードが使用されます。

[回答]

SAS 9.1から、SASデータセットの情報として、「エンコード」に関する情報が保持されるようになりました。CONTENTSプロシジャを使って、SASデータセットの情報を取得すると、下記の項目が出力されています。


エンコード  shift-jis  Japanese (SJIS)

現在起動しているSASのエンコード情報と、SASデータセットが保持しているエンコード情報が異なっている場合、データ破壊を防ぐためにデータセットビューを表示モードでのみ開く仕様となっています。

Windows環境でSASを利用している場合、デフォルトのエンコードは下記のようになっています。
それぞれのSASで作成されたSASデータセットも、このエンコード情報に従います。

英語版SASのデフォルトのエンコードwlatin1 Western
日本語版SASのデフォルトのエンコードshift-jis Japanese

英語版SASで作成されたSASデータセットのエンコード情報を変更するためには、 下記のいずれかの作業を行なう必要があります。

  • 別名のSASデータセットを、DATAステップなどで作成する
  • 別のSASデータライブラリに、SASデータセットをDATAステップなどで再作成する
  • ENCODINGデータセットオプションを指定して、SASデータセットを再作成する

ENCODINGデータセットオプションを指定したSASデータセットの作成例は、以下のとおりです。


  DATA sasdata.class(ENCODING=sjis) ;  /* 出力エンコードを指定 */
    SET sasdata.class ;                /* 変換したいSASデータセット */
  RUN ;

また、上記以外に、OUTENCODINGオプションを使って出力先のSASデータライブラリのエンコードを指定する方法があります。下記プログラムを参照してください。


  LIBRARY outdata "c:¥saslib" OUTENCODING=sjis ;
  DATA outdata.class ;   /* 同一名で出力するが、エンコードは変換される */
    SET outdata.class ;  /* 変換したいSASデータセット */
  RUN ;