RUI_WRITE
El verbo RUI_WRITE envía una unidad de solicitud o respuesta de SNA desde la aplicación de unidad lógica (LUA) al host a través de la sesión de LU o de la sesión del punto de control de servicios del sistema (SSCP) y envía respuestas, comandos SNA y datos de una aplicación LUA de Microsoft® Windows® al LUA host.
En la estructura siguiente se describe el miembro LUA_COMMON del bloque de control de verbos (VCB) usado por RUI_WRITE.
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;
};
Members
lua_verb
Parámetro proporcionado. Contiene el código de verbo, LUA_VERB_RUI para verbos de interfaz de unidad de solicitud (RUI).
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_RUI_WRITE.
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.
RUI_WRITE solo requiere este parámetro si lua_sid es cero.
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
RuI no se usa en Microsoft® Host Integration Server y debe establecerse en cero.
lua_cobol_offset
LuA no se usa en Host Integration Server y debe ser cero.
lua_sid
Parámetro proporcionado y devuelto. Especifica el identificador de sesión y lo devuelve SLI_OPEN y RUI_INIT. Otros verbos usan este parámetro para identificar la sesión usada para el comando . Si otros verbos usan el parámetro lua_luname para identificar sesiones, establezca el parámetro lua_sid en cero.
lua_max_length
No se usa en RUI_WRITE y debe establecerse en cero.
lua_data_length
Parámetro devuelto. Especifica la longitud de los datos devueltos en lua_peek_data para el verbo RUI_BID .
lua_data_ptr
Apunta al búfer que contiene los datos que se van a enviar al host mediante RUI_WRITE.
Tanto los comandos SNA como los datos se colocan en este búfer y pueden estar en formato EBCDIC.
lua_post_handle
Parámetro proporcionado. Se usa en Microsoft Windows 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
Parámetro devuelto. Contiene el encabezado de transmisión SNA (TH) del mensaje enviado o recibido. Se establecen varios subparámetros para las funciones de escritura y se devuelven para las funciones de lectura y puja. Sus subparámetros son los siguientes:
lua_th.flags_fid
Tipo de identificación de formato 2, cuatro bits.
lua_th.flags_mpf
Campo de asignación de segmentación, dos bits. Define el tipo de segmento de datos. Valores válidos son:
0x00 segmento medio0x04 último segmento0x08 primer segmento0x0C solo segmento
lua_th.flags_odai
Indicador de asignador de campo de dirección de origen:campo de dirección de destino (OAF–DAF), un bit.
lua_th.flags_efi
Indicador de flujo acelerado, un bit.
lua_th.daf
Campo de dirección de destino (DAF), un carácter sin signo.
lua_th.oaf
Campo de dirección de origen (OAF), un carácter sin signo.
lua_th.snf
Campo número de secuencia, un char sin signo[2].
lua_rh
Parámetro devuelto. Contiene el encabezado de solicitud/respuesta de SNA (RH) del mensaje enviado o recibido. Para rh para RUI_WRITE, se usan todos los campos excepto el indicador de respuesta en cola (lua_rh.qri) y el indicador de velocidad (lua_rh.pi). Sus subparámetros son los siguientes:
lua_rh.rri
Indicador de solicitud-respuesta, un bit.
lua_rh.ruc
Categoría ru, dos bits. Valores válidos son:
LUA_RH_FMD (0x00) segmento de datos FMLUA_RH_NC (0x20) Control de red LUA_RH_DFC (0x40) Control de flujo de datosLUA_RH_SC (0x60) Control de sesión
lua_rh.fi
Indicador de formato, un bit.
lua_rh.sdi
Los datos de detección incluyen un indicador, un bit.
lua_rh.bci
Indicador de cadena de inicio, un bit.
lua_rh.eci
Indicador de cadena final, un bit.
lua_rh.dr1i
Indicador de respuesta definitiva 1, un bit.
lua_rh.dr2i
Indicador de respuesta definitiva 2, un bit.
lua_rh.ri
Indicador de respuesta de excepción (para una solicitud) o indicador de tipo de respuesta (para una respuesta), un bit.
lua_rh.qri
Indicador de respuesta en cola, un bit.
lua_rh.pi
Indicador de velocidad, un poco.
lua_rh.bbi
Indicador de corchete inicial, un bit.
lua_rh.ebi
Indicador de corchete final, un bit.
lua_rh.cdi
Indicador de dirección de cambio, un bit.
lua_rh.csi
Indicador de selección de código, un bit.
lua_rh.edi
Indicador de datos cifrado, un bit.
lua_rh.pdi
Indicador de datos rellenado, un bit.
lua_flag1
Parámetro proporcionado. Contiene una estructura de datos que contiene marcas para los mensajes proporcionados por la aplicación. Sus subparámetros son los siguientes:
lua_flag1.bid_enable
Indicador de habilitación de puja, un bit.
lua_flag1.close_abend
Cierre el indicador inmediato, un bit.
lua_flag1.nowait
No hay ninguna marca de datos de espera, un bit.
lua_flag1.sscp_exp
Flujo acelerado de SSCP, un bit.
lua_flag1.sscp_norm
Flujo normal de SSCP, un bit.
lua_flag1.lu_exp
Flujo acelerado de LU, un bit.
lua_flag1.lu_norm
Flujo normal de LU, un poco.
Establezca una de las marcas siguientes en 1 para indicar en qué flujo de mensaje se enviarán los datos:
lua_flag1.sscp_exp
lua_flag1.sscp_norm
lua_flag1.lu_exp
lua_flag1.lu_norm
lua_message_type
No se usa en RUI_WRITE 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.bid_enable
Indica que RUI_BID se ha vuelto a habilitar correctamente si se ha establecido en 1.
lua_flag2.async
Indica que el verbo de la interfaz LUA se completó de forma asincrónica si se establece en 1.
lua_flag2.sscp_exp
Indica el flujo acelerado de SSCP si se establece en 1.
lua_flag2.sscp_norm
Indica el flujo normal de SSCP si se establece en 1.
lua_flag2.lu_exp
Indica el flujo acelerado de LU si se establece en 1.
lua_flag2.lu_norm
Indica el flujo normal de LU si se establece en 1.
lua_resv56
Reservado y debe establecerse en cero.
lua_encr_decr_option
Reservado y debe establecerse en cero.
Códigos de retorno
LUA_OK
Código de retorno principal; el verbo se ha ejecutado correctamente.
LUA_CANCELED
Código de retorno principal; el verbo no se completó correctamente porque otro verbo lo canceló.
LUA_TERMINATED
Código de retorno secundario; el verbo se canceló porque RUI_TERM se emitió para esta sesión.
LUA_PARAMETER_CHECK
Código de retorno principal; el verbo no se ha ejecutado debido a un error en un parámetro.
LUA_BAD_DATA_PTR
Código de retorno secundario; el parámetro lua_data_ptr contenía un valor 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_DUPLICATE_WRITE_FLOW
Código de retorno secundario; RUI_WRITE ya estaba pendiente para el flujo de sesión especificado en este verbo (el flujo de sesión se especifica estableciendo una de las marcas de flujo de lua_flag1 en 1). Solo una RUI_WRITE cada vez puede estar pendiente en cada flujo de sesión.
LUA_INVALID_FLOW
Código de retorno secundario; se estableció la marca de flujo lua_flag1.sscp_exp , lo que indica que el mensaje debe enviarse en el flujo acelerado de SSCP. LUA no permite que las aplicaciones envíen datos en este flujo.
LUA_INVALID_POST_HANDLE
Código de retorno secundario; para un sistema operativo 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_MULTIPLE_WRITE_FLOWS
Código de retorno secundario; más de una de las marcas de flujo de lua_flag1 se estableció en 1. Una y solo una de estas marcas deben establecerse en 1, para indicar en qué flujo de sesión se enviarán los datos.
LUA_REQUIRED_FIELD_MISSING
Código de retorno secundario; indica uno de los siguientes casos:
No se estableció ninguna de las marcas de flujo de lua_flag1 . Una y solo una de estas marcas deben establecerse en 1.
RUI_WRITE se usó para enviar una respuesta y la respuesta requería más datos de los proporcionados.
LUA_RESERVED_FIELD_NOT_ZERO
Código de retorno secundario; un campo reservado en el registro de verbo o un parámetro no utilizado por este verbo se estableció en un valor distinto de cero.
LUA_VERB_LENGTH_INVALID
Código de retorno secundario; Un verbo LUA se emitió con el valor de lua_verb_length inesperado por LUA.
LUA_STATE_CHECK
Código de retorno principal; el verbo no se ejecutó porque se emitió en un estado no válido.LUA_MODE_INCONSISTENCY
Código de retorno secundario; el mensaje de SNA enviado en RUI_WRITE no era válido en este momento. Esto se debe a intentar enviar datos en la sesión de LU antes de enlazar la sesión. Compruebe la secuencia de mensajes SNA enviados.
LUA_NO_RUI_SESSION
Código de retorno secundario; RUI_INIT aún no se ha completado correctamente para el nombre de LU especificado en este verbo.
LUA_UNSUCCESSFUL
Código de retorno principal; el registro de verbo proporcionado era válido, pero el verbo no se completó correctamente.LUA_FUNCTION_NOT_SUPPORTED
Código de retorno secundario; indica uno de los siguientes casos:
El bit lua_rh.fi (indicador de formato) se estableció en 1, pero el primer byte de la RU proporcionada no era un código de solicitud reconocido.
El parámetro lua_rh.ruc (categoría RU) especificó la categoría de control de red (NC); LUA no permite que las aplicaciones envíen solicitudes en esta categoría.
LUA_INVALID_PROCESS
Código de retorno secundario; el proceso OS/2 que emitió este verbo no era el mismo proceso que emitió RUI_INIT para esta sesión. Solo el proceso que inició una sesión puede emitir verbos en esa sesión.
LUA_INVALID_SESSION_PARAMETERS
Código de retorno secundario; la aplicación usó RUI_WRITE para enviar una respuesta positiva a un mensaje BIND recibido del host. Sin embargo, Host Integration Server no puede aceptar los parámetros BIND como se especifica y ha enviado una respuesta negativa al host. Para obtener más información sobre los perfiles BIND aceptados por Host Integration Server, consulte Consideraciones de SNA con LUA.
LUA_RSP_CORRELATION_ERROR
Código de retorno secundario; cuando se usa RUI_WRITE para enviar una respuesta, lua_th.snf (que indica el número de secuencia del mensaje recibido al que se responde) no contenía un valor válido.
LUA_RU_LENGTH_ERROR
Código de retorno secundario; el parámetro lua_data_length contenía un valor no válido. Al enviar datos en el flujo normal de LU, la longitud máxima es la especificada en bind recibido del host; para todos los demás flujos, la longitud máxima es de 256 bytes.
Nota
Cualquier otro código de retorno secundario es un código de detección SNA que indica que los datos de SNA proporcionados no eran válidos o no se pudieron enviar. Para obtener información sobre cómo interpretar los códigos de sentido de SNA que se pueden devolver, consulte Consideraciones de SNA con LUA.
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 interrumpió (un error laN).
SnaBase en el equipo TPs encontró un ABEND.
LUA_SESSION_FAILURE
Código de retorno principal; Se ha finalizado un componente de Host Integration Server necesario.LUA_LU_COMPONENT_DISCONNECTED
Código de retorno secundario; indica que se ha producido un error en la sesión de LUA debido a un problema con el servicio de vínculo o con la LU del host.
LUA_RUI_LOGIC_ERROR
Código de retorno secundario; se detectó un error interno en LUA. Este error no debe producirse durante el funcionamiento normal.
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ó.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_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.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.
Comentarios
RUI_INIT debe emitirse correctamente antes de que se emita este verbo.
Al enviar una solicitud SNA, se deben establecer todos los valores aplicables en el lua_rh . El encadenamiento y el corchete son responsabilidad de la aplicación.
Al enviar una respuesta, el tipo de respuesta determina la información RUI_WRITE necesaria. Para todas las respuestas, debe:
Establezca la marca lua_rh.rri seleccionada en 1.
Proporcione el número de secuencia en lua_th.snf para la solicitud a la que responde.
Para las respuestas de mensajes de varias cadenas, se debe usar el número de secuencia del último elemento de cadena recibido. Para obtener una respuesta a un mensaje de cadena múltiple que termina con un comando CANCEL, se usa el número de secuencia de comandos CANCEL.
Para respuestas positivas que solo requieren el código de solicitud, establezca lua_rh.ri en cero (lo que indica que la respuesta es positiva) y lua_data_length a cero (lo que indica que no se proporciona ningún dato). El código de solicitud se rellena mediante el RUI, utilizando el número de secuencia proporcionado.
Para las respuestas negativas, establezca lua_rh.ri en 1, lua_data_ptr en la dirección del código de detección de SNA y lua_data_length en la longitud del código de detección de SNA (cuatro bytes). La RUI usa el número de secuencia para rellenar el código de solicitud.
Para las respuestas positivas a los comandos BIND y STSN que requieren datos en las respuestas, establezca lua_data_ptr para que apunte a la respuesta y establezca lua_data_length en la longitud de los datos proporcionados en lua_data_ptr.
Aunque una RUI_WRITE existente está pendiente, puede emitir un segundo RUI_WRITE solo si especifica un flujo de sesión diferente del RUI_WRITE pendiente. No puede tener más de un RUI_WRITE pendiente para el mismo flujo de sesión.
RUI_WRITE se puede emitir en el flujo normal de SSCP en cualquier momento después de una RUI_INIT correcta. RUI_WRITE verbos en los flujos normales de LU acelerados o LU solo se permiten después de recibir un BIND y deben cumplir los protocolos especificados en bind.
La finalización correcta de RUI_WRITE indica que el mensaje se puso en cola correctamente en el vínculo de datos. No indica necesariamente que el mensaje se envió correctamente o que el host lo aceptó.
El ritmo se puede usar en la sesión media secundaria a principal (especificada en bind) para evitar que la aplicación LUA envíe más datos de los que puede controlar la LUA local o remota. Si este es el caso, luA puede retrasar un RUI_WRITE en el flujo normal de LU Y puede tardar algún tiempo en completarse.
Consulte también
RUI_INIT
RUI_READ
RUI_TERM
SLI_OPEN
SLI_PURGE
SLI_RECEIVE
SLI_SEND