La création d'un fichier est fournie par l'instruction :
OPEN(UNIT= numfich, FILE=nomfich, STATUS='NEW')
numfich : est un entier indiquant le numéro du fichier (1
numfich
99)
nomfich : est une chaîne de caractère indiquant le nom du fichier à créer
STATUS = 'NEW': indique que c'est un fichier à créer.
STATUS = 'OLD': indique que c'est un fichier existant.
STATUS = 'UNKNOWN' : indique que c'est un fichier existant ou à créer.
Le fichier ainsi créé est un fichier séquentiel formaté i.e l'écriture dans ce fichier s'effectue via un format.
Le fichier se manipule, non pas directement par son nom tel qu'il est connu du système, mais par son numéro d'unité logique (ici numfich).
Pour écrire (ou lire) dans un fichier il suffit alors de préciser le numéro d'unité logique ainsi :
WRITE(numfich, ....) écrit dans le fichier créé
ou lieu de
WRITE(*,...) qui écrit sur l'unité standrd l'écran.
Exemple. Création d'un fichier séquentiel formaté
PROGRAM creation_fichier IMPLICIT NONE CHARACTER(LEN=20) :: nom INTEGER :: age REAL :: taille OPEN(UNIT=13, FILE='entree.in', STATUS='NEW') PRINT*,'nom age taille ( nom =' ' pour sortir)' DO READ*,nom, age, taille IF( nom =='fin') EXIT WRITE(13,200) nom, age, taille ENDDO PRINT*,'----fin creation fichier formatee-------' CLOSE (13) 200 format (A20,1X,I4,E12.4) END PROGRAM creation_fichier
Le fichier ainsi créé entree.in peut être consulté à l'aide des éditeurs de texte.
Exemple. Lecture d'un fichier séquentiel formaté et gestion des erreurs
PROGRAM lecture_fichier IMPLICIT NONE CHARACTER(LEN=20) :: nom INTEGER :: age REAL :: taille OPEN(UNIT=44, FILE='entree.in', STATUS='OLD') DO READ(44,*,ERR=88,END=99) nom,age, taille WRITE(*,200) nom, age, taille ENDDO 88 print*,'Erreur dans la lecture du fichier' STOP 99 print*' Fin du fichier - tout est ok' CLOSE (44) ! suite de l'histoire si il y a une suite 200 format (A20,1X,I4,E12.4) END PROGRAM creation_fichierLa lecture du fichier 'entree.in' s'effectue suivant un format libre. L'attribut ERR = 88 permet la gestion des erreurs, si une erreur s'est glissée dans le fichier alors le compilateur renvoit à l'étiquette 88 et par contre si tout s'est bien passé alors il renvoit à l'étiquette 99.