通常、トランスコーディングは問題なく実行されますが、データに影響を与え、不満足な結果をもたらす場合があります。次に、例を示します。
-
エンコーディング同士が競合する可能性があります。つまり、2種類のエンコーディングにおいて、同じ文字に対して異なるコードポイントが使用されていたり、2つの異なる文字に対して同じコードポイントが使用されていたりする場合です。
-
1つのエンコーディングの文字が、別のエンコーディングに存在しない可能性があります。たとえば、特定のエンコーディングにはドル記号($)の文字がない場合があります。ドル記号をサポートしていないエンコーディングにデータをトランスコーディングすると、その文字が出力されなかったり、表示されなかったりします。
-
1つのエンコーディングでの1文字に対応するバイト数が、別のエンコーディングでの同じ文字に対応するバイト数と異なる可能性があります。DBCSからSBCSにトランスコーディングする場合などにみられます。したがって、トランスコーディングにより文字値が切り捨てられる可能性があります。
-
トランスコーディング中、データを元のエンコーディングにトランスコーディングして戻すことができないなどのエラーが発生した場合は、データが失われる可能性があります。つまり、更新処理のためにデータセットを開いても、オブザベーションが更新されない場合があります。ただし、入力(読み込み)処理のためにデータセットを開き、出力データセットを何も開かない場合、SASは警告を発行して表示します。処理が進行すると、PRINTプロシジャまたは他の読み込み操作を使用して、トランスコーディングされないデータを表示できます。
-
CEDAには、いくつかの処理制限があります。たとえば、CEDAは更新処理をサポートしません。
-
不正なエンコーディングについては、SAS 9セッションでコピーされたり、データの別のセッションエンコーディングと置き換えられたりする場合、SAS 7またはSAS 8データセットにスタンプできます。
不正なエンコーディングスタンプは、PROC DATASETSのMODIFYステートメントのCORRECTENCODING=オプションによって訂正できます。文字変数にバイナリデータが含まれると、トランスコーディングによってデータが破損する可能性があります。