Bonjour,
J'ai une erreur de mise à jour en cycle GAP. J'ai analysé le problème et j'ai compris pourquoi ça ne marchait pas, mais il me semble pourtant que le principe mis en place est bon.
Voilà mon programme, on peut difficilement faire plus simple.
La clé unique du fichier est composée de 4 zones : DZBOCE, DZBMCE, DZBLCE, DZBGDT.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 H Y FYPLTARL1UP E K DISK * IàPLTAR1 I DZBOCEL1 I DZBMCEL1 I DZBLCEL1 * CL1 DZJ2S1 IFEQ 'P' CL1 MOVE 'S' DZJ2S1 CL1 UPDATàPLTAR1 CL1 ENDIF
En gros, je cherche la rupture dernière sur les 3 premières zones de la clé, et si le statut est à 'P', je le passe à 'S'.
A l'exécution, le programme plante aussitôt, car au moment de l'update, les données sont bien celles de l'enregistrement en rupture, mais le pointeur interne du fichier est sur l'enregistrement suivant. J'ai donc immédiatement une clé en double générée.
J'ai donc compris pourquoi ça ne marchait pas.
Et pourtant je ne peux me faire à l'idée que le principe soit faux. Il me semble bien que le cycle GAP permet justement de passer outre ces problèmes de ruptures, et que les mises à jours de ce type sont possibles.
Ou alors c'est que je perds la mémoire et qu'alzheimer me guette...
Qu'en pensez-vous ? Correct ou pas correct ?
Partager