SOC7 在比较字段时异常弯曲



我在比较 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用于数值字段,但我相信您可以将它放在上面的代码中的某个地方。

最新更新