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 :

Module subroutine et interopérabilité f77/f90


Sujet :

Fortran

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 16
    Points : 6
    Points
    6
    Par défaut Module subroutine et interopérabilité f77/f90
    Bonjour tout le monde.

    L'incompréhension est la suivante :

    J'ai un programme en f90 qui utilise un module où sont stockées des Subroutines écrites en f77. Les subroutines s'appellent entre elle.

    Mon programme est rédigé de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    PROGRAM Progf90
     
    USE Modulef77
     
    CALL TEST1
     
    END PROGRAM Progf90
    Le fichier module est écris de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    MODULE Modulef77
     
    CONTAINS
     
       SUBROUTINE TEST
          CALL BOXON
       END SUBROUTINE TEST
     
     
       SUBROUTINE BOXON  
     
       END SUBROUTINE BOXON
     
    END MODULE
    Je compile de la façon suivante :
    1- compilation du module écris en f77 de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gfortran -o Modulef77 Modulef77.f
    2- compilation du programme principale en f90 de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gfortran Modulef77.o Progf90.f90 -o Progf90
    Et le problème qui ressort est que l'appel de la subroutine boxon dans la surboutine test 1 est une "référence indéfinie" ...

    Quelqu'un peut il mettre un peu de combustible dans ma lampe à pétrole svp ?
    D'avance merci !

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    N'y aurait-il pas un « external Boxon » dans la subroutine Test ?

    Si oui, tu dois l'enlever. Sinon, je ne vois pas.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Bonjour Sylvain Bergeron,

    Il y avait effectivement des " EXTERNALS " dans la subroutine test.
    Pourquoi dois je l'enlever ?
    ça à l'air de marcher je repost demain si c'est le cas.

    Anyway, merci beaucoup.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Mes manuels ne disent rien sur le lien entre external et module. Et je n'ai pas le temps de lire la norme. Je n'ai donc pas la réponse exacte, mais :

    • Le external sert généralement à indiquer qu'une fonction n'est pas intrinsic (SIN, COS, LOG,...).
    • Dans ton contexte, le external semble avoir pour effet de rendre l'objet externe au module. Ça a peut-être le sens de « externe » à la liste des objets visibles (scoping unit) ?

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    C'est peut être ça en effet.
    En tous cas il n'y a plus d'erreurs, merci beaucoup.

    Sujet clos pour ma part.

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

Discussions similaires

  1. Gestion de la mémoire : subroutine et module
    Par Kaluza dans le forum Fortran
    Réponses: 3
    Dernier message: 29/03/2011, 14h03
  2. Problème de dépendances dans une subroutine dans un module
    Par mamzellebulle dans le forum Fortran
    Réponses: 2
    Dernier message: 23/04/2010, 14h11
  3. Transformer une instruction F77 en F90
    Par feynman dans le forum Fortran
    Réponses: 3
    Dernier message: 29/10/2007, 20h26
  4. Compilateur Fortran f77 et f90 pour Windows
    Par Zeus005 dans le forum Fortran
    Réponses: 8
    Dernier message: 08/10/2007, 22h36
  5. Réponses: 2
    Dernier message: 13/04/2007, 13h03

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