RUI_WRITE

El verbo RUI_WRITE envía una unidad de respuesta o solicitud 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 de Microsoft® Windows ® LUA al LU 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;  
};  

Miembros

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 utilizada por la sesión Windows LUA.

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
No se usa por RUI 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 Medio 0x04 Último segmento 0x08 Primer segmento 0x0C 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 FM LUA_RH_NC (0x20) Control de flujo de datos LUA_RH_DFC (0x40) Control de flujo de datos LUA_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 Windows VCB de LUA 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 que intenta enviar datos en la sesión de LU antes de que la sesión esté enlazada. 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 las 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