PUTSEQ |
Putseqpermet d'écrire des données à partir de variables sur un fichier binaire ouvert par Openo ou Openio.
Putseqexp_ent, liste_varia[ Usingclasse]
Elément | Description | Restrictions |
Expression entière du nombre d'éléments à écrire. | Aucune. | |
Liste de nom_de_variables à écrire séparées par le caractère ','. | Les variables ont au plus 1 dimension | |
Abréviation désignant le fichier ouvert. | Aucune. |
# Ecriture dans le fichier TEST, de 5 éléments d'une matrice de
# chaînes de caractères. Si une chaîne de caractères a une longueur
# inférieure à celle qui a été déclarée, elle sera complétée dans le
# fichier par des octets nuls (de code ascii 0)
Char Y (6) (4,3)
Openo filpath("TXT", "TEST","")
Putseq
Openo
#
# Supposons que dans cet exemple, la variable Y soit initialisée de la
# façon suivante :
# Après le traitement, le fichier TEST comporte 30 caractères
# (y compris des octets nuls (représentés par un "n"):
# L'exemple ci-dessus peut aussi s'écrire
Char Y (6) (4,3)
Openo filpath("TXT", "TEST","")Using [ZZZ]
Putseq
OpenoUsing [ZZZ]
Putseqécrit, dans le dernier fichier ouvert par Openo ou Openio, les éléments contenus dans la liste des variables données en argument de l'instruction, le nombre de ces éléments étant donné par exp_ent.
La clause Using permet de préciser la classe du fichier séquentiel sur lequel on écrit. 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 de ces variables sont alors lus par ordre croissant de l'indice de la dimension omise et copiés dans le fichier jusqu'à épuisement du nombre de valeurs à écrire.
Les éléments sont copiés dans le fichier selon la structure interne desvariables données en argument. Le tableau suivant donne le format et le nombre d'octetsutilisés suivant le type des variables.
TAILLE ETFORMAT DES INFORMATIONS ECRITES PAR PUTSEQ LUES PAR GETSEQ | ||
Libelle | Sousla forme d'un octet dont la valeur va de 0 à 255. | |
Char | Sousla forme d'un octet dont la valeur va de 0 à 255. | |
Shortint | Unentier court signé sur 2 octets dans l'ordre partie haute et partie basse. | |
Datedéfinie dans une classe [F] | Lenombre de jours sur 3 octets en commençant par la partie la plus haute. | |
Datedéfinie dans une autre classe | Lenombre de jours sur 4 octets en commençant par la partie la plus haute (commeInteger). | |
Integer | Unentier signé sur 4 octets en commençant par la partie haute. | |
Decimaln.m défini dans une classe [F] | Lenombre au format DCB C-Isam. | |
Decimaldéfini dans une autre classe | Lenombre au format DCB C-Isam avec la précision maximale. |
Ainsi qu'on le remarque dans ce tableau, les variables detype Date ont une taille de 3 octets dans la classe [F] (le but étant deprendre le moins de place possible dans la table), alors que dans les autresclasses, elles prennent la place d'un entier long. De même, les nombres décimaux sont automatiquement déclarésavec une taille maximum si on les déclare ailleurs que dans les tables. L'écriture devariables de type Decimal définies dans une classe autre que [F] crée unfichier non portable .
On peut écrire un Blob ( et éventuellement un clob ) vers un fichierséquentiel par l'instruction Putseq. Le fichier séquentiel aura une longueur égale àla longueur du blob.
La fonction adxseek(1) ou adxseek(classe) (pour un fichier ouvert avec uneclasse) contient après l'écriture la position courante dans le fichier,exprimée en octets. Cette variable vaut -1 dans le cas où aucun fichier n'a étéouvert en écriture.
Les écritures dans un fichier étant bufferisées, elles ne sont effectivesqu'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 un Putseq.Seek 0 permet de forcer l'écriture d'un fichier ayant été ouvert par Openio.
L'instruction Putseqpermet de créer des fichiers ascii ou des fichiers binaires ayant n'importequelle structure.
ERMODE(10) | exp_entn'est pas de type entier. |
ERDIM(55) | Variableayant plus d'une dimension. |
ERGFIC(24) | Erreuren gestion de fichier séquentiel. |
ERMDISK(44) | Plusde place sur le disque. |
ERULIM(65) | Problèmede ulimit (le fichier est trop gros). |
GETSEQ - RDSEQ - WRSEQ - ADXSEEK - SEEK - OPENO - OPENIO
Adonix X3(r) L4G |