Freigeben über


Deallocate (CPI-C)

Mit dem Deallocate-Aufruf (Funktionsname cmdeal) wird eine Konversation zwischen zwei Programmen zugeordnet.

Syntax

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

Parameter

conversation_ID
Angegebener Parameter. Gibt den Bezeichner für die Unterhaltung an. Der Wert dieses Parameters wurde von Initialize_Conversation oder Accept_Conversation zurückgegeben.

return_code
Der von diesem Aufruf zurückgegebene Code. Die gültigen Rückgabecodes werden weiter unten in diesem Thema aufgeführt.

Rückgabecodes

CM_OK
Primärer Rückgabecode; Der Aufruf wurde erfolgreich ausgeführt; die Konversation wird zugeordnet.

CM_OPERATION_NOT_ACCEPTED
Primärer Rückgabecode; ein vorheriger Vorgang für diese Unterhaltung ist unvollständig.

CM_OPERATION_INCOMPLETE
Primärer Rückgabecode; Der Vorgang wurde noch nicht abgeschlossen (der Verarbeitungsmodus ist nur nicht blockiert) und wird noch ausgeführt. Das Programm kann Wait_For_Conversation ausgeben, um den Abschluss des Vorgangs abzuwarten, oder Cancel_Conversation , den Vorgang und die Unterhaltung abzubrechen. Wenn Specify_Windows_Handle aufgerufen wurde, sollte die Anwendung auf eine Benachrichtigung durch eine Microsoft® Windows-Nachricht® warten und nicht Wait_For_Conversation aufrufen.

CM_PROGRAM_PARAMETER_CHECK
Primärer Rückgabecode; Der durch conversation_ID angegebene Wert ist ungültig.

CM_PROGRAM_STATE_CHECK
Primärer Rückgabecode; Die folgenden Zustandsfehler können auftreten, wenn der Deallocate-Typ eine normale Deallocation angibt (CM_DEALLOCATE_SYNC_LEVEL, CM_DEALLOCATE_FLUSH, CM_DEALLOCATE_CONFIRM):

  • Die Unterhaltung befindet sich nicht im SEND- oder SEND_PENDING Zustand.

  • Bei einer einfachen Unterhaltung befindet sich die Unterhaltung im SEND-Zustand, aber das Programm hat das Senden eines logischen Datensatzes nicht abgeschlossen.

    Die folgenden Rückgabecodes können zurückgegeben werden, wenn die deallocate_type auf CM_DEALLOCATE_CONFIRM oder auf CM_DEALLOCATE_SYNC_LEVEL festgelegt ist und die Synchronisierungsebene für Unterhaltungen auf CM_CONFIRM festgelegt ist.

    CM_PRODUCT_SPECIFIC_ERROR
    Primärer Rückgabecode; Ein produktspezifischer Fehler ist aufgetreten und wurde im Produktfehlerprotokoll protokolliert.

    CM_CONVERSATION_TYPE_MISMATCH
    Primärer Rückgabecode; die partner logical unit (LU) oder das Programm unterstützt nicht den in der Zuordnungsanforderung angegebenen Konversationstyp (basic oder mapped).

    CM_PIP_NOT_SPECIFIED_CORRECTLY
    Primärer Rückgabecode; die Zuordnungsanforderung wurde von einem Nicht-CPI-C LU 6.2-Transaktionsprogramm (TP) abgelehnt. Das Partnerprogramm erfordert eine oder mehrere PIP-Datenvariablen, die von CPI-C nicht unterstützt werden.

    CM_SECURITY_NOT_VALID
    Primärer Rückgabecode; der in der Zuordnungsanforderung angegebene Benutzerbezeichner oder das Kennwort wurde von der Partner-LU nicht akzeptiert.

    CM_SYNC LEVEL_NOT_SUPPORTED_PGM
    Primärer Rückgabecode; das Partnerprogramm unterstützt die in der Zuordnungsanforderung angegebene Synchronisierungsebene nicht.

    CM_TPN_NOT_RECOGNIZED
    Primärer Rückgabecode; Die Partner-LU erkennt den in der Zuordnungsanforderung angegebenen Programmnamen nicht.

    CM_TP_NOT_AVAILABLE_NO_RETRY
    Primärer Rückgabecode; Die Partner-LU kann das in der Zuordnungsanforderung angegebene Programm aufgrund einer dauerhaften Bedingung nicht starten. Der Grund für den Fehler wird möglicherweise auf dem Remoteknoten protokolliert. Wiederholen Sie die Zuordnung erst, wenn der Fehler behoben wurde.

    CM_TP_NOT_AVAILABLE_RETRY
    Primärer Rückgabecode; Die Partner-LU kann das in der Zuordnungsanforderung angegebene Programm aufgrund einer temporären Bedingung nicht starten. Der Grund für den Fehler wird möglicherweise auf dem Remoteknoten protokolliert. Wiederholen Sie die Zuordnung.

    CM_PROGRAM_ERROR_PURGING
    Primärer Rückgabecode; einer der folgenden Punkte ist aufgetreten:

  • Im Status "RECEIVE" oder "CONFIRM" hat das Partnerprogramm Send_Error ausgestellt. Gesendete, aber noch nicht empfangene Daten werden gelöscht.

  • In SEND_PENDING Zustand, in dem die Fehlerrichtung auf CM_RECEIVE_ERROR festgelegt ist, hat das Partnerprogramm Send_Error ausgegeben. Die Daten wurden nicht gelöscht.

    CM_RESOURCE_FAILURE_NO_RETRY
    Primärer Rückgabecode; einer der folgenden Punkte ist aufgetreten:

  • Das Gespräch wurde aufgrund einer dauerhaften Bedingung vorzeitig beendet. Wiederholen Sie den Vorgang erst, wenn der Fehler behoben wurde.

  • Das Partnerprogramm hat die Zuordnung der Unterhaltung vor dem normalen Beenden nicht behandelt.

    CM_RESOURCE_FAILURE_RETRY
    Primärer Rückgabecode; die Unterhaltung wurde aufgrund einer vorübergehenden Bedingung, z. B. eines Modemfehlers, vorzeitig beendet. Wiederholen Sie die Unterhaltung.

    CM_DEALLOCATED_ABEND
    Primärer Rückgabecode; die Konversation wurde aus einem der folgenden Gründe behandelt:

  • Das Remoteprogramm hat Deallocate ausgegeben, wobei der Typparameter auf CM_DEALLOCATE_ABEND festgelegt ist, oder die Remote-LU hat dies aufgrund einer anomalien Endbedingung des Remoteprogramms getan. Wenn sich die Unterhaltung für das Remoteprogramm bei der Ausgabe des Anrufs im RECEIVE-Zustand befand, werden die vom lokalen Programm gesendeten und noch nicht vom Remoteprogramm empfangenen Informationen gelöscht.

  • Der Remote-TP wurde normal beendet, aber die Zuordnung der Unterhaltung vor dem Beenden nicht abgeschlossen. Knotendienste auf der Remote-LU haben die Konversation im Namen des Remote-TP zugeordnet.

    CM_DEALLOCATED_ABEND_SVC
    Primärer Rückgabecode; die Konversation wurde aus einem der folgenden Gründe behandelt:

  • Das Partnerprogramm hat Deallocate ausgestellt, wobei der Typparameter auf ABEND_SVC festgelegt ist.

  • Das Partnerprogramm hat die Zuweisung der Unterhaltung vor dem Beenden nicht behandelt.

    Wenn sich die Unterhaltung im STATUS RECEIVE für das Partnerprogramm befindet, wenn dieser Aufruf vom lokalen Programm ausgegeben wird, werden die vom lokalen Programm gesendeten und noch nicht vom Partnerprogramm empfangenen Daten gelöscht.

    CM_DEALLOCATED_ABEND_TIMER
    Primärer Rückgabecode; die Konversation wurde zugeordnet, da das Partnerprogramm Deallocate mit dem typparameter auf ABEND_TIMER festgelegt hat. Wenn sich die Unterhaltung im STATUS RECEIVE für das Partnerprogramm befindet, wenn dieser Aufruf vom lokalen Programm ausgegeben wird, werden die vom lokalen Programm gesendeten und noch nicht vom Partnerprogramm empfangenen Daten gelöscht.

    CM_SVC_ERROR_PURGING
    Primärer Rückgabecode; im SEND-Zustand hat das Partnerprogramm oder die Partner-LU Send_Error ausgestellt, wobei der Typparameter auf SVC festgelegt ist. Daten, die an das Partnerprogramm gesendet wurden, wurden möglicherweise gelöscht.

    Zustandsänderungen

    Abhängig vom Wert des Parameters "Conversations deallocate type" (festgelegt durch Set_Deallocate_Type) kann sich die Konversation in einem der in der folgenden Tabelle angegebenen Zustände befinden, wenn das Programm Deallocate ausgibt:

Deallocate-Typ Zulässiger Zustand
CM_DEALLOCATE_FLUSH SEND oder SEND_PENDING
CM_DEALLOCATE_CONFIRM SEND oder SEND_PENDING
CM_DEALLOCATE_SYNC_LEVEL SEND oder SEND_PENDING
CM_DEALLOCATE_ABEND Alle außer RESET

Zustandsänderungen, die in der folgenden Tabelle zusammengefasst sind, basieren auf dem Wert des return_code-Parameters .

return_code Neuer Zustand
CM_OK RESET
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
Alle anderen Keine Änderung

Hinweise

Bevor die Zuordnung der Konversation aufgehoben wird, führt dieser Aufruf je nach Synchronisierungsstufe und Zuordnungstyp der aktuellen Unterhaltung die Entsprechung des Flush - oder Bestätigungsaufrufs aus. Der Zuordnungstyp wird durch Set_Deallocate_Type festgelegt.

Das Partnerprogramm empfängt die Zuordnungsbenachrichtigung über einen der folgenden Parameter:

  • status_received ist CM_CONFIRM_DEALLOC_RECEIVED

  • return_code ist CM_DEALLOCATED_NORMAL

  • return_code ist CM_DEALLOCATED_ABEND

    Nachdem dieser Aufruf erfolgreich ausgeführt wurde, ist die conversation_ID nicht mehr gültig.

    Wenn bei einer einfachen Unterhaltung der Typ der Zuordnung von Unterhaltungen auf CM_DEALLOCATE_ABEND festgelegt ist und die Protokolldatenlänge größer als 0 (null) ist, schreibt die lokale LU die Protokolldaten (durch Set_Log_Data angegeben) in das lokale Fehlerprotokoll und in die Partner-LU.

    Nachdem deallocate ausgeführt wurde, wird die Protokolldatenlänge auf Null und die Protokolldaten auf NULL festgelegt.