Mit dem Aufruf Send_Data (CMSEND) sendet ein Programm Daten an einen UTM-Vorgang. Jedesmal nachdem ein Programm das Senderecht erhalten hat, muss es einen Send_Data oder einen Send_Mapped_Data-Aufruf absetzen. Dies ist der Fall
unmittelbar nach einem erfolgreichen Allocate-Aufruf
wenn nach dem Receive- bzw. Receive_Mapped_Data-Aufruf die Characteristic status_received den Wert CM_SEND_RECEIVED hat (d.h. wenn das Programm das Senderecht empfangen hat).
CMSEND (conversation_ID, buffer, send_length, control_information_received, return_code)
Parameter
--> conversation_ID | Identifikation der Conversation |
--> buffer | Puffer mit den zu sendenden Daten. Die Länge der Daten wird im Parameter send_length angegeben. |
--> send_length | Länge der zu sendenden Daten in Bytes. Minimum: 0, Maximum: 32767 Ein Send_Data-Aufruf mit der Länge 0 bewirkt, dass eine Nachricht der Länge 0 gesendet wird. |
<-- control_information_received | Wird nur syntaktisch unterstützt und kann nur den Wert CM_REQ_TO_SEND_NOT_RECEIVED annehmen. Der Wert in control_information_received ist undefiniert, wenn das Ergebnis in return_code ungleich CM_OK ist. |
<-- return_code | Ergebnis des Funktionsaufrufs |
Ergebnis ( return_code )
CM_OK
Aufruf ok
CM_TPN_NOT_RECOGNIZED
Dieser Returncode kann nur beim ersten Send_Data-Aufruf nach einem Allocate-Aufruf auftreten.
CM_DEALLOCATED_ABEND
mögliche Ursachen:
UTM-Anwendungsende
Verbindungsabbau durch UTM-Administration
Verbindungsabbau durch das Transportsystem
CM_RESOURCE_FAILURE_RETRY
Ein vorübergehender Betriebsmittelengpass führte zur Beendigung der Conversation. Möglicherweise können im UTM-Pagepool keine Daten mehr zwischengespeichert werden.
Tritt der Fehler häufiger auf sollte der Pagepool der UTM-Anwendung vergrößert werden (MAX-Anweisung, PGPOOL=).
CM_PROGRAM_STATE_CHECK
Der Aufruf ist im aktuellen Zustand nicht erlaubt.
CM_PROGRAM_PARAMETER_CHECK
Der Wert in conversation_ID ist ungültig oder der Wert in send_length ist größer als 32767 oder kleiner als 0.
Zustandsänderung
Falls das Ergebnis CM_OK ist, bleibt das Programm im Zustand "Send".
Beim Ergebnis CM_TPN_NOT_RECOGNIZED, CM_DEALLOCATED_ABEND oder CM_RESOURCE_FAILURE_RETRY/NO_RETRY geht das Programm in den Zustand "Reset" über.
Bei allen anderen Fehlersituationen ändert das Programm seinen Zustand nicht.
Hinweis
UPIC puffert die zu sendenden Daten und schickt sie erst zu einem späteren Zeitpunkt an den UTM-Server. Aus diesem Grund kann es passieren, dass eine Beendigung der UTM-Anwendung nicht unmittelbar, sondern erst bei einem Folgeaufruf als Ergebnis geliefert wird.
Verhalten im Fehlerfall
CM_RESOURCE_FAILURE_RETRY
Conversation neu einrichten.
CM_PROGRAM_STATE_CHECK
Programm ändern.
CM_PROGRAM_PARAMETER_CHECK
Programm ändern.
CM_ENTRY Send_Data ( unsigned char CM_PTR conversation_ID, unsigned char CM_PTR buffer, CM_INT32 CM_PTR send_length, CM_CONTROLINFORMATION_RECEIVED CM_PTR control_information_received, CM_RETURN_CODE CM_PTR return_code )