CNOS

CNOS (更改会话数) 谓词建立了 APPC LU 6.2 会话限制。

以下结构描述了 CNOS 谓词使用的谓词控制块。

语法

  
typedef struct cnos {  
    unsigned short  opcode;  
    unsigned char   reserv2[2];  
    unsigned short  primary_rc;  
    unsigned long   secondary_rc;  
    unsigned char   key[8];  
    unsigned char   lu_alias[8];  
    unsigned char   plu_alias[8];  
    unsigned char   fqplu_name[17];  
    unsigned char   reserv3;  
    unsigned char   mode_name[8];  
    unsigned int    mode_name_select:1;  
    unsigned int    set_negotiable:1;  
    unsigned int    reserv4:6;  
    unsigned int    reserv5:8;  
    unsigned short  plu_mode_sess_lim;  
    unsigned short  min_conwinners_source;  
    unsigned short  min_conwinners_target;  
    unsigned short  auto_act;  
    unsigned int    drain_target:1;  
    unsigned int    drain_source:1;  
    unsigned int    responsible:1;  
    unsigned int    reserv6:5;  
    unsigned int    reserv7:8;  
} CNOS;   

成员

opcode
提供的参数。 指定谓词操作代码,AP_CNOS。

reserv2
保留字段。

primary_rc
返回的参数。 指定在谓词完成时由 APPC 设置的主要返回代码。 有效的返回代码因发出的 APPC 谓词而异。 有关此谓词的有效错误代码,请参阅“返回代码”。

secondary_rc
返回的参数。 指定在谓词完成时由 APPC 设置的次要返回代码。 有效的返回代码因发出的 APPC 谓词而异。 有关此谓词的有效错误代码,请参阅“返回代码”。

key
提供的参数。 如果密钥锁功能已受到保护,则指定 ASCII 中的主密钥或服务密钥。

lu_alias
提供的参数。 提供本地用于 LU 的 8 字节 ASCII 名称。

plu_alias
提供的参数。 提供本地用于合作伙伴 LU 的 8 字节 ASCII 名称。

fqplu_name
提供的参数。 在本地节点 中未定义 任何plu_alias名称,并且伙伴 LU 位于其他节点时, (LU) 名称,请在 EBCDIC (类型 A) 中提供合作伙伴逻辑单元。

mode_name
提供的参数。 指定在AP_ONE mode_name_select值时要使用的 EBCDIC (类型 A) 模式名称。

mode_name_select
提供的参数。 指定程序为其设置或重置会话限制和争用方极性的模式名称。 允许的值是AP_ALL或AP_ONE。

set_negotiable
提供的参数。 指定 APPC 是否更改最大可协商会话限制的当前设置。 允许的值是AP_YES和AP_NO。

reserv4
6 位保留字段。

reserv5
8 位保留字段。

plu_mode_sess_lim
提供的参数。 指定 set_negotiable 值为 YES 时的会话限制。 允许的值为 0 到 32767。

min_conwinners_source
提供的参数。 指定 LU 保证为争用优胜者的会话数。 允许的值为 0 到 32767。

min_conwinners_target
提供的参数。 指定目标 LU 保证为争用优胜的最小会话数。 允许的值为 0 到 32767。

auto_act
提供的参数。 指定要自动激活 APPC 的本地 LU 争用方会话数。 允许的值为 0 到 32767。 在使用此参数之前,请参阅本主题的“备注”部分。

drain_target
提供的参数。 指定目标 LU 是否可以排空其等待 (出站) 分配请求。 允许的值是AP_YES和AP_NO。

drain_source
提供的参数。 指定源 LU 是否可以排空其等待 (出站) 分配请求。 允许的值是AP_YES和AP_NO。

负责
提供的参数。 指定哪个 LU 负责由于重置并行会话连接的会话限制而停用会话。 允许的值是AP_SOURCE和AP_TARGET。

reserv6
5 位保留字段。

reserv7
8 位保留字段。

返回代码

AP_OK
主要返回代码;谓词已成功执行。

AP_CNOS_ACCEPTED
辅助返回代码;APPC 接受指定的会话限制和责任。

AP_CNOS_NEGOTIATED
辅助返回代码;APPC 接受合作伙伴 LU 协商的会话限制和责任。 可协商的值包括:

plu_mode_session_limit

min_conwinners_source

min_conwinners_target

负责

drain_target

AP_ALLOCATION_ERROR
主返回代码;APPC 未能分配会话。 会话状态设置为 RESET。

可以通过 ALLOCATEMC_ALLOCATE 之后发出的谓词返回此代码。

AP_ALLOCATION_FAILURE_NO_RETRY
辅助返回代码;由于配置错误或会话协议错误等永久性条件,无法分配会话。 若要确定发生了哪种错误,系统管理员应检查错误日志文件。 请仅在更正错误之后才重试分配。

AP_ALLOCATION_FAILURE_RETRY
辅助返回代码;由于临时条件(如链接失败),无法分配会话。 失败的原因已记录在系统错误日志中。 重试分配。

AP_CNOS_LOCAL_RACE_REJECT
主返回代码;APPC 当前正在处理由本地 LU 发出的 CNOS 谓词。

AP_CNOS_PARTNER_LU_REJECT
主返回代码;合作伙伴 LU 拒绝了来自本地 LU 的 CNOS 请求。

AP_CNOS_MODE_CLOSED
辅助返回代码;本地 LU 无法协商非零会话限制,因为伙伴 LU 的本地最大会话限制为零。

AP_CNOS_MODE_NAME_REJECT
辅助返回代码;伙伴 LU 无法识别指定的模式名称。

AP_CNOS_COMMAND_RACE_REJECT
辅助返回代码;本地 LU 当前正在处理伙伴 LU 发出的 CNOS 谓词。

AP_COMM_SUBSYSTEM_ABENDED
主要返回代码;指示以下状况之一:

此对话使用的节点遇到了 ABEND。

事务程序 (TP) 与 PU 2.1 节点之间的连接已中断, (局域网错误) 。

TP 计算机上的 SnaBase 遇到 ABEND。

系统管理员应检查错误日志以确定发生 ABEND 的原因。

AP_COMM_SUBSYSTEM_NOT_LOADED
主要返回代码;处理谓词时无法加载或终止某个必需的组件。 因此无法通信。 请联系系统管理员以执行纠正措施。

AP_INVALID_KEY
主返回代码;提供的密钥不正确。

AP_INVALID_VERB_SEGMENT
主要返回代码;VCB 超出了数据段的末尾。

AP_PARAMETER_CHECK
主要返回代码;由于参数错误,谓词未执行。

AP_ALL_MODE_MUST_RESET
辅助返回代码;当 mode_name_select 参数指示AP_ALL时,APPC 不允许非零会话限制。

AP_AUTOACT_EXCEEDS_SESSLIM
辅助返回代码; 在 CNOS 谓词中, auto_act 的值大于 plu_mode_sess_lim 的值。

AP_BAD_LU_ALIAS
辅助返回代码;APPC 在定义的 lu_alias 中找不到指定的lu_alias。

AP_BAD_PARTNER_LU_ALIAS
辅助返回代码;APPC 无法识别提供的 plu_alias

AP_BAD_SNASVCMG_LIMITS
辅助返回代码;程序在提供mode_name时为plu_mode_sess_limmin_conwinners_sourcemin_conwinners_target指定了无效设置。

AP_CHANGE_SRC_DRAINS
辅助返回代码;APPC 不允许 mode_name_select (ONE) ,当 drain_source (NO) 当前在指定模式下生效时, drain_source (YES) 。

AP_CNOS_IMPLICIT_PARALLEL
辅助返回代码;当模板指定并行会话时,APPC 不允许程序更改隐式合作伙伴模板的 SNASVCMG 模式以外的模式的会话限制。 (之所以使用术语“模板”,是因为有许多实际值尚待填充。)

AP_CPSVCMG_MODE_NOT_ALLOWED
辅助返回代码;不能将名为 CPSVCMG 的模式指定为停用会话谓词上的 mode_name

AP_EXCEEDS_MAX_ALLOWED
辅助返回代码;程序发出 CNOS 谓词,指定 plu_mode_sess_lim 编号和 set_negotiable (AP_NO) 。

AP_MIN_GT_TOTAL
辅助返回代码; min_conwinners_sourcemin_conwinners_target 之和指定一个大于 plu_mode_sess_lim 的数字。

AP_MODE_CLOSED
辅助返回代码;本地 LU 无法协商非零会话限制,因为伙伴 LU 的本地最大会话限制为零。

AP_RESET_SNA_DRAINS
辅助返回代码;SNASVCMG 不支持排出参数值。

AP_SINGLE_NOT_SRC_RESP
辅助返回代码;对于单会话 CNOS 谓词,APPC 仅允许本地 (源) LU 负责停用会话。

AP_STACK_TOO_SMALL
主要返回代码;应用程序的堆栈大小太小,无法执行谓词。 增加应用程序的堆栈大小。

AP_STATE_CHECK
主要返回代码;谓词未执行,因为它是在无效状态下发出的。

AP_CANT_RAISE_LIMITS
辅助返回代码;除非当前限制为零,否则 APPC 不允许将会话限制设置为非零值。

AP_LU_DETACHED
辅助返回代码;在 CNOS 尝试指定 LU 之前,命令已重置本地 LU 的定义。

AP_SNASVCMG_RESET_NOT_ALLOWED
辅助返回代码;本地程序尝试为名为 SNASVCMG 的模式发出 CNOS 谓词,并将会话限制指定为零。

AP_UNEXPECTED_DOS_ERROR
主返回代码;操作系统在处理来自本地 TP 的 APPC 谓词时向 APPC 返回了错误。 已通过 secondary_rc 返回了操作系统返回代码。 此返回代码是以 Intel 字节交换顺序显示的。 如果问题持续出现,请咨询系统管理员。

备注

CNOS 仅通过别名标识 LU。 如果在域中多次使用相同的本地 LU 别名 (用于备份或其他目的) 并且该 LU 别名是通过 CNOS 指定的,则谓词可以流向与预期不同的 LU。

如果在程序发出第一个 APPC ALLOCATEMC_ALLOCATESEND_CONVERSATIONMC_SEND_CONVERSATION或通信通用编程接口 (CPI-C) 分配 给定合作伙伴 LU 和模式的调用之前,未发出 CNOS 来设置模式会话限制,则 APPC 将使用模式定义中的值在内部生成会话限制。

设置并行会话连接的限制时,两个 LU 协商模式会话限制、排出设置和责任值。 APPC 更新 CNOS 中的这些参数,以反映两个 LU 在协商期间同意的设置。 程序可以发出 DISPLAY 来获取模式会话限制的协商值。

设置单个会话的限制 (即两个 LU 不协商排出设置或责任值) 时,不会进行 CNOS 协商。 因此,通过在每个节点上定义单个会话模式,使用单会话连接在合作伙伴 LU 之间协调模式定义参数设置。

作为设置初始限制的一部分, CNOS 还会设置保证 (即争用胜者和争用-失败者会话的最小) 数,并为源 LU 争用胜者会话设置自动激活计数。 CNOS 的操作通常仅影响源 LU 和目标 LU 之间具有指定模式名称的会话组。 或者,一个 CNOS 可以重置合作伙伴 LU 的所有模式的会话限制。

APPC 强制实施新模式会话限制和争用胜者极性,直到一方或另一方通过发出后续 的 CNOS 谓词来更改它们。 无论哪个 LU 是目标 LU,CNOS 事务在目标 LU 的 API 上都是不可见的。 可以使用 DISPLAY 获取 CNOS 事务的结果。