Send_Error (CPI-C)
L’appel Send_Error (nom de la fonction cmserr) avertit 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 la conversation à l’état RECEIVE.
CM_REQ_TO_SEND_NOT_RECEIVED
Le programme partenaire n’a pas Request_To_Send. Cette valeur n’est pas pertinente si return_code est défini sur CM_PROGRAM_PARAMETER_CHECK ou CM_STATE_CHECK.
return_code
Code retourné par 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 la conversation lors de l’émission de l’appel.
SEND State
Si le programme émet l’appel avec la conversation à l’é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 la fin de l’opération, ou Cancel_Conversation pour annuler l’opération et la conversation. Si Specify_Windows_Handle a été appelé, l’application doit attendre la notification d’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 transactionnel (TP) non CPI-C LU 6.2. 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 utilisateur ou le mot de passe spécifiés 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 consigné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 consigné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 pas encore reçues sont vidées.
Dans SEND_PENDING état avec le sens de l’erreur défini 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 libéré 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 qu’une défaillance 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 désallouer avec le jeu de paramètres de type pour 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 à 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 libéré la conversation avant de se terminer. Les services de nœud de la lu distante ont libéré 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 Libérer avec le paramètre type défini sur ABEND_SVC.
Le programme partenaire n’a pas libéré la conversation avant de se terminer.
Si la conversation est à l’é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 qui ne sont pas encore reçues par le programme partenaire sont vidées.
CM_DEALLOCATED_ABEND_TIMER
Code de retour principal ; la conversation a été désallouée, car le programme partenaire a émis Désallouer avec le paramètre de type défini sur ABEND_TIMER. Si la conversation est à l’é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 qui ne sont pas 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 é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é purgées.ÉTAT DE RÉCEPTION
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 vidées lorsque l’appel Send_Error est émis dans l’état RECEIVE, CM_OK est généré au lieu de ce qui suit :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 Codes de retour communs CPI-C.
CM_DEALLOCATED_NORMAL
Code de retour principal ; Étant donné que les informations entrantes sont vidé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 Codes de retour communs CPI-C.
CONFIRM, CONFIRM_SEND ou état CONFIRM_DEALLOCATE
Si l’appel est émis dans l’état CONFIRM, CONFIRM_SEND ou CONFIRM_DEALLOCATE, 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 Codes de retour communs CPI-C.
Autres États
L’émission de Send_Error avec la conversation à l’état RESET ou INITIALIZE n’est pas conforme. 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 la conversation n’est pas SEND, RECEIVE, CONFIRM, CONFIRM_SEND, CONFIRM_DEALLOCATE ou SEND_PENDING.Changements d’état
La conversation peut être dans n’importe quel état, à l’exception de INITIALIZE ou RESET.
Les changements d’état, résumés dans le tableau suivant, sont basés sur la valeur du paramètre return_code .
return_code | Nouvel état |
---|---|
CM_OK | SEND |
CM_CONVERSATION_TYPE_MISMATCH | RESET |
CM_PIP_NOT_SPECIFIED_CORRECTLY | RESET |
CM_SECURITY_NOT_VALID | RESET |
CM_SYNC_LEVEL_NOT_SUPPORTED_PGM | RESET |
CM_TPN_NOT_RECOGNIZED | RESET |
CM_TP_NOT_AVAILABLE_NO_RETRY | RESET |
CM_TP_NOT_AVAILABLE_RETRY | RESET |
CM_RESOURCE_FAILURE_RETRY | RESET |
CM_RESOURCE_FAILURE_NO_RETRY | RESET |
CM_DEALLOCATED_ABEND | RESET |
CM_DEALLOCATED_ABEND_PROG | RESET |
CM_DEALLOCATED_ABEND_SVC | RESET |
CM_DEALLOCATED_ABEND_TIMER | RESET |
CM_DEALLOCATED_NORMAL | RESET |
CM_PROGRAM_ERROR_PURGING | RECEIVE |
CM_SVC_ERROR_PURGING | RECEIVE |
Tous les autres | Aucun changement |
Une fois cet appel exécuté avec succès, la conversation est à l’état SEND pour le programme local et à 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, la lu 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 à l’é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 pour 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 entrante à envoyer.
Si la conversation est dans SEND_PENDING état, le programme local peut émettre des 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 la réception des 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 des unités logiques locales et envoie au programme partenaire le contenu de la mémoire tampon d’envoi, suivi de la notification d’erreur.
La notification d’erreur est envoyée au partenaire sous la forme de l’une des valeurs return_code suivantes :
CM_PROGRAM_ERROR_TRUNC
CM_PROGRAM_ERROR_NO_TRUNC
CM_PROGRAM_ERROR_PURGING