如何使用压缩十进制格式将Simple Java String转换为EBCDIC

时间:2015-12-17 07:05:15

标签: java string ebcdic packed-decimal

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

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

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

转换后的格式应该类似于" C3 C5 40 F0 C9 F8"(即EBCDIC压缩十进制格式)

1 个答案:

答案 0 :(得分:0)

包装十进制(Cobol中的Comp3)

  • +123存储为x'123C'
  • -123存储为x'123D'
  • unsigned 123是x'123F'

你有 Cobol Copybook ???,如果你有,请参阅JRecord Question。 JRecord也有

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

JRecord 的替代方案是

  • Cobol2J
  • legstar
  • 各种商业产品

注意:我是JRecord的作者

将数字转换为Packed Decimal非常简单,有很多方法可以做到这一点

转换为字符串

一个选项是

  1. 将数字转换为字符串
  2. 将符号字符添加到字符串
  3. 的末尾
  4. 将字符串转换为字节(Hex-String)
  5. 将整数转换为Packed-Decimal的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();
    

    类似问题

    How to convert unpacked decimal back to COMP-3?