我在比较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 IS的价值在那里增加。对于前两次迭代,B的值是正确的。并且对于第3次迭代,B显示的值是非数字的。
你能告诉我这里可以做些什么吗?
我们有这种情况需要比较来自外部系统的2个不同的数字字段和有时非数字数据。我们所做的是重新定义了相当于字节大小的PIC X(n)
字段,并在NUMERIC
语句中保留了IF
。有点像这样 -
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
作为数字字段,但我相信你可以在上面的代码中适应它。