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