L4G >  Getseq  

Afficher tout Masquer tout

Getseq permet de lire des données à partir d'un fichier binaire ouvert par Openi ou Openio.

 

Syntaxe

   Getseq exp_ent, liste_varia  [ Using classe ]

 

Paramètres

Elément

Description

Restrictions

exp_ent

Expression entière du nombre d'éléments à lire.

0 < exp_ent < 2^31

liste_varia

Liste de nom_de_variables à lire,  séparées par le caractère ','.

Les variables ont au plus 1 dimension

classe

Abréviation désignant le fichier ouvert.

Aucune.

 

Exemples

# Le fichier TEST commence par la suite des lettres de l'alphabet : abcdefghijklmnopqrstuvwxyz
# Lecture à partir du 6ème octet de ce fichier, de 3 éléments.
# Ces éléments sont placés dans une chaîne et un tableau de chaînes de caractères.

Char X(4), Y (5)(9)
Openi filpath("TXT", "TEST", ""), 5
Getseq 3, X, Y
Openi

#
# Après ce traitement :

 

x =

"fghi"

 

spacer.gif (822 octets)

0

1

2

3

4

5

6

y =

"jklmn"

"opqrs"

spacer.gif (822 octets)

spacer.gif (822 octets)

spacer.gif (822 octets)

spacer.gif (822 octets)

spacer.gif (822 octets)

 

# C omme ci-dessus, le fichier TEST commence par la suite des lettres
# de l'alphabet : abcdefghijklmnopqrstuvwxyz

Char Y(5) (2,3)
Openi filpath("TXT", "TEST", "")
Getseq 4, Y(0), Y(1)
#
#  Après ce traitement :

 

0

1

2

y(0,.)

'abcde'

'fghij'

'klmno'

y(1,.)

'pqrst'

' '

' '

 

# l'exemple ci-dessus peux aussi s'écrire
Char Y(5) (2,3)
Openi filpath("TXT", "TEST", "") Using [ZZZ]
Getseq 4, Y(0), Y(1)Using [ZZZ]

Description

Getseq lit dans le dernier fichier ouvert par Openi ou Openio des éléments dont le nombre est donné par exp_ent et les copie dans la liste de variables données en arguments de l'instruction.

La clause Using permet de préciser la classe du fichier séquentiel sur lequel on lit. Il est maintenant possible de traiter plusieurs fichiers séquentiels en même temps.

Lorsqu'il y a des tableaux d'éléments dans la liste, on peut omettre la dernière dimension. Dans le cas de tableaux mono-dimensionnés, on pourra donc indiquer le nom du tableau sans précision d'indice. Les éléments lus dans le fichier sont copiés dans ces variables dans l'ordre croissant de l'indice de la dimension omise jusqu'à épuisement du nombre de valeurs à lire.

Les éléments sont lus selon la structure interne des variables données en arguments. Le tableau suivant donne le format et le nombre d'octets utilisés suivant les types des variables :

TAILLE ET FORMAT DES INFORMATIONS ECRITES PAR PUTSEQ LUES PAR GETSEQ

Type de la variable

Format sur le fichier séquentiel

Octets

Libelle

Sous la forme d'un octet dont la valeur va de 0 à 255.

1

Char

Sous la forme d'un octet dont la valeur va de 0 à 255.

1

Shortint

Un entier court signé sur 2  octets dans l'ordre partie haute et partie basse.

2

Date  définie dans une classe [F]

Le nombre de jours sur 3 octets en commençant par la partie la plus haute.

3

Date définie dans une autre classe

Le nombre de jours sur 4 octets en commençant par la partie la plus haute (comme Integer).

4

Integer

Un entier signé sur 4 octets en commençant par la partie haute.

4

Float

Flottant au format de la machine.

souvent 4

Double

ouble précision au format de la machine.

souvent 8

 

TAILLE ET FORMAT DES INFORMATIONS ECRITES PAR PUTSEQ LUES PAR GETSEQ

Type de la variable

Format sur le fichier séquentiel

Octets

Decimal n.m  défini dans une classe [F]

Le nombre au format DCB C-Isam.

(n+m+e+3)/2
m pair       : e=0
m impair  : e=1

Decimal défini dans une autre classe

Le nombre au format DCB C-Isam avec la précision maximale.

16

Ainsi  qu'on  le  remarque dans ce tableau, les variables de type Date   ont une taille de 3 octets dans la classe [F] (le but étant de prendre  le  moins de place possible dans la table), alors que dans la classe   [V]  ou  [L],  elles  prennent la place d'un entier long. De même, les  nombres décimaux sont automatiquement déclarés avec une taille maximum si on les déclare ailleurs que dans   les  tables. L'écriture de variables de type Float ou Double crée un fichier non portable (de même celle de variables de type Decimal définies dans une classe autre que [F]).

On peut lire un Blob ( et éventuellement un clob ) depuis un fichier séquentiel par l'instruction Getseq.

Remarques

La variable système Adonix fstat est mise à 1 si la lecture a buté sur la fin du fichier.

Les variables qui n'ont pu être affectées par l'instruction Getseq soit parce que l'on a atteint la fin du fichier, soit parce que le nombre d'éléments lus est inférieur au nombre d'éléments donnés en arguments, sont mises à zéro.

Si le nombre d'éléments à lire est supérieur au nombre total des éléments donnés en arguments, aucune erreur n'est signalée.

La fonction adxseek(0) ou adxseek(classe) (pour un fichier ouvert avec une classe) donne à tout moment la position (en nombre d'octets) par rapport au début du fichier. Elle vaut -1 si aucun fichier n'a été ouvert en lecture.

 

Erreurs associées

Erreur

Description

ERMODE (10)

exp_ent n'est pas de type entier.

ERDIM (55)

Variable ayant plus d'une dimension.

 

Mots-clés associés

OPENI - OPENIO - SEEK - ADXSEEK - PUTSEQ - RDSEQ - WRSEQ - FSTAT