次の例は、国別 (UTF-16) データ項目との間で変換するための NATIONAL-OF および DISPLAY-OF 組み込み関数ならびに MOVE ステートメントを示しています。 また、複数のコード・ページでエンコードされたストリングに対して操作を行うときの明示的変換の必要性も示しています。
* . . .
01 Data-in-Unicode pic N(100) usage national.
01 Data-in-Greek pic X(100).
01 other-data-in-US-English pic X(12) value “PRICE in $ =”.
* . . .
Read Greek-file into Data-in-Greek
Move function National-of(Data-in-Greek, “IBM-1253”)
to Data-in-Unicode
* . . . process Data-in-Unicode here . . .
Move function Display-of(Data-in-Unicode, “IBM-1253”)
to Data-in-Greek
Write Greek-record from Data-in-Greek
上記の例は、入力コード・ページが指定されているので正しく機能します。 Data-in-Greek は IBM-1253 (ASCII ギリシャ語) で表されるデータとして変換されます。 しかし、以下のステートメントの場合、項目内の文字すべてが、たまたまギリシャ語と英語の両方のコード・ページで表現が同じであるものでなければ、変換が誤ったものになります。
Move Data-in-Greek to Data-in-Unicode
有効なロケールを en_US.IBM-1252 とした場合、Data-in-Greek は、上記の MOVE ステートメントにより、 コード・ページ IBM-1252 から UTF-16LE への変換に基づいて Unicode に変換されます。この変換は、Data-in-Greek が IBM-1253 にエンコードされるため、期待される結果になりません。
ロケールを el_GR.IBM-1253 に設定した場合 (つまり、プログラムが ASCII データをギリシャ語で処理する場合) は、上記と同じ例を次のようにしてコーディングすることができます。
* . . .
01 Data-in-Unicode pic N(100) usage national.
01 Data-in-Greek pic X(100).
* . . .
Read Greek-file into Data-in-Greek
* . . . process Data-in-Greek here ...
* . . . or do the following (if need to process data in Unicode):
Move Data-in-Greek to Data-in-Unicode
* . . . process Data-in-Unicode
Move function Display-of(Data-in-Unicode) to Data-in-Greek
Write Greek-record from Data-in-Greek
関連タスク
ロケールの設定