Set_Deallocate_Type (CPI-C)

Set_Deallocate_Type调用 (函数名称 cmsdt) 指定如何解除分配会话。

语法

  
CM_ENTRY Set_Deallocate_Type(   
  unsigned char FAR *conversation_ID,    
  CM_INT32 FAR *deallocate_type,         
  CM_INT32 FAR *return_code              
);  

参数

conversation_ID
提供的参数。 指定会话的标识符。 此参数的值由 Initialize_ConversationAccept_Conversation 返回。

deallocate_type
提供的参数。 指定如何执行解除分配。 可能的值为:

CM_DEALLOCATE_ABEND
指示将异常和无条件地解除分配会话。 程序在遇到阻止事务成功完成的错误时,应指定CM_DEALLOCATE_ABEND。

如果会话处于 SEND 状态,则 CPI-C 在解除分配会话之前将本地逻辑单元 (LU) 的发送缓冲区的内容发送到合作伙伴程序。 如果会话处于 RECEIVE 状态,则可以清除传入的数据。 对于处于 SEND 状态的基本会话,可能会发生逻辑记录截断。

CM_DEALLOCATE_CONFIRM
用于向合作伙伴计划发送本地 LU 发送缓冲区的内容以及确认解除分配的请求。

此解除分配确认请求由 DeallocateSend_Data 发送,发送类型设置为 CM_SEND_AND_DEALLOCATE。 当合作伙伴计划发出 “已确认”(响应确认请求)时,对话将正常解除分配。

CM_DEALLOCATE_FLUSH
用于在正常解除分配会话之前将本地 LU 发送缓冲区的内容发送到合作伙伴程序。

CM_DEALLOCATE_SYNC_LEVEL
使用会话同步级别来确定如何解除分配会话。 默认同步级别由 Initialize_Conversation 建立,可由 Set_Sync_Level重写。

如果会话的同步级别为CM_NONE,则默认情况下,本地 LU 发送缓冲区的内容将发送到合作伙伴计划,并且会话将正常解除分配。

如果会话的同步级别CM_CONFIRM,则本地 LU 发送缓冲区的内容和确认解除分配的请求将发送到合作伙伴计划。 此解除分配确认请求由 DeallocateSend_Data 发送,发送类型设置为 CM_SEND_AND_DEALLOCATE。 当合作伙伴计划发出 “已确认 ”呼叫并响应确认请求时,对话将正常解除分配。

return_code
此调用返回的代码。 本主题稍后将列出有效的返回代码。

返回代码

CM_OK
主返回代码;已成功执行的调用。

CM_PROGRAM_PARAMETER_CHECK
主返回代码;发生了以下情况之一:

  • conversation_IDdeallocate_type指定的值无效。

  • deallocate_type 参数指定CM_DEALLOCATE_CONFIRM,但会话同步级别设置为CM_NONE。

  • 变量的地址无效。

    CM_PRODUCT_SPECIFIC_ERROR
    主返回代码;发生特定于产品的错误,并且已记录在产品错误日志中。

状态更改

会话可以处于除 RESET 以外的任何状态。

没有状态更改。

注解

此调用将替代 由 Initialize_ConversationAccept_Conversation 建立的默认解除分配类型。 默认解除分配类型为CM_DEALLOCATE_SYNC_LEVEL。

此调用指定的解除分配指令在发出 Deallocate 或发送类型设置为 CM_SEND_AND_DEALLOCATE 并发出 Send_Data 时生效。

如果将 会话的 同步级别设置为CM_NONE或CM_CONFIRM,可以将deallocate_type设置为CM_FLUSH。

CM_DEALLOCATE_FLUSH的值在功能上与CM_DEALLOCATE_SYNC_LEVEL相同,对话同步级别设置为CM_NONE。

CM_DEALLOCATE_CONFIRM的值在功能上与CM_DEALLOCATE_SYNC_LEVEL相同,对话同步级别设置为 CM_CONFIRM。