大型机字符格式

在事务集成商 (TI) Project 中,可以指定 TI 运行时环境将数据发送到大型机时将创建的大型机字符格式。 TI 支持两种大型机字符格式:

  • PIC X (n) COBOL 或 RPG A

  • PIC G (n) COBOL 或 RPG G

    在 TI Project 中创建字符串参数、字段或列时,将自动选择 PIC X (n) 或 RPG A 数据类型格式。

    如有必要,可以使用 Properties 命令更改大型机字符格式。

    如果为字符串选择 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) 格式) 基于使用的字符格式。 可以在事务集成商的 COBOL 定义 属性页上指定字符串的维度 (TI) Project。

  • 具有 PIC G 或 RPG G 格式的字符串的维度值提供字符串的大型机表示形式中使用的双字节字符数。 转换 PIC G 或 RPG G 格式的字符串时,不会添加 SO 和 SI 字符对。

  • 具有 PIC X 或 RPG A 格式的字符串的维度值提供在其大型机表示形式中使用的字节数。 可放入 PIC X 或 RPG A 格式字符串或从中获取的字符数因 数量而异:

    • 双字节字符集 (DBCS) 个字符,每个字符都需要两个字节的存储。

    • 需要 SO 和 SI 字符对。 每个双字节对必须封装每个连续的 DBCS 字符流。

    使用 TI 的开发人员在 TI 项目中指定维度值时,必须考虑到混合字符串大小的这种差异。

    使用 PIC X 或 RPG A 格式的 EBCDIC 代码页转换的字符串的字节数与字符数相同,因为字符串中没有 DBCS 字符。

    但是,对于使用 PIC X 或 RPG A 格式的 DBCS 代码页转换的字符串,可以放置在给定字节数中的实际字符数会有所不同。 例如,如果与 UNICODE 的转换不需要使用 DBCS 字符 (即大型机字符串) 不使用 SO 和 SI 字符,则每个字符占用一个字节。 但是,如果 DBCS 字符确实出现在大型机字符串中,则需要 SO 和 SI 字符对。

导入向导如何定义字符串

使用事务集成商 (TI) Project 的导入向导导入主机定义以创建新方法和记录集时,向导会基于导入的主机定义选择大型机字符格式。 下表显示了向导如何将不同的 COBOL 声明映射到字符串。

COBOL 类型 创建的字符串类型
PIC X (n) 或 RPG A 大小 为 n 字节的字符串
PIC G (n) 或 RPG G 大小 为 n 个字符的字符串

另请参阅

大型机字符串和代码页