Der Aufruf Prepare_To_Receive (CMPTR) bewirkt folgendes:
Alle Daten, die zum Zeitpunkt des Aufrufs noch im lokalen Sendepuffer gespeichert sind, werden zusammen mit dem Senderecht an den UTM-Vorgang übertragen.
Nachdem die Daten aus dem Sendepuffer an den UTM-Vorgang übergeben sind, geht die Conversation vom Zustand "Send" in den Zustand "Receive" über.
Prepare_To_Receive darf nur aufgerufen werden, wenn sich die Conversation im Zustand "Send" befindet, jedoch nicht direkt nach dem Allocate-Aufruf bzw. nach dem Empfang des Senderechts vom Partner. In diesen beiden Ausnahmefällen muss ein Send_Data- oder Send_Mapped_Data-Aufruf vor dem Prepare_To_Receive-Aufruf abgesetzt werden.
Nach dem Prepare_To_Receive-Aufruf muss als nächstes Receive bzw. Receive_Mapped_Data aufgerufen werden. Vor dem Receive- bzw. Receive_Mapped_Data-Aufruf darf jedoch Set_Receive_Timer oder Set_Receive_Type aufgerufen werden.
CMPTR (conversation_ID, return_code)
Parameter
--> conversation_ID | Identifikation der Conversation |
<-- return_code | Ergebnis des Funktionsaufrufs |
Ergebnis (return_code)
CM_OK
Aufruf ok. Die Conversation ist von "Send" in den Zustand "Receive" übergegangen.
CM_DEALLOCATED_ABEND
mögliche Ursachen:
Abnormale Beendigung des UTM-Vorgangs
UTM-Anwendungsende
Verbindungsabbau durch die UTM-Administration
Verbindungsabbau durch das Transportsystem
Verbindungsabbau durch openUTM wegen Überschreitung der maximal zulässigen Anzahl von Benutzern (MAX-Anweisung, CONN-USERS=). Die Ursache kann auch darin liegen, dass beim Aufruf Set_Conversation_Security_User_ID() zwar eine Administrator-Benutzerkennung übergeben wurde, aber die per UTM-Generierung der Verbindung implizit zugeordnete Benutzerkennung oder die explizit (mit der Anweisung LTERM..., USER=) zugeordnete (Verbindungs-)Benutzerkennung keine Administrator-Benutzerkennung ist (CONN-USERS wirkt nur für Benutzer ohne Administrationsberechtigung).
Das Programm geht in den Zustand "Reset" über.
CM_PRODUCT_SPECIFIC_ERROR
mögliche Ursachen:
Die UPIC-Instanz konnte nicht gefunden werden.
Der Prepare_To_Receive-Aufruf erfolgte unmittelbar nach einem Allocate-Aufruf anstatt eines Send_Data- bzw. Send_Mapped_Data-Aufrufs.
CM_PROGRAM_STATE_CHECK
Der Aufruf ist im aktuellen Zustand der Conversation nicht erlaubt.
CM_PROGRAM_PARAMETER_CHECK
Der Wert in conversation_ID ist ungültig.
CM_RESOURCE_FAILURE_NO_RETRY
Es ist ein Fehler aufgetreten, der zu einer vorzeitigen Beendigung der Conversation führte (z.B. ein Protokollfehler oder vorzeitiger Verlust der Netzverbindung). Das Programm geht in den Zustand "Reset" über.
Zustandsänderung
Ist das Ergebnis des Aufrufs CM_OK, dann ändert sich der Zustand der Conversation von "Send" nach "Receive".
Bei folgenden Ergebnissen geht das Programm in den Zustand "Reset" über:
CM_DEALLOCATED_ABEND
CM_RESOURCE_FAILURE_NO_RETRYBei allen anderen Fehlersituationen ändert das Programm seinen Zustand nicht.
Verhalten im Fehlerfall
CM_PRODUCT_SPECIFIC_ERROR
Programm ändern.
Das Betriebssystem kann nicht genügend Speicherplatz für interne Puffer bereitstellen. Überprüfen Sie Ihr Programm auf zu hohe Speicherplatzanforderung und starten Sie ggf. Ihr System neu.
CM_PROGRAM_STATE_CHECK
Programm ändern.
CM_PROGRAM_PARAMETER_CHECK
Programm ändern.
CM_RESOURCE_FAILURE_NO_RETRY
Systemdienst informieren und Diagnoseunterlagen erstellen. Es kann auch eine Störung im Transportsystem die Ursache für diesen Fehlercode sein.
CM_ENTRY Prepare_To_Receive (unsigned char CM_PTR conversation_ID, CM_RETURN_CODE CM_PTR return_code )