Annexe A : entrées-sorties - syntaxes▲
Note : les valeurs par défaut sont entre crochets.
11-1. Instruction OPEN▲
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
OPEN
( [UNIT=]u, &
! entier
IOSTAT=ios, &
! entier
FILE=filename, &
! chaîne de caractères
STATUS=st, &
! chaîne de caractères
ACCESS=acc, &
! chaîne de caractères
FORM=form, &
! chaîne de caractères
RECL=recl, &
! entier
POSITION=pos, &
! chaîne de caractères
ACTION=act, &
! chaîne de caractères
BLANK=blk, &
! chaîne de caractères
DELIM=del, &
! chaîne de caractères
PAD=pad ) &
! chaîne de caractères
- (UNIT) : numéro de l'unité logique sur laquelle on désire connecter le fichier ;
- IOSTAT : entier valorisé une fois l'ouverture effectuée. Il est nul si l'opération s'est bien passée, non nul sinon ;
- FILE : nom du fichier à ouvrir ;
-
STATUS : état du fichier avant l'ouverture :
- OLD : le fichier doit exister,
- NEW : le fichier ne doit pas exister, il sera créé,
- [UNKNOWN] : état dépendant du compilateur,
- REPLACE : si le fichier n'existe pas, il est créé et hérite de l'état OLD, sinon, il est détruit et un nouveau fichier est créé,
- SCRATCH : un fichier temporaire anonyme est créé, il sera détruit à la fin du programme ou au moment du
CLOSE
;
-
ACCESS : mode d'accès au fichier :
- DIRECT : accès direct,
- [SEQUENTIAL] : accès séquentiel ;
-
FORM : type du transfert :
- FORMATTED : mode caractère (avec format),
- UNFORMATTED : mode binaire (sans format) ;
- RECL : longueur des enregistrements logiques en accès direct ou de l'enregistrement maximum en accès séquentiel. L'unité de longueur est le caractère pour les fichiers textes et dépend du processeur pour les fichiers binaires ;
-
POSITION : positionnement dans le fichier après ouverture :
- [ASIS] : positionnement inchangé si le fichier est déjà connecté, indéfini sinon,
REWIND
: positionnement en tête de fichier,- APPEND : positionnement en fin de fichier pour extension ;
-
ACTION : mode d'ouverture :
READ
: seule la lecture est possible,WRITE
: seule l'écriture est possible,- [READWRITE] : la lecture ainsi que l'écriture sont permises ;
-
BLANK : indique la façon dont les blancs sont interprétés lors d'une opération d'entrée-sortie :
- [NULL] : ils sont ignorés,
- ZERO : ils sont interprétés comme des zéros ;
-
DELIM : indique le caractère délimiteur utilisé pour les constantes chaînes de caractères écrites en format libre ou via une NAMELIST :
- APOSTROPHE : délimiteur → " ,
- QUOTE : délimiteur → ' ,
- [
NONE
] : aucun délimiteur ;
-
PAD : permet de gérer le padding lors d'une lecture :
- [YES] : la liste de variables spécifiée dans l'instruction de lecture peut être plus grande que l'enregistrement logique, les variables non valorisées lors de la lecture sont remplies par des zéros pour les variables numériques ou logiques, par des blancs pour les variables de type chaîne de caractères,
- NO : aucun padding n'est autorisé. La taille de l'enregistrement logique doit être suffisante pour permettre la valorisation des variables de la liste.
11-2. Instruction READ▲
2.
3.
4.
5.
6.
7.
8.
9.
10.
READ
( [UNIT=]u, &
! entier
[FMT=]format
, &
! chaîne de caractères
[NML=]namelist, &
! chaîne de caractères
ADVANCE=ad, &
! chaîne de caractères
END
=label, &
! label
EOR=label, &
! label
ERR=label, &
! label
IOSTAT=st, &
! entier
REC=n, &
! entier
SIZE=n ) ! entier
- UNIT : numéro de l'unité logique sur laquelle le fichier est connecté ;
-
FMT : format de conversion pour les fichiers textes spécifié sous forme :
- d'une constante chaîne de caractères,
- d'une variable chaîne de caractères,
- d'une étiquette d'instruction
FORMAT
;
- NML : nom d'une namelist ;
-
ADVANCE : positionnement à partir duquel s'effectue l'entrée-sortie suivante :
- [YES] → enregistrement suivant,
- NO → suite de l'enregistrement courant ;
END
: étiquette de l'instruction à exécuter en cas de fin de fichier ;- EOR : étiquette de l'instruction à exécuter en cas de fin d'enregistrement ;
- ERR : étiquette de l'instruction à exécuter en cas d'erreur ;
- IOSTAT : entier valorisé une fois l'entrée-sortie effectuée. Il est nul si l'opération s'est bien passée. Une valeur positive indique une erreur. Une valeur négative signale une fin de fichier dans le cas d'un accès séquentiel et l'absence d'enregistrement du rang spécifié si l'accès est direct ;
- REC : numéro de l'enregistrement à traiter pour un fichier à accès direct ;
- SIZE : entier récupérant le nombre de caractères traités si la fin d'enregistrement a été atteinte.
11-3. Instruction WRITE▲
2.
3.
4.
5.
6.
7.
WRITE
( [UNIT=]u, &
! entier
[FMT=]format
, &
! chaîne de caractères
[NML=]namelist, &
! chaîne de caractères
ADVANCE=ad, &
! chaîne de caractères
ERR=label, &
! label
IOSTAT=st, &
! entier
REC=n ) ! entier
- UNIT : numéro de l'unité logique sur laquelle le fichier est connecté ;
-
FMT : format de conversion pour les fichiers textes spécifié sous forme :
- d'une constante chaîne de caractères,
- d'une variable chaîne de caractères,
- d'une étiquette d'instruction
FORMAT
;
- NML : nom d'une namelist ;
-
ADVANCE : positionnement à partir duquel s'effectue l'entrée-sortie suivante :
- YES → enregistrement suivant,
- NO → suite de l'enregistrement courant ;
- ERR : étiquette de l'instruction à exécuter en cas d'erreur ;
- IOSTAT : entier valorisé une fois l'entrée-sortie effectuée. Il est nul si l'opération s'est bien passée, non nul sinon ;
- REC : numéro de l'enregistrement à traiter pour un fichier à accès direct.
11-4. Instruction INQUIRE▲
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
INQUIRE
( [UNIT=]u, &
! entier
ACCESS=acc, &
! chaîne de caractères
ACTION=act, &
! chaîne de caractères
BLANK=bl, &
! chaîne de caractères
DELIM=del, &
! chaîne de caractères
DIRECT=dir, &
! chaîne de caractères
ERR=label, &
! label
EXIST=ex, &
! logique
FILE=file, &
! chaîne de caractères
FORM=form, &
! chaîne de caractères
FORMATTED=form, &
! chaîne de caractères
IOSTAT=ios, &
! entier
NAME=name, &
! chaîne de caractères
NAMED=named, &
! logique
NEXTREC=next, &
! entier
NUMBER=num, &
! entier
OPENED=op, &
! logique
PAD=pad, &
! chaîne de caractères
POSITION=pos, &
! entier
READ
=r, &
! chaîne de caractères
READWRITE=rw, &
! chaîne de caractères
RECL=n, &
! entier
SEQUENTIAL=seq, &
! chaîne de caractères
UNFORMATTED=un, &
! chaîne de caractères
WRITE
=wr ) ! chaîne de caractères
- UNIT : numéro de l'unité logique sur laquelle le fichier est connecté ;
-
ACCESS : méthode d'accès :
- SEQUENTIAL si fichier connecté pour un accès séquentiel,
- DIRECT si fichier connecté pour un accès direct,
- UNDEFINED si fichier non connecté ;
-
ACTION : type d'accès :
READ
si fichier connecté en lecture,WRITE
si fichier connecté en écriture,- READWRITE si fichier connecté en lecture/écriture,
- UNDEFINED si fichier non connecté ;
-
BLANK :
- NULL si les blancs sont ignorés,
- ZERO si les blancs sont interprétés comme des 0,
- UNDEFINED si le fichier n'est pas connecté en mode formaté ou bien n'est pas connecté du tout ;
-
DELIM : délimiteur pour les chaînes de caractères en sortie en format libre ou via namelist :
- APOSTROPHE délimiteur → ",
- QUOTE délimiteur → ',
- UNDEFINED si le fichier n'est pas connecté en mode formaté ou bien n'est pas connecté du tout ;
-
DIRECT : accès direct :
- YES l'accès direct est un mode d'accès permis,
- NO l'accès direct n'est pas un mode d'accès permis,
- UNKNOWN le compilateur ne sait pas si l'accès direct est permis ou non ;
- ERR : étiquette de l'instruction à exécuter en cas d'erreur ;
-
EXIST :
.true.
si le fichier ou l'unité logique existe,.false.
si le fichier ou l'unité logique n'existe pas ;
- FILE : nom du fichier pour lequel on souhaite avoir des informations ;
-
FORM : type d'accès :
- FORMATTED si le fichier est connecté en mode formaté,
- UNFORMATTED si le fichier est connecté en mode binaire,
- UNDEFINED si le fichier n'est pas connecté ;
-
- YES si le traitement du fichier en mode formaté est valide,
- NO si le traitement du fichier en mode formaté n'est pas valide,
- UNKNOWN lorsque le compilateur ne sait pas si le traitement du fichier en mode formaté est permis ou non ;
-
IOSTAT : valeur de retour
- > 0 si une erreur s'est produite,
- = 0 si aucune erreur ne s'est produite,
- NAME : nom du fichier connecté s'il a un nom, sinon valeur indéfinie,
-
NAMED :
.true.
si le fichier a un nom,.false.
si le fichier est anonyme ;
-
NEXTREC :
- renvoie le numéro du prochain enregistrement à traiter si le fichier est ouvert en accès direct (1 si aucun enregistrement n'a déjà été traité,
- renvoie une valeur indéfinie si le fichier n'a pas été ouvert en accès direct ;
- NUMBER : renvoie le numéro de l'unité logique sur laquelle le fichier est connecté (-1 s'il ne l'est pas) ;
-
OPENED :
.true.
si le fichier est ouvert,.false.
si le fichier n'est pas ouvert ;
-
PAD :
- NO le fichier a été ouvert avec le paramètre PAD=NO,
- YES le fichier a été ouvert avec le paramètre PAD=YES ou bien le fichier n'est pas connecté ;
-
POSITION :
REWIND
si fichier ouvert avec un positionnement en tête,- APPEND si fichier ouvert avec un positionnement en fin,
- ASIS si fichier ouvert sans changement de la position,
- UNDEFINED si fichier non connecté ou bien connecté en accès direct ;
-
READ
:- YES un accès en lecture est permis,
- NO un accès en lecture n'est pas permis,
- UNKNOWN le compilateur ne sait pas si un accès en lecture est permis ou non ;
-
- YES un accès en lecture/écriture est permis,
- NO un accès en lecture/écriture n'est pas permis,
- UNKNOWN le compilateur ne sait pas si un accès en lecture/écriture est permis ou non ;
- RECL : renvoie la taille de l'enregistrement logique maximum ou une valeur indéfinie si le fichier n'existe pas ;
-
- YES l'accès séquentiel est un mode d'accès permis,
- NO l'accès séquentiel n'est pas un mode d'accès permis,
- UNKNOWN le compilateur ne sait pas si l'accès séquentiel est permis ou non ;
-
- YES si le traitement du fichier en mode binaire est valide,
- NO si le traitement du fichier en mode binaire n'est pas valide,
- UNKNOWN lorsque le compilateur ne sait pas si le traitement du fichier en mode binaire est permis ou non ;
-
WRITE
:- YES un accès en écriture est permis,
- NO un accès en écriture n'est pas permis,
- UNKNOWN le compilateur ne sait pas si un accès en écriture est permis ou non.
11-5. Instruction CLOSE▲
2.
3.
CLOSE
( [UNIT=]u, &
IOSTAT=ios, &
STATUS=st )
- UNIT : numéro de l'unité logique du fichier à fermer ;
- IOSTAT : entier valorisé une fois la fermeture effectuée. Il est nul si l'opération s'est bien passée, non nul sinon ;
-
STATUS : état du fichier après fermeture :
- DELETE : le fichier est détruit après fermeture. C'est la valeur par défaut si l'ouverture a été faite avec le paramètre STATUS=
"scratch"
, - KEEP : le fichier est conservé après fermeture. C'est la valeur par défaut si l'ouverture a été faite avec le paramètre STATUS différent de
"scratch"
.
- DELETE : le fichier est détruit après fermeture. C'est la valeur par défaut si l'ouverture a été faite avec le paramètre STATUS=
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
integer
ios
...
OPEN
( UNIT=1, &
FILE="donnees"
, &
FORM="unformatted"
, &
ACTION="read"
, &
POSITION="rewind"
, &
IOSTAT=ios )
if
( ios /=
0 ) ! Problème à l'ouverture
...
CLOSE
( UNIT=1 )
OPEN
( UNIT=2, &
FORM="formatted"
, &
ACCESS="direct"
, &
STATUS="scratch"
, &
ACTION="write"
, &
LRECL=9600, &
IOSTAT=ios )
if
( ios /=
0 ) ! Problème à l'ouverture
...
CLOSE
( UNIT=2 )