GET COUNTER 和 GET DCOUNTER
从指定池中的指定计数器获取下一个数字。 针对全字带符号计数器使用 COUNTER,针对双字无符号计数器使用 DCOUNTER。
语法
条件: BUSY, INVREQ , REGERR 和消零
此命令是线程安全的。
条件:忙、INVREQ、LENGERR、SUPPRESSED
此命令是线程安全的。
NOHANDLE、RESP 和 RESP2是常用选项,可添加到所有 EXEC CICS 命令中以处理错误条件。 命令语法图和选项说明中没有明确包含这些选项。 有关这些常用选项和 EXEC CICS 命令语法的信息,请参阅 EXEC CICS 命令格式和编程注意事项.
描述
这些计数器命令从指定的计数器服务器获取指定池中的指定计数器的当前数字,并按缺省值或按指定的增量更新当前数字。 缺省增量为 1。
仅当 COMPAREMAX 和 COMPAREMIN 选项位于指定范围内或者高于或低于指定值时,才能使用这些选项来获取数字。
有关在这些命名计数器命令中指定全字和双字变量的信息,请参阅 EXEC CICS 命令参数值。
选项
- COMPAREMAX (data-value)
- 指定要与指定计数器的当前值进行比较的值作为全字带符号二进制值 (或 DCOUNTER 的双字无符号二进制值) ,并使 GET 命令的结果以比较为条件:
- 如果要分配的当前值小于或等于 COMPAREMAX 参数上指定的值,那么将返回当前值,并且响应正常。
- 如果当前值大于指定值,那么 CICS 会返回异常条件。
通常, COMPAREMAX 值大于 COMPAREMIN 值,并且当前值必须同时满足这两个比较 (即,必须介于这两个值之间或者等于其中一个值)。
可以指定小于 COMPAREMIN 值的 COMPAREMAX 值。 在此情况下,如果当前值满足 COMPAREMIN 或 COMPAREMAX 比较,那么会将其视为在范围内。
- COMPAREMIN (data-value)
- 指定要与指定计数器的当前值进行比较的值作为全字带符号二进制值 (或 DCOUNTER 的双字无符号二进制值) ,并使 GET 命令的结果以比较为条件:
- 如果要分配的当前值等于或大于 COMPAREMIN 参数上指定的值,那么将返回当前值,并且响应正常。
- 如果当前值小于指定值,那么 CICS 将返回异常条件。
注: 您可以指定大于 COMPAREMAX 值的 COMPAREMIN 值。 请参阅 COMPAREMAX 参数以了解此操作的效果。 - COUNTER (name)
- 指定全字计数器名称字段的 16 字节名称。 该名称可以包含大写字母,数字或下划线字符 (包括符号 $, # 和 @) ,并填充了 16 个带有结尾空格的字节。 请注意,名称不能以数字或下划线开头。 建议该名称应以应用程序独有的系统前缀开头。 CICS 本身使用的任何计数器都使用前缀 DFH。
- DCOUNTER (名称)
- 指定双字计数器名称字段的 16 字节名称。 该名称可以包含大写字母,数字或下划线字符 (包括符号 $, # 和 @) ,并填充了 16 个带有结尾空格的字节。 请注意,名称不能以数字或下划线开头。 建议该名称应以应用程序独有的系统前缀开头。 CICS 本身使用的任何计数器都使用前缀 DFH。
- INCREMENT (data-value)
- 以全字带符号二进制值 (或 DCOUNTER 的双字无符号二进制值) 的形式指定要更新指定计数器的增量,而不是缺省值 1。 在分配当前数字后,计数器将递增。
指定增量以覆盖缺省增量 1 使应用程序能够为每个调用独占地使用多个数字。 例如,要获取 20 个数字的块的独占使用,请指定 INCREMENT (20)。
请参阅 REDUCE 和 WRAP 选项的描述,以了解在计数器处于最大值或接近最大值时指定增量的效果。
- 无暂挂
- 指定在耦合设施结构重建期间立即返回到应用程序。 如果省略 NOSUSPEND 参数,那么将重试该请求,直到成功为止。 如果指定 NOSUSPEND ,那么请求将立即失败,并且 CICS 将返回 BUSY , RESP2=500。
- 池 (poolname)
- 指定要用作池选择参数的 8 字符字符串,以选择指定计数器所在的池。 字符串可以是逻辑池名称,也可以是实际池名称。
池选择器字符串的有效字符为 A 到 Z , 0 到 9 , $@ # 和 _ (下划线)。 如果 name 是包含少于 8 个字符的名称的变量,那么必须使用尾部空格来填充该名称。
该参数是可选的。 如果省略池的名称,那么将假定池选择器值为 8 空白。
如果 DFHNCOPT 选项表中没有匹配的条目,那么 CICS 将使用 NCPLDFT 系统初始化参数上指定的名称,该参数指定缺省指定的计数器池。
有关使用 DFHNCO 宏生成指定计数器选项表的信息,请参阅 命名计数器服务器。
- 减少
- 指定如果要分配的剩余数字范围太小,那么您希望指定的计数器服务器减少指定的增量。
如果当前值与最大值加 1 之间的差值小于指定的增量,那么数字范围太小,在这种情况下:
- 如果指定 REDUCE ,那么将减小 INCREMENT 参数值,并且 GET 请求成功。 在这种情况下, GET 命令保留的数字范围小于 INCREMENT 参数指定的数字范围,并且将当前值更新为最大值加 1。
- 如果未指定 REDUCE 选项,那么结果取决于是否指定 WRAP 选项。 如果同时省略了 REDUCE 和 WRAP 选项,那么请求将失败并返回计数器-at-limit 错误 (消零, RESP2=101) ,但不会更改当前数字。 例如,如果当当前数目为 199 990 且计数器最大数目定义为 199 999 时,请求指定 INCREMENT 参数值为 15 ,那么 GET 命令将失败,因为按指定的增量更新计数器将导致当前数目超过 20 万。
- 值 (数据区)
- 指定 CICS 返回从指定池的指定计数器服务器获取的当前数字的数据区 (全字带符号数据区用于 COUNTER ,双字无符号数据区用于 DCOUNTER)。
- WRAP
- 指定您希望指定的计数器服务器在处于计数器限制条件时自动倒带指定的计数器,从而避免否则会产生的错误情况。如果指定的计数器处于计数器 at-limit 条件中,或者不使用 REDUCE 选项指定的增量将导致计数器 at-limit 条件,那么计数器服务器的作用如下所示:
- 它会将指定计数器的当前值重置为等于为计数器定义的最小值。
- 它将新的当前值返回给应用程序,带有 DFHRESP (NORMAL)。
- 它通过为下一个请求准备的所需增量来更新当前值。
如果省略了 WRAP 选项,并且达到了 counter-at-limit 条件,那么 CICS 将返回消零, RESP2=101。
条件
- 128 个忙碌
- RESP2 值:
- 500
- 在命令上指定了 NOSUSPEND 选项,并且在重建期间耦合设施结构当前不可用。
缺省操作: 异常终止任务。
- 16 INVREQ
- RESP2 值:
- 201
- 找不到指定的计数器。
- 301
- 服务器报告了指定计数器接口无法理解的错误代码。 通常,除非接口装入模块 DFHNCIF 处于比服务器本身更低的维护或发行版级别,否则无法执行此操作。
- 303
- 用于访问耦合设施的宏上发生了意外错误,例如结构故障或连接丢失。 更多信息在应用程序作业日志中的消息 DFHNC0441 中。
- 304
- 无法使用当前选项表将程序中指定的池选择参数解析为有效的服务器名称。
- 305
- 接口无法与所选指定计数器池的服务器建立连接。 更多信息在应用程序作业日志中的 AXM 服务消息 (AXMSCnnnn) 中。
- 306
- 在服务器处理请求期间发生异常终止。 更多信息在应用程序作业记录和服务器作业记录中的消息中。
- 308
- 无法装入解析池名称所需的 DFHNCOPT 选项表模块。
- 309
- 在处理选项表期间,指定的计数器接口迂到未知的条目格式。 未正确生成选项表,或者 DFHNCIF 接口装入模块与选项表的发行版级别不同。
- 310
- 与给定池名称匹配的选项表条目指定了用户出口程序,但用户出口程序未与选项表进行链接编辑,因此无法装入。
- 311
- 指定计数器服务器对客户机区域接口模块 DFHNCIF 的响应指示正在进行系统管理的重建,但 EXEC CICS 接口无法识别该情况。 这意味着 CICS 区域位于 CICS TS 2.1 或更低版本。
- 403
- POOL 参数包含无效字符或嵌入的空格。
- 404
- COUNTER 参数包含无效字符或嵌入的空格。
- 406
- INCREMENT 值无效。 指定的值不能大于计数器的总范围 ((最大值-最小值) + 1)。
缺省操作: 异常终止任务。
- 22 LENGERR
- LENGERR 仅适用于 COUNTER 命令,不适用于 DCOUNTER 请求。 当由 DCOUNTER 命令或 CALL 接口定义的计数器的值过大而无法正确表示为全字带符号二进制值 (即,计数器使用超过 31 位) 时,会发生此情况。
在这三种溢出情况中的每种情况下,指定的计数器服务器都会完成操作,并向 CICS返回警告响应, CICS 会将该响应作为 RESP2 值返回到应用程序。 数据区包含从指定计数器服务器返回的低阶 32 位,这可能是负数。
RESP2 值:- 001
- 服务器尝试在 VALUE 数据区中返回的当前值已溢出到高阶 (符号) 位 (即返回的值为负数)。
- 002
- 对于仅 1 位的全字数据区,当前值太大。 在这种情况下,溢出值正好是 1。
- 003
- 对于值大于 1 的全字数据区,当前值太大。
缺省操作: 异常终止任务。
- 72 已禁止
- RESP2 值:
- 101
- 已分配指定计数器的最大值,并且计数器处于 "counter-at-limit" 条件中。 在通过 REWIND 命令或通过在 GET 命令上指定 WRAP 选项重置指定计数器之前,不能再分配更多计数器号。
- 103
- 下列其中一项:
- 指定的计数器的当前值不在 COMPAREMAX 和 COMPAREMIN 参数指定的范围内 (如果同时指定了这两个参数)
- 当仅指定一个选项时,指定计数器的当前值大于 COMPAREMAX 参数或小于 COMPAREMIN 参数。
缺省操作: 异常终止任务。
