Bonjour à tous,
Je suis loin d'être un pro en fortran, et en ce moment j'essaye de comprendre comment fonctionne les modules. Ce faisant, je suis tombé sur un problème dont je ne comprends pas l'origine. A titre de test, j'ai écrit ce petit programme :
Or lorsque je compile et exécute, il me sort ceci :
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
39
40
41
42 module mod1 implicit none integer n double precision, allocatable :: u(:) end module mod1 module mod2 use mod1 implicit none contains subroutine blague(m) implicit none integer m,i m=2*n !write(*,*) 'bip' allocate(u(m)) do i=1,m u(i)=i enddo deallocate(u) end subroutine blague end module mod2 program test_allocate use mod1 use mod2 implicit none integer nn,j,m nn=2 do n=1,nn call blague(m) write(*,*) (u(j),j=1,m) enddo end program test_allocate
Chose amusante, lorsque je lui fais afficher le 'bip' dans la subroutine 'blague', il me donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 0. 0. 1. 2. 3. 4.
Comment est-ce possible ? J'ai essayé différentes configurations, avec des 'interface' et autres, mais j'ai toujours le même problème. Je compile avec g95 sans aucune option sous cygwin. Je pense qu'il y a un truc que je n'ai pas bien pigé à propos des interfaces explicites...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 bip 1. 2. bip 1. 2. 3. 4.
Merci d'avance pour votre aide.
P.S. : je ne vous soumets pas ce problème juste pour m'amuser , je suis en train d'écrire un programme plus gros qui aura cette structure.
Partager