Par exemple, on propose d'écrire une famille de sous-procédures dont le nom générique sera AFFICHE destinées à écrire les valeurs de leurs arguments de type entier, réel ou tableau.
MODULE genemod
IMPLICIT NONE
INTERFACE affiche
MODULE PROCEDURE aff_int, aff_real,aff_tab
END INTERFACE
CONTAINS
SUBROUTINE aff_integer(n)
integer, intent(in) :: n
Print*,'entier :', n
END SUBROUTINE aff_integer
SUBROUTINE aff_real(r)
real, intent(in) :: r
Print*,'reel :', r
END SUBROUTINE aff_real
SUBROUTINE aff_tab(T)
real, dimension(:), intent(in) :: T
Print*,'tableau :', T
END SUBROUTINE aff_tab
END MODULE genemod
les procédures qu'on appellera sous le nom generique affiche sont
affinteger, affreal ou afftab.
Le compilateur choisira d'appeler
la subroutine affinteger si l'argument de la subroutine
affiche est un entier. Voici un programme d'utilisation de ce module :
PROGRAM imprime
USE genemod
IMPLICIT NONE
integer :: n,i
real :: x
real, dimension (15) :: T1=(/ (25.*i,i = 1,15) \)
n = 25
x = 5.25
CALL affiche (n)
CALL affiche (x)
CALL affiche (T1)
END PROGRAM imprime
Selon le type d'argument, entier, réel ou tableau l'interface générique choisit alors d'exécuter l'une des trois subroutine affinteger, affreal ou afftab.