Partager via


Send_Error (CPI-C)

L’appel Send_Error (nom de fonction cmserr) informe le programme partenaire que le programme local a rencontré une erreur au niveau de l’application.

Syntaxe

  
CM_ENTRY Send_Error(   
  unsigned char FAR *conversation_ID,    
    CM_INT32 FAR *request_to_send_received,    
  CM_INT32 FAR *return_code              
);  

Paramètres

conversation_ID
Paramètre fourni. Spécifie l’identificateur de la conversation. La valeur de ce paramètre a été retournée par Initialize_Conversation ou Accept_Conversation.

request_to_send_received
Paramètre retourné. Spécifie l’indicateur request-to-send-received. Les valeurs possibles sont les suivantes :

CM_REQ_TO_SEND_RECEIVED
Le programme partenaire a émis Request_To_Send, qui demande au programme local de modifier l’état RECEIVE de la conversation.

CM_REQ_TO_SEND_NOT_RECEIVED
Le programme partenaire n’a pas émettre de Request_To_Send. Cette valeur n’est pas pertinente si return_code est définie sur CM_PROGRAM_PARAMETER_CHECK ou CM_STATE_CHECK.

return_code
Code retourné à partir de cet appel. Les codes de retour valides sont répertoriés plus loin dans cette rubrique.

Codes de retour

La valeur de return_code varie en fonction de l’état de conversation lorsque l’appel est émis.

État SEND

Si le programme émet l’appel avec la conversation en état SEND, les codes de retour suivants sont possibles :

CM_OK
Code de retour principal ; l’appel a été exécuté avec succès.

CM_OPERATION_NOT_ACCEPTED
Code de retour principal ; une opération précédente sur cette conversation est incomplète.

CM_OPERATION_INCOMPLETE
Code de retour principal ; l’opération n’est pas terminée (le mode de traitement n’est pas bloquant uniquement) et est toujours en cours. Le programme peut émettre des Wait_For_Conversation pour attendre l’achèvement de l’opération, ou Cancel_Conversation pour annuler l’opération et la conversation. Si Specify_Windows_Handle a été appelée, l’application doit attendre la notification par un message Microsoft® Windows® et ne pas appeler Wait_For_Conversation.

CM_PRODUCT_SPECIFIC_ERROR
Code de retour principal ; une erreur spécifique au produit s’est produite et a été enregistrée dans le journal des erreurs des produits.

CM_CONVERSATION_TYPE_MISMATCH
Code de retour principal ; l’unité logique partenaire (LU) ou le programme ne prend pas en charge le type de conversation (de base ou mappé) spécifié dans la demande d’allocation.

CM_PIP_NOT_SPECIFIED_CORRECTLY
Code de retour principal ; la demande d’allocation a été rejetée par un programme de transaction lu 6.2 (TP) nonCPI-C. Le programme partenaire nécessite une ou plusieurs variables de données PIP, qui ne sont pas prises en charge par CPI-C.

CM_SECURITY_NOT_VALID
Code de retour principal ; 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.

CM_SYNC LEVEL_NOT_SUPPORTED_PGM
Code de retour principal ; le programme partenaire ne prend pas en charge le niveau de synchronisation spécifié dans la demande d’allocation.

CM_TPN_NOT_RECOGNIZED
Code de retour principal ; l’unité logique partenaire ne reconnaît pas le nom du programme spécifié dans la demande d’allocation.

CM_TP_NOT_AVAILABLE_NO_RETRY
Code de retour principal ; l’unité logique partenaire ne peut pas démarrer le programme spécifié dans la demande d’allocation en raison d’une condition 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.

CM_TP_NOT_AVAILABLE_RETRY
Code de retour principal ; l’unité logique partenaire ne peut pas démarrer le programme spécifié dans la demande d’allocation en raison d’une condition temporaire. La raison de l’erreur peut être journalisée sur le nœud distant. Réessayez l’allocation.

CM_PROGRAM_ERROR_PURGING
Code de retour principal ; l’une des opérations suivantes s’est produite :

  • Dans l’état RECEIVE ou CONFIRM, le programme partenaire a émis Send_Error. Les données envoyées, mais qui ne sont pas encore reçues, sont vidées.

  • Dans SEND_PENDING état avec la direction d’erreur définie sur CM_RECEIVE_ERROR, le programme partenaire a émis Send_Error. Les données n’ont pas été purgées.

    CM_RESOURCE_FAILURE_NO_RETRY
    Code de retour principal ; l’une des opérations suivantes s’est produite :

  • La conversation a été interrompue prématurément en raison d’une condition permanente. Ne réessayez pas tant que l’erreur n’a pas été corrigée.

  • Le programme partenaire n’a pas désalloué la conversation avant de se terminer normalement.

    CM_RESOURCE_FAILURE_RETRY
    Code de retour principal ; la conversation a été interrompue prématurément en raison d’une condition temporaire, telle que l’échec du modem. Réessayez la conversation.

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

  • Le programme distant a émis la libération avec l’ensemble de paramètres de type à CM_DEALLOCATE_ABEND, ou l’unité logique distante l’a fait en raison d’une condition de fin anormale du programme distant. Si la conversation du programme distant était dans l’état RECEIVE lors de l’émission de l’appel, les informations envoyées par le programme local et non encore reçues par le programme distant sont vidées.

  • Le TP distant s’est terminé normalement, mais n’a pas désalloué la conversation avant de terminer. Les services de nœud au niveau de l’unité logique distante ont désalloué la conversation pour le compte du TP distant.

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

  • Le programme partenaire a émis La libération avec le paramètre de type défini sur ABEND_SVC.

  • Le programme partenaire n’a pas désalloué la conversation avant de terminer.

    Si la conversation est en état RECEIVE pour le programme partenaire lorsque cet appel est émis par le programme local, les données envoyées par le programme local et non encore reçues par le programme partenaire sont vidées.

    CM_DEALLOCATED_ABEND_TIMER
    Code de retour principal ; la conversation a été libérée, car le programme partenaire a émis La libération avec le paramètre de type défini sur ABEND_TIMER. Si la conversation est en état RECEIVE pour le programme partenaire lorsque cet appel est émis par le programme local, les données envoyées par le programme local et non encore reçues par le programme partenaire sont vidées.

    CM_SVC_ERROR_PURGING
    Code de retour principal ; dans l’état SEND, le programme partenaire ou l’unité logique partenaire a émis Send_Error avec le paramètre de type défini sur SVC. Les données envoyées au programme partenaire ont peut-être été vidées.

    État RECEIVE

    Si l’appel est émis dans l’état RECEIVE, les codes de retour suivants sont possibles :

    CM_OK
    Code de retour principal ; étant donné que les informations entrantes sont purgées lorsque l’appel Send_Error est émis dans l’état RECEIVE, CM_OK est généré au lieu des éléments suivants :

  • CM_PROGRAM_ERROR_NO_TRUNC

  • CM_PROGRAM_ERROR_PURGING

  • CM_SVC_ERROR_NO_TRUNC

  • CM_SVC_ERROR_PURGING

  • CM_PROGRAM_ERROR_TRUNC

  • CM_SVC_ERROR_TRUNC (conversation de base uniquement)

  • CM_PRODUCT_SPECIFIC_ERROR

  • CM_RESOURCE_FAILURE_NO_RETRY

  • CM_RESOURCE_FAILURE_RETRY

    Pour obtenir une explication de ces codes de retour, consultez CPI-C Codes de retour courants.

    CM_DEALLOCATED_NORMAL
    Code de retour principal ; étant donné que les informations entrantes sont purgées lorsque Send_Error est émis dans l’état RECEIVE, CM_DEALLOCATED_NORMAL est généré au lieu des éléments suivants :

  • CM_CONVERSATION_TYPE_MISMATCH

  • CM_PIP_NOT_SPECIFIED_CORRECTLY

  • CM_SECURITY_NOT_VALID

  • CM_SYNC_LEVEL_NOT_SUPPORTED_PGM

  • CM_TPN_NOT_RECOGNIZED

  • CM_TP_NOT_AVAILABLE_NO_RETRY

  • CM_TP_NOT_AVAILABLE_RETRY

  • CM_DEALLOCATED_ABEND

  • CM_DEALLOCATED_ABEND_SVC

  • CM_DEALLOCATED_ABEND_TIMER

    État SEND_PENDING

    Si l’appel est émis dans SEND_PENDING’état, les codes de retour suivants sont possibles :

  • CM_OK (code de retour principal ; l’appel a été exécuté avec succès.)

  • CM_PRODUCT_SPECIFIC_ERROR

  • CM_PROGRAM_ERROR_PURGING

  • CM_RESOURCE_FAILURE_NO_RETRY

  • CM_RESOURCE_FAILURE_RETRY

  • CM_DEALLOCATED_ABEND

  • CM_DEALLOCATED_ABEND_SVC

  • CM_DEALLOCATED_ABEND_TIMER

  • CM_SVC_ERROR_PURGING

    Pour obtenir une explication de ces codes de retour, consultez CPI-C Codes de retour courants.

    CONFIRM, CONFIRM_SEND ou état de CONFIRM_DEALLOCATE

    Si l’appel est émis dans CONFIRM, CONFIRM_SEND ou CONFIRM_DEALLOCATE état, les codes de retour suivants sont possibles :

  • CM_OK (code de retour principal ; l’appel a été exécuté avec succès.)

  • CM_PRODUCT_SPECIFIC_ERROR

  • CM_RESOURCE_FAILURE_NO_RETRY

  • CM_RESOURCE_FAILURE_RETRY

    Pour obtenir une explication de ces codes de retour, consultez CPI-C Codes de retour courants.

    Autres États

    L’émission de Send_Error avec la conversation dans l’état RESET ou INITIALIZE est illégale. Les codes de retour suivants sont possibles :

    CM_PROGRAM_PARAMETER_CHECK
    Code de retour principal ; la valeur spécifiée par conversation_ID n’est pas valide.

    CM_PROGRAM_STATE_CHECK
    Code de retour principal ; l’état de conversation n’est pas SEND, RECEIVE, CONFIRM, CONFIRM_SEND, CONFIRM_DEALLOCATE ou SEND_PENDING.

    modifications d’état

    La conversation peut être dans n’importe quel état, sauf INITIALIZE ou RESET.

    Les modifications d’état, résumées dans le tableau suivant, sont basées sur la valeur du paramètre return_code .

return_code Nouvel état
CM_OK ENVOYER
CM_CONVERSATION_TYPE_MISMATCH RÉINITIALISER
CM_PIP_NOT_SPECIFIED_CORRECTLY RÉINITIALISER
CM_SECURITY_NOT_VALID RÉINITIALISER
CM_SYNC_LEVEL_NOT_SUPPORTED_PGM RÉINITIALISER
CM_TPN_NOT_RECOGNIZED RÉINITIALISER
CM_TP_NOT_AVAILABLE_NO_RETRY RÉINITIALISER
CM_TP_NOT_AVAILABLE_RETRY RÉINITIALISER
CM_RESOURCE_FAILURE_RETRY RÉINITIALISER
CM_RESOURCE_FAILURE_NO_RETRY RÉINITIALISER
CM_DEALLOCATED_ABEND RÉINITIALISER
CM_DEALLOCATED_ABEND_PROG RÉINITIALISER
CM_DEALLOCATED_ABEND_SVC RÉINITIALISER
CM_DEALLOCATED_ABEND_TIMER RÉINITIALISER
CM_DEALLOCATED_NORMAL RÉINITIALISER
CM_PROGRAM_ERROR_PURGING RECEVOIR
CM_SVC_ERROR_PURGING RECEVOIR
Tous les autres Aucune modification

Lors de l’exécution réussie de cet appel, la conversation est en état SEND pour le programme local et dans l’état RECEIVE pour le programme partenaire.

Dans une conversation de base, le programme local peut utiliser Set_Log_Data pour spécifier que les données du journal des erreurs doivent être envoyées à l’unité logique partenaire et ajoutées au journal des erreurs local. Si la caractéristique de longueur des données du journal des conversations est supérieure à zéro, l’unité logique met en forme les données et les stocke dans la mémoire tampon d’envoi.

Une fois Send_Error terminée, la longueur des données du journal est définie sur zéro et les données du journal sur Null.

Si la conversation est en état RECEIVE lorsque le programme émet Send_Error, les données entrantes sont vidées par CPI-C. Ces données incluent :

  • Données envoyées par Send_Data.

  • Demandes de confirmation.

  • Demandes de désallocation si le type de désallocation des conversations est défini sur CM_DEALLOCATE_CONFIRM ou sur CM_DEALLOCATE_SYNC_LEVEL avec le niveau de synchronisation défini sur CM_CONFIRM.

    CPI-C n’effectue pas l’achat d’un indicateur de requête à envoyer entrant.

    Si la conversation est dans SEND_PENDING état, le programme local peut émettre Set_Error_Direction pour spécifier si l’erreur signalée provient des données reçues ou du traitement du programme local après avoir reçu les données.

Remarques

Le programme local peut utiliser Send_Error à des fins telles que l’information du programme partenaire d’une erreur rencontrée dans les données reçues, le rejet d’une demande de confirmation ou la troncation d’un enregistrement logique incomplet qu’il envoie.

Send_Error vide la mémoire tampon d’envoi locale et envoie au programme partenaire le contenu de la mémoire tampon d’envoi suivie de la notification d’erreur.

La notification d’erreur est envoyée au partenaire comme l’une des valeurs de return_code suivantes :

  • CM_PROGRAM_ERROR_TRUNC

  • CM_PROGRAM_ERROR_NO_TRUNC

  • CM_PROGRAM_ERROR_PURGING