ACQUIRE
从包含 BTS 活动的过程外获取对该活动的访问权。
语法
条件: ACTIVITYBUSY , ACTIVITYERR , INVREQ , IOERR , LOCKED , NOTAUTH , PROCESSBUSY 和 PROCESSERR
NOHANDLE、RESP 和 RESP2是常用选项,可添加到所有 EXEC CICS 命令中以处理错误条件。 命令语法图和选项说明中没有明确包含这些选项。 有关这些常用选项和 EXEC CICS 命令语法的信息,请参阅 EXEC CICS 命令格式和编程注意事项.
描述
ACQUIRE 使在特定 BTS 进程外执行的程序能够访问该进程内的活动。 它允许程序执行以下操作:
- 读写活动的数据容器。
- 针对活动(如果获取的活动是根活动,则针对进程)发出各种命令,如 RUN 和 LINK。
程序使用 GET 命令获取对其的访问权的活动称为 获取的活动。 一个程序只能获取每个工作单元的一个活动。 活动将保持已获取状态,直到下一个同步点为止。
ACQUIRE ACTIVITYID 获取指定的后代(非根)活动。
ACQUIRE PROCESS 获取指定进程的根活动。
注: 当程序定义流程时,会自动授予其对该流程的根活动的访问权。 (这使定义程序能够在运行流程之前访问流程容器和根活动容器。) 当程序通过 DEFINE PROCESS 或 GET PROCESS 命令获取对根活动的访问权时,该进程称为 已获取的进程。
规则
- 一个程序只能获取同一工作单元中的一个活动。 活动将保持已获取状态,直到下一个同步点为止。 例如,这意味着程序:
- 不能在同一工作单元中同时发出 DEFINE PROCESS 和获取 PROCESS 命令。
- 不能在同一工作单元中同时发出获取进程和获取 ACTIVITYID 命令。 即,它可以获取 后代活动或根活动,而不是每个活动的一个。
- 如果程序正在作为活动的激活执行,那么它不能:
- 在与自身相同的流程中获取活动。 例如,它不能对当前进程发出获取 PROCESS。
- 使用 LINK 命令来激活它所获取的活动。
- 获取的活动的流程可访问的方式与活动本身可访问的方式相同。 因此,如果获取的活动是后代活动:
- 可以读取但不更新其进程的容器。
- 进程不能是直接处理进程或其根活动的任何命令 (例如 RUN , LINK , SUSPEND , RESUME 或 RESET) 的主题。
- 可以读取和更新其进程的容器。
- 该进程可以是诸如 RUN , LINK , SUSPEND , RESUME 或 RESET 之类的命令的主题。 命令上的 ACQPROCESS 关键字将主题进程标识为发出在当前工作单元中获取的命令的程序的进程。
选项
- ACTIVITYID (数据值)
- 此选项指定要获取的后代活动的标识 (1-52 个字符)。
- PROCESS (数据值)
- 此选项指定要获取其根活动的进程的名称 (1-36 个字符)。
- PROCESSTYPE (数据值)
- 此选项指定要获取其根活动的进程的进程类型 (1-8 个字符)。
条件
- 107 活动繁忙
- RESP2 值:
- 19
- 请求超时。 可能是已阻止另一个使用此活动记录的任务结束。
- 109 个 ACTIVITYERR
- RESP2 值:
- 8
- 找不到 ACTIVITYID 选项所引用的活动。
- 16 INVREQ
- RESP2 值:
- 22
- 发出获取命令的工作单元已获取活动; 工作单元只能获取一个活动。
- 17 IOERR
- RESP2 值:
- 29 日
- 存储库文件不可用。
- 30
- 存储库文件上发生输入/输出错误。
- 100 个已锁定
- 无法执行请求,因为针对存储库文件上的相关记录存在保留锁定。
- 70 NOTAUTH
- RESP2 值:
- 101
- 与发出任务关联的用户无权访问与存储进程详细信息的 BTS 存储库数据集关联的文件。
- 106 进程忙
- RESP2 值:
- 13
- 请求超时。 可能是另一个使用此进程记录的任务已被阻止结束。
- 108 进程
- RESP2 值:
- 5
- 找不到 PROCESS 选项中指定的进程。
- 9
- 找不到 PROCESSTYPE 选项中指定的进程类型。
用法示例
购置 ACTIVITYID 可用于实现与用户相关的活动。 例如,在第一次激活时,活动可能:
- 定义用于表示特定用户交互的输入事件。
- 发出 ASSIGN 命令以获取其自己的 activity-instance 的标识。
- 将输入事件和活动标识保存在数据库上。
- 返回而不完成。
稍后,当用户准备好处理活动所表示的工作时,该用户将启动事务。 在 BTS 进程外部执行的此事务:
- 从数据库检索输入事件和活动标识。
- 使用获取 ACTIVITYID 命令来获取对活动的访问权。
- 将完成活动所需的信息放在输入数据容器中,然后运行该活动。 RUN 命令的 INPUTEVENT 选项告知活动被激活的原因。
获取 PROCESS 可用于实现客户机/服务器处理。 例如,客户机程序可以使用 DEFINE PROCESS 和 RUN 命令来创建和运行服务器进程,该进程执行某些工作,定义一个或多个输入事件以及返回而不完成。 客户机发出同步点或返回。 要再次运行同一服务器进程,客户机将使用获取 PROCESS 和 RUN 命令。
