CICS – Option RESP

L’option RESP peut être spécifiée dans n’importe quelle commande CICS. Sa fonction est similaire au code retour d’un programme batch. Si l’option RESP est spécifiée dans une commande, CICS place un code de réponse à la fin de la commande. Le programme d’application peut vérifier ce code, puis passer au traitement suivant.

CICS a une fonction intégrée appelée DFHRESP qui nous permet de tester symboliquement la valeur RESP. Cela facilite le codage car nous n’avons pas à nous souvenir de la valeur numérique de nombreux codes de réponse.

  • Si WS-RESP = DFHRESP(NORMAL)
  • Si WS-RESP = DFHRESP(LENGERR)

Alternativement, nous pouvons rechercher la valeur numérique de EIBRESP associée à ces conditions et coder les déclarations ci-dessus comme suit :

  • Si WS-RESP = 00
  • Si WS-RESP = 22

Pour une liste des codes EIBRESP avec leurs équivalents symboliques, reportez-vous au tableau ci-dessous :

ConditionValeur
NORMAL00
NOTFND13
DUPREC14
INVREQ16
NOSPACE18
NOTOPEN19
ENDFILE20
LEGERR22
QZERO23
QBUSY25
ITEMERR26
PGMIDERR27
ENDDATA29
MAPFAIL36
QIDERR44
ENQBUSY55
DISABLED84

Cette approche présente un avantage par rapport à l’approche HANDLE CONDITION, car elle rend le programme plus structuré.

Procédure d’utilisation de l’option RESP dans une commande CICS

  1. Définissez un champ binaire de mot complet (S9 (8) COMP) dans la section de stockage de travail comme champ de réponse.
  2. Placez l’option RESP avec le champ de réponse dans une commande.
  3. Après l’exécution de la commande, vérifiez le code de réponse dans le champ de réponse avec DFHRESP(xxxx), où xxxx est :
    • NORMAL pour un achèvement normal
    • Erreur pour toute condition exceptionnelle

Exemple:

...
WORKING-STORAGE SECTION.
77 WS-RETNCODE        PIC S9(8) COMP.

PROCEDURE DIVISION.
..
    EXEC CICS SEND
        FROM(   )
        LENGTH(   )
        ERASE(   )
        RESP(WS-RETNCODE)
    END-EXEC.

    EVALUETE TRUE
        WHEN WS-RETNCODE = DFHRESP(NORMAL)
              GO TO NORMAL-PARA
        WHEN WS-RETNCODE = DFHRESP(LENGERR)
              GO TO LENGERR-PARA
    END-EVALUATE.

Description:

Pendant l’exécution de ce programme, les fonctions suivantes doivent se produire :

  • A la fin de la commande SEND, le champ WS-RETCODE contiendra le code de réponse du résultat d’exécution de la commande.
  • Si la commande SEND se termine normalement, le contrôle sera passé à NORMAL-PARA.
  • Si un LENGERR est rencontré, le contrôle sera passé à LENGERR-PARA.
  • Les autres exceptions sont :
    1. PGMIDERR – Programme introuvable
    2. LEGERR – Module de charge > 32 K
    3. NOAUTH – Erreur de contrôle de sécurité
  • Si une autre condition exceptionnelle est rencontrée, le contrôle sera passé à GENERAL-ERR-PARA.
  • Les EXCEPTIONS générales sont :
    1. LEGERR – Incompatibilité de longueur d’enregistrement avec le fichier
    2. INVREQ – Opération de lecture non autorisée car elle n’est pas mentionnée dans le FCT. L’enregistrement est verrouillé
    3. NOAUTH – L’acquisition de ressources a échoué
    4. NOTFND – Enregistrement introuvable
    5. ENDFILE – Fin du fichier
    6. QIDERR – Entrée DCT introuvable pour le ‘Q’
    7. NOSPACE – pas d’espace disponible dans TDQ
    8. QZERO – plus d’éléments à lire dans le ‘Q’