Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le verbe RECEIVE_AND_WAIT reçoit toutes les données actuellement disponibles à partir du programme de transaction partenaire (TP). Si aucune donnée n’est actuellement disponible, le tp local attend que les données arrivent.
Pour permettre l’utilisation complète de la prise en charge asynchrone, les verbes émis de manière asynchrone RECEIVE_AND_WAIT ont été modifiés pour agir comme RECEIVE_AND_POST verbes. Plus précisément, alors qu’une RECEIVE_AND_WAIT asynchrone est en attente, les verbes suivants peuvent être émis sur la même conversation :
DEALLOCATE(AP_ABEND_PROG, AP_ABEND_SVC ou AP_ABEND_TIMER)
-
Cela permet à une application, et notamment à un émulateur 5250, d’utiliser un RECEIVE_AND_WAIT asynchrone pour recevoir des données. Bien que le RECEIVE_AND_WAIT soit en suspens, il peut toujours utiliser SEND_ERROR et REQUEST_TO_SEND. Il est recommandé d’utiliser cette fonctionnalité pour une prise en charge asynchrone complète.
La structure suivante décrit le bloc de contrôle de verbe (VCB) utilisé par le verbe RECEIVE_AND_WAIT .
Syntaxe
struct receive_and_wait {
unsigned short opcode;
unsigned char opext;
unsigned char reserv2;
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned char tp_id[8];
unsigned long conv_id;
unsigned short what_rcvd;
unsigned char rtn_status;
unsigned char fill;
unsigned char rts_rcvd;
unsigned char reserv4;
unsigned short max_len;
unsigned short dlen;
unsigned char FAR * dptr;
unsigned char reserv5[5];
};
Membres
Opcode
Paramètre fourni. Spécifie le code de l’opération de verbe, AP_B_RECEIVE_AND_WAIT.
opext
Paramètre fourni. Spécifie l’extension d’opération de verbe, AP_BASIC_CONVERSATION.
réserver2
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 varient en fonction du verbe APPC émis. Consultez les codes de retour pour obtenir des codes d’erreur valides pour ce verbe.
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 varient en fonction du verbe APPC émis. Consultez les codes de retour pour obtenir des codes d’erreur valides pour ce verbe.
tp_id
Paramètre fourni. Identifie le TP local.
La valeur de ce paramètre est retournée par TP_STARTED dans l’appel du TP ou par RECEIVE_ALLOCATE dans le TP appelé.
conv_id
Paramètre fourni. Spécifie l’identificateur de conversation.
La valeur de ce paramètre est retournée par ALLOCATE dans l’appel du TP ou par RECEIVE_ALLOCATE dans le TP appelé.
what_rcvd
Paramètre retourné. Indique si l’état des données ou de la conversation a été reçu. Les valeurs possibles sont répertoriées dans le tableau suivant la section Membres.
rtn_status
Paramètre fourni. Indique si les indicateurs d’état des données et des conversations doivent être retournés au sein d’un appel d’API.
AP_NO spécifie que les indicateurs doivent être retournés individuellement sur des appels distincts du verbe.
AP_YES spécifie que les indicateurs doivent être retournés ensemble, à condition que les deux soient disponibles. Les deux peuvent être retournés lorsque :
La mémoire tampon de réception est suffisamment grande pour contenir toutes les données qui précèdent l’indicateur d’état.
Le paramètre de remplissage spécifie BUFFER ou LL, et les données sont le dernier enregistrement logique avant l’indicateur d’état.
remplir
Paramètre fourni. Utilisé dans une conversation de base pour spécifier la façon dont le tp local reçoit des données. Les valeurs autorisées suivantes sont les suivantes :AP_BUFFER spécifie que le tp local reçoit des données jusqu’à ce que le nombre d’octets spécifié par max_len soit atteint ou jusqu’à la fin des données. Les données sont reçues sans tenir compte du format d’enregistrement logique.
AP_LL spécifie que les données sont reçues au format d’enregistrement logique. Les données reçues peuvent être un enregistrement logique complet, une partie d’octets max_len d’un enregistrement logique ou la fin d’un enregistrement logique.
rts_rcvd
Paramètre retourné. Contient l’indicateur de demande à envoyer. Les valeurs possibles sont les suivantes :AP_YES indique que le tp partenaire a émis REQUEST_TO_SEND, qui demande que le TP local modifie la conversation en état RECEIVE.
AP_NO indique que le tp partenaire n’a pas émis de REQUEST_TO_SEND.
max_len
Paramètre fourni. Indique le nombre maximal d’octets de données que le TP local peut recevoir. La plage est comprise entre 0 et 65535.Pour le système d’exploitation Microsoft Windows, cette valeur ne doit pas dépasser la longueur de la mémoire tampon pour contenir les données reçues.
En émettant RECEIVE_AND_WAIT avec max_len défini sur zéro, le TP local peut déterminer si le tp partenaire a des données à envoyer, rechercher une confirmation ou a modifié l’état de la conversation.
dlen
Paramètre retourné. Indique le nombre d’octets de données reçues. Les données sont stockées dans la mémoire tampon spécifiée par dptr. La longueur zéro indique qu’aucune donnée n’a été reçue.dptr
Paramètre fourni. Fournit l’adresse de la mémoire tampon pour contenir les données reçues par le TP local.Pour le système d’exploitation Windows, la mémoire tampon de données peut résider dans une zone de données statique ou dans une zone allouée globalement. La mémoire tampon de données doit s’adapter entièrement à cette zone.
Valeurs retournées par le paramètre what_rcvd
AP_CONFIRM_DEALLOCATE indique que le TP partenaire a émis DEALLOCATE avec dealloc_type défini sur AP_SYNC_LEVEL et que le niveau de synchronisation de la conversation, établi par ALLOCATE, est AP_CONFIRM_SYNC_LEVEL. Lors de la réception de cette valeur, le TP local émet normalement CONFIRM.
AP_CONFIRM_SEND indique que le tp partenaire a émis PREPARE_TO_RECEIVE avec ptr_type défini sur AP_SYNC_LEVEL et que le niveau de synchronisation de la conversation, établi par ALLOCATE, est AP_CONFIRM_SYNC_LEVEL. Lors de la réception de cette valeur, le TP local émet normalement CONFIRM et commence à envoyer des données.
AP_CONFIRM_WHAT_RECEIVED indique que le tp partenaire a émis CONFIRM. Lors de la réception de cette valeur, le TP local émet normalement CONFIRM.
AP_DATA pouvez être retourné dans une conversation de base en RECEIVE_AND_WAIT si le remplissage est défini sur AP_BUFFER. Le TP local a reçu des données jusqu’à ce que max_len ou la fin des données ait été atteinte. Pour plus d’informations, consultez « RECEIVE_AND_WAIT fin des données » à la fin de cette rubrique.
AP_DATA_COMPLETE indique, pour RECEIVE_AND_WAIT, que le TP local a reçu un enregistrement de données complet ou la dernière partie d’un enregistrement de données.
Pour RECEIVE_AND_WAIT avec remplissage défini sur AP_LL, cette valeur indique que le TP local a reçu un enregistrement logique complet ou la fin d’un enregistrement logique.
Lors de la réception de cette valeur, le TP local réexécute normalement RECEIVE_AND_WAIT ou émet un autre verbe de réception. Si le TP partenaire a envoyé plus de données, le TP local commence à recevoir une nouvelle unité de données.
Sinon, le tp local examine les informations d’état, si primary_rc contient des AP_OK et what_rcvd contient des AP_SEND, des AP_CONFIRM_SEND, des AP_CONFIRM_DEALLOCATE ou des AP_CONFIRM_WHAT_RECEIVED.
Consultez les codes de retour dans cette rubrique pour connaître l’action suivante que le TP local prend normalement.
Si primary_rc contient AP_DEALLOC_NORMAL , la conversation a été libérée en réponse à DEALLOCATE émise par le TP partenaire.
AP_DATA_INCOMPLETE indique, pour RECEIVE_AND_WAIT, que le TP local a reçu un enregistrement de données incomplet. Le paramètre max_len a spécifié une valeur inférieure à la longueur de l’enregistrement de données (ou inférieur au reste de l’enregistrement de données si ce n’est pas le premier verbe de réception pour lire l’enregistrement).
Pour RECEIVE_AND_WAIT avec remplissage défini sur AP_LL, cette valeur indique que le TP local a reçu un enregistrement logique incomplet.
Lors de la réception de cette valeur, le TP local réexécute normalement RECEIVE_AND_WAIT (ou émet un autre verbe de réception) pour recevoir la partie suivante de l’enregistrement.
AP_NONE indique que le TP n’a pas reçu de données ni d’indicateurs d’état de conversation.
AP_SEND indique, pour le tp partenaire, que la conversation a entré l’état RECEIVE. Pour le TP local, la conversation est désormais dans l’état SEND. Lors de la réception de cette valeur, le TP local utilise normalement SEND_DATA pour commencer à envoyer des données.
Codes de retour
AP_OK
Code de retour principal ; le verbe exécuté avec succès.
Lorsque rtn_status est AP_YES , le code de retour précédent ou l’un des codes de retour suivants peut être retourné.
AP_DATA_COMPLETE_SEND
Code de retour principal ; il s’agit d’une combinaison de AP_DATA_COMPLETE et de AP_SEND.
AP_DATA_COMPLETE_CONFIRM_SEND
Code de retour principal ; il s’agit d’une combinaison de AP_DATA_COMPLETE et de AP_CONFIRM_SEND.
AP_DATA_COMPLETE_CONFIRM
Code de retour principal ; il s’agit d’une combinaison de AP_DATA_COMPLETE et de AP_CONFIRM_WHAT_RECEIVED.
AP_DATA_COMPLETE_CONFIRM_DEALL
Code de retour principal ; il s’agit d’une combinaison de AP_DATA_COMPLETE et de AP_CONFIRM_DEALLOCATE.
AP_DATA_SEND
Code de retour principal ; il s’agit d’une combinaison de AP_DATA et de AP_SEND.
AP_DATA_CONFIRM_SEND
Code de retour principal ; il s’agit d’une combinaison de AP_DATA et de AP_CONFIRM_SEND.
AP_DATA_CONFIRM
Code de retour principal ; il s’agit d’une combinaison de AP_DATA et de AP_CONFIRM_WHAT_RECEIVED.
AP_DATA_CONFIRM_DEALLOCATE
Code de retour principal ; il s’agit d’une combinaison de AP_DATA et de AP_CONFIRM_DEALLOCATE.
AP_DEALLOC_NORMAL
Code de retour principal ; le TP partenaire a désalloué la conversation sans demander la confirmation et émis DEALLOCATE avec dealloc_type défini sur l’une des options suivantes :
AP_CONFIRM_SYNC_LEVEL
AP_FLUSH
AP_SYNC_LEVEL avec le niveau de synchronisation de la conversation spécifié comme AP_NONE
Si rtn_status est AP_YES, examinez également what_rcvd .
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 affecté 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_BAD_RETURN_STATUS_WITH_DATA
Code de retour secondaire ; la valeur rtn_status spécifiée n’a pas été reconnue par APPC.
AP_INVALID_DATA_SEGMENT
Code de retour secondaire ; la longueur spécifiée pour la mémoire tampon de données était plus longue que le segment alloué pour contenir la mémoire tampon.
AP_RCV_AND_WAIT_BAD_FILL
Code de retour secondaire ; pour les conversations de base, le remplissage a été défini sur une valeur non valide.
AP_STATE_CHECK
Code de retour principal ; le verbe n’a pas exécuté, car il a été émis dans un état non valide.
AP_RCV_AND_WAIT_BAD_STATE
Code de retour secondaire ; la conversation n’était pas dans l’état RECEIVE ou SEND lorsque le TP a émis ce verbe.
AP_RCV_AND_WAIT_NOT_LL_BDY
Code de retour secondaire ; pour les conversations de base, la conversation était dans l’état SEND ; le TP a commencé mais n’a pas fini d’envoyer 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’une défaillance de lien. La raison de l’échec est journalisée dans le journal des erreurs système. Réessayez l’allocation.
AP_CONVERSATION_TYPE_MISMATCH
Code de retour secondaire ; l’unité logique partenaire (LU) ou TP 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 spécifiée des données PIP, mais le tp partenaire n’a pas besoin de ces données, ou l’unité logique du partenaire ne le prend pas en charge.
AP_PIP_NOT_SPECIFIED_CORRECTLY
Code de retour secondaire ; le tp partenaire requiert des données PIP, mais la demande d’allocation spécifiée n’a pas de données PIP ou un nombre incorrect de paramètres.
AP_SECURITY_NOT_VALID
Code de retour secondaire ; l’identificateur de l’utilisateur ou le mot de passe spécifié dans la demande d’allocation n’a pas été accepté par l’unité logique partenaire.
AP_SYNC_LEVEL_NOT_SUPPORTED
Code de retour secondaire ; le tp partenaire ne prend pas en charge le sync_level (AP_NONE ou AP_CONFIRM_SYNC_LEVEL) spécifié 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é logique 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é logique distante a rejeté la demande d’allocation, car elle n’a pas pu démarrer le tp partenaire demandé. La condition est permanente. La raison de l’erreur peut être journalisé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é logique distante a rejeté la demande d’allocation, car elle n’a pas pu démarrer le tp partenaire demandé. La condition peut être temporaire, telle qu’un délai d’attente. La raison de l’erreur peut être journalisée sur le nœud distant. Réessayez l’allocation.
AP_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 tp et le nœud PU 2.1 a été interrompue (erreur LAN).
Le SnaBase sur l’ordinateur du TP a rencontré un ABEND.
L’administrateur système doit examiner le journal des erreurs pour déterminer la raison de l’ABEND.
AP_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.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 l’unité logique 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 est inférieur à 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 n’est disponible pour satisfaire la requête ALLOCATE .
Lorsque ALLOCATE produit 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 l’unité logique locale (lorsque TP_STARTED est émise) n’est pas configurée sur des nœuds actifs. Le problème peut être l’un des suivants :
Le nœud avec l’unité logique locale n’est pas démarré.
L’unité logique 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. Ne 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 ; le VCB s’étend au-delà de la fin du segment de données.AP_PROG_ERROR_NO_TRUNC
Code de retour principal ; le tp partenaire a émis SEND_ERROR avec err_type défini sur AP_PROG pendant que la conversation était à l’état SEND. Les données n’ont pas été tronquées.AP_PROG_ERROR_PURGING
Code de retour principal ; 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 qui ne sont pas encore reçues, sont vidées.AP_PROG_ERROR_TRUNC
Code de retour principal ; dans l’état SEND, après l’envoi d’un enregistrement logique incomplet, le tp partenaire a émis SEND_ERROR avec err_type défini sur AP_PROG . Le TP local peut avoir reçu la première partie de l’enregistrement logique par le biais d’un verbe de réception.AP_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.AP_CONV_BUSY
Code de retour principal ; il ne peut y avoir qu’un seul verbe de conversation en suspens à 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 ; le thread appelant est déjà dans un appel bloquant.AP_UNEXPECTED_DOS_ERROR
Code de retour principal ; le système d’exploitation a retourné une erreur à APPC lors du traitement d’un appel APPC à partir du TP local. Le code de retour du système d’exploitation est retourné via le secondary_rc. Il apparaît dans l’ordre d’échange d’octets Intel. 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 provoqué l’envoi d’une demande DEALLOCATE au partenaire.
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_NO_TRUNC
Code de retour principal ; dans l’état SEND, le tp partenaire (ou lu partenaire) a émis SEND_ERROR avec err_type défini sur AP_SVC . Les données n’ont pas été tronquées.AP_SVC_ERROR_PURGING
Code de retour principal ; le tp partenaire (ou lu partenaire) émis SEND_ERROR avec err_type défini sur AP_SVC lors de la réception, de l’PENDING_POST, de la CONFIRMATION, de l’CONFIRM_SEND ou de l’état CONFIRM_DEALLOCATE. Les données envoyées au tp partenaire ont peut-être été vidées.AP_SVC_ERROR_NO_TRUNC
Code de retour principal ; dans l’état SEND, après l’envoi d’un enregistrement logique incomplet, le tp partenaire (ou lu partenaire) a émis SEND_ERROR. Le TP local a peut-être reçu la première partie de l’enregistrement logique.
Remarques
Le TP local reçoit des données par le biais du processus suivant :
Le TP local émet un verbe de réception jusqu’à ce qu’il termine la réception d’une unité complète de données. Les données reçues peuvent être les suivantes :
Un enregistrement logique.
Mémoire tampon des données reçues indépendamment de son format d’enregistrement logique.
Le TP local peut avoir besoin de émettre le verbe de réception plusieurs fois afin de recevoir une unité complète de données. Une fois qu’une unité complète de données a été reçue, le TP local peut le manipuler.
Les verbes de réception sont RECEIVE_AND_POST, RECEIVE_AND_WAIT et RECEIVE_IMMEDIATE.
Le TP local émet à nouveau le verbe de réception. Cela a l’un des effets suivants :
Si le TP partenaire a envoyé plus de données, le TP local commence à recevoir une nouvelle unité de données.
Si le TP partenaire a terminé d’envoyer des données ou attend la confirmation, les informations d’état (disponibles via le paramètre what_rcvd ) indiquent l’action suivante que le TP local prend normalement.
La conversation doit être dans l’état RECEIVE ou SEND lorsque le TP émet ce verbe.
Émission du verbe dans l’état SEND
L’émission de RECEIVE_AND_WAIT pendant que la conversation est dans l’état SEND a les effets suivants :
L’unité logique locale envoie les informations dans sa mémoire tampon d’envoi et un indicateur SEND au tp partenaire.
La conversation passe à l’état RECEIVE ; le TP local attend que le tp partenaire envoie des données.
Changement d’état
Le nouvel état de conversation est déterminé par les facteurs suivants :
État dans lequel la conversation se trouve lorsque le TP émet le verbe.
Paramètre primary_rc .
Paramètre what_rcvd si primary_rc contient AP_OK.
Verbe émis dans l’état SEND
Le tableau suivant détaille les modifications d’état lorsque RECEIVE_AND_WAIT est émis dans l’état SEND et primary_rc est AP_OK.
| what_rcvd | Nouvel état |
|---|---|
| AP_CONFIRM_DEALLOCATE | CONFIRM_DEALLOCATE |
| AP_DATA_COMPLETE_CONFIRM_DEALL | CONFIRM_DEALLOCATE |
| AP_DATA_CONFIRM_DEALLOCATE | CONFIRM_DEALLOCATE |
| AP_CONFIRM_SEND | CONFIRM_SEND |
| AP_DATA_COMPLETE_CONFIRM_SEND | CONFIRM_SEND |
| AP_DATA_CONFIRM_SEND | CONFIRM_SEND |
| AP_CONFIRM_WHAT_RECEIVED | CONFIRMER |
| AP_DATA_COMPLETE_CONFIRM | CONFIRMER |
| AP_DATA_CONFIRM | CONFIRMER |
| AP_DATA | RECEVOIR |
| AP_DATA_COMPLETE | RECEVOIR |
| AP_DATA_INCOMPLETE | RECEVOIR |
| AP_SEND | Aucune modification |
| AP_DATA_COMPLETE_SEND | SEND_PENDING |
Le tableau suivant détaille les modifications d’état lorsque RECEIVE_AND_WAIT est émis dans l’état SEND et primary_rc n’est pas AP_OK.
| primary_rc | Nouvel état |
|---|---|
| AP_ALLOCATION_ERROR | RÉINITIALISER |
| AP_CONV_FAILURE_RETRY | RÉINITIALISER |
| AP_CONV_FAILURE_NO_RETRY | RÉINITIALISER |
| AP_DEALLOC_ABEND | RÉINITIALISER |
| AP_DEALLOC_ABEND_PROG | RÉINITIALISER |
| AP_DEALLOC_ABEND_SVC | RÉINITIALISER |
| AP_DEALLOC_ABEND_TIMER | RÉINITIALISER |
| AP_DEALLOC_NORMAL | RÉINITIALISER |
| AP_PROG_ERROR_PURGING | RECEVOIR |
| AP_PROG_ERROR_NO_TRUNC | RECEVOIR |
| AP_SVC_ERROR_PURGING | RECEVOIR |
| AP_SVC_ERROR_NO_TRUNC | RECEVOIR |
Verbe émis dans l’état RECEIVE
Le tableau suivant détaille les modifications d’état lorsque RECEIVE_AND_WAIT est émis dans l’état RECEIVE et primary_rc est AP_OK.
| what_rcvd | Nouvel état |
|---|---|
| AP_CONFIRM_DEALLOCATE | CONFIRM_DEALLOCATE |
| AP_DATA_COMPLETE_CONFIRM_DEALL | CONFIRM_DEALLOCATE |
| AP_DATA_CONFIRM_DEALLOCATE | CONFIRM_DEALLOCATE |
| AP_CONFIRM_SEND | CONFIRM_SEND |
| AP_DATA_COMPLETE_CONFIRM_SEND | CONFIRM_SEND |
| AP_DATA_CONFIRM_SEND | CONFIRM_SEND |
| AP_CONFIRM_WHAT_RECEIVED | CONFIRMER |
| AP_DATA_COMPLETE_CONFIRM | CONFIRMER |
| AP_DATA_CONFIRM | CONFIRMER |
| AP_DATA | Aucune modification |
| AP_DATA_COMPLETE | Aucune modification |
| AP_DATA_INCOMPLETE | Aucune modification |
| AP_SEND | ENVOYER |
| AP_DATA_COMPLETE_SEND | SEND_PENDING |
Le tableau suivant détaille les modifications d’état lorsque RECEIVE_AND_WAIT est émis dans l’état RECEIVE et primary_rc n’est pas AP_OK.
| primary_rc | Nouvel état |
|---|---|
| AP_ALLOCATION_ERROR | RÉINITIALISER |
| AP_CONV_FAILURE_RETRY | RÉINITIALISER |
| AP_CONV_FAILURE_NO_RETRY | RÉINITIALISER |
| AP_DEALLOC_ABEND | RÉINITIALISER |
| AP_DEALLOC_ABEND_PROG | RÉINITIALISER |
| AP_DEALLOC_ABEND_SVC | RÉINITIALISER |
| AP_DEALLOC_ABEND_TIMER | RÉINITIALISER |
| AP_DEALLOC_NORMAL | RÉINITIALISER |
| AP_PROG_ERROR_PURGING | Aucune modification |
| AP_PROG_ERROR_NO_TRUNC | Aucune modification |
| AP_SVC_ERROR_PURGING | Aucune modification |
| AP_SVC_ERROR_NO_TRUNC | Aucune modification |
| AP_PROG_ERROR_TRUNC | Aucune modification |
| AP_SVC_ERROR_TRUNC | Aucune modification |
RECEIVE_AND_WAIT fin des données
Dans les conversations de base, si les problèmes de tp locaux RECEIVE_AND_WAIT et définissent le remplissage sur AP_BUFFER, la réception des données se termine lorsque max_len ou la fin des données est atteinte. La fin des données est indiquée par :
Paramètre primary_rc avec une valeur autre que AP_OK (par exemple, AP_DEALLOC_NORMAL).
Paramètre what_rcvd avec l’une des valeurs suivantes :
AP_SEND
AP_CONFIRM_SEND
AP_CONFIRM_DEALLOCATE
AP_CONFIRM_WHAT_RECEIVED
AP_DATA_CONFIRM_SEND
AP_DATA_CONFIRM_DEALLOCATE
AP_DATA_CONFIRM
Pour déterminer si la fin des données a été atteinte, le TP local réexécute RECEIVE_AND_WAIT. Si la nouvelle primary_rc contient AP_OK et what_rcvd contient des AP_DATA, la fin des données n’a pas été atteinte. Si, toutefois, la fin des données a été atteinte, primary_rc ou what_rcvd indiquera la cause de la fin des données.
RECEIVE_AND_WAIT attend que les données ou un indicateur soient envoyés par le tp partenaire. Si vous avez besoin du TP local pour fonctionner en continu, utilisez RECEIVE_IMMEDIATE à la place.