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 calcul
Ce 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 ...