RUI_WRITE

Le verbe RUI_WRITE envoie une unité de requête ou de réponse SNA de l’application d’unité logique (LUA) à l’hôte via la session LU ou la session de point de contrôle des services système (SSCP), et envoie des réponses, des commandes SNA et des données d’une® application Microsoft Windows ® LUA à l’unité lu hôte.

La structure suivante décrit le membre LUA_COMMON du bloc de contrôle de verbe (VCB) utilisé par RUI_WRITE.

Syntaxe

  
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;  
};  

Membres

lua_verb
Paramètre fourni. Contient le code du verbe, LUA_VERB_RUI pour les verbes RUI (Request Unit Interface).

lua_verb_length
Paramètre fourni. Spécifie la longueur en octets du VCB LUA. Elle doit contenir la longueur de l’enregistrement de verbe émis.

lua_prim_rc
Code de retour principal défini par LUA à l’achèvement du verbe. Les codes de retour valides varient selon le verbe LUA émis.

lua_sec_rc
Code de retour secondaire défini par LUA à la fin du verbe. Les codes de retour valides varient selon le verbe LUA émis.

lua_opcode
Paramètre fourni. Contient le code de commande LUA (code d’opération de verbe) pour que le verbe soit émis, LUA_OPCODE_RUI_WRITE.

lua_correlator
Paramètre fourni. Contient une valeur fournie par l’utilisateur qui lie le verbe avec d’autres informations fournies par l’utilisateur. LUA n’utilise pas ou ne modifie pas ces informations. Ce paramètre est facultatif.

lua_luname
Paramètre fourni. Spécifie le nom ASCII de la lu locale utilisée par la session LUA Windows.

RUI_WRITE nécessite uniquement ce paramètre si lua_sid est zéro.

Ce paramètre est long de huit octets, rembourré à droite avec des espaces (0x20) si le nom est inférieur à huit caractères.

lua_extension_list_offset
Non utilisé par RUI dans Microsoft® Host Integration Server et doit être défini sur zéro.

lua_cobol_offset
Non utilisé par LUA dans Host Integration Server et doit être égal à zéro.

lua_sid
Paramètre fourni et retourné. Spécifie l’identificateur de session et est retourné par SLI_OPEN et RUI_INIT. D’autres verbes utilisent ce paramètre pour identifier la session utilisée pour la commande. Si d’autres verbes utilisent le paramètre lua_luname pour identifier les sessions, définissez le paramètre lua_sid sur zéro.

lua_max_length
Non utilisé par RUI_WRITE et doit être défini sur zéro.

lua_data_length
Paramètre retourné. Spécifie la longueur des données retournées dans lua_peek_data pour le verbe RUI_BID .

lua_data_ptr
Pointe vers la mémoire tampon contenant les données à envoyer à l’hôte par RUI_WRITE.

Les commandes et les données SNA sont placées dans cette mémoire tampon et peuvent être au format EBCDIC.

lua_post_handle
Paramètre fourni. Utilisé sous Microsoft Windows si une notification asynchrone doit être effectuée par les événements. Cette variable contient le handle de l’événement à signaler ou à un handle de fenêtre.

lua_th
Paramètre retourné. Contient l’en-tête de transmission SNA (TH) du message envoyé ou reçu. Différents sous-paramètres sont définis pour les fonctions d’écriture et retournés pour les fonctions de lecture et d’offres. Ses sous-paramètres sont les suivants :

lua_th.flags_fid

Format de type d’identification 2, quatre bits.

lua_th.flags_mpf

Champ de mappage de segments, deux bits. Définit le type de segment de données. Les valeurs suivantes sont valides :

0x00 segment intermédiaire 0x04 dernier segment 0x08 premier segment 0x0C segment uniquement

lua_th.flags_odai

Indicateur d’attribution du champ d’adresse d’origine-destination (OAF-DAF), un bit.

lua_th.flags_efi

Indicateur de flux accéléré, un peu.

lua_th.daf

Champ d’adresse de destination (DAF), char non signé.

lua_th.oaf

Champ d’adresse d’origine (OAF), char non signé.

lua_th.snf

Champ numéro de séquence, char non signé[2].

lua_rh
Paramètre retourné. Contient l’en-tête de demande/réponse SNA (RH) du message envoyé ou reçu. Pour le RH pour RUI_WRITE, tous les champs à l’exception de l’indicateur de réponse en file d’attente (lua_rh.qri) et de l’indicateur de pacing (lua_rh.pi) sont utilisés. Ses sous-paramètres sont les suivants :

lua_rh.rri

Indicateur de réponse aux demandes, un bit.

lua_rh.ruc

Catégorie RU, deux bits. Les valeurs suivantes sont valides :

LUA_RH_FMD (0x00) segment de données FM LUA_RH_NC (0x20) Contrôle réseau LUA_RH_DFC (0x40) Contrôle de flux de données LUA_RH_SC (0x60) Contrôle de session

lua_rh.fi

Indicateur de format, un bit.

lua_rh.sdi

Les données de sens incluent l’indicateur, un peu.

lua_rh.bci

Commencer l’indicateur de chaîne, un peu.

lua_rh.eci

Indicateur de chaîne de fin, un peu.

lua_rh.dr1i

Indicateur de réponse 1 défini, un peu.

lua_rh.dr2i

Indicateur 2 de réponse définie, un peu.

lua_rh.ri

Indicateur de réponse d’exception (pour une demande) ou indicateur de type de réponse (pour une réponse), un bit.

lua_rh.qri

Indicateur de réponse en file d’attente, un bit.

lua_rh.pi

Indicateur de pacing, un peu.

lua_rh.bbi

Début de l’indicateur de crochet, un peu.

lua_rh.ebi

Indicateur de crochet de fin, un peu.

lua_rh.cdi

Changer l’indicateur de direction, un peu.

lua_rh.csi

Indicateur de sélection de code, un bit.

lua_rh.edi

Indicateur de données enchiffré, un bit.

lua_rh.pdi

Indicateur de données rembourré, un peu.

lua_flag1
Paramètre fourni. Contient une structure de données contenant des indicateurs pour les messages fournis par l’application. Ses sous-paramètres sont les suivants :

lua_flag1.bid_enable

Indicateur d’activation de l’offre, un peu.

lua_flag1.close_abend

Fermez l’indicateur immédiat, un peu.

lua_flag1.nowait

Aucune attente pour l’indicateur de données, un peu.

lua_flag1.sscp_exp

Flux accéléré SSCP, un bit.

lua_flag1.sscp_norm

Flux normal SSCP, un bit.

lua_flag1.lu_exp

Flux accéléré lu, un peu.

lua_flag1.lu_norm

Flux normal lu, un peu.

Définissez l’un des indicateurs suivants sur 1 pour indiquer sur quel flux de messages les données doivent être envoyées :

lua_flag1.sscp_exp

lua_flag1.sscp_norm

lua_flag1.lu_exp

lua_flag1.lu_norm

lua_message_type
Non utilisé par RUI_WRITE et doit être défini sur zéro.

lua_flag2
Paramètre retourné. Contient des indicateurs pour les messages retournés par LUA. Ses sous-paramètres sont les suivants :

lua_flag2.bid_enable

Indique que RUI_BID a été correctement réactivé si la valeur 1 est définie.

lua_flag2.async

Indique que le verbe de l’interface LUA s’est terminé de manière asynchrone s’il est défini sur 1.

lua_flag2.sscp_exp

Indique le flux accéléré SSCP s’il est défini sur 1.

lua_flag2.sscp_norm

Indique le flux normal SSCP s’il est défini sur 1.

lua_flag2.lu_exp

Indique le flux accéléré lu s’il est défini sur 1.

lua_flag2.lu_norm

Indique le flux normal lu s’il est défini sur 1.

lua_resv56
Réservé et doit être défini sur zéro.

lua_encr_decr_option
Réservé et doit être défini sur zéro.

Codes de retour

LUA_OK
Code de retour principal ; indique que le verbe s’est exécuté correctement.

LUA_CANCELED
Code de retour principal ; le verbe n’a pas réussi, car il a été annulé par un autre verbe.

LUA_TERMINATED

Code de retour secondaire ; le verbe a été annulé car RUI_TERM a été émis pour cette session.

LUA_PARAMETER_CHECK
Code de retour principal ; le verbe n’a pas été exécuté en raison d’une erreur de paramètre.

LUA_BAD_DATA_PTR

Code de retour secondaire ; le paramètre lua_data_ptr contenait une valeur non valide.

LUA_BAD_SESSION_ID

Code de retour secondaire ; une valeur non valide pour lua_sid a été spécifiée dans le VCB.

LUA_DUPLICATE_WRITE_FLOW

Code de retour secondaire ; RUI_WRITE était déjà en attente pour le flux de session spécifié sur ce verbe (le flux de session est spécifié en définissant l’un des indicateurs de flux lua_flag1 sur 1). Une seule RUI_WRITE à la fois peut être en attente sur chaque flux de session.

LUA_INVALID_FLOW

Code de retour secondaire ; l’indicateur de flux lua_flag1.sscp_exp a été défini, indiquant que le message doit être envoyé sur le flux accéléré SSCP. LUA n’autorise pas les applications à envoyer des données sur ce flux.

LUA_INVALID_POST_HANDLE

Code de retour secondaire ; pour un système d’exploitation Windows utilisant des événements comme méthode de publication asynchrone, la Windows LUA VCB ne contient pas de handle d’événement valide.

LUA_MULTIPLE_WRITE_FLOWS

Code de retour secondaire ; plusieurs indicateurs de flux lua_flag1 ont été définis sur 1. Un et l’un de ces indicateurs doit être défini sur 1 pour indiquer le flux de session sur lequel les données doivent être envoyées.

LUA_REQUIRED_FIELD_MISSING

Code de retour secondaire ; indique l’un des cas suivants :

  • Aucun des indicateurs de flux lua_flag1 n’a été défini. Un et seul de ces indicateurs doit être défini sur 1.

  • RUI_WRITE a été utilisé pour envoyer une réponse et la réponse a requis plus de données que celles fournies.

    LUA_RESERVED_FIELD_NOT_ZERO

    Code de retour secondaire ; un champ réservé dans l’enregistrement de verbe ou un paramètre non utilisé par ce verbe a été défini sur une valeur non nulle.

    LUA_VERB_LENGTH_INVALID

    Code de retour secondaire ; un verbe LUA a été émis avec la valeur de lua_verb_length inattendue par LUA.

    LUA_STATE_CHECK
    Code de retour principal ; le verbe n’a pas été exécuté, car il a été émis dans un état non valide.

    LUA_MODE_INCONSISTENCY

    Code de retour secondaire ; le message SNA envoyé sur RUI_WRITE n’a pas été valide à ce stade. Cela est dû à la tentative d’envoi de données sur la session LU avant la liaison de la session. Vérifiez la séquence des messages SNA envoyés.

    LUA_NO_RUI_SESSION

    Code de retour secondaire ; RUI_INIT n’a pas encore terminé correctement pour le nom lu spécifié sur ce verbe.

    LUA_UNSUCCESSFUL
    Code de retour principal ; l’enregistrement de verbe fourni était valide, mais le verbe n’a pas réussi.

    LUA_FUNCTION_NOT_SUPPORTED

    Code de retour secondaire ; indique l’un des cas suivants :

  • Le bit lua_rh.fi (indicateur de format) a été défini sur 1, mais le premier octet de la RU fournie n’était pas un code de requête reconnu.

  • Le paramètre lua_rh.ruc (catégorie RU) a spécifié la catégorie de contrôle réseau (NC) ; LUA n’autorise pas les applications à envoyer des demandes dans cette catégorie.

    LUA_INVALID_PROCESS

    Code de retour secondaire ; le processus OS/2 qui a émis ce verbe n’était pas le même processus que celui qui a émis RUI_INIT pour cette session. Seul le processus qui a démarré une session peut émettre des verbes sur cette session.

    LUA_INVALID_SESSION_PARAMETERS

    Code de retour secondaire ; l’application a utilisé RUI_WRITE pour envoyer une réponse positive à un message BIND reçu de l’hôte. Toutefois, Host Integration Server ne peut pas accepter les paramètres BIND comme spécifié et a envoyé une réponse négative à l’hôte. Pour plus d’informations sur les profils BIND acceptés par Host Integration Server, consultez Considérations relatives à LUA SNA.

    LUA_RSP_CORRELATION_ERROR

    Code de retour secondaire ; lors de l’utilisation de RUI_WRITE pour envoyer une réponse, lua_th.snf (qui indique le numéro de séquence du message reçu en cours de réponse) ne contenait pas de valeur valide.

    LUA_RU_LENGTH_ERROR

    Code de retour secondaire ; le paramètre lua_data_length contenait une valeur non valide. Lors de l’envoi de données sur le flux normal lu, la longueur maximale est spécifiée dans la liaison reçue de l’hôte ; pour tous les autres flux, la longueur maximale est de 256 octets.

Remarque

Tout autre code de retour secondaire est un code de sens SNA indiquant que les données SNA fournies n’étaient pas valides ou ne pouvaient pas être envoyées. Pour plus d’informations sur l’interprétation des codes de sens SNA qui peuvent être retournés, consultez Considérations relatives à SNA à l’aide de LUA.

LUA_COMM_SUBSYSTEM_ABENDED
Code de retour principal ; indique l’une des situations suivantes :

  • Le nœud utilisé par cette conversation a rencontré un abandon (ABEND).

  • La connexion entre le programme de transaction (TP) et le nœud pu (PU) 2.1 a été interrompue (erreur LAN).

  • L’ordinateur SnaBase sur l’ordinateur TPS a rencontré un ABEND.

    LUA_SESSION_FAILURE
    Code de retour principal ; un composant de Host Integration Server requis s’est arrêté.

    LUA_LU_COMPONENT_DISCONNECTED

    Code de retour secondaire ; indique que la session LUA a échoué en raison d’un problème avec le service de liaison ou avec la lu hôte.

    LUA_RUI_LOGIC_ERROR

    Code de retour secondaire ; une erreur interne a été détectée dans LUA. Cette erreur ne doit pas se produire pendant l’opération normale.

    LUA_INVALID_VERB
    Code de retour principal ; le code verbe ou le code d’opération, ou les deux, n’est pas valide. Le verbe n’a pas été exécuté.

    LUA_STACK_TOO_SMALL
    Code de retour principal ; indique que la taille de la pile de l’application est trop petite pour exécuter le verbe. Augmentez la taille de pile de votre application.

    LUA_COMM_SUBSYSTEM_NOT_LOADED
    Code de retour principal ; un composant requis n’a pas pu être chargé ou s’est arrêté lors du traitement du verbe. Par conséquent, la communication n’a pas pu être établie. Contactez l’administrateur système pour mettre en place une action corrective.

    LUA_UNEXPECTED_DOS_ERROR
    Code de retour principal ; après avoir émis un appel de système d’exploitation, un code de retour inattendu du système d’exploitation a été reçu et est spécifié dans le code de retour secondaire.

Remarques

RUI_INIT doit être émis correctement avant que ce verbe ne soit émis.

Lors de l’envoi d’une requête SNA, toutes les valeurs applicables dans le lua_rh doivent être définies. Le chaînage et le crochet sont la responsabilité de l’application.

Lors de l’envoi d’une réponse, le type de réponse détermine les informations RUI_WRITE requises. Pour toutes les réponses, vous devez :

  • Définissez l’indicateur lua_rh.rri sélectionné sur 1.

  • Indiquez le numéro de séquence dans lua_th.snf pour la demande à laquelle vous répondez.

    Pour les réponses de message à plusieurs chaînes, le numéro de séquence du dernier élément de chaîne reçu doit être utilisé. Pour obtenir une réponse à un message à plusieurs chaînes se terminant par une commande CANCEL, le numéro de séquence de commande CANCEL est utilisé.

    Pour les réponses positives qui nécessitent uniquement le code de requête, définissez lua_rh.ri sur zéro (indiquant que la réponse est positive) et lua_data_length à zéro (indiquant qu’aucune donnée n’est fournie). Le code de requête est renseigné par le RUI, à l’aide du numéro de séquence fourni.

    Pour les réponses négatives, définissez lua_rh.ri sur 1, lua_data_ptr sur l’adresse de code de sens SNA et lua_data_length à la longueur du code de sens SNA (quatre octets). Le numéro de séquence est utilisé par le RUI pour remplir le code de requête.

    Pour obtenir des réponses positives aux commandes BIND et STSN qui nécessitent des données dans les réponses, définissez lua_data_ptr pour pointer vers la réponse et définirlua_data_length à la longueur des données fournies dans lua_data_ptr.

    Bien qu’une RUI_WRITE existante soit en attente, vous pouvez émettre une deuxième RUI_WRITE uniquement si elle spécifie un flux de session différent du RUI_WRITE en attente. Vous ne pouvez pas avoir plusieurs RUI_WRITE en attente pour le même flux de session.

    RUI_WRITE peut être émis sur le flux normal SSCP à tout moment après une RUI_INIT réussie. RUI_WRITE verbes sur les flux normaux ou accélérés lu sont autorisés uniquement une fois qu’une liaison a été reçue et doivent respecter les protocoles spécifiés sur la liaison.

    La réussite de RUI_WRITE indique que le message a été mis en file d’attente avec succès dans le lien de données. Il n’indique pas nécessairement que le message a été envoyé correctement ou que l’hôte l’a accepté.

    Le pacing peut être utilisé sur la demi-session secondaire à primaire (spécifiée sur la liaison) pour empêcher l’application LUA d’envoyer plus de données que la lu locale ou distante peut gérer. Si c’est le cas, une RUI_WRITE sur le flux normal de lu peut être retardée par LUA et peut prendre du temps.

Voir aussi

RUI_INIT
RUI_READ
RUI_TERM
SLI_OPEN
SLI_PURGE
SLI_RECEIVE
SLI_SEND