SUBROUTINE implicite (t)
IMPLICIT NONE
REAL, DIMENSION (:,:), INTENT(INOUT) :: t
INTEGER :: i
DO i = 1, SIZE(t,1)
t(i,:) = i
ENDDO
PRINT*,t
END SUBROUTINE implicite
DIMENSION(:,:) précise que t est un tableau de rang 2 et que son
profil est implicite c-à-d qu'il sera fourni à la subroutine
implicite lors de l'appel.
SIZE : Cette fonction intrinseque fournit l'étendue d'un tableau suivant une direction, ainsi
SIZE(t,1) fournit l'étendue de t suivant
la première dimension
SIZE(t,2) fournit l'étendue de t suivant
la deuxième dimension
Pour utiliser une procédure recevant en
argument un tableau de profil implicit, son interface doit être connue.
Exemple utilisant les subroutines explicite et implicite
PROGRAM affiche_tableau
IMPLICIT NONE
REAL, DIMENSION (4,0:9) :: t1
REAL, DIMENSION (4:10,3:7) :: t2
INTERFACE
SUBROUTINE implicite (t)
IMPLICIT NONE
REAL, DIMENSION (:,:), INTENT(INOUT) :: t
END SUBROUTINE implicite
END INTERFACE
CALL implicite (t1)
CALL implicite (t2)
! ----- De meme on peut faire la meme chose avec----
CALL explicite (t1,SIZE(t1,1), SIZE(t1,2))
CALL explicite (t2,SIZE(t2,1), SIZE(t2,2))
END PROGRAM affiche_tableau
L'interface pour la subroutine est obligatoire sinon erreur
d'exécution.