Commande CICS XCTL :
Pour passer le contrôle à un autre programme au même niveau sans s’attendre à ce que le contrôle soit rendu.
Lorsqu’un programme XCTL passe à un autre, c’est-à-dire qu’il transfère le contrôle, le premier programme est considéré comme terminé et le second programme fonctionne au même niveau que le premier programme.
Le diagramme ci-dessus explique le processus d’appel d’un programme XCTL à partir du programme principal – Même niveau logique.
Lorsque l’exécution du deuxième programme se termine, le contrôle n’est pas rendu au premier programme, mais à un programme qui est à un niveau logique supérieur ou à CICS, si le premier programme a été appelé directement sous CICS.
Syntaxe:
EXEC CICS XCTL
PROGRAM(name)
COMMAREA(ws-zone)
LENGTH(ws-longueur)
END-EXEC.
- PROGRAM
Nom du programme auquel nous souhaitons transférer le contrôle. Si le nom est un littéral, il doit être placé entre guillemets. Le nom du programme peut comporter huit caractères et doit être défini dans PPT. - COMMAREA
Un paramètre facultatif. Lorsqu’il est spécifié, c’est le nom de la zone contenant les données à transmettre. Cette option est requise uniquement si vous souhaitez transmettre des informations à XCTLed pour programmer. - LENGTH
Spécifie la longueur de la zone de virgule. Ce paramètre est obligatoire uniquement COMMAREA est présent. Comme les paramètres de longueur dans d’autres commandes, il doit s’agir d’un demi-mot binaire.
Ws-longueur est la longueur de ws-zone et ws-zone contient les informations qui doivent être transmises au programme XCTL.
Transmission de données à l’aide de la commande XCTL :
Les données du programme XCTLing au programme XCTLed peuvent être transmises à l’aide de l’option COMMAREA.
Si la COMMAREA est utilisée dans le programme qui exécute le XCTL, la zone doit être définie dans la section de stockage de travail. Dans le programme appelé, la zone doit être définie comme la première zone dans la LINKAGE SECTION, à l’aide de DFHCOMMAREA. Seule une copie des données est transmise et non l’adresse.
Ce diagramme explique le processus interne d’appel d’un programme XCTL à partir du programme principal.
Les programmes XCTLing et XCTLed s’exécutent sous la même tâche.
Exemple:
L’exemple ci-dessous montre comment utiliser la commande XCTL pour passer le contrôle à un autre programme.
IDENTIFICATION DIVISION.
PROGRAM-ID. PROG000A.
WORKING-STORAGE SECTION.
01 WS-COMMAREA PIC X(70).
PROCEDURE DIVISION.
EXEC CICS XCTL
PROGRAM('PROGRAM1')
COMMAREA(WS-COMMAREA)
LENGTH(70)
END-EXEC.
Cette commande XCTL ci-dessus transfère le contrôle à transmettre au programme ‘PROGRAM1’ avec 70 octets de données. COMMAREA est un paramètre facultatif et est le nom de la zone contenant les données à transmettre ou la zone à laquelle les résultats doivent être retournés.
Question importante de l’entretien d’embauche avec le SCIC :
Différence entre XCTL et LINK ?
XCTL | LIEN |
---|---|
XCTL ne s’attend pas à ce que le contrôle revienne | LINK s’attend à ce que le contrôle revienne |
Les conditions de handle dans le programme principal ne sont pas disponibles pour le programme appelé. Établir de nouvelles conditions de poignée | Les conditions de traitement dans le programme appelant sont à nouveau nécessaires. Utilisez donc les commandes PUSH et POP pour les restaurer à nouveau |
XCTL n’attend pas de retour de contrôle et donc moins de surcharge sur les ressources système comme la mémoire, etc. | LINK s’attend à ce que le contrôle revienne et, par conséquent, la surcharge est davantage dans ce cas sur la mémoire, etc. |
Similaire à GO TO | Semblable à PERFORM, et le contrôle sera renvoyé à l’instruction qui suit |