Send_Data (CPI-C)
Der Send_Data-Aufruf (Funktionsname cmsend) fügt Daten zur Übertragung an das Partnerprogramm in den Sendepuffer der lokalen logischen Einheit (LU) ein.
Syntax
CM_ENTRY Send_Data(
unsigned char FAR *conversation_ID,
unsigned char FAR *buffer,
CM_INT32 FAR *send_length,
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.
Puffer
Angegebener Parameter. Gibt die Adresse des Puffers an, der die Daten enthält, die in den lokalen LUs-Sendepuffer eingefügt werden sollen.
send_length
Angegebener Parameter. Gibt die Anzahl der Bytes der Daten an, die in den lokalen LUs-Sendepuffer eingefügt werden sollen. Der Bereich reicht von 0 bis 32767.
Wenn send_length für eine zugeordnete Unterhaltung auf null festgelegt ist, wird ein NULL-Datensatz an das Partnerprogramm gesendet.
Wenn send_length für eine einfache Unterhaltung auf Null festgelegt ist, werden keine Daten gesendet. Der Pufferparameter ist nicht relevant. Die anderen Parameter werden jedoch verarbeitet.
request_to_send_received
Zurückgegebener Parameter. Dies ist der Anforderungs-zu-Senden-Empfangen-Indikator. Mögliche Werte:
CM_REQ_TO_SEND_RECEIVED
Das Partnerprogramm hat den Request_To_Send-Aufruf ausgegeben, der das lokale Programm auffordert, die Unterhaltung in den Empfangszustand zu ändern.
CM_REQ_TO_SEND_NOT_RECEIVED
Das Partnerprogramm hat den Request_To_Send-Aufruf nicht ausgeführt. Dieser Wert ist nicht relevant, wenn return_code auf CM_PROGRAM_PARAMETER_CHECK oder CM_PROGRAM_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
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_PROGRAM_PARAMETER_CHECK
Primärer Rückgabecode; eine der folgenden Ereignisse:
Der von conversation_ID angegebene Wert ist ungültig.
Der durch send_length angegebene Wert liegt außerhalb des Bereichs (größer als 32767).
Dies ist eine einfache Konversation, und die ersten beiden Bytes des Puffers enthalten eine ungültige Logische Datensatzlänge (0x0000, 0x0001, 0x8000 oder 0x8001).
CM_PROGRAM_STATE_CHECK
Primärer Rückgabecode; eine der folgenden Ereignisse:Der Unterhaltungszustand ist nicht SEND oder SEND_PENDING.
Die grundlegende Unterhaltung befindet sich im SEND-Zustand, und send_type ist auf CM_SEND_AND_CONFIRM, CM_SEND_AND_DEALLOCATE oder CM_SEND_AND_PREP_TO_RECEIVE festgelegt. Die Daten enden jedoch nicht auf einer logischen Datensatzgrenze. Diese Bedingung ist nur zulässig, wenn deallocate_type auf CM_DEALLOCATE_ABEND und die send_type auf CM_SEND_AND_DEALLOCATE 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-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-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 typparameter ausgestellt, der auf CM_DEALLOCATE_ABEND festgelegt ist, oder die Remote-LU hat dies aufgrund eines ungewöhnlichen Beendigungszustands 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.Zustandsänderungen
Die Konversation muss sich im SENDE- oder SEND_PENDING Zustand befinden, wenn das Programm diesen Aufruf ausgibt.
In der folgenden Tabelle sind Zustandsänderungen zusammengefasst, die möglich sind, wenn return_code auf CM_OK festgelegt ist.
send_type | Alter Zustand | Neuer Zustand |
---|---|---|
CM_BUFFER_DATA | SEND | Keine Änderung |
CM_BUFFER_DATA | SEND_PENDING | SEND |
CM_SEND_AND_FLUSH | SEND | Keine Änderung |
CM_SEND_AND_FLUSH | SEND_PENDING | SEND |
CM_SEND_AND_CONFIRM | SEND | Keine Änderung |
CM_SEND_AND_CONFIRM | SEND_PENDING | SEND |
CM_SEND_AND_PREP_TO_ RECEIVE | Nicht verfügbar | RECEIVE |
CM_SEND_AND_DEALLOCATE | Nicht verfügbar | RESET |
Bei einem return_code Wert von CM_PROGRAM_ERROR_PURGING oder CM_SVC_ERROR_PURGING wechselt die Unterhaltung in den EMPFANGSzustand. Bei anderen Werten, die nicht CM_OK, wechselt die Konversation in den RESET-Zustand.
Hinweise
Die im lokalen LUs-Sendepuffer gesammelten Daten werden an die Partner-LU und das Partnerprogramm übertragen, wenn eine der folgenden Aktionen auftritt:
Der Sendepuffer füllt sich.
Das lokale Programm gibt einen Flush-, Confirm- oder Deallocate-Aufruf oder einen anderen Aufruf aus, der den LUs-Sendepuffer leert. (Einige Sendetypen, die durch Set_Send_Type festgelegt werden, umfassen die Leerungsfunktionen.)
Die zu sendenden Daten können wie folgt lauten:
Ein vollständiger Datensatz für eine zugeordnete Unterhaltung. Ein vollständiger Datensatz ist eine Zeichenfolge der vom parameter send_length angegebenen Länge.
Ein vollständiger logischer Datensatz oder ein Teil davon für eine einfache Konversation. Ein vollständiger logischer Datensatz wird durch den LL-Wert bestimmt. (Ein logischer Datensatz kann enden, und ein neuer Datensatz beginnt in der Mitte der zu sendenden Datenzeichenfolge.)
Die LU führt keine automatische Konvertierung zwischen ASCII und EBCDIC für die Zeichenfolge der zu sendenden Daten durch. Bei Bedarf kann das Programm die CONVERT-Datei (Common Service Verb) verwenden, um eine Zeichenfolge aus einem Zeichensatz in den anderen zu übersetzen.