我在文件中有定点数字,每行一个,格式为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).
答案 0 :(得分:5)
原因是您尝试取消编辑字段。数据中的567123.45
不符合PIC S9(6)V9(2)
,而是符合-9(6).9(2).
- 内部存储数据与打印数据。
只需更改定义并使用MOVE WS-VALUE TO WS-VALUE-INTERNAL
(定义为您想要的)可以使用特定的编译器(和特定数据),但我会有所不同路线:
我建议始终验证数据,然后再对其进行操作(文件可能已损坏或外部编辑)。
至少检查WS-CLIENT
的{{1}}等简单数字数据,并对数据字段IS NUMERIC
进行完整验证,或者至少使用WS-VALUE
。