IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

programme basé sur deux fichiers - gfortran


Sujet :

Fortran

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 94
    Points : 85
    Points
    85
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    subroutine secondProg
    character(len=3) :: mychar01
     
    end subroutine secondProg

    Lorsque je compile le programme principal avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gfortran fortran_test.F90 -o mytest2
    J'obtiens une erreur:
    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
    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

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    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 : 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
     
    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

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 94
    Points : 85
    Points
    85
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/07/2008, 12h40
  2. [Report Studio] legende en bas sur deux ligne
    Par h_ismaili dans le forum Cognos
    Réponses: 0
    Dernier message: 21/05/2008, 19h15
  3. programme sur deux fichiers
    Par magikk dans le forum Langage
    Réponses: 3
    Dernier message: 20/02/2008, 19h41
  4. une liste ou requête basée sur deux fichiers
    Par chapeau_melon dans le forum WinDev
    Réponses: 8
    Dernier message: 12/11/2007, 21h00
  5. menu js, basé sur un fichier xml
    Par nagty dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/09/2006, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo