前のページ|次のページ

SASセッションのエンコーディングの動作

SASリリース別のエンコーディングサポート

Base SASファイルには、ファイルを作成したSASのバージョンに基づいてエンコーディングをサポートする3つのカテゴリがあります。
  • SAS 9で作成されたデータセットには、ファイルのディスクリプタ部分を使用してエンコーディング属性が自動的に指定されます。SAS 9では、デフォルトで、DBCSがDBCSTYPE値を認識してエンコーディング値に変換し、その値をフィールドのディスクリプタ部分に指定します。
  • SAS 7およびSAS 8で作成されるデータセットには、ファイルで指定されるエンコーディング値がありません。SAS 7およびSAS 8のデータセットは、動作環境のSASセッションエンコーディングで作成されたものと見なされます。ただし、ファイルのディスクリプタ部分はエンコーディング値をサポートします。SAS 9セッションでSAS 7またはSAS 8のファイルを置き換えたり更新したりすると、SASはデフォルトで、現在のセッションエンコーディングをファイルのディスクリプタ部分に指定します。SAS 8の場合、DBCSには、エンコーディングフィールドではなくDBCSTYPEフィールドがあります。
  • SAS 6で作成されたデータセットには、ファイルに関連付けられたエンコーディング値がありません。エンコーディング値はファイルに指定できません。

出力処理

SAS 9でデータセットを作成する場合、エンコーディングは次のように決定されます。
  • 新しい出力ファイルを作成する場合、データは、現在のセッションエンコーディングを使用してそのファイルに書き込まれます。
  • 現在のセッションとは異なるデータ表記を指定するOUTREP=オプションを使用して新しい出力ファイルを作成する場合、データは、OUTREP=値によって指定されるオペレーティングシステムでのデフォルトセッションエンコーディングを使用してそのファイルに書き込まれます。詳細については、OUTREP=データセットオプションを参照してください。
  • 新しい出力ファイルで既存のファイルを置き換える場合、新しいファイルは既存のファイルのエンコーディングを継承します。 別の動作環境にある既存のファイルを置き換える出力処理の場合、または既存のファイルにエンコーディングが指定されていない場合は、現在のセッションエンコーディングが使用されます。

入力処理

SAS 9での入力(読み込み)処理におけるエンコーディング動作を次に示します。
  • ほとんどのユーザーは、入力ファイルにエンコーディングを指定しない、デフォルトの動作を選びます。
  • セッションエンコーディングとファイルで指定されたエンコーディングの間に互換性がない場合、データはセッションエンコーディングにトランスコードされます。たとえば、現在のセッションエンコーディングがASCIIで、ファイルで指定されたエンコーディングがEBCDICの場合、SASはEBCDICからASCIIにデータをトランスコードします。
  • ファイルにエンコーディングが指定されていない場合、SASは、ファイルのデータ表記が現在のセッションと異なる場合にのみ、データをトランスコードします。

外部ファイルの読み込みと書き込み

SASは、現在のセッションエンコーディングを使用して外部ファイルの読み込みと書き込みを行います。SASでは、外部ファイルのエンコーディングがセッションエンコーディングと同じであると想定します。たとえば、外部ファイルを読み込んで新しいSASデータセットを作成する場合、SASは、外部ファイルのエンコーディングと現在のセッションのエンコーディングが同じであると想定します。エンコーディングが同じでない場合、外部データは、新しいSASデータセットに誤って書き込まれる可能性があります。適切なENCODINGオプションを指定する必要があります。次の例では、Shift-JISエンコーディングを指定します。
filename in 'external-file'
 encoding='Shift-JIS';
data mylib.contacts;
infile in;
length name $ 30 first $ 30 street $ 60 zip $ 10 city $ 30;
input name first street zip city;
run;
入出力処理を実行するSASステートメントの構文の詳細については、SASデータのトランスコーディングを指定するSASオプションを参照してください。
前のページ|次のページ|ページの先頭へ