汇编程序转换输出

CICS® 汇编语言应用程序的调用遵循系统标准。

在进入应用程序时,寄存器 1 , 15,14 和 13 包含以下地址:
  • 寄存器 1 包含参数列表的地址。 此列表至少有两个条目:
    • EIB (EXEC 接口块) 的地址
    • COMMAREA 的地址; 如果没有 COMMAREA ,那么条目为 X'00000000 '
  • 寄存器 15 包含入口点的地址。
  • 寄存器 14 包含返回点的地址。
  • 寄存器 13 包含保存区域的地址。

所有其他寄存器都未定义。

宏调用

对于汇编语言应用程序,当 CICS 转换程序检测到 CICS 命令时,会通过调用 DFHECALL 宏来替换每条命令。

DFHECALL

DFHECALL 宏用于设置命令参数并调用初始 CICS 命令处理器来处理命令。 此宏扩展为使用寄存器 15,14 , 0 和 1 的系统标准调用序列。 有关详细信息,请参阅 DFHECALL 宏

除了调用 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 必须为大写才能使转换程序识别它们。

图 1 中的示例显示了一个简单的汇编语言应用程序,该程序使用 BMS 命令 SEND MAP 将映射发送到终端,然后在转换程序 INSTRUCT 后输出。
图 1。 示例: CICS 命令的源程序和转换代码
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