在cobol中,一个部分(类似于c中的函数)可能如下所示:
abc section.
command a
command b
if a = 4
go to abc-end
end-if
command c
command d.
abc-end.
exit.
到目前为止,我唯一可能在结束前离开该部分(在a = 4上),使用命令“goto”。
没有goto还有其他办法吗?
提前感谢您的帮助!
答案 0 :(得分:2)
就像你的例子一样。
abc section.
command a
command b
if a NOT EQUAL TO 4
command c
command d
end-if
.
像这样发明的东西,但有名字来帮助掌握这个东西。
30D-UNPACK-CRATE SECTION.
PERFORM 30DA-COMMON-PER-CRATE
IF NOT STANDARD-CRATE
PERFORM 30DD-NON-STANDARD-CRATE
END-IF
.
或
30D-UNPACK-CRATE SECTION.
PERFORM 30DA-COMMON-PER-CRATE
IF SPECIAL-CRATE
PERFORM 30DD-NON-STANDARD-CRATE
END-IF
.
这使用88级条件名称,因此可能
88 STANDARD-CRATE VALUE "A" THRU "D" "J" "2".
88 SPECIAL-CRATE VALUE "X" "Z".
再次,只是例子。
除了你已经在使用SECTION之前(如果你有一个SECTION,下一节之前的所有段落都属于那个段落,所以你不能有孤立的段落),上面可能是一个SECTION或者一个段落。不需要PERFORM .... THRU ......或......部分。除了本地标准......以及SECTIONs,该程序如何编码。
退出PARAGRAPH并退出部分。
这些可能在你正在使用的编译器上可用,也可能没有。
请注意它们在功能上等同于GO TO,但有一些警告,所以用它们替换GO TO会产生错误的感觉...我不知道是什么,但它会是假的。
PERFORM THE-FIRST
THE-FIRST SECTION.
TF-1.
some code
.
TF-2.
some code
.
TF-9.
some code
.
不同的计划:
PERFORM A-PARAGRAPH THRU AP-9
A-PARAGRAPH.
some code
.
AP-1.
some code
.
AP-9.
some code
.
通常,您会发现SECTION的最后一段只包含EXIT
(并且请注意EXIT
不会生成任何代码,它只是一个占位符)以及与PERFORM ... THRU ...
类似的情况
通常PERFORM ... THRU ...
只会包含两个段落,但除了当地标准之外没有其他内容可以说明了。
EXIT SECTION
将"转到"紧接在终止/期间的终止/期间之前的假设CONTINUE声明。
EXIT PARAGRAPH
将"转到"紧接在句号
如果在一个SECTION中使用EXIT PARAGRAPH
,或者在包含多个段落的PERFORM ... THRU ...
范围内,不包括任何仅使用EXIT
的段落,则它可能无效作者期望也不会像下一位读者所期望的那样。
THE-FIRST SECTION.
TF-1.
some code
IF condition
EXIT PARAGRAPH
END-IF
some more code
IF condition
EXIT SECTION
END-IF
some more code
<EXIT PARAGRAPH will arrive here>
.
TF-2.
some code
.
TF-9.
some code
<EXIT SECTION will arrive here>
.
A-PARAGRAPH.
some code
IF condition
EXIT PARAGRAPH (a - just descriptive, not syntax)
END-IF
some more code
<EXIT PARAGRAPH (a) will arrive here>
.
AP-1.
some code
IF condition
EXIT PARAGRAPH (b - just descriptive, not syntax)
END-IF
some more code
<EXIT PARAGRAPH (b) will arrive here>
.
AP-9.
some code
.
因此,如果在SECTION中使用EXIT PARAGRAPH
或在PERFORM ... THRU ...
中使用多个段落而不是单个EXIT
,那么您可能会创建一个更糟糕的情况而不是使用简单的GO TO(当分支的预定目的地是显而易见的),同时使用看起来像结构化的结构#34;。
答案 1 :(得分:2)
从草案,FCD 1.0(E)2010-08-06
The EXIT PARAGRAPH and EXIT SECTION statements provide a means of exiting a
structured procedure without executing any of the following statements within
the procedure.