Confirm (CPI-C)
La llamada Confirm (nombre de función cmcfm) envía el contenido del búfer de envío de la unidad lógica local (LU) y una solicitud de confirmación al programa asociado y espera la confirmación. Para Microsoft Windows, ejecute un subproceso en segundo plano para todas las comunicaciones CPI-C y conserve el subproceso en primer plano solo para la interfaz de usuario.
Sintaxis
CM_ENTRY Confirm(
unsigned char FAR *conversation_ID,
CM_INT32 FAR *request_to_send_received,
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.
request_to_send_received
Parámetro devuelto. Proporciona el indicador de solicitud a envío recibido. Los valores posibles son:
CM_REQ_TO_SEND_RECEIVED
El programa asociado emitió Request_To_Send, que solicita al programa local que cambie la conversación al estado RECEIVE.
CM_REQ_TO_SEND_NOT_RECEIVED
El programa asociado no emitió Request_To_Send. Este valor no es relevante si return_code está establecido en CM_PROGRAM_PARAMETER_CHECK o CM_PROGRAM_STATE_CHECK.
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. El programa asociado emitió la llamada Confirmada .
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 para 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 Windows y no llamar a Wait_For_Conversation.
CM_PROGRAM_PARAMETER_CHECK
Código de retorno principal; se produjo una de las siguientes acciones:
El valor especificado por conversation_ID no es válido.
El programa local intentó usar Confirm en una conversación con un nivel de sincronización de CM_NONE. El nivel de sincronización debe ser CM_CONFIRM.
CM_PROGRAM_STATE_CHECK
Código de retorno principal; se produjo una de las siguientes acciones:La conversación no estaba en estado SEND o SEND_PENDING.
La conversación básica para el programa local estaba en estado SEND y el programa local no terminó de enviar un registro lógico.
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 LU o el programa del asociado 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 sea 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; La LU del asociado no acepta el identificador de usuario o la contraseña especificados en la solicitud de asignación.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:Durante el 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 desasigna la conversación antes de finalizar con normalidad.
CM_RESOURCE_FAILURE_RETRY
Código de retorno principal; la conversación se terminó 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 emitió Deallocate con el parámetro type establecido en CM_DEALLOCATE_ABEND. 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 programa asociado finalizó normalmente pero no desasignó la conversación antes de finalizar.
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 de tipo establecido en ABEND_SVC.
El programa asociado no desasigna 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 el estado SEND, el programa asociado o la LU del asociado emitieron 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
La conversación puede estar en estado SEND o SEND_PENDING cuando se emite Confirm .
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 | Sin cambios |
La llamada se emitió en estado SEND | Sin cambios |
La llamada se emitió en estado de SEND_PENDING | ENVIAR |
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
En respuesta a Confirm, el programa asociado normalmente emite Confirmado para confirmar que ha recibido los datos sin errores. (Si el programa asociado encuentra un error, emite Send_Error o usa Deallocate para desasignar anómalamente la conversación).
El programa puede emitir Confirmar solo si el nivel de sincronización de conversaciones es CM_CONFIRM.
Confirme que espera una respuesta del programa asociado. Una de las siguientes llamadas CPI-C genera una respuesta en el programa asociado:
Confirmado
Send_Error
5Deallocate con el tipo de desasignación de conversaciones establecido en CM_DEALLOCATE_ABEND