全局工作区样本出口程序:DFH$PCEX、DFH$PCPI、DFH$PCPL 和 DFH$ZCAT

全局工作区 (GWA) 样本出口程序和副本可提供如何使用全局工作区和全局用户出口的示例。

GWA 样本出口程序向您显示如何执行以下操作:

  • 启用全局用户出口程序并分配 GWA。
  • 获取出口程序的 GWA 的地址。
  • 访问 CICS® 系统信息,并使该信息可供其他全局用户出口程序使用。
  • 在全局用户出口程序之间共享 GWA ,从而使其包含的信息可供多个程序使用,并克服 GWA 大小的限制。
  • 全局用户出口程序的 GWA 中保存的访问信息。
GWA 样本出口程序包括:
DFH$PCEX
DFH$PCEX 设计为在 XPCFTCH 出口调用。 CICS 还提供了可在此样本程序中使用的副本 DFH$PCGA。
DFH$PCPI
DFH$PCPI 设计为在程序列表后初始化 (PLTPI) 处理期间调用。 DFH$PCPI 提供了如何使用全局工作区的示例。
DFH$PCPL
DFH$PCPL 是一个哑元程序,由 DFH$PCPI 调用,用于驱动 XPCFTCH 用户出口。
DFH$ZCAT
此样本出口程序设计为在 XZCATT 出口中调用。 CICS 还提供了可在此样本程序中使用的副本 DFH$ZCGA。

详细说明了 DFH$PCPI ,以帮助您了解演示。

关于 DFH$PCPI

DFH$PCPI 由三个主要部分组成,执行以下处理:

第一章
获取并处理在 INITPARMS 系统初始化参数上传递到 DFH$PCPI 的任何参数。
第二章
说明如何使用标准 CICS 设施来获取系统信息,并使该信息可供全局用户出口程序使用。

2 部分执行以下处理:

  • 使用 EXEC CICS ENABLE PROGRAM 命令来启用 XPCFTCH 样本用户出口程序 DFH$PCEX ,并为其分配全局工作区。
  • 使用 EXEC CICS EXTRACT EXIT 命令获取 DFH$PCEX 全局工作区的地址。
  • 获取 CICS 系统信息,并将其放在 DFH$PCEX 全局工作区中。 获得的信息包括:
    • 作业名
    • APPLID
    • Sysid
    • CICS 发行版
    • 各种格式的日期,包括 DATFORM
    • 公共工作区 (CWA) 的地址
    • CICS 启动类型 (COLD 和 WARM)

    上述大部分信息都是使用 EXEC CICS API 命令获取的,如下所示:

    • INQUIRE SYSTEM
    • ASSIGN
    • ADDRESS
    • ASKTIME
    • FORMATTIME
  • 使用 EXEC CICS ENABLE PROGRAM 命令的 START 选项使 DFH$PCEX 可供执行。 这将导致针对所有 LINKXCTL 命令驱动 DFH$PCEX。
  • DFH$PCPL虚拟程序链接,用于驱动DFH$PCEX。
  • 使用 EXEC CICS DISABLE PROGRAM 命令的 STOP 选项使 DFH$PCEX 不可用于执行。 请注意,这将使 DFH$PCEX 全局工作区仍处于已分配状态,并且可通过 EXEC CICS EXTRACT EXIT 命令进行访问。
第三章
显示如何与其他出口程序共享出口程序的全局工作区中的系统信息。 在此过程中,它演示了应用程序如何通过 EXEC CICS EXTRACT EXIT 命令访问相同的信息。 本部分还说明如何使用 CICS 共享存储器来克服全局工作区大小上 32 KB 的限制。 该程序使用 GETMAIN 在 24 位存储器 (低于 16 MB) 中获取 64 KB 的区域,在 31 位存储器 (高于 16 MB) 中获取 128 KB 的区域。 使用共享存储器使第二个用户出口程序 (DFH$ZCAT) 能够在 31 位存储器中仅使用 12 个字节的工作区。

3 部分执行以下处理:

  • 使用 EXEC CICS ENABLE 来启用 DFH$ZCAT 用户出口程序并为其分配全局工作区。
  • 使用 EXEC CICS EXTRACT EXIT 获取 DFH$ZCAT 全局工作区的地址。
  • 将 DFH$PCEX 全局工作区的地址存储在 DFH$ZCAT 全局工作区中。
  • 使用 GETMAIN 获取共享的 24 位和 31 位存储器,并将地址存储在 DFH$ZCAT 全局工作区中。

设置 GWA 样本出口程序

RDO 提供了向 CICS 系统定义资源的传统 CICS 方法。 在这种情况下, RDO 会向 CSD 定义样本程序。

以下是 RDO 样本程序定义的一些示例:
DEFINE PROGRAM(DFH$PCEX) GROUP(EXITGRP)
        LANGUAGE(ASSEMBLER) RELOAD(NO) RESIDENT(NO) USAGE(NORMAL)
        USELPACOPY(NO) STATUS(ENABLED) CEDF(YES) DATALOCATION(ANY)
        EXECKEY(CICS)
 
DEFINE PROGRAM(DFH$PCPI) GROUP(EXITGRP)
        LANGUAGE(ASSEMBLER) RELOAD(NO) RESIDENT(NO) USAGE(NORMAL)
        USELPACOPY(NO) STATUS(ENABLED) CEDF(YES) DATALOCATION(ANY)
        EXECKEY(CICS)
 
DEFINE PROGRAM(DFH$PCPL) GROUP(EXITGRP)
        LANGUAGE(ASSEMBLER) RELOAD(NO) RESIDENT(NO) USAGE(NORMAL)
        USELPACOPY(NO) STATUS(ENABLED) CEDF(YES) DATALOCATION(ANY)
        EXECKEY(CICS)
 
DEFINE PROGRAM(DFH$ZCAT) GROUP(EXITGRP)
        LANGUAGE(ASSEMBLER) RELOAD(NO) RESIDENT(NO) USAGE(NORMAL)
        USELPACOPY(NO) STATUS(ENABLED) CEDF(YES) DATALOCATION(ANY)
        EXECKEY(CICS)

扩展 DFH$PCPI

DFH$PCPI 设计为作为 PLT 程序运行。 如果编写类似的程序,那么必须在 PLTPI 列表的 第二 部分 (在 PROGRAM=DFHDELIM 条目之后) 中定义该程序。 有关指示信息,请参阅 程序列表中的条目 :DFHPLT TYPE=ENTRY