Fortran中1处的意外语句功能

时间:2015-05-11 20:20:01

标签: fortran fortran77

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

1 个答案:

答案 0 :(得分:4)

您没有声明数组xbyb

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

正如高性能马克提醒的那样,语法

  f(k) = something

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

你在write语句中暗示的循环是Fortran 90,所以不需要在21世纪坚持FORTRAN 77。

其他提示:   status='unknown'是多余的,这是默认设置,只需将其删除即可。   您只需撰写r = 1x00 = 0

即可