2012-01-22 50 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