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 :

format d'écriture pour write(unit, namelist)


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 format d'écriture pour write(unit, namelist)
    Bonjour,

    j'ai un vieux programme écrit en fortran 77 qui utilise des instructions

    et qui ensuite les écrit:

    J'ai recompilé le programme sur une plateforme 64 bits et voilà qu'il m'affiche les réels avec un format un peu lourd (plein de chiffres et surtout des exposants "D" au lieu des exposants "E").

    du coup je me demandais si il existait des options de compilation (ou autre moyen) permettant de contrôler l'affichage de ces write.

    J'utilise sunstudio version 12 avec les options de compilation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f77 -xtypemap=integer:64,real:64 -aligncommon=8 nom_fichiers.f
    Je peux éventuellement utiliser un autre compilo, mais sunstudio en priorité.

    J'ai farfouillé un peu partout sans succès... peut-être que les spécialistes du coin pourront m'aider?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    J'ai farfouillé un peu partout sans succès...
    Et as-tu pensé à consulter un cours de Fortran? Je doute qu'il y en ait un seul qui ne décrive pas la fonction "write" et l'utilisation des formats.
    Le poly disponible sur cette page, particulièrement complet, devrait t'être utile.

    Bonne continuation.

  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
    Citation Envoyé par Ehouarn Voir le message
    Bonjour,


    Et as-tu pensé à consulter un cours de Fortran? Je doute qu'il y en ait un seul qui ne décrive pas la fonction "write" et l'utilisation des formats.
    Le poly disponible sur cette page, particulièrement complet, devrait t'être utile.

    Bonne continuation.
    oh merci je n'y avais pas pensé, comment ais-je pu être aussi bête....

    Tu notera (mais tu le sais probablement déjà car vu le ton condescendant employé tu dois connaitre le fortran sur le bout des doigts) que l'utilisation des arguments nml et fmt simultanément est interdite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          WRITE (IU3,NML=PROUT,FMT=('F8.2'))
                                  ^
    "SRC/mon_fichier.f", Line = 1097, Column = 31: ERROR: The FMT and NML specifiers must not be specified in the same I/O control list.
    En l'occurence ma question s'adresse aux spécialistes qui connaitront (peut-être) un moyen de contourner ce problème (option de compilation ou autre), et qui auront la gentillesse de m'aider.

    bien cordialement

  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
    Points : 1 346
    Points
    1 346
    Par défaut
    Les namelists ont les avantages et les inconvénients des list-directed : simples, mais (presque) aucun contrôle...

    J'ai cherché un peu, et je ne vois pas de solution directe.

    Le "D" vient du fait que la variable est double. Peux-tu la déclarer simple ?

    Autre piste : La très classique « écris dans une chaîne, édites la chaîne, puis imprime la ». C'est risqué dans la mesure où écrire un namelist dans un internal file est une extension je crois. De plus, à partir du moment où tu fais ce genre de manipulation, tu perds tous les avantages de simplicité du namelist. La vraie solution devient alors :

    write(unit, '(...)') '&prout a=',a,', b='...

  5. #5
    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
    Merci pour ton aide Sylvain. Malheureusement je ne peux pas modifier le code. Tant pis, je marque résolu: pas moyen de le faire de manière simple

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/02/2015, 07h50
  2. [C#] format de saisie pour données numériques
    Par grome dans le forum ASP.NET
    Réponses: 3
    Dernier message: 16/06/2005, 20h07
  3. [spool]formater le spool pour avoir un vrai csv
    Par hatake.kakashi dans le forum Oracle
    Réponses: 15
    Dernier message: 07/06/2005, 20h36
  4. [C#] Format des dates pour une ComboBox...
    Par frechy dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/01/2005, 17h08
  5. [Debutant]Formater un string pour une url
    Par maxxou dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 22/03/2004, 16h17

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