Using the EXEC interface modules

A language translator reads your source program and creates a new one; normal language statements remain unchanged, but CICS® commands are translated into CALL statements of the form required by the language in which you are coding. The calls invoke CICS-provided "EXEC" interface modules or stubs , which is a function-dependent piece of code used by the CICS high-level programming interface. The stub, provided in the SDFHLOAD library, must be link-edited with your application program to provide communication between your code and the CICS EXEC interface program, DFHEIP. These stubs are invoked during execution of EXEC CICS and EXEC DLI commands.

There are stubs for each programming language.

Table 4. Interface modules
Language Interface module name
Start of changeAssemblerEnd of change Start of changeDFHELII and DFHEAI0End of change
All HLL languages and Assembler MAIN
programs using the LEASM option
DFHELII

The CICS-supplied stub routines work with an internal programming interface, the CICS command-level interface, which is never changed in an incompatible way. Consequently, these stub modules are upward and downward compatible, and CICS application modules never need to be re-linked to include a later level of any of these stubs.

With the exception of DFHEAI0, these stubs all provide the same function, which is to provide a linkage from EXEC CICS commands to the required CICS service. The stubs make this possible by providing various entry points that are called from the translated EXEC CICS commands, and then executing a sequence of instructions that pass control to the EXEC interface function of CICS.

DFHELII contains multiple entry points, most of which provide compatibility for very old versions of the CICS PL/I translator. It contains the entries DFHEXEC (for C and C++ application programs), DFHEI1 (for COBOL and assembler), and DFHEI01 (for PL/1).

Each of these stubs begins with an 8 byte eyecatcher in the form DFHYxnnn, where x indicates the language supported by the stub (for example, A represents assembler, and I indicates that the stub is language independent), and nnn indicates the CICS release from which the stub was included. The letter Y in the eyecatcher indicates that the stub is read-only. Stubs supplied with very early releases of CICS contained eyecatchers in the form DFHExxxx in which the letter E denotes that the stub is not read-only.The eyecatcher for DFHELII in CICS Transaction Server for z/OS®, Version 3 Release 1 is DFHYI640.

The eyecatcher can be helpful if you are trying to determine the CICS release at which a CICS application load module was most recently linked.

Start of changeThe DFHEAI stub must be included at the beginning of the program in the output from the link edit. To achieve this, ORDER and INCLUDE statements for DFHEAI must be in the link-edit step of your JCL. When you use the CICS-supplied assembler procedure DFHEITAL in the SDFHPROC library to translate, assemble, and link-edit application programs written in assembler language, the COPYLINK step of this procedure copies SDFHMAC(DFHEILIA). DFHEILIA contains the following statements that must be included:End of change

Start of change   ORDER DFHEAI
   INCLUDE SYSLIB(DFHEAI)End of change

Start of changeThe statements are put into a temporary file that is concatenated before the assembled application program in the LKED step of the procedure.End of change

COBOL

Each EXEC command is translated into a COBOL CALL statement that refers to the entry DFHEI1.

The following example shows the output generated by the translator when processing a simple EXEC CICS RETURN command:

            *EXEC CICS RETURN END-EXEC
                  Call 'DFHEI1' using by content x'0e0800000600001000'
                 end-call.

The reference to DFHEI1 is resolved by the inclusion of the DFHELII stub routine in the linkage editor step of the CICS-supplied procedures such as DFHYITVL or DFHZITCL.

PL/I

When translating PL/I programs each EXEC command generates a call to the entry point DFHEI01. This is done using a variable entry point DFHEI0 that is associated with the entry DFHEI01. The translator enables this by inserting the following statements near the start of each translated program:

  DCL DFHEI0 ENTRY VARIABLE INIT(DFHEI01) AUTO;
  DCL DFHEI01 ENTRY OPTIONS(INTER ASSEMBLER);

The translator creates a unique entry name based on DFHEI0 for each successfully translated EXEC command. The following example shows the output generated by the translator when processing a simple EXEC CICS RETURN command:

  /* 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;    

In the example above, DFHENTRY_B62D3C38_296F2687 is based on the entry variable DFHEI0 that is associated with the real entry DFHEI01. This technique allows the translator to create a PL/I data descriptor list for each variable entry name. The PL/I compiler can then check that variable names referenced in EXEC commands are defined with attributes that are consistent with the attributes defined by the translator in the data descriptor list. In this example, ENTRY(*,CHAR(4)) specifies that the variable (named NEXT) associated with the TRANSID option should be a character string with a length of four.

The reference to DFHEI01 is resolved by the inclusion of the DFHELII stub routine in the linkage editor step of one of the CICS-supplied procedures such as DFHYITPL.

C and C++

In a C and C++, each EXEC CICS command is translated by the command translator into a call to the function DFHEXEC. The translator enables this by inserting the following statements near the start of each translated program:

#pragma linkage(DFHEXEC,OS)    /* force OS linkage  */
void DFHEXEC();                /* function to call CICS */

The following example shows the output generated by the translator when processing a simple EXEC CICS RETURN command:

    /* EXEC CICS RETURN */
    {
    DFHEXEC( "\x0E\x08\x00\x2F\x00\x00\x10\x00\xF0\xF0\xF0\xF0\xF1\xF8\xF0\xF0");
    } 

Start of changeThe reference to DFHEXEC is resolved by the inclusion of the DFHELII stub routine in the linkage editor step of one of the CICS-supplied procedures such as DFHYITDL, DFHZITDL, DFHZITEL, DFHZITFL or DFHZITGL.End of change

Assembler language

Each EXEC command is translated into an invocation of the DFHECALL macro.

The following example shows the output generated by the translator when processing a simple EXEC CICS RETURN command:

*        EXEC CICS RETURN
         DFHECALL =X'0E0800000800001000'

The assembly of the DFHECALL macro invocation shown above generates code that builds a parameter list addressed by register 1, loads the address of entry DFHEI1 in register 15, and issues a BALR instruction to call the stub routine.

         DS   0H
         LA   1,DFHEITPL
         LA   14,=x'0E08000008001000'
         ST   14,0(,1)
         OI   0(1),x'80'
         L    15,=V(DFHEI1)
         BALR 14,15

The reference to DFHEI1 is resolved by the inclusion of the DFHEAI stub routine in the linkage editor step of one of the CICS-supplied procedures such as DFHEITAL. The eyecatcher for DFHEAI in CICS Transaction Server for z/OS, Version 3 Release 1 is DFHYA640, with the release numbers indicating this stub was supplied with CICS Transaction Server for z/OS, Version 3 Release 1.

The DFHEAI0 stub for assembler application programs is included by the automatic call facility of the linkage editor or binder utility. It is called by code generated by the DFHEIENT and DFHEIRET macros to obtain and free, respectively, an assembler application program's dynamic storage area. This stub is required only in assembler application programs; there are no stubs required or supplied to provide an equivalent function for programs written in the high level languages.

Start of change

EXAMPLE Assembler language PROGRAM using LEASM

Figure 11 shows a simple CICS assembler program.

Figure 11. a simple CICS assembler program.
*ASM XOPTS(LEASM)                                                  
DFHEISTG DSECT                                                     
OUTAREA  DS    CL200               DATA OUTPUT AREA                
*                                                                  
EIASM    CSECT ,                                                   
         MVC  OUTAREA(40),MSG1                                     
         MVC  OUTAREA(4),EIBTRMID                                  
         EXEC CICS SEND TEXT FROM(OUTAREA) LENGTH(43) FREEKB ERASE 
         EXEC CICS RECEIVE                                         
         MVC  OUTAREA(13),MSG2                                     
         EXEC CICS SEND TEXT FROM(OUTAREA) LENGTH(13) FREEKB ERASE 
         EXEC CICS RETURN                                          
*                                                                  
MSG1     DC   C'xxxx: ASM program invoked. ENTER TO END.'          
MSG2     DC   C'PROGRAM ENDED'                                     
         END                                                        

When translated and assembled, it expands to Figure 12:

Figure 12. the Translated assembled version
ASM XOPTS(LEASM)
         DFHEIGBL ,,,LE            INSERTED BY TRANSLATOR
*,&DFHEIDL; SETB 0  1 MEANS EXEC DLI IN PROGRAM                          01-DFHEI
*,&DFHEIDB; SETB 0  1 MEANS BATCH PROGRAM                                01-DFHEI
*,&DFHEIRS; SETB 0  1 MEANS RSECT                                        01-DFHEI
*,&DFHEILE; SETB 1  1 MEANS LE MAIN                                      01-DFHEI
DFHEISTG DSECT
         DFHEISTG                  INSERTED BY TRANSLATOR
***********************************************************************
*              EXEC INTERFACE DYNAMIC STORAGE                         *
***********************************************************************
DFHEISTG DSECT                     EXEC INTERFACE STORAGE      @BBAC81A 01-DFHEI
         USING *,DFHEIPLR          ESTABLISH ADDRESSABILITY    @BBAC81A 01-DFHEI
*
**********************************************************************
*   D Y N A M I C   S T O R A G E   A R E A    ( D S A )             *
**********************************************************************
*
CEEDSA   DS    0D         Just keep the same label for formulae         02-CEEDS
*
CEEDSAFLAGS DS XL2                  DSA flags                           02-CEEDS
CEEDSALNGC EQU X'1000'                C library DSA                     02-CEEDS
CEEDSALNGP EQU X'0800'                PL/I library DSA                  02-CEEDS
CEEDSAEXIT EQU X'0008'                An Exit DSA                       02-CEEDS
CEEDSAMEMD DS  XL2                  Member defined                      02-CEEDS
CEEDSABKC DS   A                    Addr of DSA of caller               02-CEEDS
CEEDSAFWC DS   A                    Addr of DSA of last called rtn      02-CEEDS
CEEDSAR14 DS   F                    Save area for register 14           02-CEEDS
CEEDSAR15 DS   F                    Save area for register 15           02-CEEDS
CEEDSAR0 DS    F                    Save area for register 0            02-CEEDS
CEEDSAR1 DS    F                    Save area for register 1            02-CEEDS
CEEDSAR2 DS    F                    Save area for register 2            02-CEEDS
CEEDSAR3 DS    F                    Save area for register 3            02-CEEDS
CEEDSAR4 DS    F                    Save area for register 4            02-CEEDS
CEEDSAR5 DS    F                    Save area for register 5            02-CEEDS
CEEDSAR6 DS    F                    Save area for register 6            02-CEEDS
CEEDSAR7 DS    F                    Save area for register 7            02-CEEDS
CEEDSAR8 DS    F                    Save area for register 8            02-CEEDS
CEEDSAR9 DS    F                    Save area for register 9            02-CEEDS
CEEDSAR10 DS   F                    Save area for register 10           02-CEEDS
CEEDSAR11 DS   F                    Save area for register 11           02-CEEDS
CEEDSAR12 DS   F                    Save area for register 12           02-CEEDS
CEEDSALWS DS   A                    Addr of PL/I Language Working Space 02-CEEDS
CEEDSANAB DS   A                    Addr of next available byte         02-CEEDS
CEEDSAPNAB DS  A                    Addr of end-of-prolog NAB           02-CEEDS
           DS  4F                                                       02-CEEDS
CEEDSATRAN DS  0A                   HPL TxArea or                       02-CEEDS
CEEDSARENT DS  A                    Program reentry address-IPAT        02-CEEDS
CEEDSACILC DS  A                    C to Fortran ILC save area          02-CEEDS
CEEDSAMODE DS  A                    Return address of module that       02-CEEDS
*                                   caused the last mode switch
           DS  2F                                                       02-CEEDS
CEEDSARMR  DS  A                    Addr of language specific           02-CEEDS
*                                   exception handler
*
           DS  F                    Reserved                            02-CEEDS
CEEDSAAUTO DS  0D                   Automatic storage starts here       02-CEEDS
CEEDSAEND  DS  0D                   End of DSA                          02-CEEDS
CEEDSASZ EQU   CEEDSAEND-CEEDSA     Size of DSA                         02-CEEDS
CEEDSA_STDCEEDSA  EQU   X'0000'     flag values of standard CEE DSA     02-CEEDS
*
*
*
DFHEISA  DS    18F                 SAVE AREA R14-R12 AT 12 OFF @BBAC81A 01-DFHEI
DFHEILWS DS    F                   RESERVED                    @BBAC81A 01-DFHEI
DFHEINAB DS    F                   RESERVED                    @BBAC81A 01-DFHEI
DFHEIRS0 DS    F                   RESERVED                    @BBAC81A 01-DFHEI
DFHEIR13 DS    F                   REGISTER 13                 @BBAC81A 01-DFHEI
DFHEIRS1 DS    F                   RESERVED                    @BBAC81A 01-DFHEI
DFHEIBP  DS    F                   EIB POINTER      (NOT USED IF BATCH) 01-DFHEI
DFHEICAP DS    F                   COMMAREA POINTER (NOT USED IF BATCH) 01-DFHEI
DFHEIV00 DS    H                   HALFWORD TEMP USED BY DFHECALL       01-DFHEI
DFHEIRS2 DS    H                   RESERVED                    @BBAC81A 01-DFHEI
DFHEIPL  DS    13F                 PARAMETER LIST                  @05C 01-DFHEI
         DS    51F                 ALLOW 64 PARAMETERS FOR DLI     @L2A 01-DFHEI
*                               AND IN XA2 ON, FOR EXEC CICS ALSO
DFHEIRS3 DS    F                   RESERVED                        @L2A 01-DFHEI
DFHEIRS4 DS    F                   RESERVED                        @L2A 01-DFHEI
DFHEITP1 DS    F                   TEMPORARY POINTER 1             @L2A 01-DFHEI
DFHEITP2 DS    F                   TEMPORARY POINTER 2             @L2A 01-DFHEI
DFHEITP3 DS    F                   TEMPORARY POINTER 3             @L2A 01-DFHEI
DFHEITP4 DS    F                   TEMPORARY POINTER 4             @L2A 01-DFHEI
***********************************************************************
*              START DEFINITION OF USER DYNAMIC STORAGE               *
***********************************************************************
DFHEIUSR DS    0D                  ALIGN USER DYNAMIC STORAGE  @BBAC81A 01-DFHEI
*
OUTAREA  DS    CL200               DATA OUTPUT AREA
*
TESTLE   CSECT ,
         DFHEIENT                  INSERTED BY TRANSLATOR
***********************************************************************
*                                                                     *
* CONTROL BLOCK NAME = DFHEIBLK                                       *
*                                                                     *
* NAME OF MATCHING PL/AS CONTROL BLOCK = None                         *
*                                                                     *
* DESCRIPTIVE NAME = %PRODUCT EXEC Interface Block.                   *
*                                                                     *
*    @BANNER_START                           02                       *
*    Licensed Materials - Property of IBM                             *
*                                                                     *
*    "Restricted Materials of IBM"                                    *
*                                                                     *
*    5697-E93                                                         *
*                                                                     *
*    (C) Copyright IBM Corp. 1990, 1993                               *
*                                                                     *
*                                                                     *
*                                                                     *
*                                                                     *
*    @BANNER_END                                                      *
*                                                                     *
* STATUS = %XA20                                                      *
*                                                                     *
* FUNCTION = EXEC Interface Block.                                    *
*                                                                     *
*        The exec interface block contains information on the         *
*        transaction identifier, the time and date, and the cursor    *
*        position on a display device. Some of the other fields are   *
*        set indicating the next action that a program should take    *
*        in certain circumstances.                                    *
*        DFHEIBLK also contains information that will be helpful      *
*        when a dump is being used to debug a program.                *
*        This control block is included automatically by an           *
*        application program using the command-level interface.       *
*        EISEIBA in the EIS addresses the EIB.                        *
*                                                                     *
*                                                                     *
*                                                                     *
* NOTES :                                                             *
*    DEPENDENCIES = S/370                                             *
*    MODULE TYPE = Control block definition                           *
*    PROCESSOR = Assembler                                            *
*                                                                     *
*-------------------------------------------------------------------- *
*                                                                     *
* CHANGE ACTIVITY :                                                   *
*   $SEG(DFHEIBLK),COMP(COMMAND),PROD(%PRODUCT) :                     *
*                                                                     *
*     PN= REASON REL YYMMDD HDXXIII : REMARKS                         *
*    $L1= 550    %0G 900515 HDFSPC  : Add an EIB length equate        *
*    $D1= I05119 %B1 930226 HDDHDMA : Correct comments for date field *
*    $P1= M60581 %B0 900116 HDAEGB  : Change for PLXMAP to data areas *
*                                                                     *
***********************************************************************
*              EXEC INTERFACE BLOCK                                   *
***********************************************************************
DFHEIBLK DSECT                     EXEC INTERFACE BLOCK        @BBAC81A 01-DFHEI
         USING *,DFHEIBR                                       @BBAC81A 01-DFHEI
EIBTIME  DS    PL4                 TIME IN 0HHMMSS FORMAT      @BBAC81A 01-DFHEI
EIBDATE  DS    PL4                 DATE IN 0CYYDDD+ FORMAT,        @D1C 01-DFHEI
*                                  where C is the century          @D1A
*                                  indicator (0=1900, 1=2000),     @D1A
*                                  YY is the year, DDD is the      @D1A
*                                  day number and '+' is the       @D1A
*                                  sign byte (positive)            @D1A
EIBTRNID DS    CL4                 TRANSACTION IDENTIFIER      @BBAC81A 01-DFHEI
EIBTASKN DS    PL4                 TASK NUMBER                 @BBAC81A 01-DFHEI
EIBTRMID DS    CL4                 TERMINAL IDENTIFIER         @BBAC81A 01-DFHEI
EIBRSVD1 DS    H                   RESERVED                    @BBAC81A 01-DFHEI
EIBCPOSN DS    H                   CURSOR POSITION             @BBAC81A 01-DFHEI
EIBCALEN DS    H                   COMMAREA LENGTH             @BBAC81A 01-DFHEI
EIBAID   DS    CL1                 ATTENTION IDENTIFIER        @BBAC81A 01-DFHEI
EIBFN    DS    CL2                 FUNCTION CODE               @BBAC81A 01-DFHEI
EIBRCODE DS    CL6                 RESPONSE CODE               @BBAC81A 01-DFHEI
EIBDS    DS    CL8                 DATASET NAME                @BBAC81A 01-DFHEI
EIBREQID DS    CL8                 REQUEST IDENTIFIER          @BBAC81A 01-DFHEI
EIBRSRCE DS    CL8                 RESOURCE NAME               @BBDIA0U 01-DFHEI
EIBSYNC  DS    C                   X'FF' SYNCPOINT REQUESTED   @BBDIA0U 01-DFHEI
EIBFREE  DS    C                   X'FF' FREE REQUESTED        @BBDIA0U 01-DFHEI
EIBRECV  DS    C                   X'FF' RECEIVE REQUIRED      @BBDIA0U 01-DFHEI
EIBSEND  DS    C                   RESERVED                    @BM13417 01-DFHEI
EIBATT   DS    C                   X'FF' ATTACH RECEIVED       @BBDIA0U 01-DFHEI
EIBEOC   DS    C                   X'FF' EOC RECEIVED          @BBDIA0U 01-DFHEI
EIBFMH   DS    C                   X'FF' FMHS RECEIVED         @BBDIA0U 01-DFHEI
EIBCOMPL DS    C                   X'FF' DATA COMPLETE                  01-DFHEI
EIBSIG   DS    C                   X'FF' SIGNAL RECEIVED                01-DFHEI
EIBCONF  DS    C                   X'FF' CONFIRM REQUESTED              01-DFHEI
EIBERR   DS    C                   X'FF' ERROR RECEIVED                 01-DFHEI
EIBERRCD DS    CL4                 ERROR CODE RECEIVED                  01-DFHEI
EIBSYNRB DS    C                   X'FF' SYNC ROLLBACK REQ'D            01-DFHEI
EIBNODAT DS    C                   X'FF' NO APPL DATA RECEIVED          01-DFHEI
EIBRESP  DS    F                   INTERNAL CONDITION NUMBER            01-DFHEI
EIBRESP2 DS    F                   MORE DETAILS ON SOME RESPONSES       01-DFHEI
EIBRLDBK DS    CL1                 ROLLED BACK                          01-DFHEI
*
EIBLENG  EQU   *-EIBTIME           Length of EIB                   @L1A 01-DFHEI
***********************************************************************
*              END OF EXEC INTERFACE BLOCK                            *
***********************************************************************
DFHEIBR  EQU   11                  EIB REGISTER                @BA02936 01-DFHEI
***********************************************************************
*              PROLOG CODE FOR EXEC INTERFACE                         *
***********************************************************************
*&DFHEICS; CEEENTRY PPA=DFHPPA,MAIN=YES,PLIST=OS,
*               BASE=&CODEREG;,
*               AUTO=(DFHEIEND-DFHEISTG)
TESTLE  CSECT ,                                                         02-CEEEN
TESTLE  RMODE ANY                                                       02-CEEEN
TESTLE  AMODE ANY                                                       02-CEEEN
           ENTRY TESTLE                                                 02-CEEEN
         PUSH  USING                                                    02-CEEEN
         DROP  ,                                                  @02A  02-CEEEN
         USING *,15                                                     02-CEEEN
         B     CEEZ0007                                                 02-CEEEN
         DC    X'00C3C5C5'                                              02-CEEEN
CEEY0007      DC    A((((DFHEIEND-DFHEISTG)+7)/8)*8)                   X02-CEEEN
                                        . Size of automatic storage.
         DC    A(DFHPPA-TESTLE)   . Address of PPA for this program     02-CEEEN
         B     1(,15)                                                   02-CEEEN
CEEZ0007    EQU *                                                       02-CEEEN
         STM   14,12,CEEDSAR14-CEEDSA(13)                               02-CEEEN
         L     2,CEEINPL0007                                5@01D @01C  02-CEEEN
         L     15,CEEINT0007                                      @01C  02-CEEEN
         DROP  15                                                 @01A  02-CEEEN
         BALR  14,15                                                    02-CEEEN
         LR    2,1                                                      02-CEEEN
         L     14,752(,12)                                              02-CEEEN
         OI    8(14),X'80'                                              02-CEEEN
         BALR  3,0                                                @01A  02-CEEEN
         USING *,3                                                @01A  02-CEEEN
         L     3,CEEOEPV0007                                      @01A  02-CEEEN
         POP   USING                                              @01A  02-CEEEN
         USING TESTLE,3                                           @01A  02-CEEEN
         L     1,CEEDSANAB-CEEDSA(,13)  Get the current NAB             02-CEEEN
         L     0,CEEY0007                                               02-CEEEN
         ALR   0,1                     Compute new value.               02-CEEEN
         CL    0,CEECAAEOS-CEECAA(,12)  Compare with EOS.               02-CEEEN
         BNH   CEEX0007                                                 02-CEEEN
         L     15,CEECAAGETS-CEECAA(,12) Get address overflow routine   02-CEEEN
         BALR  14,15                   Get another stack segment.       02-CEEEN
         LR    1,15                                                     02-CEEEN
         B     CEEX0007                Branch around statics      @01A  02-CEEEN
CEEINPL0007    DC    A(CEEINPL)                                   @01A  02-CEEEN
CEEINT0007     DC    V(CEEINT)                                    @01A  02-CEEEN
CEEOEPV0007    DC    A(TESTLE)                                    @01A  02-CEEEN
CEEX0007    EQU *                                                       02-CEEEN
         ST    13,CEEDSABKC-CEEDSA(,1)  Set back chain.                 02-CEEEN
         ST    0,CEEDSANAB-CEEDSA(,1)   Set new NAB value               02-CEEEN
         XC    CEEDSAFLAGS-CEEDSA(,1),CEEDSAFLAGS-CEEDSA(1) . Clear     02-CEEEN
         ST    1,CEEDSAFWC-CEEDSA(,13)  Set forward chain.              02-CEEEN
         LR    13,1                    Set save area address            02-CEEEN
         USING CEEDSA,13               Addresability to SF     V1R2M0   02-CEEEN
         MVC   CEEDSALWS,CEECAALWS-CEECAA(12) Get LWS addr     V1R2M0   02-CEEEN
         LR    1,2                                                      02-CEEEN
         BAL   1,*+8                                               @L2A 01-DFHEI
* The following gives an assembler message if DFHEISTG is too big  @P7A
         DS    0S((DFHEISTG+65264-DFHEIEND-4096)/4096)             @04C 01-DFHEI
         DC    AL2(DFHEIEND-DFHEISTG)  LENGTH OF STORAGE           @L2A 01-DFHEI
         DC    H'0'                Parameter list version number   @P6C 01-DFHEI
***********************************************************************
*              ESTABLISH DATA ADDRESSIBILITY                          *
***********************************************************************
DFHEIPLR EQU   13                  PARAMETER LIST REGISTER     @BBAC81A 01-DFHEI
         LR    DFHEIPLR,15                                     @BBAC81A 01-DFHEI
         USING DFHEISTG,13                                     @BBAC81A 01-DFHEI
         MVC   DFHEIBP(L'DFHEIBP+L'DFHEICAP),0(1)                  @D3AX01-DFHEI
                                        COPY EIB AND CA PTRS       @D3A
***********************************************************************
*              ESTABLISH EIB ADDRESSIBILITY                           *
***********************************************************************
         L     DFHEIBR,DFHEIBP                                 @BBAC81A 01-DFHEI
         USING DFHEIBLK,DFHEIBR                                @BBAC81A 01-DFHEI
***********************************************************************
*              END OF PROLOG CODE FOR EXEC INTERFACE                  *
***********************************************************************
         MVC  OUTAREA(40),MSG1
         MVC  OUTAREA(4),EIBTRMID
*        EXEC CICS SEND TEXT FROM(OUTAREA) LENGTH(43) FREEKB ERASE
         DFHECALL =X'180660000800C20000082204000020',,(______RF,OUTAREA*
               ),(FB_2,=Y(43))
***********************************************************************
         DS    0H                                                       01-DFHEC
         LA    1,DFHEIPL                                                01-DFHEC
         LA    14,=X'180660000800C20000082204000020'                    01-DFHEC
         SR    15,15                                                    01-DFHEC
         LA    0,OUTAREA                                                01-DFHEC
         STM   14,0,0(1)                                                01-DFHEC
         LA    14,=Y(43)                                                01-DFHEC
         ST    14,12(,1)                                                01-DFHEC
         OI    12(1),X'80'         LAST ARGUMENT                        01-DFHEC
         L     15,=V(DFHEI1)                                            01-DFHEC
         BALR  14,15               INVOKE EXEC INTERFACE                01-DFHEC
***********************************************************************
*        EXEC CICS RECEIVE
         DFHECALL =X'040200000800000014000040000000'
***********************************************************************
         DS    0H                                                       01-DFHEC
         LA    1,DFHEIPL                                                01-DFHEC
         LA    14,=X'040200000800000014000040000000'                    01-DFHEC
         ST    14,0(,1)                                                 01-DFHEC
         OI    0(1),X'80'          LAST ARGUMENT                        01-DFHEC
         L     15,=V(DFHEI1)                                            01-DFHEC
         BALR  14,15               INVOKE EXEC INTERFACE                01-DFHEC
***********************************************************************
         MVC  OUTAREA(13),MSG2
*        EXEC CICS SEND TEXT FROM(OUTAREA) LENGTH(13) FREEKB ERASE
         DFHECALL =X'180660000800C20000082204000020',,(______RF,OUTAREA*
               ),(FB_2,=Y(13))
***********************************************************************
         DS    0H                                                       01-DFHEC
         LA    1,DFHEIPL                                                01-DFHEC
         LA    14,=X'180660000800C20000082204000020'                    01-DFHEC
         SR    15,15                                                    01-DFHEC
         LA    0,OUTAREA                                                01-DFHEC
         STM   14,0,0(1)                                                01-DFHEC
         LA    14,=Y(13)                                                01-DFHEC
         ST    14,12(,1)                                                01-DFHEC
         OI    12(1),X'80'         LAST ARGUMENT                        01-DFHEC
         L     15,=V(DFHEI1)                                            01-DFHEC
         BALR  14,15               INVOKE EXEC INTERFACE                01-DFHEC
***********************************************************************
*        EXEC CICS RETURN
         DFHECALL =X'0E0800000800001000'
***********************************************************************
         DS    0H                                                       01-DFHEC
         LA    1,DFHEIPL                                                01-DFHEC
         LA    14,=X'0E0800000800001000'                                01-DFHEC
         ST    14,0(,1)                                                 01-DFHEC
         OI    0(1),X'80'          LAST ARGUMENT                        01-DFHEC
         L     15,=V(DFHEI1)                                            01-DFHEC
         BALR  14,15               INVOKE EXEC INTERFACE                01-DFHEC
***********************************************************************
*
MSG1     DC   C'xxxx: ASM program invoked. ENTER TO END.'
MSG2     DC   C'PROGRAM ENDED'
         DFHEIRET                  INSERTED BY TRANSLATOR
***********************************************************************
*              EPILOG CODE FOR EXEC INTERFACE                         *
***********************************************************************
         DS    0H                                              @BBAC81A 01-DFHEI
         LA   1,CEET0014                Get address of termination list 02-CEETE
         L    15,=V(CEETREC)            Get address of termination rtn  02-CEETE
         BALR 14,15                     Call termination routine.       02-CEETE

CEET0014 DC   A(*+8)               Parm 1                               02-CEETE
         DC   A(*+8+X'80000000')   Parm 2                               02-CEETE
         DC   A(0)                 Enc_Modifier                         02-CEETE
         DC   A(0)                 Return code.                         02-CEETE
CEEMAIN  CSECT                                                          02-CEETE
CEEMAIN  RMODE ANY                                                      02-CEETE
CEEMAIN  AMODE ANY                                                      02-CEETE
         DC    A(TESTLE)                                          @04A  02-CEETE
         DC    F'0'                                                     02-CEETE
TESTLE     CSECT                                                        02-CEETE
***********************************************************************
*              END OF EPILOG CODE FOR EXEC INTERFACE                  *
***********************************************************************
         LTORG ,                                               @BBAC81A 01-DFHEI
               =V(DFHEI1)
               =V(CEETREC)
               =Y(43)
               =Y(13)
               =X'180660000800C20000082204000020'
               =X'040200000800000014000040000000'
               =X'0E0800000800001000'
         DS    0H                                           @F8E1S @L1C 01-DFHEI
         DFHEISTG                  INSERTED BY TRANSLATOR
         DFHEIEND                  INSERTED BY TRANSLATOR
*
**********************************************************************
*        P R O G R A M  P R O L O G  A R E A 1   ( P P A 1)          *
**********************************************************************
*
PPA10018    DS    0F                                                    02-CEEPP
DFHPPA   DS    0F                                                       02-CEEPP
         DC    AL1(PPANL0018-*) Offset to the entry name length         02-CEEPP
         DC    X'CE'            LE/370  Indicator.                      02-CEEPP
         DC    B'10100000'                             . PPA flags      02-CEEPP
*                     Bit 0   0 = Internal Procedure
*                             1 = External Procedure
*                     Bit 1   0 = Primary Entry Point
*                             1 = Secondary Entry Point
*                     Bit 2   0 = Block doesn't have a DSA
*                             1 = Block has a DSA
*                     Bit 3   0 = compiled object
*                             1 = library object
*                     Bit 4   0 = sampling interrupts to library
*                             1 = sampling interrupts to code
*                     Bit 5   0 = not an exit DSA
*                             1 = Exit DSA
*                     Bit 6   0 = own exception model
*                             1 = inherited (callers) exception model
*                     Bit 7       Reserved
         DC    X'00'            Member flags                            02-CEEPP
         DC    A(PPA20018)      Addr of Compile Unit Block (PPA2)       02-CEEPP
         DC    A(0)                                                     02-CEEPP
         DC    A(0)             Data Descriptors for this entry point   02-CEEPP
         DS    0H                                                       02-CEEPP
PPANL0018 DC   AL2(6)        .  Length of Entry Point Name              02-CEEPP
         DC    CL6'TESTLE'   .  Entry Point Name                        02-CEEPP
CEEINPL  DS    0D                                                       02-CEEPP
         DC    A(PPA2M0018)                                             02-CEEPP
         DC    A(CEEINPLSTST-CEEINPL)                                   02-CEEPP
CEEINPLSTST DS 0F                                                       02-CEEPP
         DC    X'00'            Control Level                     @01A  02-CEEPP
         DC    X'00'            ENCLAVE=NO                        @01A  02-CEEPP
         DC    X'00'                                              @01A  02-CEEPP
         DC    X'07'            Number of items.                  @01C  02-CEEPP
         DC    A(PPA2M0018)   . A of A(first entry point in comp unit)  02-CEEPP
         DC    V(CEESTART)   . A(Address of CEESTART)                   02-CEEPP
         DC    V(CEEBETBL)                                              02-CEEPP
         DC    A(15)         . Memeber id                               02-CEEPP
         DC    A(0)                                                     02-CEEPP
         DC    XL4'00070000'          . EXECOPS(ON), PLIST              02-CEEPP
         DS    0H                                                       02-CEEPP
*
**********************************************************************
*        P R O G R A M  P R O L O G  A R E A 2   ( P P A 2)          *
**********************************************************************
*
         EXTRN CEESTART                                                 02-CEEPP
PPA20018    DS    0F                                                    02-CEEPP
         DC    AL1(15)          Member ID                               02-CEEPP
         DC    AL1(0)           Sub ID                                  02-CEEPP
         DC    AL1(0)           Member defined                          02-CEEPP
         DC    AL1(1)           Level of PPAx control blocks            02-CEEPP
PPA2S0018   DC    A(CEESTART)      A(CEESTART for this load module)     02-CEEPP
         DC    A(0)             A(Compile Debug Information (CDI) )     02-CEEPP
         DC    A(CEETIMES-PPA20018)   A(Offset to time stamp)           02-CEEPP
PPA2M0018   DC    A(TESTLE)      . A(first entry point in comp. unit)   02-CEEPP
*
**********************************************************************
*                 T I M E    S T A M P                               *
**********************************************************************
*
*        Time Stamp
*,Time Stamp = 2004/06/17 08:51:00                                      02-CEEPP
*,Version 1 Release 1 Modification 0                                    02-CEEPP
CEETIMES DS    0F                                                       02-CEEPP
         DC    CL4'2004'          Year                                  02-CEEPP
         DC    CL2'06'            Month                                 02-CEEPP
         DC    CL2'17'            Day                                   02-CEEPP
         DC    CL2'08'            Hours                                 02-CEEPP
         DC    CL2'51'            Minutes                               02-CEEPP
         DC    CL2'00'            Seconds                               02-CEEPP
         DC    CL2'1'             Version                               02-CEEPP
         DC    CL2'1'             Release                               02-CEEPP
         DC    CL2'0'             Modification                          02-CEEPP
***********************************************************************
*  C O M M O N   A N C H O R   A R E A   ( C A A )                    *
***********************************************************************
***********************************************************************
***********************************************************************
LEPTRLEN EQU    4                                                       03-CEEDN
*
CEECAA      DSECT ,                 CAA mapping                         02-CEECA

    (Definition of LE CAA removed)

*              TERMINATE DEFINITION OF DYNAMIC STORAGE                *
DFHEISTG DSECT                                                 @BBAC81A 01-DFHEI
         ORG                                                            01-DFHEI
DFHEIEND DS    0X                  END OF DYNAMIC STORAGE      @BBAC81A 01-DFHEI
         END
End of change [[ Contents Previous Page | Next Page Index ]]