在ruby中转换签名的cobol数字

mac*_*thy 6 ruby cobol

我有一个ascii文件,它是来自基于cobol的系统的数据转储.

文档中有一个字段PIC S9(3)V9(7)..

以下是十六进制(和ascii)中的字段的两个示例以及它们表示的结果数字(取自另一个来源).

Hex                                Reported value 

30 32 38 36 38 35 38 34 35 46      28.687321
ascii : 028685845F

30 39 38 34 35 36 31 33 38 43      -98.480381
ascii : 098456138C
Run Code Online (Sandbox Code Playgroud)

我正在使用ruby,即使添加了Implied Decimal,我似乎也得不到数字.我正在尝试解析IBM Cobol Docs但我会很感激帮助.

给定一个隐含的十进制Cobol字段"PIC S9(3)V9(7).",如何使用ruby将其转换为带符号的浮点数?

Mar*_*eed 0

假设数据字节已通过哑 EBCDIC 到 ASCII 转换器运行,这两个值是 +28.6858456 和 +98.4561383。这意味着生成的“报告值”列要么已损坏,要么使用不同的字节作为其源。

看起来报告的值可能已经通过低精度浮点转换运行,但这仍然不能解释第二个值上的错误符号。