我在Uni的时候,在Fortran IV,我们以前能写这样的程序
program main
integer his days, her days, total of days
his days = 15
her days = 25
total of days = his days + herdays
write(5,100) total of days
100 format(1X, I10)
stop
end program我试着把它构建成一个F77程序,然后编译并运行。我不知道F77中是否明确允许空间,但我记得在Fortran (66)中用变量中的空格编写程序。它在gfortran、Powerstation 4、Silverfrost和一个旧的g77编译器中构建和运行。想必它也会在IVF编译器上工作(因为IVF在前世是Powerstation4 )。我现在连一个都没有。如果我告诉编译器这是F90/95..。程序,它甚至不编译。
f90test.f90:2:17:
integer his days, her days, total of days
1
Error: Syntax error in data declaration at (1)
f90test.f90:4:6:
his days = 15
1
Error: Unclassifiable statement at (1)
f90test.f90:5:6:
her days = 25
1
Error: Unclassifiable statement at (1)
f90test.f90:6:6:
total of days = his days + herdays
1
Error: Unclassifiable statement at (1)
f90test.f90:8:21:
print *, total of days
1
Error: Syntax error in PRINT statement at (1)这两个问题是
,
中删除的可变名称的空间。
发布于 2020-05-01 20:10:58
当您使用.f90文件扩展名时,它将被视为自由格式源文件。在自由格式中,空格很重要。这一来源形式是在Fortran 90中引入的。为了向后兼容,关键字可以分为拆分方式和非拆分方式(GOTO和GO TO、END IF和ENDIF)。但是,标识符(名称)不允许包含此源表单中的空格。
如果您想使用固定格式源文件,请使用.f或.for。最好参考编译器的手册,看看它所允许的扩展。固定源表单现在仍然是一个有效的源表单,尽管在Fortran 2018中标记为过时。空间在固定源形式中没有任何意义,即使它是Fortran 90甚至Fortran 2018代码。
请注意,今天的编译器将大多数代码编译为一些新标准(2003、2008或2018),不管扩展是什么。值得注意的是,扩展.f90不被视为Fortran 90,它只是在大多数(或全部)中标记源文件形式。编译器。还请参见Correct suffix for Fortran 2003 source file - Intel Fortran compiler这个命名约定不是由标准定义的,而是相当通用的。
发布于 2020-05-20 14:34:48
Fortran和Fortran 77都允许在名称和关键字中使用空格,但是,但它们的名称限制都是6个字母。因此,在这些方言的编译器的严格实现中,不允许使用所有变量名称示例。
https://stackoverflow.com/questions/61549939
复制相似问题