Partager via


RUI_READ

Le verbe RUI_READ reçoit des réponses, des commandes SNA et des données dans une mémoire tampon d’application d’unité logique Microsoft® Windows® (LUA).

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

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 à l’achèvement 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 à l’achèvement 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 que le verbe soit émis, LUA_OPCODE_RUI_READ.

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 l’unité logique locale utilisée par la session Windows LUA.

RUI_READ nécessite uniquement ce paramètre si lua_sid est égal à zéro.

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

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

lua_cobol_offset
Non utilisé par LUA dans Microsoft® 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
Spécifie la longueur de la mémoire tampon reçue pour RUI_READ et SLI_RECEIVE. Non utilisé par d’autres verbes RUI et SLI 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
Pointeur vers la mémoire tampon fournie par l’application, qui doit recevoir les données d’un verbe RUI_READ . Les commandes et les données SNA sont placées dans cette mémoire tampon, et elles peuvent être au format EBCDIC.

Lorsque RUI_READ est émis, ce paramètre pointe vers l’emplacement pour recevoir les données de l’hôte.

lua_post_handle
Paramètre fourni. Utilisé sous Microsoft Windows Server si la 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ées pour les fonctions de lecture et d’offre. 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 segmenté, deux bits. Définit le type de segment de données. Les valeurs suivantes sont valides :

segment intermédiaire 0x00 segment0x04 Dernier segment0x08 premier segment0x0C uniquement

lua_th.flags_odai

Indicateur d’assigneur de champ d’adresse d’origine -champ 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), un caractère non signé.

lua_th.oaf

Champ d’adresse d’origine (OAF), un caractère 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. Elle est définie pour la fonction d’écriture et retournée par les fonctions de lecture et d’offre. Ses sous-paramètres sont les suivants :

lua_rh.rri

Indicateur de demande-réponse, un bit.

lua_rh.ruc

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

LUA_RH_FMD (0x00) contrôle de flux de données FMLUA_RH_NC (0x20) Contrôle réseauLUA_RH_DFC (0x40) Contrôle de flux de donnéesLUA_RH_SC (0x60) Contrôle de session

lua_rh.fi

Indicateur de format, un bit.

lua_rh.sdi

Indicateurs de données de sens inclus, un peu.

lua_rh.bci

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

lua_rh.eci

Indicateur de chaîne de fin, un peu.

lua_rh.dr1i

Indicateur 1 réponse définitive, un peu.

lua_rh.dr2i

Indicateur 2 réponse définitive, 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 mis en file d’attente, un bit.

lua_rh.pi

Indicateur de pacing, un peu.

lua_rh.bbi

Indicateur de crochet de début, un bit.

lua_rh.ebi

Indicateur de crochet de fin, un bit.

lua_rh.idc

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 chiffré, 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

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

lua_flag1.lu_norm

Flux normal lu, un peu.

Définissez lua_flag1.nowait sur 1 pour indiquer que vous souhaitez que RUI_READ retourne immédiatement si les données sont disponibles pour être lues, ou définissez-la sur zéro si vous souhaitez que le verbe attende les données avant de retourner.

Définissez lua_flag1.bid_enable sur 1 pour réactiver la RUI_BID la plus récente (équivalente à l’émission de RUI_BID avec exactement les mêmes paramètres que précédemment) ou définissez-la sur zéro si vous ne souhaitez pas réactiver RUI_BID.

Réactiver l’RUI_BID précédent réutilise le VCB initialement alloué pour celui-ci, de sorte que ce VCB ne doit pas avoir été libéré ou modifié.

Définissez un ou plusieurs des indicateurs suivants sur 1 pour indiquer à partir duquel le flux de message doit lire les données :

lua_flag1.sscp_exp

lua_flag1.lu_exp

lua_flag1.sscp_norm

lua_flag1.lu_norm

Si plusieurs indicateurs sont définis, les données de priorité la plus élevée disponibles sont retournées. L’ordre des priorités (le plus élevé en premier) est : SSCP accéléré, LU accéléré, SSCP normal, LU normal, LU normal. L’indicateur équivalent dans le groupe lua_flag2 est défini pour indiquer à partir duquel les données ont été lues.

lua_message_type
Spécifie le type des commandes et données SNA entrantes ou sortantes. Paramètre retourné. Spécifie le type de message SNA indiqué à RUI_READ. Les valeurs possibles sont les suivantes :

LUA_MESSAGE_TYPE_LU_DATA

LUA_MESSAGE_TYPE_SSCP_DATA

LUA_MESSAGE_TYPE_RQR

LUA_MESSAGE_TYPE_BID

LUA_MESSAGE_TYPE_BIND

LUA_MESSAGE_TYPE_BIS

LUA_MESSAGE_TYPE_CANCEL

LUA_MESSAGE_TYPE_CHASE

LUA_MESSAGE_TYPE_CLEAR

LUA_MESSAGE_TYPE_CRV

LUA_MESSAGE_TYPE_LUSTAT_LU

LUA_MESSAGE_TYPE_LUSTAT_SSCP

LUA_MESSAGE_TYPE_QC

LUA_MESSAGE_TYPE_QEC

LUA_MESSAGE_TYPE_RELQ

LUA_MESSAGE_TYPE_RTR

LUA_MESSAGE_TYPE_SBI

LUA_MESSAGE_TYPE_SHUTD

LUA_MESSAGE_TYPE_SIGNAL

LUA_MESSAGE_TYPE_SDT

LUA_MESSAGE_TYPE_STSN

LUA_MESSAGE_TYPE_UNBIND

LU_DATA, LUSTAT_LU, LUSTAT_SSCP et SSCP_DATA ne sont pas des commandes SNA.

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 de l’interface LUA s’est terminé de façon 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 ; le verbe exécuté avec succès.

LUA_DATA_INCOMPLETE

Code de retour secondaire ; RUI_READ n’a pas pu retourner toutes les données reçues, car la mémoire tampon de données de l’application (indiquée par lua_max_length) n’était pas suffisante. Les demandes de RUI_READ suivantes peuvent être émises pour récupérer les données RUI restantes.

Ce comportement n’est pas le comportement par défaut de RUI_READ et n’est activé que lorsque lua_resv56[3] est défini sur une valeur différente de zéro dans le bloc de contrôle verbe lors de l’appel de RUI_INIT pendant l’établissement de session. Pour plus d’informations, consultez Remarques.

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

LUA_PURGED

Code de retour secondaire ; RUI_READ a été annulé par RUI_PURGE.

LUA_TERMINATED

Code de retour secondaire ; RUI_TERM a été émis pendant que RUI_READ était en attente.

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_BID_ALREADY_ENABLED

Code de retour secondaire ; lua_flag1.bid_enable a été défini pour réactiver RUI_BID , mais la RUI_BID précédente était toujours en cours.

LUA_DUPLICATE_READ_FLOW

Code de retour secondaire ; les indicateurs de flux dans le groupe lua_flag1 ont spécifié un ou plusieurs flux de session pour lesquels RUI_READ était déjà en attente. Une seule RUI_READ à la fois peut être en attente sur chaque flux de session.

LUA_INVALID_FLOW

Code de retour secondaire ; aucun des indicateurs de flux lua_flag1 n’a été défini. Au moins l’un de ces indicateurs doit être défini sur 1, pour indiquer à partir de quel flux ou flux lire.

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, windows LUA VCB ne contient pas de handle d’événements valide.

LUA_NO_PREVIOUS_BID_ENABLED

Code de retour secondaire ; lua_flag1.bid_enable a été défini pour réactiver RUI_BID, mais aucun RUI_BID précédent n’a pu être activé. (Pour plus d’informations, consultez Remarques.)

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 exécuté, car il a été émis dans un état non valide.

LUA_NO_RUI_SESSION

Code de retour secondaire ; RUI_INIT n’a pas encore réussi pour le nom de l’unité logique spécifiée sur RUI_READ.

LUA_NEGATIVE_RSP
Code de retour principal ; indique l’un des deux cas suivants, qui peuvent être distingués par le code de retour secondaire :

  • LUA a détecté une erreur dans les données reçues de l’hôte. Au lieu de transmettre le message reçu à l’application sur RUI_READ, LUA ignore le message (et le reste de la chaîne s’il se trouve dans une chaîne) et envoie une réponse négative à l’hôte. LUA informe l’application d’une RUI_READ ou d’une RUI_BID ultérieure qu’une réponse négative a été envoyée.

  • L’application LUA a précédemment envoyé une réponse négative à un message au milieu d’une chaîne. LUA a vidé les messages suivants dans cette chaîne et signale maintenant à l’application que tous les messages de la chaîne ont été reçus et vidés.

    LUA_SEC_RC

    Code de retour secondaire ; ce paramètre est un code de retour secondaire différent de zéro contenant le code de sens envoyé à l’hôte sur la réponse négative. Cela indique que LUA a détecté une erreur dans les données de l’hôte et envoyé une réponse négative à l’hôte. Pour plus d’informations sur l’interprétation des valeurs de code de sens qui peuvent être retournées, consultez Considérations relatives à la SNA à l’aide de LUA.

    Un code de retour secondaire de zéro indique que, après une RUI_WRITE précédente d’une réponse négative à un message au milieu d’une chaîne, LUA a maintenant reçu et ignoré tous les messages de cette chaîne.

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

    LUA_DATA_TRUNCATED

    Code de retour secondaire ; le paramètre lua_data_length était inférieur à la longueur réelle des données reçues sur le message. Seuls lua_data_length octets de données ont été renvoyés au verbe ; les données restantes ont été ignorées. Des paramètres supplémentaires sont également retournés si ce code de retour secondaire est obtenu.

    LUA_NO_DATA

    Code de retour secondaire ; lua_flag1.nowait était défini pour indiquer un retour immédiat sans attendre les données, et aucune donnée n’était actuellement disponible sur le flux de session ou les flux de session spécifiés.

    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_COMM_SUBSYSTEM_ABENDED
    Code de retour principal ; indique l’une des conditions suivantes :

  • Le nœud utilisé par cette conversation a rencontré un 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 TPS 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é logique 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 détaillé ou le code d’opération, ou les deux, n’est pas valide. Le verbe n’a pas exécuté.

    LUA_STACK_TOO_SMALL
    Code de retour principal ; la taille de la pile de l’application est trop petite pour exécuter le verbe. Augmentez la taille de la 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. Ainsi, la communication n’a pas pu avoir lieu. Contactez l’administrateur système pour obtenir 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 s’exécuter correctement avant que RUI_READ ne soit émis.

Bien qu’un RUI_READ existant soit en attente, vous pouvez émettre une autre RUI_READ uniquement s’il spécifie un flux de session ou un flux différent à partir de verbes RUI_READ en attente. Vous ne pouvez pas avoir plusieurs RUI_READ en attente pour le même flux de session.

Vous pouvez spécifier un flux de messages particulier (lu normal, LU accéléré, normal SSCP ou SSCP accéléré) à partir duquel lire des données, ou vous pouvez spécifier plusieurs flux de messages. Vous pouvez avoir plusieurs verbes RUI_READ en attente, à condition que deux d’entre eux spécifient le même flux.

Les données sont reçues par l’application sur l’un des quatre flux de session. Les quatre flux de session, de la plus haute à la priorité la plus basse sont les suivants :

  • SSCP accéléré

  • LU accélérée

  • SSCP normal

  • LU normale

    Le type de flux de données RUI_READ doit être traité dans le paramètre lua_flag1 . L’application peut également spécifier s’il souhaite examiner plusieurs types de flux de données. Lorsque plusieurs bits de flux sont définis, la priorité la plus élevée est d’abord reçue. Lorsque RUI_READ termine le traitement, lua_flag2 indique le type de flux spécifique pour lequel les données ont été reçues par l’application Windows LUA.

    Si RUI_BID se termine correctement avant qu’un RUI_READ soit émis, l’interface Windows LUA peut être chargée de réutiliser les derniers verbes RUI_BID VCB. Pour ce faire, émettez le RUI_READ avec lua_flag1.bid_enable set.

    Le paramètre lua_flag1.bid_enable ne peut être utilisé que si les valeurs suivantes sont remplies :

  • RUI_BID a déjà été émis avec succès et s’est terminé.

  • Le stockage alloué pour RUI_BID n’a pas été libéré ou modifié.

  • Aucune autre RUI_BID n’est en attente.

    Lorsque vous utilisez lua_flag1.bid_enable, le stockage RUI_BID ne doit pas être libéré, car le dernier verbe RUI_BID VCB est utilisé. En outre, lors de l’utilisation de lua_flag1.bid_enable, la réussite de RUI_BID sera publiée.

    Si RUI_READ est émis avec lua_flag1.nowait lorsqu’aucune donnée n’est disponible à recevoir, LUA_NO_DATA sera le code de retour secondaire défini par l’interface windows LUA.

    Si les données reçues sont plus longues que lua_max_length, elles sont tronquées. Seuls lua_max_length octets de données sont retournés. Le code de retour principal LUA_UNSUCCESSFUL et le code de retour secondaire LUA_DATA_TRUNCATED sont également retournés. La bibliothèque RUI retourne autant de données que possible à la mémoire tampon de données de l’application, mais les données restantes de l’I RUI sont ignorées et ne peuvent pas être extraites lors des demandes de RUI_READ suivantes. Cela force l’application RUI à allouer une mémoire tampon de données RUI_READ suffisamment grande pour gérer la taille complète des RU.

    Ce comportement par défaut peut être modifié en définissant la valeur de lua_resv56[3] sur une valeur différente de zéro dans le bloc de contrôle verbe lors de l’appel de RUI_INIT pendant l’établissement de session. Dans ce cas, si les données reçues sont plus longues que lua_max_length, une demande de RUI_READ retourne un code de retour principal de LUA_OK et un code de retour secondaire de LUA_DATA_INCOMPLETE. Une application RUI peut ensuite émettre de nouveaux appels RUI_READ et recevoir le reste des données.

    Cette amélioration n’a pas été adoptée dans le cadre de la norme de l’API LUA de Microsoft Windows Open Services (WOSA) et diffère de l’implémentation de RUI par IBM.

    Une fois qu’un message a été lu à l’aide de RUI_READ, il est supprimé de la file d’attente des messages entrants et ne peut pas être accessible à nouveau. (RUI_BID pouvez être utilisé comme lecture non destructeur. L’application peut l’utiliser pour vérifier le type de données disponibles, mais les données restent dans la file d’attente entrante et n’ont pas besoin d’être utilisées immédiatement.)

    Le rythme peut être utilisé sur la demi-session primaire à secondaire (spécifiée dans la configuration de l’hôte) pour protéger l’application LUA d’être inondée de messages. Si l’application LUA est lente à lire les messages, Host Integration Server retarde l’envoi de réponses de rythme à l’hôte pour le ralentir.

Voir aussi

RUI_BID
RUI_INIT
RUI_TERM
RUI_WRITE
SLI_OPEN
SLI_PURGE
SLI_RECEIVE
SLI_SEND