Option d'un programme en fortran

Fermé
ladgalen Messages postés 143 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 6 septembre 2013 - 18 mai 2008 à 14:41
 tristof - 3 juil. 2009 à 14:53
Bonjour,

Je programme en fortran 90 et je souhaite écrire un programme où il y a des fichiers d'entrée et de sortie. Je souhaiterais que l'utilisateur puisse lors de l'exécution du programme donner le nom du fichier d'entrée et de sortie.

Par exemple

prog.exe -i fichier.in -o fichier.out

Où fichier.in est le fichier d'entrée et fichier.out est celui de sortie. Comme je suis sous linux si ceci est possible en écrivant un script je suis preneur aussi (bash). J'avais pensé à un script qui écrirait dans un fichier le nom des fichiers que lirait mon programme fortran mais je sais pas faire non plus.

Merci

3 réponses

ladgalen Messages postés 143 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 6 septembre 2013 10
19 mai 2008 à 10:01
Salut

En fait en arrivant au labo quelqu'un savait comment on fait ...

En fortran il existe une fonction getarg(i,string) qui renvois les arguments d'entrée.

i est la position du string en entrée : 0 = le nom du programme
1-N = les mots qui suivent l'exécutable !

Merci à vous
2
Cool, merci pour cette info. C'est exactement ce que je cherchais et cela fonctionne à merveille !
++
tristof
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
18 mai 2008 à 18:10
Bonsoir,

Sur le principe (entrée "manuelle" de noms de fichiers) il n'y a pas grand chose à ajouter dans ton programme Fortran (si j'ai bien compris ce que tu souhaites obtenir).


       CHARACTER      F_NAME_IN*64
       CHARACTER      F_NAME_OUT*64
       ...............................................
       ..............................................

        WRITE (*,'(/,A,$)') ' - Entrez le nom du fichier en  INPUT: '
        READ  (*,*) F_NAME_IN  
        WRITE (*,'(/,A,$)') ' - Entrez le nom du fichier en OUTPUT: '
        READ  (*,*) F_NAME_OUT

C
C       Partie controles effectuée sur les 2 variables saisies
C	
0
ladgalen Messages postés 143 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 6 septembre 2013 10
19 mai 2008 à 08:59
Bonjour

Je connaissais cette méthode. Le problème c'est qu'elle nécessite que à chaque exécution l'utilisateur entre un à un tous les fichiers ce que je trouve laborieux (il y a 6 fichiers en tout).

Mon but était de pouvoir dans la ligne de commande donner le nom des fichiers en même temps que tu exécute le programme. En faisant par exemple exe -i input <RETURN>

En fait j'ai trouvé une autre méthode avec un petit script

Je fais

script  "-i input   - o output"


Dans script j'ai mis

touch monimput
echo $1 > moninput
exe
rm moninput


Ensuite dans mon programme "exe", au début je lis sur le fichier moninput le contenue de la variable $1 qui est sensée être ce qu'il y a entre " " après script lors de l'exécution. Du coup en traitant la chaine charactere je récupère le nom de input et output ect ...
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
19 mai 2008 à 09:38
Salut.
Je n'ai pas non plus trouver comment lire les arguments. Ta solution n'es certes pas très élégante, mais efficace, et c'est ce qui compte.
Sinon, tu peux interfacer avec du C, en remplaçant ton programme principal par une routine habituel avec des arguments.
void progFortran(int,char*);
int main(int argc,char**argv)
{
    char s[128];
    strcpy(s,argv[1]);
    for (int i=1;i<argc;++i)
    {
          strcat(s," ");
          strcat(s,argv[i]);
    }
    progFortran(argc-1,s);
    return 0;
}
0