gpt4 book ai didi

java - 通过cobol描述符解析数据时将小数点放在正确的位置

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:48:25 26 4
gpt4 key购买 nike

我正在尝试通过 java 中的 cobol 描述符从 txt 文件中解析数据。我使用这个方法的时候出了点问题:

Record net.sf.cb2java.copybook.Copybook.parseData(byte[] arg0). 

在cobol描述符中,有一行:

20 ACCD-LONG-SECONDS          PIC 99V9999.

在这种情况下,对应的结果应该是小数点左边2位,小数点右边4位。但是我得到的是小数点右边的6位数字。例如,如果原始文件中的数据是123456,我们期望的是12.3456,但是我们得到的是0.123456

谁能帮我解决这个问题?

最佳答案

在我看来,您的接口(interface)文件定义不正确。 “COBOL”文件应该只是文本数据。如果有符号,则应该有一个实际的 +/-,如果有小数位,则应该有一个实际的小数点。对于小数位,“比例因子”是可能的,并且对于 float 据的文本表示是必需的。

你有一个“隐含的”小数点。看来您使用的方法没有正确理解这一点。如果它给你的是 .123456,那么它根本不起作用。如果它不适用于隐含的小数位,它也可能不适用于其他定义。

最安全的方法是切换方法。下一个最安全的方法是修复您正在使用的方法。下一个最安全的方法是,在收到结果后,自己进一步解析定义以确定隐含的小数位的位置,然后做一些愚蠢的事情,比如乘以 10 的正确次方。

请记住,对于最后两个问题,您可能仍会遇到其他问题。如果 cb2java 可以处理文本数据但不可靠,为什么还要继续使用它?

cb2java 的文档是怎么说的?也许那里有什么帮助?系统设计和数据设计以及程序规范说明了什么?

在 COBOL 中,将所有数据生成为“文本”并接收所有数据作为“文本”并将其转换为 COBOL 系统所需的格式是微不足道的。由于糟糕的设计,你不得不做额外的工作。

如果您无法更改文件,我建议您使用 JRecord。即使文件已更改,JRecord 似乎也是一种更好的方式。

是的,您已经获得了完整的代码,但是当设计出现问题时,这些事情就会发生。至少将该信息反馈到设计过程中,以免再次发生。

如果您只是为了保存代码而打补丁,您将拥有一些更难以理解和维护的东西,并且更容易出错。

在这个过程中的某个地方,概念验证被遗漏了,而你就是那个受苦的人。在不知道它有效的情况下,文件的代码不应该启动。我希望你没有多个文件。如果是你做的POC,换成JRecord应该没有问题,所以我猜不是。

也许您对文档很幸运。除此之外,好处在于改进了设计过程和您的体验,这意味着您将来不会犯类似的错误步骤。

关于java - 通过cobol描述符解析数据时将小数点放在正确的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18422996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com