Pour déterminer la taille d'un tableau en Fortran il existe la fonction SHAPE (Remarque: pour obtenir le nombre d'élément d'une matrice il existe sous fortran la fonction SIZE). Obtenir la taille d'un tableau peut s'avérer intéressant comme dans le cas d'une allocation dynamique d'un tableau ou la taille de celui-ci n'est pas connue a priori. Voici un exemple simple (compilation: gfortran TestFortranShapeFunction.f90 -o TestFortranShapeFunction):
program TestFortranShapeFunction
implicit none
integer, dimension(2,2) :: A
write(6,*) "Taille de la matrice A:", shape(A)
write(6,*) "Nombre d'elements dans la matrice A:", size(A)
end program TestFortranShapeFunction
Ce programme donne le résultat suivant:
Taille de la matrice A: 2 2
Nombre d'elements dans la matrice A: 4
On peut alors utiliser l'information par exemple pour créer une boucle sur les éléments du tableau comme ceci:
program TestFortranShapeFunction
implicit none
integer :: i,j
integer, dimension(2,2) :: A
integer, dimension(2) :: ShapeArray
A(1,1) = 1
A(1,2) = 2
A(2,1) = 3
A(2,2) = 4
write(6,*) "Taille de la matrice A:", shape(A)
write(6,*) "Nombre d'elements dans la matrice A:", size(A)
ShapeArray = shape(A)
do i = 1, ShapeArray(1)
do j = 1, ShapeArray(2)
write(6,*) i,j,A(i,j)
end do
end do
end program TestFortranShapeFunction
Ce programme donne le résultat suivant:
Taille de la matrice A: 2 2
Nombre d'elements dans la matrice A: 4
1 1 1
1 2 2
2 1 3
2 2 4