【问题标题】:EBCDIC to ASCII conversion using JAVA使用 JAVA 将 EBCDIC 转换为 ASCII
【发布时间】:2017-06-21 17:27:52
【问题描述】:

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

【问题讨论】:

  • EBCDIC 和 ASCII 是文本格式,没有压缩十进制或二进制值。我建议你弄清楚确切的格式是什么。

标签: java ascii mainframe ebcdic


【解决方案1】:

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

没有。

文本字段必须从 EBCDIC 转换为 ASCII。二进制和压缩十进制字段必须 进行转换。如果你转换二进制字段,那么你会改变它们的值,你有可能(可能?确定?)你会破坏它们的值。

来自大型机的二进制字段将是大端,您可能需要将它们转换为小端。 +10 在大型机上的半字是 x'000A' 而在小端机器上是 x'0A00'。

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

在不知道记录布局(包括字段格式)的情况下,您无法进行转换。

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

使用大型机 SORT 实用程序可以轻松完成此类预处理,该实用程序通常擅长数据转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多