Contient des informations supplémentaires permettant de détailler la condition RESP. Ce champ contient des valeurs significatives comme celles documentées sur chaque commande. Pour des requètes sur des fichiers distants, EIBRESP2 contient la valeur zéro.
Voir aussi les options RESP, RESP2 et la fonction DFHRESP
Le message par lequel CICS annonce l’abandon d’une transaction est le suivant :
DFH2005 TRANSACTION tttt PROGRAM pppppppp ABEND aaaa
Le message comporte les informations suivantes :
• tttt: code de la transaction abandonnée
• pppppppp: code du programme en cours d’exécution lors de l’abend
• aaaa : code abend, permettant de retrouver la cause de l’abandon.
Il existe deux types de code abandon :
• Code abandon CICS : c’est un code émis par CICS. Tous les codes abend CICS sont préfixés par la lettre A
• Code abandon programmé : c’est un code mis en place délibérément dans le programme sur une commande ABEND, par le paramètre ABCODE. Pour des raisons d’identification, il est recommandé de ne pas préfixer ces codes par la lettre A, réservée aux abend CICS
La première étape de la recherche, consiste à retrouver la signification du code abend.
Si c’est un code programmé, la condition exprimée par ce code se situe dans le programme source. Lorsque la condition est localisée dans le programme, il est nécessaire d’analyser le contenu des zones de travail, la séquence d’exécution précédent l’arrêt, afin de déterminer la raison du problème.
Si c’est un abend CICS, il faut consulter la brochure CICS/ESA Messages and Codes, qui décrit tous les abend CICS. et qui donne pour la plupart d’entre-eux des suggestions d’analyse.
Cette brochure est accessible sous CICS par la transaction système : CMAC.
Principaux codes abend CICS
Les principaux codes abend CICS sont donnés ci-dessous :
ASRA : Interruption du programme
ASRB : Abend dû au système d’exploitation
AICA : Tâche en cours de bouclage
APCT : Module non trouvé, indisponible, ou de longueur nulle
AFCA : fichier indisponible
AEIx et AEYx : Résultats liés à des conditions exeptionnelles pour lesquelles aucune commande EXEC CICS HANDLE CONDITION n’est active
ATNI : Tâche terminée suite à une erreur du programme de réseau
Les programmes CICS sont écrits en langage COBOL dans les Mainframes. Nous discuterons de l’écriture d’un programme COBOL-CICS simple, de sa compilation, puis de son exécution.
Structure du programme d’application CICS
Syntaxe générale de l’instruction CICS
EXEC CICS function
[(option (argument value)]
[(option (argument value)]
END-EXEC.
Étapes de base du développement d’un programme d’application CICS
Traduire, compiler et lier un programme d’application CICS dans la bibliothèque de programmes d’application CICS (LOADLIB).
Définir Trans-ID en PCT avec le nom du programme associé
Définir le programme en PPT
Enregistrer le terminal dans TCT
Enregistrez l’utilisateur dans SNT (table de connexion)
D’autres tables CICS, par exemple FCT, JCT, DCT, doivent être préparées pour la programmation de l’application si nécessaire
Connectez-vous à CICS et entrez Trans-ID.
En plus des procédures de base ci-dessus, l’environnement système CICS détaillé doit être correctement préparé par les programmeurs système ou les programmeurs d’application.
Le terminal doit être enregistré au TCT.
L’identificateur d’utilisateur CICS doit être enregistré dans le SNT.
D’autres tables CICS (à savoir FCT, JCT et DCT) doivent être préparées pour le programme d’application, si nécessaire.
Exemple 1 – Programme COBOL-CICS
Vous trouverez ci-dessous un programme COBOL-CICS simple qui affiche le message “Bienvenue dans la communauté IBMMainframer” sur l’écran de sortie CICS.
IDENTIFICATION DIVISION.
PROGRAM-ID. IBMMFPGM.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
01 WS-DISP-MESSAGE PIC X(40).
01 WS-DISP-LENGTH PIC S9(4) COMP.
PROCEDURE DIVISION.
0000-MAIN-PARA.
MOVE 'WELCOME TO IBMMAINFRAMER COMMUNITY' TO WS-DISP-MESSAGE
MOVE '+34' TO WS-DISP-LENGTH
EXEC CICS SEND TEXT
FROM (WS-MESSAGE)
LENGHT(WS-LENGTH)
END-EXEC
EXEC CICS
RETURN
END-EXEC.
Ce programme simple utilise les commandes CICS SEND TEXT, qui sont utilisées pour envoyer des données sans mappage au terminal et la commande RETURN est utilisée pour retourner le contrôle du programme.
Exemple 2 – Programme COBOL-CICS
Cet exemple de programme utilise trois commandes CICS de base RECEIVE, SEND et RETURN.
Ce programme va :
Lire un message du terminal.
Renvoyez le message avec accusé de réception.
Terminez la transaction.
Notez la partie de gestion des erreurs après la commande EXEC CICS RECEIVE.
IDENTIFICATION DIVISION.
PROGRAM-ID. IBMMFPGM.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
77 WS-LONGUEUR PIC S9(4) COMP.
77 WS-RESP PIC S9(4) COMP.
01 WS-INPUT.
05 WS-TRAN-ID PIC X(4).
05 FILLER PIC X.
05 WS-IN-DATA PIC X(15).
01 WS-OUTPUT.
05 WS-MSG-DESC PIC X(17).
05 FILLER PIC X.
05 WS-OUT-DATA PIC X(15).
LINKAGE SECTION.
01 DFHCOMMAREA.
05 LS-COMMAREA PIC X.
PROCEDURE DIVISION.
MOVE 40 TO WS-LONGUEUR
MOVE LOW-VALUES TO WS-INPUT
EXEC CICS RECEIVE
INTO (WS-INPUT)
LENGHT(WS-LONGUEUR)
FROM (WS-RESP)
END-EXEC.
IF WS-RESP = DFHRESP(NORMAL)
MOVE LOW-VALLUES TO WS-OUTPUT
MOVE WS-IN-DATA TO WS-OUT-DATA
MOVE 'MSG RECU EST :'
TO WS-MSG-DESC
MOVE 53 TO WS-LONGUEUR
ELSE
MOVE LOW-VALLUES TO WS-OUTPUT
MOVE WS-IN-DATA TO WS-OUT-DATA
MOVE 'ERREUR DANS TXN :'
TO WS-MSG-DESC
MOVE 53 TO WS-LONGUEUR
END-IF.
EXEC CICS SEND
FROM (WS-OUTPUT)
LENGHT(WS-LONGUEUR)
END-EXEC.
EXEC CICS
RETURN
END-EXEC.
Composants CICS – Tables de contrôle et blocs de contrôle
Le noyau central de CICS se compose de programmes de contrôle et de leurs tables de contrôle correspondantes :
La partie principale ou le noyau de CICS se compose de programmes de contrôle fournis par IBM et de tables de contrôle CICS correspondantes définies par l’utilisateur.
Les programmes de contrôle CICS exécutent leur tâche principale en fonction des entrées des tables de contrôle CICS correspondantes définies par l’utilisateur.
Les programmeurs peuvent modifier les entrées de la table de contrôle en fonction des besoins.
Programmes de contrôle :
Le noyau CICS est construit par les programmes de contrôle et les tables de contrôle correspondantes. Il offre des avantages uniques. Cela rend le système CICS très flexible et donc facile à entretenir. Voici les programmes de contrôle importants de CICS.
TCP – Terminal Control Program (Programme de contrôle des terminaux)
TCP est utilisé pour recevoir des messages du terminal.
Il maintient les exigences de communication matérielle.
Il demande à CICS de lancer les tâches.
KCP – Task Control Program (Programme de contrôle des tâches)
KCP est utilisé pour contrôler simultanément l’exécution des tâches et ses propriétés associées.
Il gère tous les problèmes liés au multitâche.
PCP – Program Control Program (Programme de contrôle du programme)
PCP est utilisé pour localiser et charger des programmes à exécuter.
Il transfère le contrôle entre les programmes et à la fin, il renvoie le contrôle au CICS.
FCP – File Control Program (Programme de contrôle des fichiers)
FCP est utilisé pour fournir aux programmes d’application des services tels que lire, insérer, mettre à jour ou supprimer des enregistrements dans un fichier.
Il garde un contrôle exclusif sur les enregistrements afin de maintenir l’intégrité des données lors des mises à jour des enregistrements.
SCP – Storage Control Program (Programme de contrôle du stockage)
Il est utilisé pour contrôler l’allocation et la désallocation de la mémoire dans une région CICS.
Tableaux de contrôle :
CICS se compose de programmes et de tables de contrôle CICS fournis par IBM. Ces tables doivent être mises à jour en conséquence avec les informations d’application pour une exécution réussie des programmes d’application CICS. Voici les tables de contrôle importantes.
TCT – Terminal Control Table (Tableau de contrôle des bornes)
Lorsque nous nous connectons à un terminal CICS, une entrée est effectuée dans la table TCT.
TCT contient les ID de terminal connectés à la région CICS actuelle.
Le programme de contrôle du terminal ainsi que la table de contrôle du terminal reconnaissent les données entrantes du terminal.
PCT – Program Control Table (Tableau de contrôle du programme)
Il contient les ID de transaction (TRANSID) et les noms de programme ou ID de programme correspondants.
TRANSID est unique dans la table PCT.
PPT – Processing Program Table (Tableau du programme de traitement)
PPT contient le nom du programme ou le nom de l’ensemble de cartes, le compteur d’utilisation des tâches, la langue, la taille, l’adresse de stockage principale, l’adresse de la bibliothèque de chargement, etc.
Le nom du programme ou de l’ensemble de cartes est unique dans une table PPT.
CICS reçoit la transaction et un nom de programme correspondant est attribué à la transaction depuis le PCT. Il vérifie si le programme est chargé ou non. S’il est chargé, le compteur d’utilisation de la tâche est augmenté de 1. Si le programme n’est pas chargé, le programme est d’abord chargé et le compteur d’utilisation de la tâche est défini sur 1. Il obtient l’adresse de la bibliothèque de chargement à partir de la table PPT.
FCT – File Control Table (Tableau de contrôle des fichiers)
Il contient les noms de fichier, le type de fichier, la longueur d’enregistrement, etc.
Tous les fichiers utilisés dans un programme CICS doivent être déclarés dans FCT et ils sont ouverts et fermés par CICS lui-même.
DCT – Destination Control Table (Table de contrôle des destinations)
Les files d’attente de données transitoires doivent être prédéfinies dans la table de contrôle de destination. Le programme de données transitoires fait référence à DCT.
TST – Temporary Storage Table (Table de Stockage Temporaire)
Si vous souhaitez récupérer des files d’attente de stockage temporaire lors d’un plantage du système, elles doivent être enregistrées dans la table de stockage temporaire.
RCT – Region Control Table (Tableau de contrôle des régions)
Si des commandes DB2 sont utilisées dans le programme, le PLAN doit être enregistré ici.
SNT – Sign-On-Table
L’ID utilisateur et le mot de passe doivent être enregistrés dans Sign-On-Table.
PLT – Program List Table (Tableau de la liste des programmes)
Tous les programmes qui doivent être démarrés automatiquement lors du démarrage et de l’arrêt de CICS doivent être répertoriés dans le tableau de la liste des programmes.
JCT – Journal Control Table (Tableau de contrôle des journaux)
Les informations de contrôle des journaux système et des fichiers journaux sont stockées dans la table de contrôle du journal. Journal Control Program fait référence à JCT.
Il existe cinq manières de lancer des transactions CICS.
Par un identifiant de transaction saisi dans un terminal avec la touche ENTER. Il s’agit de la manière la plus courante d’initier une transaction CICS.
Par un identifiant de transaction associé à un terminal de pseudo-conversation. C’est une manière typique de réaliser une pseudo-conversation.
Par la commande START, qui lance une transaction spécifiée dans le paramètre.
Par le lancement automatique de tâche (ATI). L’entrée de la table de contrôle de destination (DCT) pour une file d’attente de données transitoires intrapartition peut avoir un paramètre de niveau de déclenchement et la transaction CICS associée à lancer si le niveau de déclenchement est atteint.
Par un identifiant d’attention 3270. Pour les terminaux de type IBM 3270, n’importe laquelle des clés PF pourrait être définie dans PCT pour initier une transaction.
Transaction:
Lorsqu’un identifiant de transaction TXN1 est saisi sur le terminal CICS, celui-ci vérifie d’abord s’il existe un programme associé à cet identifiant de transaction dans la table PCT. S’il en trouve un, il vérifie dans la table PPT pour trouver l’emplacement du programme pour l’exécuter.
Si le programme est déjà disponible dans la mémoire, il commence à exécuter ce programme particulier ; sinon, il charge le programme dans la mémoire à partir du stockage secondaire, puis commence à l’exécuter.
Cycle de vie des transactions :
Le cycle de vie de la transaction comporte les étapes suivantes :
Étape 1
L’opérateur du terminal lance la transaction en saisissant un identifiant de transaction de 1 à 4 caractères et en appuyant sur la touche ENTER.
Étape 2
Le programme de contrôle des terminaux (TCP) vérifie périodiquement tous les terminaux pour l’entrée. Lorsqu’un message est reçu, il fait ce qui suit –
Ordonne au programme de contrôle de terminal (SCP) de créer une zone d’entrée/sortie de terminal (TIOA).
Place le message dans la zone d’entrée/sortie du terminal (TIOA).
Passe le contrôle au programme de contrôle des tâches (KCP).
Étape 3
Le KCP prend le contrôle du programme de contrôle du terminal (TCP) et effectue les opérations suivantes :
Valide l’ID de transaction et la sécurité.
Ordonne au programme de contrôle du stockage (SCP) de créer une zone de contrôle des tâches.
Attribue la priorité à la tâche en fonction de la priorité du terminal (définie dans la table de contrôle du terminal (TCT)), de la priorité de l’opérateur (définie dans la table de connexion (SNT)) et de la priorité de transaction (définie dans la table de contrôle du programme (PCT)).
Ajoute la tâche à la file d’attente des programmes en attente.
Distribue les programmes en attente dans l’ordre de priorité.
Passe le contrôle au programme de contrôle du programme (PCP).
Étape 4
Le programme de contrôle du programme (PCP) prend le contrôle du programme de contrôle du programme (KCP) et effectue les opérations suivantes :
Localise le programme et le charge, si nécessaire.
Transfère le contrôle au programme d’application.
Étape 5
Le programme d’application prend le contrôle du programme de contrôle du programme (PCP) et effectue les opérations suivantes :
Demande au Terminal Control Program(TCP) de placer le message dans la zone WORKING STORAGE du programme.
Demande au programme de contrôle des fichiers (FCP) de récupérer les enregistrements des fichiers.
Étape 6
Le FCP prend le contrôle du programme d’application et effectue les opérations suivantes :
Demande une zone de travail Fichier à partir du programme de contrôle du stockage (SCP).
Informe le programme de contrôle des tâches (KCP) que cette tâche peut attendre que les E/S soient terminées.
Étape 7
Le programme de contrôle des tâches (KCP) effectue les opérations suivantes :
Distribue la tâche suivante dans la file d’attente.
Redistribue l’ancienne tâche lorsque les E/S sont terminées.
Transfère le contrôle au programme de contrôle de fichiers (FCP).
Étape 8
Le programme de contrôle de fichiers (FCP) rend le contrôle au programme d’application.
Étape 9
Le programme d’application effectue les opérations suivantes :
Traite les données du fichier.
Demande au programme de contrôle du terminal (TCP) d’envoyer un message d’E/S.
Renvoie le contrôle au programme de contrôle du programme (PCP).
Étape 10
Le programme de contrôle du programme (PCP) renvoie le contrôle au programme de contrôle du programme (KCP) en lui demandant de terminer la tâche.
Étape 11
Le programme de contrôle du programme (KCP) demande au programme de contrôle du stockage (SCP) de libérer tout le stockage alloué à la tâche (sauf TIOA).
Étape 12
Le programme de contrôle de terminal (TCP) effectue les opérations suivantes :
Envoie la sortie au terminal.
Demande au programme de contrôle du stockage (SCP) de libérer le TIOA
Le système d’affichage d’informations 3270 est une famille de terminaux d’affichage et d’impression. 3270 terminaux étaient utilisés pour se connecter au mainframe via des contrôleurs IBM. Aujourd’hui, un logiciel d’émulation 3270 est disponible, ce qui signifie que même des PC normaux peuvent être utilisés comme terminaux 3270. Les terminaux 3270 sont des terminaux muets et n’effectuent aucun traitement eux-mêmes. Tout le traitement doit être effectué par le programme d’application.
Les terminaux IBM sont constitués des composants suivants :
Moniteur CRT :
Le moniteur CRT affiche la sortie ou les champs d’entrée du programme d’application. Une capture d’écran d’un modèle 3278 de moniteur CRT est illustrée ci-dessous. Il a les caractéristiques suivantes :
Il est capable d’afficher 1920 caractères.
Chacune de ces positions de 1920 caractères est adressable individuellement.
Un programme d’application COBOL peut envoyer des données à toutes les positions de l’écran.
Les caractéristiques d’affichage telles que l’intensité, le champ protégé, non protégé peuvent être définies à l’aide de BMS, dont nous discuterons en détail dans les modules à venir.
Clavier:
Les touches du clavier IBM sont divisées en deux catégories :
Touches non AID – Toutes les autres touches pour les lettres, les chiffres, la ponctuation et les caractères spéciaux. sont des clés non-aide. Lorsque l’utilisateur tape du texte ou des chiffres à l’aide de touches non auxiliaires, CICS ne saura même pas si l’utilisateur tape quelque chose ou non.
Clés AID – Les clés AID sont connues sous le nom de clés d’identification d’attention. CICS ne peut détecter que les clés AID. Après avoir tapé toutes les entrées, uniquement lorsque l’utilisateur appuie sur l’une des touches AID, CICS prend le contrôle. Touches AID : ENTER, PF1 à PF24, PA1 à PA3, CLEAR.Les clés AID sont divisées en deux catégories :
Touches PF – Les touches PF sont appelées touches de fonction. Les clés PF permettent le transfert de données du terminal vers CICS. Les touches PF sont ENTER et PF1 à PF24.
Clés PA – Les clés PA sont appelées clés d’accès au programme. Les clés PA ne permettent pas le transfert de données entre le terminal et CICS. Les touches PA sont PA1 à PA3 et CLEAR.
Passer le contrôle à un programme à un niveau logique inférieur en s’attendant à ce que le contrôle revienne au programme au niveau logique supérieur.
Lorsqu’un programme est lié à un autre, le premier programme reste dans la mémoire principale pendant que le second programme est en cours d’exécution.
Lorsque le deuxième programme (lié à) se termine et rend le contrôle, le premier programme reprend au point après l’instruction LINK. Le programme LINKed to est considéré comme fonctionnant à un niveau logique inférieur au programme LINKing.
Le diagramme ci-dessus explique le processus d’appel d’un programme lié à partir du programme principal – Niveaux logiques inférieurs.
LINK doit être utilisé pour les programmes qui doivent retourner au programme qui l’a appelé. Tous les programmes liés aux programmes doivent avoir une commande RETURN.
Syntaxe:
EXEC CICS LINK
PROGRAM(nom)
COMMAREA(ws-espace)
LENGTH(ws-longueur)
END-EXEC.
PROGRAM Spécifie le nom du programme auquel doit être lié. Si le nom est un littéral, il doit être placé entre guillemets. Le nom du programme peut comporter jusqu’à huit caractères. Le programme doit être défini dans le PPT.
COMMAREA Paramètre facultatif, spécifiant la zone de données contenant les données à transmettre au programme LINKed to. Cette option n’est requise que si vous souhaitez transmettre des informations au programme auquel vous êtes lié.
LENGTH Spécifie la longueur de COMMAREA. Ce paramètre est requis uniquement si COMMAREA est présent. Comme les paramètres de longueur dans d’autres commandes, il doit s’agir d’un binaire d’un demi-mot.
Ws-longueur est la longueur de ws-espace et ws-espace contient les informations qui doivent être transmises au programme LINK.
Transmission de données à l’aide de la commande LINK :
Les données du programme de liaison au programme lié peuvent être transmises à l’aide de l’option COMMAREA.
Si l’OPTION COMMAREA est utilisée dans le programme LINKing, la zone doit être définie dans la section de stockage de travail. Dans le programme LINKed, la zone doit être définie comme la première zone de la section de liaison, sous le nom réservé DFHCOMMAREA.
La COMMAREA est partagée entre les deux programmes. Lorsque le programme LINKing reprend le contrôle, toutes les modifications apportées à la COMMAREA par le programme LINKed to sont accessibles.
La section WORKING STORAGE du programme LINKing est conservée jusqu’à la fin de son exécution. Mais la mémoire de travail du programme LINKed to est automatiquement libérée après la commande RETURN.
La liaison et les programmes liés s’exécutent sous la même tâche.
Exemple:
L’exemple ci-dessous montre comment utiliser la commande de contrôle Link pour passer le contrôle à un autre programme.
Question importante de l’entretien d’embauche avec le SCIC :
Différence entre LINK et XCTL ?
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
C’est une bonne pratique de développer plusieurs modules fonctionnels plutôt que de construire un long programme qui fait toutes les fonctions. Cela rend le programme difficile à maintenir, à comprendre et à déboguer. La taille du programme sera importante et il occupera également plus de ressources. Le fractionnement fonctionnel des sous-modules et l’appel ou le transfert du contrôle à ceux-ci sont réalisés par des commandes de contrôle de programme.
Les commandes de contrôle sont :
CICS LINK Passer le contrôle à un programme à un niveau logique inférieur en s’attendant à ce que le contrôle revienne au programme au niveau logique supérieur.
CICS XCTL Pour passer le contrôle à un autre programme au même niveau sans s’attendre à ce que le contrôle soit rendu.
CICS RETURN Pour revenir au programme de niveau supérieur logique suivant ou à CICS.
CICS CALL Pour effectuer un appel COBOL d’un programme CICS vers un autre programme COBOL.
CICS LOAD Pour charger un programme dans l’espace d’adressage CICS.
CICS RELEASE Pour libérer le programme de l’espace d’adressage CICS.
Les programmes d’application sous CICS s’exécutent sous différents niveaux logiques. Au plus haut niveau se trouve CICS (niveau 0). Tous les programmes d’application s’exécutent à des niveaux logiques inférieurs.
Un programme lié s’exécute au niveau logique inférieur suivant à partir du programme de liaison.
Un programme XCTL s’exécute au même niveau logique que le programme XCTL.
La commande RETURN redonne toujours le contrôle au programme à un niveau logique supérieur.
Le visuel explique le flux de contrôle entre les programmes.
Le programme A est au niveau logique le plus élevé sous CICS (niveau 1).
RETURN du programme A provoque le retour du contrôle vers CICS (niveau 0).
Lorsque le programme A envoie XCTL au programme B, le programme B sera au même niveau logique (niveau 1).
Lorsque le programme A émet un LIEN vers le programme C, le programme C sera au niveau 2.
Le RETURN du programme C passe la commande au niveau 1 (programme A).
RETURN du programme B passe le contrôle au niveau 0 (CICS).
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.
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.
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
Pour effectuer un appel COBOL d’un programme CICS vers un autre programme COBOL.
Le programme appelé doit être édité en lien avec le programme appelant. Si de nombreux programmes appellent le même programme, cela entraînera une plus grande occupation de la mémoire.
Le programme peut être appelé de deux manières :
CALL statique
CALL dynamique
CALL statique :
Un programme appelé statiquement ne nécessite pas d’être enregistré dans PPT.
L’appelant et le programme appelé doivent être édités ensemble en un seul module de chargement.
CALL dynamique :
L’appel dynamique est disponible uniquement dans VS-COBOL II et CICS 2.1 ou version ultérieure. Les programmes appelés dynamiquement sont des modules de chargement distincts et peuvent donc être partagés par plusieurs appelants. Lors de l’exécution, CICS chargera dynamiquement le programme appelé.
Le programme appelé dynamiquement nécessite d’être enregistré dans PPT.
Transmission de données en CALL :
Voici un exemple de programme COBOL utilisant un appel statique. Le format décrit pour la transmission des paramètres s’applique également aux appels dynamiques.
Les deux premiers paramètres du CALL doivent être DFHEIBLK et DFHCOMMAREA (dans cet ordre), puis les variables définies par l’utilisateur suivront.
Le traducteur insère toujours DFHEIBLK dans la LINKAGE SECTION.
Le programme appelé doit émettre un GOBACK pour revenir à l’appelant.
Question importante de l’entretien d’embauche avec le SCIC :
Différence entre CALL et XCTL/LINK ?
CALL
XCTL/LIEN
Le programme CALL’ed (appelé) est édité en lien avec le module principal.
Le ou les programmes XCTLed/LINKed (liés) sont compilés séparément et édités en lien.
Taille de module plus élevée et besoin de mémoire plus élevé
Le chargement dynamique peut ralentir la vitesse d’exécution
Toute modification du programme CALL nécessite la compilation de tous les autres modules à l’aide du programme CALL.
Les modifications apportées au(x) programme(s) XCTLed/LINKed n’affecteront pas les autres modules utilisant ce