您可以定義字串的屬性,讓交易整合器 (TI) 執行階段環境添加空白字元,以填充字串在大型主機中的表示格式,而不是依賴於 Null 終止字元。
若要使用空格字元或 Null 終止字元
在 Microsoft Visual Studio 中,以滑鼠右鍵按兩下物件,然後按兩下 [ 屬性]。
在 [屬性] 窗格中的 [主機數據類型資訊] 下,按兩下 [字串分隔]。
選擇 以空格填充 或 以空字元結尾。
下表描述當轉換成所指示字串類型時,每個分隔選項(空格填補 或 Null 終止)會發生什麼情況。
| 字串作業的類型 | 每個字串分隔作業類型會發生什麼事 |
|---|---|
| 轉換成EBCDIC字串 | 空格填補。 TI 運行環境會在字串結尾新增單位元組空格字元,直到 PIC X 格式化的字串中的所有位元組都填滿為止。 |
| 以 null 終止。 如果位元組的 PIC X 計數中有空間,TI 運行時間環境會將單一 Null 字元新增至字串結尾。 | |
| 從EBCDIC字串轉換 | 空格填補。 TI 執行環境會移除字串結尾的單字節空格字元。 |
| 以 null 終止。 TI 運行時間環境會從字串開頭掃描,並在字串中遇到的第一個 Null 字元停止轉換。 | |
| 轉換成 DBCS 字串 | 空格填補。 TI 執行時間環境會將雙位元組空格字元新增至字串結尾,直到 PIC G 格式化字串中的所有字元都填滿為止。 |
| 以 null 終止。 如果位元組的 PIC G 計數中有空間,TI 執行時環境會在字元串結尾新增一個雙位元組字元集 (DBCS) 的空字元。 | |
| 從 DBCS 字串轉換 | 空格填補。 TI 運行時環境會從字串結尾移除雙字節空格字元。 |
| 以 null 終止。 TI 執行時環境會從字串開頭開始掃描,並在字串中遇到的第一個 DBCS 空字元時停止轉換。 | |
| 轉換成混合字串 | 加上空格 TI 執行時間環境會將單位元組空格字元新增至字串結尾,直到 PIC X 格式化字串中的所有位元組都填滿為止。 如果 UNICODE 字串中的終止字元對應至 DBCS 字元,TI 運行時間環境會在新增空白字元之前新增 SI 字元。 |
| 以 null 終止。 如果 PIC X 計數中有空間,TI 執行環境會將單一位元組 Null 字元新增至字串結尾。 如果 UNICODE 字串中的終止字元對應至 DBCS 字元,TI 運行時間環境會在新增 Null 字元之前新增 SI 字元。 | |
| 從混合字串轉換 | 空格填補。 TI 執行環境會從字串結尾移除最後的單位元組和雙位元組空格字元。 當它去除空格字元時,TI 運行時間環境會將任何終止的 SI 字元視為空格。 |
| 以 null 終止。 TI 執行環境會從字串的開頭掃描,並在遇到的第一個空字元(無論其寬度)停止轉換。 |
主機緩衝區中最後一個且標示為 last 為變數的字串會發生特殊處理。 例如:
空格填補。 轉換成擴充二進位編碼十進位交換碼 (EBCDIC) 字串時,字串會以包含緩衝區的長度計數終止,因此不包含額外的空格字元。 從EBCDIC字串轉換時,緩衝區會被視為由包含緩衝區的長度計數終止;然後會檢查字串是否有空白填補。 主機可以將這個字串以空白填充來傳送,使其延伸超過有效數據範圍,或不進行空白填充,而是將字串的最後一個有效字元放置在包含緩衝區的最後一個位置。 空格字元取決於字串類型(單引號、雙引號或混合)。
以 null 終止。 轉換成 EBCDIC 字串時,字串會依原樣傳送。 TI 運行時間環境會檢查字串的長度,然後檢查是否傳送確切的字元數。 換句話說,傳送的字元數等於字串的長度。 字串結尾不會附加 Null 終止符或空格。
下表顯示當 String 分隔 屬性設定為 Space Padded 或 Null 結尾 並結合變數大小設定時,字串分隔的運作方式。 所有範例都假設大型主機數據宣告為 PIC X(5)。 “b” 代表空格,“?” 代表未指派的數據,而 “\0” 代表 Null。
字串分隔設定為Space Padded且未使用中的變數大小
| 工作站 | 方向 | 主機 |
|---|---|---|
| ABC\0 | 至主機 | 'ABCbb' |
| ABCb | 至主機 | 'ABCbb' |
| CBA | 從主機端 | 'CBAbb' |
| CBA\0? | 從主機 | CBA\0? |
| CBA\0 | 從主機 | 'CBA\0b' |
字串分隔設定為Space Padded和可變大小使用中
| 工作站 | 方向 | 主機 |
|---|---|---|
| ABC\0 | 至主機 | 'ABC' |
| Abb | 主辦 | 'Abb' |
| 中國籃球協會 | 來自主機 | 'CBAbb' |
| CBA\0? | 來自主機 | CBA\0? |
| CBA\0 | 從主機 | 'CBA\0b' |
字串分隔設定為以 Null 終止且變數大小未啟用
| 工作站 | 方向 | 主機 |
|---|---|---|
| ABC\0 | 至主機 | ABC\0? |
| ABC | 從主機 | 'ABC\0?' |
| ABCbb | 從主機 | 'ABCbb' |
| ABC | 從主機 | ABC\0\0' |
字串界定設定為 Null 終止且變數大小啟用中
| 工作站 | 方向 | 主機 |
|---|---|---|
| ABC\0 | 至主機 | 'ABC\0' |
| ABC | 從主機 | 'ABC\0?' |
| ABCbb | 從主機 | 'ABCbb' |
| ABC | 從主機 | ABC\0\0' |