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.
Language | Interface module name |
---|---|
![]() ![]() |
![]() ![]() |
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.
The 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:
The statements are put into a temporary file that is concatenated
before the assembled application program in the LKED step of the procedure.
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.
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.
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");
}
The 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.
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.
Figure 11 shows 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:
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