【发布时间】:2018-09-04 06:30:48
【问题描述】:
我在比较 2 个字段时异常结束 它们被定义为:
01 A PIC S9(8) COMP VALUE 0.
01 B PIC S9(5) COMP-3.
要异常结束的语句是:
PERFORM VARYING A FROM 1 BY 1 UNTIL A > B
此语句在另一个循环中,并且 B 的值在那里增加。对于前两次迭代,B 的值是正确的。对于第 3 次迭代, B Displayed 的值是非数字的。
您能否建议在这里可以做什么?
【问题讨论】:
-
看看是什么在更新 B 的存储。 S0C7 不会发生,因为一切正常。顺便说一句,你为什么要制作 B 压缩十进制?如果它仅用于与 A 进行比较,则最好使用相同的格式(二进制或压缩十进制)。
-
正如@ErwinSmout 所说,您需要找到正在修改 B 的内容。请注意,如果 B 是重新定义的一部分,则它可能是实际正在修改的另一个值。
-
SOC7 表示尝试对非数字数据进行数字运算。所以在某些时候,其中一个变量包含非数字数据。
-
大家好,谢谢您的建议。我将两个字段的格式都更改为相同,并且它起作用了。
-
如果它的工作真棒。问题是它应该一直在工作:) 如果你有一个覆盖问题,你只是掩盖了它并没有解决它。警告购买者。