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 genemodles 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.