メインフレーム文字形式
トランザクション インテグレーター (TI) プロジェクトでは、データをメインフレームに送信するときに TI ランタイム環境で作成されるメインフレーム文字形式を指定できます。 TI では、次の 2 つのメインフレーム文字形式がサポートされています。
PIC X(n) COBOL、または RPG A
PIC G(n) COBOL、または RPG G
TI Project で文字列パラメーター、フィールド、または列を作成すると、PIC X(n) または RPG A データ型の形式が自動的に選択されます。
必要に応じて、 Properties コマンドを使用してメインフレームの文字形式を変更できます。
文字列に PIC X または RPG A 形式を選択した場合、TI ランタイム環境では、この文字列が拡張バイナリ コード 10 進数交換コード (EBCDIC) 文字列または混合文字列のいずれかに変換されます。 具体的には、TI プロジェクトで定義した TI コンポーネントが EBCDIC コード ページを使用してリモート環境 (RE) に割り当てられている場合、TI ランタイム環境は PIC X または RPG A 形式の文字列を EBCDIC 文字列に変換します。 TI コンポーネントの RE が 2 バイト文字セット (DBCS) コード・ページを識別する場合、TI ランタイム環境は、PIC X 形式のストリングを混合ストリングとして変換します (RPG ではサポートされていません)。
文字列に PIC G または RPG G 形式を選択すると、TI ランタイム環境では常に文字列が DBCS 文字列に変換されます。 したがって、PIC G または RPG G 形式のストリングを使用する TI コンポーネントは、DBCS コード・ページを持つ RE に割り当てる必要があります。
PIC G または RPG G 形式の文字列を使用する TI コンポーネントが EBCDIC コード ページを持つ RE に割り当てられている場合、TI ランタイム環境は、PIC G または RPG G 形式との間で文字列を変換しようとしたときに変換エラーを報告します。 TI ランタイム環境では、この変換の問題を説明するエラー メッセージが Windows イベント ログに表示され、呼び出し元のクライアント アプリケーションにエラーが返されます。
次の表は、文字列形式とコード ページの選択によって、TI ランタイム環境によって実行される文字変換の種類を制御する方法をまとめたものです。
文字列の形式 | EBCDIC コード ページ | DBCS コード ページ |
---|---|---|
PIC X または RPG A | EBCDIC 文字列 | 混在した文字列 |
PIC G または RPG G | TI ランタイム環境では、変換エラーが報告されます。 | DBCS 文字列 |
文字列ディメンション値
文字列の次元 (PIC X(n) または RPG A(n) の n 部分と PIC G(n) または RPG G(n) 形式の n 部分) の意味は、使用中の文字形式に基づいています。 文字列のディメンションは、トランザクション インテグレーター (TI) プロジェクトの COBOL 定義 プロパティ ページで指定します。
PIC G または RPG G 形式の文字列のディメンション値は、文字列のメインフレーム表現で使用される 2 バイト文字の数を示します。 PIC G または RPG G 形式の文字列を変換する場合、SO と SI の文字ペアは追加されません。
PIC X または RPG A 形式の文字列のディメンション値は、メインフレーム表現で使用されるバイト数を示します。 PIC X または RPG A 形式のストリングに入れるか、または PIC X または RPG A から取り出すことができる文字数は、 の数によって異なります。
2 バイト文字セット (DBCS) 文字。それぞれ 2 バイトのストレージが必要です。
SO と SI の文字ペアが必要です。 各 2 バイトペアは、DBCS 文字の連続する各ストリームをカプセル化する必要があります。
TI を使用する開発者は、TI Project でディメンション値を指定する場合に、混ざり合った文字列のサイズのこの変動を考慮する必要があります。
PIC X または RPG A 形式の EBCDIC コード・ページを使用して変換されたストリングのバイト数は、ストリング内に DBCS 文字がないため、文字数と同じです。
ただし、PIC X または RPG A 形式の DBCS コード・ページを使用して変換されたストリングの場合、特定のバイト数に配置できる実際の文字数は異なります。 たとえば、UNICODE との間の変換で DBCS 文字を使用する必要がない場合 (つまり、メインフレーム文字列では SO 文字と SI 文字が使用されません)、各文字は 1 バイトを占めます。 ただし、DBCS 文字がメインフレーム文字列内に出現する場合は、SO と SI の文字ペアが必要です。
インポート ウィザードで文字列を定義する方法
トランザクション インテグレーター (TI) プロジェクトのインポート ウィザードを使用してホスト定義をインポートして新しいメソッドとレコードセットを作成すると、インポートされたホスト定義に基づいてメインフレーム文字形式が選択されます。 次の表は、ウィザードがさまざまな COBOL 宣言を文字列にマップする方法を示しています。
COBOL 型 | 作成された文字列の種類 |
---|---|
PIC X(n) または RPG A | サイズ n バイトの文字列 |
PIC G(n) または RPG G | サイズ n 文字の文字列 |