Test des indicateurs

Lorsque RETCODE indique un code de retour normal d'une commande GDS, la zone CONVDATA (le cas échéant) contient des informations sur les indicateurs reçus lors de la conversation. Ces indicateurs peuvent être utilisés pour comprendre pourquoi l'état de la conversation est ce qu'il est.

La structure de la zone CONVDATA est présentée dans le tableau 1.

Table 1. Structure du bloc de données de conversation
Nom de la zone Longueur (octets) Signification
CDBCOMPL 1 X'FF' = données complètes
CDBSYNC 1 X'FF' = SYNCPOINT requis
CDBFREE 1 X'FF' = FREE requis
CDBRECV 1 X'FF' = RECEIVE requis
CDBSIG 1 X'FF' = SIGNAL reçu
CDBCONF 1 X'FF' = CONFIRM reçu
CDBERR 1 X'FF' = ERREUR reçue
CDBERRCD 4 Code d'erreur (lorsque CDBERR est activé)
CDBSYNRB 1 X'FF' = SYNCPOINT ROLLBACK requis
CDBRSVD 12 Réservé

Ces définitions figurent dans le cahier DFHCDBLK. Il existe un copybook pour le C, qui définit un typedef pour la structure, et un autre copybook pour l'assembleur. Afin de permettre à votre application de gérer plusieurs conversations en même temps, la version assembleur ne contient pas d'instruction DSECT.

La signification des champs CONVDATA est la suivante :

CDBERR
lorsqu'il est réglé sur X'FF', indique qu'une erreur s'est produite dans la conversation. La raison se trouve dans CDBERRCD. Cela peut résulter d'une commande GDS ISSUE ERROR, GDS ISSUE ABEND ou SYNCPOINT ROLLBACK émise par la transaction partenaire. CDBERR peut être activé à la suite de n'importe quelle commande pouvant être émise lorsque la conversation se trouve à l'adresse état de réception (état 5), ou à la suite de n'importe quelle commande entraînant une transmission au système partenaire. Il est plus sûr de tester CDBERR en conjonction avec CDBFREE et CDBSYNRB après chaque commande GDS.
CDBERRCD
contient le motif du CDBERR. Si CDBERR n'est pas défini, ce champ n'est pas utilisé.
CDBFREE
lorsqu'il est réglé sur X'FF', indique que la transaction du partenaire a mis fin à la conversation. Il doit être testé en même temps que CDBERR et CDBSYNC pour savoir exactement comment mettre fin à la conversation.
CDBSIG
lorsqu'il est réglé sur X'FF', indique que la transaction partenaire ou le système a émis une commande de SIGNAL D'ÉMISSION GDS.
CDBSYNRB
lorsqu'il est réglé sur X'FF', indique que la transaction partenaire ou le système a émis une commande SYNCPOINT ROLLBACK. (Ceci n'est pertinent que pour les conversations au niveau de synchronisation 2)

Le tableau 2 montre comment ces champs de la CDB interagissent.

Tableau 2. Interaction entre certains champs de la CDB et toutes les commandes DTP
CDB- ERR CDB- GRATUIT CDB- SYNRB CDBERRCD Description
X "FF X'00' X'00' X'08890000'

X'08890001'

La transaction partenaire a envoyé GDS ISSUE ERROR
X "FF X'00' X'00' X'08890100'

X'08890101'

Le système partenaire a envoyé GDS ISSUE ERROR
X "FF X'00' X'00' X " A0020000 Erreur dans les données reçues du partenaire
X "FF X "FF X'00' X'08640000' La transaction partenaire a envoyé GDS ISSUE ABEND
X "FF X "FF X'00' X'08640001' Le système partenaire a envoyé GDS ISSUE ABEND
X "FF X "FF X'00' X'08640002' Une ressource partenaire a expiré
X "FF X "FF X'00' X'1008600B' La session a échoué en raison d'une erreur de protocole
X "FF X "FF X'00' X " A0000100 Échec temporaire de la session
X "FF X "FF X'00' X " A0010100 RTIMOUT s'est déclenché
X "FF X "FF X'00' X'10086032' Les données PIP envoyées avec le GDS CONNECT PROCESS n'ont pas été spécifiées correctement
X "FF X "FF X'00' X'10086034' Le système partenaire ne prend pas en charge les conversations de base
X "FF X "FF X'00' X'080F6051' La transaction du partenaire a échoué au contrôle de sécurité
X "FF X "FF X'00' X'10086041' La transaction partenaire ne prend pas en charge le niveau de synchronisation demandé sur le GDS CONNECT PROCESS
X "FF X "FF X'00' X'10086021' Le nom de la transaction partenaire n'est pas reconnu par le système partenaire
X "FF X "FF X'00' X'084C0000' Le système partenaire ne peut pas lancer la transaction partenaire
X "FF X "FF X'00' X'084B6031' Le système partenaire est temporairement incapable de lancer la transaction partenaire
X "FF X'00' X "FF X'08240000' La transaction partenaire ou le système a émis un SYNCPOINT ROLLBACK
X'00' X'00' La commande a été exécutée avec succès

En outre, les champs CONVDATA suivants ne concernent que les commandes GDS RECEIVE :

CDBCOMPL
lorsqu'il est réglé sur X'FF', indique que toutes les données envoyées en une seule fois ont été reçues. Ce champ est utilisé conjointement avec la commande GDS RECEIVE LLID.
CDBCONF
lorsqu'il est réglé sur X'FF', indique que la transaction partenaire a émis une commande GDS SEND CONFIRM et demande une réponse.
CDBRECV
n'est utilisé que lorsque CDBERR n'est pas activé. Lorsque CDRECV est activé ( X'FF' ), une autre RECEPTION GDS est nécessaire.
CDBSYNC
lorsqu'il est réglé sur X'FF', indique que la transaction ou le système partenaire a demandé un point de synchronisation. (Ceci n'est pertinent que pour les conversations au niveau de synchronisation 2)

Le tableau 3 montre comment certains de ces champs CDB interagissent pour les commandes RECEIVE.

Tableau 3. Interaction entre certains champs de la CDB - Commandes de réception uniquement
CDB- ERR CDB- GRATUIT CDB-RECV CDB-SYNC CDB- CONF Description
X'00' X'00' X'00' X'00' X'00' La transaction ou le système partenaire a émis GDS SEND INVITE WAIT. Le programme local est maintenant en état d'envoi.
X'00' X'00' X'00' X "FF X'00' La transaction ou le système partenaire a émis GDS SEND INVITE, suivi d'un SYNCPOINT. Le programme local est maintenant en état de synchronisation.
X'00' X'00' X'00' X'00' X "FF La transaction ou le système partenaire a émis GDS SEND INVITE CONFIRM. Le programme local est maintenant dans l'état "confsend".
X'00' X'00' X "FF X'00' X'00' La transaction ou le système partenaire a émis un GDS SEND ou un GDS SEND WAIT. Le programme local est en état de réception.
X'00' X'00' X "FF X "FF X'00' La transaction ou le système partenaire a émis un SYNCPOINT. Le programme local est en état de réception synchrone.
X'00' X'00' X "FF X'00' X "FF La transaction ou le système partenaire a émis une CONFIRMATION D'ENVOI GDS. Le programme local est en état de réception.
X'00' X "FF X'00' X'00' X'00' La transaction ou le système partenaire a émis un GDS SEND LAST WAIT. Le programme local est en état libre.
X'00' X "FF X'00' X "FF X'00' La transaction ou le système partenaire a émis un GDS SEND LAST suivi d'un SYNCPOINT. Le programme local est en état de synchronisation.
X'00' X "FF X'00' X'00' X "FF La transaction ou le système partenaire a émis un GDS SEND LAST CONFIRM. Le programme local est en état d'ébullition.

Après avoir analysé les champs CONVDATA, vous pouvez tester l'état de la conversation pour savoir quelles commandes GDS vous pouvez lancer ensuite. Voir les transitions d'état dans les conversations de base APPC.