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
Partager