EBCDIC解压缩comp-3数据以Java语言返回40404 **

时间:2019-04-01 12:38:35

标签: java mainframe ebcdic packed-decimal comp-3

我使用了以下链接中提供的用于Java的解压缩数据逻辑 How to unpack COMP-3 digits using Java? 但是对于源中的空数据,它像Java解压缩代码一样返回404040404。我知道这是ebcdic中的空间,但是如何通过处理此空间或避免该空间来打开包装。

1 个答案:

答案 0 :(得分:0)

我们必须处理两个问题。首先,该数据是有效的comp-3数据,其次是自从提到Comp-3以来,较旧的语言实现(如COBOL)认为该数据“有效”。

如果目标没有错位,则似乎是现有程序将空格解释为0而不是空格。这将是不正确的,但可能是为容忍这种不良行为而设计的较旧程序的产物。

我在旧版商店中采用的方法(假设没有未对齐)是将“空格”(为0x404040404040的序列)视为零。这将是一项传统检查,将字段与空格进行比较,然后假定0x00000000000f为实际默认值。这是个别商店必须确定的事情,并且不被认为是一般的编程方法。

就Java而言,必须记住字节是“带符号的”,因此根据代码的编写方式进行比较可能比较棘手。唯一的“无符号”数据类型I Java中的回忆是char,它实际上实际上是两个字节(单元16)。

这不是编程问题,而是它认识到历史的宽容和补救。