Allocate (CPI-C)
El programa de invocación emite la llamada de asignación (nombre de función cmallc) para asignar una conversación con el programa asociado mediante las características de conversación actuales. CPI-C también puede asignar una sesión entre la unidad lógica local (LU) y la LU del asociado si aún no existe una.
Sintaxis
CM_ENTRY Allocate(
unsigned char FAR *conversation_ID,
CM_INT32 FAR *return_code
);
Parámetros
conversation_ID
Parámetro proporcionado. Especifica el identificador de conversación. El valor de este parámetro lo devolvió Initialize_Conversation.
return_code
Código devuelto de esta llamada. Los códigos de retorno válidos se enumeran más adelante en este tema.
Códigos de retorno
CM_OK
Código de retorno principal; la llamada se ejecutó correctamente.
CM_OPERATION_NOT_ACCEPTED
Código de retorno principal; este valor indica que una operación anterior en esta conversación está incompleta.
CM_OPERATION_INCOMPLETE
Código de retorno principal; Se ha iniciado una operación de no bloqueo en la conversación, pero no se ha completado. El programa puede emitir Wait_For_Conversation esperar a que la operación se complete o Cancel_Conversation cancelar la operación y la conversación.
CM_PARAMETER_ERROR
Código de retorno principal; se produjo una de las siguientes acciones:
El nombre del modo derivado de la información lateral o establecido por Set_Mode_Name no es válido.
El nombre del modo lo usan los programas de transacciones de servicio de SNA (CSP); el programa de invocación no tiene la autoridad para usar este nombre de modo. Un ejemplo es SNASVCMG.
El programa asociado derivado de la información lateral es un TP de servicio SNA; el programa local no tiene los privilegios necesarios para asignar una conversación a un TP de servicio SNA.
El programa asociado es un TP de servicio, que participa en conversaciones básicas, pero la conversación está establecida en CM_MAPPED_CONVERSATION.
El nombre de LU del asociado derivado de la información lateral o establecido por Set_Partner_LU_Name no es válido.
CM_PROGRAM_PARAMETER_CHECK
Código de retorno principal; el valor especificado por conversation_ID no es válido o la dirección de una variable no es válida.CM_PROGRAM_STATE_CHECK
Código de retorno principal; la conversación no está en estado INITIALIZE.CM_PRODUCT_SPECIFIC_ERROR
Código de retorno principal; se produjo un error específico del producto y se ha registrado en el registro de errores de productos.CM_UNSUCCESSFUL
Código de retorno principal; La característica de control de retorno de conversaciones se establece en CM_IMMEDIATE y la LU local no tenía una sesión de contención-ganador disponible.Se pueden generar los siguientes códigos de retorno si el tipo de control de retorno de conversaciones está establecido en CM_WHEN_SESSION_ALLOCATED.
CM_ALLOCATE_FAILURE_NO_RETRY
Código de retorno principal; la conversación no se puede asignar debido a una condición permanente, como un error de configuración o un error de protocolo de sesión. Para determinar el error, el administrador del sistema debe examinar el archivo de registro de errores. No vuelva a intentar la asignación hasta que se haya corregido el error.CM_ALLOCATE_FAILURE_RETRY
Código de retorno principal; No se pudo asignar la conversación debido a una condición temporal, como un error de vínculo. El motivo del error se registra en el registro de errores del sistema. Vuelva a intentar la asignación.Cambios de estado
La conversación debe estar en estado INITIALIZE cuando se emite Allocate .
Los cambios de estado, resumidos en la tabla siguiente, se basan en el valor del parámetro return_code .
return_code | Nuevo estado |
---|---|
CM_OK | ENVIAR |
CM_ALLOCATE_FAILURE_NO_RETRY | RESET |
CM_ALLOCATE_FAILURE_RETRY | RESET |
Todos los demás | Sin cambios |
Comentarios
El tipo de conversación asignado se basa en la característica de tipo de conversación: asignada o básica.
Cuando esta llamada ha asignado la conversación, no se pueden cambiar las siguientes características de conversación:
Tipo de conversación
Nombre del modo
Nombre de LU del asociado
Nombre del programa asociado
Control de retorno
Nivel de sincronización
Seguridad de la conversación
Identificador de usuario
Contraseña
Para enviar la solicitud de asignación inmediatamente, el programa de invocación puede emitir Flush o Confirm inmediatamente después de Asignar. De lo contrario, la solicitud de asignación se acumula con otros datos del búfer de envío de UNIDADES locales hasta que el búfer está lleno.
Al emitir Confirmar después de Asignar, el programa de invocación puede determinar inmediatamente si la asignación se realizó correctamente (si el nivel de sincronización de conversación está establecido en CM_CONFIRM).
Si la LU del asociado rechaza la solicitud de asignación generada por Allocate, el error se devuelve al programa de invocación en una llamada posterior.