Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Function has no implicit type

Tags:

fortran

I am trying to learn to work with functions. I have the following code:

program main
  implicit none

  write(*,*) test(4)
end program

integer function test(n)
  implicit none
  integer, intent(in) :: n
  integer :: i, ans

  ans=1
  do i=1,n
  ans=ans*i
  enddo

  test=ans
end function test

When I compile (with gfortran 4.1.2), I get the following error:

In file test.f90:4

  write(*,*) test(4)
           1
Error: Function 'test' at (1) has no IMPLICIT type
like image 473
sodiumnitrate Avatar asked Jul 19 '13 17:07

sodiumnitrate


2 Answers

Move the line

end program

to the end of your source file and, in its place, write the line

contains

As you have written your program it has no knowledge of the function test, which is what the compiler is telling you. I have suggested one of the ways in which you can provide the program with the knowledge it needs, but there are others. Since you are a learner I'll leave you to figure out what's going on in detail.

like image 175
High Performance Mark Avatar answered Sep 21 '22 08:09

High Performance Mark


Just in case, someone has the same problem an alternative way (especially for the case discussed in the comment) is to add

integer,external :: test

after

implicit none

in the main program.

like image 25
PeMa Avatar answered Sep 23 '22 08:09

PeMa