0

我必须将文件中的所有数据转换为压缩十进制格式的 EBCDIC。

文件中的所有数据都是简单的文本格式。

据我所知,我们需要先将 ASCII 转换为 EBCDIC Cp1047 或其他格式,然后应用“压缩十进制”逻辑/代码。(可能是我错了)

转换后的格式应该是“C3 C5 40 F0 C9 F8”(即EBCDIC压缩十进制格式)

4

1 回答 1

0

压缩十进制(Cobol 中的 Comp3)

  • +123 存储为 x'123C'
  • -123 存储为 x'123D'
  • 无符号 123 是 x'123F'

您是否有Cobol Copybook ???,如果有,请参阅JRecord Question。JRecord 也有

  • Csv 到 Cobol程序(使用 Cobol Copybook 将 Csv 文件转换为 Cobol)
  • Xml-to-Cobol程序(使用 Cobol Copybook 将 Xml 文件转换为 Cobol)

JRecord的替代品是

  • Cobol2J
  • 腿星
  • 各种商业产品

注:我是JRecord的作者


将数字转换为压缩十进制非常简单,并且有很多方法可以做到这一点

转换为字符串

一种选择是

  1. 将数字转换为字符串
  2. 将符号字符添加到字符串的末尾
  3. 将字符串转换为字节(十六进制字符串)

将整数转换为压缩十进制的 Java 代码

    String val = Integer.toString(Math.abs(value));
    if (value < 0) {
        val = val.substring(1) + "D"
    } else {
        val += "C";
    }

    byte[] bytes = (new BigInteger(val, BASE_16)).toByteArray();

类似问题

如何将未压缩的十进制转换回 COMP-3?

于 2015-12-17T09:28:36.713 回答