バージョン 4.2.5
 —  Unicode およびコードページのサポート  —

Unicode データストレージ

このドキュメントでは、次のトピックについて説明します。


Unicode データ/パラメータアクセス

次の図に、Unicode データおよびパラメータがどのようにアクセスされるかを示します。

graphics/uni-dataparm-access.png

Top of page

データベース管理システムインターフェイス

以下では次のトピックについて説明します。

Adabas データベースの Unicode データへのアクセス

Natural を使用すると、Adabas データベースのワイド文字フィールド(フォーマット W)にアクセスできます。

データ定義モジュール

Adabas ワイド文字フィールド(W)は、Natural データフォーマット U(Unicode)にマップされます。

アクセスコンフィグレーション

Natural は Adabas からデータを受け取り、共通のエンコードとして UTF-16 を使用してデータを Adabas に送ります。

このエンコードは、OPRB パラメータによって指定され、オープン要求によって Adabas に送信されます。 これはワイド文字フィールドに使用され、Adabas ユーザーセッション全体を通して適用されます。

詳細については、『プログラミングガイド』の「Adabas データベースのデータへのアクセス」の「Unicode データ」を参照してください。

DB2 データベースの Unicode データへのアクセス

Natural では、ユーザーは DB2 データベースの CHAR/WCHAR フィールドに Unicode データとしてアクセスできます。

データベース管理システムインターフェイス』ドキュメントの「Natural for DB2」も参照してください。

Top of page

Windows、UNIX、および OpenVMS プラットフォームでのワークファイルおよび出力ファイル

以下では次のトピックについて説明します。

WRITE WORK FILE

次の情報は、ステートメント WRITE WORK FILE に適用されます。 このステートメントの詳細については、『ステートメント』ドキュメントを参照してください。

コードページデータ

次のワークファイルタイプによって、コードページデータが書き込まれます。

ワークファイルタイプおよびコードページは、コンフィグレーションユーティリティで定義される必要があります。 詳細については、『コンフィグレーションユーティリティ』の「ワークファイル設定」を参照してください。

オペランド A(英数字)および U(Unicode)で定義されたすべての Natural データは、指定されたコードページに変換されます。 コードページが指定されていない場合、すべてのデータは CP パラメータで定義されたデフォルトコードページに変換されます。

注意:
ワークファイルでは、書き込まれるすべての A および U オペランドデータは、コードページフォーマットです。

U オペランドデータをこれらのワークファイルに書き込み、後でこれらのワークファイルからデータを欠落させずに読み取る必要がある場合、UTF-8 をコードページとしてコンフィグレーションユーティリティで定義する必要があります。 この場合、すべての A および U オペランドデータは、UTF-8 フォーマットで書き込まれます。 ワークファイルもコードページ UTF-8 を使用して設定されている後続の READ WORK FILE ステートメントによって、オペランド U データはデータを欠落させずに読み取られます。

注意:

  1. UTF-8 フォーマットで書き込まれたワークファイルデータは、UTF-8 をサポートするテキストエディタ(Windows プラットフォームのメモ帳など)で読み取ることができます。
  2. オペランド B(バイナリ)で定義された Natural データは、コンフィグレーションユーティリティで指定されたコードページに変換されません。 これらのデータは、Natural に保存されたときのままで書き込まれ、コードページ変換は行われません。

上記のワークファイルタイプのいずれかが指定され、ワークファイルに対してコードページ UTF-8 が定義された場合、ワークファイル属性 BOM(バイトオーダマークを書き込む)および NOBOM(バイトオーダマークを書き込まない)が有効になります。 これらの属性は、コンフィグレーションユーティリティのワークファイルカテゴリで、DEFINE WORK FILE ステートメントを使用して指定できます。 ワークファイルに対してコードページ UTF-8 が定義され、ワークファイル属性 BOM が指定された場合、UTF-8 バイトオーダマーク(16 進表示:H'EFBBBF')がワークファイルの先頭、ワークファイルデータの前に書き込まれます。

上記のワークファイルタイプ以外のワークファイルタイプがワークファイルの書き込みに使用された場合、またはワークファイルに対して UTF-8 以外のコードページが定義された場合は、ランタイム時に属性 BOM の指定は無視されます。 次の表に、ステートメント WRITE WORK FILE および READ WORK FILE の処理でのランタイム時の動作を示します。

コードページおよび属性の設定 WRITE WORK FILE READ WORK FILE

ワークファイルにコードページ UTF-8 が指定されていません(デフォルト)。

ワークファイル属性 BOM および NOBOM は有効ではありません。

UTF-8 バイトオーダマークが書き込まれていません。

UTF-8 への変換は行われません。

UTF-8 バイトオーダマークの確認は行われません。

UTF-8 からの変換は行われません。

ワークファイルにコードページ UTF-8 が指定されています。

ワークファイル属性 BOM が指定されています。

UTF-8 バイトオーダマークが書き込まれています。

A および U フィールドは UTF-8 に変換されます。

UTF-8 バイトオーダマークを確認してください。

UTF-8 バイトオーダマークが見つかった場合、そのマークはワークファイルデータから削除されます。 フィールドは UTF-8 からデフォルトコードページに変換されます。 U フィールドは UTF-8 から Natural の内部ランタイム表現である UTF-16 に変換されます。

ワークファイルにコードページ UTF-8 が指定されています。

ワークファイル属性 NOBOM(デフォルト)が指定されています。

UTF-8 バイトオーダマークが書き込まれていません。

A および U フィールドは UTF-8 に変換されます。

UTF-8 バイトオーダマークを確認してください。

UTF-8 バイトオーダマークが見つかった場合、そのマークはワークファイルデータから削除されます。 フィールドは UTF-8 からデフォルトコードページに変換されます。 U フィールドは UTF-8 から Natural の内部ランタイム表現である UTF-16 に変換されます。

バイナリデータ

次のワークファイルタイプによって、バイナリデータ(オペランドフォーマット U の UTF-16 など)が書き込まれます。

オペランド A および U で定義された Natural データは、コードページに変換されません。 これらのデータは、ワークファイルにバイナリフォーマットで書き込まれます。 U オペランドデータの場合、これは UTF-16 で行われます。

READ WORK FILE

次の情報は、ステートメント READ WORK FILE に適用されます。 このステートメントの詳細については、『ステートメント』ドキュメントを参照してください。 Natural for Windows、Natural for UNIX、および Natural for OpenVMS ドキュメントで、RECORD オプションについてリストされている制限に注意してください。

コードページデータ

次のワークファイルタイプが使用されるとき、Natural U(Unicode)オペランドに読み取られるワークファイルデータは、指定されたコードページから UTF-16 に変換されます。

A(英数字)オペランドに読み取られるデータは、必要に応じて、指定されたコードページから、パラメータ CP で定義されたデフォルトコードページに変換されます。

上記のワークファイルタイプのいずれかが指定され、ワークファイルに対してコードページ UTF-8 が定義された場合、READ WORK FILE ステートメントによって、ワークファイルで UTF-8 バイトオーダマークが自動的に確認されます。 ワークファイルの先頭で UTF-8 バイトオーダマークが見つかった場合、そのマークは削除されます。 ワークファイルから読み取られたデータは、UTF-8 からデフォルトコードページに変換されます。

データが別のワークファイルタイプから読み取られた場合、バイトオーダマークの確認は実行されず、したがってバイトオーダマークは削除されません。

ステートメント WRITE WORK FILE および READ WORK FILE の処理でのランタイム時の動作の詳細については、のセクションの表を参照してください。

バイナリデータ

次のワークファイルタイプが使用されるとき、ワークファイルデータは変換されずに Natural オペランド A および U に読み取られます。つまり、バイナリフォーマットで読み取られます。

ワークファイルタイプ Portable では、オペランドフォーマット U のデータのエンディアン変換がサポートされます。

ワークファイルタイプ転送の特別な考慮事項

オペランドフォーマット U は、一般にワークファイルタイプ転送がサポートされています。 Entire Connection によって、選択されたファイルタイプの Unicode の読み取りまたは書き込みができない場合は、ランタイムエラーメッセージが表示されます。

出力ファイル

出力ファイルの Unicode データの処理は、選択された論理デバイス(LPT1~LPT31)の出力方法によって異なり、現在は GUI(Windows のみ)または TTY です。

出力方法に関係なく、データは UTF-16 フォーマットで Natural 出力サービスに渡されます。 つまり、フォーマット A フィールドデータはすでに Unicode に変換されています。

GUI 出力方法

この Windows のみの出力方法では、データは Unicode(UTF-16)フォーマットで Windows プリンタドライバに渡されます。 これは Windows での標準のデータ出力方法であるため、このデータはドライバによって常に適切に処理されます。 したがって、この出力方法は、システムコードページに含まれない文字が使用されている場合に Windows で推奨される出力方法です。

TTY 出力方法

この出力方法では、データは、デフォルトで内部(UTF-16)フォーマットからシステムコードページに変換されます。 ただし、プリンタプロファイルを使用することによって、データが代わりに UTF-8 フォーマットに変換されるか、または任意の外部コードページに追加変換されることを指定できます。 これらの代替手段の詳細については、『コンフィグレーションユーティリティ』の「プリンタプロファイル」を参照してください。

データをシステムコードページに変換するデフォルトの動作の理由は、現在、UTF-8 フォーマットの未加工テキストデータを直接受け取ることが可能なプリンタがないことです。

Top of page

メインフレームプラットフォーム上のワークファイルと出力ファイル

以下では次のトピックについて説明します。

ワークファイル

ワークファイルの書き込みおよび読み取りを行う場合、Unicode データについて特別な考慮事項はありません。 他のすべてのデータタイプと同様に、Unicode データはそのまま書き込みおよび読み取りされ、変換は行われません。

出力ファイル

Unicode データを出力ファイルに送信する場合、1 つまたは 2 つの変換手順が発生します。

最初の手順で、出力ファイルに含まれる Unicode データは、セッションのデフォルトコードページに変換されます。 結果として、このデフォルトコードページに含まれないすべての文字は、置換文字で置き換えられます。

この変換された出力行を実際の出力アクセスメソッドに渡す前に、論理プリンタに対してコードページが指定されているかどうかが追加でチェックされます。 これは、DEFINE PRINTER ステートメントの CODEPAGE オペランドまたは PRINT パラメータの CP サブパラメータによって実行されている場合があります。 そのようなコードページが指定されている場合は、それに従って、Unicode 部分だけではなく出力行全体が 2 番目の手順で変換されます。

変換された出力行がアクセスメソッドに渡されます。つまり、出力アクセスメソッドが Unicode データを受け取ることはありません

例:

DEFINE PRINTER (1) CODEPAGE 'IBM01140' 
WRITE (1)   'HELLO'    U'WORLD'             
END                                     

Top of page