RUI_WRITE

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

La structure suivante décrit le LUA_COMMON membre du bloc de contrôle 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 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. Il doit contenir la longueur de l’enregistrement de verbe émis.

lua_prim_rc
Code de retour principal défini par LUA à la fin du verbe. Les codes de retour valides varient en fonction du verbe LUA émis.

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

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

lua_correlator
Paramètre fourni. Contient une valeur fournie par l’utilisateur qui lie le verbe à 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 Windows LUA.

RUI_WRITE requiert ce paramètre uniquement si lua_sid est égal à zéro.

Ce paramètre est de huit octets, rempli à 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 elles peuvent être au format EBCDIC.

lua_post_handle
Paramètre fourni. Utilisé sous Microsoft Windows si la notification asynchrone doit être effectuée par des é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’enchère. Ses sous-paramètres sont les suivants :

lua_th.flags_fid

Format d’identification type 2, quatre bits.

lua_th.flags_mpf

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

0x00 Segment du milieu0x04 Dernier segment0x08 Premier segment0x0C segment uniquement

lua_th.flags_odai

Indicateur de l’assigneur champ d’adresse d’origine-champ d’adresse de destination (OAF–DAF), un bit.

lua_th.flags_efi

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

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 requête/réponse SNA (RH) du message envoyé ou reçu. Pour l’AUTHENTIFICATION 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 rythme (lua_rh.pi) sont utilisés. Ses sous-paramètres sont les suivants :

lua_rh.rri

Indicateur requête-réponse, un bit.

lua_rh.ruc

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

LUA_RH_FMD (0x00) segment de données FMLUA_RH_NC (0x20) Contrôle réseauLUA_RH_DFC (0x40) Contrôle de fluxde données LUA_RH_SC (0x60) Contrôle de session

lua_rh.fi

Indicateur de format, un bit.

lua_rh.sdi

Détecter l’indicateur des données incluses, un bit.

lua_rh.bci

Indicateur de chaîne de début, un bit.

lua_rh.eci

Indicateur de chaîne de fin, un bit.

lua_rh.dr1i

Réponse définie 1 indicateur, un bit.

lua_rh.dr2i

Indicateur de réponse défini 2, un bit.

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 mis en file d’attente, un bit.

lua_rh.pi

Indicateur de rythme, un bit.

lua_rh.bbi

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

lua_rh.ebi

Indicateur de crochet de fin, un bit.

lua_rh.cdi

Changer l’indicateur de direction, un bit.

lua_rh.csi

Indicateur de sélection de code, un bit.

lua_rh.edi

Indicateur de données chiffrés, un bit.

lua_rh.pdi

Indicateur de données remplies, un bit.

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’enchère, un bit.

lua_flag1.close_abend

Fermez l’indicateur immédiat, un bit.

lua_flag1.nowait

Pas d’attente pour l’indicateur de données, un bit.

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 bit.

lua_flag1.lu_norm

Flux normal de l’unité logique, un bit.

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ée si la valeur est 1.

lua_flag2.async

Indique que le verbe d’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é de lu si la valeur est 1.

lua_flag2.lu_norm

Indique le flux normal de l’unité logique s’il est défini sur 1.

lua_resv56
Réservé et doivent être définis sur zéro.

lua_encr_decr_option
Réservé et doivent être définis 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 ne s’est pas terminé correctement, 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, le VCB Windows LUA ne contient pas de handle d’événement valide.

LUA_MULTIPLE_WRITE_FLOWS

Code de retour secondaire ; plus d’un des indicateurs de flux lua_flag1 a été défini sur 1. Un seul 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 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 nécessité plus de données que ce qui a été fourni.

    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 différente de zéro.

    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’était pas valide pour l’instant. Cela est dû à la tentative d’envoi de données sur la session lu avant que la session ne soit liée. Vérifiez la séquence de messages SNA envoyés.

    LUA_NO_RUI_SESSION

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

    LUA_UNSUCCESSFUL
    Code de retour principal ; l’enregistrement du verbe fourni était valide, mais le verbe ne s’est pas terminé correctement.

    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 utilisée 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 à SNA à l’aide de LUA.

    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 auquel la réponse a été envoyée) 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 le bind reçu de l’hôte ; pour tous les autres flux, la longueur maximale est de 256 octets.

Notes

Tout autre code de retour secondaire est un code de sens SNA indiquant que les données SNA fournies n’étaient pas valides ou n’ont pas pu ê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 aux 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 d’unité physique (PU) 2.1 a été interrompue (erreur LAN).

  • Le SnaBase sur l’ordinateur des fournisseurs de services a rencontré un ABEND.

    LUA_SESSION_FAILURE
    Code de retour principal ; un composant 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 l’unité 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 une opération normale.

    LUA_INVALID_VERB
    Code de retour principal ; le code du 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é pendant le 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 l’émission d’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 l’émission de ce verbe.

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 les crochets sont de 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 multi-chaîne, le numéro de séquence du dernier élément de chaîne reçu doit être utilisé. Pour une réponse à un message multichaîne 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 sur zéro (indiquant qu’aucune donnée n’est fournie). Le code de la demande 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 SNA sense et lua_data_length sur la longueur du code SNA sense (quatre octets). Le numéro de séquence est utilisé par le RUI pour remplir le code de demande.

    Pour les 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éfinissez lua_data_length sur la longueur des données fournies dans lua_data_ptr.

    Lorsqu’un RUI_WRITE existant est en attente, vous pouvez émettre une deuxième RUI_WRITE uniquement s’il spécifie un flux de session différent de la 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 lu accélérés ou normaux lu ne sont autorisés qu’après réception d’un BIND et doivent respecter les protocoles spécifiés sur le BIND.

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

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

Voir aussi

RUI_INIT
RUI_READ
RUI_TERM
SLI_OPEN
SLI_PURGE
SLI_RECEIVE
SLI_SEND