用于生成样本节点错误程序的 DFHSNEP 宏

路由机制,公共子例程, CICS®提供的错误处理器和用户提供的错误处理器是通过 DFHSNEP 宏生成的。

样本节点错误程序和表需要进行翻译,组装和链接编辑。 有关组装和链接编辑用户可替换程序所需的作业控制语句的信息,请参阅 组装和链接编辑用户可替换程序。 请注意,您应该在节点错误程序中对转换程序选项 NOPROLOG 和 NOEPILOG 进行编码。

还需注意的是,通用子程序寄存器保存区需要额外的 24 字节,错误处理器保存区还需要更多空间。 CICS 样本处理器使用此区域的 4 字节。

用于生成样本节点错误程序的 DFHSNEP 宏有七种类型,如下所示:
  • DFHSNEP TYPE=USTOR ,用于指示用户存储器定义的开始。
  • DFHSNEP TYPE=USTOREND ,用于指示用户存储器定义结束。
  • DFHSNEP TYPE=INITIAL ,用于生成路由机制和 (可选) 公共子例程。
  • DFHSNEP TYPE=DEF3270,用于为 3270 设备生成缺省 CICS提供的错误处理器。
  • DFHSNEP TYPE=DEFILU ,用于为以争用方式运行的交互式逻辑单元生成缺省 CICS提供的错误处理器。
  • DFHSNEP TYPE=ERRPROC ,用于指示用户提供的错误处理器的启动。
  • DFHSNEP TYPE=FINAL ,用于指示样本节点错误程序的结束。

DFHSNEP TYPE=USTOR 和 DFHSNEP TYPE= USTOREND (定义用户存储)

DFHSNEP TYPE=USTORDFHSNEP TYPE=USTOREND 宏分别指示用户存储器定义的开始和结束。

DFHSNEP TYPE=USTOR 宏指示用户存储器定义的开始。 它必须后跟您的存储器定义,然后是 DFHSNEP TYPE=USTOREND。 如果使用 DFHSNEP TYPE=USTOR 来定义存储器,那么它和 DFHSNEP TYPE=USTOREND 必须在 之前 编码 DFHSNEP TYPE=INITIAL。

DFHSNEP  TYPE=USTOR

DFHSNEP TYPE=USTOREND 宏指示用户存储器定义结束。 如果已编码 DFHSNEP TYPE=USTOR ,那么其使用是必需的。 如果使用 DFHSNEP TYPE=USTOR 来定义存储器,那么它和 DFHSNEP TYPE=USTOREND 必须在 之前 编码 DFHSNEP TYPE=INITIAL。

DFHSNEP  TYPE=USTOREND

DFHSNEP TYPE=INITIAL (生成路由机制)

DFHSNEP TYPE=INITIAL 宏指示样本节点错误程序的启动,并导致生成路由机制。

一个 DFHSNEP TYPE=INITIAL 宏必须立即出现 之后 DFHSNEP TYPE=USTOR 和 DFHSNEP TYPE=USTOREND (如果已编码) 和 其余宏。

DFHSNEP  TYPE=INITIAL
         [,CS=NO]
         [,NAME=name]
         [,NETNAME=netname]
初始类型
指示样本节点错误程序的启动并导致生成路由机制。
CS=否
指定禁止生成公共子例程。
NAME=name
指定节点错误程序模块标识的名称。 名称必须是由 1 到 8 个字符组成的字符串。 此操作数是可选的,缺省值为 DFHZNEP0。 如果允许使用 NAME 操作数作为缺省值,那么可以使用 DFHTEP 和 DFHZNEP 的链接编辑语句 中的示例来创建链接编辑语句,但如果指定其他 NAME ,那么必须相应地更改链接编辑语句。 如果使用接口模块 DFHZNEP (由 DFHZNEPI 宏生成) ,那么必须指定此操作数 (名称不是 DFHZNEP)。
NETNAME= 网络名
指定要在初始化时装入的节点错误表的名称。 名称必须是由 1 到 8 个字符组成的字符串。 此操作数是可选的,缺省值为 DFHNET。

DFHSNEP TYPE=DEF3270 (包括 3270 LU 的错误处理器)

DFHSNEP TYPE=DEF3270 宏指定 CICS为 3270 逻辑单元提供的错误处理器将包含在节点错误程序中。

DFHSNEP  TYPE=DEF3270
此宏将生成以下源代码:
DFHSNEP TYPE=ERRPROC,GROUP=1,CODE=(D9,DC,DD,F2)
Sense/status error processor code.
 
DFHSNEP TYPE=ERRPROC,GROUP=2,CODE=42
Unavailable printer error processor code.

DFHSNEP TYPE=DEFILU (包括 INTLUs 的错误处理器)

DFHSNEP TYPE=DEFILU 宏指定 CICS为交互式逻辑单元提供的错误处理器将包含在节点错误程序中。

DFHSNEP  TYPE=DEFILU
此宏将生成以下源代码:
DFHSNEP TYPE=ERRPROC,GROUP=1,CODE=DC
(receiver in transmit mode error processor code)

DFHSNEP TYPE=ERRPROC (指定用户错误处理器)

DFHSNEP TYPE=ERRPROC 宏用于指示用户提供的错误处理器的启动。 实际错误处理器代码应紧跟在此宏之后。 组合件应由语句 END DFHNEPNA终止。

可在 DFHSNEP TYPE=ERRPROC 宏上使用以下操作数:
DFHSNEP  TYPE=ERRPROC
         ,CODE=(error-code,...)
         ,GROUP=error-group-index
类型 = ERRPROC
指示用户提供的错误处理器的启动。
CODE = (error-code , ...)
指定组成错误组的错误代码,因此由提供的错误处理器处理。 操作数编码为 1 字节十六进制代码的 2 字符表示的子列表。 (对于单个代码,可以省略括号。) 对于指定的每个代码,错误组索引位于转换表中的等效偏移量。 因此,当出现此代码时,可以识别相应的错误处理器。
GROUP=错误组索引
指定错误处理器的错误组索引。 此索引用于命名错误处理器,从错误处理器向量表 (EPVT) 中查找其地址,并选择性地将其与每个 NEB 中的 ESB 相关联。 指定的索引必须是范围在 X'01 'X'FF' 之间的 1 字节十六进制数的 2 字符表示 (可以省略前导零)。 错误处理器名称的格式为 NEPROCxx ,其中 "xx" 是错误组索引。 将生成此名称的 CSECT 语句,这将导致在节点错误程序模块的末尾组装错误处理器代码并使其具有自己的可寻址性。
如果您打算将自己的错误处理器添加到样本节点错误程序,那么应考虑以下因素:
  • 通信区域的布局。 图 2中详细描述了通信区域。
  • 无法在 DFHZNEP 中使用某些函数。 (请参阅 使用 EXEC CICS 命令的限制。)
  • 样本节点错误程序使用的寄存器约定。 这些内容在 表 1中进行了描述。
表 1. 注册分配
注册 使用
0 工作记录
1 EXEC 参数列表的地址
2 NEB 基本寄存器 (仅限 DFHSNEP)
3 ESB 基本寄存器 (仅限 DFHSNEP) NEP 错误类寄存器 (仅限 DFHZNEPI)
4 NEP 名称指针寄存器 (仅限 DFHZNEPI)
5 NEP 接口基本寄存器 (仅限 DFHZNEPI)
6 工作记录
7 工作记录
8 工作记录
9 工作记录
10 代码库寄存器
11 EIB 的地址
12 通信区域的地址
13 DFHEISTG 存储器的地址
14 CSVT 基本和错误处理器链接寄存器公共子例程链接寄存器
15 错误处理器分支寄存器公共子例程分支寄存器。
注:
  1. 必须保存寄存器 14 以从错误处理器返回。 公共子例程向量表 (CSVT) 在 BALR 之后编码到错误处理器,因此此寄存器也是 CSVT 库。
  2. 寄存器 1 , 10,12,13,14 和 15 是在进入错误处理器时设置的。
  3. 寄存器 14 到 11 可由错误处理器保存在 EXEC 接口存储器中标签为 NEPEPRS 的区域中。 在从错误处理器返回之前,不需要恢复寄存器 15 到 11。
  4. 寄存器 4 到 9 可由公共子例程保存在 EXEC 接口存储器中保留在标签 NEPCSRS 的区域中。 在从子例程返回之前,必须先复原这些参数。

DFHSNEP TYPE=FINAL (正在终止 DFHSNEP 条目)

一个 DFHSNEP TYPE=FINAL 宏必须跟在所有其他 DFHSNEP 宏之后,以指示节点错误程序结束。 它导致生成错误处理器向量表 (EPVT)。 EPVT 是一个表,其中包含由节点错误程序的路由机制调用的错误组处理器的地址。

DFHSNEP  TYPE=FINAL