4
votes

Clôturer une transaction CICS

J'ai un programme court COBOL CICS, c'est un CRUD basique. Dans ce programme, j'ai une option, lorsque j'appuie sur F12, je veux quitter, clôturer ma transaction.

Je veux appuyer sur F12 et la transaction se ferme.

Puis-je écrire une commande pour faire cela dans mon programme COBOL?

Merci


0 commentaires

5 Réponses :


2
votes

EXEC CICS RETURN mettra fin à votre programme, mais vous aurez toujours le contenu de l'écran.

Si vous exécutez d'abord la commande EXEC CICS SEND CONTROL ERASE, puis EXEC CICS RETURN, cela terminera votre programme et effacera également l'écran.


0 commentaires

1
votes

Dans une transaction 3270 CICS pseudo-conversationnelle, votre code commence normalement par vérifier s'il s'agit de "première entrée" en vérifiant si EIBCALEN = 0 ou si EIBRESP = DFHRESP (CHANNELERR) après un EXEC CICS GET CONTAINER si vous utilisez des conteneurs au lieu d'une virgule.

Si c'est la "première fois", votre code effectue normalement un certain ménage, puis un EXEC CICS SEND MAP pour mettre votre carte BMS sur le périphérique 3270. Ensuite, votre code effectue un EXEC CICS RETURN TRANSID (EIBTRNID) et référence soit votre commarea, soit votre chaîne.

Si ce n'est pas la "première fois", votre code examine normalement soit la virgule, soit un ou plusieurs conteneurs dans son canal et EIBAID pour déterminer ce qu'il faut faire ensuite, il s'agit souvent d'un code EXEC CICS RECEIVE MAP pour récupérer le contenu des champs des champs de la carte. Votre code exécute alors toutes les fonctions commerciales dont il a besoin, éventuellement en modifiant les champs de la carte et en effectuant un EXEC CICS SEND MAP DATAONLY , en apportant les modifications appropriées aux champs de virgule ou aux champs de votre (vos) conteneur (s) et un EXEC CICS PUT CONTAINER et fait à nouveau un EXEC CICS RETURN TRANSID (EIBTRNID) et fait référence à votre commarea ou à votre chaîne.

Si, comme dans votre cas, l'examen de ces champs indique que l'utilisateur souhaite quitter la transaction, votre code peut faire un EXEC CICS SEND TEXT ERASE FREEKB où FROM et LENGTH renvoient à des champs contenant un message approprié indiquant la fin de la transaction. Cela effacera votre carte de l'écran. Ensuite, votre code ferait un EXEC CICS RETURN sans l'option TRANSID, mettant fin à votre pseudo conversation.

Notez que chaque EXEC CICS RETURN effectue un EXEC CICS SYNCPOINT implicite de validation de ressources telles que les mises à jour DB2 et les messages MQ.


0 commentaires

5
votes

En supposant que vous ayez un pseudo programme conversationnel, chaque fois qu'il est appelé, la touche enfoncée sera dans EIBAID

le scénario que vous avez décrit est documenté dans le centre de connaissances ici https://www.ibm.com/support/knowledgecenter /SSGMCP_5.5.0/applications/designing/dfhp31i.html

J'espère que cela aide


0 commentaires

1
votes

Vous devez utiliser le cahier DFHAID pour capter l'attention. Ce que vous pouvez faire est, après avoir reçu la carte, vérifier EIBAID = DFHPF12 puis revenir au terminal par EXEC CICS RETURN


0 commentaires

2
votes

IMO, utilisez le cahier DFHAID pour capturer "Key-Press" ou attention. Après avoir reçu la carte, vérifiez EIBAID = DFHPF12 puis renvoyez RETURN Voir le paragraphe ci-dessous pour une meilleure compréhension -

P9000-RETURN-TERM.
      IF EIBAID = DFHPF12 
         EXEC CICS
              SEND CONTROL FREEKB ERASE
         END-EXEC
         EXEC CICS
              RETURN
         END-EXEC
      END-IF.

Cependant, c'est une bonne idée de libérer le clavier et tout avant de revenir. Ainsi, le code devient quelque chose comme ça -

P9000-RETURN-TERM.
      IF EIBAID = DFHPF12 
         EXEC CICS
              RETURN
         END-EXEC
      END-IF.


0 commentaires