Prepare_To_Receive (CPI-C)

La Prepare_To_Receive llamada (nombre de función cmptr) cambia el estado de la conversación para el programa local de SEND a RECEIVE.

Sintaxis

  
CM_ENTRY Prepare_To_Receive(   
  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 por 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; 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 solo es de bloqueo) y todavía está en curso. El programa puede emitir Wait_For_Conversation esperar la finalización de la operación o Cancel_Conversation cancelar la operación y la conversación. Si Specify_Windows_Handle se ha llamado a , 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; se produjo una de las siguientes acciones:

  • El estado de la conversación no es SEND ni SEND_PENDING.

  • Para una conversación básica, la conversación está en estado SEND. Sin embargo, el programa no terminó de enviar un registro lógico.

    Estos códigos de retorno pueden producirse si el tipo de preparación para recibir de conversaciones está establecido en CM_PREP_TO_RECEIVE_CONFIRM o si el tipo de preparación para recibir está establecido en CM_PREP_TO_RECEIVE_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 registró 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; Un programa de transacciones (TP) lu 6.2 que no es de CPI-C rechazó la solicitud de asignación. El programa de asociados 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 fueron aceptados 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 se encuentra en el estado RECEIVE o CONFIRM, el programa asociado emitió Send_Error. Los datos enviados pero aún no recibidos se purgan.

  • Mientras está 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 finalizó prematuramente debido a una condición permanente. No vuelva a intentarlo hasta que se corrija el error.

  • El programa de asociados no desasignó la conversación antes de finalizar con normalidad.

    CM_RESOURCE_FAILURE_RETRY
    Código de retorno principal; La conversación finalizó prematuramente debido a una condición temporal, como un error en el 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 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 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ó con normalidad, 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 de tipo establecido en ABEND_SVC.

  • El programa de asociados 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 se encuentra en el estado SEND, el programa de asociados o la LU del asociado Send_Error con el parámetro de tipo establecido en SVC. Es posible que se hayan purgado los datos enviados al programa de asociados.

    Cambios de estado

    La conversación puede estar en estado SEND SEND_PENDING.

    Los cambios de estado, resumidos en la tabla siguiente, se basan en el valor del return_code parámetro.

return_code Nuevo estado
CM_OK RECEIVE
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_DEALLOCATED_ABEND RESET
CM_RESOURCE_FAILURE_NO_RETRY RESET
CM_RESOURCE_FAILURE_RETRY RESET
CM_DEALLOCATED_ABEND_SVC RESET
CM_DEALLOCATED_ABEND_TIMER RESET
Todos los demás Sin cambios

Antes de cambiar el estado de la conversación, esta llamada realiza el equivalente de uno de los siguientes:

  • La llamada Flush , que envía el contenido del búfer de envío de LU local al programa y la LU del asociado, si se cumple alguna de las condiciones siguientes:

    • El tipo de preparación para recibir conversaciones se establece en CM_PREP_TO_RECEIVE_FLUSH.

    • El tipo de preparación para recibir conversaciones se establece en CM_PREP_TO_RECEIVE_SYNC_LEVEL y el nivel de sincronización de conversaciones se establece en CM_NONE.

  • La llamada Confirm , enviando el contenido del búfer de envío de LAS locales y una solicitud de confirmación al programa asociado, si se cumple alguna de las condiciones siguientes:

    • El tipo de preparación para recibir conversaciones se establece en CM_PREP_TO_RECEIVE_CONFIRM.

    • El tipo de preparación para recibir conversaciones se establece en CM_PREP_TO_RECEIVE_SYNC_LEVEL y el nivel de sincronización de conversaciones se establece en CM_CONFIRM.

    El tipo de preparación para recibir se establece mediante Set_Prepare_To_Receive_Type; el nivel de sincronización se establece mediante Set_Sync_Level.

    La conversación no puede cambiar a SEND o SEND_PENDING para el programa asociado hasta que el programa asociado reciba uno de los siguientes valores a través del parámetro status_received de la llamada Receive :

  • CM_SEND_RECEIVED

  • CM_CONFIRM_SEND_RECEIVED y responde con la llamada confirmadao Send_Error llamada

Observaciones

Después de que esta llamada se haya ejecutado correctamente, el programa local puede recibir datos.