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 :

entree sortie sous gfortran


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Par défaut entree sortie sous gfortran
    Bonjour

    J'ai un programme en fortran (écrit en 1975) de 2900 lignes que je voudrais exécuter sous linux (suse).
    Je dispose d'un compilateur gfortran (version 4.4) et tout se passe bien à la compilation (à part quelques warning qui détectent des tabulations au mauvais endroit).

    Par contre l'exécution de passe mal et il semble que ce soit la lectures des données (fichiers ascii avec données formatées) qui n'est pas correcte.

    On m'a dit que cela avait été vu sous gfortran?
    Est-ce que quelqu'un connait? est-ce que je pourrai savoir s'il y a une version de gfortran qui fonctionnerait? s'il y a une option de compilation qui éviterait...

    Enfin j'aimerai retrouver un outil qui fasse la calcul

    Merci

  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
    Il n'est pas possible de t'aider avec aussi peu d'information.

    Peut-on avoir le message d'erreur exact, et le bout de code en cause si tu peux l'isoler ?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Par défaut compléments
    OUi j'ai bine cnscience que ce n'est pas suffisant.
    Mais dans mon problème il n'y a pas de message d'erreur, simplement un résultat faux....

    Mais j'ai avancé et je resumerai comme cela:
    J'ai une commande READ de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
           READ(4,35,END=300) MSTA(L),PRMK(L),W(L),JTIME,JMIN(L),P(L),S(L)
         1,SRMK(L),WS(L),AMX(L),PRX(L),CALP,CALX(L),RMK(L),DT(L),FMP(L)
         2,AZRES(L),SYM(L),AS,ICARD,QRMK(L),IPRO
    avec 
        35 FORMAT(2A4,T8,F1.0,T10,I8,I2,F5.2,T32,F5.2,A4,T40,F1.0,T44,F4.0
         1,F3.2,F4.1,T59,F4.1,A3,F5.2,F5.1,T21,A4,T7,A1,T32,A4,T1,A80
         2,T63,A1,T5,A4)
    les données sont de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DIM .P.0 100110063127.45       29.79.S.1
    EFP .P.0 100110063127.67
    KALE.P.0 100110063127.72       30.47.S.1 
    KOU .P.0 100110063127.52       30.35.S.1
    la ligne s'arrêtant effectivement après le dernier caractère. Pour mon besoin les données qui seraient ensuite sont nulles et donc nous avions l'habitude de ne pas les mettre. Mais il y a bien une demande dans le format de A80 à partir de 1 donc de 80 carcatères.

    Avec les options simples de compilation que j'ai utilisées c'est à dire juste -g -O), le programme tourne donc, mais il y a sans doute de mauvaise attribution aux variables qui perturbe le résultat

    Si je complète les lignes de données de caratères blancs jusqu'au caractère 90 (je n'ai pas cherché combien exactement) je retrouve une execution correcte du programme.

    Ce n'est pas très commode de modifier toutes mes données.
    Est-ce qu'il y aurait une option de compilation qui assurerait un complément de ligne par des caractères blancs au cours de la lecture.

    Merci

  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
    Normalement, tu ne devrais pas avoir à compléter les lignes avec des espaces. C'est déjà ce qui est fait par la librairie de lecture. Le problème devrait donc être ailleurs.

    Est-il possible que le marqueur de fin de record soir « Windows » (<CR><LF>) alors que ton environnement s'attend à <LF> seulement ? Quand tu édite le fichier, tu te trouve à normaliser les marqueurs et tout fonctionne ?

    Peux-tu afficher un record du fichier de données en hexadécimale ?

  5. #5
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Par défaut suite
    Je ne travaille que sous linux avec vi. Pas de caractères windows

    voici mon fichier
    AGE .P.0 100110063127.16
    AIO .P.0 100110063128.00 30.43.S.1
    ALI .P.0 100110063127.27 29.73.S.1
    DIM .P.0 100110063127.45 29.79.S.1
    EFP .P.0 100110063127.67
    10
    et sa représentation en hexa (od -A x file)
    000000 043501 020105 050056 030056 030440 030060 030461 030060
    000010 031466 031061 027067 033061 040412 047511 027040 027120
    000020 020060 030061 030460 030061 033060 030463 034062 030056
    000030 020060 020040 020040 020040 030063 032056 027063 027123
    000040 005061 046101 020111 050056 030056 030440 030060 030461
    000050 030060 031466 031061 027067 033462 020040 020040 020040
    000060 031040 027071 031467 051456 030456 042012 046511 027040
    000070 027120 020060 030061 030460 030061 033060 030463 033462
    000080 032056 020065 020040 020040 020040 034462 033456 027071
    000090 027123 005061 043105 020120 050056 030056 030440 030060
    0000a0 030461 030060 031466 031061 027067 033466 020012 020040
    0000b0 020040 020040 020040 020040 020040 020040 020040 030061
    0000c0 000012
    0000c1

  6. #6
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Par défaut
    J'ai fait un autre test en ne gardand que l'entree sortie

    fichier fortran
    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
          character *4 MSTA,PRMK, SRMK,IPRO, AS,AZRES
          character *3 rmk
          character *80 ICARD
          character *1 QRMK , SYM
          real w,p, s, ws, amx, prx,calp, calx,dt,fmp
          integer jtime,jmin
     
       30 READ(5,35,END=300) MSTA,PRMK,W,JTIME,JMIN,P,S
         1,SRMK,WS,AMX,PRX,CALP,CALX,RMK,DT,FMP
         2,AZRES,SYM,AS,ICARD,QRMK,IPRO
          print *,  MSTA,PRMK,W,JTIME,JMIN,P,S
         1,SRMK,WS,AMX,PRX,CALP,CALX,RMK,DT,FMP
         2,AZRES,SYM,AS,ICARD,QRMK,IPRO
     
          go to 30
     
       35 FORMAT(2A4,T8,F1.0,T10,I8,I2,F5.2,T32,F5.2,A4,T40,F1.0,T44,F4.0
         1,F3.2,F4.1,T59,F4.1,A3,F5.2,F5.1,T21,A4,T7,A1,T32,A4,T1,A80
         2,T63,A1,T5,A4)
    cAIO .P.0 100110063128.00       30.43.S.1
    c12341234 123456781212345       123451234
    cMSTAPRMK jtime   jm P          S    SRMK
    c    IPRW                               WS
    c      Sym           AZRE       AS          AMX PRX CALP   CALXrmkDT   FMP
    c ICARD
     300  stop
          end
    je ne suis pour rien dans les parametres qui ne servent pas et la multiplicité des choses sans doute inutiles....


    fichier data (en fait j'ai aa où les lignes sont courtes, bb où j'ai ajouté les zero)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    AGE .P.0 100110063127.16
    AIO .P.0 100110063128.00       30.43.S.1
    ALI .P.0 100110063127.27       29.73.S.1
    DIM .P.0 100110063127.45       29.79.S.1
    EFP .P.0 100110063127.67
                     10
    resultats d'execution sur bb puis sur aa

    onde:/u/lipsi/corinthe/crl/Test_trig/Loc/HYPO71.test> essai < bb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     AGE .P.0   0.0000000        10011006          31   27.160000       0.0000000            0.0000000       0.0000000       0.0000000       0.0000000       0.0000000           0.0000000       0.0000000     7.16.    AGE .P.0 100110063127.16                                                         .P.0
     AIO .P.0   0.0000000        10011006          31   28.000000       30.430000     .S.1   1.0000000       0.0000000       0.0000000       0.0000000       0.0000000           0.0000000       0.0000000     8.00.30.4AIO .P.0 100110063128.00       30.43.S.1                                         .P.0
     ALI .P.0   0.0000000        10011006          31   27.270000       29.730000     .S.1   1.0000000       0.0000000       0.0000000       0.0000000       0.0000000           0.0000000       0.0000000     7.27.29.7ALI .P.0 100110063127.27       29.73.S.1                                         .P.0
     DIM .P.0   0.0000000        10011006          31   27.450001       29.790001     .S.1   1.0000000       0.0000000       0.0000000       0.0000000       0.0000000           0.0000000       0.0000000     7.45.29.7DIM .P.0 100110063127.45       29.79.S.1                                         .P.0
     EFP .P.0   0.0000000        10011006          31   27.670000       0.0000000            0.0000000       0.0000000       0.0000000       0.0000000       0.0000000           0.0000000       0.0000000     7.67.    EFP .P.0 100110063127.67                                                         .P.0
                0.0000000               0          10   0.0000000       0.0000000            0.0000000       0.0000000       0.0000000       0.0000000       0.0000000           0.0000000       0.0000000                               10
    onde:/u/lipsi/corinthe/crl/Test_trig/Loc/HYPO71.test> essai < aa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     AGE .P.0   0.0000000        10011006          31   27.160000       0.0000000            0.0000000       0.0000000       0.0000000       0.0000000       312.79999     .00   0.0000000       30.000000     7.16.    AGE .P.0 100110063127.16                                                        ..P.0
     AIO .P.0   0.0000000        10011006          31   28.000000       30.430000     .S.1   1.0000000       0.0000000       0.0000000       0.0000000       312.70001     .27   0.0000000       29.000000     8.00.30.4AIO .P.0 100110063128.00       30.43.S.1                                        ..P.0
     ALI .P.0   0.0000000        10011006          31   27.270000       29.730000     .S.1   1.0000000       0.0000000       0.0000000       0.0000000       312.70001     .45   0.0000000       29.000000     7.27.29.7ALI .P.0 100110063127.27       29.73.S.1                                        ..P.0
     DIM .P.0   0.0000000        10011006          31   27.450001       29.790001     .S.1   1.0000000       0.0000000       0.0000000       0.0000000       312.70001     .67   0.0000000       0.0000000     7.45.29.7DIM .P.0 100110063127.45       29.79.S.1                                        ..P.0
    On voit bien dans l'execution avec aa que des valeurs 320.... arrivent sans raison et les 2 dernières lignes ne sont pas lues (pas de message à l'execution)

  7. #7
    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
    Le problème ne m'est pas évident...

    Pour insérer des bouts de programme ou de fichier, tu dois utiliser le bouton # de la barre d'outil de l'éditeur. Je les ai ajouté cette fois ci. Le rendu est beaucoup plus facile à lire.

    Le contenu hexa du fichier semble en fait en octal et non en hexa. Peux-tu le refaire en hexa. C'est beaucoup plus facile à lire (en fait, je ne comprends pas que je sois pas capable de l'interpréter...).

  8. #8
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Par défaut
    Merci

    C'est la solution à laquelle j'étais arrivée de mon côté.

    Merci et toutes mes excuses


    Anne

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 489
    Par défaut
    Bonjour,

    Plutôt qu'un bug du compilateur, n'est-ce pas simplement un comportement indéterminé dû au fait qu'on demande à lire une variable qui finalement n'est pas donnée en entrée?; car dans ce cas je ne pense pas que la norme dicte que la valeur zéro soit affectée à cette même variable (j'imagine plutôt que le contenu de la variable restera indéterminé).

    En fait, à la solution proposé par Sylvain, j'aurai ajouté une initialisation à zéro des variables avant la lecture.

  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
    Par défaut
    Citation Envoyé par Ehouarn Voir le message
    ...n'est-ce pas simplement un comportement indéterminé dû au fait qu'on demande à lire une variable qui finalement n'est pas donnée en entrée?...
    Le comportement que tu décris est celui du format libre.

    Pour une lecture séquentielle avec un format à position fixe, la ligne est complétée par des blancs si elle est trop courte. Et les blancs sont ensuite convertis en zéro à la lecture d'une variable numérique.

    Le problème vient peut-être de l'utilisation simultané d'une ligne trop courte, de format Tn et du unit 5 (normalement stdin), parce que c'est assez surprenant que ça ne fonctionne pas. C'est assez de base...

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 489
    Par défaut
    Citation Envoyé par Sylvain Bergeron Voir le message
    Le comportement que tu décris est celui du format libre.

    Pour une lecture séquentielle avec un format à position fixe, la ligne est complétée par des blancs si elle est trop courte. Et les blancs sont ensuite convertis en zéro à la lecture d'une variable numérique.
    Ah bon. Je n'avais jamais entendu parler de ce distinguo; j'en était juste resté au:
    If an error or end-of-file condition occurs on input, all input list items become undefined.
    décrit dans la section 9.4.3 de la norme fortran 90 (c.f. http://www.fortran.com/fortran/f90_std.pdf)
    Mais je ne suis pas non plus un lecteur assidu du dit document.

Discussions similaires

  1. [IO] Les fonctions d'entrée/sortie en Java
    Par GBAGO dans le forum Langage
    Réponses: 14
    Dernier message: 20/12/2010, 13h03
  2. Contraintes d'entrée-sortie
    Par Vigneau dans le forum Assembleur
    Réponses: 1
    Dernier message: 30/09/2006, 15h39
  3. Entrée sortie sous unix
    Par miminou dans le forum Administration système
    Réponses: 6
    Dernier message: 22/06/2006, 15h51
  4. Format d'entrée/sortie
    Par genteur slayer dans le forum Fortran
    Réponses: 1
    Dernier message: 20/03/2006, 13h51
  5. Flot d'entree / sortie
    Par Krishna dans le forum C++
    Réponses: 8
    Dernier message: 06/09/2004, 09h54

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