MC_CONFIRMED

MC_CONFIRMED谓词响应来自合作伙伴事务计划(TP)的确认请求。 它通知合作伙伴 TP 本地 TP 未检测到收到的数据中的错误。 由于发出确认请求的 TP 等待确认, 因此MC_CONFIRMED 同步两个 TP 的处理。

以下结构描述了 MC_CONFIRMED 谓词使用的谓词控制块(VCB)。

语法


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_RECEIVEMC_RECEIVE_AND_WAITMC_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 参数的值指示。 可以进行以下状态更改:

旧状态 新状态
确认 收到
CONFIRM_SEND 发送
CONFIRM_DEALLOCATE 重置

确认请求

确认请求由合作伙伴 TP 中的以下谓词之一发出:

  • MC_CONFIRM

  • MC_PREPARE_TO_RECEIVE如果ptr_type设置为AP_SYNC_LEVEL,并且会话的同步级别(由 MC_ALLOCATE 建立)AP_CONFIRM_SYNC_LEVEL

  • MC_DEALLOCATE 如果 dealloc_type设置为AP_SYNC_LEVEL ,并且会话的同步级别(由MC_ALLOCATE建立)AP_CONFIRM_SYNC_LEVEL

  • 如果类型设置为AP_SEND_DATA_CONFIRM且会话同步级别(由 MC_ALLOCATE 建立)AP_CONFIRM_SYNC_LEVEL MC_SEND_DATA

    本地 TP 通过以下谓词之一的 what_rcvd 参数接收确认请求:

  • MC_RECEIVE_IMMEDIATE

  • MC_RECEIVE_AND_WAIT

  • MC_RECEIVE_AND_POST

    仅当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