比较字段时SOC7异常终止

问题描述 投票:1回答:1

我在比较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显示的值是非数字的。

你能告诉我这里可以做些什么吗?

cobol mainframe
1个回答
0
投票

我们有这种情况需要比较来自外部系统的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作为数字字段,但我相信你可以在上面的代码中适应它。

© www.soinside.com 2019 - 2024. All rights reserved.