如何使用空格填充大型机字符串
可以定义字符串的属性,使事务集成商 (TI) 运行时环境添加空格字符来填充字符串的大型机表示形式,而不是依赖于 null 终止字符。
使用空格字符或 null 终止字符
在 Microsoft Visual Studio 中,右键单击对象,然后单击“ 属性”。
在“属性”窗格中的“主机数据类型信息”下,单击“字符串分隔”。
选择 “空格填充” 或 “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' |