Option d'un programme en fortran

ladgalen Messages postés 158 Statut Membre -  
 tristof -
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
A voir également:

3 réponses

ladgalen Messages postés 158 Statut Membre 10
 
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
tristof
 
Cool, merci pour cette info. C'est exactement ce que je cherchais et cela fonctionne à merveille !
++
tristof
0
cchristian Messages postés 928 Statut Membre 131
 
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 158 Statut Membre 10
 
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 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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