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 :

Problème avec un go to


Sujet :

Fortran

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Problème avec un go to
    Bonjour à tous!

    Je rencontre un ptit problème avec l'instruction go to:
    Voilà un bout de mon code:
    bou: do k=1, NIN
    !Calcul de la maille MI,MJ
    MJ = (TIN (k,1) - X0 + DX - 1) / DX;
    MI = (TIN (k,2) - Y0 + DY - 1) / DY;


    do h= P(MI,MJ), P(MI,MJ)+ C(MI,MJ)-1
    if (PT(h)/= 0) then
    cycle
    endif
    PT (h) = k;
    go to bou;

    enddo
    enddo
    voilà, le compilateur me dit:
    - ASSIGNed GOTO inside a DO loop requires the use of /INHIBIT_CHECK 10 to compile with /CHECK
    ...je suis sure que c'est tout bête mais je ne connais pas inhibit_check(débutante)...

  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,

    Ce message du compilateur est pourtant assez explicite: il ne peut compiler ton code avec l'option "/CHECK", a moins que tu ne spécifie également l'option de compilation "/INHIBIT_CHECK 10" (et cela, à cause de la présence d'un goto dans une boucle) . Et c'est tout; ce n'est pas une erreur au niveau du Fortran (bien que j'avoue ne pas trop saisir ce que tes boucles et instructions sont sensées faire).

    Au fait, le ";" en fin d'une ligne n'est pas nécessaire. On ne s'en sert que pour séparer une série d'instructions rassemblées sur une même ligne.

    Bonne continuation.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Re bonjour!

    Bon cela peut sembler assez simple à tout programmeur confirmé, mais je suis débutante et je ne sais pas ce qu'est que l'option de compilation "/INHIBIT_CHECK 10" ni comment faire pour la spécifier... J'ai besoin de quelques explications très terre à terre....
    Merci de votre aide

  4. #4
    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
    Je ne connais pas ton compilateur (le 'SALFORD PLATO 3' dont tu parles dans l'autre sujet?), donc je ne peux pas grand chose de plus pour toi, mais il y a surement une doc. associée que tu peux consulter et où tu trouveras comment spécifier les options de compilation.

    Bon courage.

  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
    Points : 1 346
    Points
    1 346
    Par défaut
    Il y a une erreur de syntaxe et un problème de structure ayant mené au message d'erreur :

    • L'erreur d'abord. En Fortran, un goto se fait sur une étiquette numérique, comme dans goto 10. Il était (parce que c'est maintenant obsolète) possible cependant de stocker une étiquette dans une variable entière avec une instruction ASSIGN (d'où le ASSIGNed du message) et ensuite faire goto Variable. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
          integer Etiquette
          ...
          assign 10 to Etiquette
          ...
          goto Etiquette
          ...
    10    ...
    • Tu ne peux pas brancher directement sur "bou:" avec un goto. Tu dois utiliser une étiquette numérique.
    • Le problème maintenant (mon commentaire est un peu gratuit: je n'ai pas regardé ton algo): Es-tu certaine que tu veux sortir de 2 boucles pour ré-entrer immédiatement dans la première ? Ne veux-tu pas plutôt aller à l'indice suivant de la première boucle ? Tu pourrais alors faire "cycle bou" plutôt que "goto bou".
    • Commentaire de style : les ";" servent de séparateur d'instruction en Fortran, comme dans "a=0; b=0; c=0", quand on veut les placer sur une seule ligne. Ils ne servent pas de marqueur de fin d'instruction comme en C ou en Pascal.

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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