固定格式
Fortran作为历史上第一种高级语言,其程序编写的规则与当时使用的计算机系统有很大的关系。早期的计算机系统须用卡片将源程序输入,一张卡片相应于源程序的一行。由于卡片物理宽度的限制,因此一行程序允许的字符数也是有限的。由此决定了F77的格式,既为F90/95中的固定格式。
一张卡片有12行80列,一个字符由相应一列上的1—3个孔个孔来代表。如源程序某行第11列为字符“A”,则在该列上第12行和第l行上各穿一个方孔,注意此卡片允许的特殊字符只有十一个。
卡片输入机一个源程序有100行,则需要100张卡片输入。
卡片穿孔机 F77程序纸F77程序纸,一行有80列,每行一条程序语句。这80列分为四个区
标号区:第l—5列
编写l至5位无符号整数标号,也可以没有标号,其中空格不起作用,标号大小顺序没有任何要求。一行中第一列为C或*的,该行即被认为注释行,编译时不作翻译。如果出现以上三种以外的字符,则编译时按出错处理。
续行区:第6列
如果在一行的第6列上写一个非空格和非零的字符,则该行作为其上一行的续行。(注意在某些系统中,这个字符可以不限于上面所列的,如 @ } ] ~ 等字符均可使用)
F77允许一个语句有19个续行(即一个语句最多可以写成20行)。由于FORTRAN软件允许任何ASCII字符集中可打印的字符,所以有的程序中第6列上用“l”,“2”,…表示该行是第1个或第2个续行,但用数字字符容易与第7列的数字形成连续的数字串而引起错觉,故最好使用固定的特殊字符。
语句区:第7—72列
不要求一定从第7列开始写语句,可以从第7列以后(72列以前)的任何一列开始写,但一行只能写一个语句。如果写满了72列,一旦在终端上修改程序时在该行又插入了一些字符,就会使本行最后几个字符超出语句区而引起意料不到的错误。特别注意到语句最后的空格将可能溢出72列,在某些计算机系统上将导致难以查出的错误。应注意,引号内的字符串中所包括的空格是有效的,不能忽略
注释区:第73—80列
在卡片输入法时代,程序员一般利用此8列为程序行编序号以便查找。注释区只对程序员提供辨别信息,不是语句的一部分,在编译时不对72—80列作处理
自由格式
在F90中,用自由格式编写程序有很大的自由度。与固定格式相比,不易产生键入位置的错误,而且易读易懂。
行 :一行为132列。可以有复数条程序语句,语句间用分号“;”分开。语句没有位置规定。
注释行:起始用注释符“!”号,此行其后的所有字符均作为注释(字符串中的!号除外,如 print *,’help!!!!’ )。
续行 :当一个语句非常长以至于132列都书写不下时,允许有39个续行。在语句行最后加上续行符“&”号。如果字符串跨2行以上,则在续行的开始位置也要加&号。注意语句的有效字符是从“&”前和续行符“&”之后的位置算起。
空格 :在语句名和变量名中间不能有空格。需要空格的地方必须有一个以上空格(GOTO和GO TO,ELSEIF和ELSE IF,END构造名(构造名有:DO, PROGRAM, FUNCTION, MODULE, SUBROUTINE)等有两种写法的除外),如关系运算符 ==,<= 不能写成 = =,< =。这与F77有很大不同之处,因为F77的设计中将编译源程序的空格忽略。
当程序员要将自己编写的F90程序与现有的用F77编写的子程序库在源码级结合起来的话,需要特别注意格式的差别。
以上两种格式的源程序在编译时可以用选项来指定,对应的默认文件扩展名为:
固定格式: .for 或 .f [fixed.for]
自由格式: .f90 [free.f90]
网友评论