SLI_OPEN
El SLI_OPEN verbo transfiere el control de la unidad lógica (LU) especificada a la aplicación de aplicación de unidad lógica (LUA) de Microsoft® Windows®. SLI_OPEN establece una sesión entre el punto de control de servicios del sistema (SSCP) y la LU especificada, así como una sesión lu-LU.
En la estructura siguiente se describe el miembro LUA_COMMON del bloque de control de verbos (VCB) usado por SLI_OPEN.
La segunda unión de sintaxis describe el miembro LUA_SPECIFIC del VCB usado por SLI_OPEN. Otros miembros de la unión se omiten para mayor claridad.
Sintaxis
struct LUA_COMMON {
unsigned short lua_verb;
unsigned short lua_verb_length;
unsigned short lua_prim_rc;
unsigned long lua_sec_rc;
unsigned short lua_opcode;
unsigned long lua_correlator;
unsigned char lua_luname[8];
unsigned short lua_extension_list_offset;
unsigned short lua_cobol_offset;
unsigned long lua_sid;
unsigned short lua_max_length;
unsigned short lua_data_length;
char FAR * lua_data_ptr;
unsigned long lua_post_handle;
struct LUA_TH lua_th;
struct LUA_RH lua_rh;
struct LUA_FLAG1 lua_flag1;
unsigned char lua_message_type;
struct LUA_FLAG2 lua_flag2;
unsigned char lua_resv56[7];
unsigned char lua_encr_decr_option;
};
union LUA_SPECIFIC {
struct union SLI_OPEN open;
};
The SLI_OPEN structure contains the following nested structures and members:
struct LUA_EXT_ENTRY {
unsigned char lua_routine_type;
unsigned char lua_module_name[9];
unsigned char lua_procedure_name[33];
} ;
struct SLI_OPEN {
unsigned char lua_init_type;
unsigned char lua_resv65;
unsigned short lua_wait;
struct LUA_EXT_ENTRY lua_open_extension[3];
unsigned char lua_ending_delim;
} ;
Members
lua_verb
Parámetro proporcionado. Contiene el código de verbo, LUA_VERB_SLI para verbos de la interfaz de nivel de sesión (SLI).
lua_verb_length
Parámetro proporcionado. Especifica la longitud en bytes del VCB lua. Debe contener la longitud del registro de verbo que se va a emitir.
lua_prim_rc
Código de retorno principal establecido por LUA al finalizar el verbo. Los códigos de retorno válidos varían en función del verbo LUA emitido.
lua_sec_rc
Código de retorno secundario establecido por LUA al finalizar el verbo. Los códigos de retorno válidos varían en función del verbo LUA emitido.
lua_opcode
Parámetro proporcionado. Contiene el código de comando LUA (código de operación de verbo) para el verbo que se va a emitir, LUA_OPCODE_SLI_OPEN.
lua_correlator
Parámetro proporcionado. Contiene un valor proporcionado por el usuario que vincula el verbo con otra información proporcionada por el usuario. LUA no usa ni cambia esta información. Este parámetro es opcional.
lua_luname
Parámetro proporcionado. Especifica el nombre ASCII de la LU local usada por la sesión de LUA de Windows.
SLI_OPEN requiere este parámetro.
Este parámetro tiene ocho bytes de longitud, rellenado a la derecha con espacios (0x20) si el nombre tiene más de ocho caracteres.
lua_extension_list_offset
Parámetro proporcionado. Especifica el desplazamiento desde el inicio del VCB a la lista de extensiones de bibliotecas de vínculos dinámicos (DLL) proporcionadas por el usuario. El valor debe ser el principio de un límite de palabra a menos que no haya ninguna lista de extensiones. En este caso, el valor debe establecerse en cero.
Si SLI_OPEN no usa esta opción, este miembro debe establecerse en cero.
lua_cobol_offset
LuA no se usa en Microsoft® Host Integration Server y debe ser cero.
lua_sid
Parámetro devuelto. Especifica el identificador de sesión.
lua_max_length
No se usa en SLI_OPEN y debe establecerse en cero.
lua_data_length
Parámetro proporcionado. Especifica la longitud real de los datos que se envían.
lua_data_ptr
Puntero al búfer proporcionado por la aplicación que contiene los datos que se van a enviar para SLI_OPEN.
Tanto los comandos SNA como los datos se colocan en este búfer y pueden estar en formato de código decimal codificado binario extendido (EBCDIC).
Cuando se emite SLI_OPEN, este parámetro puede ser uno de los siguientes:
Mensaje LOGON para el flujo normal de SSCP cuando el tipo de inicialización es secundario con un mensaje LOGON sin formato.
Unidad de solicitud/respuesta (RU) para INITSELF. Cuando el tipo de inicialización es secundario con INITSELF, se proporcionan los datos necesarios para la aplicación.
Para todos los demás tipos abiertos, este campo debe establecerse en cero.
Esta información la proporciona la aplicación LUA de Windows.
lua_post_handle
Parámetro proporcionado. Se usa en Microsoft Windows Server si los eventos van a realizar notificaciones asincrónicas. Esta variable contiene el identificador del evento que se va a indicar o un identificador de ventana.lua_th
No se usa en SLI_OPEN y debe establecerse en cero.lua_rh
No se usa en SLI_OPEN y debe establecerse en cero.lua_flag1
No se usa en SLI_OPEN y debe establecerse en cero.lua_message_type
No se usa en SLI_OPEN y debe establecerse en cero.lua_flag2
Parámetro devuelto. Contiene marcas para los mensajes devueltos por LUA. Sus subparámetros son los siguientes:lua_flag2.async
Indica que el verbo de interfaz LUA se completó de forma asincrónica si se establece en 1.
lua_resv56
Parámetro proporcionado. Campo reservado usado por SLI_OPEN y RUI_INIT. Para obtener más información, vea la sección Comentarios.lua_resv56[1]
Parámetro proporcionado. Este parámetro debe establecerse en cero.
lua_resv56[2]
Parámetro proporcionado. Indica si una aplicación SLI puede acceder a las LU configuradas como 3270 LU, además de las LUA. Si este parámetro se establece en 1, se puede acceder a 3270 RU.
lua_resv56[3]
Parámetro proporcionado. Indica si se admiten lecturas incompletas. Si este parámetro se establece en 1, se admiten lecturas incompletas o truncadas. Para obtener más información, consulte los comentarios de RUI_READ.
lua_encr_decr_option
No se usa en SLI_OPEN y debe establecerse en cero.open
Miembro de unión de LUA_SPECIFIC utilizado por SLI_OPEN. Conjunto proporcionado de parámetros contenidos en una estructura de SLI_OPEN necesaria con SLI_OPEN.open.lua_init_type
Parámetro proporcionado. Define cómo se inicializa la sesión lu-LU mediante la interfaz lua de Windows.
Los valores válidos son los siguientes:
LUA_INIT_TYPE_SEC_IS
LUA_INIT_TYPE_SEC_LOG
LUA_INIT_TYPE_PRIM
LUA_INIT_TYPE_PRIM_SSCP
open.lua_resv65
Campo reservado.
open.lua_wait
Parámetro proporcionado. Representa un tiempo de espera de reintento secundario que indica el número de segundos que la interfaz LUA de Windows debe esperar antes de volver a intentar la transmisión del INITSELF o del mensaje LOGON después de que el host envíe cualquiera de estos mensajes:
Una respuesta negativa y el código de retorno secundario es una de las siguientes:
RESOURCE_NOT_AVAILABLE (0x08010000)SESSION_LIMIT_EXCEEDED (0x08050000) SESSION_SERVICE_PATH_ERROR (0x087D0000)
Tenga en cuenta que SLI_OPEN finaliza con un error si lua_wait está establecido en cero y se produce uno de los anteriores.
Mensaje de error de procedimiento de servicios de red (NSPE).
Un comando NOTIFY, que indica un error de procedimiento.
open.lua_open_extension
Parámetro proporcionado. Contiene una lista de archivos DLL de extensión proporcionados por la aplicación para procesar los comandos BIND, STSN y CRV.
open.open_extension.lua_routine_type
Tipo de rutina de extensión. Los valores legales son:
LUA_ROUTINE_TYPE_BIND
LUA_ROUTINE_TYPE_CRV
LUA_ROUTINE_TYPE_END (indica el final de la lista de extensiones)
LUA_ROUTINE_TYPE_STSN
open.open_extension.lua_module_name
Parámetro proporcionado. Proporciona el nombre del módulo ASCII para el archivo DLL de extensión proporcionado por el usuario. El nombre del módulo puede tener hasta ocho caracteres, con los bytes restantes establecidos en 0x00.
open.open_extension.lua_procedure_name
Parámetro proporcionado. Proporciona el nombre del procedimiento en ASCII para el archivo DLL de extensión proporcionado por el usuario. El nombre del procedimiento puede tener hasta 32 caracteres, con los bytes restantes establecidos en 0x00.
open.lua_ending_delim
Delimitador de lista de extensiones.
Códigos de retorno
LUA_OK
Código de retorno principal; el verbo se ha ejecutado correctamente.
LUA_SEC_OK
Código de retorno secundario; no existe información adicional para LUA_OK.
LUA_PARAMETER_CHECK
Código de retorno principal; el verbo no se ha ejecutado debido a un error en un parámetro.
LUA_INVALID_LUNAME
Código de retorno secundario; se especificó un nombre de lua_luname no válido.
LUA_BAD_SESSION_ID
Código de retorno secundario; se especificó un valor no válido para lua_sid en el VCB.
LUA_BAD_DATA_PTR
Código de retorno secundario; el parámetro lua_data_ptr no contiene un puntero válido o no apunta a un segmento de lectura y escritura y se requieren datos proporcionados.
LUA_DATA_SEGMENT_LENGTH_ERROR
Código de retorno secundario; se produjo una de las siguientes acciones:
El segmento de datos proporcionado para SLI_RECEIVE o SLI_SEND no es un segmento de datos de lectura y escritura según sea necesario.
El segmento de datos proporcionado para SLI_RECEIVE no es siempre que se proporcione en lua_max_length.
El segmento de datos proporcionado para SLI_SEND no es siempre que se proporcione en lua_data_length.
LUA_RESERVED_FIELD_NOT_ZERO
Código de retorno secundario; Un parámetro reservado para el verbo que acaba de emitir no se establece en cero.
LUA_INVALID_POST_HANDLE
Código de retorno secundario; para un sistema operativo Microsoft Windows que usa eventos como método de contabilización asincrónica, el VCB de LUA de Windows no contiene un identificador de eventos válido.
LUA_VERB_LENGTH_INVALID
Código de retorno secundario; Un verbo LUA se emitió con un valor para lua_verb_length inesperado por LUA.
LUA_INVALID_OPEN_INIT_TYPE
Código de retorno secundario; el valor del lua_init_type contenido en SLI_OPEN no es válido.
LUA_INVALID_OPEN_DATA
Código de retorno secundario; el lua_init_type del SLI_OPEN emitido se establece en LUA_INIT_TYPE_SEC_IS cuando el búfer de datos no tiene un comando INITSELF válido.
LUA_INVALID_OPEN_ROUTINE_TYPE
Código de retorno secundario; el lua_open_routine_type de la lista SLI_OPEN de rutinas de extensión no es válido.
LUA_DATA_LENGTH_ERROR
Código de retorno secundario; la aplicación no proporcionó los datos proporcionados por el usuario requeridos por el verbo emitido. Tenga en cuenta que cuando se emite SLI_SEND para un comando LUSTAT de SNA, se requiere el estado (en cuatro bytes) y que cuando se emite SLI_OPEN con inicialización secundaria, se requieren datos.
LUA_INVALID_SLI_ENCR_OPTION
Código de retorno secundario; El parámetro lua_encr_decr_option se estableció en 128 en SLI_OPEN, que no se admite para la opción de procesamiento de cifrado y descifrado.
LUA_STATE_CHECK
Código de retorno principal; el verbo no se ejecutó porque se emitió en un estado no válido.LUA_NOT_ACTIVE
Código de retorno secundario; LUA no estaba activo en Microsoft Host Integration Server o SNA Server cuando se emitió un verbo LUA.
LUA_UNEXPECTED_SNA_SEQUENCE
Código de retorno secundario; se recibieron datos o comandos inesperados del host mientras SLI_OPEN estaba procesando.
LUA_NEG_RSP_FROM_BIND_ROUTINE
Código de retorno secundario; la rutina de SLI_BIND proporcionada por el usuario respondió negativamente a BIND. SLI_OPEN finalizó sin éxito.
LUA_NEG_RSP_FROM_STSN_ROUTINE
Código de retorno secundario; la rutina SLI STSN proporcionada por el usuario respondió negativamente al STSN. SLI_OPEN finalizó sin éxito.
LUA_PROCEDURE_ERROR
Código de retorno secundario; Un error de procedimiento host se indica mediante la recepción de un mensaje NSPE o NOTIFY. El código de retorno se publica en SLI_OPEN cuando no se usa la opción de reintento. Para usar la opción de restablecimiento, establezca lua_wait en un valor distinto de cero. El comando LOGON o INITSELF se reintentará hasta que el host esté listo o hasta que emita SLI_CLOSE.
LUA_RECEIVED_UNBIND
Código de retorno secundario; la unidad lógica principal (PLU) envió un comando UNBIND de SNA a la interfaz LUA cuando una sesión estaba activa. Como resultado, la sesión se detuvo.
LUA_SLI_LOGIC_ERROR
Código de retorno secundario; La interfaz LUA encontró un error interno en la lógica.
LUA_NO_RUI_SESSION
Código de retorno secundario; no se ha inicializado ninguna sesión para el verbo LUA emitido, o algún verbo distinto de SLI_OPEN se emitió antes de que se inicializara la sesión.
LUA_RESOURCE_NOT_AVAILABLE
Código de retorno secundario; la unidad lógica, unidad física, vínculo o estación de vínculo especificada en la unidad de solicitud no está disponible. Este código de retorno se publica en SLI_OPEN cuando un recurso no está disponible a menos que use la opción de reintento.
Para usar la opción de reintento, establezca lua_wait en un valor distinto de cero. El comando LOGON o INITSELF se reintentará hasta que el host esté listo o hasta que emita SLI_CLOSE.
LUA_SESSION_LIMIT_EXCEEDED
Código de retorno secundario; la sesión solicitada no se activó porque una NAU está en su límite de sesión. Este código de sentido de SNA se aplica a las siguientes solicitudes: BID, CINIT, INIT y ACTDRM.
El código se publicará en SLI_OPEN cuando una NAU esté en su límite, a menos que use la opción RETRY.
Para usar la opción de restablecimiento, establezca lua_wait en un valor distinto de cero. El comando LOGON o INITSELF se reintentará hasta que el host esté listo o hasta que emita SLI_CLOSE.
LUA_LU_COMPONENT_DISCONNECTED
Código de retorno secundario; Un componente de LU no está disponible porque no está conectado correctamente. Asegúrese de que la alimentación está activada.
LUA_NEGOTIABLE_BIND_ERROR
Código de retorno secundario; se recibió un BIND negociable, que solo permite el SLI cuando se proporciona una rutina de SLI_BIND proporcionada por el usuario con SLI_OPEN.
LUA_BIND_FM_PROFILE_ERROR
Código de retorno secundario; solo los perfiles de encabezado de administración de archivos 3 y 4 son compatibles con la interfaz LUA. Se encontró un perfil de administración de archivos distinto de 3 o 4 en bind.
LUA_BIND_TS_PROFILE_ERROR
Código de retorno secundario; Solo los perfiles del Servicio de transmisión (TS) 3 y 4 son compatibles con la interfaz LUA. Se encontró un perfil de TS distinto de 3 o 4 en bind.
LUA_BIND_LU_TYPE_ERROR
Código de retorno secundario; Solo LU 0, LU 1, LU 2 y LU 3 son compatibles con LUA. Se encontró una LU distinta de 0, 1, 2 o 3.
LUA_SSCP_LU_SESSION_NOT_ACTIVE
Código de retorno secundario; el SSCP-LU necesario está inactivo. La información específica del código de sentido está en bytes 2 y 3. La configuración válida es 0x0000, 0x0001, 0x0002, 0x0003 y 0x0004.
LUA_SESSION_SERVICES_PATH_ERROR
Código de retorno secundario; Una solicitud de servicios de sesión no se puede redirigir a una ruta de acceso de sesión SSCP-SSCP. La información específica del código de sentido en bytes 2 y 3 proporciona más información sobre por qué no se puede redirigir la solicitud.
LUA_UNSUCCESSFUL
Código de retorno principal; el registro de verbo proporcionado era válido, pero el verbo no se completó correctamente.LUA_VERB_RECORD_SPANS_SEGMENTS
Código de retorno secundario; el parámetro de longitud VCB de LUA más el desplazamiento del segmento está más allá del final del segmento.
LUA_SESSION_ALREADY_OPEN
Código de retorno secundario; ya hay una sesión abierta para el nombre de LU especificado en SLI_OPEN.
LUA_INVALID_PROCESS
Código de retorno secundario; la sesión para la que se emitió un verbo LUA no está disponible porque otro proceso posee la sesión.
LUA_LINK_NOT_STARTED
Código de retorno secundario; el LUA no pudo activar el vínculo de datos durante la inicialización de la sesión.
LUA_INVALID_ADAPTER
Código de retorno secundario; La configuración del control de vínculo de datos (DLC) está en error o el archivo de configuración está dañado.
LUA_ENCR_DECR_LOAD_ERROR
Código de retorno secundario; Se recibió un código de retorno inesperado de la función OS/2 DosLoadModule al intentar cargar el módulo de vínculo dinámico de cifrado o descifrado proporcionado por el usuario.
LUA_ENCR_DECR_PROC_ERROR
Código de retorno secundario; Se recibió un código de retorno inesperado de la función OS/2 DosGetProcAddr al intentar obtener la dirección del procedimiento dentro del módulo de vínculo dinámico de cifrado o descifrado proporcionado por el usuario.
LUA_NEG_NOTIFY_RSP
Código de retorno secundario; el SSCP respondió negativamente a una solicitud NOTIFY emitida que indica que la LU secundaria era capaz de una sesión. El componente de mitad de sesión que recibió la solicitud entendió y admitía la solicitud, pero no pudo ejecutarla.
LUA_LU_INOPERATIVE
Código de retorno secundario; se produjo un error grave mientras el SLI intentaba detener la sesión. Esta LU no está disponible para las solicitudes LUA hasta que se recibe una unidad lógica de activación (ACTLU) del host.
LUA_CANCELED
Código de retorno principal; el código de retorno secundario proporciona el motivo para cancelar el comando.LUA_TERMINATED
Código de retorno secundario; la sesión se terminó cuando un verbo estaba pendiente. Se canceló el proceso de verbo.
LUA_IN_PROGRESS
Código de retorno principal; Se recibió un comando asincrónico, pero no se completó.LUA_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 programa de transacción (TP) y el nodo 2.1 de la unidad física (PU) se ha interrumpido (un error laN).
SnaBase en el equipo TPs encontró un ABEND.
LUA_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.LUA_INVALID_VERB_SEGMENT
Código de retorno principal; el bloque de control de verbo (VCB) se extendía más allá del final del segmento de datos.LUA_UNEXPECTED_DOS_ERROR
Código de retorno principal; después de emitir una llamada del sistema operativo, se recibió un código de retorno inesperado del sistema operativo y se especifica en el código de retorno secundario.LUA_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.LUA_INVALID_VERB
Código de retorno principal; El código de verbo o el código de operación, o ambos, no son válidos. El verbo no se ejecutó.
Comentarios
Para cada SLI_OPEN, la interfaz LUA de Windows:
Inicia la sesión de comunicación.
Lee y comprueba un comando BIND del host y lo pasa a la aplicación si se proporciona una rutina de extensión BIND.
Escribe una respuesta BIND.
Lee y procesa el comando STSN y lo pasa a la aplicación si se proporciona una extensión BIND (si es necesario).
Escribe la respuesta STSN (si es necesario).
Lee el comando CRV (si es necesario).
Escribe la respuesta CRV (si es necesario).
Lee y procesa el comando SDT.
Escribe la respuesta SDT.
La interfaz LUA de Windows realiza las siguientes funciones adicionales para las sesiones que emiten SLI_OPEN con el tipo abierto establecido en LUA_INIT_TYPE_SEC_IS o LUA_INIT_TYPE_SEC_LOG:
Escribe un INITSELF o un mensaje LOGON sin formato.
Lee y procesa una respuesta INITSELF o una respuesta de mensaje LOGON.
Todo el tráfico de mensajes SNA se administra mediante SLI_OPEN a través de la respuesta del comando SDT.
Para elegir una determinada LU configurada para LuA de Windows, la aplicación establece lua_luname en el nombre de LU en ASCII, rellenado con espacios finales si es necesario.
Cuando SLI_OPEN se publica con LUA_OK en el parámetro lua_prim_rc, SLI_OPEN completado correctamente y se estableció la sesión de flujo de datos lu-LU. La aplicación ahora puede emitir SLI_BID, SLI_CLOSE, SLI_PURGE, SLI_RECEIVE y SLI_SEND.
Cuando SLI_OPEN se publica con un código de retorno principal distinto de LUA_OK o LUA_IN_PROGRESS, el comando no ha establecido correctamente una sesión.
Al usar SLI_OPEN, una aplicación LUA de Windows debe proporcionar un tipo de inicialización de sesión. Los tipos válidos son los siguientes: