Unicode データ

FM/Db2 エディターは、Unicode で保管された文字データを、EBCDIC または ASCII で保管されたデータとは異なる方法で処理します。ここで、違いを簡単に説明します。

通常 FM/Db2 は、Db2® から文字データを、FM/Db2 プランの CCSID (通常、CCSID 37) への自動変換を使用して取得します。これは US EBCDIC ですが、その他の EBCDIC CCSID も使用される場合があります。

FM/Db2 が Unicode で (Db2® 内に) 保管されている文字データを取得する場合、この自動データ変換は実行されません。FM/Db2 エディターは、ネイティブの Unicode フォーマットで文字データを内部で処理します。つまり、端末に表示される前に、データは Unicode から端末の CCSID に変換されます。このため、Unicode 文字が端末の CCSID に対応するコード・ポイントを持たない場合、変換エラーが生じる場合があります。変換できない文字はすべて、変換されなかった文字を示すピリオドとして画面に表示されます。端末に表示された (そしておそらく変更された) データが処理されるときに、Db2® に実行依頼する前に、データは端末の CCSID から Unicode に変換されます。Unicode には、CCSID で一般に使用されるすべての文字のコード・ポイントが含まれているため、この変換は常に正常に行われます。

表示されたデータに、変換されなかった Unicode 文字を示すピリオドが含まれ、その列のデータが上書きで変更されると、データが破損する可能性があります。変更されたデータ内のすべてのピリオドは、Unicode での同等のものに変換されます。このため、ピリオドが、変換されなかった Unicode 文字を表している場合、変更によってその文字は破損されます。16 進モードで文字データが表示されている場合、その 16 進文字は通常、端末の CCSID で表示されている文字のエンコードを表しています。例えば、'A' は EBCDIC では 'C1'x によって表されます。文字データが Unicode でエンコードされた列を対象にしたものである場合、16 進文字は、端末の CCSID で表示されている文字のエンコードではなく、ネイティブの Unicode データを表します。例えば、Unicode データが表示されている場合、'A' は '41'x によって表されます。

16 進表示をオンにして (HEX ON コマンド) 16 進文字を直接上書きすることで、Unicode で保管された列にあるデータを変更することもできます。これを行う場合は、すべての文字に対して端末の CCSID 表記ではなく、Unicode 表記を使用する必要があります。

ターゲット列が、Db2® 内に Unicode で保管された文字データであると想定すると、FIND、CHANGE、および EXCLUDE コマンドは以下のように作動します。
  • 'ABC' のようなストリングは、何らかの検索または変更が行われる前に、Unicode に変換されます。
  • '414243'x のような 16 進数ストリングは、何らかの検索または変更が行われる前に、Unicode に変換されません。したがって、ターゲット列に Unicode データが含まれる場合、F 'ABC'F '414243'x は同等になりますが、ターゲット列に EBCDIC データが含まれる場合、同等にはなりません。