在函数中声明变量(Fortran)

时间:2016-06-07 10:30:09

标签: fortran gfortran

我正在尝试在Fortran(首次使用者)中编写一个非常简单的函数:

program Main 
  implicit none 
  integer function k(n) 
    integer, intent(in) :: n 
    k=n 
   end function k 
 end program Main

我收到了一堆错误:

integer function k(n)
                  1
Error: Syntax error in data declaration at (1)

   integer, intent(in) :: n
                          1
Error: Unexpected data declaration statement at (1)

   end function k
     1
Error: Expecting END PROGRAM statement at (1)

   k=n
   1
Error: Symbol ‘k’ at (1) has no IMPLICIT type

   k=n
     1
Error: Symbol ‘n’ at (1) has no IMPLICIT type

我做错了什么?我使用的是gfortran的最新版本。

1 个答案:

答案 0 :(得分:4)

程序块本地的任何声明的函数和子程序应放在contains语句之后,例如

program Main 
  implicit none 
 contains
  integer function k(n) 
    integer, intent(in) :: n 
    k=n 
   end function k 
end program Main

举一个使用它的程序的例子,你可以有

program Main 
  implicit none 
  integer :: myLocalN
  myLocalN = 2
  print*, "My local N is ", myLocalN
  print*, "The value of this squared is", sq(myLocalN)
 contains
  integer function sq(n) 
    integer, intent(in) :: n 
    sq=n*n 
   end function sq
end program Main
相关问题