SEND_ERROR

Le verbe SEND_ERROR informe le programme de transaction partenaire (TP) que le tp local a rencontré une erreur au niveau de l’application.

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

Syntaxe

  
struct send_error {  
    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 char       rts_rcvd;  
    unsigned char       err_type;  
    unsigned char       err_dir;  
    unsigned char       reserv3;  
    unsigned short      log_dlen;  
    unsigned char FAR * log_dptr;  
};   

Membres

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

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 l’appel du TP ou par RECEIVE_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 ALLOCATEin l’appel de TP ou par RECEIVE_ALLOCATE dans le TP appelé.

rts_rcvd
Paramètre retourné. Indique si le tp partenaire a émis REQUEST_TO_SEND. 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. Pour passer à l’état RECEIVE, le tp local peut utiliser PREPARE_TO_RECEIVE, RECEIVE_AND_WAIT ou RECEIVE_AND_POST.

  • AP_NO indique que le tp partenaire n’a pas émis de REQUEST_TO_SEND.

    err_type
    Paramètre fourni. Indique le type de l’erreur signalée : programme d’application ou programme de service.

    AP_PROG indique que l’erreur doit être signalée à un programme d’application de l’utilisateur final. Cette valeur entraîne l’envoi de l’un des codes de retour suivants au TP partenaire :

    AP_PROG_ERROR_NO_TRUNC

    AP_PROG_ERROR_PURGING

    AP_PROG_ERROR_TRUNC

    AP_SVC indique que l’erreur doit être signalée à un programme de service. Cette valeur entraîne l’envoi de l’un des codes de retour suivants au TP partenaire :

    AP_SVC_ERROR_NO_TRUNC

    AP_SVC_ERROR_PURGING

    AP_SVC_ERROR_TRUNC

    err_dir
    Paramètre fourni. Indique si l’erreur est liée aux données reçues ou aux données qui sont sur le point d’être envoyées. Utilisez ce paramètre uniquement lorsque la conversation est dans SEND_PENDING’état. Le paramètre est ignoré sinon. Voici les valeurs autorisées :

  • AP_RCV_DIR_ERROR indique que le TP a émis SEND_ERROR après avoir détecté une erreur associée aux données juste reçues.

  • AP_SEND_DIR_ERROR indique que le TP a émis SEND_ERROR après avoir détecté une erreur associée aux données qu’il allait envoyer. Par exemple, le tp a rencontré une erreur lors de la lecture des données à partir du lecteur de disque.

    reserv3
    Un champ réservé.

    log_dlen
    Paramètre fourni pour les conversations de base ; spécifie le nombre d’octets de données à envoyer au fichier journal des erreurs. La plage est comprise entre 0 et 32767.

    Une longueur égale à zéro indique qu’il n’existe aucune donnée de journal des erreurs.

    log_dptr
    Paramètre fourni pour les conversations de base ; spécifie l’adresse de la mémoire tampon de données contenant les informations d’erreur. Les données sont envoyées au journal des erreurs local et à l’unité logique partenaire (LU).

    Ce paramètre est utilisé par SEND_ERROR si log_dlen est supérieur à zéro.

    Pour Microsoft 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.

    Le tp doit mettre en forme les données d’erreur en tant que variable de journal des erreurs GDS. Pour plus d’informations, consultez vos manuels IBM SNA.

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 correspond pas à un identificateur de conversation affecté par APPC.

AP_BAD_TP_ID

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

AP_BAD_ERROR_DIRECTION

Code de retour secondaire ; le err_dir spécifié n’a pas été reconnu par APPC.

AP_INVALID_DATA_SEGMENT

Code de retour secondaire ; les données d’erreur pour le fichier journal étaient plus longues que le segment alloué pour contenir les données d’erreur, ou l’adresse de la mémoire tampon de données d’erreur était incorrecte.

AP_SEND_ERROR_BAD_TYPE

Code de retour secondaire ; la valeur de err_type n’était pas valide.

AP_SEND_ERROR_LOG_LL_WRONG

Code de retour secondaire ; le champ LL de la variable GDS du journal des erreurs ne correspond pas à la longueur réelle des données.

Les codes de retour suivants peuvent être générés lorsque SEND_ERROR est émis dans n’importe quel état autorisé :

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

    Lorsque ce code de retour est utilisé avec ALLOCATE, il peut indiquer qu’aucun système de communication n’a pu être 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 configurée sur aucun nœud actif. 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 ; indique que le bloc de contrôle de verbe s’étend au-delà de la fin du segment de donné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 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 ; 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.

    Les codes de retour suivants peuvent être générés uniquement si SEND_ERROR est émis à l’état SEND :

    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 consignée dans le journal des erreurs système. Réessayez l’allocation.

    AP_CONVERSATION_TYPE_MISMATCH

    Code de retour secondaire ; l’unité logique partenaire 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 ; les données PIP spécifiées par la demande d’allocation, mais le tp partenaire ne nécessite pas ces données, ou l’unité logique partenaire ne la 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 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 d’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 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é logique 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_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 pas encore reçues, sont purgées.

    Les codes de retour suivants peuvent être générés uniquement si SEND_ERROR est émis à l’état SEND :

    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_PURGING
    Code de retour principal ; le tp partenaire (ou lu partenaire) a émis SEND_ERROR avec err_type défini sur AP_SVC lors de 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.

    Le code de retour suivant ne peut être généré que si SEND_ERROR est émis dans l’état RECEIVE :

    AP_DEALLOC_NORMAL
    Code de retour principal ; ce code de retour n’indique pas d’erreur.

    Le tp partenaire a émis DEALLOCATE avec dealloc_type défini sur l’un des éléments suivants :

  • AP_FLUSH

  • AP_SYNC_LEVEL avec le niveau de synchronisation de la conversation spécifié en tant que AP_NONE

Remarques

La conversation peut être dans n’importe quel état, à l’exception de RESET lorsque le TP émet ce verbe. L’état de la conversation doit être SEND_PENDING si err_dir est utilisé.

Le tp local envoie immédiatement la notification d’erreur au tp partenaire ; il ne contient pas les informations dans la mémoire tampon d’envoi de l’unité logique locale.

Lors de l’exécution réussie de ce verbe, la conversation est dans l’état SEND pour le TP local et dans l’état RECEIVE pour le TP partenaire.

Le nouvel état est déterminé par primary_rc. Les modifications d’état possibles sont résumées dans le tableau suivant.

primary_rc Nouvel état
AP_OK SEND
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_DEALLOC_NORMAL RESET
AP_PROG_ERROR_PURGING RECEIVE
AP_SVC_ERROR_PURGING RECEIVE

Si la conversation est en état RECEIVE lorsque le TP émet SEND_ERROR, les données entrantes sont vidées par APPC. Ces données incluent :

  • Données envoyées par SEND_DATA.

  • Renvoyer des indicateurs de code.

  • Demandes de confirmation.

  • Demandes de désallocation.

    APPC ne purge pas un indicateur de requête à envoyer entrant. APPC remplace les indicateurs de code de retour entrant vidés par d’autres codes de retour. Le code de retour principal AP_OK remplace les indicateurs de code de retour vides suivants :

    AP_PROG_ERROR_NO_TRUNC

    AP_PROG_ERROR_PURGING

    AP_PROG_ERROR_TRUNC

    AP_SVC_ERROR_NO_TRUNC

    AP_SVC_ERROR_PURGING

    AP_SVC_ERROR_TRUNC

    Le code de retour principal AP_DEALLOC_NORMAL remplace les indicateurs de code de retour vides suivants :

    AP_ALLOCATION_ERROR

    AP_ALLOCATION_FAILURE_NO_RETRY

    AP_ALLOCATION_FAILURE_RETRY

    AP_CONVERSATION_TYPE_MISMATCH

    AP_DEALLOC_ABEND

    AP_DEALLOC_ABEND_PROG

    AP_DEALLOC_ABEND_SVC

    AP_DEALLOC_ABEND_TIMER

    AP_PIP_NOT_ALLOWED

    AP_PIP_NOT_SPECIFIED_CORRECTLY

    AP_SECURITY_NOT_VALID

    AP_SYNC_LEVEL_NOT_SUPPORTED

    AP_TP_NAME_NOT_RECOGNIZED

    AP_TRANS_PGM_NOT_AVAIL_NO_RETRY

    AP_TRANS_PGM_NOT_AVAIL_RETRY

    Lorsque la conversation est dans SEND_PENDING état, APPC signale les codes de retour suivants au tp partenaire en fonction de la valeur dans err_dir :

    AP_PROG_ERROR_PURGING
    Le TP local a émis SEND_ERROR avec RÉCEPTION comme err_dir.

    AP_PROG_ERROR_NO_TRUNC
    Le TP local a émis SEND_ERROR avec SEND en tant que err_dir.

    AP_SVC_ERROR_PURGING
    Le TP local a émis SEND_ERROR avec RÉCEPTION comme err_dir.

    AP_SVC_ERROR_NO_TRUNC
    Le TP local a émis SEND_ERROR avec SEND en tant que err_dir.