Bonjour,
Un des moyens de lire un VSAM KSDS en CICS, pour une clef secondaire qui a plusieurs occurrences dans le fichier, c'est de faire:
- premièrement, un positionnement sur le premier enregistrement correspondant à cette clef (STARTBR)
- ensuite, des lectures séquentielles pour lire chaque enregistrement correspondant à cette clef (READ NEXT).
Problème: on peut, en mode pseudo-conversationnel, quitter (temporairement) le programme mais vouloir reprendre, lors du prochain passage dans le programme, la lecture séquentielle là où elle s'était arrêtée: par exemple, le programme affiche 10 enregistrements à la fois (place limitée sur l'écran) et à chaque pression de éexPF8, il est réexécuté et affiche les enregistrements suivants.
Pour faire ça, on peut avoir un compteur (incrémenté par le programme à chaque READ NEXT, et transmis dans la COMMAREA) qui rappelle au programme à quel numéro d'enregistrement il s'était arrêté à l'exécution précédente: quand il est rappelé, il doit relire les N enregistrements (lus lors des exécutions précédentes) pour se repositionner avant de lire les enregistrements suivants.
Ce n'est pas optimal car (1) on doit gérer l'incrémentation et le passage d'un compteur et (2) on doit faire des lectures superflues. Le READ NEXT a-t-il pour effet de mettre à jour une sorte d'index qu'on pourrait récupérer, qui pointerait vers le dernier enregistrement lu, et qui éviterait de reprendre à chaque fois le browsing au début ?
Partager