Utilisation des modules d'interface EXEC pour les applications AMODE(24) et AMODE(31)
Pour les applications AMODE(24) et AMODE(31), les instructions CALL générées par les traducteurs de langue appellent des modules d'interface EXEC qui assurent la communication entre votre code et leCICS® Programme d'interface EXEC, DFHEIP.
Un traducteur de langue lit votre programme source et en crée un nouveau. Les déclarations en langage normal restent inchangées, maisCICS les commandes sont traduites en instructions CALL de la forme requise par la langue dans laquelle vous codez. Les appels invoquentCICS -fourni EXÉCUTIF
modules d'interface ou bouts ; c'est-à-dire des sections de code dépendantes de la fonction utilisées par leCICS interface de programmation de haut niveau. Le stub, fourni dans la bibliothèque SDFHLOAD, doit être édité par lien avec votre programme d'application. Ces stubs sont invoqués lors de l'exécution de EXECCICS et les commandes EXEC DLI. Des stubs sont fournis pour chaque langage de programmation.
| Langue | Nom du module d'interface |
|---|---|
| Assembleur | DFHELII etDFHEAI0 |
| Tous les langages HLL et les programmes Assembler MAIN qui utilisent l'option LEASM | DFHELII |
LeCICS -Les routines stub fournies fonctionnent avec une interface de programmation interne, leCICS interface de niveau commande, qui n'est jamais modifiée de manière incompatible. Par conséquent, ces modules stub sont compatibles avec les versions antérieures et ultérieures, etCICS les modules d'application n'ont jamais besoin d'être liés pour inclure un niveau ultérieur de l'un de ces stubs.
À l'exception deDFHEAI0 , ces stubs fournissent tous la même fonction, qui consiste à fournir un lien depuis EXECCICS commandes au besoinCICS service. Pour ce faire, les stubs fournissent différents points d'entrée qui sont appelés depuis le fichier EXEC traduit.CICS commandes, puis exécutez une séquence d'instructions qui transmettent le contrôle à la fonction d'interface EXEC deCICS .
DFHELII contient plusieurs points d'entrée, dont la plupart assurent la compatibilité avec les anciennes versions du traducteur CICS PL/I. Il contient les entrées DFHEXEC® (pour les programmes d'application C et C++), DFHEI1 (pour COBOL et Assembler) et DFHEI01 (pour PL/I ).
Chaque stub commence par un eyecatcher de 8 octets sous la forme DFHY xnnn , où X indique le langage pris en charge par le stub (A indique Assembleur et I indique que le stub est indépendant de la langue), et nnn indique leCICS version à partir de laquelle le stub a été inclus. La lettre Y dans l'accroche-regard indique que le stub est en lecture seule. Stubs fournis avec les toutes premières versions deCICS contenait des accroches sous la forme DFHE xxxx , dans lequel la lettre E indique que le stub n'est pas en lecture seule.
L'exemple qui suit utilise CICS TS 6. 3. Cela signifie que vous devez mettre à jour le numéro de version associé à DFHYI. L'identifiant de DFHELII dans CICS Transaction Server for z/OS®, Version 6 Release 3 est DFHYI 760.
L'eyecatcher peut être utile pour déterminer leCICS libération à laquelle unCICS Le module de chargement d'application a été lié le plus récemment.
COBOL
Chaque commande EXEC est traduite en une instruction COBOL CALL qui fait référence à l'entrée DFHEI1.
*EXEC CICS RETURN END-EXEC
Call 'DFHEI1' using by content x'0e0800000600001000'
end-call.
La référence àDFHEI1 est résolu par l'inclusion de la routine stub DFHELII dans l'étape de l'éditeur de liaison duCICS -procédures fournies telles que DFHYITVL ou DFHZITCL.PL/I
DCL DFHEI0 ENTRY VARIABLE INIT(DFHEI01) AUTO;
DCL DFHEI01 ENTRY OPTIONS(INTER ASSEMBLER);
Le traducteur crée un nom d'entrée unique basé surDFHEI0 pour chaque commande EXEC traduite avec succès. L'exemple suivant montre la sortie générée par le traducteur lorsqu'il traite un simpleEXEC CICS RETURN commande: /* EXEC CICS RETURN TRANSID(NEXT) */
DO;
DCL DFHENTRY_B62D3C38_296F2687 BASED(ADDR(DFHEI0)) OPTIONS(INTER ASSEM
BLER) ENTRY(*,CHAR(4));
CALL DFHENTRY_B62D3C38_296F2687('xxxxxxxxxxxxxxxxx' /* '0E 08 80 00 03
00 00 10 00 F0 F0 F0 F0 F0 F0 F1 F0 'X */, NEXT);
END;
Dans l'exemple précédent,DFHENTRY_B62D3C38_296F2687 est basé sur la variable d'entréeDFHEI0 qui est associé à l'entrée réelleDFHEI01 . Cette technique permet au traducteur de créer une liste de descripteurs de données PL/I pour chaque nom d'entrée de variable. Le compilateur PL/I peut alors vérifier que les noms de variables référencés dans les commandes EXEC sont définis avec des attributs cohérents avec les attributs définis par le traducteur dans la liste des descripteurs de données. Dans cet exemple, ENTRY(*,CHAR(4)) spécifie que la variable (nommée NEXT) associée à l'option TRANSID doit être une chaîne de caractères d'une longueur de quatre.
La référence àDFHEI01 est résolu par l'inclusion de la routine stub DFHELII dans l'étape de l'éditeur de liaison de l'un desCICS -procédures fournies telles que DFHYITPL.
C et C++
Dans un programme C et C++, chaque EXECCICS La commande est traduite par le traducteur de commandes en un appel à la fonction DFHEXEC.
#pragma linkage(DFHEXEC,OS) /* force OS linkage */
void DFHEXEC(); /* function to call CICS */
/* EXEC CICS RETURN */
{
DFHEXEC(
"\x0E\x08\x00\x2F\x00\x00\x10\x00\xF0\xF0\xF0\xF0\xF1\xF8\xF0\xF0");
}
La référence à DFHEXEC est résolue par l'inclusion de la routine stub DFHELII dans l'étape de l'éditeur de liens de l'un desCICS -procédures fournies telles que DFHYITDL, DFHZITDL, DFHZITEL, DFHZITFL ou DFHZITGL.
Langage assembleur
Chaque commande EXEC est traduite en invocation de la macro DFHECALL.
* EXEC CICS RETURN
DFHECALL =X'0E0800000800001000'L'assemblage de l'invocation de la macro DFHECALL comme indiqué génère du code qui construit une liste de paramètres adressés par le registre 1, charge l'adresse d'entréeDFHEI1 dans le registre 15, et émet une instruction BALR pour appeler la routine stub. DS 0H
LA 1,DFHEITPL
LA 14,=x'0E08000008001000'
ST 14,0(,1)
OI 0(1),x'80'
L 15,=V(DFHEI1)
BALR 14,15La référence à DFHEI1 est résolue par l'inclusion de la routine stub DFHEAI dans l'étape de l'éditeur de liens de l'une des procédures fournies par CICS, telle que DFHEITAL. L'identifiant de DFHEAI dans CICS Transaction Server for z/OS, Version 6 Release 3 est DFHYA 760, les numéros de version indiquant que ce talon a été fourni avec CICS Transaction Server for z/OS, Version 6 Release 3.LeDFHEAI0 Le stub pour les programmes d'application assembleur est inclus par la fonction d'appel automatique de l'éditeur de liens ou de l'utilitaire de classeur. Il est appelé par le code généré par les macros DFHEIENT et DFHEIRET pour respectivement obtenir et libérer la zone de stockage dynamique d'un programme d'application assembleur. Ce stub est requis uniquement dans les programmes d'application assembleur ; aucun stub n'est requis ou fourni pour fournir une fonction équivalente pour les programmes écrits dans les langages de haut niveau.