【发布时间】:2015-01-05 13:22:59
【问题描述】:
我在业务中使用 COBOL,最初是在一个使用 perform - thru ... 的网站上学习的。
现在我换了工作,当地的编程标准不一样,所以我需要习惯 PERFORM without THRU。
我也对段落中句号/句号/点的使用有疑问。
您可以使用句点来结束段落中的句子。我这样说是因为我在段落以第一点结尾的地方读到,而在其他地方我看到句号/句号/点的用法与此不同。
我写了两个结构,我理解它们应该是相等的。是这样吗?
结构 A:
PERFORM 100-WRITING.
PERFORM 200-FINISH.
100-WRITING.
*-----------
DISPLAY "HI MY NAME IS FELIPE".
DISPLAY "THE WORLD IS GREAT".
DISPLAY "I DONT SPEAK ENGLISH".
200-FINISH.
*----------
DISPLAY "BYE BYE BABY".
DISPLAY "ESTO ES TODO".
结构 B:
PERFORM 100-WRITING.
PERFORM 200-FINISH.
100-WRITING.
*-----------
DISPLAY "HI MY NAME IS FELIPE"
DISPLAY "THE WORLD IS GREAT"
DISPLAY "I DONT SPEAK ENGLISH".
200-FINISH.
*----------
DISPLAY "BYE BYE BABY"
DISPLAY "ESTO ES TODO".
【问题讨论】:
-
应该是一样的。
PERFORM THROUGH是邪恶的——它产生依赖于布局的代码。 -
@Magoo:PERFORM 1000-CODE THRU 1000-EXIT 并不邪恶。这只是一种不同的 COBOL 风格。
-
“邪恶”可能是一个强烈的词,但应该劝阻那些积极促进自己脚部射击的代码风格,而应该鼓励那些不鼓励的代码风格。我们可以用裸机语言编写所有内容,毕竟那只是另一种代码风格......
-
对于 Unisys 2200 COBOL 和 DMS 数据库,ON ERROR GO TO 是首选的错误处理方法,因此为了理智起见,将数据库访问封装到 PERFORM ... THRU ... 段落块中是必不可少的。
-
@Kennah 在这种情况下,使用 SECTIONs 将消除对 PERFORM ... THRU ... 的需要。 SECTIONs 不是一个完美的答案,因为不知道的人可以插入一个段落而没有意识到它将它附加到前一个 SECTION 上(同样,一个段落可能会在不知不觉中包含在 THRU 范围内),但是使用 SECTIONs 就少了“东西”(只是
PERFORM section-name,与PERFORM paragraph-name相同)。 SECTION 可以提供一些保护措施,防止复制/粘贴 GO TO 而不更改名称(使所有退出名称相同)。