Partager via


PREPARE_TO_RECEIVE

Le verbe PREPARE_TO_RECEIVE change l’état de la conversation pour le programme de transaction local (TP) d’ENVOYER à RECEIVE.

La structure suivante décrit le bloc de contrôle de verbe (VCB) utilisé par le verbe PREPARE_TO_RECEIVE .

Syntaxe

  
struct prepare_to_receive {  
    unsigned short   opcode;  
    unsigned char    opext;  
    unsigned char    primary_rc;  
    unsigned short   reserv2;  
    unsigned long    secondary_rc;  
    unsigned char    tp_id[8];  
    unsigned long    conv_id;  
    unsigned char    ptr_type;  
    unsigned char    locks;  
};   

Membres

opcode
Paramètre fourni. Spécifie le code d’opération de verbe, AP_B_PREPARE_TO_RECEIVE.

opext
Paramètre fourni. Spécifie l’extension d’opération de verbe, AP_BASIC_CONVERSATION.

reserv2
Champ réservé.

primary_rc
Paramètre retourné. Spécifie le code de retour principal défini par APPC à l’achèvement du verbe. Les codes de retour valides dépendent du verbe APPC émis. Pour connaître les codes d’erreur valides de ce verbe, consultez Codes de retour.

secondary_rc
Paramètre retourné. Spécifie le code de retour secondaire défini par APPC à l’achèvement du verbe. Les codes de retour valides dépendent du verbe APPC émis. Pour connaître les codes d’erreur valides de ce verbe, consultez Codes de retour.

tp_id
Paramètre fourni. Identifie le TP local. La valeur de ce paramètre est retournée par TP_STARTED dans le TP appelant ou parRECEIVE_ALLOCATE dans le TP appelé.

conv_id
Paramètre fourni. Fournit l’identificateur de conversation. La valeur de ce paramètre est retournée par ALLOCATEdans le TP appelant ou par RECEIVE_ALLOCATE dans le TP appelé.

ptr_type
Paramètre fourni. Spécifie comment effectuer le changement d’état.

Utilisez AP_FLUSH pour envoyer le contenu de la mémoire tampon d’envoi de l’unité logique locale (LU) à l’unité lu partenaire (et TP) avant de modifier l’état de la conversation sur RECEIVE.

La valeur AP_SYNC_LEVEL utilise le niveau de synchronisation de la conversation (établi par ALLOCATE) pour déterminer comment effectuer le changement d’état.

Si le niveau de synchronisation de la conversation est AP_NONE, APPC envoie le contenu de la mémoire tampon d’envoi de la lu locale au tp partenaire avant de changer l’état de la conversation sur RECEIVE. Si le niveau de synchronisation est AP_CONFIRM_SYNC_LEVEL, APPC envoie le contenu de la mémoire tampon d’envoi de la lu locale et une demande de confirmation au TP partenaire. Après réception de la confirmation du TP partenaire, APPC change l’état de la conversation sur RECEIVE. Si, toutefois, le tp partenaire signale une erreur, l’état passe à RECEIVE ou RESET. Consultez les remarques de cette rubrique.

locks
Paramètre fourni. Spécifie quand APPC doit retourner le contrôle au TP local.

Utilisez ce paramètre uniquement si ptr_type est défini sur AP_SYNC_LEVEL et si le niveau de synchronisation de la conversation, établi par ALLOCATE, est AP_CONFIRM_SYNC_LEVEL. (Sinon, le paramètre est ignoré.)

Utilisez AP_LONG pour indiquer qu’APPC retourne le contrôle au TP local lorsque la confirmation et les données ultérieures du TP partenaire arrivent à l’unité lu locale. (Cette méthode permet une utilisation plus efficace du réseau, mais nécessite un temps plus long pour retourner le contrôle au TP local.)

Utilisez AP_SHORT pour indiquer qu’APPC retourne le contrôle au TP local lorsque la confirmation du TP partenaire arrive à l’unité lu locale.

Codes de retour

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

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

AP_BAD_CONV_ID

Code de retour secondaire ; la valeur de conv_id ne correspondait pas à un identificateur de conversation attribué par APPC.

AP_BAD_TP_ID

Code de retour secondaire ; la valeur de tp_id ne correspondait pas à un identificateur TP attribué par APPC.

AP_P_TO_R_INVALID_TYPE

Code de retour secondaire ; le paramètre ptr_type n’a pas été défini sur une valeur valide.

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

AP_P_TO_R_NOT_SEND_STATE

Code de retour secondaire ; la conversation n’était pas à l’état SEND.

AP_P_TO_R_NOT_LL_BDY

Code de retour secondaire ; le TP local n’a pas terminé l’envoi d’un enregistrement logique.

AP_ALLOCATION_ERROR
Code de retour principal ; APPC n’a pas pu allouer une conversation. L’état de la conversation est défini sur RESET.

Ce code peut être retourné par le biais d’un verbe émis après ALLOCATE.

AP_ALLOCATION_FAILURE_NO_RETRY

Code de retour secondaire ; la conversation ne peut pas être allouée en raison d’une condition permanente, telle qu’une erreur de configuration ou une erreur de protocole de session. Pour déterminer l’erreur, l’administrateur système doit examiner le fichier journal des erreurs. Ne réessayez pas l’allocation tant que l’erreur n’a pas été corrigée.

AP_ALLOCATION_FAILURE_RETRY

Code de retour secondaire ; la conversation n’a pas pu être allouée en raison d’une condition temporaire, telle qu’un échec de liaison. La raison de l’échec est consignée dans le journal des erreurs système. Réessayez l’allocation.

AP_CONVERSATION_TYPE_MISMATCH

Code de retour secondaire ; l’unité lu ou tp partenaire ne prend pas en charge le type de conversation (de base ou mappé) spécifié dans la demande d’allocation.

AP_PIP_NOT_ALLOWED

Code de retour secondaire ; la demande d’allocation a spécifié des données PIP, mais soit le tp partenaire n’a pas besoin de ces données, soit l’unité lu partenaire ne les prend pas en charge.

AP_PIP_NOT_SPECIFIED_CORRECTLY

Code de retour secondaire ; le TP partenaire nécessite des données PIP, mais la demande d’allocation n’a spécifié aucune donnée PIP ou un nombre incorrect de paramètres.

AP_SECURITY_NOT_VALID

Code de retour secondaire ; l’identificateur utilisateur ou le mot de passe spécifié dans la demande d’allocation n’a pas été accepté par l’unité lu partenaire.

AP_SYNC_LEVEL_NOT_SUPPORTED

Code de retour secondaire ; le TP partenaire ne prend pas en charge les sync_level (AP_NONE ou AP_CONFIRM_SYNC_LEVEL) spécifiés dans la demande d’allocation, ou le sync_level n’a pas été reconnu.

AP_TP_NAME_NOT_RECOGNIZED

Code de retour secondaire ; l’unité lu partenaire ne reconnaît pas le nom TP spécifié dans la demande d’allocation.

AP_TRANS_PGM_NOT_AVAIL_NO_RETRY

Code de retour secondaire ; l’unité lu distante a rejeté la demande d’allocation, car elle n’a pas pu démarrer le TP du partenaire demandé. La condition est permanente. La raison de l’erreur peut être consignée sur le nœud distant. Ne réessayez pas l’allocation tant que l’erreur n’a pas été corrigée.

AP_TRANS_PGM_NOT_AVAIL_RETRY

Code de retour secondaire ; l’unité lu distante a rejeté la demande d’allocation, car elle n’a pas pu démarrer le TP du partenaire demandé. La situation peut être temporaire, par exemple un délai d’attente. La raison de l’erreur peut être consignée sur le nœud distant. Réessayez l’allocation.

AP_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 a été interrompue entre le programme transactionnel et le nœud PU 2.1 (erreur LAN).

  • Le processus SnaBase qui se déroule sur l’ordinateur du programme transactionnel a rencontré un abandon (ABEND).

    L’administrateur système doit examiner le journal des erreurs pour déterminer la raison de l’abandon.

    AP_COMM_SUBSYSTEM_NOT_LOADED
    Code de retour principal ; indique qu’il n’a pas été possible de charger un composant requis ou d’y mettre fin 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.

    Lorsque ce code de retour est utilisé avec ALLOCATE, il peut indiquer qu’aucun système de communication n’est trouvé pour prendre en charge la lu locale. (Par exemple, l’alias lu local spécifié avec TP_STARTED est incorrect ou n’a pas été configuré.) Notez que si lu_alias ou mode_name contient moins de huit caractères, vous devez vous assurer que ces champs sont remplis d’espaces à droite. Cette erreur est retournée si ces paramètres ne sont pas remplis d’espaces, car aucun nœud disponible ne peut répondre à la demande ALLOCATE .

    Lorsque ALLOCATE génère ce code de retour pour un système client Host Integration Server configuré avec plusieurs nœuds, il existe deux codes de retour secondaires comme suit :

    0xF0000001

    Code de retour secondaire ; aucun nœud n’a été démarré.

    0xF0000002

    Code de retour secondaire ; au moins un nœud a été démarré, mais la lu locale (quand TP_STARTED est émis) n’est configurée sur aucun nœud actif. Le problème peut être l’un des suivants :

  • Le nœud avec l’unité lu locale n’est pas démarré.

  • La lu locale n’est pas configurée.

    AP_CONV_FAILURE_NO_RETRY
    Code de retour principal ; la conversation a été arrêtée en raison d’une condition permanente, telle qu’une erreur de protocole de session. L’administrateur système doit examiner le journal des erreurs système pour déterminer la cause de l’erreur. N’réessayez pas la conversation tant que l’erreur n’a pas été corrigée.

    AP_CONV_FAILURE_RETRY
    Code de retour principal ; la conversation a été arrêtée en raison d’une erreur temporaire. Redémarrez le TP pour voir si le problème se produit à nouveau. Si c’est le cas, l’administrateur système doit examiner le journal des erreurs pour déterminer la cause de l’erreur.

    AP_CONVERSATION_TYPE_MIXED
    Code de retour principal ; le TP a émis des verbes de conversation de base et mappés. Un seul type peut être émis dans une seule conversation.

    AP_INVALID_VERB_SEGMENT
    Code de retour principal ; indique que le bloc de contrôle de verbe s’étend au-delà de la fin du segment de données.

    AP_PROG_ERROR_PURGING
    Code de retour principal ; tandis que dans l’état RECEIVE, PENDING, PENDING_POST, CONFIRM, CONFIRM_SEND ou CONFIRM_DEALLOCATE, le tp partenaire a émis SEND_ERROR avec err_type défini sur AP_PROG. Les données envoyées mais pas encore reçues sont purgées.

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

    AP_CONV_BUSY
    Code de retour principal ; il ne peut y avoir qu’un seul verbe de conversation à la fois sur n’importe quelle conversation. Cela peut se produire si le TP local a plusieurs threads et que plusieurs threads émettent des appels APPC à l’aide du même conv_id.

    AP_THREAD_BLOCKING
    Code de retour principal ; indique que le thread appelant se trouve déjà dans un appel de blocage.

    AP_UNEXPECTED_DOS_ERROR
    Code de retour principal ; indique que le système d’exploitation a retourné une erreur à APPC lors du traitement d’un appel APPC à partir du programme transactionnel local. Le code de retour du système d’exploitation a été retourné via secondary_rc. Il apparaît dans l’ordre Intel avec permutation d’octets. Si le problème persiste, consultez l’administrateur système.

    AP_DEALLOC_ABEND_PROG
    Code de retour principal ; la conversation a été libérée pour l’une des raisons suivantes :

  • Le tp partenaire a émis DEALLOCATE avec dealloc_type défini sur AP_ABEND_PROG.

  • Le TP partenaire a rencontré un ABEND, ce qui a entraîné l’unité lu partenaire à envoyer une demande DEALLOCATE .

    AP_DEALLOC_ABEND_SVC
    Code de retour principal ; la conversation a été libérée, car le tp partenaire a émis DEALLOCATE avec dealloc_type défini sur AP_ABEND_SVC.

    AP_DEALLOC_ABEND_TIMER
    Code de retour principal ; la conversation a été libérée, car le tp partenaire a émis DEALLOCATE avec dealloc_type défini sur AP_ABEND_TIMER.

    AP_SVC_ERROR_PURGING
    Code de retour principal ; le TP partenaire (ou lu partenaire) a émis un verbe SEND_ERROR avec err_type défini sur AP_SVC dans l’état RECEIVE, PENDING_POST, CONFIRM, CONFIRM_SEND ou CONFIRM_DEALLOCATE. Les données envoyées au programme transactionnel de partenaire ont peut-être été vidées.

Remarques

Avant de modifier l’état de la conversation, ce verbe exécute l’équivalent de l’un des éléments suivants :

  • FLUSH, en envoyant le contenu de la mémoire tampon d’envoi de la lu locale à l’unité lu partenaire (et TP).

  • CONFIRMez, en envoyant le contenu de la mémoire tampon d’envoi de la lu locale et une demande de confirmation au TP partenaire.

    Une fois ce verbe exécuté avec succès, le TP local peut recevoir des données.

    La conversation doit être à l’état SEND lorsque le TP émet ce verbe.

    Les changements d’état, résumés dans le tableau suivant, sont basés sur la valeur de primary_rc.

primary_rc Nouvel état
AP_OK RECEIVE
AP_ALLOCATION_ERROR RESET
AP_CONV_FAILURE_RETRY RESET
AP_CONV_FAILURE_NO_RETRY RESET
AP_DEALLOC_ABEND RESET
AP_DEALLOC_ABEND_PROG RESET
AP_DEALLOC_ABEND_SVC RESET
AP_DEALLOC_ABEND_TIMER RESET
AP_PROG_ERROR_PURGING RECEIVE
AP_SVC_ERROR_PURGING RECEIVE

La conversation ne passe pas à l’état SEND pour le TP partenaire tant que le TP partenaire n’a pas reçu l’une des valeurs suivantes via le paramètre what_rcvd d’un verbe de réception suivant :