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 :

erreur avec l' instruction include


Sujet :

Fortran

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 24
    Par défaut erreur avec l' instruction include
    Bonnjour
    j'essaye de reduire la taille de mon code en mettant le variables que j'utilise dans de petits fichiers que je l'appelle avec l'instuction include mais malheuresement ca n'a pas donne un resultat. si quelqu'un peut m'aider je serais toujours reconnaissante. merci bien .
    cordialement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    common/my_common_1/i,j,k,kk   
    	common/my_common_2/n,m    
    	common/my_common_3/u0,rhof,t_in,tw
    	common/my_common_4/visc,alpha,omega,omegat
    	common/my_common_5/u,v,rho,strf
    	common/my_common_6/ Re,pr
            common/my_common_7/theta,th
            common/my_common_8/f,feq,g,geq
            common/my_common_9/Y,cx,cy,w,theta_in

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    dimension f(0:8,0:n,0:m)
    	dimension feq(0:8,0:n,0:m),rho(0:n,0:m)
    	dimension w(0:8), cx(0:8),cy(0:8)
    	dimension u(0:n,0:m), v(0:n,0:m),strf(0:n,0:m)
    	dimension g(0:8,0:n,0:m), geq(0:8,0:n,0:m),th(0:n,0:m)
            dimension theta(0:n,0:m),theta_in(0:m)
            dimension t_in(0:m)
            dimension Y(0:m)
            integer i,j,k,kk
            integer dx,dy,dt
            character Saida*2910
    voila le message d'erreur qu'obtient lors d'excution avec gfortran

    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
    Included at modthereco2.for:5:
     
    parameter(n=50,m=1000)                                                  
     1
    Error: Non-numeric character in statement label at (1)
    parameter.for:1.1:
        Included at modthereco2.for:5:
     
    parameter(n=50,m=1000)                                                  
     1
    Error: Unclassifiable statement at (1)
    common.for:8.28:
        Included at modthereco2.for:6:
     
            common/my_common_8/f,feq,g,geq                                  
                                1
    Error: The module or main program array 'f' at (1) must have constant shape
    common.for:8.32:
        Included at modthereco2.for:6:
     
            common/my_common_8/f,feq,g,geq

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Par défaut
    Salut.
    Les includes, c'est pas propre du tout.
    Pourquoi ne pas continuer avec les modules ? Un module parameters ?

  3. #3
    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
    Par défaut
    Ton erreur semble venir du fait que tu n'as pas respecté les colonnes 1 pour commentaires, 1-5 pour étiquettes, 6 pour continuité, 7-72 pour instructions,...

    Cela dit, les commons sont très dépréciés, beaucoup plus que les includes. Comme dit dardanos, tu devrais utiliser des modules.

    Si tu dois maintenir les commons, c'est une très bonne idée de les placer dans des fichiers includes.

    Normalement, tu devrais utiliser un fichier include distinct pour chaque common avec la définition complète des variables du common dans le fichier. Par exemple, my_common_8 devrait être placé dans le fichier my_common_8.i :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	include 'constantes.i'
    	dimension f(0:8,0:n,0:m)
    	dimension feq(0:8,0:n,0:m)
    	dimension g(0:8,0:n,0:m), geq(0:8,0:n,0:m)
    	common/my_common_8/f,feq,g,geq
    et constantes.i contient la définition de n et m.

    Dans ton cas, tu y arriveras difficilement avec un tel découpage à cause des constantes n et m qui sont utilisés partout (en passant, n et m ne devrait pas être dans un common puisque que ce sont des constantes). Dès le deuxième include, le compilateur te dira que n et m sont déjà définis.

    Tes commons ne semblent pas indépendants l'un de l'autre en fait. Ils devront probablement être tous dans le même fichier include.

  4. #4
    Nouveau candidat au Club
    Femme Profil pro
    étudiant chercheur
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiant chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Par défaut include et common !
    bonjour ,je suis débutante avec FOrtran
    j'arrive pas à comprendre l'utilité des instructions include et common
    est ce que quelqu'un peut m'aider svp

  5. #5
    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
    Par défaut
    L'instruction common permet de définir un bloc de variables qui sont partagées par l'ensemble des routines, fonctions et / ou le programme principal dans lesquels le common est déclarer. Les variables n'ont pas à être passées en argument par les instructions d'appel des sous-programme.

    L'instruction include ne fait qu'insérer le texte du fichier nommé. Ce n'est pas vraiment une instruction du langage. Ça ne fait que manipuler du code source. En pratique, elle est (était?) beaucoup utiliser avec les commons parce qu'elle permet d'insérer facilement l'ensemble des déclarations d'un common en ajoutant simplement l'instruction "include 'MonCommon.fh' " dans chaque fonction ou routine en ayant besoin. Si tu as à modifier le common, tu le fais à un endroit et le changement se répercute partout.

    Dans un programme Fortran 90 et plus récent, on essaie généralement de remplacer les commons par des modules, et les includes deviennent inutiles.

  6. #6
    Nouveau candidat au Club
    Femme Profil pro
    étudiant chercheur
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiant chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Par défaut
    merci beaucoup , c'est très clair maintenant

Discussions similaires

  1. Levée d'erreur avec l'instruction OPENRECORDSET
    Par formidable78 dans le forum VBA Access
    Réponses: 7
    Dernier message: 06/10/2008, 20h24
  2. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  3. Problème avec une instruction OUTER /Postgres
    Par Volcomix dans le forum Langage SQL
    Réponses: 14
    Dernier message: 21/04/2004, 16h56
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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