FORTRAN错误#6404:此名称没有类型,并且必须具有显式类型

时间:2011-12-11 08:08:42

标签: fortran intel-fortran

我是FORTRAN的新手,并且收到了这个错误#6404。

my_file.f(11): error #6404: This name does not have a type, and must have an explicit type.
[POTENCIAL]      d=POTENCIAL(1.0,1.0,1.0,1.0,1.4,1.4)

这是ifort编译器,我希望它不是编译器错误。

我错的任何想法?

  program iiuu
  implicit none
  REAL*8 d
  d=POTENCIAL(1.0,1.0,1.0,1.0,1.4,1.4)
  write(*,*) 'potential=', d
  END program iiuu

  FUNCTION POTENCIAL(R1,R2,R3,R4,R5,R6)
  REAL*8 R1,R2,R3,R4,R5,R6,V2,V3,V4
  DIMENSION R(6)
  R(1)=R1
  R(2)=R2
  R(3)=R3
  R(4)=R4
  R(5)=R5
  R(6)=R6
  V2=V2BODY(R)
  V3=V3BODY(R)
  V4=V4BODY(R)
  POTENCIAL=V2+V3+V4+VADD(R)
  RETURN
  END

  FUNCTION V2BODY(R)
  .....
  .....

2 个答案:

答案 0 :(得分:14)

不,这不是编译器错误。这是对代码的编辑,至少有可能编译:

program iiuu
  implicit none
  REAL*8 d
  d=POTENCIAL(1.0d0,1.0d0,1.0d0,1.0d0,1.4d0,1.4d0)
  write(*,*) 'potential=', d

  contains

  real*8 FUNCTION  POTENCIAL(R1,R2,R3,R4,R5,R6)
  REAL*8 R1,R2,R3,R4,R5,R6,V2,V3,V4
  real*8, DIMENSION(6) :: R
  R(1)=R1
  R(2)=R2
  R(3)=R3
  R(4)=R4
  R(5)=R5
  R(6)=R6
  V2=V2BODY(R)
  V3=V3BODY(R)
  V4=V4BODY(R)
  POTENCIAL=V2+V3+V4+VADD(R)
  END function potencial

  END program iiuu
  1. 您的potencial函数没有返回类型(这是您遇到的原始错误消息)
  2. 它没有返回任何内容(return声明没有必要)
  3. 在调用点编译器不知道在哪里查找该函数。将您的功能打包到modulesuse,或使用contains语句,如上例所示
  4. 1.0是单精度的。使用1.d0告诉编译器它是双精度数
  5. 为什么你要发送六个数字而不是将数组作为potencial函数的参数?

答案 1 :(得分:2)

我得到了它的工作。 只是将其更改为正确的数据类型表示。 其余的仍然相同。

program iiuu
IMPLICIT none
REAL*8 d, POTENCIAL
d=POTENCIAL(1.0d0,1.0d0,1.0d0,1.0d0,1.4d0,1.4d0)  
write(*,*) 'potential=', d
END program iiuu

FUNCTION POTENCIAL(R1,R2,R3,R4,R5,R6)
IMPLICIT REAL*8(A-H,O-Z)
DIMENSION R(6)
R(1)=R1
R(2)=R2
......
......