为什么COBOL同时具有"SECTION"和"PARAGRAPH"?

Nea*_*alB 21 cobol language-design

为什么COBOL兼具SECTIONPARAGRAPH

谁能解释为什么COBOL的设计师创造了SECTIONs和PARAGRAPHs?自从COBOL最初发布以来,这些已经存在,所以我怀疑它们存在的真正原因早已消失(类似于NEXT SENTENCE仍然在语言规范中以实现向后兼容性但从引入显式范围终止符后不再需要的事物).

我的猜测SECTION可能是为了支持程序覆盖而引入的.SECTION有一个与之关联的可选PRIORITY编号,用于标识它所属的程序覆盖.但是,大多数COBOL的现代实现忽略或丢弃了PRIORITY数字(和覆盖).

目前,我看到部分SECTION仍然需要s ,但是没有理由这样做.我看不出有什么语义差别之间,并比其他隶属于.DECLARATIVEPROCEDURE DIVISIONSECTIONPARAGRAPHPARAGRAPHSECTION

有些COBOL商店禁止使用的SECTION支持PARAGRAPH(在北美似乎普遍).其他人禁止PARAGRAPH赞成SECTION(在欧洲似乎很常见).还有一些人有关于何时适当的指导方针.所有这一切对我来说都是非常武断的 - 这就引出了一个问题:为什么他们首先会被纳入语言规范?而且,它们今天有任何相关性吗?

如果你回答这个问题,如果你也可以指出一个支持你的答案的参考文件,那将会很棒.

谢谢

小智 7

没有参考,因为我听说它从我店里的一个老定时器传递给我但是......

在旧的COBOL编译器中,至少对于IBM和Unisys,部分能够一次一个地加载到内存中.回到过去的时候,当内存不足时,一个太大而无法一次性加载到内存中的程序能够使用部分模块化内存使用.有两个部分和段落允许程序员决定哪些代码部分一起加载到内存中,如果它们不能同时加载 - 你需要将同一个执行循环的两个部分加载到一起以提高效率.如今它或多或少没有实际意义.

我的商店只使用段落,禁止GOTO并要求退出段落,所以我们所有的PERFORMS都是PERFORM 100-PARAGRAPH THRU 100-EXIT或类似的东西 - 这似乎使段落更像我的部分.但我不认为现在真的有太大的不同.


小智 6

我在1978年左右在ICL 2903上学习了COBOL.我有一个模糊的内存,可以为SECTION标题分配一个数字范围,这意味着当程序对于内存太大时,那些SECTION标题可以换入和换出内存.


小智 5

我知道这是一个老问题,但OP要求提供有关在SECB中使用SECTION以及PARAGRAPH的原始理由的文档.

您无法获得比CODASYL Journal文档更"原创"的内容.

在期刊的语言规范的第8节中,

"COBOL分段是一种工具,它提供了一种方法,用户可以通过该工具与编译器通信以指定目标程序覆盖要求"

(第331页,第8.1节"分段 - 一般说明")

"虽然不是强制性的,则过程司源程序通常被写成一组连续部分,其中的每一个是由一系列被设计来共同地执行特定功能密切相关的操作的,但是š分割时如果使用,整个程序部门必须分段.此外,每个部分必须归类为属于目标程序的固定部分或独立部分之一.分段决不会影响程序资格的需要 - 确保唯一性的名字."

(第331页,第8.1.2.1节"程序段")

在她关于比较编程语言的书("编程语言:历史与基础",1969年)中,Jean Sammet(代表Sylvania Electric的CODASYL委员会成员)表示:

"..存储分配由编译器自动处理.分配可执行代码的主要单元是一组称为段的部分. 程序员组合部分为每个部分的名称指定优先级编号....编译器是必需的看到提供了适当的控制转移,以便可以进行未同时存储的段之间的控制......."

(p 369 - 371 V.3 COBOL)