为什么COBOL必须缩进?

hio*_*obs 12 cobol fortran code-formatting

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

考虑这段代码(注意额外的空格):

  IDENTIFICATION DIVISION.
  PROGRAM-ID. HELLO-WORLD.
  PROCEDURE DIVISION.
      DISPLAY 'Hello, world'.
      STOP RUN.
Run Code Online (Sandbox Code Playgroud)

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

   program hello
      print *, "Hello World!"
   end program hello
Run Code Online (Sandbox Code Playgroud)

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

Joe*_*ger 21

Cobol不再需要缩进.AFAIK,所有 现代的编译器都支持无格式的Cobol源代码.

最初的原因是处理打卡.Cobol保留了序列号的前6个位置.第7列是continuation/comment/debug/form-feed.区域"A"或第8-11列表示某些特殊语言工件,如01级,部分或段落名称等.区域"B"或第12-72列用于开放代码.第73-80列用于OS序列号.

您提到的两种语言Cobol和Fortran都是在自动解析器生成之前编写的.他们没有真正的先前技术可以利用如何创建可解析的源文本的好的和坏的想法.所以有些东西 - 比如特殊区域标题的区域"A" - 使得手动编写解析器的任务变得更加容易.现代语言倾向于使用无上下文语法来使解析器生成变得简单.但那是后期的Cobol.

  • 序列号的整个想法是这样的,如果你把你的甲板放在地板上,你可以把它放在卡片分拣机中并按顺序取回. (7认同)
  • IBM Enterprise COBOL编译器(大型机)仍然需要列. (3认同)
  • 如果不教授早期的情况,很难解释。当我学习COBOL时,我们有了一个带8K主内存,一个4K扩展盒和一个2.5MB磁盘(没有“ OS”)的IBM 1401。在尝试为这种环境编写COBOL编译器之前,很难理解格式化规则如何对编译器有所帮助。 (2认同)