
CICS 的 Liberty 服务器事务:BBOC、BBO$ 和 BBO#
在 CICS® 产品中,BBOC、BBO$ 和 BBO# 事务支持 WebSphere® 优化本地适配器 (WOLA)。
优化本地适配器在 CICS 区域中作为资源管理器来运行。在 CICS 中,任务相关用户出口 (TRUE) 是资源提供者使用的主要工具。TRUE 支持界定了 CICS 应用程序线程与外部资源管理器线程之间的界限。目前,DB2®、WebSphere MQ 和 TCPIP 套接字在使用 TRUE 支持的 CICS 中运行。
- 应用程序运行所提供的存根例程。
- 这些存根例程启动 CICS 资源管理器接口模块,向该模块传递优化本地适配器 TRUE 例程的名称 BBOATRUE 以及特定于每个 API 的参数。
- CICS 在其中一个 OPENAPI 任务控制块 (TCB) 上分派 TRUE 并运行,直到完成 API 调用为止。
- 调用将通过输出参数将值返回到 CICS。
CICS 的控制事务:BBOC
BBOC 事务是用于在 CICS 中提供适配器支持的 WebSphere 控制或操作事务。可以使用事务来启用和启动 Liberty 服务器 TRUE 以及设置跟踪级别,以调试 API 以及与 Liberty 服务器交互的代码。BBOC 还设置注册和注销,并且在 CICS 中启动和停止链接服务器任务。这些服务器任务支持启动现有 CICS 程序,并支持通过适配器传递数据(通过使用 COMMAREA 对象)或容器(通过使用输入参数)。BBOC 是一个基于 CICS 工作站的事务,可以在 3270 工作站上运行此事务,或者从顺序工作站或 SDSCI 类型的工作站运行此事务。
BBOC 事务的语法为 BBOC operation_name parameters,其中,多个参数之间由一个或多个空格分隔。
- RGN
- 12 个字符的注册名称
- DGN
- 要加入的 WOLA 组的第一个八字符名称
- NDN
- 要加入的 WOLA 组的第二个八字符名称
- SVN
- 要加入的 WOLA 组的第三个八字符名称
- LSYNC
- LSYNC 可控制 CICS 在链接到目标程序时是否传递 SYNCONRETURN 选项。如果您指定 LSYNC=Y,那么 CICS 链接服务器会对 EXEC CICS LINK 命令传递 SYNCONRETURN 选项。当目标程序位于另一个 CICS 区域时,您可能需要指定此选项。缺省值为 LSYNC=N。
- SVC
- 最多为 8 个字符的服务名称。该参数支持使用星号 (*) 进行屏蔽;例如,您可以指定 *、abc*、*abc、abc*xyz 和 abc*xy*z 等等。
- MNC
- 最小连接数。最小值为 0,缺省值为 1。
- MXC
- 最大连接数。最大值为 9999,缺省值为 10。
- SEC
- SEC 参数控制将传播哪个用户标识。缺省值为 SEC=N。
如果您指定 SEC=N,并且正在从 CICS 调用 Liberty 服务器,那么将传播 CICS 区域用户标识。如果您指定 SEC=N,并且正在链接服务器任务 (BBO$) 下从 Liberty 服务器调用 CICS,那么将以已启动链接服务器的用户标识来运行链接任务。
如果您指定 SEC=Y,并且正在从 CICS 调用 Liberty 服务器,那么会将任务级别的用户标识传播到 Liberty 服务器。如果您指定 SEC=Y,并且正在从 Liberty 服务器调用 CICS,那么链接服务器将尝试以 Liberty 服务器中已传播的用户标识来启动链接任务 (BBO#)。仅当您创建了系统授权工具 (SAF) SURROGAT 类定义,以允许链接服务器的用户标识发出 EXEC CICS START TRAN('BBO#') USERID(<propagated_id>) 命令时,传播才起作用。
- STX
- 要使用的链接服务器 CICS 事务标识的四字符名称。缺省值为 BBO$。
注: 如果您定义一个与缺省值不同的事务名称,那么还必须使用与 BBO$ 相同的程序名称和属性在主要 CICS 系统定义 (CSD) 文件 DFHCSD 中定义事务。
- LTX
- 要使用的链接到程序 CICS 事务标识的四字符名称。缺省值为 BBO#。
注: 如果您定义一个与缺省值不同的事务名称,那么还必须使用与 BBO# 相同的程序名称和属性在主要 CICS 系统定义 (CSD) 文件 DFHCSD 中定义事务。
- TRC
- 为此参数定义值将在下列级别启用跟踪:
- 当设置为 0 时:不跟踪;仅提供错误消息
- 当设置为 1 时:基本跟踪
- 当设置为 2 时:详细跟踪
- TDQ
- 将适配器消息写入的 CICS 额外分区瞬时数据队列 (TDQ) 的四字符名称。如果您未指定此参数,那么缺省值为 BBOQ 和 DD BBOUT。如果无法将消息写入到所指定的 TDQ,那么会将它们写入 CICS 区域标准输出 tdq CESO dd CEEOUT。
- REU
- REU 可控制链接服务器是否在程序调用请求之间复用程序链接调用任务(BBO# 事务)。
缺省值为否。要点: 如果您在 SEC=N 和 REU=Y 情况下运行链接服务器,那么优化本地适配器 JCA 将不再支持传递单独的链接事务标识。单独的事务标识的请求将在应用程序中导致 ResourceException。如果您尝试在 SEC=Y 和 REU=Y 情况下运行链接服务器,那么将强制使复用选项为 No,这是因为链接服务器必须对每个请求启动新的程序链接任务并且断言已传播的身份。
- REUC
- CICS 链接任务 (BBO#) 保持活动状态并且已复用的请求的数量。达到此计数时,链接任务就会结束。最大值为 2147483648。
要点: 对于事务方案,链接任务将在达到计数之后结束,将从 Liberty 服务器中接收下一个落实。
- REUT
- CICS 链接任务 (BBO#) 保持活动状态并且已复用的秒数。当此时间间隔到期时,在接收到下一个请求并进行处理之后,该链接任务将结束。最大值为 2147483648。
要点: 对于事务方案,链接任务将在达到所请求的时间之后结束,将从 Liberty 服务器中接收下一个落实。
RETRY
指示启动服务器或注册请求无法与请求的目标服务器连接时应该重试。未指定 RETCNT 和 RETINT 时,缺省重试次数为 10,缺省重试时间间隔为 30 秒。
RETCNT
提供了 RETRY=Y 时,RETCNT 指示失败后不再尝试请求之前重试命令的次数。最小值为 1,最大值为 99999999。值 0 表示最大值。如果未提供值且提供了 RETRY=Y 选项,那么缺省重试次数为 10。
RETINT
提供了 RETRY=Y 时,RETINT 指示重试时间间隔(秒)。最小值为 1,最大值为 359000。值 0 表示最大值。如果未提供值且提供了 RETRY=Y 选项,那么缺省重试时间间隔为 30 秒。
RTXP
RTXP=(Y|N) 指示链接调用任务 (BBO#) 执行的 EXEC CICS LINK PROGRAM() 应该包含 TRANSID() 选项。不带 RTX(远程事务)参数提供此项时,会将当前 EIBTRNID 值放置在 TRANSID() 参数中。
RTX
RTX 与 RTXP 参数配合使用时,指示链接调用任务 (BBO#) 执行的 EXEC CICS LINK PROGRAM() 应该包含 TRANSID() 选项。此选项的值来自 RTX 参数。未传递此项且提供了 RTXP=Y 时,会在 TRANSID() 参数中使用当前 EIBTRNID 值。
- TXN
- TXN 描述 BBOC 事务所生成的注册的事务性行为。此选项仅受到 WebSphere 传统版服务器实例的注册的支持。
如果 BBOC 使用 REGISTER 操作创建了一个 WOLA 注册,那么 TXN=Y 表示使用此注册在 WebSphere Application Server 中启动的任何 Java 平台企业修订版应用程序都会加入当前 CICS 工作单元。 TXN=Y 时,会在 CICS 和 WebSphere Application Server 之间创建全局事务,这可在 CICS 应用程序发出 EXEC CICS SYNCPOINT 时或者暗示某个同步点时(例如,CICS 任务结束时)通过使用两阶段落实协议完成。
当 BBOC 用于通过使用 START_SRVR 函数来创建链接服务器时,TXN=Y 表示在启动服务时 CICS 链接服务器任务加入当前 WebSphere Application Server 事务。例如,如果 Java 平台企业修订版应用程序启动资源管理器局部事务 (RMLT) 并通过使用优化的本地适配器 JCA 连接器来启动 CICS 程序,那么链接任务会加入该局部事务,然后启动目标 CICS 程序。在 Java 平台企业修订版应用程序使用落实或回滚 API 完成 RMLT 后,在 CICS 程序中进行的更新才会落实或回退。
操作名称 | 缩写 | 描述 | 参数 |
---|---|---|---|
START_TRUE | STR | 启动 Liberty 服务器 TRUE | TRC=<0|1|2>
TDQ=<tdqname> |
STOP_TRUE | PTR | 停止 Liberty 服务器 TRUE | TRC=<0|1|2> TDQ=<tdqname> |
REGISTER | REG | 向 Liberty 服务器 WOLA 组注册 | RGN=<name> DGN=<name> NDN=<name> SVN=<name> MNC=<minimum_number_ of_connections> MXC=<maximum_number_ of_connections> SEC=<Y|N> TRC=<0|1|2> TDQ=<tdqname>
TXN=<Y|N> |
UNREGISTER | 向 Liberty 服务器优化本地适配器注销 | RGN=<name> | |
START_SRVR | STA | 对所传递的注册名称启动 Liberty 服务器任务。 | RGN=<name> DGN=<name> NDN=<name> SVC=<name> SVN=<name> MNC=<minimum_number_ of_connections> MXC=<maximum_number_ of_connections> SEC=<Y|N> STX=<CICS_link_server_ transaction_ID> LTX=<CICS_link_server_ transaction_ID> TRC=<0|1|2> TDQ=<tdqname> REU=<Y|N> REUC=<number_of_requests> REUT=<number_of_seconds>
TXN=<Y|N> |
STOP_SRVR | STP | 对注册名称停止 Liberty 服务器任务。 | RGN=<name> TRC=<0|1|2> TDQ=<tdqname> |
![]() |
DOC | DOCTEMPLATE (DOC) 指示应该从 CICS 文档模板源读取命令字符串(BBOC 命令和所有自变量)。指定 BBOC DOC NAME=<template_name> 指示整个请求位于具有提供的名称的文档模板的一行中。请参阅 CICS 文档,以获取有关定义文档模板的信息。这可从 CICS 区域的文件系统中数据集、数据集成员和文件读取长命令字符串(最多可读取 500 个字符)。不支持在文档模板源文件中指定 BBOC DOC NAME=<> 请求。 | NAME=<CICS_document_template_name>TRC=<0|1|2> |
样本 BBOC 命令
- 启动适配器 CICS TRUE
程序。
bboc start_true
- 停止适配器 CICS TRUE 程序。
bboc stop_true
- 在具有名称 LIB1、LIB2 和 LIB3 的 WOLA 组中以名称 CICS-HR1 进行注册,最大连接数为 10,最小连接数为 5,还要进行安全传播。
bboc register rgn=CICS-HR1 dgn=LIB1 ndn=LIB2 svn=LIB3 mnc=5 mxc=10 sec=y
- 注销名称 CICS-HR1。
bboc unregister rgn=CICS-HR1
- 对于所有服务名称和程序名称,启动一项 BBO$ 服务器事务,该事务在 WOLA 组中使用注册名称 CICSPAYR,最大连接数为 10,最小连接数为 5,还要进行安全传播。
bboc start_srvr rgn=CICSPAYR dgn=LIB1 ndn=LIB2 svn=LIB3 mnc=5 mxc=10 sec=y
- 停止正在以注册名称 CICSPAYR 运行的 BBO$ 服务器事务。
bboc stop_srvr rgn=CICSPAYR
- 对于以 PAYR 开头的服务名称和程序名称,启动一项 BBO$ 服务器事务,该事务在 WOLA 组中使用注册名称 CICSPAY1,最大连接数为 10,最小连接数为 5,还要进行安全传播。
bboc start_srvr rgn=CICSPAY1 dgn=LIB1 ndn=LIB2 svn=LIB3 mnc=5 mxc=10 sec=y svc=PAYR*
- 对于所有服务名称和程序名称,以事务标识 PAY2 启动一项服务器事务,并以名称 PAYROLL2 在 WOLA 组中注册该事务,最大连接数为 10,最小连接数为 5,进行基本跟踪,还要进行安全传播。
bboc start_srvr rgn=PAYROLL2 dgn=LIB1 ndn=LIB2 svn=LIB3 mnc=5 mxc=10 sec=y stx=PAY2 trc=1
- 开始事务标识 PAY3,链接事务标识为 PY3L 下的服务器事务。对于以 PAYRL3 开头的服务名称和程序名称,以名称 PAYROLL3 在 WOLA 组中注册该事务,最大连接数为 10,最小连接数为 5,进行基本跟踪,还要进行安全传播。
bboc start_srvr rgn=PAYROLL3 dgn=LIB1 ndn=LIB2 svn=LIB3 mnc=5 mxc=10 sec=y svc=PAYRL3* stx=PAY3 ltx=PY3L trc=1
- 启动链接服务器事务,在此事务中,将从名为 LONGCMD
bboc doc name=LONGCMD 的 CICS 文档模板源读取所有参数
在 CICS 启动期间自动运行 BBOC 命令
- 要在 CICS 启动时启动优化本地适配器 TRUE,请在 CICS PLT 中添加 BBOACLPT 作为阶段 2 或阶段 3 的条目。
- 要在 CICS 启动时使用 INITPARM 数据发出 BBOC 命令,请在 CICS PLT 中添加 BBOACLP2 作为阶段 2 或阶段 3 的条目。
INITPARM=(BBOACPL2='STA RGN=PAYROLL DGN=LIB1 NDN=LIB2 SVN=LIB3 SVC=*')
INITPARM=(BBOACPL2='REG RGN=LIBAPP DGN=LIB1 NDN=LIB2 SVN=LIB3 MNC=10 MXC=100')
如果您在 CICS 启动时创建注册,请勿在应用程序中使用“注册”API。而是立即使用其他 API,例如,“调用”或者“连接获取”。
- 对所有 CICS 链接服务器运行 BBOC STOP_SERVER,或者对所有注册运行 BBOC URG。
- 清除 BBO$ 任务。
- 对于每个传递 STOP_SERVER 字符串的链接服务器,请编写程序列表 (PLT) 关闭程序,它对 BBOACNTL 运行 EXEC CICS LINK 命令。
- 请发出以下命令:CEMT P SHUT,IMMED
CICS 的链接服务器事务:BBO$
BBO$ CICS 事务支持从 Liberty 服务器调用 CICS。BBO$ 事务是一个非工作站事务,表示对某一注册名称和服务名称执行 BBOC START_SRVR 操作时启动的服务器任务的实例。此服务器任务提供了程序链接调用功能,也就是能够从 Liberty 服务器通过优化本地适配器 API 来启动现有 CICS 程序。您可以通过在 BBOC START_SRVR 命令上指定 STX=name 来覆盖事务的名称 BBO$。必须使用与 BBO$ 相同的程序名称和属性对 CICS 定义新事务名称。有关更多信息,请参阅用于 CICS 的优化本地适配器定义。
CICS 的程序链接调用事务:BBO#
BBO# CICS 事务支持从 Liberty 服务器调用 CICS。BBO# 事务是一个非工作站事务,表示链接服务器任务 BBO$ 开始调用程序链接的任务的实例。BBO$ 事务对来自 Liberty 服务器应用程序的每个 CICS 程序链接请求启动 BBO#。您可以通过在 BBOC START_SRVR 命令上指定 LTX=name 来覆盖事务的名称 BBO#。必须使用与 BBO# 相同的程序名称和属性对 CICS 定义新事务名称。有关更多信息,请参阅用于 CICS 的优化本地适配器定义。此外,Liberty 服务器应用程序可以使用 JCA setLinkTaskTransid 方法将新的事务名称传递到 CICS。