Confirm (CPI-C)

L’appel Confirm (nom de la fonction cmcfm) envoie le contenu de la mémoire tampon d’envoi de l’unité logique locale (LU) et une demande de confirmation au programme partenaire et attend la confirmation. Pour Microsoft Windows, exécutez un thread d’arrière-plan pour toutes les communications CPI-C et conservez le thread de premier plan pour l’interface utilisateur uniquement.

Syntaxe

  
CM_ENTRY Confirm(   
  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é. Fournit l’indicateur de requête à envoyer reçu. 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_PROGRAM_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

CM_OK
Code de retour principal ; l’appel a été exécuté avec succès. Le programme partenaire a émis l’appel Confirmé .

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 d’annuler l’opération et la conversation. Si Specify_Windows_Handle a été appelé, l’application doit attendre la notification par un message Windows et ne pas appeler Wait_For_Conversation.

CM_PROGRAM_PARAMETER_CHECK
Code de retour principal ; l’un des événements suivants s’est produit :

  • La valeur spécifiée par conversation_ID n’est pas valide.

  • Le programme local a tenté d’utiliser Confirm dans une conversation avec un niveau de synchronisation de CM_NONE. Le niveau de synchronisation doit être CM_CONFIRM.

    CM_PROGRAM_STATE_CHECK
    Code de retour principal ; l’un des événements suivants s’est produit :

  • La conversation n’était pas à l’état SEND ou SEND_PENDING.

  • La conversation de base du programme local était à l’état SEND et le programme local n’a pas terminé l’envoi d’un enregistrement logique.

    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é lu ou le programme partenaire 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 (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 ne sont pas acceptés par l’unité lu 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é lu 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é lu 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é lu 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’un des événements suivants s’est produit :

  • Dans l’état RECEIVE ou CONFIRM, le programme partenaire a émis Send_Error. Les données envoyées mais pas encore reçues sont purgé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’un des événements suivants s’est produit :

  • 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 La libération avec le paramètre de type défini sur CM_DEALLOCATE_ABEND. Si la conversation pour le 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 purgées.

  • Le programme partenaire s’est terminé normalement, mais n’a pas libéré la conversation avant de se terminer.

    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 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 non encore reçues par le programme partenaire sont purgées.

    CM_DEALLOCATED_ABEND_TIMER
    Code de retour principal ; la conversation a été libérée, car le programme partenaire a émis Deallocate 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 non encore reçues par le programme partenaire sont purgées.

    CM_SVC_ERROR_PURGING
    Code de retour principal ; dans l’état SEND, le programme partenaire ou l’unité lu partenaire a émis Send_Error avec le paramètre de type défini sur SVC. Les données envoyées au programme partenaire peuvent avoir été purgées.

    Changements d’état

    La conversation peut être à l’état SEND ou SEND_PENDING lors de l’émission Confirm .

    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 Aucun changement
L’appel a été émis dans l’état SEND Aucun changement
L’appel a été émis dans SEND_PENDING état SEND
CM_PROGRAM_ERROR_PURGING RECEIVE
CM_SVC_ERROR_PURGING RECEIVE
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_NO_RETRY RESET
CM_RESOURCE_FAILURE_RETRY RESET
CM_DEALLOCATED_ABEND RESET
CM_DEALLOCATED_ABEND_SVC RESET
CM_DEALLOCATED_ABEND_TIMER RESET
Tous les autres Aucun changement

Remarques

En réponse à Confirmer, le programme partenaire émet normalement Confirm pour confirmer qu’il a reçu les données sans erreur. (Si le programme partenaire rencontre une erreur, il émet des problèmes Send_Error ou utilise Désallouer pour libérer anormalement la conversation.)

Le programme peut émettre confirmer uniquement si le niveau de synchronisation des conversations est CM_CONFIRM.

Confirmer l’attente d’une réponse du programme partenaire. Une réponse est générée par l’un des appels CPI-C suivants dans le programme partenaire :

  • Confirmé

  • Send_Error

  • 5Deallocate avec le type de libération des conversations défini sur CM_DEALLOCATE_ABEND