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 :

identification d'erreur en fortran


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 24
    Par défaut identification d'erreur en fortran
    bonjour
    lors de l'exécution avec gfortran un code j'obtiens l'erreur suivant
    ye2011.for:1401.24:
    
          d_loc=sum(macro(:,:,1))                                           
                            1
    Error: Invalid character in name at (1)
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    !check(time)
    	subroutine check(time,tic,toc,ti)
    	use ComPara, only: lx, ly, density, CP_L2_err
    	use Node_data_D2Q9,   only: macro
    	implicit none
    	integer :: time,ti,iteration
    	real*8 :: tic,toc
    	real*8 :: d_loc,t
    	character*13 :: char_time
    	integer :: temp(4)
    	call CPU_time(toc)
    	d_loc=toc-tic
    	t=d_loc/float(3600)!xxx.xxx hours left
    	temp(1)=int(t)
    	t=(t-float(temp(1)))*float(60)!xxx.xxx mins left
    	temp(2)=int(t)
    	t=(t-float(temp(2)))*float(60)
    	temp(3)=int(t)
    	t=(t-float(temp(3)))*float(100)
    	temp(4)=int(t)
            call CPU_time(tic)
    	write(char_time,'(I4.4,a,I2.2,a,I2.2,a,I2.2)')temp(1)
         &,":",temp(2),":",temp(3),":",temp(4)
    	d_loc=sum(macro(:,:,1))
            !iteration=0
    	!if(mod(ti,25)==1) then
            !iteration=iteration+1
    	!write(* ,'(/,a,4x,a,2x,a,2x,a)')"time(sec)", "iteration",
         !&"density","rsd-density rsd-x rsd-y"
            !time,iteration
            !write(9,'(/,a,4x,a,2x,a,2x,a)')time, density, iteration
         !&rsd-density,rsd-x,iteration,rsd-y
    	!end if
    	write(*,'(a,i8,f12.4,3e12.3)')char_time, time, d_loc,
         & CP_L2_err(1:3)
    	write(9,'(a,i8,f12.4,3e12.3)') char_time, time, d_loc,
         & CP_L2_err(1:3)
    	end subroutine check
    merci pour vos aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2013
    Messages : 35
    Par défaut Caractère de continuation d'une instruction écrite sur plusieurs lignes en F90
    Bonjour,

    Je pense que le problème se situe à l'instruction précédant la ligne où l'erreur est signalée (l22-l23 dans votre code). L'instruction write est écrite sur 2 lignes mais le caractère de continuation (&) est mal placé. Contrairement au Fortran 77 où le caractère de continuation se trouve en colonne 6, ce caractère doit être placé à la fin de la première ligne en Fortran 90. Cette erreur est également présente aux lignes l34-35 et l36-37.

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    !check(time)
    	subroutine check(time,tic,toc,ti)
     
    	use ComPara, 		only: lx, ly, density, CP_L2_err
    	use Node_data_D2Q9, only: macro
     
    	implicit none
     
    	integer :: time,ti
    	real*8 :: tic,toc
     
    	real*8 :: d_loc,t
    	integer :: iteration
    	character*13 :: char_time
    	integer :: temp(4)
     
    	call CPU_time(toc)
    	d_loc = toc-tic
    	t=d_loc/float(3600)!xxx.xxx hours left
    	temp(1)=int(t)
    	t=(t-float(temp(1)))*float(60)!xxx.xxx mins left
    	temp(2)=int(t)
    	t=(t-float(temp(2)))*float(60)
    	temp(3)=int(t)
    	t=(t-float(temp(3)))*float(100)
    	temp(4)=int(t)
     
        call CPU_time(tic)
     
    	write(char_time,'(I4.4,":",I2.2,":",I2.2,":",I2.2)') temp(1), &
    	    temp(2), temp(3), temp(4)
     
    	d_loc = sum(macro(:,:,1))
     
            !iteration=0
    	!if(mod(ti,25)==1) then
            !iteration=iteration+1
    	!write(* ,'(/,a,4x,a,2x,a,2x,a)')"time(sec)", "iteration",
         !&"density","rsd-density rsd-x rsd-y"
            !time,iteration
            !write(9,'(/,a,4x,a,2x,a,2x,a)')time, density, iteration
         !&rsd-density,rsd-x,iteration,rsd-y
    	!end if
    	write(*,'(a,i8,f12.4,3e12.3)') char_time, time, d_loc, &
    	    CP_L2_err(1:3)
    	write(9,'(a,i8,f12.4,3e12.3)') char_time, time, d_loc, &
    	    CP_L2_err(1:3)
     
    	end subroutine check
    Bonne continuation

  3. #3
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Par défaut
    Salut,

    Le fichier a l'extension for. On doit trouver du code au format fixe.
    Le code est en FORTRAN 90 (ou plus) puisqu'il y a des modules, mais aussi au format fixe. Le caractère de continuation de ligne à la colonne 6 est correct.

    Comme le message d'erreur est posté sans être formaté, on ne sait où est précisément l'erreur. (utiliser aussi des balises #).
    Commence par vérifier les types et l'allocation des variables.

    L'information : ye2011.for:1401.24, indique que le souci est à la colonne 24. Le profil de macro ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2013
    Messages : 35
    Par défaut
    Citation Envoyé par __dardanos__ Voir le message
    Salut,

    Le fichier a l'extension for. On doit trouver du code au format fixe.
    Le code est en FORTRAN 90 (ou plus) puisqu'il y a des modules, mais aussi au format fixe. Le caractère de continuation de ligne à la colonne 6 est correct.
    Au temps pour moi, je n'avais pas fait attention à l'extension du fichier dont je ne connaissais pas la signification.

    Merci pour l'info. Bonne journée.

Discussions similaires

  1. Problème erreur code Fortran (débutant)
    Par nekcorp dans le forum Fortran
    Réponses: 3
    Dernier message: 02/02/2015, 16h34
  2. identification d'erreur en declaration de variables
    Par saida29 dans le forum Fortran
    Réponses: 1
    Dernier message: 14/06/2013, 19h03
  3. [XL-2007] Identification d'erreurs via un Format conditionnel
    Par marie.taquet dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 03/01/2012, 23h48
  4. [Visual Fortran] Erreur de compilation
    Par Julito dans le forum Fortran
    Réponses: 1
    Dernier message: 04/03/2005, 21h24

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