在 Transaction Integrator (TI) 專案中,你可以指定大型主機執行時環境在傳送資料到大型主機時所建立的字元格式。 TI 支援兩種大型主機字元格式:
PIC X(n) COBOL,或稱 RPG A
PIC G(n) COBOL,或稱 RPG G
當您在 TI Project 中建立字串參數、欄位或欄位時,會自動選擇 PIC X(n) 或 RPG A 資料型態格式。
如果需要,你可以使用 屬性 指令來更改主機的字元格式。
如果您選擇 PIC X 或 RPG A 格式作為字串,TI 執行環境會將該字串轉換為擴展二進位編碼十進位交換碼(EBCDIC)字串或混合字串。 具體來說,如果你在 TI 專案中定義的 TI 元件被指派到帶有 EBCDIC 程式碼頁的遠端環境(RE),TI 執行時環境會將具有 PIC X 或 RPG A 格式的字串轉換成 EBCDIC 字串。 若 TI 元件的 RE 識別出雙位元組字元集(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 格式的字串的維度值,表示該字串在主機表示中所用的雙位元元數。 當轉換具有 PIC G 或 RPG G 格式的字串時,不會新增 SO 與 SI 字元對。
PIC X 或 RPG A 格式的字串的長度值,表示在大型主機中表示形式所使用的位元組數。 可放入或取出 PIC X 或 RPG A 格式字串的字元數量,會依下列字元數量而異:
雙位元組字元集(DBCS)字元,每個字元需要兩個位元組的儲存空間。
需要 SO 和 SI 字元配對。 每一組兩位元組都必須封裝每一個連續的 DBCS 字元序列。
使用 TI 的開發者在 TI 專案中指定尺寸值時,必須考慮混合字串大小的變異性。
使用 EBCDIC 代碼頁(帶有 PIC X 或 RPG A 格式)轉換的字串位元組數與字元數相同,因為字串中沒有 DBCS 字元。
然而,對於使用 DBCS 編碼頁並轉換為 PIC X 或 RPG A 格式的字串,實際可容納在特定位元組數的字元數可能會有所不同。 例如,若與 UNICODE 的轉換不需使用 DBCS 字元(即主機系統字串中不使用 SO 和 SI 字元),每個字元佔用一個字節。 然而,如果大型主機串中出現 DBCS 字元,則需要 SO 和 SI 字元對。
匯入精靈如何定義字串
當你使用 Transaction Integrator (TI) Project 的匯入精靈匯入主機定義以建立新方法與記錄集時,精靈會根據匯入的主機定義選擇大型主機字元格式。 下表展示了嚮導如何將不同的 COBOL 宣告映射到字串。
| COBOL 類型 | 所建立字串類型 |
|---|---|
| PIC X(n) 或 RPG A | n 位元組大小的字串 |
| PIC G(n) 或 RPG G | 大小 為 n 字元的字串 |