如何使用空格填充大型机字符串

可以定义字符串的属性,使事务集成商 (TI) 运行时环境添加空格字符来填充字符串的大型机表示形式,而不是依赖于 null 终止字符。

使用空格字符或 null 终止字符

  1. 在 Microsoft Visual Studio 中,右键单击对象,然后单击“ 属性”。

  2. 在“属性”窗格中的“主机数据类型信息下,单击“字符串分隔”。

  3. 选择 “空格填充”“Null 终止”。

    下表描述了转换为指示的字符串类型时,每个分隔选项 (空格填充Null 终止) 会发生什么情况。

字符串操作的类型 每种类型的字符串分隔操作会发生什么情况
转换为 EBCDIC 字符串 空格填充。 TI 运行时环境将单字节空间字符添加到字符串的末尾,直到填充 PIC X 格式字符串中的所有字节。
null 终止。 如果字节的 PIC X 计数中存在空间,则 TI 运行时环境会在字符串的末尾添加一个空字符。
从 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 字符 (停止转换。

对于在主机缓冲区中最后一个且标记为最后一个 是变量的字符串,将发生特殊处理。 例如:

  • 空格填充。 转换为扩展二进制编码的十进制交换代码 (EBCDIC) 字符串时,字符串以包含缓冲区的长度计数结尾,因此它不包含额外的空格字符。 从 EBCDIC 字符串转换时,缓冲区被视为由包含缓冲区的长度计数终止;然后检查字符串是否为空白填充。 主机可以发送此字符串空白填充到重要数据之外,或者不带空白填充,但该字符串的最后一个有效字符位于包含缓冲区的最后一个位置。 空格字符由单、双精度或混合) (字符串类型确定。

  • null 终止。 转换为 EBCDIC 字符串后,将按原样发送该字符串。 TI 运行时环境会检查字符串的长度,然后检查是否发送了确切的字符数。 换句话说,发送的字符数等于字符串的长度。 字符串末尾不会追加 null 终止符或空格。

    下表显示了字符串分隔属性设置为空格填充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'

字符串分隔设置为 Null 终止,可变大小处于活动状态

工作站 方向 大型机
ABC\0 到主机 “ABC\0”
ABC 从主机 “ABC\0?”
ABCbb 从主机 'ABCbb'
ABC 从主机 ABC\0\0'

另请参阅

大型机字符串和代码页