★ APPLICATIONS ★ DIVERS ★ ECRITURE DIRECTE DE FICHIERS TEXTE (CPC REVUE) ★ |
Ecriture directe de fichiers texte (CPC Revue) | Applications Divers |
Nous allons vous préciser les "dessous" des ordres OPENOUT, OPENIN, CLOSEOUT, CLOSEIN, qui permettent d'enregistrer toutes sortes de données sur cassettes ou disquettes. Vu l'intérêt évident de ces commandes, il est essentiel de tout savoir sur elles, ce qui est permis, ce qui ne l'est pas, ainsi que leurs pièges. En guise de final, nous vous livrerons un petit utilitaire super-utile...QU'EST-CE QU'UN FICHIER ? C'est un enregistrement contenant une suite de mots et de nombres, même mélangés, et dans un ordre pouvant être quelconque. Puisqu'ils sont écrits à la "queue-leu-leu'', bout-à-bout, on les appelle des fichiers séquentiels : à la différence des fichiers "indexés" ou à "accès direct" (seulement possibles avec le CPC 6128 et le PCW), Nous n'en parlerons pas aujourd'hui, car c'est corn plétement "à part". Un fichier est composé avant tout d'en registrements. Un enregistrement peut être un mot, un nombre, ou une longue phrase (maximum 255 caractères), exac tement comme une feuille de papier où vous auriez écrit des notes, parfois un mot par ligne, ou une longue phrase Ainsi, au lieu de "enregistrements", il est fréquent de parler de "lignes" d'un fichier, c'est pareil, c'est plus court à pro noncer, mais c'est "incorrect",.. Un enregistrement, c'est une suite de caractères (lettres, chiffres ou CHR$, jusqu'à 255). Voilà pourquoi on les appelle des "Fichiers ASCII", à l'opposé des "fichiers binaires", lesquels sont le plus souvent des programmes ou des suites de nombres (0 à 255) comme les "fichiers écrans". On ne peut faire un LOAD d'un fichier ASCII, ce serait absurde , où voulez vous donc qu'il aille se loger dans la mémoire ? En revanche, on peut faire LOAD sur un fichier binaire ( BIN), car lui, il sait où il doit aller. En somme, un "fichier séquentiel ASCII", c'est une feuille de notes que l'on écrit sur support magnétique, une suite de DATA sur disquette ou cas sette". D'ailleurs, les Anglo-saxons les appellent des "DATA FILES". (Note : en anglais, le mot "FILE" désigne aussi bien un "programme" qu'un "fichier"...) A QUOI ÇA SERT ? A récupérer d'une manière permanente ce qu'a produit un programme, qu'il s'agisse d'un traitement de texte, d'un logiciel de calculs (tableur, "calc", etc ), d'un gestionnaire de fichiers, ou d'une partie d'échecs en cours .. Rien de plus facile que de faire le voyeur sur un fichier ASCII (impossible à protéger). Par exemple, sous CP'M, il suffit de taper TYPE, suivi du nom du fichier. Mais quelle pagaille 1 Afin que cette suite de données soit exploitable, vous devinez que le logiciel qui les a entassées ainsi devra les ressortir selon la même logique pour "retrouver ses petits" Un usage très particulier est la sauve garde d'un programme Basic en ASCII, non pas par OPENOUT, mais par SAVE "nom du programme", virgule A. Ce fichier ASCII est la reproduction exacte de votre listing , un enregistrement par ligne Basic II est normal que sa taille sur disquette ou cassette soit supérieure d'environ 20 % à la version Basic ( BAS). En effet, pour "LOCATE 8,12:", cela fait 12 caractères, soit 1 2 octets en ASCII, mais en traduction Basic, il n'y a que trois octets, à savoir 169 (TOKEN de LOCATE), 8 et 12. Un programme Basic en ASCII (pas d'extension) est un cas particulier, car c'est le seul à pouvoir être chargé par LOAD ou RUN. Deux usages principaux la récupération par MERGE ou CHAIN MERGE (CPC 464) ou pour transmettre un programme Basic par une "interface série RS 232c", direc tion un ordinateur d'une autre marque ou un MODEM. OUVERTURE ET FERMETURE D'UN FICHIER Pour l'ordinateur, des éléments comme le magnéto cassette ou le drive, c'est de "l'extérieur à lui", même si c'est dans le même boîtier en plastique. S'il doit créer, écrire un fichier, il doit faire sortir des données qu'il a dans sa mémoire et ce en "ouvrant" cette sortie. D'où le mot OPENOUT, suivi du nom que ce fichier aura sur disquette ou cassette. Donc, cet ordre se contente d'enregistrer le nom. Viennent ensuite les données à enregis trer, puis il faut fermer le fichier en question (terminer), c'est le mot CLOSEOUT ( ferme la sortie) A votre insu, un CHR$(26) est enregistré après la dernière de vos données, c'est le repère de fin de fichier sur le support magnétique. Physiquement, qu'est ce qui est enregis tré ? C'est légèrement différent sur cas sette ou disquette : sur cassette, c'est le nom. le type (ASCII), le numéro de "block" et sa longueur en octets, c'est à dire 2048 ou moins. La longueur totale (plusieurs blocks) est encore ignorée Puis les données (codes ASCII de cha que caractère) et enfin le CHR$(26) (aussi appelé CTRL Z). Sur disquette, le nom, le type, la longueur totale et la localisation pistes/secteur sont enregistrés sur la piste n°2, celle du DIR ou de CAT Les données sont sur d'autres pistes et avec, en final, le CHR$(26l, ( &1A). Il va de soi que la taille sur la piste n° 2 est enregistrée en dernier, quand on connaît la longueur totale et ce lors du CLOSEOUT. Pour charger les données d'un fichier, l'ordinateur doit à présent ouvrir pour faire entrer des données dans sa mémoire, d'où le mot OPENIN, puis les recevoir par des INPUT # 9, # 9 signifiant canal n° 9, celui de cassettes ou disquet tes. Prenons l'exemple du fichier TRUC comportant 100 enregistre ments, que l'on va loger en mémoire dans un tableau DIM D$ 310 DIM D$(100) |
|
|