Set_Deallocate_Type (CPI-C)

L’appel Set_Deallocate_Type (nom de la fonction cmsdt) spécifie la façon dont la conversation doit être libérée.

Syntaxe

  
CM_ENTRY Set_Deallocate_Type(   
  unsigned char FAR *conversation_ID,    
  CM_INT32 FAR *deallocate_type,         
  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.

deallocate_type
Paramètre fourni. Spécifie comment effectuer la désallocation. Les valeurs possibles sont les suivantes :

CM_DEALLOCATE_ABEND
Indique que la conversation doit être libérée de manière anormale et inconditionnelle. Un programme doit spécifier CM_DEALLOCATE_ABEND lorsqu’il rencontre une erreur empêchant l’achèvement d’une transaction.

Si la conversation est à l’état SEND, CPI-C envoie le contenu de la mémoire tampon d’envoi de l’unité logique locale (LU) au programme partenaire avant de déallouer la conversation. Si la conversation est à l’état RECEIVE, les données entrantes peuvent être purgées. Pour une conversation de base à l’état SEND, la troncation d’enregistrement logique peut se produire.

CM_DEALLOCATE_CONFIRM
Utilisé pour envoyer au programme partenaire le contenu de la mémoire tampon d’envoi de LU locale et une demande de confirmation de la désallocation.

Cette demande de confirmation de l’allocation est envoyée par Désallouer ou par Send_Data avec le type d’envoi défini sur CM_SEND_AND_DEALLOCATE. La conversation est libérée normalement lorsque le programme partenaire a des problèmes confirmés, répondant à la demande de confirmation.

CM_DEALLOCATE_FLUSH
Permet d’envoyer le contenu de la mémoire tampon d’envoi locale au programme partenaire avant de déallouer la conversation normalement.

CM_DEALLOCATE_SYNC_LEVEL
Utilise le niveau de synchronisation des conversations pour déterminer comment libérer la conversation. Un niveau de synchronisation par défaut est établi par Initialize_Conversation et peut être remplacé par Set_Sync_Level.

Si le niveau de synchronisation de la conversation est CM_NONE, la valeur par défaut, le contenu de la mémoire tampon d’envoi de LU locale est envoyé au programme partenaire et la conversation est libérée normalement.

Si le niveau de synchronisation de la conversation est CM_CONFIRM, le contenu des unités locales d’envoi de mémoire tampon et une demande de confirmation de la transaction sont envoyés au programme partenaire. Cette demande de confirmation de l’allocation est envoyée par Désallouer ou par Send_Data avec le type d’envoi défini sur CM_SEND_AND_DEALLOCATE. La conversation est libérée normalement lorsque le programme partenaire émet l’appel Confirmé , répondant à la demande de confirmation.

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.

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 ou deallocate_type n’est pas valide.

  • Le paramètre deallocate_type spécifie CM_DEALLOCATE_CONFIRM, mais le niveau de synchronisation des conversations est défini sur CM_NONE.

  • L’adresse d’une variable n’est pas valide.

    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.

Changements d'état

La conversation peut être dans n’importe quel état, à l’exception de RESET.

Il n’y a aucun changement d’état.

Remarques

Cet appel remplace le type de désallocation par défaut établi par Initialize_Conversation ou Accept_Conversation. Le type de désallocation par défaut est CM_DEALLOCATE_SYNC_LEVEL.

Les instructions de désallocation spécifiées par cet appel prennent effet lorsque Le désallocation est émis ou lorsque le type d’envoi est défini sur CM_SEND_AND_DEALLOCATE et que Send_Data est émis.

Vous pouvez définir deallocate_type sur CM_FLUSH si le niveau de synchronisation de la conversation est défini sur CM_NONE ou CM_CONFIRM.

La valeur CM_DEALLOCATE_FLUSH est fonctionnellement la même que CM_DEALLOCATE_SYNC_LEVEL avec le niveau de synchronisation des conversations défini sur CM_NONE.

La valeur CM_DEALLOCATE_CONFIRM est fonctionnellement la même que CM_DEALLOCATE_SYNC_LEVEL avec le niveau de synchronisation des conversations défini sur CM_CONFIRM.