IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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] Erreur "CEE3204S The system detected a protection exception"


Sujet :

Cobol

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Points : 16
    Points
    16
    Par défaut [z/OS] Erreur "CEE3204S The system detected a protection exception"
    Bonjour,

    Quelqu'un pourrait-il m'aider à comprendre l'abend suivant :

    CEE3204S The system detected a protection exception (System Completion Code=0C4). From compile unit Program1 at entry point Program1 at compile unit offset +00002698 at entry offset +00002698 at address 113DA118.

    Merci...

  2. #2
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Citation Envoyé par faluma Voir le message
    Bonjour,

    Quelqu'un pourrait-il m'aider à comprendre l'abend suivant :

    CEE3204S The system detected a protection exception (System Completion Code=0C4). From compile unit Program1 at entry point Program1 at compile unit offset +00002698 at entry offset +00002698 at address 113DA118.

    Merci...
    Bonjour faluma.

    - Quel OS ?
    - A la compilation ou l'exécution ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Hédhili Jaïdane Voir le message
    Bonjour faluma.

    - Quel OS ?
    - A la compilation ou l'exécution ?

    - Z/OS
    - A l'exécution du programme

  4. #4
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    0C4

    hehehehe, un grand classique avec le 0C7. L'origine de ces 2-là est en général la même : un décalage de données à l'execution. 0C4 fait que des données se retrouvent en dehors de la plage prévue. 0C7 fait que l'on fait des opérations numérique dans un champ non rempli par du numérique.

    Dans les 2 cas : regarder les formats de données, les comparer, vérifier l'absence d'erreur, et au besoin, faire des display partout dans le programme(en dichotomie) pour trouver l'opération(pour un 0C4, ça sera sans doute un MOVE) ou ça plante. Puis regarder le format de la donnée en entrée, celle de la donnée en sortie.....ça resoud 99% des problèmes de ce genre. C'est parfois long(ça dépend de la taille du programme), fastidieux, mais en général pas trop difficille.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 138
    Points : 266
    Points
    266
    Par défaut
    Citation Envoyé par el_slapper Voir le message
    0C4

    hehehehe, un grand classique avec le 0C7.
    +1

    Par contre, pour moi, le 0C4 c'est une tentative d'accès à une partie de la méméoire non autorisée : les cas les plus courants sont le dépassement d'indices sur un tableau (et en cobol on commence à 1 donc, le 0 est un dépassement xD ) ou alors tentative de de lecture ou ecriture sur un fichier non ouvert (soit pas encore ouvert ou déjà fermé ...)
    Donc je conseille de vérifier tous les parcours d'occurs surtout si il y en a dans des boucles (perform varying ... récursion ... ) et les appels d'I/O.

  6. #6
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Mes souvenirs des mainframes sont assez lointains, mais si vous parlez de "tentative d'accès à une partie de la méméoire non autorisée", il peut s'agir d'un mauvais facteur de blockage d'un fichier (s'il a toujours droit de cité).

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    A mon avis, la piste la plus probable est celle du tableau. L'indice 0 a peu de chance de donner ce code, car il faudrait que le tableau soit la première zone de WS, ou bien qu'un poste du tableau soit très gros (plus gros que les zones définies avant lui). Par contre, un fin de boucle mal gérée, et un indice qui monte qui monte qui monte... ça oui !

    Il me semble également que c'est ce code qu'on obtient si on essaie d'accéder à une zone définie en FD avant d'avoir fait l'OPEN du fichier (car c'est lui qui alloue la zone).

  8. #8
    Membre averti
    Femme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 179
    Points : 350
    Points
    350
    Par défaut
    oui... il y a des centaines de causes sur un abend S0c4.
    cela dit, pour regler ça, premiere chose.. regarde dans la compilation de ton PG, ce qu'il y a comme instruction à l'Offset 2698. ça te donnera peut etre une idée, en fonction de ce que fait ton prog à ce moment la.. quoi que c'et pas toujours vrai ..

    du genre, zone en linkage utilisée mais non adressée.. buffer d'I/O ..etc...

  9. #9
    Membre averti
    Femme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 179
    Points : 350
    Points
    350
    Par défaut
    j'oubliais.. désolée pour le double post....
    tu dois avoir en sysout un CEEDUMP.. source très importante pour ce genre d'abend..

  10. #10
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    les Dumps, c'est bien gentil, mais en général, c'est surtout bon pour se pourrir les yeux. Je trouve plus rapide de dichotomiser par des displays jusqu'à trouver l'instruction exacte qui plante...

    ...bon après, si il n'y a moyen de lancer le programme qu'une fois par semaine, il peut être utile de se cramer les yeux. Je l'ai fait une fois, bien obligé. Mais franchement, si on est en test, avec un truc rapide à lancer, on arrive assez rapidement à l'ordre qui tue. Qui est souvent explicite, mis en relation avec la définition des données qui va bien.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par fremen167 Voir le message
    A mon avis, la piste la plus probable est celle du tableau. L'indice 0 a peu de chance de donner ce code, car il faudrait que le tableau soit la première zone de WS, ou bien qu'un poste du tableau soit très gros (plus gros que les zones définies avant lui). Par contre, un fin de boucle mal gérée, et un indice qui monte qui monte qui monte... ça oui !

    Il me semble également que c'est ce code qu'on obtient si on essaie d'accéder à une zone définie en FD avant d'avoir fait l'OPEN du fichier (car c'est lui qui alloue la zone).
    En effet, j'avais mal géré une fin de boucle ce qui empêchait à une partie du programme de s'exécuter. Mon tableau était donc mal rempli ce qui a entraîné cet abend.

    Merçi beaucoup à tous de m'avoir répondu!!!

  12. #12
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Citation Envoyé par faluma Voir le message
    En effet, j'avais mal géré une fin de boucle ce qui empêchait à une partie du programme de s'exécuter. Mon tableau était donc mal rempli ce qui a entraîné cet abend.

    Merçi beaucoup à tous de m'avoir répondu!!!
    Merci à toi du feedback, çà c'est un bon forumeur. N'oublie pas le tag [Résolu] et bonne continuation.

  13. #13
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    Avec un peu de retard, un bon truc pour souvent trouver spéciquement la cause d'un S0C4 z/OS :
    passer si c'est autorisé sur le site avec une CBL SSRANGE. Ca permet à COBOL de détecter un dépassement mémoire au moment ou il survient plutôt que trop tard quand on en tente l'adressage. parfois pratique, cette option très couteuse en code généré qui sera facilement triplé, est impérativement à retirer ensuite quand le pb est résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 01/10/2013, 11h32
  2. [Integration] Erreur Spring: initialize the log4j system properly
    Par Klemsy78 dans le forum Spring
    Réponses: 2
    Dernier message: 30/05/2011, 10h38
  3. Message d'erreur The system DLL user32.dll
    Par cdevl32 dans le forum Windows XP
    Réponses: 1
    Dernier message: 20/11/2009, 00h26
  4. Réponses: 1
    Dernier message: 28/08/2008, 12h46
  5. erreur : The system is out of memory. Use server side cursors
    Par kergoussel dans le forum ODI (ex-Sunopsis)
    Réponses: 1
    Dernier message: 06/12/2007, 12h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo