Tri préalable des mouvements de mise à jourL'opérateur doit présenter les opérations de mise à jour classées dans l'ordre adopté pour le fichier principal (tri sur le nom, par exemple). En effet, il serait impossible de traiter la Suppression de BERNARD après celle de CHARLES. Un fichier séquentiel ne revient jamais en arrière. La règle appliquée est la suivante : — la Suppression ne peut porter que sur la fiche en mémoire (dite Dernier LU) — il en est de même pour les MODifications. — ADDitions : Si les doublons sont permis (plusieurs MARTIN, par exemple), on conçoit que le nom (la clé) de la fiche à créer doive remplir la condition suivante : Dernier ECRIT < = CLE < = Dernier LU Le non-respect de cette règle entraînerait un déclassement du fichier, c'est-à-dire l'abomination suprême. L'opérateur se rendra vite compte que le tri mental (coup d'œil sur la liste des mouvements à réaliser) ou manuel (manipulation de fiches papier) est loin d'être fiable dès que le nombre des mouvements dépasse une certaine taille (assez faible). Une "solution" ou plutôt une aide est alors la suivante : — trier par programme les CLES figurant sur la liste, soit avec les clés complètes, soit avec des clés tronquées (de 3 caractères par exemple) : | Liste manuelle | | Liste ordinateur | | 1 2 3 4 5 6 7 | CHABERT ADAM ZEBULON ASTRUC MARTIN ALARIC SOROCAM (JULES) | S A M S S A S | | ADA ALA AST CHA MAR SOR ZEB | 2 6 4 15 6 3 |
Cette liste, sortie sur imprimante, peut facilement faire l'objet d'un additif au programme présenté (MAJSEQ1) Notons qu'une procédure "automatique" à partir d'un fichier disque des mouvements est impossible tant que des homonymes subsistent. En effet, l'identification ne peut être que visuelle par comparaison des autres rubriques. L'automatisation n'est donc possible qu'après l'attribution à chaque fiche d'un INDICATIF (numérique le plus souvent) unique. Le tri doit alors être fait sur cet indicatif, Mais, dans ce cas, la consultation du fichier sur écran devient problématique quand cet indicatif n'est pas connu de l'opérateur. Sur CPC, notons que ce fichier mouvements devrait être lu en mémoire avant le début de la mise à jour, puisqu'on ne peut avoir qu'un seul fichier en entrée. Déroulement du programme MAJSEQ1 Création — Faire RUN 110 — Présentation du ou des répertoires (CAT) — Fournir le nom du fichier et la date (validité non contrôlée) — La séquence de CREATION ligne 2370 lit les DATA adéquats et écrit la première fiche (paramètres) sur le Fichier et sur le Fichier.OLD. Numéro d'édition 0. — Message pour inviter à inhiber ou supprimer les DATA paramètres avant de sauvegarder le programme. Ceci évitera qu'une deuxième et intempestive création ne détruise ultérieurement la dernière version du fichier. Mise à jour Standard Faire RUN, non Fichier, date. Apparition écran de travail. L'écran est divisé en 4 fenêtres de haut en bas : 1 - Rappel des Commandes (Add, Sup, Mod, Rech, Cont, Quit, Fin). Fichier LU, N° D'édition, date. 2 - Dernier ECRIT (clé de tri de la dernière fiche écrite). Dernière CDE choisie. CLE indiquée (dans le cas d'une commande R). Dernier LU (clé de tri de la fiche en mémoire). 0 - Affichage de la fiche en mémoire. Saisie des Add et des Mod. 3 - Lignes 24, 25 : les erreurs les moins évidentes y sont expliquées. Les autres sont signalées seulement par BIP. Commandes S - Suppression La fiche en cours (affichée) n'est pas écrite en sortie. La fiche suivante en entrée est lue et affichée Eventuellement zzzzzz EOF zzzzzz est affiché. La fiche supprimée est sortie sur l'imprimante. M - MODification L'opérateur est invité à saisir toutes les rubriques en indiquant leur numéro. LA RUBRIQUE CLE NE PEUT ETRE MODIFIEE. En effet, changer DURAND (Mlle) en MARTIN (Mme) détruirait le tri. Dans ce cas, on procédera à la SUP de la fiche DURAND et ensuite à l'ADD de la fiche MARTIN (la fiche DURAND a été imprimée). Dans le cas MARTIN changé en DURAND, l'opération se fera en deux passes. A - ADDition Le nom (ici variable de tri) doit être entré Dernier ECRIT et Dernier LU, ces limites comprises. La saisie est sommaire, toutes les zones étant obligatoires et les modifications, après ENTER, impossibles. R - Recherche Il va de soi que A, S et M n'ont de sens que si l'on a en mémoire la fiche convenable, c'est-à-dire la fiche précise pour S et M, la fiche immédiatement supérieure ou égale pour A. C'est le but de la commande R. L'action sur R déclenche une demande de CLE. Exemple : on veut supprimer SOROCAM (JULES pas EDOUARD) La dernier LU est HESSEB Commande R Puis CLE = SOR (par exemple) On assiste à la valse des Derniers ECRITS et LUS. Le Dernier lu se fige sur SORBET. Alors, on utilise la commande C C - Continuer Cette commande lit et écrit UN enregistrement. On finira bien par tomber sur SOROCAM (JULES). Attention à ne pas le dépasser. Il n'y a pas de retour arrière possible en séquentiel. F - FIN C'est la fin normale. On n'a plus de mouvements à traiter. Les derniers enregistrements (peu ou très nombreux sont lus et recopiés). Q - Quitter On peut préférer recommencer si l'on a commis trop d'erreurs. Les fichiers sont fermés sans échange de noms. Un message invite à mettre au panier les fiches mouvements imprimées et à considérer le fichier .OLD comme suspect. Reconstitution après incident Pour reconstituer la dernière version (FICH.CLI devenue illisible) à partir du fichier .OLD, il faut : — faire |ren,@f$, @f.old$ — refaire la mise à jour à partir des fiches mouvements listées sur imprimante (et soigneusement conservées à cet effet). Les numéros d'édition papier et écran doivent correspondre. Evidemment, cela n'est pas possible si la dernière mise à jour s'est terminée par Q. Dans ce dernier cas, il est prudent de refaire tout de suite le travail, de façon à disposer le plus tôt possible des deux versions successives. CPC |