データセット(.sas7bdatファイル)の文字コードを取得したい - SAS
SAS環境の違いにより、SASのデータセットの文字コードが混在することがまれによくあると思います。 データセットの文字コードがSAS環境に合っていないと、文字化けが起きてしまいますし、パフォーマンスが低下してしまうので、きちんと環境に合わせる必要があります。 文字コード変換をしなくてはいけないデータセットってどれだろうと一括で調べるための準備として、データセットの文字コードを取得してマクロ変数に格納できるようになるまでが今回のお話です。 ちなみに、文字コードがSAS環境の文字コード(セッションエンコーディング)と合っていないと、下記のようなログメッセージが出て怒られます。 59 data TEST(encoding=sjis) ; 60 A = 1 ; 61 run ; INFO: データファイルWORK.TEST.DATAに他のホストにネイティブな形式が使用されているか、またはエンコーデ ィングがセッションエンコーディングと一致していません。クロス環境データアクセスが使用され るため、追加のCPUリソースが必要となり、パフォーマンスが低下します。 NOTE: データセットWORK.TESTは1オブザベーション、1変数です。 NOTE: DATAステートメント処理(合計処理時間): 処理時間 0.05 秒 CPU時間 0.00 秒 さて、データセットの文字コード取得は、proc contentsを用いることで取得できます。しかし、リスト出力のままでは、出力結果をSASプログラム上で扱うことが出来ません。 そこで登場しますのが、ods output です。 ods output により、リスト出力した結果をデータセットとして取得することができます。 data TEST1 ; A = 1 ; run ; ods output attributes=DATASET_ENCODING ; proc contents data=TEST1 ; run ; ods output close ; proc contents で指定したデータセットの文字コードが格納されている属性情報 ...