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 de compilation : passage du compilateur compaq(vc6) au dernier de chez intel


Sujet :

Fortran

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 84
    Par défaut Erreur de compilation : passage du compilateur compaq(vc6) au dernier de chez intel
    Bonjour
    J'ai un petit souci de compilation
    (passage du compilateur compaq fortran VC6 au dernier de chez intel)

    Voila le message d'erreur :

    error #7836: If the actual argument is scalar, the corresponding dummy argument shall be scalar unless the
    actual argument is an element of an array that is not an assumed-shape or pointer array, or a substring of such an element. [Q]
    error #7836: If the actual argument is scalar, the corresponding dummy argument shall be scalar unless the
    actual argument is an element of an array that is not an assumed-shape or pointer array, or a substring of such an element. [BB_BC]
    error #7836: If the actual argument is scalar, the corresponding dummy argument shall be scalar unless the
    actual argument is an element of an array that is not an assumed-shape or pointer array, or a substring of such an element. [RIGK]
    error #7836: If the actual argument is scalar, the corresponding dummy argument shall be scalar unless the
    actual argument is an element of an array that is not an assumed-shape or pointer array, or a substring of such an element. [RIGM]

    Dans une subroutine j'appelle :
    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
    22
    23
    24
    25
    26
    27
     
    subroutine test 
     
     implicit real*8(a-h)
     implicit real*8(o-z)
     implicit integer*4(i-n)
     
      real*8, POINTER :: bb(:)
      integer, POINTER :: ibb(:)
     
    ....
    call mest(bb(ibq),bb(ibbc),bb(irigk),bb(irigm),ind,nprofil,t_lines,nbcont)
    ....
    end subroutine test
     
     
    avec 
     subroutine mest(q,bb_bc,rigk,rigm,ind,nprofil,t_lines,nbcont)
     
     implicit real*8(a-h)
     implicit real*8(o-z)
     implicit integer*4(i-n)
     
      dimension rigk(*), rigm(*), ind(*)
      dmension q(*), bb_bc(*)
    .....
    end subroutine mest
    Merci d'avance pour votre aide

  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
    Par défaut
    Dois-je comprendre que le tout compile bien sous le compilateur Compaq ?

    Les messages d'erreur viennent d'une comparaison des arguments effectifs avec les arguments dummy.

    Si je comprends bien le code, il semble passer à mest() des sections de vecteur en donnant la position de l'élément de départ. Ce n'est pas standard à ma connaissance mais ça fonctionne généralement car la subroutine reçoit l'adresse d'un scalaire (sans le savoir) et le traite comme l'adresse de début d'un vecteur. Cette technique était très utilisée avant F90.

    Une solution simple serait de compiler les 2 routines séparément, soit dans des fichiers distincts. Le compilateur ne pourra alors pas comparer les arguments.

    Commentaire éditorial pour terminer : il y a au moins 30 ans que tous ont compris que les déclarations implicites sont une très mauvaise idée...

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 84
    Par défaut
    Les 2 subroutines sont deja dans 2 fichiers différents et cela ne compile pas.

  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
    Par défaut
    Si elles sont dans des fichiers distincts, comment le compilateur les voit-elles en mêmes temps ?

    mest() est dans un module ?

Discussions similaires

  1. Passage de 2003 à 2010, Quelques erreurs de compilation
    Par tytyxam dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 10/10/2011, 10h22
  2. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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