2012-01-22 52 views
11

为什么COBOL必须缩进,因为在每个源文件中都有额外的间距?为什么COBOL必须缩进?

考虑以下代码(注意额外的空格):

IDENTIFICATION DIVISION. 
    PROGRAM-ID. HELLO-WORLD. 
    PROCEDURE DIVISION. 
     DISPLAY 'Hello, world'. 
     STOP RUN. 

类似的格式可在Fortran代码中可以看出:

program hello 
     print *, "Hello World!" 
    end program hello 

但为什么COBOL和Fortran需要这个空白?什么原因?

+0

代码可能是Fortran 90或更新的版本,而不是77. –

回答

19

Cobol不再需要缩进。 AFAIK,全部大多数现代编译器支持格式免费的Cobol源代码。

最初的原因是打孔卡。 Cobol保留了前6个位置的序列号。第7列是一个延续/评论/调试/换页。区域“A”或列8-11表示某些特殊的语言工件,如01级别,章节或段落名称等。区域“B”或第12-72列是开放代码。第73-80列是OS序列号。

您提到的两种语言Cobol和Fortran都是在自动分析器生成之前编写的。而且他们没有真正的现有技术来吸取如何创建可解析的源文本的好的和坏的想法。所以一些东西 - 比如用于特殊节标题的区域“A” - 使得手动编写解析器的任务更容易。现代语言倾向于使用上下文无关语法来简化语法分析器的生成。但那是对Cobol的追捧。

+3

IBM Enterprise COBOL编译器(大型机)仍然需要列。 – zarchasmpgmr

+0

确实你是对的。 SRCFORMAT(EXTEND)仅在IBM Cobol for AIX上可用。 –

+0

我没有看到使用打孔卡和缩进规则之间的直接联系。你答案的第二部分似乎给出了一个更合理的理由。 – eriktous