文字列のプロパティを定義することで、トランザクション インテグレーター (TI) ランタイム環境では、文字列のメインフレーム上の表現をnull終端文字に依存せず、スペース文字で埋めることができます。
空白文字または null 終端文字を使用するには
Microsoft Visual Studio で、オブジェクトを右クリックし、[ プロパティ] をクリックします。
[プロパティ] ウィンドウの [ホスト データ型情報] で、[文字列区切り] をクリックします。
スペース埋め込みまたは 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 文字で変換を停止します。 | |
混在した文字列への変換 | スペース埋め込み。 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 文字 (いずれかの幅) で変換を停止します。 |
ホスト バッファー内の最後の文字列に対して特別な処理が行われ、 最後に変数としてフラグが設定されます。 例えば次が挙げられます。
スペース埋め込み。 拡張バイナリ コード化 10 進インターチェンジコード (EBCDIC) 文字列に変換すると、文字列は格納バッファーの長さカウントで終了するため、追加のスペース文字は含められません。 EBCDIC 文字列から変換された際、バッファーはそのバッファーが持つ長さで終わるとみなされます。続いて、文字列は末尾の空白があるかどうか調べられます。 ホストは、重要なデータを超えてこの文字列を空白で詰めるか、または空白を詰めずに、格納バッファーの最後の位置に文字列の最後の有効文字を配置して、この文字列を送信できます。 スペース文字は、文字列の種類 (単一、二重、または混在) によって決まります。
Null が終了しました。 EBCDIC 文字列に変換すると、文字列はそのまま送信されます。 TI ランタイム環境は、文字列の長さをチェックし、正確な文字数が送信されることを確認します。 つまり、送信される文字数は文字列の長さと同じです。 文字列の末尾に null ターミネータまたはスペースは追加されません。
次の表は、文字列区切りプロパティが Space Padded に設定されている場合と Null で終わる変数サイズの設定と組み合わせて設定されている場合の文字列区切りのしくみを示しています。 すべての例では、メインフレームのデータ宣言を PIC X(5) と想定しています。 "b" はスペースを表し、"?" は割り当てられていないデータを表し、"\0" は null を表します。
スペース埋め込みおよび可変サイズに設定された文字列区切りがアクティブでない
ワークステーション | 方向 | メインフレーム |
---|---|---|
ABC\0 | ホストするには | 'ABCbb' |
ABCb | ホストするには | 'ABCbb' |
CBA | ホストから | 'CBAbb' |
CBA\0? | ホストから | CBA\0? |
CBA\0 | ホストから | 'CBA\0b' |
スペースでパディングされた区切り設定で、可変サイズが有効になっています。
ワークステーション | 方向 | メインフレーム |
---|---|---|
ABC\0 | ホストするには | 'ABC' |
Abb | ホストするには | 'Abb' |
CBA | ホストから | 'CBAbb' |
CBA\0? | ホストから | CBA\0? |
CBA\0 | ホストから | 'CBA\0b' |
文字列の区切りがNull文字で終端されるよう設定され、変数サイズは有効になっていない。
ワークステーション | 方向 | メインフレーム |
---|---|---|
ABC\0 | ホストするには | 'ABC\0?' |
ABC | ホストから | ABC\0? |
ABCbb | ホストから | 'ABCbb' |
ABC | ホストから | ABC\0\0' |
文字列の区切り設定がヌル終端となり、可変サイズがアクティブになっている
ワークステーション | 方向 | メインフレーム |
---|---|---|
ABC\0 | ホストするには | ABC\0 |
ABC | ホストから | 'ABC\0?' |
ABCbb | ホストから | 'ABCbb' |
ABC | ホストから | ABC\0\0' |