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_Conversation 或 Accept_Conversation 返回。
deallocate_type
提供的参数。 指定如何执行解除分配。 可能的值为:
CM_DEALLOCATE_ABEND
指示将异常和无条件地解除分配会话。 程序在遇到阻止事务成功完成的错误时,应指定CM_DEALLOCATE_ABEND。
如果会话处于 SEND 状态,则 CPI-C 在解除分配会话之前将本地逻辑单元 (LU) 的发送缓冲区的内容发送到合作伙伴程序。 如果会话处于 RECEIVE 状态,则可以清除传入的数据。 对于处于 SEND 状态的基本会话,可能会发生逻辑记录截断。
CM_DEALLOCATE_CONFIRM
用于向合作伙伴计划发送本地 LU 发送缓冲区的内容以及确认解除分配的请求。
此解除分配确认请求由 Deallocate 或 Send_Data 发送,发送类型设置为 CM_SEND_AND_DEALLOCATE。 当合作伙伴计划发出 “已确认”(响应确认请求)时,对话将正常解除分配。
CM_DEALLOCATE_FLUSH
用于在正常解除分配会话之前将本地 LU 发送缓冲区的内容发送到合作伙伴程序。
CM_DEALLOCATE_SYNC_LEVEL
使用会话同步级别来确定如何解除分配会话。 默认同步级别由 Initialize_Conversation 建立,可由 Set_Sync_Level重写。
如果会话的同步级别为CM_NONE,则默认情况下,本地 LU 发送缓冲区的内容将发送到合作伙伴计划,并且会话将正常解除分配。
如果会话的同步级别CM_CONFIRM,则本地 LU 发送缓冲区的内容和确认解除分配的请求将发送到合作伙伴计划。 此解除分配确认请求由 Deallocate 或 Send_Data 发送,发送类型设置为 CM_SEND_AND_DEALLOCATE。 当合作伙伴计划发出 “已确认 ”呼叫并响应确认请求时,对话将正常解除分配。
return_code
此调用返回的代码。 本主题稍后将列出有效的返回代码。
返回代码
CM_OK
主返回代码;已成功执行的调用。
CM_PROGRAM_PARAMETER_CHECK
主返回代码;发生了以下情况之一:
conversation_ID或deallocate_type指定的值无效。
deallocate_type 参数指定CM_DEALLOCATE_CONFIRM,但会话同步级别设置为CM_NONE。
变量的地址无效。
CM_PRODUCT_SPECIFIC_ERROR
主返回代码;发生特定于产品的错误,并且已记录在产品错误日志中。
状态更改
会话可以处于除 RESET 以外的任何状态。
没有状态更改。
注解
此调用将替代 由 Initialize_Conversation 或 Accept_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。