Функция не имеет неявного типа

Я пытаюсь научиться работать с функциями. У меня есть следующий код:

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

Когда я компилирую (с gfortran 4.1.2), я получаю следующую ошибку:

In file test.f90:4

  write(*,*) test(4)
           1
Error: Function 'test' at (1) has no IMPLICIT type

Ответы на вопрос(3)

Ваш ответ на вопрос