メインフレームの文字列をスペースで埋め込む方法

トランザクション インテグレーター (TI) ランタイム環境で、null 終端文字に応じてではなく、文字列のメインフレーム表現を埋め込むスペース文字を追加するように、文字列のプロパティを定義できます。

空白文字または null 終端文字を使用するには

  1. Microsoft Visual Studio でオブジェクトを右クリックし、[ プロパティ] をクリックします。

  2. [プロパティ] ウィンドウの [ホスト データ型情報] で、[文字列区切り] をクリックします。

  3. [ スペースの埋め込み] または [ Null 終端] のいずれかを選択します。

    次の表では、指定された文字列の型に変換するときに、各区切りオプション (スペース 埋め込み または Null 終端) で何が起こるかを示します。

文字列操作の種類 文字列区切り操作の種類ごとに何が起こるか
EBCDIC 文字列への変換 スペースが埋め込まれます。 TI ランタイム環境では、PIC X 形式の文字列のすべてのバイトが入力されるまで、文字列の末尾に 1 バイトの空白文字が追加されます。
Null が終了しました。 TI ランタイム環境では、バイトの PIC X カウントに余裕がある場合、文字列の末尾に 1 つの null 文字が追加されます。
EBCDIC 文字列からの変換 スペースが埋め込まれます。 TI ランタイム環境では、文字列の末尾から 1 バイトのスペース文字が除去されます。
Null が終了しました。 TI ランタイム環境は、文字列の先頭からスキャンし、文字列内で検出された最初の null 文字で変換を停止します。
DBCS 文字列への変換 スペースが埋め込まれます。 TI ランタイム環境では、PIC G 形式の文字列内のすべての文字が入力されるまで、文字列の末尾に 2 バイトの空白文字が追加されます。
Null が終了しました。 TI ランタイム環境では、バイトの PIC G カウントに余裕がある場合、文字列の末尾に 2 バイト文字セット (DBCS) null 文字が追加されます。
DBCS 文字列からの変換 スペースが埋め込まれます。 TI ランタイム環境では、文字列の末尾から 2 バイトのスペース文字が除去されます。
Null が終了しました。 TI ランタイム環境は、文字列の先頭からスキャンし、文字列内で検出された最初の DBCS null 文字で変換を停止します。
Intermixed 文字列への変換 スペースが埋め込まれます。 TI ランタイム環境では、PIC X 形式の文字列のすべてのバイトが入力されるまで、文字列の末尾に 1 バイトの空白文字が追加されます。 UNICODE 文字列の終端文字が DBCS 文字にマップされる場合、TI ランタイム環境では、スペース文字を追加する前に SI 文字が追加されます。
Null が終了しました。 TI ランタイム環境では、PIC X カウントにスペースがある場合、文字列の末尾に 1 バイトの null 文字が追加されます。 UNICODE 文字列の終端文字が DBCS 文字にマップされる場合、TI ランタイム環境では、NULL 文字を追加する前に SI 文字が追加されます。
Intermixed 文字列からの変換 スペースが埋め込まれます。 TI ランタイム環境では、終了する 1 バイトおよび 2 バイトのスペース文字が文字列の末尾から除去されます。 スペース文字を取り除くと、TI ランタイム環境では、終端の SI 文字がスペースであるかのように処理されます。
Null が終了しました。 TI ランタイム環境は、文字列の先頭からスキャンし、検出された最初の null 文字 (いずれかの幅) で変換を停止します。

ホスト バッファーの最後の文字列に対して特別な処理が行われ、 last は変数としてフラグが設定されます。 次に例を示します。

  • スペースが埋め込まれます。 拡張バイナリ コード 10 進数交換コード (EBCDIC) 文字列に変換すると、文字列は含まれるバッファーの長さカウントで終了するため、追加のスペース文字は含められません。 EBCDIC 文字列からの変換時に、バッファーは含まれているバッファーの長さカウントによって終了したと見なされます。その後、文字列が空白のパディングを調べされます。 ホストは、重要なデータを超えて埋め込まれたこの文字列を空白に送信するか、空白を埋め込むのではなく、格納バッファー内の最後の位置にある文字列の最後の有効文字を使用して、この文字列を送信できます。 スペース文字は、文字列の種類 (単一、二重、または混和) によって決まります。

  • Null が終了しました。 EBCDIC 文字列に変換すると、文字列はそのまま送信されます。 TI ランタイム環境は、文字列の長さをチェックし、正確な文字数が送信されることを確認します。 つまり、送信される文字数は文字列の長さと等しくなります。 文字列の末尾に null ターミネータまたはスペースは追加されません。

    次の表は、文字列区切りプロパティが [スペース 埋め込み] に設定されている場合と Null で終わる場合の、可変サイズ設定と組み合わせた場合の文字列区切りのしくみを示しています。 すべての例では、メインフレーム データ宣言を PIC X(5) と想定しています。 "b" はスペースを表し、"?" は割り当てられていないデータを表し、"\0" は null を表します。

スペース埋め込みおよび変数サイズがアクティブでないに設定された文字列区切り

ワークステーション Direction メインフレーム
ABC\0 ホストする 'ABCbb'
ABCb ホストする 'ABCbb'
Cba ホストから 'CBAbb'
CBA\0? ホストから 'CBA\0?'
CBA\0 ホストから 'CBA\0b'

文字列区切り記号を [スペース 埋め込み] に設定し、変数サイズをアクティブにする

ワークステーション Direction メインフレーム
ABC\0 ホストする 'ABC'
Abb ホストする 'Abb'
Cba ホストから 'CBAbb'
CBA\0? ホストから 'CBA\0?'
CBA\0 ホストから 'CBA\0b'

文字列区切り記号を Null 終端に設定し、変数サイズがアクティブでない

ワークステーション Direction メインフレーム
ABC\0 ホストする 'ABC\0?'
ABC ホストから 'ABC\0?'
ABCbb ホストから 'ABCbb'
ABC ホストから ABC\0\0'

文字列区切り記号を Null 終端に設定し、変数サイズをアクティブにする

ワークステーション Direction メインフレーム
ABC\0 ホストする 'ABC\0'
ABC ホストから 'ABC\0?'
ABCbb ホストから 'ABCbb'
ABC ホストから ABC\0\0'

参照

メインフレーム文字列とコード ページ