禁用程序
终止或者修改用户出口的调用。
描述
DISABLE PROGRAM 命令会更改全局或与任务相关的用户出口的状态,从而逆转 ENABLE PROGRAM 命令中相应选项的影响。
您可以使用它来执行以下操作:
- 除去调用特定出口的点
- 使出口不可用于执行 (而不除去其作为出口的状态)
- 将其定义作为出口完全删除。
DISABLE PROGRAM 命令上的选项对应于 ENABLE 命令上的选项:
- ENTRYNAME 和 PROGRAM 标识要禁用的出口,并且您必须使用在定义该出口的 ENABLE 命令中执行的值的完全相同的组合。
- EXIT , FORMATEDF , SHUTDOWN 和 TASKSTART 逆转了同名选项对 ENABLE PROGRAM的影响; 即,它们在指定的点关闭对出口的调用。
- STOP 会逆转 START 的影响,使出口无法执行。
- EXITALL 将完全删除定义,从而逆转创建出口的 ENABLE PROGRAM 的效果。 还可以删除与出口关联的工作区和装入模块。
有关 CICS® 出口的编程信息,请参阅 全局用户出口程序 和 任务相关的用户出口程序; 您还应该在 出口相关命令中看到修改出口的命令的常规讨论。
注: 全局用户出口需要 STOP , EXIT 和 EXITALL 中的一个或多个,任务相关用户出口需要 STOP , EXITALL , TASKSTART , SHUTDOWN 和 FORMATEDF 中的一个或多个。
选项
- ENTRYNAME (data-value)
- 指定要更改其状态的全局用户出口或与任务相关的用户出口的名称。 如果省略 ENTRYNAME ,那么 CICS 假定出口的名称与 PROGRAM 选项中给定的装入模块名称相同。 因此,必须在 DISABLE 命令上使用与在定义了出口的初始 ENABLE 命令上指定的相同的 ENTRYNAME 和 PROGRAM 值组合。
- EXIT (data-value) (仅全局用户出口)
- 指定要从中取消关联此出口程序的全局用户出口点的名称。 它会导致 CICS 在此时停止调用出口,但本身不会导致 CICS 从虚拟存储器中删除关联的装入模块,即使不再在任何出口点使用该模块也是如此。 出口点名称的长度为 8 个字符。
- 扩展 ITALL
- 使 CICS 废弃出口的定义。 对于全局用户出口, EXITALL 从当前调用该出口的 所有 出口点取消该出口的关联。 如果可能,将从虚拟存储器中删除关联的装入模块。
对于与任务相关的用户出口,如果相关联的装入模块未被另一个出口使用,并且未在定义该出口的 ENABLE 命令中指定 ENTRY 选项,那么将从虚拟存储器中删除该模块。 如果出口拥有全局工作区,那么只要没有其他出口共享该工作区,就会释放该工作区。
EXITALL 意味着 STOP ,因此出口变得不可用于执行。 对于与任务相关的用户出口,您必须避免请求此功能,直到使用该出口的所有任务都已结束为止; 在该点之前 EXITALL 的结果不可预测。 这意味着对于任务开始,任务结束和关闭调用,当将调用所有与任务相关的用户出口并且从当前 TRUE 为自身发出 DISABLE EXITALL 命令时,调用的 TRUE 数不可预测。 如果需要刷新出口,那么 TRUE 应使用 STOP 选项禁用自身,并调用单独的任务以使用 EXITALL 选项发出 DISABLE。
- FORMATEDF (仅与任务相关的用户出口)
- 指示不应调用出口来格式化 EDF 屏幕。 可以使用指定 FORMATEDF 的 ENABLE 命令在 EDF 点恢复调用。
- 程序 (data-value)
- 指定包含出口入口点的 装入模块 的 8 字符名称。 当未指定 ENTRYNAME 时,此名称也用作出口的名称; 请参阅 ENTRYNAME 选项。
- 可清除 (仅与任务相关的用户出口)
- 除去在与任务相关的用户出口中处于活动状态时从 CICS 等待中清除的能力。 可以使用指定 PURABLE 的 ENABLE 命令来开启此功能。
- SHUTDOWN (仅与任务相关的用户出口)
- 指示不应在 CICS 关闭时调用出口。 您可以使用指定 SHUTDOWN 的 ENABLE 命令在关闭时恢复调用。
- SPI (仅与任务相关的用户出口)
- 指定如果 INQUIRE EXITPROGRAM 命令指定 CONNECTST 和/或 QUALIFIER 选项,那么不再调用与任务相关的用户出口。
- 停止
- 指定将使出口不可用于执行,但将保持启用状态 (定义为出口)。 您可以使用指定 START 的 ENABLE 命令使出口再次可供执行。
调用已停止的任务相关用户出口时,调用代码将获取 AEY9 异常终止代码。 但是,全局用户出口没有相应的错误,因为 CICS 仅调用与出口点关联的出口,这些出口也可用于执行 (未停止)。
- TASKSTART (仅与任务相关的用户出口)
- 指示不应在每个任务的开始和结束时调用出口。 您可以使用指定 TASKSTART 的 ENABLE 命令恢复这些调用。
条件
- INVEXITREQ
- DISABLE 命令的 INVEXITREQ 条件由 EIBRCODE 的第一个字节中的 X'80 ' 指示。 可以通过检查 EIBRCODE 的第二个和第三个字节来确定错误的确切原因,这些字节可以具有以下列表中显示的值。
- X'808000 '
- 尚未向 CICS定义 PROGRAM 参数上指定的装入模块,或者装入模块不在装入库中,或者已禁用装入模块。 此外,将返回 RESP2 值 1。
- X'804000 '
- EXIT 的值不是有效的出口点。 此外,将返回 RESP2 值 2。
- X'800200 '
- 未将 PROGRAM 值所标识的出口定义为出口。 此外,将返回 RESP2 值 7。
- X'800100 '
- ENTRYNAME 标识的出口未定义为出口。 此外,将返回 RESP2 值 8。
- X'800080 '
- 出口当前由另一个任务调用 (请参阅注释)。 此外,将返回 RESP2 值 9。
注: 第二个和第三个字节中的 X'0080 ' 可能出现 INVEXITREQ 条件:- 如果在使用出口的任务由于出口中的 CICS 服务请求而临时暂挂时发出 DISABLE 请求。 此条件的正常操作是重试 DISABLE 请求。
- 如果在另一任务正在使用出口但在另一任务控制块 (TCB) 下运行时发出 DISABLE 请求。 此条件的正常操作是重试 DISABLE 请求。
- 当指定了带有 EXITALL 或 EXIT 的 DISABLE 请求,但出口已异常终止时。 在这种情况下,关联装入模块的使用计数仍大于零。 无法将出口与任何出口点取消关联,并且无法从虚拟存储器中删除装入模块。 但是,可以通过发出 DISABLE STOP 命令使出口不可用于执行。
- NOTAUTH
- RESP2 值:
- 100
- 未授权与发出任务关联的用户使用此命令。
- 101
- 未授权与发出任务关联的用户以此命令所需的方式访问此特定资源。
示例
- 以下示例使出口 EP2 不可执行。 但是,它不会将其与与其关联的出口点取消关联,也不会将其定义删除为出口。 可通过发出 ENABLE PROGRAM ('EP2') START 命令使其再次可用。
EXEC CICS DISABLE PROGRAM('EP2') STOP - 以下示例阻止在出口点 XTDREQ 上调用全局用户出口 ZX。 但是,仍定义了 ZX ,如果它与其他出口点相关联,那么仍会在它们处调用 ZX。
EXEC CICS DISABLE ENTRYNAME ('ZX') PROGRAM('EP3') EXIT('XTDREQ') - 以下示例将取消 EP3 与请求调用的所有点 (出口点 (对于全局用户出口); 任务启动和关闭等 (对于与任务相关的用户出口)) 的关联,并废弃出口的定义。 如果装入模块 EP3 未在使用中,那么会将其删除。
EXEC CICS DISABLE PROGRAM('EP3') EXITALL
