Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das verb RECEIVE_AND_POST empfängt Anwendungsdaten und Statusinformationen asynchron. Auf diese Weise kann das lokale Transaktionsprogramm (TP) mit der Verarbeitung fortfahren, während die Daten noch an der lokalen logischen Einheit (LU) ankommen.
Während ein asynchroner RECEIVE_AND_POST ausstehender Ist, können die folgenden Verben in derselben Unterhaltung ausgegeben werden:
DEALLOCATE (AP_ABEND_PROG, AP_ABEND_SVC oder AP_ABEND_TIMER)
-
Auf diese Weise kann eine Anwendung eine asynchrone RECEIVE_AND_POST verwenden, um Daten zu empfangen. Während die RECEIVE_AND_POST hervorragend ist, kann sie weiterhin SEND_ERROR und REQUEST_TO_SEND verwenden. Es wird empfohlen, dieses Feature für die vollständige asynchrone Unterstützung zu verwenden. Informationen dazu, wie ein TP Daten empfängt und wie dieses Verb verwendet wird, finden Sie in den Hinweisen in diesem Thema.
In der folgenden Struktur wird der verbsteuerungsblock (VCB) beschrieben, der vom RECEIVE_AND_POST Verb verwendet wird.
Syntax
struct receive_and_post {
unsigned short opcode;
unsigned char opext;
unsigned char reserv2;
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned char tp_id[8];
unsigned long conv_id;
unsigned short what_rcvd;
unsigned char rtn_status;
unsigned char fill;
unsigned char rts_rcvd;
unsigned char reserv4;
unsigned short max_len;
unsigned short dlen;
unsigned char FAR * dptr;
unsigned char FAR * sema;
unsigned char reserv5;
};
Elemente
opcode
Angegebener Parameter. Gibt den Verbvorgangscode AP_B_RECEIVE_AND_POST an.
opext
Angegebener Parameter. Gibt die Verbvorgangserweiterung AP_BASIC_CONVERSATION an.
reserv2
Ein reserviertes Feld.
primary_rc
Zurückgegebener Parameter. Gibt den primären Rückgabecode an, der von APPC am Ende des Verbs festgelegt wurde. Die gültigen Rückgabecodes variieren je nach ausgegebenen APPC-Verb. Informationen zu gültigen Fehlercodes für dieses Verb finden Sie unter "Rückgabecodes".
secondary_rc
Zurückgegebener Parameter. Gibt den von APPC festgelegten sekundären Rückgabecode am Ende des Verbs an. Die gültigen Rückgabecodes variieren je nach ausgegebenen APPC-Verb. Informationen zu gültigen Fehlercodes für dieses Verb finden Sie unter "Rückgabecodes".
tp_id
Angegebener Parameter. Identifiziert das lokale TP. Der Wert dieses Parameters wird von TP_STARTED im aufrufenden TP oder vonRECEIVE_ALLOCATE im aufgerufenen TP zurückgegeben.
conv_id
Angegebener Parameter. Stellt den Unterhaltungsbezeichner bereit. Der Wert dieses Parameters wird von ALLOCATEim aufgerufenen TP oder von RECEIVE_ALLOCATE im aufgerufenen TP zurückgegeben.
what_rcvd
Zurückgegebener Parameter. Gibt an, ob Daten oder Unterhaltungsstatus empfangen wurden. Mögliche Werte sind im Anschluss an den Abschnitt "Members" aufgeführt.
rtn_status
Angegebener Parameter. Gibt an, ob sowohl Daten- als auch Unterhaltungsstatusindikatoren innerhalb eines API-Aufrufs zurückgegeben werden sollen.
AP_NO gibt an, dass Indikatoren einzeln auf separaten Aufrufen des Verbs zurückgegeben werden sollen.
AP_YES gibt an, dass Indikatoren zusammen zurückgegeben werden sollen, sofern beide verfügbar sind. Beide können zurückgegeben werden, wenn:
Der Empfangspuffer ist groß genug, um alle Daten zu enthalten, die dem Statusindikator vorangestellt sind.
Der Füllparameter gibt PUFFER oder LL an, und die Daten sind der letzte logische Datensatz vor dem Statusindikator.
füllen
Angegebener Parameter. Gibt an, wie die lokale TP Daten empfängt.Verwenden Sie AP_BUFFER, um anzugeben, dass das lokale TP Daten empfängt, bis die Anzahl der by max_len angegebenen Bytes erreicht ist oder bis zum Ende der Daten. Daten werden ohne Beachtung des Logischen Datensatzformats übermittelt.
Verwenden Sie AP_LL, um anzugeben, dass Daten im Logischen Datensatzformat empfangen werden. Die empfangenen Daten können wie möglich sein:
Ein vollständiger logischer Datensatz.
Ein max_len Byteteil eines logischen Datensatzes.
Das Ende eines logischen Datensatzes.
rts_rcvd
Zurückgegebener Parameter. Gibt an, ob der Partner TP REQUEST_TO_SEND ausgestellt hat. Mögliche Werte:AP_YES gibt an, dass der Partner-TP REQUEST_TO_SEND ausgestellt hat, was anfordert, dass der lokale TP die Unterhaltung in den EMPFANGSstatus ändert.
AP_NO weist darauf hin, dass der Partner-TP keine REQUEST_TO_SEND ausgestellt hat.
max_len
Angegebener Parameter. Gibt die maximale Anzahl von Byte von Daten an, die der lokale TP empfangen kann. Der Bereich liegt zwischen 0 und 65535.Der Wert darf die Länge des Puffers nicht überschreiten, um die empfangenen Daten zu enthalten. Der Offset von dptr plus der Wert von max_len darf die Größe des Datensegments nicht überschreiten.
Dlen
Zurückgegebener Parameter. Gibt die Anzahl der empfangenen Daten an. Daten werden im durch dptr angegebenen Puffer gespeichert. Eine Länge von Null gibt an, dass keine Daten empfangen wurden.dptr
Angegebener Parameter. Stellt die Adresse des Puffers bereit, die die von der lokalen LU empfangenen Daten enthalten soll.Für Microsoft® Windows® kann sich der Datenpuffer in einem statischen Datenbereich oder in einem global zugewiesenen Bereich befinden. Der Datenpuffer muss vollständig in diesen Bereich passen.
Sema
Angegebener Parameter. Stellt die Adresse des Semaphors bereit, das APPC löschen soll, wenn der asynchrone Empfangsvorgang abgeschlossen ist. Der Sema-Parameter ist ein Ereignishandle, das durch Aufrufen der CreateEvent - oder OpenEvent Win32-Funktion abgerufen wird.Vom what_rcvd-Parameter zurückgegebene Werte
AP_CONFIRM_DEALLOCATE gibt an, dass der Partner TP DEALLOCATE mit dealloc_type auf AP_SYNC_LEVEL festgelegt hat. Die Synchronisierungsebene der Unterhaltung, die durch ALLOCATE eingerichtet wird, ist AP_CONFIRM_SYNC_LEVEL. Nach Erhalt dieses Werts gibt der lokale TP normalerweise BESTÄTIGT.
AP_CONFIRM_SEND gibt an, dass der Partner-TP PREPARE_TO_RECEIVE ausgestellt hat, wobei ptr_type auf AP_SYNC_LEVEL festgelegt sind. Die Synchronisierungsebene der Unterhaltung, die durch ALLOCATE eingerichtet wird, ist AP_CONFIRM_SYNC_LEVEL. Beim Empfang dieses Werts gibt der lokale TP normalerweise BESTÄTIGT und beginnt mit dem Senden von Daten.
AP_CONFIRM_WHAT_RECEIVED gibt an, dass der Partner TP BESTÄTIGT hat. Nach Erhalt dieses Werts gibt der lokale TP normalerweise BESTÄTIGT.
AP_DATA gibt an, dass dieser Wert von RECEIVE_AND_POST zurückgegeben werden kann, wenn die Füllung auf AP_BUFFER festgelegt ist. Der lokale TP hat Daten empfangen, bis max_len oder das Ende der Daten erreicht wurde. Weitere Informationen finden Sie in den Anmerkungen in diesem Thema.
AP_DATA_COMPLETE gibt für RECEIVE_AND_POST an, dass der lokale TP einen vollständigen Datensatz oder den letzten Teil eines Datensatzes erhalten hat.
Für RECEIVE_AND_POST , für die die Füllung auf AP_LL festgelegt ist, gibt dieser Wert an, dass der lokale TP einen vollständigen logischen Datensatz oder das Ende eines logischen Datensatzes erhalten hat.
Beim Empfang dieses Werts wird der lokale TP normalerweise RECEIVE_AND_POST neu ausgegeben oder ein anderes Empfangsverb ausgegeben. Wenn der Partner TP weitere Daten gesendet hat, beginnt der lokale TP mit dem Empfangen einer neuen Dateneinheit.
Andernfalls untersucht das lokale TP Statusinformationen.
Wenn primary_rc AP_OK enthält und what_rcvd AP_SEND, AP_CONFIRM_SEND, AP_CONFIRM_DEALLOCATE oder AP_CONFIRM_WHAT_RECEIVED enthält, lesen Sie die Beschreibung des Werts (in diesem Abschnitt) für die nächste Aktion, die der lokale TP normalerweise ausführt.
Wenn primary_rc AP_DEALLOC_NORMAL enthält, wurde die Unterhaltung als Reaktion auf das von dem Partner TP ausgestellte DEALLOCATE umgestellt.
AP_DATA_INCOMPLETE gibt für RECEIVE_AND_POST an, dass der lokale TP einen unvollständigen Datensatz erhalten hat. Der max_len Parameter hat einen Wert angegeben, der kleiner als die Länge des Datensatzes ist (oder kleiner als der Rest des Datensatzes, wenn dies nicht das erste Empfangsverb zum Lesen des Datensatzes ist).
Für RECEIVE_AND_POST mit dem Auffüllsatz auf AP_LL gibt dieser Wert an, dass der lokale TP einen unvollständigen logischen Datensatz empfangen hat.
Beim Empfang dieses Werts wird vom lokalen TP normalerweise RECEIVE_AND_POST (oder ein anderes Empfangsverb ausgegeben) neu ausgegeben, um den nächsten Teil des Datensatzes zu erhalten.
AP_NONE gibt an, dass der TP keine Daten- oder Unterhaltungsstatusindikatoren empfangen hat.
AP_SEND gibt für den Partner-TP an, dass die Unterhaltung den STATUS EMPFANGEN eingegeben hat. Für das lokale TP befindet sich die Unterhaltung jetzt im SEND-Zustand. Beim Empfang dieses Werts verwendet der lokale TP normalerweise SEND_DATA , um mit dem Senden von Daten zu beginnen.
Rückgabecodes
AP_OK
Primärer Rückgabecode; das Verb erfolgreich ausgeführt wurde.
Wenn rtn_status AP_YES ist, kann der vorherige Rückgabecode oder einer der folgenden Rückgabecodes zurückgegeben werden.
AP_DATA_COMPLETE_SEND
Primärer Rückgabecode; Dies ist eine Kombination aus AP_DATA_COMPLETE und AP_SEND.
AP_DATA_COMPLETE_CONFIRM_SEND
Primärer Rückgabecode; Dies ist eine Kombination aus AP_DATA_COMPLETE und AP_CONFIRM_SEND.
AP_DATA_COMPLETE_CONFIRM
Primärer Rückgabecode; Dies ist eine Kombination aus AP_DATA_COMPLETE und AP_CONFIRM_WHAT_RECEIVED.
AP_DATA_COMPLETE_CONFIRM_DEALL
Primärer Rückgabecode; Dies ist eine Kombination aus AP_DATA_COMPLETE und AP_CONFIRM_DEALLOCATE.
AP_DATA_SEND
Primärer Rückgabecode; Dies ist eine Kombination aus AP_DATA und AP_SEND.
AP_DATA_CONFIRM_SEND
Primärer Rückgabecode; Dies ist eine Kombination aus AP_DATA und AP_CONFIRM_SEND.
AP_DATA_CONFIRM
Primärer Rückgabecode; Dies ist eine Kombination aus AP_DATA und AP_CONFIRM.
AP_DATA_CONFIRM_DEALLOCATE
Primärer Rückgabecode; Dies ist eine Kombination aus AP_DATA und AP_CONFIRM_DEALLOCATE.
AP_DEALLOC_NORMAL
Primärer Rückgabecode; der Partner TP hat DEALLOCATE mit dealloc_type auf AP_FLUSH oder AP_SYNC_LEVEL mit der Synchronisierungsebene der unterhaltung ausgestellt, die als AP_NONE angegeben wurde.
Wenn rtn_status AP_YES ist, überprüfen Sie auch what_rcvd .
AP_PARAMETER_CHECK
Primärer Rückgabecode; das Verb wurde aufgrund eines Parameterfehlers nicht ausgeführt.
AP_BAD_CONV_ID
Sekundärer Rückgabecode; der Wert von conv_id nicht mit einem Unterhaltungsbezeichner übereinstimmt, der von APPC zugewiesen wurde.
AP_BAD_TP_ID
Sekundärer Rückgabecode; der Wert von tp_id nicht mit einem TP-Bezeichner übereinstimmt, der von APPC zugewiesen wurde.
AP_BAD_RETURN_STATUS_WITH_DATA
Sekundärer Rückgabecode; der angegebene rtn_status Wert wurde von APPC nicht erkannt.
AP_INVALID_DATA_SEGMENT
Sekundärer Rückgabecode; Die für den Datenpuffer angegebene Länge war länger als das Segment, das dem Puffer zugeordnet ist.
AP_INVALID_SEMAPHORE_HANDLE
Sekundärer Rückgabecode; die Adresse des RAM-Semaphors oder des System-Semaphors war ungültig.
APPC kann nicht alle ungültigen Semaphorziehpunkte abfangen. Wenn der TP einen schlechten RAM-Semaphorpunkt übergibt, führt ein Schutzverletzungsverstoß dazu.
AP_RCV_AND_POST_BAD_FILL
Sekundärer Rückgabecode; Der Füllparameter wurde auf einen ungültigen Wert festgelegt.
AP_STATE_CHECK
Primärer Rückgabecode; das Verb wurde nicht ausgeführt, weil es in einem ungültigen Zustand ausgegeben wurde.
AP_RCV_AND_POST_BAD_STATE
Sekundärer Rückgabecode; die Unterhaltung war nicht im STATUS "EMPFANGEN" oder "SENDEN", als der TP dieses Verb ausgegeben hat.
AP_RCV_AND_POST_NOT_LL_BDY
Sekundärer Rückgabecode; die Unterhaltung war im SEND-Zustand; der TP begann, aber nicht abgeschlossen, einen logischen Datensatz zu senden.
AP_CANCELED
Primärer Rückgabecode; Das lokale TP hat eines der folgenden Verben ausgegeben, die RECEIVE_AND_POST abgebrochen haben:
DEALLOCATE with dealloc_type set to AP_ABEND_PROG, AP_ABEND_SVC, or AP_ABEND_TIMER
Wenn Sie eines dieser Verben ausgeben, wird das Semaphor gelöscht.
AP_ALLOCATION_ERROR
Primärer Rückgabecode; APPC konnte eine Unterhaltung nicht zuordnen. Der Unterhaltungszustand ist auf RESET festgelegt.
Dieser Code kann über ein Verb zurückgegeben werden, das nach ZUWEISUNG ausgegeben wurde.
AP_ALLOCATION_FAILURE_NO_RETRY
Sekundärer Rückgabecode; die Unterhaltung kann aufgrund einer dauerhaften Bedingung nicht zugewiesen werden, z. B. aufgrund eines Konfigurationsfehlers oder sitzungsprotokollfehlers. Um den Fehler zu ermitteln, sollte der Systemadministrator die Fehlerprotokolldatei untersuchen. Wiederholen Sie die Zuordnung erst, wenn der Fehler behoben wurde.
AP_ALLOCATION_FAILURE_RETRY
Sekundärer Rückgabecode; die Unterhaltung konnte aufgrund einer temporären Bedingung, z. B. aufgrund eines Verknüpfungsfehlers, nicht zugewiesen werden. Der Grund für den Fehler wird im Systemfehlerprotokoll protokolliert. Wiederholen Sie die Zuordnung.
AP_CONVERSATION_TYPE_MISMATCH
Sekundärer Rückgabecode; die Partner-LU oder TP unterstützt den in der Zuordnungsanforderung angegebenen Unterhaltungstyp (einfach oder zugeordnet) nicht.
AP_PIP_NOT_ALLOWED
Sekundärer Rückgabecode; Die zuordnungsanforderung angegebene PIP-Daten, aber entweder der Partner TP erfordert diese Daten nicht, oder die Partner-LU unterstützt sie nicht.
AP_PIP_NOT_SPECIFIED_CORRECTLY
Sekundärer Rückgabecode; Der Partner-TP erfordert PIP-Daten, aber die Zuordnungsanforderung hat entweder keine PIP-Daten oder eine falsche Anzahl von Parametern angegeben.
AP_SECURITY_NOT_VALID
Sekundärer Rückgabecode; Die in der Zuordnungsanforderung angegebene Benutzer-ID oder das kennwort wurde von der Partner-LU nicht akzeptiert.
AP_SYNC_LEVEL_NOT_SUPPORTED
Sekundärer Rückgabecode; der Partner-TP unterstützt die in der Zuordnungsanforderung angegebenen sync_level (AP_NONE oder AP_CONFIRM_SYNC_LEVEL) nicht, oder die sync_level wurde nicht erkannt.
AP_TP_NAME_NOT_RECOGNIZED
Sekundärer Rückgabecode; die Partner-LU erkennt den in der Zuordnungsanforderung angegebenen TP-Namen nicht.
AP_TRANS_PGM_NOT_AVAIL_NO_RETRY
Sekundärer Rückgabecode; die Remote-LU hat die Zuordnungsanforderung abgelehnt, da sie den angeforderten Partner-TP nicht starten konnte. Die Bedingung ist dauerhaft. Der Grund für den Fehler kann auf dem Remoteknoten protokolliert werden. Wiederholen Sie die Zuordnung erst, wenn der Fehler behoben wurde.
AP_TRANS_PGM_NOT_AVAIL_RETRY
Sekundärer Rückgabecode; die Remote-LU hat die Zuordnungsanforderung abgelehnt, da sie den angeforderten Partner-TP nicht starten konnte. Die Bedingung kann vorübergehend sein, z. B. ein Timeout. Der Grund für den Fehler kann auf dem Remoteknoten protokolliert werden. Wiederholen Sie die Zuordnung.
AP_COMM_SUBSYSTEM_ABENDED
Primärer Rückgabecode; gibt eine der folgenden Bedingungen an:
Der von dieser Unterhaltung verwendete Knoten hat einen ABEND gefunden.
Die Verbindung zwischen dem TP und dem PU 2.1-Knoten wurde unterbrochen (LAN-Fehler).
Die SnaBase auf dem Computer des TP ist ein ABEND aufgetreten.
Der Systemadministrator sollte das Fehlerprotokoll untersuchen, um den Grund für den ABEND zu ermitteln.
AP_COMM_SUBSYSTEM_NOT_LOADED
Primärer Rückgabecode; Eine erforderliche Komponente konnte beim Verarbeiten des Verbs nicht geladen oder beendet werden. So konnte die Kommunikation nicht stattfinden. Wenden Sie sich an den Systemadministrator, um Korrekturmaßnahmen zu ergreifen.Wenn dieser Rückgabecode mit ALLOCATE verwendet wird, kann er angeben, dass kein Kommunikationssystem gefunden werden konnte, um die lokale LU zu unterstützen. (Der mit TP_STARTED angegebene lokale LU-Alias ist beispielsweise falsch oder wurde nicht konfiguriert.) Wenn lu_alias oder mode_name weniger als acht Zeichen enthält, müssen Sie sicherstellen, dass diese Felder mit Leerzeichen rechts gefüllt sind. Dieser Fehler wird zurückgegeben, wenn diese Parameter nicht mit Leerzeichen gefüllt sind, da kein Knoten verfügbar ist, der die ALLOCATE-Anforderung erfüllen kann.
Wenn ALLOCATE diesen Rückgabecode für ein Hostintegrationsserver-Clientsystem erzeugt, das mit mehreren Knoten konfiguriert ist, gibt es zwei sekundäre Rückgabecodes wie folgt:
0xF0000001
Sekundärer Rückgabecode; es wurden keine Knoten gestartet.
0xF0000002
Sekundärer Rückgabecode; mindestens ein Knoten wurde gestartet, aber die lokale LU (wenn TP_STARTED ausgegeben wird) ist für keine aktiven Knoten konfiguriert. Das Problem könnte eine der folgenden sein:
Der Knoten mit der lokalen LU wird nicht gestartet.
Die lokale LU ist nicht konfiguriert.
AP_CONV_FAILURE_NO_RETRY
Primärer Rückgabecode; Die Unterhaltung wurde aufgrund einer dauerhaften Bedingung beendet, z. B. aufgrund eines Sitzungsprotokollfehlers. Der Systemadministrator sollte das Systemfehlerprotokoll untersuchen, um die Ursache des Fehlers zu ermitteln. Wiederholen Sie die Unterhaltung erst, wenn der Fehler behoben wurde.AP_CONV_FAILURE_RETRY
Primärer Rückgabecode; Die Unterhaltung wurde aufgrund eines temporären Fehlers beendet. Starten Sie den TP neu, um festzustellen, ob das Problem erneut auftritt. Wenn dies der Fall ist, sollte der Systemadministrator das Fehlerprotokoll untersuchen, um die Ursache des Fehlers zu ermitteln.AP_CONVERSATION_TYPE_MIXED
Primärer Rückgabecode; das TP sowohl grundlegende als auch zugeordnete Unterhaltungsverben ausgestellt hat. In einer einzigen Unterhaltung kann nur ein Typ ausgegeben werden.AP_INVALID_VERB_SEGMENT
Primärer Rückgabecode; die VCB über das Ende des Datensegments hinaus erweitert wurde.AP_PROG_ERROR_NO_TRUNC
Primärer Rückgabecode; der Partner TP hat SEND_ERROR ausgestellt, wobei err_type auf AP_PROG festgelegt wurde, während sich die Unterhaltung im SEND-Zustand befand. Daten wurden nicht abgeschnitten.AP_PROG_ERROR_PURGING
Primärer Rückgabecode; während der Status "RECEIVE", "PENDING", "PENDING_POST", "CONFIRM", "CONFIRM_SEND" oder "CONFIRM_DEALLOCATE" hat der Partner-TP SEND_ERROR ausgestellt, wobei err_type auf AP_PROG festgelegt ist. Gesendete, aber noch nicht empfangene Daten werden gelöscht.AP_PROG_ERROR_TRUNC
Primärer Rückgabecode; im SEND-Zustand, nachdem ein unvollständiger logischer Datensatz gesendet wurde, hat der Partner-TP SEND_ERROR mit err_type auf AP_PROG festgelegt. Der lokale TP kann den ersten Teil des logischen Datensatzes über ein Empfangsverb erhalten haben.AP_STACK_TOO_SMALL
Primärer Rückgabecode; Die Stapelgröße der Anwendung ist zu klein, um das Verb auszuführen. Erhöhen Sie die Stapelgröße Ihrer Anwendung.AP_CONV_BUSY
Primärer Rückgabecode; es kann jeweils nur ein herausragendes Unterhaltungsverb für jede Unterhaltung vorhanden sein. Dies kann auftreten, wenn der lokale TP über mehrere Threads verfügt und mehrere Threads APPC-Aufrufe mit demselben conv_id ausgeben.AP_UNEXPECTED_DOS_ERROR
Primärer Rückgabecode; Das Betriebssystem hat beim Verarbeiten eines APPC-Aufrufs vom lokalen TP einen Fehler an APPC zurückgegeben. Der Rückgabecode des Betriebssystems wird über die secondary_rc zurückgegeben. Es wird in intel byte-getauschter Reihenfolge angezeigt. Wenn das Problem weiterhin besteht, wenden Sie sich an den Systemadministrator.AP_DEALLOC_ABEND_PROG
Primärer Rückgabecode; die Unterhaltung wurde aus einem der folgenden Gründe umgestellt:Der Partner TP hat DEALLOCATE mit dealloc_type auf AP_ABEND_PROG festgelegt.
Der Partner TP hat einen ABEND gefunden, der dazu führt, dass der Partner LU eine DEALLOCATE-Anforderung sendet.
AP_DEALLOC_ABEND_SVC
Primärer Rückgabecode; die Unterhaltung wurde abgeglichen, da der Partner TP DEALLOCATE mit dealloc_type auf AP_ABEND_SVC festgelegt hat.AP_DEALLOC_ABEND_TIMER
Primärer Rückgabecode; die Unterhaltung wurde zugeordnet, da der Partner TP DEALLOCATE mit dealloc_type auf AP_ABEND_TIMER festgelegt hat.AP_SVC_ERROR_NO_TRUNC
Primärer Rückgabecode; im SEND-Zustand hat der Partner-TP (oder die Partner-LU) SEND_ERROR ausgestellt, wobei err_type auf AP_SVC festgelegt sind. Daten wurden nicht abgeschnitten.AP_SVC_ERROR_PURGING
Primärer Rückgabecode; die Partner-TP (oder Partner-LU), die SEND_ERROR ausgestellt hat, wobei err_type auf AP_SVC festgelegt ist, während sie den Status "RECEIVE", "PENDING_POST", "CONFIRM", "CONFIRM_SEND" oder "CONFIRM_DEALLOCATE" erhalten. Die an den Partner-TP gesendeten Daten wurden möglicherweise gelöscht.AP_SVC_ERROR_TRUNC
Primärer Rückgabecode; im SEND-Zustand, nachdem ein unvollständiger logischer Datensatz gesendet wurde, hat der Partner-TP (oder partner LU) SEND_ERROR ausgestellt. Möglicherweise wurde der erste Teil des logischen Datensatzes vom lokalen TP empfangen.
Bemerkungen
Der lokale TP empfängt Daten über den folgenden Prozess:
Das lokale TP gibt ein Empfangsverb aus, bis es beendet ist, eine vollständige Dateneinheit zu erhalten. Die empfangenen Daten können wie möglich sein:
Ein logischer Datensatz.
Ein Datenpuffer, der unabhängig vom logischen Datensatzformat empfangen wird.
Das lokale TP muss das Empfangsverb möglicherweise mehrmals ausgeben, um eine vollständige Dateneinheit zu erhalten. Nachdem eine vollständige Dateneinheit empfangen wurde, kann sie vom lokalen TP bearbeitet werden. Die empfangenen Verben sind RECEIVE_AND_POST, RECEIVE_AND_WAIT und RECEIVE_IMMEDIATE.
Die lokale TP gibt das Empfangsverb erneut aus. Dies hat einen der folgenden Auswirkungen:
Wenn der Partner TP weitere Daten gesendet hat, beginnt der lokale TP mit dem Empfangen einer neuen Dateneinheit.
Wenn der Partner-TP das Senden von Daten abgeschlossen hat oder auf die Bestätigung wartet, gibt die Statusinformationen (verfügbar über what_rcvd) die nächste Aktion an, die der lokale TP normalerweise ausführt.
Das folgende Verfahren zeigt Aufgaben, die vom lokalen TP in verwendung von RECEIVE_AND_POST ausgeführt werden.
So verwenden Sie RECEIVE_AND_POST
Für das Microsoft Windows-Betriebssystem® ruft das TP die WinAsyncAPPC-Nachrichtennummer ab, indem die RegisterWindowMessage-API aufgerufen wird oder ein Semaphor zuordnen. Das Sema-Feld sollte auf NULL festgelegt werden, wenn die Anwendung erwartet, dass sie über den Windows-Nachrichtenmechanismus benachrichtigt wird.
APPC sendet die Windows-Nachricht oder löscht das Semaphor, wenn das lokale TP den Empfang von Daten beendet.
Das Semaphor bleibt festgelegt, während der lokale TP Daten asynchron empfängt. APPC löscht das Semaphor, wenn der lokale TP den Empfang von Daten beendet.
Der TP gibt RECEIVE_AND_POST aus.
Der TP überprüft den Wert von primary_rc.
Wenn primary_rc AP_OK ist, empfängt der Empfangspuffer (verweist durch dptr) asynchron Daten vom Partner-TP. Beim asynchronen Empfangen von Daten kann das lokale TP:
Ausführen von Aufgaben, die nicht mit dieser Unterhaltung zusammenhängen.
Problem REQUEST_TO_SEND.
Sammeln Sie Informationen zu dieser Unterhaltung, indem Sie GET_TYPE, GET_ATTRIBUTES oder TEST_RTS ausgeben.
Vorzeitige Kündigung RECEIVE_AND_POST durch Ausgabe von DEALLOCATE mit dealloc_type auf AP_ABEND_PROG, AP_ABEND_SVC oder AP_ABEND_TIMER festgelegt; SEND_ERROR; oder TP_ENDED.
Wenn primary_rc jedoch nicht AP_OK ist, ist RECEIVE_AND_POST fehlgeschlagen. In diesem Fall führt der lokale TP nicht die nächsten beiden Aufgaben aus.
Für das Windows-Betriebssystem gibt APPC beim asynchronen Empfangen von Daten die Windows-Meldung "WinAsyncAPPC " aus oder löscht das Semaphor.
Der TP überprüft den neuen Wert von primary_rc.
Wenn primary_rc AP_OK ist, kann der lokale TP die anderen zurückgegebenen Parameter untersuchen und die asynchron empfangenen Daten bearbeiten.
Wenn primary_rc nicht AP_OK ist, sind nur secondary_rc und rts_rcvd (empfangene Anforderung) sinnvoll.
Unterhaltungszustandseffekte
Die Unterhaltung muss sich im STATUS "EMPFANGEN" oder "SENDEN" befinden, wenn das TP dieses Verb ausgibt.
Das Ausgeben RECEIVE_AND_POST , während sich die Unterhaltung im SEND-Zustand befindet, hat die folgenden Auswirkungen:
Die lokale LU sendet die Informationen im Sendepuffer und einen SEND-Indikator an den Partner-TP.
Die Unterhaltung ändert sich in PENDING_POST Zustand; Der lokale TP ist bereit, Informationen vom Partner-TP asynchron zu empfangen.
Die Unterhaltung ändert sich zweimal:
Wenn primary_rc AP_OK enthält, ändert sich die Unterhaltung bei der ersten Rückgabe des Verbs in PENDING_POST Zustand.
Nach Abschluss des Verbs ändert sich der Zustand abhängig vom Wert der folgenden:
Der parameter primary_rc
Der what_rcvd Parameter, wenn primary_rc AP_OK
Die folgende Tabelle zeigt den neuen Zustand, der jedem Wert von what_rcvd zugeordnet ist, wenn primary_rc AP_OK ist.
| what_rcvd | Neuer Zustand |
|---|---|
| AP_CONFIRM_DEALLOCATE | CONFIRM_DEALLOCATE |
| AP_DATA_COMPLETE_CONFIRM_DEALL | CONFIRM_DEALLOCATE |
| AP_DATA_CONFIRM_DEALLOCATE | CONFIRM_DEALLOCATE |
| AP_CONFIRM_SEND | CONFIRM_SEND |
| AP_DATA_COMPLETE_CONFIRM_SEND | CONFIRM_SEND |
| AP_DATA_CONFIRM_SEND | CONFIRM_SEND |
| AP_CONFIRM_WHAT_RECEIVED | BESTÄTIGEN |
| AP_DATA_COMPLETE_CONFIRM | BESTÄTIGEN |
| AP_DATA_CONFIRM | BESTÄTIGEN |
| AP_DATA | EMPFANGEN |
| AP_DATA_COMPLETE | EMPFANGEN |
| AP_DATA_INCOMPLETE | EMPFANGEN |
| AP_SEND | SENDEN |
| AP_DATA_COMPLETE_SEND | SEND_PENDING |
In der folgenden Tabelle ist der neue Zustand aufgeführt, der jedem Wert primary_rc zugeordnet ist, der nicht AP_OK ist.
| primary_rc | Neuer Zustand |
|---|---|
| AP_CANCELED | Keine Änderung |
| AP_CONV_FAILURE_RETRY | ZURÜCKSETZEN |
| AP_CONV_FAILURE_NO_RETRY | ZURÜCKSETZEN |
| AP_DEALLOC_ABEND | ZURÜCKSETZEN |
| AP_DEALLOC_ABEND_PROG | ZURÜCKSETZEN |
| AP_DEALLOC_ABEND_SVC | ZURÜCKSETZEN |
| AP_DEALLOC_ABEND_TIMER | ZURÜCKSETZEN |
| AP_DEALLOC_NORMAL | ZURÜCKSETZEN |
| AP_PROG_ERROR_PURGING | EMPFANGEN |
| AP_PROG_ERROR_NO_TRUNC | EMPFANGEN |
| AP_SVC_ERROR_PURGING | EMPFANGEN |
| AP_SVC_ERROR_NO_TRUNC | EMPFANGEN |
| AP_PROG_ERROR_TRUNC | EMPFANGEN |
| AP_SVC_ERROR_TRUNC | EMPFANGEN |
Ende der Daten für eine einfache Unterhaltung
Wenn das lokale TP RECEIVE_AND_POST ausgibt und die Füllung auf AP_BUFFER festlegt, endet der Empfang der Daten, wenn max_len oder das Ende der Daten erreicht wird. Das Ende der Daten wird entweder durch primary_rc mit einem anderen Wert als AP_OK (z. B. AP_DEALLOC_NORMAL) oder durch what_rcvd mit einem der folgenden Werte angegeben:
AP_SEND
AP_CONFIRM_SEND
AP_CONFIRM_DEALLOCATE
AP_CONFIRM_WHAT_RECEIVED
AP_DATA_CONFIRM_SEND
AP_DATA_CONFIRM_DEALLOCATE
AP_DATA_CONFIRM
Um zu ermitteln, ob das Ende der Daten erreicht wurde, werden die lokalen TP RECEIVE_AND_POST neu aufgelegt. Wenn die neue primary_rc AP_OK enthält und what_rcvd AP_DATA enthält, wurde das Ende der Daten nicht erreicht. Wenn jedoch das Ende der Daten erreicht wurde, gibt primary_rc oder what_rcvd die Ursache des Endes der Daten an.
Problembehandlung
Der lokale TP kann unbegrenzt warten, wenn eine der folgenden Situationen auftritt:
Für das Windows-Betriebssystem gibt das lokale TP eine RECEIVE_AND_POST Anforderung aus, aber entweder hat der Partner-TP keine Daten gesendet, oder die anfängliche primary_rc ist nicht AP_OK.
Für das Betriebssystem OS/2 gibt das lokale TP einen DosSemWait-Funktionsaufruf aus, aber entweder hat der Partner-TP keine Daten gesendet, oder die anfängliche primary_rc ist nicht AP_OK.
Dies liegt daran, dass APPC die Windows-Meldung nicht ausstellen oder das Semaphor löscht.
Wenn eine Bedingung auftritt, die zu einem der folgenden primary_rc Parameter führt, löscht APPC das Semaphor nicht:
AP_INVALID_SEMAPHORE_HANDLE
AP_INVALID_VERB_SEGMENT
AP_STACK_TOO_SMALL
Um what_rcvd zu testen, stellen Sie RECEIVE_AND_POST mit max_len auf Null fest, sodass der lokale TP bestimmen kann, ob der Partner-TP Daten zum Senden hat, eine Bestätigung sucht oder den Unterhaltungsstatus geändert hat.