L4G >  Openio  

Afficher tout Masquer tout

Openio permet d'ouvrir et de fermer un fichier séquentiel en lecture et en écriture.

 

Syntaxe

   Openio [ exp_nomfic [, exp_depl ] ]  [ Using abrev ]

 

Paramètres

Elément

Description

Restrictions

exp_nomfic

Expression de type Char dont le résultat est le chemin d'un fichier (Unix ou MS-DOS)

Aucune.

exp_depl

Expression numérique de la valeur initiale du déplacement (seek).

0 <= exp_depl <= taille du fichier.

abrev

Abréviation désignant le fichier ouvert.

Aucune.

 

Exemples

   # Ouverture d'un fichier avec saut des 10 premiers caractères
    Openiofilpath('tmp','rdfile',''), 10

   # Fermeture du dernier fichier ouvert pour lecture et écriture
    Openio

   # On veut lire sur l'entrée standard (clavier)
   # et écrire sur la sortie standard (écran)
    Openio"*"

   # Ouverture s'un fichier se trouvant sur la machine "distrib"
    Openio"distrib@"+[L]NOMFIC

   # Ouverture du fichier X3.ini se trouvant sur le client
    Openio"#@C:\X3\X3.ini"

   # Ouverture de deux fichiers
    Openiofilpath('tmp','rdfile1','') Using [YYY]
   
Openiofilpath('tmp','rdfile2','') Using [ZZZ]

   # Fermeture des deux fichiers précédemment ouverts
    Openio Using [YYY]
   
Openio Using [ZZZ]

 

Description

Openio avec exp_nomfic permet d'ouvrir un fichier pour lecture et écriture par Rdseq, Wrseq, Putseq et Getseq.

Openio sans exp_nomfic permet de fermer ce fichier.

Par convention, le poste client est désigné par le serveur #.

La valeur donnée en 2ème paramètre permet de débuter les lectures/écritures à une position donnée du fichier. En son absence, la lecture/écriture débutera en début de fichier. Dans tous les cas, l'ordre Seek permet de se déplacer pendant la lecture, et les fonctions adxseek(0), adxseek(1) ou adxseek(abrev) permettent de connaître la position dans le fichier. Bien évidemment, aucune troncature n'est faite sur le fichier; par contre celui-ci est agrandi si l'on écrit au delà de la fin du fichier. Si l'on fait un Seek au delà du fichier, puis l'on écrit, la portion du fichier non écrite sera remplie de caractères nuls.

La clause Using permet d'attribuer une abréviation à un fichier séquentiel ouvert. Par conséquent, il est possible d'ouvrir jusqu'à 16 fichiers séquentiels simultanément sous réserve de la valeur du paramètre adxmso.

Fichier sans abréviation :

  • Les fonctions adxseek(0) et adxseek(1) permettent de connaître la position dans le fichier. Lorsque le fichier a été ouvert par Openio, ces deux fonctions renvoient toujours une valeur identique.
  • Il ne peut y avoir qu'un seul fichier séquentiel ouvert par Openio et Openi ou Openo à un instant donné. L'ouverture en lecture/écriture d'un fichier aura pour action de refermer un fichier qui aurait été précédemment ouvert par Openio openi ou openo.
  • Openio utilisé sans paramètre permet de fermer le fichier précédemment ouvert ou de faire cesser l'affectation du clavier en entrée.

Fichier avec abréviation :

  • La fonction adxseek(abrev) permet de connaître la position dans le fichier.
  • On ne peut pas avoir plusieurs fichiers ouverts sous la même abréviation à un instant donné. L'ouverture d'un fichier sous une  même abréviation ( y compris dans un sous-programme) aura pour effet de refermer le fichier ouvert précédemment.
  • Openio, utilisé avec la clause using abrev uniquement, permet de fermer le fichier précédemment ouvert sous cette abréviation.

 

Remarques

L'ouverture par Openio faite sur un fichier inexistant ne crée pas de fichier (contrairement à Openo qui le crée si on tronque ou si on écrit en fin de fichier), mais provoque l'erreur PAFIC.

adxseek(0) est utilisé pour les positions de lecture et adxseek(1) pour les positions d'écriture. Lorsque le fichier a été ouvert par Openio, ces deux valeurs sont toujours identiques.

Les écritures dans un fichier étant bufferisées, elles ne sont effectives qu'après la fermeture de ce fichier par une des instructions Openo ou Openio. Ceci implique qu'avant cette opération, la taille du fichier sur disque peut être inchangée après des Putseq/Wrseq. On peut utiliser l'ordre Seek 0 pour vider les tampons d'écriture.

Il importe de prendre garde aux accès concurrents à un fichier ouvert par Openio. Pour gérer les problèmes d'accès à un même fichier, il est conseiller de verrouiller un symbole (voir Lock). Il faut garder à l'esprit que les transactions ne s'appliquent pas à la mise à jour de fichiers séquentiels.

Particularités Web

En web, il n'est pas possible d'ouvrir un fichier sur le poste client.

Erreurs associées

Erreur

Description

ERMODE (10)

exp_nomfic n'est pas de type Char ou exp_depl n'est pas de type numérique.

ERDOM (50)

exp_depl < 0.

ERACCE (27)

Accès impossible (permission refusée).

PAFIC (20)

Fichier (ou répertoire du chemin d'accès) inexistant.

ERSEEK (57)

Le fichier est l'entrée/sortie standard (exp_nomfic='*') et exp_depl <> 0.

ERCHAN (60)

Pas assez de canaux disponibles pour l'ouverture (qui en nécessite 2).

ERSYST (25)

Erreur système (problème de connexion sur la machine distante).

 

Mots-clés associés

OPENI - OPENO - SEEK - GETSEQ - PUTSEQ - RDSEQ - WRSEQ - IOMODE - ADXIFS - ADXIRS - ADXIUM - ADXSEEK - ADXMAC - ADXMSO