O resultado da função não possui tipo implícito

Abaixo está um código de exemplo que aborda o problema que estou tendo. A mensagem de erro que estou recebendo é

O resultado da função 'amostra' em (1) não tem tipo IMPLICIT.

Rotulo onde a linha (1) está abaixo.

Eu tentei seguiressa outra pergunta, no entanto, não consegui descobrir. Esta função está dentro de um módulo no meu programa e eu verifiquei se o módulo possuicontains e encerro o módulo após esta função.

Eu também usoimplicit none nessa função, então não sei por que recebo essa mensagem. Como posso corrigir esta mensagem de erro?

AdicionandoReal ouComplex em frente defunction funciona, mas eu realmente não entendo o porquê. Eu não deveria ser capaz de usar complexo apenas porque as matrizes são complexas dentro da função? Qual é o mais adequado para a minha função real? Ambos não produzem erros de compilação.

real function Sample(func)   !this is line (1)
!complex function Sample(func)

implicit none

integer :: n,m
real :: x,y
complex, dimension(-9:9,-9:9), intent(in) :: func
complex, dimension(-9:9,-9:9) :: LocalF

LocalF = func

do n=-9,9
do m=-9,9

    x = real(n)*0.2
    y = real(m)*0.2
    LocalF(n,m)= cmplx(z1(x,y),z2(x,y)) !assume z1,z2 are well defined

end do
end do

end function Sample

questionAnswers(2)

yourAnswerToTheQuestion