Une procédure contient toujours des arguments qui correspondent à des informations qui lui sont transmises ou à des informations qu'elle produit en retour d'appel.
Exemple. création d'une unité de compilation (SUBROUTINE)
SUBROUTINE trinome(a,b,c,x,res1, res2) IMPLICIT NONE REAL, INTENT(IN) :: a,b,c,x REAL, INTENT(OUT) :: res1, res2 res1= a*x*x+b*x+c res2= a*x +b END SUBROUTINE trinome
C'est une procédure qui fournit dans la valeur de
et dans
la valeur de
Les types d'arguments.
Exemple. Programme appel d'une procédure.
PROGRAM calcul IMPLICIT NONE REAL :: a = 1., b = 2. ,c = 5. ,x = 33., y= 1.5 REAL :: res1, res2, z CALL trinome (1.1, 2.2, 3.3, 4.4, res1, res2) print*,'res1=',res1, 'res2 = ',res2 CALL trinome (a,b,c,y,res1,z) print*,'res1=',res1, 'z = ', z CALL trinome (c,b,a,x,z, y) print*,'z=',z, 'y = ',y CALL trinome (x,y,res,a,b,c) print*,'b=',b, 'c = ',c CALL trinome (x+z,y*x,z*z,a-x,b,c) print*,'b=',b, 'c = ',c END PROGRAM calculCe qui importe lors de l'appel de la subroutine trinome est non pas les noms des arguments mais l'ordre et le type dans lequel ils ont été déclaré. Ainsi dans l'exemple précédent
CALL trinome (1.1,2.2,3.3,4.4,res1, res2)fournit
CALL trinome (a,b,c,y,res1,z)fournit
CALL trinome (c,b,a,x,z, y)fournit
CALL trinome (x,y,res,a,b,c)fournit
CALL trinome (x+z,y*x,z*z,a-x,b,c)fournit ...