首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从COBOL文件中读取浮点数

从COBOL文件中读取浮点数
EN

Stack Overflow用户
提问于 2016-07-28 20:38:27
回答 1查看 954关注 0票数 4

我在文件中有不动点数字,每行一个,格式为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操作记录逐条读取):

代码语言:javascript
复制
  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). 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-28 21:16:14

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

简单地更改定义并使用MOVE WS-VALUE TO WS-VALUE-INTERNAL (按照您希望的那样定义)可能会使用特定的编译器(和特定的数据),但我会走另一条路线:

我建议在处理数据之前始终验证数据(文件可能被破坏或外部编辑)。至少检查简单的数字数据,如WS-CLIENT for IS NUMERIC,或者对数据字段WS-VALUE进行完整的验证,或者至少使用MOVE FUNCTION NUMVAL(WS-VALUE) TO WS-VALUE-INTERNAL

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38646296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档