IBM i 上のユニコード
シナリオ 4. 論理ファイルにデータを書き込む場合 v EMPNO は、297 から元の CCSID に変換される。
v NAME は変換されず、ユニコード・データのまま。
v DESCR1 は変換されず、ユニコード・データのまま。
v DESCR2 は、297 から元の CCSID に変換される。
シナリオ 3. 論理ファイルからデータを読み取る場合 v EMPNO は、元の CCSID から 297 に変換される。
v NAME は、ユニコード・データから CCSID 297 の文字に変換される。
v DESCR1 は、ユニコード・データから CCSID 297 の文字に変換される。
v DESCR2 は、文字データからユニコード・データに変換され、ジョブの CCSID には変換されません。
シナリオ 4. 論理ファイルにデータを書き込む場合 v EMPNO は、297 から元の CCSID に変換される。
v NAME は、297 からユニコード・データに変換される。
v DESCR1 は、297 からユニコード・データに変換される。
v DESCR2 は、ユニコードから物理ファイル内の元の CCSID に変換される。
シナリオ 5. ジョブが 65535 であった場合、上記のフィールドの変換は次のようなります。
v EMPNO は変換されない。
v NAME は、37 からユニコード・データに変換される。
v DESCR1 は、37 からユニコード・データに変換される。
v DESCR2 は、ユニコードから物理ファイル内の元の CCSID に変換される。
関連概念:
150ページの『オブジェクト・レベルのコード化文字セット ID 65535』
CCSID 65535 は、メッセージ・ファイルおよびメッセージ待ち行列のためのデフォルトのオブジェクト・
レベル CCSID です。
DB2 for i:
DB2 for i アプリケーションを使用する場合、ユニコードと一部のコマンドに関するいくつかの制約事項に
注意する必要があります。
v ユニコード・フィールドと文字 /IGC/ グラフィック・フィールドを比較すると、リテラルとホスト変数 を比較したときと同様に、暗黙の変換が行われます。
v ユニコード・フィールドがある物理ファイルと論理ファイルの CCSID は、「物理ファイル変更」
(CHGPF) コマンドでは変更できません。
v ユニコード CCSID は、CHGPF コマンドには使用できません。
v FMTOPT(*MAP) を指定した「ファイル・コピー」(CPYF) コマンドおよび「Query ファイルからのコピ ー」(CPYFRMQRYF) コマンドは、次の場合を除いて、ユニコード・グラフィックス・フィールド間での コピーには使用できません。
– 対応フィールドがユニコード・フィールドか DBCS グラフィック・フィールドの場合。
– 対応フィールドが、文字、DBCS 混用、DBCS 択一、または DBCS 専用のフィールドで CCSID が 65535 以外の場合。
v 「ファイル・コピー」(CPYF) コマンドでは、SBCS 文字、DBCS 混用、DBCS 専用、DBCS 択一、お よび DBCS グラフィックなどのフィールドをユニコード・グラフィック・フィールドとの間でコピーで きます。ユニコードのサポートは、FROMKEY、TOKEY、INCCHAR、および INCREL パラメーターで 制限があります。
関連概念:
150ページの『オブジェクト・レベルのコード化文字セット ID 65535』
CCSID 65535 は、メッセージ・ファイルおよびメッセージ待ち行列のためのデフォルトのオブジェクト・
レベル CCSID です。
関連資料:
「物理ファイル変更」(CHGPF) コマンド
「ファイル・コピー」(CPYF) コマンド
「Query ファイルからのコピー」(CPYFRMQRYF) コマンド SQL テーブル:
GRAPHIC および VARGRAPHIC のデータ・タイプにユニコード CCSID を指定すると、SQL はユニコー ド・グラフィック列を含むテーブルをサポートします。
次の SQL の例では、テーブル U_TABLE を作成します。 U_TABLE には、1 つの EMPNO という文字 列と、2 つのユニコード・グラフィック列があります。NAME は固定長のユニコード・グラフィック列 で、DESCRIPTION は可変長のユニコード・グラフィック列です。 EMPNO フィールドには数値のみが含 まれ、ユニコードのサポートは不要であるため、このフィールドは文字フィールドとしました。NAME と DESCRIPTION の 2 つのフィールドはともにユニコード・フィールドです。 この 2 つのフィールドは、
複数の EBCDIC コード・ページのデータを含みます。
CREATE TABLE U_TABLE (EMPNO CHAR(6) NOT NULL, NAME GRAPHIC(30) CCSID 1200,
DESCRIPTION VARGRAPHIC(500) CCSID 1200) データの挿入
SBCS 文字、混合文字、および DBCS グラフィック・データは、SQL INSERT ステートメントを使用し て、ユニコード・グラフィックの列に挿入できます。 DB2 for i SQL は、データをユニコード・グラフィ
ック・データに変換します。SQL プログラムでは、DECLARE VARIABLE ステートメントを使用して、
ユニコード CCSID をグラフィック・ホスト変数に付加できます。
次の SQL の例では、NAME および DESCRIPTION の列について文字データをユニコード・グラフィッ ク・データに変換し、U_TABLE に行を挿入します。
INSERT INTO U_TABLE VALUES(’000001’,’John Doe’,’Engineer’) ユニコード・データの選択
ユニコード・グラフィック・データの暗黙的な変換は、FETCH INTO または SELECT INTO、および CALL に対してサポートされています。
次の例では、EMPNO 列が文字データとして empno_hv に戻されています。NAME 列は、 name_hv がユ ニコード変数なので、ユニコード・グラフィック・データとして、name_hv に戻されます。文字、混合文 字、または DBCS グラフィックには変換されません。
...
char empno_hv[7];
wchar_t name_hv[31];
EXEC SQL DECLARE :name_hv VARIABLE CCSID 13488;
...
EXEC SQL SELECT EMPNO, NAME INTO :empno_hv, :name_hv .FROM U_TABLE;
...
ユニコード・グラフィック・データを EBCDIC データとして戻すには、上記の例を変更して、ユニコー ド・データを文字データとして戻します。EMPNO と NAME は、ジョブの CCSID に戻されます。
...
char empno_hv[7];
char name_hv[31];
...
EXEC SQL SELECT EMPNO, NAME INTO :empno_hv, :name_hv FROM U_TABLE;
...
これで、選択するときに、ユニコード・グラフィック・データと文字または DBCS グラフィック・データ を比較して、暗黙的な変換が行われます。
次の例では、文字ストリングの 'John Doe' をユニコード・グラフィックに変換し、次に 'John Doe' の NAME 列の行を選択します。
EXEC SQL DECLARE C1 CURSOR FOR SELECT *
FROM U_TABLE
WHERE NAME = ’John Doe’;
SQL の参照情報には、ユニコード・グラフィック・データで SQL を使用する場合の追加情報が記載され ています。
関連概念:
SQL 解説書
QUERY ファイルとツール:
「Query ファイル・オープン」(OPNQRYF) コマンドは、ユニコード・データを取り出したり、その選択を 実行したりすることができます。IBM Query for i、DB2 Query Manager、および IBM i DB2 Query 管理 機能はいずれも、ユニコードをサポートしています。
「Query ファイル・オープン」(OPNQRYF) コマンドについての考慮事項
次に示された「Query ファイル・オープン」(OPNQRYF) コマンドを使用すると、ユニコード・データの読 み取りや選択が可能です。MAPFLD パラメーターを使用すると、データをユニコードにマップしたり、ユ ニコードのデータをマップできます。
OPNQRYF FILE(U_TABLE) QRYSLT(’NAME=MAPNAME’)
MAPFLD((MAPNAME ’John Doe’ *GRAPHIC *N *N 1200)) 対話式照会ツールについての考慮事項
IBM Query for i、DB2 Query Manager、および IBM i DB2 Query 管理機能はいずれも、ユニコードをサ ポートしています。ユニコード・データは、文字または混合方式に暗黙的に変換して、レポート上に表示ま たは印刷できます。
関連資料:
「QUERY ファイル・オープン」(OPNQRYF) コマンド 関連情報:
「Query Manager Use」の PDF
「Query Management Programming」の PDF データ記述仕様:
データ記述仕様 (DDS) では、CCSID ファイル・レベル、レコード・レベル、またはフィールド・レベル のキーワードを使用して、G タイプのフィールドが DBCS グラフィック・データではなくユニコード・デ ータをサポートするように指定します。
関連概念:
物理ファイルと論理ファイルの CCSID (コード化文字セット識別コード) キーワード 表示装置ファイルとパネル・グループ:
現在 5250 のデータ・ストリームをサポートするディスプレイ装置では、ユニコード・データはサポートさ れていません。このため、入出力操作のときには、ユニコード・データと EBCDIC の間の変換が必要にな ります。
出力では、ユニコード・データは、装置の CCSID に変換されます。入力では、データは、装置の CCSID からユニコードの CCSID に変換されます。
装置構成から判別される装置の CCSID によって、ユニコード・データが何に変換されるかが決まるため、
変換されたデータはほかの装置では表示が異なります。例えば、SBCS にマップされるユニコード文字は、
グラフィック DBCS 対応装置では、DBCS 置換文字として表示されます。DBCS または SBCS 対応の装 置では、文字は SBCS 文字として表示されます。DBCS 文字にマップされるユニコード文字は、グラフィ
ック DBCS 対応装置ではグラフィック DBCS 文字として表示されます。DBCS 装置では、DBCS 文字は 括弧で囲まれます (シフトアウトとシフトインに囲まれます)。SBCS 置換文字は、SBCS 装置で表示され ます。
すべてのユニコード対応フィールドは、画面に書き込む前に、出力バッファー内で初期化することを推奨し ます。デフォルトの初期設定を実行すると、予期せぬ結果が生じることがあります。
関連概念:
データベース・ファイルの Unicode についての考慮事項 ユーザー・インターフェース・マネージャーのユニコード変数:
次の例は、ユーザー・インターフェース・マネージャー (UIM) におけるユニコード変数の定義方法を示し ています。
1 :class name=example basetype=’graphic 6 13488’ width=10, 2
3 :class name=example2 basetype=’graphic 10 13488’ width=20.
4
1 行目は、10 バイトの長さのフィールドに表示する、6 個のユニコード文字を含む変数のクラスを定義し ています。
3 行目は、20 バイトの長さのフィールドに表示する、10 個のユニコード文字を含む変数のクラスを定義し ています。
関連資料:
DDS の概念 関連情報:
「Application Display Programming」の PDF