Send_Error (CPI-C)
Der Send_Error-Aufruf (Funktionsname cmserr) benachrichtigt das Partnerprogramm, dass für das lokale Programm ein Fehler auf Anwendungsebene aufgetreten ist.
Syntax
CM_ENTRY Send_Error(
unsigned char FAR *conversation_ID,
CM_INT32 FAR *request_to_send_received,
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.
request_to_send_received
Zurückgegebener Parameter. Gibt den Indikator request-to-send-received an. Mögliche Werte:
CM_REQ_TO_SEND_RECEIVED
Das Partnerprogramm hat Request_To_Send ausgestellt, das das lokale Programm auffordert, die Unterhaltung in den EMPFANGSzustand zu ändern.
CM_REQ_TO_SEND_NOT_RECEIVED
Das Partnerprogramm hat keine Request_To_Send. Dieser Wert ist nicht relevant, wenn return_code auf CM_PROGRAM_PARAMETER_CHECK oder CM_STATE_CHECK festgelegt ist.
return_code
Der von diesem Aufruf zurückgegebene Code. Die gültigen Rückgabecodes werden weiter unten in diesem Thema aufgeführt.
Rückgabecodes
Der Wert von return_code variiert je nach Konversationszustand, wenn der Anruf ausgegeben wird.
SEND-Status
Wenn das Programm den Aufruf mit der Unterhaltung im SEND-Zustand ausgibt, sind die folgenden Rückgabecodes möglich:
CM_OK
Primärer Rückgabecode; Der Aufruf wurde erfolgreich ausgeführt.
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 Konversation 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_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 den in der Zuordnungsanforderung angegebenen Konversationstyp (basic oder mapped) nicht.
CM_PIP_NOT_SPECIFIED_CORRECTLY
Primärer Rückgabecode; Die Zuordnungsanforderung wurde von einem Nicht-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; Die in der Zuordnungsanforderung angegebene Benutzer-ID 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; eine der folgenden Ereignisse:
Im Status RECEIVE oder CONFIRM hat das Partnerprogramm Send_Error ausgestellt. Gesendete, aber noch nicht empfangene Daten werden gelöscht.
Während sich SEND_PENDING Zustand befindet, in dem die Fehlerrichtung auf CM_RECEIVE_ERROR festgelegt ist, hat das Partnerprogramm Send_Error ausgestellt. Daten wurden nicht gelöscht.
CM_RESOURCE_FAILURE_NO_RETRY
Primärer Rückgabecode; eine der folgenden Ereignisse:Die Unterhaltung wurde aufgrund eines dauerhaften Zustands vorzeitig beendet. Wiederholen Sie den Vorgang erst, wenn der Fehler behoben wurde.
Das Partnerprogramm hat die Zuordnung der Unterhaltung vor dem normalen Beenden nicht aufgehoben.
CM_RESOURCE_FAILURE_RETRY
Primärer Rückgabecode; Die Konversation wurde aufgrund einer vorübergehenden Bedingung, z. B. eines Modemfehlers, vorzeitig beendet. Wiederholen Sie die Unterhaltung.CM_DEALLOCATED_ABEND
Primärer Rückgabecode; Die Zuordnung der Unterhaltung wurde aus einem der folgenden Gründe aufgehoben:Das Remoteprogramm hat Deallocate mit dem Typparameterset für CM_DEALLOCATE_ABEND ausgestellt, oder die Remote-LU hat dies aufgrund einer anormalen Beendigung des Remoteprogramms getan. Wenn sich die Unterhaltung für das Remoteprogramm im Empfangszustand befand, als der Anruf ausgegeben wurde, 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 Konversation vor dem Beenden nicht aufgehoben. Knotendienste auf der Remote-LU haben die Zuordnung der Konversation im Namen des Remote-TP aufgehoben.
CM_DEALLOCATED_ABEND_SVC
Primärer Rückgabecode; Die Zuordnung der Unterhaltung wurde aus einem der folgenden Gründe aufgehoben:Das Partnerprogramm hat Deallocate mit dem typparameter ausgestellt, der auf ABEND_SVC festgelegt ist.
Das Partnerprogramm hat die Zuordnung der Unterhaltung vor dem Beenden nicht aufgehoben.
Wenn sich die Unterhaltung für das Partnerprogramm im EMPFANGSzustand 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 Zuordnung der Unterhaltung wurde aufgehoben, weil das Partnerprogramm Deallocate mit dem typparameter auf ABEND_TIMER festgelegt hat. Wenn sich die Unterhaltung für das Partnerprogramm im EMPFANGSzustand 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. An das Partnerprogramm gesendete Daten wurden möglicherweise gelöscht.EMPFANGSzustand
Wenn der Aufruf im RECEIVE-Status ausgegeben wird, sind die folgenden Rückgabecodes möglich:
CM_OK
Primärer Rückgabecode; Da eingehende Informationen gelöscht werden, wenn der Send_Error Aufruf im RECEIVE-Status ausgegeben wird, wird anstelle von folgendem CM_OK generiert: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 (nur einfache Unterhaltung)
CM_PRODUCT_SPECIFIC_ERROR
CM_RESOURCE_FAILURE_NO_RETRY
CM_RESOURCE_FAILURE_RETRY
Eine Erläuterung dieser Rückgabecodes finden Sie unter CPI-C Common Return Codes.
CM_DEALLOCATED_NORMAL
Primärer Rückgabecode; Da eingehende Informationen gelöscht werden, wenn Send_Error im RECEIVE-Status ausgegeben wird, wird anstelle von folgendem CM_DEALLOCATED_NORMAL generiert: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
SEND_PENDING Staat
Wenn der Aufruf in SEND_PENDING Zustand ausgegeben wird, sind die folgenden Rückgabecodes möglich:
CM_OK (Primärer Rückgabecode; der Aufruf wurde erfolgreich ausgeführt.)
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
Eine Erläuterung dieser Rückgabecodes finden Sie unter CPI-C Common Return Codes.
BESTÄTIGEN, CONFIRM_SEND oder CONFIRM_DEALLOCATE Status
Wenn der Aufruf im Status CONFIRM, CONFIRM_SEND oder CONFIRM_DEALLOCATE ausgegeben wird, sind die folgenden Rückgabecodes möglich:
CM_OK (Primärer Rückgabecode; der Aufruf wurde erfolgreich ausgeführt.)
CM_PRODUCT_SPECIFIC_ERROR
CM_RESOURCE_FAILURE_NO_RETRY
CM_RESOURCE_FAILURE_RETRY
Eine Erläuterung dieser Rückgabecodes finden Sie unter CPI-C Common Return Codes.
Andere Staaten
Das Ausgeben von Send_Error mit der Konversation im Status RESET oder INITIALIZE ist unzulässig. Die folgenden Rückgabecodes sind möglich:
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; der Unterhaltungsstatus ist nicht SENDEN, EMPFANGEN, BESTÄTIGEN, CONFIRM_SEND, CONFIRM_DEALLOCATE oder SEND_PENDING.Zustandsänderungen
Die Unterhaltung kann sich in einem beliebigen Zustand befinden, außer INITIALIZE oder RESET.
Zustandsänderungen, zusammengefasst in der folgenden Tabelle, basieren auf dem Wert des return_code-Parameters .
return_code | Neuer Zustand |
---|---|
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 |
Alle anderen | Keine Änderung |
Nach erfolgreicher Ausführung dieses Aufrufs befindet sich die Konversation für das lokale Programm im SEND-Zustand und im Status RECEIVE für das Partnerprogramm.
In einer einfachen Unterhaltung kann das lokale Programm Set_Log_Data verwenden, um anzugeben, dass Fehlerprotokolldaten an die Partner-LU gesendet und dem lokalen Fehlerprotokoll hinzugefügt werden. Wenn die Länge der Unterhaltungsprotokolldaten größer als 0 (null) ist, formatiert die LU die Daten und speichert sie im Sendepuffer.
Nachdem Send_Error abgeschlossen ist, wird die Länge der Protokolldaten auf null und die Protokolldaten auf NULL festgelegt.
Wenn sich die Unterhaltung im RECEIVE-Zustand befindet, wenn das Programm Send_Error ausgibt, werden eingehende Daten von CPI-C gelöscht. Diese Daten umfassen Folgendes:
Von Send_Data gesendete Daten.
Bestätigungsanforderungen.
Aufheben der Zuordnungsanforderungen, wenn der Typ der Zuordnung von Unterhaltungen auf CM_DEALLOCATE_CONFIRM oder auf CM_DEALLOCATE_SYNC_LEVEL festgelegt ist, wobei die Synchronisierungsebene auf CM_CONFIRM festgelegt ist.
CPI-C löscht keinen Eingehenden Anforderungs-zu-Sende-Indikator.
Wenn sich die Konversation in SEND_PENDING Zustand befindet, kann das lokale Programm Set_Error_Direction ausgeben, um anzugeben, ob der gemeldete Fehler aus den empfangenen Daten oder aus der Verarbeitung des lokalen Programms nach dem erfolgreichen Empfang der Daten resultiert.
Hinweise
Das lokale Programm kann Send_Error verwenden, um das Partnerprogramm über einen Fehler in empfangenen Daten zu informieren, eine Bestätigungsanforderung abzulehnen oder einen unvollständigen logischen Datensatz zu kürzen, den es sendet.
Send_Error leert den Sendepuffer der lokalen LUs und sendet dem Partnerprogramm den Inhalt des Sendepuffers, gefolgt von der Fehlerbenachrichtigung.
Die Fehlerbenachrichtigung wird als einer der folgenden return_code Werte an den Partner gesendet:
CM_PROGRAM_ERROR_TRUNC
CM_PROGRAM_ERROR_NO_TRUNC
CM_PROGRAM_ERROR_PURGING