如何使用空格填補大型主機字元字串
您可以定義字串的屬性,讓交易整合器 (TI) 執行時間環境新增空白字元,以填補字串的主框架表示,而不是根據 Null 終止字元而定。
使用空白字元或 Null 終止字元
在 Microsoft Visual Studio 中,以滑鼠右鍵按一下物件,然後按一下 [ 屬性]。
在 [屬性] 窗格中的 [主機資料類型資訊] 下,按一下 [字串分隔]。
選取 [空格填補 ] 或 [ Null 已終止]。
下表描述當轉換成所指示字串類型時,每個分隔選項 (空格填補 或 Null 終止) 會發生什麼情況。
字串作業的類型 | 每種類型的字串分隔作業會發生什麼情況 |
---|---|
轉換成 EBCDIC 字串 | 空格填補。 TI 執行時間環境會將單一位元組空白字元新增至字串結尾,直到 PIC X 格式化字串中的所有位元組都填滿為止。 |
Null 已終止。 如果位元組的 PIC X 計數中有空間,TI 執行時間環境會將單一 Null 字元新增至字串結尾。 | |
從 EBCDIC 字串轉換 | 空格填補。 TI 執行時間環境會從字串結尾移除單位元組空白字元。 |
Null 已終止。 TI 執行時間環境會從字串開頭掃描,並在字串中遇到的第一個 Null 字元停止轉換。 | |
轉換成 DBCS 字串 | 空格填補。 TI 執行時間環境會將雙位元組空白字元加入字串結尾,直到 PIC G 格式化字串中的所有字元都填滿為止。 |
Null 已終止。 如果位元組的 PIC G 計數中有空間,TI 執行時間環境會將雙位元組字元集 (DBCS) null 字元新增至字串結尾。 | |
從 DBCS 字串轉換 | 空格填補。 TI 執行時間環境會從字串結尾移除雙位元組空白字元。 |
Null 已終止。 TI 執行時間環境會從字串開頭掃描,並在字串中遇到的第一個 DBCS Null 字元停止轉換。 | |
轉換成混合字串 | 空格填補。 TI 執行時間環境會將單一位元組空白字元新增至字串結尾,直到 PIC X 格式化字串中的所有位元組都填滿為止。 如果 UNICODE 字串中的終止字元對應至 DBCS 字元,TI 執行時間環境會在新增空白字元之前新增 SI 字元。 |
Null 已終止。 如果 PIC X 計數中有空間,TI 執行時間環境會將單一位元組 Null 字元新增至字串結尾。 如果 UNICODE 字串中的終止字元對應至 DBCS 字元,TI 執行時間環境會在新增 Null 字元之前新增 SI 字元。 | |
從混合字串轉換 | 空格填補。 TI 執行時間環境會從字串結尾移除終止的單位元組和雙位元組空白字元。 當它移除空白字元時,TI 執行時間環境會將任何終止的 SI 字元視為空格。 |
Null 已終止。 TI 執行時間環境會從字串的開頭掃描,並在所遇到的任一寬度) 的第一個 null 字元 (停止轉換。 |
特殊處理發生在主機緩衝區中最後一個字串,且標示為 last 為變數的字串。 例如:
空格填補。 轉換成擴充二進位編碼十進位交換碼 (EBCDIC) 字串時,字串會以包含緩衝區的長度計數終止,因此不包含額外的空白字元。 從 EBCDIC 字串轉換時,緩衝區會被視為由包含緩衝區的長度計數終止;然後會檢查字串是否有空白填補。 主機可以將這個字串空白填補傳送到重大資料之外,或不是空白填補,而是在包含緩衝區的最後一個位置中,以字串的最後一個有效字元傳送。 空白字元取決於字串類型, (單一、雙精度浮點數或混合) 。
Null 已終止。 轉換成 EBCDIC 字串時,字串會依原樣傳送。 TI 執行時間環境會檢查字串的長度,然後檢查是否傳送確切的字元數。 換句話說,傳送的字元數等於字串的長度。 字串結尾不會附加 Null 結束字元或空格。
下表顯示 當 String 分隔 屬性設定為 空格填補 與 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' |
Cba | 從主機 | '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' |