SEND_ERROR
El SEND_ERROR verbo notifica al programa de transacciones de asociado (TP) que el TP local ha encontrado un error de nivel de aplicación.
En la estructura siguiente se describe el bloque de control de verbos (VCB) usado por el verbo SEND_ERROR .
Sintaxis
struct send_error {
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 char rts_rcvd;
unsigned char err_type;
unsigned char err_dir;
unsigned char reserv3;
unsigned short log_dlen;
unsigned char FAR * log_dptr;
};
Miembros
opcode
Parámetro proporcionado. Especifica el código de operación de verbo, AP_B_SEND_ERROR.
opext
Parámetro proporcionado. Especifica la extensión de la 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. Proporciona el identificador de conversación. Allocatedevuelve el valor de este parámetro en el TP invocado o por RECEIVE_ALLOCATE en el TP invocado.
rts_rcvd
Parámetro devuelto. Indica si el TP de asociado emitió REQUEST_TO_SEND. Entre los valores posibles se incluyen:
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. Para cambiar al estado RECEIVE, el TP local puede usar PREPARE_TO_RECEIVE, RECEIVE_AND_WAIT o RECEIVE_AND_POST.
AP_NO indica que el TP del asociado no ha emitido REQUEST_TO_SEND.
err_type
Parámetro proporcionado. Indica el tipo de error que se está notificando: programa de aplicación o programa de servicio.AP_PROG indica que el error se va a notificar a un programa de aplicación de usuario final. Este valor hace que APPC envíe uno de los siguientes códigos de retorno al TP del asociado:
AP_PROG_ERROR_NO_TRUNC
AP_PROG_ERROR_PURGING
AP_PROG_ERROR_TRUNC
AP_SVC indica que se va a notificar el error a un programa de servicio. Este valor hace que APPC envíe uno de los siguientes códigos de retorno al TP del asociado:
AP_SVC_ERROR_NO_TRUNC
AP_SVC_ERROR_PURGING
AP_SVC_ERROR_TRUNC
err_dir
Parámetro proporcionado. Indica si el error es con datos que se acaban de recibir o con datos que están a punto de enviarse. Use este parámetro solo cuando la conversación esté en estado SEND_PENDING. De lo contrario, se omite el parámetro . A continuación se muestran los valores permitidos:AP_RCV_DIR_ERROR indica que el TP emitido SEND_ERROR después de detectar un error asociado a los datos que acaba de recibir.
AP_SEND_DIR_ERROR indica que el TP emitido SEND_ERROR después de detectar un error asociado a los datos que iba a enviar. Por ejemplo, el TP encontró un error al leer datos de la unidad de disco.
reserv3
Campo reservado.log_dlen
Parámetro proporcionado para conversaciones básicas; especifica el número de bytes de datos que se van a enviar al archivo de registro de errores. El intervalo va de 0 a 32767.Una longitud de cero indica que no hay datos del registro de errores.
log_dptr
Parámetro proporcionado para conversaciones básicas; especifica la dirección del búfer de datos que contiene información de error. Los datos se envían al registro de errores local y a la unidad lógica (LU) del asociado.Este parámetro lo usa SEND_ERROR si log_dlen es mayor que cero.
Para Microsoft 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 caber completamente dentro de esta área.
El TP debe dar formato a los datos de error como una variable de registro de errores de GDS. Para obtener más información, consulte los manuales de IBM SNA.
Códigos de retorno
AP_OK
Código de retorno principal; el verbo se ha ejecutado correctamente.
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 coincidía con un identificador de conversación asignado por APPC.
AP_BAD_TP_ID
Código de retorno secundario; el valor de tp_id no coincidía con un identificador de TP asignado por APPC.
AP_BAD_ERROR_DIRECTION
Código de retorno secundario; APPC no reconoció el err_dir especificado.
AP_INVALID_DATA_SEGMENT
Código de retorno secundario; los datos de error del archivo de registro eran más largos que el segmento asignado para contener los datos de error o la dirección del búfer de datos de error era incorrecta.
AP_SEND_ERROR_BAD_TYPE
Código de retorno secundario; el valor de err_type no era válido.
AP_SEND_ERROR_LOG_LL_WRONG
Código de retorno secundario; el campo LL de la variable GDS del registro de errores no coincidía con la longitud real de los datos.
Los siguientes códigos de retorno se pueden generar cuando se emite SEND_ERROR en cualquier estado permitido:
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_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 el mismo 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.Los siguientes códigos de retorno solo se pueden generar si SEND_ERROR se emite en estado SEND:
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; 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_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.Los siguientes códigos de retorno solo se pueden generar si SEND_ERROR se emite en estado SEND:
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_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.El siguiente código de retorno solo se puede generar si SEND_ERROR se emite en estado RECEIVE:
AP_DEALLOC_NORMAL
Código de retorno principal; este código devuelto no indica un error.El TP de asociado emitió DEALLOCATE con dealloc_type establecido en uno de los siguientes:
AP_FLUSH
AP_SYNC_LEVEL con el nivel de sincronización de la conversación especificada como AP_NONE
Comentarios
La conversación puede estar en cualquier estado excepto RESET cuando el TP emite este verbo. El estado de la conversación debe ser SEND_PENDING si se usa err_dir .
El TP local envía la notificación de error inmediatamente al TP del asociado; no contiene la información en el búfer de envío de lu local.
Tras la ejecución correcta de este verbo, la conversación está en estado SEND para el TP local y en el estado RECEIVE del TP del asociado.
El nuevo estado viene determinado por primary_rc. Los posibles cambios de estado se resumen en la tabla siguiente.
primary_rc | Nuevo estado |
---|---|
AP_OK | ENVIAR |
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_SVC_ERROR_PURGING | RECEIVE |
Si la conversación está en estado RECEIVE cuando el TP emite SEND_ERROR, APPC purga los datos entrantes. Estos datos incluyen:
Datos enviados por SEND_DATA.
Devuelve indicadores de código.
Solicitudes de confirmación.
Solicitudes de desasignación.
APPC no purga un indicador de solicitud a envío entrante. APPC reemplaza los indicadores de código de retorno entrantes purgados por otros códigos de retorno. El código de retorno principal AP_OK reemplaza los siguientes indicadores de código devueltos purgados:
AP_PROG_ERROR_NO_TRUNC
AP_PROG_ERROR_PURGING
AP_PROG_ERROR_TRUNC
AP_SVC_ERROR_NO_TRUNC
AP_SVC_ERROR_PURGING
AP_SVC_ERROR_TRUNC
El código de retorno principal AP_DEALLOC_NORMAL reemplaza los siguientes indicadores de código devueltos purgados:
AP_ALLOCATION_ERROR
AP_ALLOCATION_FAILURE_NO_RETRY
AP_ALLOCATION_FAILURE_RETRY
AP_CONVERSATION_TYPE_MISMATCH
AP_DEALLOC_ABEND
AP_DEALLOC_ABEND_PROG
AP_DEALLOC_ABEND_SVC
AP_DEALLOC_ABEND_TIMER
AP_PIP_NOT_ALLOWED
AP_PIP_NOT_SPECIFIED_CORRECTLY
AP_SECURITY_NOT_VALID
AP_SYNC_LEVEL_NOT_SUPPORTED
AP_TP_NAME_NOT_RECOGNIZED
AP_TRANS_PGM_NOT_AVAIL_NO_RETRY
AP_TRANS_PGM_NOT_AVAIL_RETRY
Cuando la conversación está en estado SEND_PENDING, APPC notifica los siguientes códigos de retorno al TP del asociado en función del valor de err_dir:
AP_PROG_ERROR_PURGING
El TP local emitido SEND_ERROR con RECEIVE como err_dir.AP_PROG_ERROR_NO_TRUNC
El TP local emitido SEND_ERROR con SEND como err_dir.AP_SVC_ERROR_PURGING
El TP local emitido SEND_ERROR con RECEIVE como err_dir.AP_SVC_ERROR_NO_TRUNC
El TP local emitido SEND_ERROR con SEND como err_dir.