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 :

lecture d'un fichier en mode 'direct'


Sujet :

Fortran

  1. #1
    Membre actif
    Profil pro
    ingénieur
    Inscrit en
    Novembre 2011
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Novembre 2011
    Messages : 165
    Points : 259
    Points
    259
    Par défaut lecture d'un fichier en mode 'direct'
    Bonjour à tous,

    J'ai un fichier que je lis en mode direct.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      open (2,file='FORT.3',ACCESS='DIRECT',FORM='UNFORMATTED',RECL=160800,STATUS='UNKNOWN')   
     read (2,rec=1) CLE

    Sous Unix ça fonctionne, la variable CLE me renvoie comme attendu des trucs du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     CLE =  752 602 637 654 100 200 600 300 500 400 40
    mais lorsque je passe sous Linux (avec le même compilateur et les mêmes options de compilation), ça foire (la variable CLE me renvoie des nombres entiers très grands:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CLE =  -1152358554653425664 6485746413366935552 9007762204694413312
     -8214002770370363392 7205759403792793600 -4035225266123964416
    les options de compilation sont:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -g -MOBJ -xtypemap=integer:64,real:64 -ansi
    et j'utilise le compilateur f90 sunstudio.

    si quelqu'un a une idée du problème

  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
    Points : 1 346
    Points
    1 346
    Par défaut
    Même compilateur, même option, mais pas même processeur. Ça ressemble beaucoup à un problème d'endianness : une des machine est big endian alors que l'autre est little endian.

    http://fr.wikipedia.org/wiki/Endianness

    Il est possible que ton compilateur te permette de forcer l'endian d'un fichier. Intel le fait, mais je ne sais pas pour Sun.

    Sinon, si c'est possible, tu regénère le fichier sur la machine d'arrivé. Il est aussi possible de convertir les nombres lus un à un en roulant les octets.

  3. #3
    Membre actif
    Profil pro
    ingénieur
    Inscrit en
    Novembre 2011
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Novembre 2011
    Messages : 165
    Points : 259
    Points
    259
    Par défaut
    c'était bien un problème de endianness!

    résolu en ajoutant l'option -xfilebyteorder=<sécification du cpu Unix>:<fichiers>

    merci!!!

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

Discussions similaires

  1. lecture d'un fichier en mode binaire ou hexa
    Par lrgtk dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 13/10/2010, 09h36
  2. Réponses: 5
    Dernier message: 02/10/2006, 22h54
  3. ouverture/lecture/ecriture dans un fichier en mode binaire
    Par dirty_boy dans le forum Débuter
    Réponses: 2
    Dernier message: 15/03/2006, 08h38
  4. lecture-ecriture de fichier en mode Random (Get - Put)
    Par MuShRo_Om dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 15/01/2006, 14h53
  5. Réponses: 4
    Dernier message: 04/11/2005, 09h04

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