首页 > 解决方案 > 比较字段时 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 Displayed 的值是非数字的。

你能建议在这里可以做什么吗?

标签: cobolmainframe

解决方案


我们有这种情况,我们需要比较 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数字字段,但我相信你可以将它放在上面代码的某个地方。


推荐阅读