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 : Sélectionner tout - Visualiser dans une fenêtre à part
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