2015-05-11 158 views
1

我是Fortran的新手,编写这个小程序为圆圈写出100个有序对。Fortran 1中的意外声明函数

但我得到的错误上面提到的,我不知道如何解决。

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 

回答

4

您不声明阵列xbyb

虽然技术上不是FORTRAN 77我还是建议使用implicit none或至少等效编译器选项来强制显式声明的一切。隐式输入是邪恶的,并导致错误。

高性能马克提醒,语法

f(k) = something 

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

您在write声明中暗示的循环无论如何都是Fortran 90,所以在21世纪没有必要坚持使用FORTRAN 77。

其他提示: status='unknown'是多余的,这是默认值,只是将其忽略。 你可以写r = 1x00 = 0