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 :

Passer un fichier d'entrée en argument en ligne de commande


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Par défaut Passer un fichier d'entrée en argument en ligne de commande
    Bonjour tout le monde. Voila j'ai un problème assez ennuyeux. J'ai fait un code fortran qui en dur fonctionne très bien. Je tourne sous Linux.
    J'ai crée un fichier d'entrée initialement appelé toto.bat. Mon exécutable s'appelle EperVeille.out et en faisant un OPEN avec un FILE='toto.bat' lorque l'on tape la ligne de commande suivante:

    EperVeille.out toto.bat

    le programme s'execute correctement avec les parametres du fichier d'entrée toto.bat

    Seulement sa ne me satisfait pas. Car si jamais je renomme mon fichier d'entree en romeo.bat par exemple puis que je tape la commande

    EperVeille.out romeo.bat

    sa ne marche plus puisque j'ai spécifié dans le code que le fichier s'appelait toto.bat
    Ce que je veux c'est faire quelque chose pour ne plus avoir besoin d'aller dans le code changer le nom de mon fichier arametre d'entree.

    Je voudrais que quelque soit le nom du fichier parametre d'entree lorsque j'ecris

    EperVeille.out fichier_entrée.bat
    il me lance le programme avec les parametres utilisé dans le fichier d'entree.
    Je voudrais simplement que le fait de renommer le fichier d'entrée ne me fasse plus intervenir dans le code.
    Comment puis je modifier mon code pour faire cela??
    Voila ce que j'ai écrit pour la lecture du fichier parametre d'entrée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    OPEN(UNIT=5,FILE='toto.bat',STATUS='OLD',err=10000)   
    	READ(5,SIMU)
    	CLOSE(5)
    ....
    10000: "Fichier d'entrée introuvable"
    Est ce que quelqu un peut m'aider je désespere.

    J'avais pense a utiliser getarg mais mon compilo ne me reconnait pas cette fonction et puis je ne saurais pas quoi ecrire. Aidez moi svp. Merci

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Par défaut
    Bonjour,
    Je ne sais pas si c'est la solution optimale, mais tu peux créer un fichier au nom fixe. Celui-ci contiendrait le nom du fichier qui doit être lu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    open(12, file='data')
    read(12,*) file.dat
    open(13,file=file.dat)
    ...
    Je me sers aussi parfois de ce genre d'astuces pour donner les noms des fichiers de sortie, le nombre de lignes à lire, ... Bref, des paramètres d'entrées variables selon les cas de figures mais devant être utilisés par un programme unique.

  3. #3
    Membre habitué
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Par défaut
    Oui mais dans ton fichier data je vais mettre le fichier que j'ai appelé toto.dat qui est le nom du fichier d'entrée mais si je veux le renommer un jour ce toto.dat il faudra aussi modifier dans le fichier data. Moi ce que je cherche si c'est possible c'est s'il n'y a pas moyen de faire en sorte qu'il reconnaisse le fichier d'entrée peu importe son nom.

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    bonjour,

    tu as la possibilité d'utiliser la fonction GETARG mais je ne sais pas si elle fait partie de la norme Fortran, du coup elle peut ne pas être disponible sur certains compilateurs:

    http://gcc.gnu.org/onlinedocs/gfortran/GETARG.html

    sinon, l'autre possibilité est de lancer ton exécutable fortran via un script qui lui peut récupérer les arguments de la ligne de commande et qui peut les écrire dans un fichier temporaire qui lui a un nom fixe dans ton programme. en ce qui me concerne, c'est toujours comme ça que je fais.

  5. #5
    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 kango Voir le message
    ...tu as la possibilité d'utiliser la fonction GETARG mais je ne sais pas si elle fait partie de la norme Fortran, du coup elle peut ne pas être disponible sur certains compilateurs:

    http://gcc.gnu.org/onlinedocs/gfortran/GETARG.html
    ...
    Le lien donne la réponse : getarg() est propriétaire. La norme spécifie GET_COMMAND_ARGUMENT. Elle n'est disponible qu'à compter de Fortran 2003, mais elle a été introduite très tôt dans la plupart des compilateurs.

  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
    Dans ton cas la fonction getarg() est la meilleure des solutions.

    Elle marche très bien avec gfortran et ifort.

Discussions similaires

  1. Passer un fichier d'entrée dans le shell
    Par michel42 dans le forum Général Python
    Réponses: 3
    Dernier message: 02/04/2012, 11h56
  2. passer un argument en ligne de commande
    Par genie_programmeur dans le forum Windows
    Réponses: 2
    Dernier message: 15/09/2008, 21h38
  3. passer un argument en ligne de commande
    Par Art19 dans le forum Delphi
    Réponses: 7
    Dernier message: 06/07/2007, 19h10
  4. Comment passer des arguments en ligne de commande?
    Par Razgriz dans le forum NetBeans
    Réponses: 1
    Dernier message: 11/04/2007, 11h11
  5. Réponses: 3
    Dernier message: 07/04/2003, 20h06

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