> Tech > Le code en détail

Le code en détail

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Voyons maintenant le code de la figure 3. Pour les deux sous-fichiers, il nous faut suivre l'endroit où se trouve la mise en évidence (c'est-à -dire l'enregistrement courant) et l'enregistrement suivant que nous voulons mettre en évidence. Le programme fait cela en suivant le numéro RRN des enregistrements appropriés dans le

sousfichier.
Pour le sous-fichier du côté
gauche, DSPRRN contient le numéro
de l’enregistrement vers lequel nous
nous déplaçons et DSPRRNPRV contient
l’enregistrement d’où nous venons.
De même, DSPRRNR et
DSPRRNPRV contiennent les enregistrements
pour le sous-fichier du côté
droit.
La sous-routine #INIT, dans un appel
adressé à  STARTALL, charge et écrit
les deux sous-fichiers avec le premier
jeu d’enregistrements et sort le format
d’en-tête. Cette sous-routine autorise
aussi l’absence de données.
#MAIN est la boucle de traitement
qui s’applique aux touches de fonction.
Elle définit le numéro d’enregistrement
à  afficher puis appelle d’autres
sous-routines pour effectuer l’action.
STARTALL est la routine appelée
depuis #INIT qui initialise et charge les
sous-fichiers. Elle constitue une routine
séparée permettant d’ajouter du
code qui permettra de sélectionner le
point de départ. (J’ai supprimé ce code
pour cette version simplifiée.) A noter
que STARTALL met DSPRRN à  1 et
DSPRRNPRV à  0 parce qu’il n’y a pas
d’enregistrement précédent auquel
enlever la mise en évidence.
NEXTGRP est une routine de lecture
qui obtient les 10 enregistrements
suivants et les écrit en format sous-fichier
pour le sous-fichier du côté
gauche. Comme un client peut avoir
un ou plusieurs enregistrements dans
le fichier d’entrée, cette sous-routine
sélectionne le premier enregistrement
pour chaque client. Un flag, LEFTEOF,
sert à  marquer que la fin du fichier
(EOF) a été atteinte. Notons que cette
sous-routine lit avec un temps d’avance
et qu’elle laisse toujours dans le buffer
un enregistrement non encore
transféré à  l’écran (sauf si l’on a atteint
EOF).
READLEFT lit les enregistrements
de la base de données. Comme cette
fonction est gardée dans une routine
séparée, il est plus facile d’ajouter des
règles de sélection.
LEFTHDR accomplit la plus grosse
partie du programme. Il vérifie d’abord
si le numéro d’enregistrement demandé
est affichable. Si nous essayons
de nous déplacer avant le début du
sous-fichier, sa valeur est remise à  1. Si
nous essayons d’aller au-delà  de la fin
du sous-fichier, soit il lira un autre
groupe de 10 enregistrements, soit, si
nous sommes déjà  à  EOF, il gardera le
pointeur sur le dernier enregistrement du sous-fichier.
Quand tout cela est fait, LEFTHDR
se relie au sous-fichier en utilisant le
numéro d’enregistrement précédent
dans DSPRRNPRV et supprime la mise
en évidence. Ensuite, nous utilisons le
nouveau numéro d’enregistrement
dans DSPRRN pour nous lier au sous-fichier
afin d’obtenir l’enregistrement à 
mettre en évidence. Cette action extrait
également le numéro du client
dans un champ caché. Le travail suivant
consiste à  obtenir les détails client
complets de cet enregistrement et à  les
placer dans le format de contrôle.
Enfin, pour ce numéro de client, le
programme établit la fenêtre du côté
droit en appelant deux autres sousroutines.
LOADRITE utilise le numéro de
client de l’enregistrement sélectionné
à  gauche et effectue un « chargement
total » du sous-fichier à  droite. Cette
opération lit, via un fichier logique, les
enregistrements en double pour le
client sélectionné à  gauche. Comme
avec le sous-fichier de gauche, elle suit
les mises en évidence par les numéros
d’enregistrements dans les champs
DSPRRNR et DSPRRNPRVR. Ces
champs sont mis à  1 et 0 chaque fois
que le sous-fichier est rafraîchi.
READRITE, comme READLEFT, est
une simple lecture des enregistrements
en double dans une sous-routine
qui permet d’insérer une logique
de sélection supplémentaire.
RITEHDR, comme LEFTHDR, établit
les détails d’adresse complets et
contrôle la mise en évidence en utilisant
les champs DSPRRNR et DSPRRNPRVR.
La routine est plus simple que
LEFTHDR car il n’est pas nécessaire ici
de vérifier s’il y a des enregistrements
supplémentaires à  lire.
PRCMATCH est exécuté pour traiter
la paire d’enregistrements sélectionnée.
On appelle ainsi un autre programme,
qui reçoit les numéros
d’enregistrement des deux enregistrements
mis en évidence. Je ne parlerai
pas de ce programme ici car ses actions
n’affectent pas le présent exemple.
Pour visualiser le DDS du fichier
pour les doubles et l’enregistrement
maître client, ainsi que les sources du
programme appelé, extrayez tout le
code online sur www.itpro.fr Club
Abonnés.

Téléchargez cette ressource

Préparer l’entreprise aux technologies interconnectées

Préparer l’entreprise aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010