Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > Fortran
Fortran Forum d'entraide sur la programmation en Fortran. Avant de poster -> FAQ Fortran
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 10/10/2012, 15h41   #1
oodbae_adriano
Nouveau Membre du Club
 
Inscription : novembre 2009
Messages : 80
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 80
Points : 36
Points : 36
Par défaut programme basé sur deux fichiers - gfortran

Bonjour,

j'apprends le fortran et je m'exerce à la compilation d'un programme basé sur plusieurs fichiers de code. Le fichier principal s'appelle "fortran_test.f90", le second "secondProg.F90". Comme le montre le code ci-dessous, deux subroutines sont présentes. L'une est rédigée dans le fichier principal "fortran_test.f90", l'autre dans le fichier auxiliaire.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
programm fortran_test
include "secondProg.F90"

write(*,*) 'a first test'
call outputTest
call secondProg

end programm fortran_test

subroutine outputTest

write(*,*) 'the output test'

end subroutine outputTest


Code :
1
2
3
4
5
6

subroutine secondProg
character(len=3) :: mychar01

end subroutine secondProg

Lorsque je compile le programme principal avec:
Code :
1
2
gfortran fortran_test.F90 -o mytest2
J'obtiens une erreur:
Citation:
secondProg.f90:6.3
Included at fortran_test.f90.2:

End Subroutine secondProg
1
error:expecting end programm statement at (1)
Par contre, lorsque je mets la fonction auxiliaire, ainsi que la commande "include" correspondante et le "call" correspondant en commentaires, ca fonctionne.

Quelqu'un peut il me donner la syntaxe pour compiler? J'ai l'impression que c'est là que ca pêche. J'ai essayé de compiler séparément le fichier auxiliaire en préalable
Citation:
gfortran secondProg.f90 -c secondProg.o
Mais ca ne change rien

Je suppose que le probleme vient du compilateur et que ma syntaxe est fausse. Je travaille sour linux suse. version de gfortran: 4.7 (ou 4.6)

merci pour toute aide

oodbae
oodbae_adriano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2012, 08h01   #2
Ehouarn
Membre éclairé
 
Inscription : mars 2007
Messages : 326
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 326
Points : 378
Points : 378
Bonjour,

L'instruction "include" indique un remplacement textuel; tu n'inclues pas "secondProg.F90" au bon endroit puisque tu essayes de le mettre à l'intérieur du programme principal, ce qui n'a pas de sens en Fortran, à moins d'utiliser la clause "contains", qui ne peut être mise qu'en fin du programme principal:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
program fortran_test

write(*,*) 'a first test'
call outputTest
call secondProg

contains

include "secondProg.F90"

end program fortran_test

subroutine outputTest

write(*,*) 'the output test'

end subroutine outputTest
A noter que l'utilisation de "contains" implique que la routine contenue peut accéder aux variables du programme principal (contrairement à la routine "outputTest"); tu trouveras les détails de ces subtilités et nuances dans tout bon cours Fortran90.

Bonne continuation
Ehouarn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2012, 23h59   #3
oodbae_adriano
Nouveau Membre du Club
 
Inscription : novembre 2009
Messages : 80
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 80
Points : 36
Points : 36
Par défaut ca marche

Merci, ca marche à présent.

J'avais cherché dans le cours mis en ligne sur developpez.com, publié par qqn de l'IDRIS, mais je n'ai vu que la description de "include". Je regarderai une deuxième fois.

encore merci.
oodbae_adriano est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 18h38.


 
 
 
 
Partenaires

Hébergement Web