汇编程序转换输出
CICS® 汇编语言应用程序的调用遵循系统标准。
- 寄存器 1 包含参数列表的地址。 此列表至少有两个条目:
- EIB (EXEC 接口块) 的地址
- COMMAREA 的地址; 如果没有 COMMAREA ,那么条目为 X'00000000 '
- 寄存器 15 包含入口点的地址。
- 寄存器 14 包含返回点的地址。
- 寄存器 13 包含保存区域的地址。
所有其他寄存器都未定义。
宏调用
对于汇编语言应用程序,当 CICS 转换程序检测到 CICS 命令时,会通过调用 DFHECALL 宏来替换每条命令。
- DFHECALL
DFHECALL 宏用于设置命令参数并调用初始 CICS 命令处理器来处理命令。 此宏扩展为使用寄存器 15,14 , 0 和 1 的系统标准调用序列。 有关详细信息,请参阅 DFHECALL 宏。
- DFHEIGBL
如果您在批处理或联机 CICS 应用程序中使用 EXEC DLI ,那么此宏将设置全局值。 在 DFHEIGBL 中,如果 DFHEIDL 设置为 1 ,那么这意味着程序包含 EXEC DLI 命令。 如果 DFHEIDB 设置为 1 ,这意味着程序是批处理 DL/I。 如果您未使用 DL/I ,那么会将其注释并设置为 0。
- DFHEIENT
- 此宏插入在第一个 CSECT 或 START 指令之后。 它执行 prolog 代码以分配用于存放任何用户变量的工作存储器,供 CICS 使用:
- 它保存寄存器
- 它获取 DFHEISTG 定义的存储器的初始分配
- 它设置基本寄存器 (缺省寄存器 3)
- 它设置动态存储器寄存器 (缺省寄存器 13)
- 它设置一个寄存器来寻址 EIB (缺省寄存器 11)
对于 AMODE (24) 和 AMODE (31) 程序,转换程序自动插入的 DFHEIENT 宏提供的值可能不足以用于产生大于 4095 字节的转换输出的应用程序。 在此情况下,您可以提供自己的 DFHEIENT 宏版本。 有关更多信息,请参阅 编码 DFHEIENT for AMODE (24) 和 AMODE (31) 汇编语言程序。
对于 AMODE (64) 程序,必须指定 DFHEIENT 宏参数以指定程序使用相对寻址指令,因为仅支持相对寻址。 有关更多信息,请参阅 编码 DFHEIENT for AMODE (64) 汇编语言程序。
有关参考信息,请参阅 DFHEIENT 宏。
- DFHEIRET
- 此宏执行附日志代码以释放应用程序的工作存储器:
- 它会恢复寄存器。
DFHEIRET RCREG=nn ,其中 nn (除 13 以外的任何寄存器号) 包含要在寄存器 15 恢复后放在寄存器 15 中的返回码。 有关更多信息,请参阅 为汇编语言程序编码 DFHEIRET。
- 它将控制权返回到寄存器 14 中的地址。
有关参考信息,请参阅 DFHEIRET 宏。
- 它会恢复寄存器。
- DFHEISTG 和 DFHEIEND
- 这些宏定义动态存储器:
- 它们定义参数列表所需的存储器。
- 它们定义保存区域。
有关更多信息,请参阅 扩展汇编语言程序的动态存储器。
有关参考信息,请参阅 DFHEISTG 宏 和 DFHEIEND 宏。
包含描述 EIB 的 DSECT 的副本 DFHEIBLK 也会自动包含。
程序必须具有 END 语句,因为转换程序不会以其他方式插入缺省宏。 此外, CSECT 或 START 和 END 必须为大写才能使转换程序识别它们。
Source program
INSTRUCT CSECT
EXEC CICS SEND MAP('DFH$AGA') MAPONLY ERASE
END
This source program is translated to:
DFHEIGBL , INSERTED BY TRANSLATOR
INSTRUCT CSECT
DFHEIENT INSERTED BY TRANSLATOR
* EXEC CICS SEND MAP('DFH$AGA') MAPONLY ERASE
DFHECALL =X'1804C0000800000000046204000020',
(CHA7,=CL7'DFH$AGA*'),(______RF,DFHEIV00)
DFHEIRET INSERTED BY TRANSLATOR
DFHEISTG INSERTED BY TRANSLATOR
DFHEIEND INSERTED BY TRANSLATOR
END