Coding the DFHEIENT macro for AMODE(64) assembler language programs
For AMODE(64) programs, the DFHEIENT macro calls the AMODE(64) PROLOG program, which allocates working storage to hold any user variables and for CICS® use. The AMODE(64) PROLOG program sets up the CICS portion of this storage. When the program returns, this code sets up the registers specified by the DFHEIENT parameters. You must specify the DFHEIENT macro parameters to specify that your program uses relative addressing instructions, and you must use at least one register to address static data in your program.
You can specify the following operands for the DFHEIENT macro:
- CODEREG
- Specify a value of 0 (the default) to specify relative addressing.
- DATAREG
- Specify one or more working storage registers for the application program. The default is register 13, and it is advisable to use register 13 as your first data dynamic-storage register. If you do not, the code generated by the DFHECALL macro adds extra instructions to manipulate register 13. The DFHECALL macro ensures that register 13 addresses the save area that DFHEISTG defined in dynamic storage.
- EIBREG
- Specify the register to use to address the EXEC interface block (EIB). The default is register 11.
- STATREG
- Specify one or more static registers for the application program to use. The default is register 3.
- STATIC
- Specify the assembler label of the start of the static area. You must specify a value; there is no default for this parameter.
AMODE(64) programs must use relative addressing, because only relative addressing is supported.
Use the NOPROLOG translator option and specify the DFHEIENT macro with the appropriate parameters
for relative addressing. If you do not specify the DFHEIENT macro, the translator inserts a DFHEIENT
macro without the required parameters and the following error
occurs:
12,DFHEIENT - AMODE 64 - STATIC REQUIRED
For relative addressing, you do not need any base registers to address your program instructions, but you must use the STATREG and STATIC parameters to set up at least one static register to address static data in your program.
Examples
The following two example DFHEIENT statements generate the same code.
- In the first statement, all the parameters are coded (specifying the default
values).
DFHEIENT CODEREG=0,DATAREG=13,EIBREG=11,STATREG=3,STATIC=STAT - In the second statement, only the parameter that does not have a default value is
coded.
DFHEIENT STATIC=STAT
Related information
- For reference information about the DFHEIENT macro, see DFHEIENT macro.
- For more information about the DFHEIRET macro, see Coding the DFHEIRET macro for assembler language programs and DFHEIRET macro.
- For more information about the DFHEISTG storage, see Extending dynamic storage for assembler language programs.
- For more information about the DFHECALL and DFHEIRET macros, see DFHECALL macro.
- For reference information for the EXEC interface, including design overview, control blocks, modules, exits, and trace, see EXEC interface.