EXIT 关键字有什么用?
What is the use of the EXIT keyword?
我见过很多 COBOL 程序都包含末尾的部分
XX-99.
EXIT.
该段落多次用于退出该部分,例如 GO TO XX-99
。我读到 EXIT
是一个空操作,因为它什么都不做。但 CONTINUE
也是如此。可以很容易地将 EXIT
替换为 CONTINUE
。或者,可以将 GO TO XX-99
替换为 EXIT SECTION
.
是否有任何令人信服的理由使用 EXIT
而不是 CONTINUE
?为什么要引入 EXIT
? EXIT
是在 CONTINUE
之前引入的吗?
注意:我不是在谈论 EXIT
与另一个保留字的组合,例如 EXIT PROGRAM
或 EXIT PERFORM
.
2014 年的标准仍然说:
The EXIT
statement provides a common end point for a series of procedures [...]
[it] shall appear in a sentence by itself that shall be the only sentence in the paragraph [...]
[and] serves only to enable the user to assign a procedure-name to a given point in a procedure division.
Such an EXIT
statement has no other effect on the compilation or execution.
即使在 COBOL 202x 中,这种格式仍然没有被标记为过时(而 EXIT PROGRAM
格式是,因为 GOBACK
提供了相同的功能)。
由于其与 CONTINUE
语句不同的语法规则,它已经不一样了(尽管一些 COBOL 编译器不强制执行此规则,其中一些甚至没有创建一个选项的选项如果违反此规则会发出警告)。
关于起源:COBOL-74似乎没有CONTINUE
声明(至少我的VAX-11 COBOL-74副本没有列出),它似乎与COBOL-85 中 PERFORM
语句的内联格式。
我个人也更喜欢 EXIT
的过程格式(EXIT SECTION
甚至 EXIT PARAGRAPH
如果程序中没有使用任何部分)而不是 GO TO
,但是与 COBOL 一样:遵循您的 team-/house-rules 是什么,有些人也可能会禁止这些。
Is there any compelling reason to use EXIT rather than CONTINUE?
Why was EXIT introduced anyway?
Was EXIT introduced before CONTINUE was?
没有“令人信服”的理由选择其中之一。没有实际区别。选择 EXIT
而不是 CONTINUE
的原因是符合现有的编码标准。
EXIT
是原始 COBOL 60 Report 的一部分,它是“编译器指导动词”。它的目的是标记已执行过程的结束,指示编译器将控制转移到调用 PERFORM
语句之后的语句或转移到下一次循环迭代的 PERFORM
语句。
在ANSI COBOL 68标准中,它变成了一个语句来标记一个执行过程的结束。它不再需要,因为执行范围的结尾是最后(或唯一)执行的段落或部分的结尾。它仍然是 GO TO
语句的方便目标。
[随着 SORT
语句的引入,EXIT
语句也可用于标记输入或输出过程的结束。]
CONTINUE
作为结构化编程更改的一部分在 1985 年标准中引入。它的目的是替换 IF
和 SEARCH
语句中使用的 NEXT SENTENCE
语句或语句格式需要命令语句的任何地方,但不需要做任何事情。正是在最后一次使用中,CONTINUE
语句可用于替换 EXIT
语句。
EXIT SECTION
是在 2002 标准中引入的。
我见过很多 COBOL 程序都包含末尾的部分
XX-99.
EXIT.
该段落多次用于退出该部分,例如 GO TO XX-99
。我读到 EXIT
是一个空操作,因为它什么都不做。但 CONTINUE
也是如此。可以很容易地将 EXIT
替换为 CONTINUE
。或者,可以将 GO TO XX-99
替换为 EXIT SECTION
.
是否有任何令人信服的理由使用 EXIT
而不是 CONTINUE
?为什么要引入 EXIT
? EXIT
是在 CONTINUE
之前引入的吗?
注意:我不是在谈论 EXIT
与另一个保留字的组合,例如 EXIT PROGRAM
或 EXIT PERFORM
.
2014 年的标准仍然说:
The
EXIT
statement provides a common end point for a series of procedures [...]
[it] shall appear in a sentence by itself that shall be the only sentence in the paragraph [...]
[and] serves only to enable the user to assign a procedure-name to a given point in a procedure division.
Such anEXIT
statement has no other effect on the compilation or execution.
即使在 COBOL 202x 中,这种格式仍然没有被标记为过时(而 EXIT PROGRAM
格式是,因为 GOBACK
提供了相同的功能)。
由于其与 CONTINUE
语句不同的语法规则,它已经不一样了(尽管一些 COBOL 编译器不强制执行此规则,其中一些甚至没有创建一个选项的选项如果违反此规则会发出警告)。
关于起源:COBOL-74似乎没有CONTINUE
声明(至少我的VAX-11 COBOL-74副本没有列出),它似乎与COBOL-85 中 PERFORM
语句的内联格式。
我个人也更喜欢 EXIT
的过程格式(EXIT SECTION
甚至 EXIT PARAGRAPH
如果程序中没有使用任何部分)而不是 GO TO
,但是与 COBOL 一样:遵循您的 team-/house-rules 是什么,有些人也可能会禁止这些。
Is there any compelling reason to use EXIT rather than CONTINUE?
Why was EXIT introduced anyway?
Was EXIT introduced before CONTINUE was?
没有“令人信服”的理由选择其中之一。没有实际区别。选择 EXIT
而不是 CONTINUE
的原因是符合现有的编码标准。
EXIT
是原始 COBOL 60 Report 的一部分,它是“编译器指导动词”。它的目的是标记已执行过程的结束,指示编译器将控制转移到调用 PERFORM
语句之后的语句或转移到下一次循环迭代的 PERFORM
语句。
在ANSI COBOL 68标准中,它变成了一个语句来标记一个执行过程的结束。它不再需要,因为执行范围的结尾是最后(或唯一)执行的段落或部分的结尾。它仍然是 GO TO
语句的方便目标。
[随着 SORT
语句的引入,EXIT
语句也可用于标记输入或输出过程的结束。]
CONTINUE
作为结构化编程更改的一部分在 1985 年标准中引入。它的目的是替换 IF
和 SEARCH
语句中使用的 NEXT SENTENCE
语句或语句格式需要命令语句的任何地方,但不需要做任何事情。正是在最后一次使用中,CONTINUE
语句可用于替换 EXIT
语句。
EXIT SECTION
是在 2002 标准中引入的。