我是Fortran的新手,正在编写这个小程序,为一个圆写出100个有序对。
但是我遇到了上面提到的错误,我不知道如何解决。
implicit real*8(a-h,o-z)
parameter(N=100)
parameter(pi = 3.14159265358979d0)
integer*8 k
dtheta=2*pi/N
r=1.0d0
x00=0.0d0
y00=0.0d0
do k=0,N-1
xb(k)=r*cos(k*dtheta)-x00
yb(k)=r*sin(k*dtheta)-y00
enddo
open(64,file='xbyb.m',status='unknown')
write(64,*) (xb(k),k=0,N-1),(yb(k),k=0,N-1)
close(64)
end
您不声明数组xb
和yb
。
尽管从技术上讲不是FORTRAN 77,但我仍然建议使用implicit none
或至少一个等效的编译器选项来强制明确声明所有内容。隐式键入是邪恶的,并会导致错误。
如高性能标记所提醒,语法
f(k) = something
声明称为语句功能的功能(在Fortran 95及更高版本中已过时)。它声明一个参数为k
的函数。编译器识别出您的唯一方法是使用数组引用,而是正确地声明该数组。编译器抱怨声明函数是意外的,因为声明必须放在可执行的声明之前。
您在write
语句中暗含的do循环无论如何都是Fortran 90,因此在21世纪无需坚持使用FORTRAN 77。
其他提示:status='unknown'
是多余的,这是默认设置,只需将其忽略即可。您可以只写r = 1
和x00 = 0
。