将数据传输到 ASCII 文本文件

创建 ASCII 文本文件时,来自据 iSerieseServer i5 或 System i5 的数据更改如下:
  • 十六进制字段更改为每个半字节的等效 ASCII 字符。例如,X'D3 将扩展到 ASCII 4433 并写入文件。当由编辑器显示或打印时,字符串显示为 D3。
  • EBCDIC 字符字段将逐个字节更改,并映射到转换表定义的 ASCII 字符中。
  • 日期、时间和时间戳记数据将映射到转换表定义的 ASCII 字符中。
  • 可变长度字段和 null 字段将转换为固定长度,并将尾随空格(适用于字符、十六进制、日期、时间和时间戳记数据)或零(适用于二进制、分区和压缩)添加到字段的最大长度中。
    注: 一些不可显示的 EBCDIC 字符将转换为 workstation 上的 ASCII 控制字符。如果 EBCDIC 字符字段包含不可显示的数据,可能会得到意外结果,并且 ASCII 文本文件可能看起来已损坏。

    例如,EBCDIC 字段中 X'05' 会转换为 ASCII X'09',这是水平制表符的 ASCII 控制字符。大多数 workstation 文本编辑器都会处理此制表符,以便在查看时 workstation 文本文件中的数据显示为向右移动。

    此问题的一个可能解决方案是将主机系统上的这些字段定义为十六进制字段,而不是字符字段。

  • 二进制字段更改为 ASCII 数字。例如,没有十进制位置的 X'FFD3' 会扩展为 ASCII 20202020202020202D3435。当由编辑器显示或打印时,字符串显示为 -45。
    注: ASCII 字段的长度取决于二进制字段的长度。

    iSerieseServer i5 或 System i5 上的二进制字段的长度为 2 或 4 个字节。产生的 ASCII 字段长度为 6 到 11 个字节,包括符号。将为小数点添加另一个字节。

    Binary-to-ASCII 字段长度映射 显示二进制字段长度及其 ASCII 长度之间的映射。

1. Binary-to-ASCII 字段长度映射
二进制长度 ASCII 长度   值范围
2 8 -32768 至 32767
4 11 -2147483648 至 2147483647
  • 分区十进制字段会更改为 ASCII 数字。例如,字段长度指示小数点右侧两位数的 EBCDIC F0F0F9F5F2D6 将扩展为 ASCII 20202D39352E3236。当由编辑器显示或打印时,字符串显示为 -95.26。产生的 workstation 字段长度等于系统字段的长度加上表示符号的 1 和表示小数点的 1(如果指定)。
  • 压缩十进制字段将更改为 ASCII 数字。例如,X'871D'(无小数点)更改为 ASCII 2D383731。当由编辑器显示或打印时,字符串显示为 -871。

    由于两个小数位压缩成 1 个字节,因此产生的 workstation 字段的长度等于 iSerieseServer i5 或 System i5 字段的长度的两倍,再加上表示小数点的 1(如果指定)。此长度始终包括符号。减号 (-) 表示负,空格表示正。