4

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

编辑:文件具有以下形式的记录,由新行分隔(由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). 
4

1 回答 1

5

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

只需更改定义和使用MOVE WS-VALUE TO WS-VALUE-INTERNAL(如您所愿)可能适用于特定的编译器(和特定的数据),但我会走不同的路线:

我建议在使用数据之前始终验证数据(文件可能已损坏或外部编辑)。至少检查简单的数字数据,例如WS-CLIENTforIS NUMERIC并对数据字段进行完整验证WS-VALUE或至少使用MOVE FUNCTION NUMVAL(WS-VALUE) TO WS-VALUE-INTERNAL.

于 2016-07-28T21:16:14.650 回答