如何在没有goto语句的情况下在结束前留下一个部分

时间:2014-10-06 15:23:38

标签: cobol

在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还有其他办法吗?

提前感谢您的帮助!

2 个答案:

答案 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将"转到"紧接在句号

的句号/句号之前的假设CONTINUE语句

如果在一个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.