我也碰到过这段代码,我想知道哪条线将被执行,如果x是小于3下一句和嵌套句子
IF (X < 3)
NEXT SENTENCE
ELSE
GO TO A010-DO-A.
GO TO B010-DO-B.
GO TO C010-DO-C.
我不知道下一句会注意到句子嵌套在ELSE块中。当执行NEXT SENTENCE时,它会跳过转到A010-DO-A。或转到B010-DO-B。?
我也碰到过这段代码,我想知道哪条线将被执行,如果x是小于3下一句和嵌套句子
IF (X < 3)
NEXT SENTENCE
ELSE
GO TO A010-DO-A.
GO TO B010-DO-B.
GO TO C010-DO-C.
我不知道下一句会注意到句子嵌套在ELSE块中。当执行NEXT SENTENCE时,它会跳过转到A010-DO-A。或转到B010-DO-B。?
不要混淆语句和句子的范围在COBOL。
句子以句号结尾(如果您是英国人,则句号为句号)。 Next句子 转到当前句子结束后的下一个语句。在 你的榜样,这将是GO TO B010-DO-B
在用Cobol NEXT SENTENCE
一般使用折旧 - 至少从 引进范围终止,如END-whatever
这happend一段时间在1985年左右(如END-IF
。)!请不要 使用NEXT SENTENCE
以上。您需要知道它是什么以及它的作用 为了读取遗留代码,但请 避免在任何新代码中使用它。
一种更好的方式来写在你的例子中的代码是:
IF (X < 3)
CONTINUE
ELSE
GO TO A010-DO-A
END-IF
GO TO B010-DO-B
GO TO C010-DO-C
或...
IF (X >= 3)
GO TO A010-DO-A
END-IF
GO TO B010-DO-B
GO TO C010-DO-C
通知所有的周期(.
)已被删除,因为 范围终结者END-IF
使它们成为冗余。 只有在程序结束时(即段落/章节)和其他一些地方才需要。 CONTINUE
声明基本上没有任何操作,因此除了作为 以保持语法有效外,没有其他影响。
顺便说一句...最好我可以告诉,该语句GO TO C010-DO-C
逻辑上无法访问。
谢谢你。我只是读这个遗留代码,我必须转换成一个PL/SQL过程(我试图在这里重写,使其通用)。其中一些非常令人困惑,我明白为什么NEXT SENTENCE已被弃用。 – Eric 2011-06-08 18:02:48
下一个句子“分支”(编译器生成的任何语言的转到)转到下一个完全停止/句点之后的代码行,它位于物理上位于NEXT SENTENCE语句之后。它实际上是一种转到无需“标签”。
如前所述,它不应该用在新代码中。
COBOL中不存在“嵌套语句”,因此在这里也没有'ELSE语句块中的嵌套语句'。它是一个嵌套的*语句。* – EJP 2017-05-10 00:02:14