Bonjour, j'aimerais effectuer une fonction retournant un tableau,

Mais j'ai toujours le même problème quelque soit la méthode utilisé ( tableau non alloué ou pas) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
program taille_implicite
 
  implicit none
  integer, parameter   :: n = 5, m = 6
  INTEGER :: i
  real, dimension(n) :: tab,somme,som
 
 
 
   DO i = 1,n
      tab(i) = 2;
   END DO
 
 
 
  somme = som( tab, n )
 
  print *,somme
 
end program taille_implicite
 
function som( t, lda )
  implicit none
  real, dimension(lda) :: t,som
  integer                :: lda
  integer                :: i
 
 
     do i=1,lda
        som(i) = t(i)
      end do
 
end function som
et voici l'erreur récurrente lors de l'appel de fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
  somme = som( tab, n )
               1
Error: Array index at (1) must be of INTEGER type
Pour n est bien , un entier je ne comprends pas cette erreur
Merci à vous