Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Cobol Discussion :

[Z/OS] Contrôle de pointeur


Sujet :

Cobol

  1. #1
    Candidat au Club
    [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 : 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
    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 : 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.
    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

  2. #2
    Membre habitué
    Bonjour.

    Ce ne serait pas plus simple de tester si le paramètre n'est pas un PIC X(1) ?

###raw>template_hook.ano_emploi###