我在比较 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显示的值是非数字的。
你能建议在这里做什么吗?
我们有这种情况,我们需要比较 2 个不同的数值字段,有时非数值数据会从外部系统潜入。我们所做的是用相当于字节大小的PIC X(n)
重新定义字段,并对IF
语句进行NUMERIC
检查。像这样的事情——
IF WS-FIELD1 NUMERIC AND WS-FIELD2 NUMERIC
IF WS-FIELD1 NOT = WS-FIELD2
*** both fields are numeric but not equal
ELSE
*** both fields are numeric & equal
END-IF
ELSE
IF WS-FIELD1-X NOT = WS-FIELD2-X
*** both fields are non-numeric & not equal
ELSE
*** both fields are non-numeric but equal
END-IF
END-IF
我不确定您为什么将PERFORM VARYING
用于数值字段,但我相信您可以将它放在上面的代码中的某个地方。