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.
| 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.
| 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.
| 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.