MC_POST_ON_RECEIPT
El verbo MC_POST_ON_RECEIPT permite a la aplicación registrarse para recibir una notificación cuando los datos o el estado llegan a la unidad lógica local (LU) sin recibirlo realmente al mismo tiempo. Este verbo solo se puede emitir mientras está en estado RECEIVE y nunca provoca un cambio en el estado de la conversación.
Cuando el programa de transacciones (TP) emite este verbo, APPC devuelve el control al TP inmediatamente. Cuando se cumplen las condiciones especificadas, se señala el evento Win32® especificado por el parámetro sema y se completa el verbo. A continuación, el TP examina el código de retorno en el bloque de control de verbos (VCB) para determinar si alguna notificación de datos o estado ha llegado a la LU local y emite un MC_RECEIVE_IMMEDIATE o MC_RECEIVE_AND_WAIT verbo para recibir realmente los datos o la notificación de estado.
El verbo MC_POST_ON_RECEIPT implementa los verbos POST_ON_RECEIPT y TEST tal y como se describe en el manual del programador de transacciones de IBM para LU Type 6.2.
En la estructura siguiente se describe el bloque de control de verbos usado por el verbo MC_POST_ON_RECEIPT .
Sintaxis
struct mc_post_on_receipt {
unsigned short opcode;
unsigned char opext;
unsigned char reserv1;
unsigned char primary_rc;
unsigned long secondary_rc;
unsigned char tp_id[8];
unsigned long conv_id;
unsigned short reserv2;
unsigned char reserv3;
unsigned char reserv4;
unsigned short max_len;
unsigned short reserv5;
unsigned char * reserv6;
unsigned char reserv7[5];
unsigned long sema;
};
Miembros
opcode
Parámetro proporcionado. Especifica el código de operación de verbo, AP_M_POST_ON_RECEIPT.
opext
Parámetro proporcionado. Especifica la extensión de operación de verbo, AP_MAPPED_CONVERSATION.
reserv1
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 porRECEIVE_ALLOCATE en el TP invocado.
conv_id
Parámetro proporcionado. Proporciona el identificador de conversación. El valor de este parámetro lo devuelve MC_ALLOCATE en el TP invocado o por RECEIVE_ALLOCATE en el TP invocado.
reserv2
Campo reservado.
reserv3
Campo reservado.
reserv4
Campo reservado.
max_len
Parámetro proporcionado. Especifica la longitud de los datos que desencadena APPC para publicar una notificación en el TP.
reserv5
Campo reservado.
reserv6
Campo reservado.
reserv7
Campo reservado.
Sema
Parámetro proporcionado. Especifica el identificador de un evento Win32. El TP debe haber creado el evento y el TP es responsable de asegurarse de que se restablezca antes de que se realice una llamada y después de que se complete el verbo.
Códigos de retorno
AP_OK
Código de retorno principal; el verbo se ha ejecutado correctamente.
AP_DATA
Código de retorno secundario; los datos están disponibles para que el programa lo reciba.
AP_NOT_DATA
Código de retorno secundario; información distinta de los datos disponibles para que el programa reciba.
AP_CANCELLED
Código de retorno principal; se canceló el verbo.
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_INVALID_SEMAPHORE_HANDLE
Código de retorno secundario; El parámetro sema no se estableció en un valor 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_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 MC_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; El LU del asociado 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 o finalizar un componente necesario durante el procesamiento del verbo. Por tanto, no se pudo establecer la comunicación. Consulte al administrador del sistema para aplicar una acción correctiva.AP_DEALLOC_ABEND_PROG
Código de retorno principal; la conversación se ha desasignado por uno de los siguientes motivos:El TP de asociado emitido MC_DEALLOCATE.
El TP del asociado ha encontrado un ABEND, lo que hace que la LU del asociado envíe una solicitud de MC_DEALLOCATE .
AP_DEALLOC_NORMAL
Código de retorno principal; el TP del asociado ha desasignado la conversación sin solicitar confirmación y ha emitido MC_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
AP_PROG_ERROR_NO_TRUNC
Código de retorno principal; el TP del asociado ha emitido MC_SEND_ERROR 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 emitió MC_SEND_ERROR. Los datos enviados pero aún no recibidos se purgan.AP_PROG_ERROR_TRUNC
Código de retorno principal; el TP del asociado ha emitido MC_SEND_ERROR mientras la conversación estaba en estado SEND. Los datos se han truncado.AP_SVC_ERROR_NO_TRUNC
Código de retorno principal; el TP de asociado (o LU de asociado) emitido MC_SEND_ERROR con err_type establecido en AP_SVC mientras se encuentra en RECEIVE, PENDING_POST, CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE estado. Los datos enviados al TP del asociado no se truncaron.AP_SVC_ERROR_PURGING
Código de retorno principal; el TP de asociado (o LU de asociado) emitido MC_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_TRUNC
Código de retorno principal; el TP de asociado (o LU de asociado) emitido MC_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 los datos enviados al TP del asociado se hayan truncado.
Comentarios
Aunque un verbo MC_POST_ON_RECEIPT está pendiente, se pueden emitir los siguientes verbos en la misma conversación:
La emisión de cualquiera de los verbos siguientes antes de completar el verbo asincrónico MC_POST_ON_RECEIPT hace que se cancele el MC_POST_ON_RECEIPT verbo (se señala el evento Win32 y el código de retorno principal del bloque de control de verbos se establece en AP_CANCELLED).