最简单的Fortran代码仍有错误

时间:2013-10-07 15:18:44

标签: fortran

我正在学习Fortran的新工作,并开始编写一些非常非常基础的程序。要编译,我正在使用gcc版本4.6.2,而我正在使用Linux Suse OS(如果这很重要的话)。我相信我正在使用的Fortran版本是F90或F95。代码是使用VIM文本编辑器编写的。

这是我写的程序

INTEGER, PARAMETER :: x = 2, y = 3
INTEGER            :: z = x+y

print *, z

就是这样!哦,并且线条是缩进的,它们从第8列开始,因此缩进不是问题。

更新1 我试过这样做:

PROGRAM print_stuff
        print *, z
END PROGRAM print_stuff

我还尝试将IMPLICIT NONE语句添加到所有这些语句中,并且没有对错误进行更改。 END UPDATE 1

我保存,退出并编译。编译器返回此错误:

Error: Unexpected end of file in 'practice1.f'

任何人都知道问题是什么?我甚至尝试删除print语句,只是有变量声明但发生了同样的错误。它让我完全没有练习Fortran!

1 个答案:

答案 0 :(得分:4)

您的第一个版本

INTEGER, PARAMETER :: x = 2, y = 3
INTEGER            :: z = x+y

print *, z

不是有效的Fortran程序。每个有效的程序都以end语句结束。没有end语句的“程序”在语法上不正确。继续阅读您的入门教程。

我建议您养成使用程序语句启动程序的习惯,例如

program myprog

并以

结尾
end program myprog

严格来说,program语句和程序名称都不是必需的,但它们确实使事情看起来更容易理解。

哦,当我写作的时候......不要养成在第8栏开始排队的习惯,那就是现在已经过时的固定形式的来源。如果您使用合理的编译器(例如gcc),请为您的文件名添加.f90后缀,并让您的源代码免费运行。当然,一直遵守缩进的良好习惯。

编辑以响应OP的编辑

PROGRAM print_stuff
        print *, z
END PROGRAM print_stuff

INTEGER, PARAMETER :: x = 2, y = 3
INTEGER            :: z = x+y

print *, z
END

在语法上都是正确的。 gfortran(v4.1.2)和英特尔Fortran(v13.0.1)都正确编译并生成可执行的可执行文件。