Posez votre question Signaler

Gestion de fichiers en fortran 90/77 [Résolu]

Irene_Adler 132Messages postés 26 juin 2008Date d'inscription 13 juillet 2011Dernière intervention - Dernière réponse le 1 juil. 2008 à 17:33
Bonjour à tous!
Voila, Je travaille sur un programme en fortran 77 (c'est vieux comme le monde!) et
je voudrais creer un fichier FORMATÉ qui va m'afficher les resultats de mes calculs.
Seulement, il faut que je l'ouvre et le ferme plusieurs fois et je ne sais pas comment faire pour qu'il continue à écrire là où il s'était arreté précédemment...
Merci aux âmes charitables!!!!!!
Lire la suite 

Gestion de fichiers en fortran 90/77 »

13 réponses
Réponse
+1
moins plus
Bonsoir,

Essaie en ajoutant : OPEN (UNIT = 70, .............., STATUS = ....

A titre de comparaison je joins une instruction OPEN qui fonctionne (en Fortran 77):
       OPEN      (UNIT   = DATA_UT_IN,     IOSTAT = IO_RC, 
     S            FILE   = F_NAME_IN,      STATUS = 'OLD',
     S            ACCESS = 'SEQUENTIAL',   FORM   = 'FORMATTED', 
     S            ERR    = 15)



--
Cordialement.

Cchristian.
Irene_Adler- 30 juin 2008 à 19:48
Merci, je vais essayer...
Irene_Adlercchristian - 1 juil. 2008 à 16:34
Je n'ai pas créé le fichier, ne se crée-t-il pas directement avec l'instruction open? faut -il que je rajoute status='new'?
cchristian- 1 juil. 2008 à 17:30
Bonjour,

Si le fichier n'existe pas il faudra la première fois le créer avec NEW :
Ma remarque était en effet mal formulée, elle sous-entend que le fichier est déjà existant créé dans une précédente étape, alors qu'il va être constitué dans le même programme par les instructions :
C      Ouverture en accès direct du fichier F_NAME_DIR.
       IO_ORDRE          = 'OPEN_DIR'        
       OPEN      (UNIT   = DATA_UT_DIR,    IOSTAT = IO_RC, 
     S            FILE   = F_NAME_DIR,     STATUS = 'NEW',
     S            ACCESS = 'DIRECT',       FORM   = 'FORMATTED',
     S            ERR    = 15,             RECL   = F_SIZE_DIR)
       ...................................

 
        ................................
           INTERM             = 1     ! N° relatif d'enregistrement (1 à n)
C      Boucle écritures en accès direct  dans le fichier F_NAME_DIR.
       ....................................
            IO_ORDRE    = 'WRITE_DIR'
             WRITE (UNIT = DATA_UT_DIR,    IOSTAT = IO_RC,
     S              FMT  = 505,            REC    = INTERM,    
     S              ERR  = 15)
     S              .....................,    ..................,

          INTERM             = INTERM             +  1  
          ...........................
         ............................
C     Fin de la boucle 
         ...............................................
Ajouter un commentaire
Réponse
+0
moins plus
regarde là
ftp://ftp-developpez.com/fortran/cours/notions-base.pdf
tu devrais trouve facilement.
Irene_Adler- 27 juin 2008 à 16:57
Merci pour les cours!
J'ai essayé d'ouvrir un fichier en accès direct mais j'ai toujours le même message d´erreur:

fortcom: Error: funwave2d.f, line 93: Syntax error, found END-OF-STATEMENT when expecting one of: , )
open(70,file='eta_fct_of_time',form='formatted',access='direct',recl=ngage*20)
-----------------------------------------------------------------------------------------------------------------^

voici le bout de code:
open(70,file='eta_fct_of_time',form='formatted',access='direct',recl=ngage*20)
write(70,rec=it,fmt='(100F8.4)')(etn(ixg(k),iyg(k)),k=1,ngage)
close(70)
Ajouter un commentaire
Réponse
+0
moins plus
Pour les futurs lecteurs de cette discussion:

Un des problèmes rencontré est que le compilateur ne comprend pas les instructions open,write,read,....
quand elles sont en début de ligne,
il faut absolument faire une indentation pour qu'il comprenne.(ne pas écrire dans les colonnes 1 à 5 car c'est la zone pour les étiquettes.)

certains compilateurs marchent comme ca...
Ajouter un commentaire
Réponse
+0
moins plus
Merci de votre aide, Je crois que j'ai trouvé l'erreur:

fortcom: Error: funwave2d.f, line 93: Syntax error, found END-OF-STATEMENT when expecting one of: , )
open(70,file='eta_fct_of_time',form='formatted',access='direct',recl=ngage*20)
---------------------------------------------------------------------------------------^


ici, outre le fait que je n'avais pas fait d'identation et qu'une fois sur deux il ne reconnaissait pas l'instruction OPEN,
il fallait:

- faire plusieurs lignes car la ligne d'instruction OPEN était trop longue et il ne la lisait pas en entier


en faisant cela, le programme compile.

REMARQUE: avant de lire un fichier binaire, utiliser la fonction
rewind(UNIT_FILE)

MERCI ENCORE!!!!!!!!!
cchristian- 1 juil. 2008 à 17:33
Bon courage, merci pour ces infos,
Ajouter un commentaire
Réponse
-1
moins plus
peut être n'aime til pas le *20...
Irene_Adler- 30 juin 2008 à 16:55
J'ai essayé avec un nombre et j'ai le même message d'erreur.
Les fichiers formattés en accès direct fortran 90 marchent-ils mieux?
Ajouter un commentaire
Ce document intitulé « gestion de fichiers en fortran 90/77 » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?