Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 12 sur 12
  1. #1
    Invité de passage
    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 : 0
    Points
    0

    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
    Nouveau Membre du Club
    Homme Profil pro Thomas Chauve
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Nom : Homme Thomas Chauve
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2012
    Messages : 37
    Points : 28
    Points
    28

    Par défaut

    montre nous ton code et l'erreur ....

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

  3. #3
    Invité de passage
    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 : 0
    Points
    0

    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
    Nouveau Membre du Club
    Homme Profil pro Thomas Chauve
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Nom : Homme Thomas Chauve
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2012
    Messages : 37
    Points : 28
    Points
    28

    Par défaut

    Code :
    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
    Invité de passage
    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 : 0
    Points
    0

    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
    Invité de passage
    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 : 0
    Points
    0

    Par défaut

    Merci en tous cas, tu connaitrais pas d'autres compilateurs fortran pas hasard?

  7. #7
    Nouveau Membre du Club
    Homme Profil pro Thomas Chauve
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Nom : Homme Thomas Chauve
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2012
    Messages : 37
    Points : 28
    Points
    28

    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 :
    write(1000,*) (rain(i,j), j = jleft, jright)
    et si ta besoin d'un format spécial tu peut changer.

  8. #8
    Nouveau Membre du Club
    Homme Profil pro Thomas Chauve
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Nom : Homme Thomas Chauve
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2012
    Messages : 37
    Points : 28
    Points
    28

    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
    835
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : août 2006
    Messages : 835
    Points : 1 075
    Points
    1 075

    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 :
    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
    835
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : août 2006
    Messages : 835
    Points : 1 075
    Points
    1 075

    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
    Invité de passage
    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 : 0
    Points
    0

    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
    Invité de passage
    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 : 0
    Points
    0

    Par défaut

    ça roule.
    Merci beaucoup à tous les 2.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •