Vous êtes sur la page 1sur 11

Les entrées-sorties

Fortran 90
Les fichiers
•L’exploitation d’un fichier au sein d’un programme nécessite au
préalable son ouverture.
•En Fortran, l’ouverture est faite au moyen de l’instruction OPEN.
•Cette instruction permet notamment :
–de connecter le fichier à un numéro d’unité logique : c’est celui-ci que l’on
indiquera par la suite pour toute opération de lecture-écriture,
–de spécifier le mode désiré : lecture, écriture ou lecture-écriture,
d’indiquer le mode d’accès au fichier : séquentiel ou direct.
•Si l’ouverture du fichier est fructueuse, des lectures-écritures
pourront être lancées à l’aide des instructions READ/WRITE par
l’intermédiaire du numéro d’unité logique.
•Une fois le traitement du fichier terminé, on le fermera au moyen de
l’instruction CLOSE.
Ouverture de fichier
open(unit=10,file=’toto’)

• Cette instruction ouvre le fichier à la première ligne (s’il


n’existe pas, il est créé).
• l’expression unit=10 indique que le fichier toto est connecté au
descripteur numéro 10.
• Tous les nombres peuvent être utilisés comme descripteurs
sauf 5 (clavier) et 6 (écran).
• Si le mot clef file n’est pas donné, le fichier fort.n est créé,
ou n est le descripteur donné après le mot clef unit.
Fermeture de fichier
close (10)
• Attention, si on réouvre le fichier avec open, on se retrouve à la première
ligne.
• écrasement de fichier : un write après l’ouverture d’un fichier existant
détruit le contenu du fichier.
Écriture de données
write(10, ) donnee1, donnee2, donnee3

• Une instruction write écrit toutes les données sur la même


ligne, le write suivant passera à la ligne suivante.
• Les données peuvent être de n’importe quel type (constantes
ou variables)
• Le print , pour écrire à l’écran est équivalent à write(6,*) et
à write(*,*)
Lecture de données
read (10 , ) var1 , var2 , var3
• La première ligne du fichier est lue, le read suivant
passera à la ligne suivante.
• Les données sont supposées être séparées par des
blancs.
• Elles sont stockées respectivement dans var1, var2,
..., varn.
• Si plus de données que de variables : seules les
premières données sont stockées (cas inverse : seules
les premières variables sont affectées)
• Le read , pour lire au clavier est ´equivalent `a
read(5, ) et à read( , )., ) var1 , var2 , var3
Fichiers binaires
• Les fichiers de textes sont des fichiers de caractères, ce qui peut
prendre beaucoup de place s’il y a beaucoup de données.
• Dans ce cas, il vaut mieux stocker les données (en particulier
numériques) sous forme binaire avec l’option form. Le fichier n’est
pas lisible avec un éditeur de texte, mais il est beaucoup plus petit.

open (unit=15, file= ‘toto’ ,form=‘unformatted’)

• La lecture et l’écriture : se fait avec les instructions read et write


sans le paramètre de la manière suivante:

read(15) var1, var2


write(15) donnee
Contrôle des erreurs en E/S
• Lors des entrées sorties, le programme s’arrête à la moindre
erreur (par exemple lecture dans fichier inexistant, fin de
fichier,…)
• Les paramètres des commandes open, read et write
permettent d’éviter l’arrêt et de déterminer la source de
l’erreur en récupérant l’erreur dans la variable iostat.
• Si tout se passe bien, la variable affectée par l’option iostat
est égale à zéro
Exemple
OPEN( UNIT=1, FILE="data_txt_seq", &
FORM="formatted", ACCESS="sequential", &
STATUS="old", ACTION="write", &
POSITION="rewind", IOSTAT=ios )
Les E/S formattées option fmt
• L’inconvénient de E/S en format libre sont
– fichier pas propre : réels écrits sous forme décimale
– Lecture peu sure : risque de mélange des variables
• Solution est la suivante:
– Utilisation de format : on indique précisément le nombre et
le type des variables à lire et avec le paramètre fmt du
read et du write

read(descripteur, fmt=‘(chaine)’) var1,...


write(descripteur, fmt=‘(chaine)’) var1,...

ou ‘chaine’ indique le type des données dans l’ordre ou elles


sont lues ou écrites
Les E/S formattées paramètre fmt

Vous aimerez peut-être aussi