IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Les notions de base du Fortran

Support de cours


précédentsommairesuivant

Annexe A : entrées-sorties - syntaxes

Note : les valeurs par défaut sont entre crochets.

11-1. Instruction OPEN

 
Sélectionnez
1.
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

 
Sélectionnez
1.
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

 
Sélectionnez
1.
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

 
Sélectionnez
1.
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é ;
  • FORMATTED :

    • 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 ;
  • READWRITE :

    • 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 ;
  • SEQUENTIAL :

    • 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 ;
  • UNFORMATTED :

    • 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

 
Sélectionnez
1.
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".
Exemples
Sélectionnez
1.
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 )

précédentsommairesuivant

Copyright © 2006 Patrick Corde et Anne Fouilloux. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.