Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > Fortran
Fortran Forum d'entraide sur la programmation en Fortran. Avant de poster -> FAQ Fortran
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 25/12/2012, 08h52   #1
P_F_1217
Invité de passage
 
Homme
Inscription : 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.
P_F_1217 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2012, 11h16   #2
Bob_Tom
Membre à l'essai
 
Homme Thomas Chauve
Étudiant
Inscription : décembre 2012
Messages : 25
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 : 25
Points : 22
Points : 22
montre nous ton code et l'erreur ....

je connais pas "-->" en fortran ça veut dire quoi ?
Bob_Tom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 04h53   #3
P_F_1217
Invité de passage
 
Homme
Inscription : 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
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...


Citation:
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 :

Citation:
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:

Citation:
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...
P_F_1217 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 11h18   #4
Bob_Tom
Membre à l'essai
 
Homme Thomas Chauve
Étudiant
Inscription : décembre 2012
Messages : 25
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 : 25
Points : 22
Points : 22
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
Bob_Tom est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/12/2012, 09h12   #5
P_F_1217
Invité de passage
 
Homme
Inscription : 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
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??

Citation:
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...
P_F_1217 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 09h34   #6
P_F_1217
Invité de passage
 
Homme
Inscription : 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
Merci en tous cas, tu connaitrais pas d'autres compilateurs fortran pas hasard?
P_F_1217 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 10h34   #7
Bob_Tom
Membre à l'essai
 
Homme Thomas Chauve
Étudiant
Inscription : décembre 2012
Messages : 25
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 : 25
Points : 22
Points : 22
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.
Bob_Tom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 10h35   #8
Bob_Tom
Membre à l'essai
 
Homme Thomas Chauve
Étudiant
Inscription : décembre 2012
Messages : 25
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 : 25
Points : 22
Points : 22
pour d'autre compilateur non désoler j utilise gfortran
Bob_Tom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2012, 03h30   #9
Sylvain Bergeron
Modérateur
 
Inscription : août 2006
Messages : 781
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : août 2006
Messages : 781
Points : 1 028
Points : 1 028
<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)
...
Sylvain Bergeron est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/12/2012, 16h49   #10
Sylvain Bergeron
Modérateur
 
Inscription : août 2006
Messages : 781
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : août 2006
Messages : 781
Points : 1 028
Points : 1 028
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...
Sylvain Bergeron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 03h51   #11
P_F_1217
Invité de passage
 
Homme
Inscription : 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
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...
P_F_1217 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 08h26   #12
P_F_1217
Invité de passage
 
Homme
Inscription : 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
ça roule.
Merci beaucoup à tous les 2.
P_F_1217 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h08.


 
 
 
 
Partenaires

Hébergement Web