Compartir a través de


Send_Error (CPI-C)

La llamada Send_Error (nombre de función cmserr) notifica al programa asociado que el programa local ha encontrado un error de nivel de aplicación.

Sintaxis

  
CM_ENTRY Send_Error(   
  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. Especifica 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_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

El valor de return_code varía en función del estado de la conversación cuando se emite la llamada.

Estado SEND

Si el programa emite la llamada con la conversación en estado SEND, se pueden realizar los siguientes 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; 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_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 del asociado (LU) o el programa no admite 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 lu 6.2 (TP) noCPI-C. 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 lo aceptó 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 puede iniciar sesión en el nodo remoto. No vuelva a intentar la asignación hasta que se corrija 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 puede iniciar sesión 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 normalmente.

    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 conjunto de parámetros de tipo en CM_DEALLOCATE_ABEND, o la LU remota lo ha hecho debido a una condición de finalización anómala del programa remoto. Si la conversación para el 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 el estado SEND, el programa de 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 de partners.

    Estado RECEIVE

    Si la llamada se emite en estado RECEIVE, se pueden realizar los siguientes códigos de retorno:

    CM_OK
    Código de retorno principal; dado que la información entrante se purga cuando se emite la llamada Send_Error en estado RECEIVE, se genera CM_OK en lugar de lo siguiente:

  • CM_PROGRAM_ERROR_NO_TRUNC

  • CM_PROGRAM_ERROR_PURGING

  • CM_SVC_ERROR_NO_TRUNC

  • CM_SVC_ERROR_PURGING

  • CM_PROGRAM_ERROR_TRUNC

  • CM_SVC_ERROR_TRUNC (solo conversación básica)

  • CM_PRODUCT_SPECIFIC_ERROR

  • CM_RESOURCE_FAILURE_NO_RETRY

  • CM_RESOURCE_FAILURE_RETRY

    Para obtener una explicación de estos códigos de retorno, consulte CPI-C Códigos de retorno comunes.

    CM_DEALLOCATED_NORMAL
    Código de retorno principal; dado que la información entrante se purga cuando se emite Send_Error en estado RECEIVE, CM_DEALLOCATED_NORMAL se genera en lugar de lo siguiente:

  • CM_CONVERSATION_TYPE_MISMATCH

  • CM_PIP_NOT_SPECIFIED_CORRECTLY

  • CM_SECURITY_NOT_VALID

  • CM_SYNC_LEVEL_NOT_SUPPORTED_PGM

  • CM_TPN_NOT_RECOGNIZED

  • CM_TP_NOT_AVAILABLE_NO_RETRY

  • CM_TP_NOT_AVAILABLE_RETRY

  • CM_DEALLOCATED_ABEND

  • CM_DEALLOCATED_ABEND_SVC

  • CM_DEALLOCATED_ABEND_TIMER

    estado de SEND_PENDING

    Si la llamada se emite en SEND_PENDING estado, se pueden realizar los siguientes códigos de retorno:

  • CM_OK (código de retorno principal; la llamada se ejecutó correctamente).

  • CM_PRODUCT_SPECIFIC_ERROR

  • CM_PROGRAM_ERROR_PURGING

  • CM_RESOURCE_FAILURE_NO_RETRY

  • CM_RESOURCE_FAILURE_RETRY

  • CM_DEALLOCATED_ABEND

  • CM_DEALLOCATED_ABEND_SVC

  • CM_DEALLOCATED_ABEND_TIMER

  • CM_SVC_ERROR_PURGING

    Para obtener una explicación de estos códigos de retorno, consulte CPI-C Códigos de retorno comunes.

    CONFIRMAR, CONFIRM_SEND o estado de CONFIRM_DEALLOCATE

    Si la llamada se emite en el estado CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE, se pueden realizar los siguientes códigos de retorno:

  • CM_OK (código de retorno principal; la llamada se ejecutó correctamente).

  • CM_PRODUCT_SPECIFIC_ERROR

  • CM_RESOURCE_FAILURE_NO_RETRY

  • CM_RESOURCE_FAILURE_RETRY

    Para obtener una explicación de estos códigos de retorno, consulte CPI-C Códigos de retorno comunes.

    Otros estados

    La emisión de Send_Error con la conversación en el estado RESET o INITIALIZE no es válida. Los siguientes códigos de retorno son posibles:

    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; el estado de la conversación no es SEND, RECEIVE, CONFIRM, CONFIRM_SEND, CONFIRM_DEALLOCATE ni SEND_PENDING.

    Cambios de estado

    La conversación puede estar en cualquier estado excepto INITIALIZE o 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 ENVIAR
CM_CONVERSATION_TYPE_MISMATCH REINICIAR
CM_PIP_NOT_SPECIFIED_CORRECTLY REINICIAR
CM_SECURITY_NOT_VALID REINICIAR
CM_SYNC_LEVEL_NOT_SUPPORTED_PGM REINICIAR
CM_TPN_NOT_RECOGNIZED REINICIAR
CM_TP_NOT_AVAILABLE_NO_RETRY REINICIAR
CM_TP_NOT_AVAILABLE_RETRY REINICIAR
CM_RESOURCE_FAILURE_RETRY REINICIAR
CM_RESOURCE_FAILURE_NO_RETRY REINICIAR
CM_DEALLOCATED_ABEND REINICIAR
CM_DEALLOCATED_ABEND_PROG REINICIAR
CM_DEALLOCATED_ABEND_SVC REINICIAR
CM_DEALLOCATED_ABEND_TIMER REINICIAR
CM_DEALLOCATED_NORMAL REINICIAR
CM_PROGRAM_ERROR_PURGING RECIBIR
CM_SVC_ERROR_PURGING RECIBIR
Todos los demás Sin cambios

Tras la ejecución correcta de esta llamada, la conversación está en estado SEND para el programa local y en el estado RECEIVE del programa asociado.

En una conversación básica, el programa local puede usar Set_Log_Data para especificar que los datos del registro de errores se envíen a la LU del asociado y se agreguen al registro de errores local. Si la característica de longitud de datos del registro de conversaciones es mayor que cero, la LU da formato a los datos y la almacena en el búfer de envío.

Una vez completado Send_Error , la longitud de los datos de registro se establece en cero y los datos de registro en null.

Si la conversación está en estado RECEIVE cuando el programa emite Send_Error, CPI-C purga los datos entrantes. Estos datos incluyen lo siguiente:

  • Datos enviados por Send_Data.

  • Solicitudes de confirmación.

  • Solicitudes de desasignación si el tipo de desasignación de conversaciones está establecido en CM_DEALLOCATE_CONFIRM o en CM_DEALLOCATE_SYNC_LEVEL con el nivel de sincronización establecido en CM_CONFIRM.

    CPI-C no depura un indicador entrante de solicitud a envío.

    Si la conversación está en SEND_PENDING estado, el programa local puede emitir Set_Error_Direction para especificar si el error que se notifica se produjo a partir de los datos recibidos o del procesamiento del programa local después de recibir correctamente los datos.

Observaciones

El programa local puede usar Send_Error con fines como informar al programa asociado de un error detectado en los datos recibidos, rechazar una solicitud de confirmación o truncar un registro lógico incompleto que está enviando.

Send_Error vacía el búfer de envío de las LU locales y envía al programa asociado el contenido del búfer de envío seguido de la notificación de error.

La notificación de error se envía al asociado como uno de los siguientes valores de return_code :

  • CM_PROGRAM_ERROR_TRUNC

  • CM_PROGRAM_ERROR_NO_TRUNC

  • CM_PROGRAM_ERROR_PURGING