Fichiers indexés-séquentiels

Les fichiers indexés-séquentiels permettent de faire correspondre des contenus arbitraires (chaines de caractères, nombres, etc.) à des clés d'accès. Les fichiers indexés-séquentiels sont stockés sur disque afin de conserver leur contenu d'une exécution à l'autre de ADAPT. Les fiches de ces fichiers peuvent être lues soit en ordre croissant/décroissant de clé d'accès (accès séquentiel), soit directement en spécifiant une clé d'accès (accès direct).

/nom :: constructeur permet de définir un fichier indexé-séquentiel. Le constructeur doit produire les paramètres d'ouverture de l'indexé-séquentiel:

F=nom de fichier pour spécifier le nom du fichier-disque qui contient le fichier indexé-séquentiel.

A=mode d'accès Lorsque ce paramètre est spécifié, il est possible de modifier le contenu du fichier. Le mode d'accès peut être I pour immédiat (mode le plus sécure en cas de panne de courant) ou R pour retardé (ou rapide).

C=N doit être spécifié pour créer un nouveau fichier indexé-séquentiel.

I=nombre Taille des index. A spécifier à la création seulement. Doit être un multiple de 512. 512 suffit pour des petits fichiers, 2048 pour des fichiers énormes. 8192 est le maximum recommandable pour des disques optiques.

D=nombre Taille des blocs de données. A spécifier à la création seulement. Doit être un multiple de 512. Généralement la même taille que les blocs d'index. DOIT ETRE PLUS GRAND QUE LA PLUS GRANDE FICHE A STOCKER.

K=L Indique que la clé d'accès est un nombre encodé (donc dont le premier octet est le moins significatif sur le IBM/PC). A spécifier à la création seulement.

U=S Déclare que toutes les écritures se feront en ordre CROISSANT de clé d'accès et qu'il faut minimiser l'espace d'«expansion» (inutilisé) entre les fiches.

L=nombre Nombre de tampons pour l'accès au fichier. Par défaut L=2 (minimum)

Chacun de ces paramètres doit être séparé par une seule espace.

Par exemple:

/DICTIONNAIRE :: "F=C:\ASSOC\TRADUC.ASS A=I C=N I=512 D=1024"

permet de créer un fichier indexé-séquentiel qui résidera sur le fichier C:\ASSOC\TRADUC.ASS. Ce fichier pourra contenir entre une centaine et quelques milliers de fiches, dépendamment de la taille des clés d'accès et de celle des contenus associés.

/DICTIONNAIRE :: "F=C:\ASSOC\TRADUC.ASS A=I"

suffira par la suite pour modifier ce fichier. Et:

/DICTIONNAIRE :: "F=C:\ASSOC\TRADUC.ASS"

suffit lorsque vous désirez seulement consulter le contenu du fichier.

L'assignation permet de déposer un contenu dans un fichier indexé-séquentiel:

nom-du-fichier ( constructeur de la clé ) := constructeur du contenu

Pour obtenir le contenu ainsi associé à une clé d'accès, vous pouvez inscrire dans n'importe quel constructeur:

nom-du-fichier ( constructeur de la clé )

Pour se positionner avant la première clé ou après la dernière clé ( le résultat est le même ):

@*< nom-du-fichier ou

@>* nom-du-fichier

Pour obtenir la dernière clé accédée pour un fichier indexé-séquentiel, vous pouvez inscrire dans un constructeur:

@ nom-du-fichier

Pour obtenir la clé suivante, ET S'Y POSITIONNER :

@> nom-du-fichier

Dans un patron, ceci échoue si on est à la fin du fichier.

Pour obtenir la clé précédente, ET S'Y POSITIONNER :

@< nom-du-fichier

Dans un patron, ceci échoue si on est au début du fichier.

Pour détruire une fiche ayant une clé donnée:

@- nom-du-fichier ( constructeur de la clé )

Dans un patron, @ nom-du-fichier ( constructeurs ) permet de vérifier l'existence d'une fiche, et échoue si elle n'existe pas. @@ nom-du-fichier ( constructeurs ) permet de trouver la première fiche dont la clé est plus grande ou égale à la clé spécifiée. Échoue seulement à la fin du fichier.