Freigeben über


MC_RECEIVE_IMMEDIATE

Das verb MC_RECEIVE_IMMEDIATE empfängt alle daten, die derzeit vom Partnertransaktionsprogramm (TP) zur Verfügung stehen. Wenn keine Daten verfügbar sind, wartet der lokale TP nicht. Um das Blockieren der Unterhaltung zu vermeiden, MC_RECEIVE_AND_WAIT in Verbindung mit WinAsyncAPPC. In der folgenden Struktur wird der verbsteuerungsblock (VCB) beschrieben, der vom MC_RECEIVE_IMMEDIATE Verb verwendet wird.

Syntax

  
struct mc_receive_immediate {  
    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       reserv4;  
    unsigned char       rts_rcvd;  
    unsigned char       reserv5;  
    unsigned short      max_len;  
    unsigned short      dlen;  
    unsigned char FAR * dptr;  
    unsigned char       reserv6[5];  
};   

Elemente

Opcode
Angegebener Parameter. Gibt den Verbvorgangscode AP_M_RECEIVE_IMMEDIATE an.

opext
Angegebener Parameter. Gibt die Verbvorgangserweiterung AP_MAPPED_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 von RECEIVE_ALLOCATE im aufgerufenen TP zurückgegeben.

conv_id
Angegebener Parameter. Stellt den Unterhaltungsbezeichner bereit. Der Wert dieses Parameters wird von MC_ALLOCATE im aufrufenden TP oder von RECEIVE_ALLOCATE im aufgerufenen TP zurückgegeben.

what_rcvd
Zurückgegebener Parameter. Enthält Informationen, die mit den eingehenden Daten empfangen werden:

  • AP_CONFIRM_DEALLOCATE gibt an, dass der Partner-TP MC_DEALLOCATE ausgestellt hat, wobei dealloc_type auf AP_SYNC_LEVEL festgelegt ist und die Synchronisierungsebene der Unterhaltung, die durch MC_ALLOCATE festgelegt wurde, AP_CONFIRM_SYNC_LEVEL ist. Beim Empfang dieses Werts gibt der lokale TP normalerweise MC_CONFIRMED aus.

  • AP_CONFIRM_SEND gibt an, dass der Partner-TP MC_PREPARE_TO_RECEIVE ausgestellt hat, wobei ptr_type auf AP_SYNC_LEVEL festgelegt ist, und die Synchronisierungsebene der Unterhaltung, die durch MC_ALLOCATE festgelegt wurde, AP_CONFIRM_SYNC_LEVEL ist. Beim Empfang dieses Werts gibt der lokale TP normalerweise MC_CONFIRMED aus und beginnt mit dem Senden von Daten.

  • AP_CONFIRM_WHAT_RECEIVED gibt an, dass der Partner TP MC_CONFIRM ausgestellt hat. Beim Empfang dieses Werts gibt der lokale TP normalerweise MC_CONFIRMED aus.

  • AP_DATA_COMPLETE gibt für MC_RECEIVE_IMMEDIATE in zugeordneten Unterhaltungen an, dass die lokale TP einen vollständigen Datensatz oder den letzten Teil eines Datensatzes empfangen hat. Wenn sie diesen Wert erhalten, wird das lokale TP normalerweise MC_RECEIVE_IMMEDIATE erneut 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 überprüft das lokale TP Statusinformationen, wenn primary_rc AP_OK enthält und what_rcvd einen der folgenden Werte enthält:

    AP_SEND

    AP_CONFIRM_SEND

    AP_CONFIRM_DEALLOCATE

    AP_CONFIRM_WHAT_RECEIVED

    Eine Beschreibung des Werts in Rückgabecodes finden Sie in diesem Thema für die nächste Aktion, die normalerweise vom lokalen TP ausgeführt wird.

    Wenn primary_rc AP_DEALLOC_NORMAL enthält, wurde die Unterhaltung als Reaktion auf MC_DEALLOCATE , die vom Partner TP ausgegeben wurde, abgeglichen.

  • AP_DATA_INCOMPLETE gibt für MC_RECEIVE_IMMEDIATE in zugeordneten Unterhaltungen 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). Beim Empfang dieses Werts wird vom lokalen TP normalerweise MC_RECEIVE_IMMEDIATE (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 an, dass die Unterhaltung für den Partner-TP 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 MC_SEND_DATA , um mit dem Senden von Daten zu beginnen.

    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.

    Die Daten sind der letzte Datensatz vor dem Statusindikator.

    rts_rcvd
    Zurückgegebener Parameter. Enthält den Anforderungs-zu-Senden-Indikator. Mögliche Werte:

  • AP_YES gibt an, dass der Partner-TP MC_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 MC_REQUEST_TO_SEND nicht ausgestellt hat.

    max_len
    Angegebener Parameter. Gibt die maximale Anzahl von Byte an, die der lokale TP empfangen kann. Der Bereich liegt zwischen 0 und 65535.

    Für das Microsoft Windows-Betriebssystem und die grafische Windows-Umgebung darf dieser Wert die Länge des Puffers, der die empfangenen Daten enthält, nicht überschreiten.

    Für das Betriebssystem OS/2 darf der Offset von dptr plus der Wert von max_len die Größe des Datensegments nicht überschreiten.

    Durch die Ausgabe von MC_RECEIVE_IMMEDIATE mit max_len auf Null festgelegt, kann der lokale TP bestimmen, ob der Partner-TP Daten zum Senden hat, eine Bestätigung sucht oder den Unterhaltungsstatus geändert hat.

    dlen
    Zurückgegebener Parameter. Stellt die Anzahl der empfangenen Daten bereit. Daten werden in einem durch dptr angegebenen Puffer gespeichert. Eine Länge von Null gibt an, dass keine Daten empfangen wurden.

    dptr
    Angegebener Parameter. Adresse des Puffers, der die vom lokalen TP empfangenen Daten enthält.

    Für das Windows-Betriebssystem und die grafische Windows-Umgebung kann sich der Datenpuffer in einem statischen Datenbereich oder in einem global zugewiesenen Bereich befinden. Der Datenpuffer muss vollständig in diesen Bereich passen.

    Für das Betriebssystem OS/2 muss sich der Datenpuffer in einem nicht benannten freigegebenen Segment befinden, das von der Funktion DosAllocSeg mit Flags gleich 1 zugewiesen wird. Der Datenpuffer muss vollständig in das Datensegment passen.

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_UNSUCCESSFUL
Primärer Rückgabecode; keine Daten sind sofort vom Partner TP verfügbar.

AP_DEALLOC_NORMAL
Primärer Rückgabecode; Der Partner TP hat die Unterhaltung ohne Bestätigung abgeglichen. Der Partner-TP hat MC_DEALLOCATE ausgestellt, wobei dealloc_type auf eine der folgenden Optionen festgelegt ist:

  • AP_FLUSH

  • AP_SYNC_LEVEL mit der Synchronisierungsebene der Unterhaltung, die als AP_NONE

    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_STATE_CHECK
    Primärer Rückgabecode; das Verb wurde nicht ausgeführt, weil es in einem ungültigen Zustand ausgegeben wurde.

    AP_RCV_IMMD_BAD_STATE

    Sekundärer Rückgabecode; die Unterhaltung war nicht im EMPFANGSzustand.

    AP_ALLOCATION_ERROR

    Sekundä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 MC_ALLOCATE 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 logische Partnereinheit (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_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 MC_SEND_ERROR ausgestellt hat, während sich die Unterhaltung im SEND-Zustand befand. Daten wurden nicht abgeschnitten.

    AP_PROG_ERROR_PURGING
    Primärer Rückgabecode; in RECEIVE, PENDING, PENDING_POST, CONFIRM, CONFIRM_SEND oder CONFIRM_DEALLOCATE State hat der Partner TP MC_SEND_ERROR ausgestellt. Gesendete, aber noch nicht empfangene Daten werden gelöscht.

    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
    Primärer Rückgabecode; die Unterhaltung wurde aus einem der folgenden Gründe umgestellt:

  • Der Partner-TP hat MC_DEALLOCATE ausgestellt, wobei dealloc_type auf AP_ABEND festgelegt ist.

  • Der Partner TP hat einen ABEND gefunden, wodurch die Partner-LU eine MC_DEALLOCATE Anfrage sendet.

Bemerkungen

Der lokale TP empfängt Daten über den folgenden Prozess:

  1. Das lokale TP gibt ein Empfangsverb aus, bis es beendet ist, eine vollständige Dateneinheit zu erhalten. Die empfangenen Daten sind ein Datensatz.

    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 MC_RECEIVE_AND_POST, MC_RECEIVE_AND_WAIT und MC_RECEIVE_IMMEDIATE.

  2. 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.

    Die Unterhaltung muss sich im EMPFANGSzustand befinden, wenn das TP dieses Verb ausgibt.

    Der neue Zustand wird durch primary_rc bestimmt. Wenn primary_rc AP_OK ist, wird der neue Zustand durch what_rcvd bestimmt.

    In der folgenden Tabelle werden die Statusänderungen erläutert, wenn die 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 Keine Änderung
AP_DATA_COMPLETE Keine Änderung
AP_DATA_INCOMPLETE Keine Änderung
AP_SEND SENDEN
AP_DATA_COMPLETE_SEND SEND_PENDING

In der folgenden Tabelle werden die Zustandsänderungen erläutert, wenn die primary_rc nicht AP_OK ist.

primary_rc Neuer Zustand
AP_ALLOCATION_ERROR ZURÜCKSETZEN
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 Keine Änderung
AP_PROG_ERROR_NO_TRUNC Keine Änderung
AP_SVC_ERROR_PURGING Keine Änderung
AP_SVC_ERROR_NO_TRUNC Keine Änderung
AP_PROG_ERROR_TRUNC Keine Änderung
AP_SVC_ERROR_TRUNC Keine Änderung
AP_UNSUCCESSFUL Keine Änderung