[Z/OS] Contrôle de pointeur
Bonjour,
après plusieurs heures de recherches infructueuses, je ne trouve pas de réponse à mon problème :
Au sein de mon entreprises, ils sont très friands des pointeurs en cobol surtout lors de l'utilisation de liste chainées avec une très mauvaise gestion de la libération de mémoire.
N'ayant malheureusement pas la possibilité de corriger la cause, je suis contraint de traiter les conséquences.
Le sous-programme sur lequel je dois intervenir est appelé de 3 façons différentes :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
Façon 1 :
CALL 'ZCALLPGM' USING MONPROG
COPY1
COPY2
Façon 2 :
CALL 'ZCALLPGM' USING MONPROG
OMITTED
COPY2
Façon 3 :
CALL 'ZCALLPGM' USING MONPROG
BIDON
COPY2 |
la donnée BIDON est déclarée en PIC X(1) et n'est jamais initialisé.
Or la COPY1 est une liste comportant le nombre d'élément (déclaré en PIC S9 COMP-3 qui interdit tout test de numéricité) et un pointeur.
Code:
1 2 3 4
|
01 COPY1.
05 NbElt PIC S9(8) COMP-3.
05 LISTE Pointer. |
Afin de corriger des fuites mémoire, je dois libérer l'espace mémoire du pointeur. D'où ma question :
Existe-t'il une fonctionnalité permettant de vérifier que la valeur contenue dans le pointeur est bien une adresse mémoire ? Car dans le cas ou l'appel est effectuée de la façon 3 (avec BIDON), j'ai potentiellement n'importe quoi