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 pour compiler un code .f90


Sujet :

Fortran

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut problème pour compiler un code .f90
    Bonjour à tous.

    Première question sur ce forum, j'espère qu'elle sera assez claire, mais je ne suis pas informaticien...

    Alors voilà, j'ai un problème pour compiler un code fortran:
    Jusqu'à maintenant j'utilisais Visual Studio pour compiler un code fortran, tout ce passait bien... mais je n'ai qu'une version d'évaluation de visual studio et de son extension fortran.
    j'ai donc essayé de compiler le même code avec gfortran et avec Plato, mais dans les 2 cas, des erreurs de syntaxe apparaissent alors que je n'avais aucun problème avec visual studio... les erreurs de syntaxe touchent par exemple les éléments "-->".
    Merci de me donner une piste pour remédier à ce problème...
    Merci d'avance.

  2. #2
    Membre du Club
    Homme Profil pro
    Doctorant Mécanique
    Inscrit en
    Décembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant Mécanique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 45
    Points : 46
    Points
    46
    Par défaut
    montre nous ton code et l'erreur ....

    je connais pas "-->" en fortran ça veut dire quoi ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Voilà pour un des code qui pose problème, mais ce n'est pas le seul... j'ai d'autres problèmes de syntaxe avec d'autres codes que je pouvais compiler et débugger sans problème avec VS...


    implicit none
    ! GSMaP‚̃oƒCƒiƒŠƒf[ƒ^‚ðØ‚èo‚µ‚ăeƒLƒXƒg‚É‘‚«o‚·ƒvƒƒOƒ‰ƒ€
    !
    ! (’ˆÓ) ƒIƒŠƒWƒiƒ‹ read_GSMaP_MVK_0.1deg ƒvƒƒOƒ‰ƒ€‚Æ‚Í
    ! i ‚Æ j ‚ð“ü‚ê‘Ö‚¦‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚·‚é

    character*256 listfile
    parameter( listfile = "list.txt" )

    ! input folder
    character*256 infile1, infile
    parameter( infile1 = "./infile/" )

    character*256 cutfile1, cutfile
    parameter( cutfile1 = "./cutfile/" )

    character*256 rainfile
    parameter( rainfile = "rain.data" )

    character*256 sumfile
    parameter( sumfile = "sumRain.data" )

    ! Target Area
    integer jleft, ibottom, jright, itop

    parameter( jleft = 441 )
    parameter( ibottom = 273 )
    parameter( jright = 451 )
    parameter( itop = 267 )

    ! Time Step (sec) <3600>
    integer tstep
    parameter( tstep = 3600 )

    ! ‚»‚Ì‘¼‚Ì•Ï”
    integer i,j,k,n,ios,t
    integer idim,jdim
    parameter(idim=1200, jdim=3600)

    character*256 list_day, list_time

    ! (•ÏXŒã)
    j=1 --> LON=0.05E
    j=100 --> LON=0.05+0.1*(100-1)
    i=1 --> LAT=59.95N
    i=jdim --> LAT=59.95S

    real*4 rain(idim, jdim), sumRain(idim, jdim)

    open(1, file = listfile, status = 'old')
    open(1000, file = rainfile)
    open(1100, file = sumfile)

    t = 0
    sumRain = 0.d0
    do

    read(1,*,iostat=ios) list_day
    if(ios.ne.0) exit

    infile = trim(infile1) // list_day
    cutfile = trim(cutfile1) // list_day

    open(10,file= infile, &
    form='unformatted',access='direct',recl=4*idim*jdim, &
    status='old')

    read(10,rec=1)((rain(i,j),j=1,jdim),i=1,idim) ! •ÏXŒã

    close(10)

    do i = itop, ibottom
    do j = jleft, jright
    if(rain(i,j).lt.0) rain(i,j) = 0.0
    enddo
    enddo

    open(100, file = cutfile)
    do i = itop, ibottom
    write(100,'(<jdim>f7.2)') (rain(i,j), j = jleft, jright)
    enddo
    close(100)

    write(1000,*) t * tstep, (jright - jleft) + 1, (ibottom - itop) + 1
    do i = itop, ibottom
    write(1000,'(<jdim>f7.2)') (rain(i,j), j = jleft, jright)
    enddo
    t = t + 1

    sumRain = sumRain + rain

    enddo
    close(1000)

    do i = itop, ibottom
    write(1100,'(<jdim>f8.2)') (sumRain(i,j), j = jleft, jright)
    enddo

    end

    Le message de Plato :

    Compiling file: read_GSMaP_0.1deg.f90
    C:\RRI\etc\GSMaP\read_GSMaP_0.1deg.F90(43) : error 441 - Illegal character combination, '-' followed by '-'
    C:\RRI\etc\GSMaP\read_GSMaP_0.1deg.F90(44) : error 441 - Illegal character combination, '-' followed by '-'
    C:\RRI\etc\GSMaP\read_GSMaP_0.1deg.F90(45) : error 441 - Illegal character combination, '-' followed by '-'
    C:\RRI\etc\GSMaP\read_GSMaP_0.1deg.F90(46) : error 441 - Illegal character combination, '-' followed by '-'
    C:\RRI\etc\GSMaP\read_GSMaP_0.1deg.F90(46) : error 565 - '-' found where an operand was expected
    C:\RRI\etc\GSMaP\read_GSMaP_0.1deg.F90(50) : warning 868 - Opening unit 1 may affect the operation of input from the default unit '*' - are you sure you want to do this?
    C:\RRI\etc\GSMaP\read_GSMaP_0.1deg.F90(80) : error 274 - Unknown edit descriptor '<', or missing comma
    C:\RRI\etc\GSMaP\read_GSMaP_0.1deg.F90(86) : error 274 - Unknown edit descriptor '<', or missing comma
    C:\RRI\etc\GSMaP\read_GSMaP_0.1deg.F90(96) : error 274 - Unknown edit descriptor '<', or missing comma
    Compilation failed.

    Et finalement le message d'erreur avec gfortran:

    c:/mingw/codef90/read_gsmap.f90:43.10:

    j=1 --> LON=0.05E
    1
    Error: Syntax error in expression at (1)
    c:/mingw/codef90/read_gsmap.f90:44.10:

    j=100 --> LON=0.05+0.1*(100-1)
    1
    Error: Syntax error in expression at (1)
    c:/mingw/codef90/read_gsmap.f90:45.10:

    i=1 --> LAT=59.95N
    1
    Error: Syntax error in expression at (1)
    c:/mingw/codef90/read_gsmap.f90:46.10:

    i=jdim --> LAT=59.95S
    1
    Error: Syntax error in expression at (1)
    c:/mingw/codef90/read_gsmap.f90:80.14:

    write(100,'(<jdim>f7.2)') (rain(i,j), j = jleft, jright)
    1
    Error: Unexpected element '<' in format string at (1)
    c:/mingw/codef90/read_gsmap.f90:86.15:

    write(1000,'(<jdim>f7.2)') (rain(i,j), j = jleft, jright)
    1
    Error: Unexpected element '<' in format string at (1)
    c:/mingw/codef90/read_gsmap.f90:96.14:

    write(1100,'(<jdim>f8.2)') (sumRain(i,j), j = jleft, jright)
    1
    Error: Unexpected element '<' in format string at (1)

    Merci

    PS: pour "-->", je ne suis pas sur de ce que ça signifie exactement, peut-être un séparateur non reconnu. Mais cet élément pose problème uniquement pour un des codes, et je dois en utiliser beaucoup... On dirait que les normes de syntaxe ne sont pas les mêmes pour VS, plato et gfortran. Où est-ce que je pourrais vérifier les paramètres de syntaxe, si c'est possible... Je ne suis pas programmeur, je suis sensé uniquement paramétrer ces outils... c'est mon premier projet où j'utilise des codes Fortran donc je ne suis qu'à l'étape de la découverte de ce langage...

  4. #4
    Membre du Club
    Homme Profil pro
    Doctorant Mécanique
    Inscrit en
    Décembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant Mécanique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 45
    Points : 46
    Points
    46
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    j=1 --> LON=0.05E
    j=100 --> LON=0.05+0.1*(100-1)
    i=1 --> LAT=59.95N
    i=jdim --> LAT=59.95S
    un premier problème de compilation viens de ces lignes et je pence que le problème c'est bien ces flèches "-->" je n'ai jamais vu cela en fortran.

    c'est tu ce que tu veut faire avec les variable LON LAT ?

    de plus tu modifie j et i (qui sont des INTEGER) deux fois et ne fait rien avec la première fois ce qui est donc inutile.

    Ou a tu trouver ce programme ? la personne qui l'a écrite peut-elle t'aider car cela serait plus simple pour toi

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Effectivement i et j sont modifiés 2 fois...
    uniquement la première est nécessaire, la partie que tu cites est en fait un commentaire dont les "!" se sont perdus en route...

    premier problème résolu... mais pour les autres??

    Error: Unexpected element '<' in format string at (1)
    c:/mingw/codef90/read_gsmap.f90:86.15:

    write(1000,'(<jdim>f7.2)') (rain(i,j), j = jleft, jright)
    Si j'ai bien compris (mais ça c'est pas sur...) "f7.2" définit le format de "jdim".
    pourquoi <jdim>f7.2 ne peut pas être compilé avec gfortran et plato??

    J'ai bien essayé de contacter le programmeur avant de poster ces questions ici, mais j'ai pas eu de réponse... Faut croire que l'anglais n'est pas le point fort de ce programmeur... (ce qui expliquerait pourquoi il a commenté le code en japonnais...) Et d'ailleurs des commentaires en anglais m'auraient éviter de passer du temps sur "-->" sans raison...
    pour répondre à ta question, ce code vient d'un projet de recherche sur la modélisation d’inondations...

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci en tous cas, tu connaitrais pas d'autres compilateurs fortran pas hasard?

  7. #7
    Membre du Club
    Homme Profil pro
    Doctorant Mécanique
    Inscrit en
    Décembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant Mécanique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 45
    Points : 46
    Points
    46
    Par défaut
    quand tu écrit quelque chose comme

    10 est le fichier où tu écrit

    et # est le format de ce que tu écrit souvent moi j'utilise * car c'est le format par défaut tu peut essayer ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    write(1000,*) (rain(i,j), j = jleft, jright)
    et si ta besoin d'un format spécial tu peut changer.

  8. #8
    Membre du Club
    Homme Profil pro
    Doctorant Mécanique
    Inscrit en
    Décembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant Mécanique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 45
    Points : 46
    Points
    46
    Par défaut
    pour d'autre compilateur non désoler j utilise gfortran

  9. #9
    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
    <jdim>f7.2 est une extension Digital intégrée par la suite aux compilateurs de la famille Compaq / Intel. Le <jdim> est le facteur de répétition et est remplacé par la valeur de la variable jdim à l'exécution (ex: si jdim vaut 5, le résultat est 5f7.2). Par t'en débarrasser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    character (len=20) MonFormat
    ...
    !write(100,'(<jdim>f7.2)') (rain(i,j), j = jleft, jright)
    write(MonFormat,'(a,i0,a)') '(', jdim, 'f7.2)'
    write(100,MonFormat) (rain(i,j), j = jleft, jright)
    ...

  10. #10
    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
    Pour les lignes avec --> : ça ressemble drôlement à des commentaires expliquant le quadrillage i,j en latitude, longitude :
    • Les variables LON et LAT ne sont d'ailleurs pas déclarée, malgré le implicit none.
    • Une recherche Google de "-->" ne retourne rien.
    • Mon manuel CVF ne décrit pas un tel opérateur non plus.
    • La première occurrence de i et j par la suite est comme indices de boucles. Les initialisations de ces 4 lignes sont donc inutiles.

    Tu as donc dû perdre les ! de commentaire en changeant de compilateur...

  11. #11
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Effectivement, pour LAT et LONG, j'ai bien perdu les ! en route...

    Merci pour les explications de <jdim>f7.2 , je vais essayer ta manip pour contourner cette erreur...

  12. #12
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    ça roule.
    Merci beaucoup à tous les 2.

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

Discussions similaires

  1. Problème pour compiler le code source de Derby
    Par subzero82 dans le forum Général Java
    Réponses: 1
    Dernier message: 11/03/2009, 11h33
  2. Réponses: 11
    Dernier message: 19/02/2007, 01h20
  3. [MySQL] problème pour calculer âge - code erronné
    Par Christophe93250 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 12/02/2007, 19h54
  4. problème de compilation de code c sur linux
    Par bejaouijamil dans le forum C
    Réponses: 11
    Dernier message: 10/01/2007, 16h36
  5. Problème pour compiler avec gcc
    Par Mick.Zen dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 28/06/2006, 15h05

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