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 :

Porter programme fortran de linux à windows


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2009
    Messages : 128
    Par défaut Porter programme fortran de linux à windows
    Bonjour,

    Je suis en train d'essayer de porter un programme de linux à windows. Ce programme a été écrit sur Fortran 77 (c'est un vieux programme).
    Ce que j'ai fait pour le moment c'est télécharger Visual Studio 2008 et Intel Visual Fortran.

    Les fichiers sources initiaux sont en .f et .h. Je n'ai pas réussi à les compiler direct sur windows avec visual studio. Je me suis dit donc, c'est pas grave, je mets tout en fortran 90 et avoir des fichiers en .f90 et .fi pour les headers. Mais a priori j'ai plein de problèmes de syntaxe notamment pour la commande Format.

    J'ai donc 2 questions svp:
    1) Est ce qu'il y a une méthode plus simple que ce que je suis en train de faire pour le moment?

    2) Comment écrire Format sur fortran 90, j'ai regardé dans des cours, mais je ne trouve pas une réponse claire.

    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut
    Bonjour

    Du moment que tu as un compilateur fortran77 de windows, a priori le code devrait être portable sauf si tu as à l'intérieur des call system(" ") car ils font appel à des commandes sytème.

    Pour ce qui est du format, en F90 voici deux solutions :

    1) tu l'indique direct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    write(*,fmt="(F10.3,i7,E16.6)") a, b ,c
    2) tu l'indiques dans une variable de caractère ce qui te permet de le réutiliser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    format1 = "(F10.3,i7,E16.6)"
    write(*,fmt=format1) a, b ,c
    le fmt= est facultatif.

    Pour ce qui est des headers, à partir de fortran 90 il ne devrait plus y en avoir. Normalement les anciens common et include du F77 sont remplacés par des modules.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2009
    Messages : 128
    Par défaut
    Merci beaucoup Mais j'ai un autre petit problème :p

    Après avoir rêvé de Fortran toute la nuit (oui je fais souvent ce genre de rêves érotiques), je me suis réveillé ce matin en me disant "quel con!!"
    Au fait j'arrive à complier les fichiers .f et .h direct avec visual studio 2008.

    Donc là j'ai compilé et je suis content, mais quand je fais build, un message d'erreur qui se répète 28 fois et qui a priori n'a pas lieu d'être apparait, c'est:

    Erreur 21 error #6186: This character is not valid in a format list [...]

    avec [...] le caractère en question.

    Je précise aussi que quand je compile sur linux, tout est niquel et je n'ai porté aucune modification sur les fichiers de code.

  4. #4
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut
    Tu pourrais donner un bout de code avec le format en question, ça nous permettra de voir ce qui cloche.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2009
    Messages : 128
    Par défaut
    Oui bien sûr

    WRITE(7,*)
    1 ' plot \'toto.his\' index 1 with lines lt 0 lw 2 notitle, \\',
    2 ' \'toto.his\' index 2 with lines lt 0 lw 2 notitle, \\',
    3 ' \'toto.his\' index 3 with lines lt 3 lw 4 notitle, \\',
    4 ' \'toto.his\' index 4 with lines lt 1 lw 4 notitle'


    et il me sort comme erreurs à la compilation:

    error #5078: Unrecognized token '\' skipped
    error #5144: Invalid character_kind_parameter. No underscore
    error #5082: Syntax error, found IDENTIFIER 'TOTO' when expecting one of: ( * ) :: , <END-OF-STATEMENT> ; + . - (/ [ : ] /) ' ** / // > ...

    Voilà le genre d'erreurs qui se répètent.

    Il y a aussi la partie suivante:

    FORMAT(' with lines title \'',A3,'_{',I1,I1,'}\', \\')

    et comme erreurs:

    error #6186: This character is not valid in a format list. [}]
    error #6186: This character is not valid in a format list. [_]

    Et ainsi de suite.

    Voilà.

    EDIT :
    Juste une petite précision, pour la première partie du code avec write, cette commande est pour tracer dans un fichier des courbes avec gnuplot.

  6. #6
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut
    Qu'est ce que c'est toto.his ? Une variable fortran ne peut pas avoir ce type de nom, seul le caractère _ est autorisé en plus des lettres et des chiffres (sauf en premier).

    Pour le second format tu attend quoi en sortie ? les { doivent apparaitre où il font partie de la syntaxe du format ?

    En fait je crois comprendre ... tu me diras si je me plante, les \' doivent avoir pour but d'insérer un ' à l'intérieur de deux ' '. Essaye plutot comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
          WRITE(7,*)
         1 ' plot ''toto.his'' index 1 with lines lt 0 lw 2 notitle, \\',
         2 ' ''toto.his'' index 2 with lines lt 0 lw 2 notitle, \\',
         3 ' ''toto.his'' index 3 with lines lt 3 lw 4 notitle, \\',
         4 ' ''toto.his'' index 4 with lines lt 1 lw 4 notitle'
    et ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
          FORMAT(' with lines title '' ',A3,'_{',I1,I1,'} '', \\')
    sinon il faut mettre les ' entre " (les quotes entre guillements)

    Evite aussi le write(7,*), il est préférable de commencer à 9 ou 10 car les 8 ou 9 premiers numéros logiques sont réservés.

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

Discussions similaires

  1. [Kylix] Porter un programme Windows sous Linux
    Par bryce426 dans le forum EDI
    Réponses: 5
    Dernier message: 19/02/2010, 13h29
  2. conversion programmes fortran windows vers linux
    Par epinephryne dans le forum Fortran
    Réponses: 2
    Dernier message: 16/06/2009, 21h02
  3. Programmation de socket linux sous windows
    Par neuro6 dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 16/10/2007, 18h35
  4. Porter un code source delphi windows à linux
    Par Coussati dans le forum Delphi
    Réponses: 4
    Dernier message: 08/10/2006, 00h58
  5. Programme C passage de Linux à Windows
    Par romzaide dans le forum C
    Réponses: 6
    Dernier message: 08/11/2005, 10h47

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