如果PARA只有EXIT语句,GO To流程如何表现/工作

时间:2014-11-03 06:50:58

标签: ibm-midrange cobol

例如输出是什么?

  PROCEDURE DIVISION
    MAINPARA
        DISPLAY "MAIN".
        GO TO PARA1.
        DISPLAY "DISPLAY".
        STOP RUN.

    PARA1.
        EXIT.

    PARA2.
        DISPLAY "I AM IN PARA2"
    ...

是否会执行PARA2?

我不是COBOL程序员,我需要了解迁移工具/进程AMXW COBOL的代码。目标系统是IBM AS / 400。

1 个答案:

答案 0 :(得分:5)

与其他问题一样,它会继续PARA2

在任何情况下,

EXIT都不会做任何事情。

如果要做任何事情,只有在涉及PERFORM时才会这样做。如果涉及PERFORM,程序员可能会认为EXIT有某处可以返回。使用GO TOEXIT会去哪里?

退出没有任何作用。在任何情况下。

见这里:https://www.ibm.com/developerworks/community/forums/html/topic?id=4f9b202f-fba2-4802-8d61-8e31aef22d0e&ps=25

我假设你有一个IBM Midrage COBOL,因为你一直用RPG标记你的COBOL问题。 https://www.ibm.com/developerworks/community/forums/html/topic?id=4f9b202f-fba2-4802-8d61-8e31aef22d0e&ps=25

以上链接描述了CONTINUE的情况,但当前IBM编译器中的CONTINUE和EXIT具有相同的功能(没有生成代码),也在那里解释。

那么EXIT和CONTINUE会做什么?它们都是“无操作”声明,但它们必须有用吗?

他们是给我们的。如果我们没有我们可以使用的声明,或者作为我们自己预期会发生的事情的提醒,我们会使用它们。

例如,如果网站标准不允许在IF中使用否定,您可能会看到:

IF A EQUAL TO B
    CONTINUE
ELSE
    Do some stuff...
END-IF 

必须IF之后的声明,但您实际上并不想做任何事情。使用CONTINUEIF现在将完全按照您的需要进行编译和运行。

您还会看到以下内容:

    PERFORM 300-PARA THRU 300-PARA-EXIT

    ...

300-PARA.

    ...

    IF some-condition
        GO TO 300-PARA-EXIT
    END-IF

    ...

300-PARA-EXUT.
     EXIT.

由于PERFORM范围(THRU),PERFORM将以300-PARA-EXIT的最后一个语句结束。为避免编译器诊断,段落必须包含某些内容。无效的东西是EXIT

许多人错误地认为CONTINUEEXIT实际上有所作为。我有钱说他们没有。

在IBM编译器上,EXIT多年来发生了一些变化。过去,EXIT 只能出现在一个段落中。它仍然没有生成代码,但无法与CONTINUE互换使用。放屁!不再是真的。那是我的讽刺。