MC_CONFIRMED
MC_CONFIRMED谓词响应合作伙伴交易计划 (TP) 的确认请求。 它会通知合作伙伴 TP 本地 TP 未在收到的数据中检测到错误。 由于发出确认请求的 TP 等待确认, 因此MC_CONFIRMED 同步两个TP 的处理。
以下结构描述了谓词控制块 (VCB) 由MC_CONFIRMED 谓词使用。
语法
struct mc_confirmed {
unsigned short opcode;
unsigned char opext;
unsigned char reserv2;
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned char tp_id[8];
unsigned long conv_id;
unsigned char rts_rcvd;
};
成员
opcode
提供的参数。 指定谓词操作代码,AP_M_CONFIRMED。
opext
提供的参数。 指定谓词操作扩展,AP_MAPPED_CONVERSATION。
reserv2
一个保留字段。
primary_rc
返回的参数。 指定在谓词完成时由 APPC 设置的主要返回代码。 有效的返回代码因发出的 APPC 谓词而异。 有关此谓词的有效错误代码,请参阅“返回代码”。
secondary_rc
返回的参数。 指定在谓词完成时由 APPC 设置的次要返回代码。 有效的返回代码因发出的 APPC 谓词而异。 有关此谓词的有效错误代码,请参阅“返回代码”。
tp_id
提供的参数。 标识本地 TP。 此参数的值由调用 TP 中的 TP_STARTED或调用的 TP 中的 RECEIVE_ALLOCATE 返回。
conv_id
提供的参数。 标识在两个TP 之间建立的会话。 此参数的值由调用 TP 中的 MC_ALLOCATE 或调用的 TP 中的 RECEIVE_ALLOCATE 返回。
rts_rcvd
返回的参数。 指示合作伙伴 TP 是否 MC_REQUEST_TO_SEND发出,这将请求本地 TP 将会话更改为 RECEIVE 状态。
若要更改为 RECEIVE 状态,本地 TP 可以使用 MC_PREPARE_TO_RECEIVE、 MC_RECEIVE_AND_WAIT 或 MC_RECEIVE_AND_POST。
返回代码
AP_OK
主要返回代码;谓词已成功执行。
AP_PARAMETER_CHECK
主要返回代码;由于参数错误,谓词未执行。
AP_BAD_CONV_ID
辅助返回代码; conv_id 的值与 APPC 分配的会话标识符不匹配。
AP_BAD_TP_ID
辅助返回代码; tp_id 的值与 APPC 分配的 TP 标识符不匹配。
AP_STATE_CHECK
主要返回代码;谓词未执行,因为它是在无效状态下发出的。
AP_CONFIRMED_BAD_STATE
辅助返回代码;会话不处于 CONFIRM、CONFIRM_SEND或CONFIRM_DEALLOCATE状态。
AP_COMM_SUBSYSTEM_ABENDED
主要返回代码;指示以下状况之一:
此对话使用的节点遇到了 ABEND。
TP 与 PU 2.1 节点之间的连接已断开(LAN 错误)。
TP 计算机上的 SnaBase 遇到了 ABEND。
系统管理员应检查错误日志以确定发生 ABEND 的原因。
AP_COMM_SUBSYSTEM_NOT_LOADED
主要返回代码;处理谓词时无法加载或终止某个必需的组件。 因此无法通信。 请联系系统管理员以执行纠正措施。AP_CONVERSATION_TYPE_MIXED
主返回代码;TP 已发出基本和映射对话谓词。 在单个会话中只能发出一种类型。AP_INVALID_VERB_SEGMENT
主要返回代码;VCB 超出了数据段的末尾。AP_STACK_TOO_SMALL
主要返回代码;应用程序的堆栈大小太小,无法执行谓词。 增加应用程序的堆栈大小。AP_CONV_BUSY
主返回代码;任何对话一次只能有一个未完成的对话谓词。 如果本地 TP 具有多个线程,并且多个线程使用相同的 conv_id发出 APPC 调用,则可能会发生这种情况。AP_THREAD_BLOCKING
主要返回代码;调用线程已在某个阻塞调用中。AP_UNEXPECTED_DOS_ERROR
主要返回代码;操作系统在处理来自本地 TP 的 APPC 调用时向 APPC 返回了错误。 已通过 secondary_rc 返回了操作系统返回代码。 此返回代码是以 Intel 字节交换顺序显示的。 如果问题持续出现,请咨询系统管理员。
备注
当 TP 发出此谓词时,会话必须处于以下状态之一:
确认
CONFIRM_SEND
CONFIRM_DEALLOCATE
新状态由旧状态确定,即本地 TP MC_CONFIRMED发出时会话的状态。 旧状态由前面接收谓词的 what_rcvd 参数的值指示。 可以进行以下状态更改:
旧状态 | 新状态 |
---|---|
确认 | RECEIVE |
CONFIRM_SEND | SEND |
CONFIRM_DEALLOCATE | RESET |
确认请求
确认请求由合作伙伴 TP 中的以下谓词之一发出:
MC_PREPARE_TO_RECEIVE 如果 ptr_type 设置为 AP_SYNC_LEVEL,并且 (由 MC_ALLOCATE) 建立的对话同步级别AP_CONFIRM_SYNC_LEVEL
MC_DEALLOCATEdealloc_type 是否设置为 AP_SYNC_LEVEL,并且 (MC_ALLOCATE) 建立的对话同步级别AP_CONFIRM_SYNC_LEVEL
如果 type 设置为 AP_SEND_DATA_CONFIRM 并且 (由 MC_ALLOCATE) 建立的对话同步级别AP_CONFIRM_SYNC_LEVEL,则MC_SEND_DATA
本地 TP 通过以下谓词之一的 what_rcvd 参数接收确认请求:
-
仅当what_rcvd 包含以下值之一时,本地 TP 才会发出 MC_CONFIRMED :
AP_CONFIRM_WHAT_RECEIVED
AP_CONFIRM_SEND
AP_CONFIRM_DEALLOCATE
如果 rtn_status 参数设置为 AP_YES,what_rcvd 也可以包含以下值:
AP_DATA_COMPLETE_CONFIRM
AP_DATA_COMPLETE_CONFIRM_SEND
AP_DATA_COMPLETE_CONFIRM_DEALL