Mit dem Aufruf Extract_Transaction_State erhält ein Programm den von openUTM an den Client gesendeten Vorgangs- und Transaktionsstatus.
Der Aufruf Extract_Transaction_State ist nur im Zustand "Send" und "Receive" und im Zustand "Reset" unmittelbar nach einem Receive-/Receive_Mapped_Data-Aufruf erlaubt.
Diese Funktion ist nicht Bestandteil der CPI-C Spezifikation, sondern eine zusätzliche Funktion des UPIC-Trägersystems.
CMETS (conversation_ID, transaction_state, requested_length, transaction_state_length, return_code)
Parameter
--> conversation_ID | Identifikation der Conversation |
<-- transaction_state | Transaktions- und Vorgangs-Status |
--> requested_length | Maximale Länge der Daten, die empfangen werden können |
<-- transaction_state_length | Länge der empfangenen Nachricht |
<-- return_code | Ergebnis des Funktionsaufrufs |
Ergebnis ( return_code )
CM_OK
Aufruf OK
CM_PROGRAM_PARAMETER_CHECK
Der Wert in conversation_ID ist ungültig.
Der Wert der conversation_ID ist ungültig, wenn die Funktion nach Ende der Conversation mehr als einmal aufgerufen wurde oder wenn noch keine Conversation existierte (nach dem Enable_UTM_UPIC-Aufruf ist noch kein Initialize_Conversation-Aufruf erfolgt).
CM_PRODUCT_SPECIFIC_ERROR
Die UPIC-Instanz konnte nicht gefunden werden.
CM_PROGRAM_STATE_CHECK
Die Conversation ist nicht im Zustand "Reset", "Send" oder "Receive"
Zustandsänderung
Der Aufruf ändert den Zustand der Conversation nicht.
Hinweis
Falls der Returncode von CM_OK verschieden ist, hat der Wert von transaction_state keine Bedeutung.
Der Wert der conversation_ID bleibt für diesen Funktionsaufruf nach dem Ende einer Conversation so lange gültig, bis ein Initialize_Conversation- oder ein Extract_Transaction_State-Aufruf erfolgt ist.
Wenn der Wert von transaction_state_length gleich 0 ist, dann wurde kein neuer transaction_state empfangen.
Verhalten im Fehlerfall
CM_PROGRAM_STATE_CHECK
Programm ändern.
CM_PROGRAM_PARAMETER_CHECK
Programm ändern.
CM_PRODUCT_SPECIFIC_ERROR
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.
Beschreibung transaction_state
Die ersten beiden Byte des transaction_state enthalten die Information über den Vorgangs- und Transaktionsstatus des Servers und können entsprechend ausgewertet werden, die restlichen Byte (dd dd) enthalten interne Diagnoseinformationen.
transaction_state | Bedeutung |
17 08 dd dd | Ende des Verarbeitungsschritts; die Transaktion ist nicht abgeschlossen, der Vorgang ist noch offen (PEND/PGWT KP). |
15 06 dd dd | Ende des Verarbeitungsschritts; die Transaktion ist abgeschlossen, der Vorgang ist noch offen (PGWT CM/PEND RE). |
1A 04 dd dd | Ende eines Vorgangs und Ende der Transaktion (PEND FI). |
30 04 dd dd | Ende eines Vorgangs mit Speicherabzug (PEND ER). |
31 04 dd dd | Ende eines Vorgangs (System PEND ER, d.h. PEND ER durch openUTM). |
32 04 dd dd | Ende eines Vorgangs wegen abnormaler Taskbeendigung (nur openUTM auf BS2000-Systemen) |
20 04 dd dd | Rücksetzen der ersten Transaktion eines Vorgangs und Vorgang beenden (PEND RS). |
20 06 dd dd | Rücksetzen einer Folgetransaktion auf den letzten Sicherungspunkt; der Vorgang ist noch offen (PEND RS). |
Näheres zum PEND- und PGWT-Aufruf siehe openUTM-Handbuch „Anwendungen programmieren mit KDCS“.
CM_ENTRY Extract_Transaction_State( unsigned char CM_PTR conversation_ID, unsigned char CM_PTR transaction_state, CM_INT32 CM_PTR requested_length, CM_INT32 CM_PTR transaction_state_length, CM_RETURN_CODE CM_PTR return_code )