Fortran 中 1 处的意外语句函数

Unexpected Statement Function at 1 in Fortran

我是 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

您没有声明数组 xbyb

虽然在技术上不是 FORTRAN 77,但我仍然建议使用 implicit none 或至少一个等效的编译器选项来强制显式声明所有内容。隐式类型是邪恶的,会导致错误。

正如 High Performance Mark 提醒的那样,语法

  f(k) = something

声明一个称为语句函数的功能(现在在 Fortran 95 及更高版本中已过时)。它声明了一个参数 k 的函数。编译器识别您的意思是数组引用的唯一方法是正确声明数组。编译器抱怨语句函数是意外的,因为声明必须放在可执行语句之前。

你在 write 语句中隐含的 do 循环无论如何都是 Fortran 90,所以在 21 世纪不需要坚持使用 FORTRAN 77。

其他提示: status='unknown' 是多余的,这是默认的,把它去掉就行了。 你可以只写 r = 1x00 = 0.