next up previous contents
Next: Interface Operator Up: Les modules et la Previous: Notion de module   Contents

Les procédures génériques (MODULE PROCEDURE)

Le principe est de regrouper sous un seul nom (nom générique ) de procédures en laissant le compilateur décider de la bonne procédure à appeler en fonction du type des arguments.

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.



Subsections

Mazen Saad 2002-12-12