XCTL
传输程序控制。
语法
条件: CHANNELERR , INVREQ , ENGERR , NOTAUTH 和 PGMIDERR
此命令是线程安全的。
NOHANDLE、RESP 和 RESP2是常用选项,可添加到所有 EXEC CICS 命令中以处理错误条件。 命令语法图和选项说明中没有明确包含这些选项。 有关这些常用选项和 EXEC CICS 命令语法的信息,请参阅 EXEC CICS 命令格式和编程注意事项.
描述
XCTL 在同一逻辑级别将控制从一个应用程序传输到另一个应用程序。 将释放从中传输控制的程序。 如果将控制权转移到的程序尚未在主存储器中,那么将装入该程序。
此命令在当前应用程序上下文中运行。 如果该命令由在平台上部署的应用程序的任务下运行的程序发出,那么 CICS 将在应用程序的专用程序目录中搜索指定的程序。 此命令不能用于更改应用程序上下文。
注:
- CICS TS 5.3 中的 JCICS® API 取消了对 XCTL 的支持。 有关更多信息,请参阅 升级 Java 环境。 从 Java 程序链接时,可考虑使用 LINK、START、START CHANNEL 和异步 RUN TRANSID API。
- 不支持使用 EXEC CICS XCTL 命令链接到任何 CICS提供的程序。
选项
- CHANNEL (名称)
- 指定要提供给所调用程序的通道的名称 (1-16 个字符)。 可接受的字符为 A-Z a-z 0-9 $ @ # / % &?!:| " = ¬,; < >. - 和 _。不允许使用前导字符和内嵌空白字符。 如果提供的名称少于 16 个字符,那么将使用最多 16 个字符的尾部空格来填充该名称。 如果通道不存在,那么将创建该通道。 此新通道将保留在作用域中,直到链接级别发生更改为止。 有关通道作用域的更多信息,请参阅 通道作用域。
通道名称始终采用 EBCDIC。 前面列出的通道名称所允许的字符集包含在所有 EBCDIC 代码页中不具有相同表示法的一些字符。 因此,如果要在不同地区之间运输通道,最好将命名通道的字符限制为 A-Z a-z 0-9 & : =,; < >. - 和 _。
可以指定通道名称 DFHTRANSACTION 以使用事务通道。 当链接级别发生更改时,事务通道不会超出作用域: 它在任务中始终可访问。 有关更多信息,请参阅 通道和容器。
发出 XCTL 命令的程序可以执行下列其中一项操作:- 在发出 XCTL 命令之前,使用一个或多个 PUT CONTAINER CHANNEL 或 PUT64 CONTAINER 命令创建通道。
- 按名称指定其当前通道。
- 命名当前不存在的通道。 将创建新的空通道。
- COMMAREA (数据区)
- 指定要提供给所调用程序的通信区域。 在此选项中,将传递数据区的内容。 在 COBOL 中,必须在接收程序中将此数据区命名为 DFHCOMMAREA。 请参阅 将数据传递到其他程序。
- INPUTMSG (数据区)
- 指定当被调用程序首次发出 RECEIVE 命令时要传递给该程序的数据。 如果调用的程序使用 LINK 命令将控制权传递给另一个程序,那么将创建链接链,如 LINK 命令的 INPUTMSG 选项所述。 在发出 RECEIVE 命令或控制权返回给 CICS之前, INPUTMSG 数据保持可用。
- INPUTMSGLEN (data-value)
- 指定半字二进制值,用于指定 INPUTMSG传递的数据的长度。
- LENGTH (data-value)
- 指定通信区域的长度 (半字二进制数据值) (以字节计)。 有关合适上限的说明,请参阅 翻译注意事项:EXEC CICS 命令中的 LENGTH 选项。
- PROGRAM (名称)
- 指定要将控制权无条件传递到的程序的标识 (1-8 个字母数字字符)。 指定的名称必须已定义为 CICS的程序,但如果 AUTOINSTALL 处于活动状态,那么定义是自动安装的。请注意使用引号:
EXEC CICS XCTL PROGRAM('PROGX')PROGX括在引号中,因为它是程序名。EXEC CICS XCTL PROGRAM(DAREA)DAREA未包含在引号中,因为它是包含实际程序名的数据区的名称。 数据区用于包含程序名,此数据区必须定义为工作存储器中的 8 字节字段。
条件
- 122 CHANNELERR
- RESP2 值:
- 1
- CHANNEL 选项上指定的名称包含非法字符或字符组合。
- 16 INVREQ
- RESP2 值:
- 8
- 对未与终端关联的程序或与 APPC 逻辑单元或 IRC 会话关联的程序发出带有 INPUTMSG 选项的 XCTL 命令。
- 29 日
- 在 GLUE 或 TRUE 中不允许 EXEC XCTL。
- 30
- 尚未初始化程序管理器域。 这可能是因为在第一阶段 PLT 中发出了 XCTL 请求。
- 31 日
- 从与应用程序上下文一起运行的程序向作为应用程序入口点的另一个程序发出 XCTL 命令。
- 32
- 从将调用 Liberty JVM 服务器中的 Enterprise Java 应用程序的程序发出 XCTL 命令。 不支持此操作。
- 33
- 从公共程序向作为应用程序入口点的另一个程序发出 XCTL 命令。
- 34
- 从使用应用程序上下文运行的程序向公共程序发出 XCTL 命令。
- 200
- 在 DPL 调用的程序中发出带有 INPUTMSG 选项的 XCTL 命令。
缺省操作: 异常终止任务。
- 22 LENGERR
- RESP2 值:
- 11
- LENGTH 小于 0 或大于 32763。
- 26 日
- 传递的 COMMAREA 地址为零,但 LENGTH 为非零。
- 27
- INPUTMSGLEN 小于 0 或大于 32767。
- 28 日
- LENGTH 或 INPUTMSGLEN 大于 COMMAREA 或 INPUTMSG 选项中指定的数据区的长度,并且在复制该数据时,由于长度不正确而发生了破坏性重叠。
缺省操作: 异常终止任务。
- 70 NOTAUTH
- RESP2 值:
- 101
- 在 PROGRAM (name) 上进行资源安全性检查失败。
缺省操作: 异常终止任务。
- 27 PGMIDERR
- RESP2 值:
- 1
- 程序没有已安装的资源定义,并且已关闭程序自动安装,或者程序自动安装控制程序指示不应自动安装该程序。
- 2
- 已禁用该程序。
- 3
- 由于下列其中一个原因,无法装入程序:
- 这是程序的第一次装入,程序装入失败,通常因为找不到装入模块。
- 这是程序的后续装入,但第一次装入失败。
要重置装入状态,装入模块必须位于 DFHRPL 或动态 LIBRARY 并置中,并且将需要 SET PROGRAM NEWCOPY
- 9
- 已安装的程序定义用于远程程序。
- 21
- 程序自动安装控制程序失败,原因是程序自动安装控制程序不正确或定义不正确,或者由于程序自动安装控制程序中的异常终止。 已禁用程序自动安装,并将消息 DFHPG0202 或 DFHPG0203 写入 CSPL。
- 22
- 程序自动安装控制程序返回的模型未定义到 CICS,或者未启用。
- 23
- 程序自动安装控制程序返回了无效数据。
- 24
- 由于自动安装返回了无效的程序名或定义,因此为程序定义失败。
缺省操作: 异常终止任务。
示例
以下示例显示如何请求将控制权转移到名为 PROG2: 的应用程序:
EXEC CICS XCTL PROGRAM('PROG2')