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 :
la donnée BIDON est déclarée en PIC X(1) et n'est jamais initialisé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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.
Afin de corriger des fuites mémoire, je dois libérer l'espace mémoire du pointeur. D'où ma question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 01 COPY1. 05 NbElt PIC S9(8) COMP-3. 05 LISTE Pointer.
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
Partager