使用JAVA进行EBCDIC到ASCII转换

1 java ascii mainframe ebcdic

我正在尝试将主机固定长度文件从EBCDIC格式转换为ASCII格式.目前我正在使用JZOS api(ZFile)读取文件并逐字段转换.是否可以通过读取记录或行的整个字节来在不知道文件布局(又称COPYBOOK)的情况下进行转换?如果是这样,如何处理压缩小数和二进制值?

csc*_*eid 6

是否可以通过读取记录或行的整个字节来在不知道文件布局(又称COPYBOOK)的情况下进行转换?

没有.

文本字段必须从EBCDIC转换为ASCII.二进制和十进制包装领域一定 不能转换.如果您转换二进制字段然后您将改变它们的值,可能(可能?确定?)您将破坏它们的值.

来自大型机的二进制字段将是big-endian,您可能需要将这些字段转换为little endian.大型机上的半字中的+10是x'000A',而在小端机器上它是x'0A00'.

打包的十进制字段可能包含隐含的小数位.如果您的文件包含可能代表+123.45或+12,345的x'12345C'.该字段的格式告诉您如何解释数据.

如果不知道记录布局(包括字段格式),则无法进行转换.

根据我的经验,避免这些困难的最佳方法是在主机上预处理文件,将所有二进制和压缩十进制字段转换为带有嵌入显式符号和小数点的文本.然后该文件可以安全地通过代码页(在这种情况下为EBCDIC到ASCII)转换.

使用大型机SORT实用程序可以轻松完成此类预处理,该实用程序通常在数据转换方面表现优异.