LINK ACTIVITY

同步执行 CICS® 业务事务服务活动,无需切换上下文。

语法

LINK ACTIVITY

读取语法图跳过可视语法图LINKACTIVITY( data-value)ACQACTIVITYINPUTEVENT( data-value)

条件: ACTIVITYBUSY , ACTIVITYERR , EVENTERR , INVREQ , IOERR , LOCKED , NOTAUTH 和 PGMIDERR

NOHANDLERESPRESP2是常用选项,可添加到所有 EXEC CICS 命令中以处理错误条件。 命令语法图和选项说明中没有明确包含这些选项。 有关这些常用选项和 EXEC CICS 命令语法的信息,请参阅 EXEC CICS 命令格式和编程注意事项.

描述

LINK ACTIVITY 与请求者同步执行 CICS 业务事务服务活动,而不进行上下文切换。 该活动必须先前已定义到 BTS。

LINK ACTIVITY 导致 BTS 调用活动并向其发送输入事件。 如果活动处于初始状态 (即,如果这是第一次运行活动,或者如果它已被 RESET ACTIVITY 命令重置) ,那么CICS 会向其发送 DFHINITIAL 系统事件。 如果活动未处于初始状态,那么必须在 INPUTEVENT 选项上指定输入事件。

营销计划可以链接到的唯一活动如下所示:
  • 如果它正在作为活动的激活运行,那么它自己的子活动。 它可以链接到同一工作单元中的多个子活动。
  • 它通过收购 ACTIVITYID 命令在当前工作单元中获取的活动。 (但是,请注意,如果程序正在作为活动的激活而运行,那么它必须使用 RUN (而不是 LINK) 命令来激活它所获取的活动。)

要检查来自活动的响应,必须使用 CHECK ACTIVITY 命令。 这是因为对激活活动的请求的响应不包含任何有关活动本身成功或失败的信息-仅包含有关激活活动的请求成功或失败的信息。 通常,在 LINK 命令之后立即发出 CHECK 命令。

无上下文切换

当 LINK ACTIVITY 命令激活活动时,将与请求者同步调用该活动,并且:
  • 在与请求者相同的工作单元中
  • 使用请求事务的事务属性 (TRANSID 和 USERID)。

换言之,不存在 context-switch。 要同步调用活动 上下文切换-即,在独立于请求事务的 UOW 中,并在其 DEFINE ACTIVITY 命令中指定了 TRANSID 和 USERID 属性,请使用 RUN ACTIVITY SYNCHRONOUS 命令。

注: 当以异步方式运行活动时,始终会发生上下文切换。

如果性能比故障隔离,可恢复性和安全性更重要,请使用 LINK ACTIVITY 而不是 RUN ACTIVITY SYNCHRONOUS。

选项

ACQACTIVITY
指定要运行的活动是当前工作单元通过添入 ACTIVITYID 命令获取的活动。
ACTIVITY (数据值)
指定要运行的活动的名称 (1-16 个字符)。 名称必须是当前活动的子代的名称。
INPUTEVENT (数据值)
指定导致连接活动的事件的名称 (1-16 个字符)。

如果活动处于初始状态,那么 不得 指定此选项; 即,如果这是第一次运行该活动,或者如果它已被 RESET ACTIVITY 命令重置。 在这种情况下, CICS 会将活动发送到 DFHINITIAL 系统事件。

如果活动未处于初始状态,那么 必须 指定此选项; 即,如果活动之前已激活,并且未被 RESET ACTIVITY 命令重置。

如果指定 INPUTEVENT ,那么要使 LINK 命令成功,要连接的活动必须已将指定事件定义为输入事件。

条件

107 活动繁忙
RESP2 值:
19
请求超时。 可能是已阻止另一个使用此活动记录的任务结束。
109 个 ACTIVITYERR
RESP2 值:
8
找不到 ACTIVITY 选项上指定的活动。
14
目标活动未处于处理指定事件选项的正确方式。 如果未指定 INPUTEVENT 选项,那么活动必须处于 INITIAL 方式。 如果指定了 INPUTEVENT 选项,那么活动必须处于 DORMANT 方式。
111 个 EVENTERR
RESP2 值:
7
INPUTEVENT 选项上指定的事件尚未由要作为输入事件运行的活动定义; 或者其触发状态为 FIRED。
16 INVREQ
RESP2 值:
4
ACTIVITY 选项用于命名子活动,但在当前活动的作用域之外发出了该命令。
21
活动已暂挂,因此无法同步运行。
24
使用了 ACQACTIVITY 选项,但发出任务未获取活动。
40
实现活动的程序是远程的。
44
已尝试对 Java™ 程序执行 LINK ,但已禁用 JVM 池。
45
已尝试对 Java 程序执行 LINK ,但找不到 JVM 概要文件。
46
已尝试对 Java 程序执行 LINK ,但 JVM 概要文件无效。
47
已尝试对 Java 程序执行 LINK ,但找不到系统属性文件。
48
已尝试对 Java 程序执行 LINK ,但找不到用户类。
49
共享类高速缓存为 STOPPED ,并且已禁用自动启动,因此无法执行请求使用共享类高速缓存的 Java 程序。
17 IOERR
RESP2 值:
29 日
存储库文件不可用。
30
在存储库文件上发生输入/输出错误。
100 个已锁定
无法执行请求,因为针对存储库文件上的相关记录存在保留锁定。
70 NOTAUTH
RESP2 值:
101
未授权与发出任务关联的用户运行该活动。
27 PGMID错误
RESP2 值:
1
程序没有已安装的资源定义,并且已关闭程序自动安装,或者程序自动安装用户程序指示不应自动安装该程序。
2
已禁用程序。
3
无法装入程序,因为:
  • 这是程序的第一次装入,程序装入失败,通常因为找不到装入模块。
  • 这是程序的后续装入,但第一次装入失败。

要重置负载状态,负载模块必须处于DFHRPL 或动态LIBRARY 连接中,并且需要SET PROGRAM NEWCOPY。

21
程序自动安装用户程序失败,因为程序自动安装用户程序不正确,未正确定义,或者由于程序自动安装用户程序中的异常终止。 已禁用程序自动安装,并将消息 DFHPG0202 或 DFHPG0203 写入 CSPL。
22
程序自动安装用户程序返回的模型未定义到 CICS,或者未启用。
23
程序自动安装用户程序返回了无效数据。
24
由于自动安装返回了无效的程序名或定义,因此为程序定义失败。