RECEIVE_AND_WAIT

El verbo RECEIVE_AND_WAIT recibe los datos que están disponibles actualmente en el programa de transacciones de asociados (TP). Si no hay datos disponibles actualmente, el TP local espera a que lleguen los datos.

Para permitir el uso completo de la compatibilidad asincrónica, se han modificado RECEIVE_AND_WAIT verbos emitidos de forma asincrónica para que actúen como RECEIVE_AND_POST verbos. En concreto, mientras que un RECEIVE_AND_WAIT asincrónico está pendiente, se pueden emitir los verbos siguientes en la misma conversación:

  • DEALLOCATE(AP_ABEND_PROG, AP_ABEND_SVC o AP_ABEND_TIMER)

  • GET_ATTRIBUTES

  • GET_TYPE

  • REQUEST_TO_SEND

  • SEND_ERROR

  • TEST_RTS

  • TP_ENDED

    Esto permite que una aplicación, y en particular un emulador de 5250, use un RECEIVE_AND_WAIT asincrónico para recibir datos. Aunque el RECEIVE_AND_WAIT está pendiente, todavía puede usar SEND_ERROR y REQUEST_TO_SEND. Se recomienda usar esta característica para obtener compatibilidad asincrónica completa.

    En la estructura siguiente se describe el bloque de control de verbos (VCB) usado por el verbo RECEIVE_AND_WAIT .

Sintaxis

  
struct receive_and_wait {  
    unsigned short      opcode;  
    unsigned char       opext;  
    unsigned char       reserv2;  
    unsigned short      primary_rc;  
    unsigned long       secondary_rc;  
    unsigned char       tp_id[8];  
    unsigned long       conv_id;  
    unsigned short      what_rcvd;  
    unsigned char       rtn_status;  
    unsigned char       fill;  
    unsigned char       rts_rcvd;  
    unsigned char       reserv4;  
    unsigned short      max_len;  
    unsigned short      dlen;  
    unsigned char FAR * dptr;  
    unsigned char       reserv5[5];  
};   

Miembros

opcode
Parámetro proporcionado. Especifica el código de operación de verbo, AP_B_RECEIVE_AND_WAIT.

opext
Parámetro proporcionado. Especifica la extensión de operación de verbo, AP_BASIC_CONVERSATION.

reserv2
Campo reservado.

primary_rc
Parámetro devuelto. Especifica el código de retorno principal que establece APPC al finalizar el verbo. Los códigos de retorno válidos varían en función del verbo APPC que se emita. Consulte la sección de códigos de retorno para obtener los códigos de error válidos para este verbo.

secondary_rc
Parámetro devuelto. Especifica el código de retorno secundario que establece APPC al finalizar el verbo. Los códigos de retorno válidos varían en función del verbo APPC que se emita. Consulte la sección de códigos de retorno para obtener los códigos de error válidos para este verbo.

tp_id
Parámetro proporcionado. Identifica el TP local.

El valor de este parámetro lo devuelve TP_STARTED en el TP invocado o por RECEIVE_ALLOCATE en el TP invocado.

conv_id
Parámetro proporcionado. Especifica el identificador de conversación.

El valor de este parámetro lo devuelve ALLOCATE en el TP invocado o por RECEIVE_ALLOCATE en el TP invocado.

what_rcvd
Parámetro devuelto. Indica si se recibió el estado de los datos o de la conversación. Los valores posibles se enumeran en la tabla que sigue a la sección Miembros.

rtn_status
Parámetro proporcionado. Indica si se deben devolver los indicadores de estado de datos y conversación en una llamada API.

  • AP_NO especifica que los indicadores se deben devolver individualmente en invocaciones independientes del verbo.

  • AP_YES especifica que los indicadores deben devolverse juntos, siempre que ambos estén disponibles. Ambos se pueden devolver cuando:

    El búfer de recepción es lo suficientemente grande como para contener todos los datos que preceden al indicador de estado.

    El parámetro fill especifica BUFFER o LL, y los datos son el último registro lógico antes del indicador de estado.

    fill
    Parámetro proporcionado. Se usa en una conversación básica para especificar cómo recibe el TP local los datos. A continuación se muestran los valores permitidos:

  • AP_BUFFER especifica que el TP local recibe datos hasta que se alcanza el número de bytes especificados por max_len o hasta el final de los datos. Los datos se reciben sin tener en cuenta el formato de registro lógico.

  • AP_LL especifica que los datos se reciben en formato de registro lógico. Los datos recibidos pueden ser un registro lógico completo, una parte de max_len byte de un registro lógico o el final de un registro lógico.

    rts_rcvd
    Parámetro devuelto. Contiene el indicador de solicitud a envío. Los valores posibles son:

  • AP_YES indica que el TP del asociado ha emitido REQUEST_TO_SEND, que solicita que el TP local cambie la conversación al estado RECEIVE.

  • AP_NO indica que el TP del asociado no ha emitido REQUEST_TO_SEND.

    max_len
    Parámetro proporcionado. Indica el número máximo de bytes de datos que puede recibir el TP local. El intervalo va de 0 a 65535.

    Para el sistema operativo Microsoft Windows, este valor no debe superar la longitud del búfer para contener los datos recibidos.

    Al emitir RECEIVE_AND_WAIT con max_len establecido en cero, el TP local puede determinar si el TP del asociado tiene datos para enviar, buscar confirmación o ha cambiado el estado de la conversación.

    dlen
    Parámetro devuelto. Indica el número de bytes de datos recibidos. Los datos se almacenan en el búfer especificado por dptr. Una longitud de cero indica que no se recibió ningún dato.

    dptr
    Parámetro proporcionado. Proporciona la dirección del búfer para contener los datos recibidos por el TP local.

    Para el sistema operativo Windows, el búfer de datos puede residir en un área de datos estática o en un área asignada globalmente. El búfer de datos debe ajustarse completamente dentro de esta área.

    Valores devueltos por el parámetro what_rcvd

  • AP_CONFIRM_DEALLOCATE indica que el TP del asociado ha emitido DEALLOCATE con dealloc_type establecido en AP_SYNC_LEVEL y el nivel de sincronización de la conversación, establecido por ALLOCATE, se AP_CONFIRM_SYNC_LEVEL. Después de recibir este valor, el TP local normalmente emite CONFIRMADO.

  • AP_CONFIRM_SEND indica que el TP del asociado ha emitido PREPARE_TO_RECEIVE con ptr_type establecido en AP_SYNC_LEVEL y el nivel de sincronización de la conversación, establecido por ALLOCATE, está AP_CONFIRM_SYNC_LEVEL. Al recibir este valor, el TP local normalmente emite CONFIRMADO y comienza a enviar datos.

  • AP_CONFIRM_WHAT_RECEIVED indica que el TP del asociado ha emitido CONFIRM. Después de recibir este valor, el TP local normalmente emite CONFIRMADO.

  • AP_DATA se puede devolver en una conversación básica RECEIVE_AND_WAIT si fill está establecido en AP_BUFFER. El TP local recibió datos hasta que se alcanzó max_len o el final de los datos. Para obtener más información, vea "RECEIVE_AND_WAIT fin de datos" al final de este tema.

  • AP_DATA_COMPLETE indica, para RECEIVE_AND_WAIT, que el TP local ha recibido un registro de datos completo o la última parte de un registro de datos.

    Para RECEIVE_AND_WAIT con relleno establecido en AP_LL, este valor indica que el TP local ha recibido un registro lógico completo o el final de un registro lógico.

    Al recibir este valor, el TP local normalmente vuelve a emitir RECEIVE_AND_WAIT o emite otro verbo de recepción. Si el TP del asociado ha enviado más datos, el TP local comienza a recibir una nueva unidad de datos.

    De lo contrario, el TP local examina la información de estado, si primary_rc contiene AP_OK y what_rcvd contiene AP_SEND, AP_CONFIRM_SEND, AP_CONFIRM_DEALLOCATE o AP_CONFIRM_WHAT_RECEIVED.

    Consulte Códigos de retorno en este tema para obtener la siguiente acción que normalmente realiza el TP local.

    Si primary_rc contiene AP_DEALLOC_NORMAL, la conversación se ha desasignado en respuesta a DEALLOCATE emitido por el TP del asociado.

  • AP_DATA_INCOMPLETE indica, para RECEIVE_AND_WAIT, que el TP local ha recibido un registro de datos incompleto. El parámetro max_len especificó un valor menor que la longitud del registro de datos (o menor que el resto del registro de datos si no es el primer verbo de recepción para leer el registro).

    Para RECEIVE_AND_WAIT con relleno establecido en AP_LL, este valor indica que el TP local ha recibido un registro lógico incompleto.

    Al recibir este valor, el TP local normalmente vuelve a emitir RECEIVE_AND_WAIT (o emite otro verbo de recepción) para recibir la siguiente parte del registro.

  • AP_NONE indica que el TP no recibió datos ni indicadores de estado de conversación.

  • AP_SEND indica, para el TP del asociado, que la conversación ha entrado en estado RECEIVE. Para el TP local, la conversación ahora está en estado SEND. Al recibir este valor, el TP local normalmente usa SEND_DATA para empezar a enviar datos.

Códigos de retorno

AP_OK
Código de retorno principal; el verbo se ha ejecutado correctamente.

Cuando rtn_status es AP_YES , se puede devolver el código de retorno anterior o uno de los siguientes códigos de retorno.

AP_DATA_COMPLETE_SEND
Código de retorno principal; se trata de una combinación de AP_DATA_COMPLETE y AP_SEND.

AP_DATA_COMPLETE_CONFIRM_SEND
Código de retorno principal; se trata de una combinación de AP_DATA_COMPLETE y AP_CONFIRM_SEND.

AP_DATA_COMPLETE_CONFIRM
Código de retorno principal; se trata de una combinación de AP_DATA_COMPLETE y AP_CONFIRM_WHAT_RECEIVED.

AP_DATA_COMPLETE_CONFIRM_DEALL
Código de retorno principal; se trata de una combinación de AP_DATA_COMPLETE y AP_CONFIRM_DEALLOCATE.

AP_DATA_SEND
Código de retorno principal; se trata de una combinación de AP_DATA y AP_SEND.

AP_DATA_CONFIRM_SEND
Código de retorno principal; se trata de una combinación de AP_DATA y AP_CONFIRM_SEND.

AP_DATA_CONFIRM
Código de retorno principal; se trata de una combinación de AP_DATA y AP_CONFIRM_WHAT_RECEIVED.

AP_DATA_CONFIRM_DEALLOCATE
Código de retorno principal; se trata de una combinación de AP_DATA y AP_CONFIRM_DEALLOCATE.

AP_DEALLOC_NORMAL
Código de retorno principal; el TP del asociado ha desasignado la conversación sin solicitar confirmación y emitido DEALLOCATE con dealloc_type establecido en uno de los siguientes:

AP_CONFIRM_SYNC_LEVEL

AP_FLUSH

AP_SYNC_LEVEL con el nivel de sincronización de la conversación especificada como AP_NONE

Si rtn_status AP_YES, examine también what_rcvd .

AP_PARAMETER_CHECK
Código de retorno principal; el verbo no se ha ejecutado debido a un error en un parámetro.

AP_BAD_CONV_ID

Código de retorno secundario; el valor de conv_id no coincide con un identificador de conversación asignado por APPC.

AP_BAD_TP_ID

Código de retorno secundario; el valor de tp_id no coincide con un identificador de TP asignado por APPC.

AP_BAD_RETURN_STATUS_WITH_DATA

Código de retorno secundario; APPC no reconoció el valor de rtn_status especificado.

AP_INVALID_DATA_SEGMENT

Código de retorno secundario; la longitud especificada para el búfer de datos era mayor que el segmento asignado para contener el búfer.

AP_RCV_AND_WAIT_BAD_FILL

Código de retorno secundario; para conversaciones básicas, fill se estableció en un valor no válido.

AP_STATE_CHECK
Código de retorno principal; el verbo no se ejecutó porque se emitió en un estado no válido.

AP_RCV_AND_WAIT_BAD_STATE

Código de retorno secundario; la conversación no estaba en estado RECEIVE o SEND cuando el TP emitió este verbo.

AP_RCV_AND_WAIT_NOT_LL_BDY

Código de retorno secundario; para conversaciones básicas, la conversación estaba en estado SEND; el TP comenzó pero no terminó de enviar un registro lógico.

AP_ALLOCATION_ERROR
Código de retorno principal; APPC no ha podido asignar una conversación. El estado de la conversación se establece en RESET.

Este código se puede devolver a través de un verbo emitido después de ALLOCATE.

AP_ALLOCATION_FAILURE_NO_RETRY

Código de retorno secundario; 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.

AP_ALLOCATION_FAILURE_RETRY

Código de retorno secundario; 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.

AP_CONVERSATION_TYPE_MISMATCH

Código de retorno secundario; la unidad lógica de asociado (LU) o TP no admite el tipo de conversación (básico o asignado) especificado en la solicitud de asignación.

AP_PIP_NOT_ALLOWED

Código de retorno secundario; la solicitud de asignación especificó datos pip, pero el TP del asociado no requiere estos datos o la LU del asociado no la admite.

AP_PIP_NOT_SPECIFIED_CORRECTLY

Código de retorno secundario; el TP del asociado requiere datos pip, pero la solicitud de asignación no especificó datos pip ni un número incorrecto de parámetros.

AP_SECURITY_NOT_VALID

Código de retorno secundario; el identificador de usuario o la contraseña especificados en la solicitud de asignación no fue aceptado por la LU del asociado.

AP_SYNC_LEVEL_NOT_SUPPORTED

Código de retorno secundario; el TP del asociado no admite el sync_level (AP_NONE o AP_CONFIRM_SYNC_LEVEL) especificado en la solicitud de asignación o no se reconoció el sync_level .

AP_TP_NAME_NOT_RECOGNIZED

Código de retorno secundario; la LU del asociado no reconoce el nombre de TP especificado en la solicitud de asignación.

AP_TRANS_PGM_NOT_AVAIL_NO_RETRY

Código de retorno secundario; la LU remota rechazó la solicitud de asignación porque no pudo iniciar el TP del asociado solicitado. La condición es 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.

AP_TRANS_PGM_NOT_AVAIL_RETRY

Código de retorno secundario; la LU remota rechazó la solicitud de asignación porque no pudo iniciar el TP del asociado solicitado. La condición puede ser temporal, como un tiempo de espera. El motivo del error se puede registrar en el nodo remoto. Vuelva a intentar la asignación.

AP_COMM_SUBSYSTEM_ABENDED
Código de retorno principal; indica una de las condiciones siguientes:

  • El nodo utilizado por esta conversación encontró una anulación.

  • La conexión entre el TP y el nodo PU 2.1 se interrumpió (un error de LAN).

  • El proceso SnaBase que se ejecuta en el equipo del TP encontró una anulación.

    El administrador del sistema debe examinar el registro de errores a fin de determinar el motivo de la anulación.

    AP_COMM_SUBSYSTEM_NOT_LOADED
    Código de retorno principal; no se pudo cargar un componente necesario o se ha terminado mientras se procesa el verbo. Por tanto, no se pudo establecer la comunicación. Consulte al administrador del sistema para aplicar una acción correctiva.

    Cuando este código de retorno se usa con ALLOCATE, puede indicar que no se puede encontrar ningún sistema de comunicaciones para admitir la LU local. (Por ejemplo, el alias de LU local especificado con TP_STARTED es incorrecto o no se ha configurado). Tenga en cuenta que si lu_alias o mode_name tiene menos de ocho caracteres, debe asegurarse de que estos campos estén llenos de espacios a la derecha. Este error se devuelve si estos parámetros no se rellenan con espacios, ya que no hay ningún nodo disponible que pueda satisfacer la solicitud ALLOCATE .

    Cuando ALLOCATE genera este código de retorno para un sistema cliente de Host Integration Server configurado con varios nodos, hay dos códigos de retorno secundarios de la siguiente manera:

    0xF0000001

    Código de retorno secundario; no se ha iniciado ningún nodo.

    0xF0000002

    Código de retorno secundario; se ha iniciado al menos un nodo, pero la LU local (cuando se emite TP_STARTED ) no está configurada en ningún nodo activo. El problema podría ser cualquiera de los siguientes:

  • No se inicia el nodo con la LU local.

  • La LU local no está configurada.

    AP_CONV_FAILURE_NO_RETRY
    Código de retorno principal; la conversación se finalizó debido a una condición permanente, como un error de protocolo de sesión. El administrador del sistema debe examinar el registro de errores del sistema para determinar la causa del error. No vuelva a intentar la conversación hasta que se corrija el error.

    AP_CONV_FAILURE_RETRY
    Código de retorno principal; la conversación se finalizó debido a un error temporal. Reinicie el TP para ver si el problema se produce de nuevo. Si es así, el administrador del sistema debe examinar el registro de errores para determinar la causa del error.

    AP_CONVERSATION_TYPE_MIXED
    Código de retorno principal; el TP ha emitido verbos de conversación básicos y asignados. Solo se puede emitir un tipo en una sola conversación.

    AP_INVALID_VERB_SEGMENT
    Código de retorno principal; el bloque de control de verbo (VCB) se ha extendido más allá del final del segmento de datos.

    AP_PROG_ERROR_NO_TRUNC
    Código de retorno principal; el TP del asociado ha emitido SEND_ERROR con err_type establecido en AP_PROG mientras la conversación estaba en estado SEND. Los datos no se han truncado.

    AP_PROG_ERROR_PURGING
    Código de retorno principal; mientras que en ESTADO RECEIVE, PENDING, PENDING_POST, CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE, el TP de asociado emitido SEND_ERROR con err_type establecido en AP_PROG. Los datos enviados pero aún no recibidos se purgan.

    AP_PROG_ERROR_TRUNC
    Código de retorno principal; en estado SEND, después de enviar un registro lógico incompleto, el TP del asociado emitió SEND_ERROR con err_type establecido en AP_PROG. El TP local puede haber recibido la primera parte del registro lógico a través de un verbo receive.

    AP_STACK_TOO_SMALL
    Código de retorno principal; el tamaño de la pila de la aplicación es demasiado pequeño para ejecutar el verbo. Aumente el tamaño de pila de la aplicación.

    AP_CONV_BUSY
    Código de retorno principal; solo puede haber un verbo de conversación pendiente a la vez en cualquier conversación. Esto puede ocurrir si el TP local tiene varios subprocesos y más de un subproceso emite llamadas APPC con la misma conv_id.

    AP_THREAD_BLOCKING
    Código de retorno principal; el subproceso que llama ya está en una llamada de bloqueo.

    AP_UNEXPECTED_DOS_ERROR
    Código de retorno principal; el sistema operativo devolvió un error a APPC al procesar una llamada de APPC desde el TP local. El código de retorno del sistema operativo se devuelve a través de secondary_rc. Aparece en el orden de intercambio de bytes de Intel. Si el problema persiste, consulte con el administrador del sistema.

    AP_DEALLOC_ABEND_PROG
    Código de retorno principal; la conversación se ha desasignado por uno de los siguientes motivos:

  • El TP del asociado ha emitido DEALLOCATE con dealloc_type establecido en AP_ABEND_PROG.

  • El TP del asociado ha encontrado un ABEND, lo que hace que la LU del asociado envíe una solicitud DEALLOCATE .

    AP_DEALLOC_ABEND_SVC
    Código de retorno principal; la conversación se ha desasignado porque el TP del asociado emitió DEALLOCATE con dealloc_type establecido en AP_ABEND_SVC.

    AP_DEALLOC_ABEND_TIMER
    Código de retorno principal; la conversación se ha desasignado porque el TP del asociado emitió DEALLOCATE con dealloc_type establecido en AP_ABEND_TIMER.

    AP_SVC_ERROR_NO_TRUNC
    Código de retorno principal; mientras que en estado SEND, el TP de asociado (o LU del asociado) emitió SEND_ERROR con err_type establecido en AP_SVC. Los datos no se han truncado.

    AP_SVC_ERROR_PURGING
    Código de retorno principal; el TP de asociado (o LU del asociado) emitido SEND_ERROR con err_type establecido en AP_SVC mientras se encuentra en RECEIVE, PENDING_POST, CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE estado. Es posible que se hayan purgado los datos enviados al TP del asociado.

    AP_SVC_ERROR_NO_TRUNC
    Código de retorno principal; mientras que en estado SEND, después de enviar un registro lógico incompleto, el TP de asociado (o LU del asociado) emitió SEND_ERROR. El TP local puede haber recibido la primera parte del registro lógico.

Comentarios

El TP local recibe datos a través del siguiente proceso:

  1. El TP local emite un verbo de recepción hasta que termina de recibir una unidad completa de datos. Los datos recibidos pueden ser:

    • Un registro lógico.

    • Un búfer de datos recibidos independientemente de su formato de registro lógico.

      Es posible que el TP local tenga que emitir el verbo de recepción varias veces para recibir una unidad completa de datos. Una vez recibida una unidad completa de datos, el TP local puede manipularlos.

      Los verbos de recepción son RECEIVE_AND_POST, RECEIVE_AND_WAIT y RECEIVE_IMMEDIATE.

  2. El TP local emite de nuevo el verbo receive. Esto tiene uno de los siguientes efectos:

    • Si el TP del asociado ha enviado más datos, el TP local comienza a recibir una nueva unidad de datos.

    • Si el TP del asociado ha terminado de enviar datos o está esperando confirmación, la información de estado (disponible a través del parámetro what_rcvd ) indica la siguiente acción que normalmente realiza el TP local.

    La conversación debe estar en estado RECEIVE o SEND cuando el TP emite este verbo.

    Emisión del verbo en estado SEND

    Emitir RECEIVE_AND_WAIT mientras la conversación está en estado SEND tiene los siguientes efectos:

  • La LU local envía la información en su búfer de envío y un indicador SEND al TP del asociado.

  • La conversación cambia al estado RECEIVE; el TP local espera a que el TP del asociado envíe datos.

    Cambio de estado

    El nuevo estado de conversación viene determinado por los siguientes factores:

  • El estado en el que se encuentra la conversación cuando el TP emite el verbo.

  • Parámetro primary_rc .

  • Parámetro what_rcvd si primary_rc contiene AP_OK.

    Verbo emitido en estado SEND

    En la tabla siguiente se detallan los cambios de estado cuando se emite RECEIVE_AND_WAIT en estado SEND y primary_rc se AP_OK .

what_rcvd Nuevo estado
AP_CONFIRM_DEALLOCATE CONFIRM_DEALLOCATE
AP_DATA_COMPLETE_CONFIRM_DEALL CONFIRM_DEALLOCATE
AP_DATA_CONFIRM_DEALLOCATE CONFIRM_DEALLOCATE
AP_CONFIRM_SEND CONFIRM_SEND
AP_DATA_COMPLETE_CONFIRM_SEND CONFIRM_SEND
AP_DATA_CONFIRM_SEND CONFIRM_SEND
AP_CONFIRM_WHAT_RECEIVED CONFIRMAR
AP_DATA_COMPLETE_CONFIRM CONFIRMAR
AP_DATA_CONFIRM CONFIRMAR
AP_DATA RECEIVE
AP_DATA_COMPLETE RECEIVE
AP_DATA_INCOMPLETE RECEIVE
AP_SEND Sin cambios
AP_DATA_COMPLETE_SEND SEND_PENDING

En la tabla siguiente se detallan los cambios de estado cuando RECEIVE_AND_WAIT se emite en estado SEND y primary_rc no se AP_OK.

primary_rc Nuevo estado
AP_ALLOCATION_ERROR RESET
AP_CONV_FAILURE_RETRY RESET
AP_CONV_FAILURE_NO_RETRY RESET
AP_DEALLOC_ABEND RESET
AP_DEALLOC_ABEND_PROG RESET
AP_DEALLOC_ABEND_SVC RESET
AP_DEALLOC_ABEND_TIMER RESET
AP_DEALLOC_NORMAL RESET
AP_PROG_ERROR_PURGING RECEIVE
AP_PROG_ERROR_NO_TRUNC RECEIVE
AP_SVC_ERROR_PURGING RECEIVE
AP_SVC_ERROR_NO_TRUNC RECEIVE

Verbo emitido en estado RECEIVE

En la tabla siguiente se detallan los cambios de estado cuando se emite RECEIVE_AND_WAIT en estado RECEIVE y primary_rc se AP_OK.

what_rcvd Nuevo estado
AP_CONFIRM_DEALLOCATE CONFIRM_DEALLOCATE
AP_DATA_COMPLETE_CONFIRM_DEALL CONFIRM_DEALLOCATE
AP_DATA_CONFIRM_DEALLOCATE CONFIRM_DEALLOCATE
AP_CONFIRM_SEND CONFIRM_SEND
AP_DATA_COMPLETE_CONFIRM_SEND CONFIRM_SEND
AP_DATA_CONFIRM_SEND CONFIRM_SEND
AP_CONFIRM_WHAT_RECEIVED CONFIRMAR
AP_DATA_COMPLETE_CONFIRM CONFIRMAR
AP_DATA_CONFIRM CONFIRMAR
AP_DATA Sin cambios
AP_DATA_COMPLETE Sin cambios
AP_DATA_INCOMPLETE Sin cambios
AP_SEND ENVIAR
AP_DATA_COMPLETE_SEND SEND_PENDING

En la tabla siguiente se detallan los cambios de estado cuando RECEIVE_AND_WAIT se emite en estado RECEIVE y primary_rc no se AP_OK.

primary_rc Nuevo estado
AP_ALLOCATION_ERROR RESET
AP_CONV_FAILURE_RETRY RESET
AP_CONV_FAILURE_NO_RETRY RESET
AP_DEALLOC_ABEND RESET
AP_DEALLOC_ABEND_PROG RESET
AP_DEALLOC_ABEND_SVC RESET
AP_DEALLOC_ABEND_TIMER RESET
AP_DEALLOC_NORMAL RESET
AP_PROG_ERROR_PURGING Sin cambios
AP_PROG_ERROR_NO_TRUNC Sin cambios
AP_SVC_ERROR_PURGING Sin cambios
AP_SVC_ERROR_NO_TRUNC Sin cambios
AP_PROG_ERROR_TRUNC Sin cambios
AP_SVC_ERROR_TRUNC Sin cambios

RECEIVE_AND_WAIT fin de datos

En conversaciones básicas, si el TP local emite RECEIVE_AND_WAIT y establece el relleno en AP_BUFFER, la recepción de los datos finaliza cuando se alcanza max_len o el final de los datos. El final de los datos se indica mediante:

  • Parámetro primary_rc con un valor distinto de AP_OK (por ejemplo, AP_DEALLOC_NORMAL).

  • Parámetro what_rcvd con uno de los valores siguientes:

    AP_SEND

    AP_CONFIRM_SEND

    AP_CONFIRM_DEALLOCATE

    AP_CONFIRM_WHAT_RECEIVED

    AP_DATA_CONFIRM_SEND

    AP_DATA_CONFIRM_DEALLOCATE

    AP_DATA_CONFIRM

    Para determinar si se ha alcanzado el final de los datos, el TP local vuelve a emitir RECEIVE_AND_WAIT. Si el nuevo primary_rc contiene AP_OK y what_rcvd contiene AP_DATA, no se ha alcanzado el final de los datos. Sin embargo, si se ha alcanzado el final de los datos, primary_rc o what_rcvd indicarán la causa del final de los datos.

    RECEIVE_AND_WAIT espera a que el TP del asociado envíe datos o un indicador. Si necesita que el TP local funcione continuamente, use RECEIVE_IMMEDIATE en su lugar.