Donner une valeur à une variable d'un module à partir du programme principal
Bonjour à tous,
J'ai un petit soucis en Fortran pour donner une valeur particulière à des variables définis dans un module. Voici les scripts (module et programme principal) écrits dans deux fichiers différents (voir plus loin). Comme vous pouvez le constater, je cherche à afficher à l'écran la somme x + y + z (qui doit valoir 3000 d'après les valeurs données à x,y et z). Le problème est que ça m'affiche "somme = 1000" !! Comment imposer les valeurs de x, y et z (apparemment x est bien assignée mais pas y et z) à partir du programme principal pour que les variables x, y et z utilisées dans le module prennent bien ces valeurs ?
Je précise que la fonction S(x) doit rester une fonction de la variable x seulement et qu'aucun autre argument ne doit figurer dans la sous-routine ! Pour la compilation, j'utilise les commandes
>> gfortran fonction.f90 test.f90 puis >>./a.out
Je vous remercie pour votre aide :)
Antoine
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
!------------------------------
! Le module (fonction.f90)
!------------------------------
module fonction
contains
function S(x)
implicit none
real*8 :: S
real*8, intent(in) :: x
real*8 :: y, z
S = x+y+z
end function S
end module fonction
!-----------------------------------
! le programme principal (test.f90)
!-----------------------------------
program somme
use fonction
implicit none
real*8 :: x = 1000
real*8 :: y = 1000
real*8 :: z = 1000
call moduletest
contains
subroutine moduletest
print*, 'somme = ', S(x)
end subroutine
end program somme |