Deallocate (CPI-C)
La llamada Desasignar (nombre de función cmdeal) desasigna una conversación entre dos programas.
Sintaxis
CM_ENTRY Deallocate(
unsigned char FAR *conversation_ID,
CM_INT32 FAR *return_code
);
Parámetros
conversation_ID
Parámetro proporcionado. Especifica el identificador de la conversación. El valor de este parámetro lo devolvió Initialize_Conversation o Accept_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; la conversación se desasigna.
CM_OPERATION_NOT_ACCEPTED
Código de retorno principal; Una operación anterior en esta conversación está incompleta.
CM_OPERATION_INCOMPLETE
Código de retorno principal; la operación no se ha completado (el modo de procesamiento es solo de bloqueo) y todavía está en curso. El programa puede emitir Wait_For_Conversation para esperar la finalización de la operación o Cancel_Conversation cancelar la operación y la conversación. Si se ha llamado a Specify_Windows_Handle , la aplicación debe esperar la notificación por un mensaje de Microsoft® Windows® y no llamar a Wait_For_Conversation.
CM_PROGRAM_PARAMETER_CHECK
Código de retorno principal; el valor especificado por conversation_ID no es válido.
CM_PROGRAM_STATE_CHECK
Código de retorno principal; Los siguientes errores de estado pueden producirse cuando el tipo de desasignación indica una desasignación normal (CM_DEALLOCATE_SYNC_LEVEL, CM_DEALLOCATE_FLUSH, CM_DEALLOCATE_CONFIRM):
La conversación no está en estado SEND o SEND_PENDING.
Para una conversación básica, la conversación está en estado SEND, pero el programa no terminó de enviar un registro lógico.
Los siguientes códigos de retorno se pueden devolver cuando el deallocate_type se establece en CM_DEALLOCATE_CONFIRM o en CM_DEALLOCATE_SYNC_LEVEL y el nivel de sincronización de conversaciones se establece en CM_CONFIRM.
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_CONVERSATION_TYPE_MISMATCH
Código de retorno principal; la unidad lógica de asociado (LU) o el programa no admiten el tipo de conversación (básico o asignado) especificado en la solicitud de asignación.CM_PIP_NOT_SPECIFIED_CORRECTLY
Código de retorno principal; la solicitud de asignación fue rechazada por un programa de transacciones (TP) que no es CPI-C LU 6.2. El programa de partners requiere una o varias variables de datos PIP, que no son compatibles con CPI-C.CM_SECURITY_NOT_VALID
Código de retorno principal; el identificador de usuario o la contraseña especificados en la solicitud de asignación no fue aceptado por la LU del asociado.CM_SYNC LEVEL_NOT_SUPPORTED_PGM
Código de retorno principal; el programa asociado no admite el nivel de sincronización especificado en la solicitud de asignación.CM_TPN_NOT_RECOGNIZED
Código de retorno principal; la LU del asociado no reconoce el nombre del programa especificado en la solicitud de asignación.CM_TP_NOT_AVAILABLE_NO_RETRY
Código de retorno principal; la LU del asociado no puede iniciar el programa especificado en la solicitud de asignación debido a una condición permanente. El motivo del error se puede registrar en el nodo remoto. No vuelva a intentar la asignación hasta que se haya corregido el error.CM_TP_NOT_AVAILABLE_RETRY
Código de retorno principal; la LU del asociado no puede iniciar el programa especificado en la solicitud de asignación debido a una condición temporal. El motivo del error se puede registrar en el nodo remoto. Vuelva a intentar la asignación.CM_PROGRAM_ERROR_PURGING
Código de retorno principal; se produjo una de las siguientes acciones:Mientras está en estado RECEIVE o CONFIRM, el programa asociado emitió Send_Error. Los datos enviados pero aún no recibidos se purgan.
Mientras está en SEND_PENDING estado con la dirección de error establecida en CM_RECEIVE_ERROR, el programa asociado emitió Send_Error. Los datos no se purgaron.
CM_RESOURCE_FAILURE_NO_RETRY
Código de retorno principal; se produjo una de las siguientes acciones:La conversación se terminó prematuramente debido a una condición permanente. No vuelva a intentarlo hasta que se corrija el error.
El programa asociado no desasignó la conversación antes de terminar con normalidad.
CM_RESOURCE_FAILURE_RETRY
Código de retorno principal; la conversación se finalizó prematuramente debido a una condición temporal, como el error del módem. Vuelva a intentar la conversación.CM_DEALLOCATED_ABEND
Código de retorno principal; la conversación se ha desasignado por uno de los siguientes motivos:El programa remoto emitido Desasignar con el parámetro de tipo establecido en CM_DEALLOCATE_ABEND, o la LU remota lo hizo debido a una condición de finalización anómala del programa remoto. Si la conversación del programa remoto estaba en estado RECEIVE cuando se emitió la llamada, se purga la información enviada por el programa local y aún no recibida por el programa remoto.
El TP remoto finalizó normalmente, pero no desasignó la conversación antes de finalizar. Los servicios de nodo en la LU remota desasignaron la conversación en nombre del TP remoto.
CM_DEALLOCATED_ABEND_SVC
Código de retorno principal; la conversación se ha desasignado por uno de los siguientes motivos:El programa asociado emitió Deallocate con el parámetro type establecido en ABEND_SVC.
El programa asociado no desasignó la conversación antes de finalizar.
Si la conversación está en estado RECEIVE para el programa asociado cuando el programa local emite esta llamada, se purgan los datos enviados por el programa local y aún no recibidos por el programa asociado.
CM_DEALLOCATED_ABEND_TIMER
Código de retorno principal; la conversación se ha desasignado porque el programa asociado emitió Deallocate con el parámetro de tipo establecido en ABEND_TIMER. Si la conversación está en estado RECEIVE para el programa asociado cuando el programa local emite esta llamada, se purgan los datos enviados por el programa local y aún no recibidos por el programa asociado.CM_SVC_ERROR_PURGING
Código de retorno principal; mientras que en estado SEND, el programa de asociado o lu del asociado emitió Send_Error con el parámetro de tipo establecido en SVC. Es posible que se hayan purgado los datos enviados al programa asociado.Cambios de estado
Dependiendo del valor del parámetro de tipo de desasignación de conversaciones (establecido por Set_Deallocate_Type), la conversación puede estar en uno de los estados indicados en la tabla siguiente cuando el programa emite Deallocate:
Tipo de desasignación | Estado permitido |
---|---|
CM_DEALLOCATE_FLUSH | SEND o SEND_PENDING |
CM_DEALLOCATE_CONFIRM | SEND o SEND_PENDING |
CM_DEALLOCATE_SYNC_LEVEL | SEND o SEND_PENDING |
CM_DEALLOCATE_ABEND | Cualquier excepto RESET |
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 | RESET |
CM_PROGRAM_ERROR_PURGING | RECEIVE |
CM_SVC_ERROR_PURGING | RECEIVE |
CM_CONVERSATION_TYPE_MISMATCH | RESET |
CM_PIP_NOT_SPECIFIED_CORRECTLY | RESET |
CM_SECURITY_NOT_VALID | RESET |
CM_SYNC_LEVEL_NOT_SUPPORTED_PGM | RESET |
CM_TPN_NOT_RECOGNIZED | RESET |
CM_TP_NOT_AVAILABLE_NO_RETRY | RESET |
CM_TP_NOT_AVAILABLE_RETRY | RESET |
CM_RESOURCE_FAILURE_NO_RETRY | RESET |
CM_RESOURCE_FAILURE_RETRY | RESET |
CM_DEALLOCATED_ABEND | RESET |
CM_DEALLOCATED_ABEND_SVC | RESET |
CM_DEALLOCATED_ABEND_TIMER | RESET |
Todos los demás | Sin cambios |
Comentarios
Antes de desasignar la conversación, esta llamada realiza el equivalente de la llamada Flush o Confirmed , según el nivel de sincronización de conversación actual y desasigne el tipo. El tipo de desasignación se establece mediante Set_Deallocate_Type.
El programa asociado recibe la notificación de desasignación a través de uno de los parámetros siguientes:
status_received es CM_CONFIRM_DEALLOC_RECEIVED
return_code es CM_DEALLOCATED_NORMAL
return_code CM_DEALLOCATED_ABEND
Una vez ejecutada correctamente esta llamada, el conversation_ID ya no es válido.
Para una conversación básica, si el tipo de desasignación de conversaciones está establecido en CM_DEALLOCATE_ABEND y la longitud de los datos de registro es mayor que cero, la LU local escribe los datos de registro (especificados por Set_Log_Data) en el registro de errores local y en la LU del asociado.
Después de ejecutar Deallocate , la longitud de los datos de registro se establece en cero y los datos de registro se establecen en null.