Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 为什么COBOL必须缩进?_Fortran_Code Formatting_Cobol - Fatal编程技术网

Fortran 为什么COBOL必须缩进?

Fortran 为什么COBOL必须缩进?,fortran,code-formatting,cobol,Fortran,Code Formatting,Cobol,为什么COBOL必须缩进,例如,在每个源文件中都有额外的间距 考虑以下代码(请注意附加的空格): 在Fortran代码中可以看到类似的格式: program hello print *, "Hello World!" end program hello 但是为什么COBOL和Fortran需要这个空格呢?原因是什么?Cobol不再需要缩进。另外,所有大多数现代编译器都支持无格式Cobol源代码 最初的原因是处理穿孔卡片。Cobol保留行序列号的前6个位置。第7列是一个c

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

考虑以下代码(请注意附加的空格):

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

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

但是为什么COBOL和Fortran需要这个空格呢?原因是什么?

Cobol不再需要缩进。另外,所有大多数现代编译器都支持无格式Cobol源代码

最初的原因是处理穿孔卡片。Cobol保留行序列号的前6个位置。第7列是一个continuation/comment/debug/form提要。区域“A”或第8-11列表示某些特殊语言构件,如01层、节或段落名称等。区域“B”或第12-72列表示开放代码。第73-80列是操作系统序列号


您提到的两种语言Cobol和Fortran都是在自动解析器生成之前编写的。而且,他们没有真正的现有技术来借鉴如何创建可解析的源文本的好主意和坏主意。因此,其中的一些功能(如用于特殊节标题的区域“A”)使手动编写解析器的任务变得更容易。现代语言倾向于使用上下文无关语法来简化解析器生成。但是,这会延迟Cobol。

IBM企业Cobol编译器(大型机)仍然需要列。事实上,您是正确的。SRCFORMAT(EXTEND)仅在IBM Cobol for AIX上可用。序列号的整个概念是,如果您将卡片放在地板上,您可以将其放入卡片分拣机中,然后将其按顺序重新排序。区域A/B的原因是用于文档。在Fortran中,您可以得到类似GOTO 100或GOTO 200的值。在Cobol中,将是转到100-RESTART或转到200-NEXT-PERSON。不需要评论:标签(如果考虑得当)告诉你为什么要去那里。模仿Fortran,它们有自己的区域,因此它们很突出,很容易找到(如果它们是按数字顺序排列的,也很有帮助)。如果不教授早期的情况,很难解释。当我学习COBOL时,我们有一台IBM1401,带有8K主内存、4K扩展盒和2.5MB磁盘(没有“操作系统”)。在您尝试为这种环境编写COBOL编译器之前,理解格式化规则如何帮助编译器是很困难的。代码可能是Fortran 90或更高版本,而不是77。
   program hello
      print *, "Hello World!"
   end program hello