Allocate (CPI-C)

分配调用 (函数名称 cmallc) 由调用程序发出,以使用当前会话特征分配与合作伙伴程序的对话。 CPI-C 还可以在本地逻辑单元 (LU) 和伙伴 LU 之间分配会话(如果尚不存在)。

语法

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

参数

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

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

返回代码

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

CM_OPERATION_NOT_ACCEPTED
主返回代码;此值指示对此会话的上一个操作不完整。

CM_OPERATION_INCOMPLETE
主返回代码;已在会话上启动非阻止操作,但尚未完成。 程序可以发出 Wait_For_Conversation 等待操作完成或 Cancel_Conversation 取消操作和对话。

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

  • 从端信息派生或由 Set_Mode_Name 设置的模式名称无效。

  • 模式名称由 SNA 服务事务程序 (TP) 使用;调用程序无权使用此模式名称。 例如 SNASVCMG。

  • 从端信息派生的合作伙伴计划是 SNA 服务 TP;本地程序没有将会话分配给 SNA 服务 TP 所需的权限。

  • 合作伙伴计划是参与基本对话的服务 TP,但会话设置为CM_MAPPED_CONVERSATION。

  • 从边信息派生或由 Set_Partner_LU_Name 设置的伙伴 LU 名称无效。

    CM_PROGRAM_PARAMETER_CHECK
    主返回代码; conversation_ID 指定的值无效,或者变量的地址无效。

    CM_PROGRAM_STATE_CHECK
    主返回代码;会话未处于 INITIALIZE 状态。

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

    CM_UNSUCCESSFUL
    主返回代码;对话返回控制特征设置为CM_IMMEDIATE并且本地 LU 没有可用的争用方会话。

    如果将会话返回控件类型设置为 CM_WHEN_SESSION_ALLOCATED,则可以生成以下返回代码。

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

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

    状态更改

    发出 分配 时,会话必须处于 INITIALIZE 状态。

    下表中汇总的状态更改基于 return_code 参数的值。

return_code 新状态
CM_OK SEND
CM_ALLOCATE_FAILURE_NO_RETRY RESET
CM_ALLOCATE_FAILURE_RETRY RESET
所有其他 没有变化

注解

分配的会话类型基于对话类型特征:映射或基本。

如果此调用分配了会话,则无法更改以下会话特征:

  • 对话类型

  • 模式名称

  • 合作伙伴 LU 名称

  • 合作伙伴计划名称

  • 返回控件

  • 同步级别

  • 对话安全性

  • 用户标识符

  • 密码

    若要立即发送分配请求,调用程序可以在分配后立即发出刷新确认。 否则,分配请求会随本地 LU 发送缓冲区中的其他数据一起累积,直到缓冲区已满。

    通过在分配后发出确认,调用程序可以立即确定分配是否成功, (会话同步级别是否设置为CM_CONFIRM) 。

    如果合作伙伴 LU 拒绝分配生成的分配请求,则会在后续调用中将错误返回到调用程序。