在我看来,您的接口文件定义不正确。“COBOL”文件只能是文本数据。如果有符号,则应该有一个实际的 +/-,如果有小数位,则应该有一个实际的小数点。或者,对于小数位,“缩放因子”是可能的,并且对于浮点数据的文本表示是必需的。
你有一个“隐含的”小数点。您使用的方法似乎没有正确理解这一点。如果它给你.123456,那么它根本不起作用。如果它不适用于隐含的小数位,它也可能不适用于其他定义。
最安全的方法是切换方法。下一个最安全的方法是修复您正在使用的方法。下一个最安全的是,在收到结果后,自己进一步解析定义以识别隐含小数位的位置,并做一些愚蠢的事情,比如乘以十的正确幂。
请记住,使用最后两个,您可能仍会遇到其他问题。如果 cb2java 处理文本数据但不可靠,为什么继续使用它?
cb2java 的文档是怎么说的?也许那里有什么帮助?系统设计和数据设计和程序规范是怎么说的?
在 COBOL 中,将所有数据生成为“文本”并将所有数据作为“文本”接收并将其转换为 COBOL 系统所需的格式是很简单的。由于糟糕的设计,你不得不做额外的工作。
如果您无法更改文件,我建议您使用 JRecord。即使更改了文件,JRecord 似乎也是一个更好的方法。
是的,您已经完成了代码,但是当设计出现问题时,这些事情就会发生。至少将这些信息反馈到设计过程中,这样它就不会再次发生。
如果你只是为了保存你的代码而修补一些东西,你会得到一些更难以理解和维护的东西,而且更容易出错。
一路走来,概念证明被遗漏了,而你是受苦的人。在不知道它是否有效的情况下,不应该启动文件的代码。我希望你没有多个文件。如果是你做的POC,切换到JRecord应该没有问题,所以我猜不是。
也许您对文档很幸运。除此之外,好处在于改进设计过程和您的经验,这意味着您将来不会犯类似的错误步骤。