从COBOL中的文件中读取浮点数

Que*_*tin 4 cobol fixed-point gnucobol

我在文件中有定点数字,每行一个,这种格式S9(6)V9(2)但是当它们实际被读取时,我non numeric在尝试将它们放入数学运算时遇到错误.更重要的是,当我尝试在程序中显示它们时,在文件中写为567123.45的数字将保存在变量中作为+567123.04.例如,文件123.45中的数字在变量中保存为+123.45.00,并且'WS-VALUE' not numeric: '123.45 0'在数学运算期间会引发以下错误.这是为什么?我正在使用OpenCobolIDE 4.7.4 for Windows.

编辑:文件具有由新行分隔的以下格式的记录(READ记录后的操作记录读取):

  01 WS-OPERATION.
     05 WS-ID PIC A(2).
     05 WS-CLIENT PIC 9(5).
     05 WS-COUNTRY PIC A(4).
     05 WS-VALUE PIC S9(6)V9(2). 
Run Code Online (Sandbox Code Playgroud)

Sim*_*sch 5

原因是您尝试取消编辑字段.567123.45在数据中不符合PIC S9(6)V9(2)但是-9(6).9(2).- 内部存储数据与打印数据.

简单地更改定义和使用MOVE WS-VALUE TO WS-VALUE-INTERNAL(定义为您想要的)可以使用特定的编译器(和特定数据),但我会采用不同的路径:

我建议在使用它之前始终验证数据(文件可能被破坏或外部编辑).至少检查简单的数字数据,如WS-CLIENTIS NUMERIC,要么做数据字段完全验证WS-VALUE,或至少使用MOVE FUNCTION NUMVAL(WS-VALUE) TO WS-VALUE-INTERNAL.