Freigeben über


SEND_CONVERSATION

Das SEND_CONVERSATION Verb weist eine Sitzung zwischen der lokalen logischen Einheit (LU) und der Partner-LU zu, sendet Daten für die Sitzung und ordnet die Sitzung dann ab.

In der folgenden Struktur wird der Verb-Steuerelementblock (VCB) beschrieben, der vom SEND_CONVERSATION Verb verwendet wird.

Syntax

  
struct send_conversation {  
    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 char       reserv3[8];  
    unsigned char       rtn_ctl;  
    unsigned char       reserv4;  
    unsigned long       conv_group_id;  
    unsigned long       sense_data;  
    unsigned char       plu_alias[8];  
    unsigned char       mode_name[8];  
    unsigned char       tp_name[64];  
    unsigned char       security;  
    unsigned char       reserv6[11];  
    unsigned char       pwd[10];  
    unsigned char       user_id[10];  
    unsigned short      pip_dlen;  
    unsigned char FAR * pip_dptr;  
    unsigned char       reserv6;  
    unsigned char       fqplu_name[17];  
    unsigned char       reserv7[8];  
    unsigned short      dlen;  
    unsigned char FAR * dptr;  
};   

Member

opcode
Angegebener Parameter. Gibt den Code des Verbvorgangs an, AP_B_SEND_CONVERSATION.

opext
Angegebener Parameter. Gibt die Verbvorgangserweiterung an, AP_BASIC_CONVERSATION.

reserv2
Ein reserviertes Feld.

primary_rc
Zurückgegebener Parameter. Gibt den primären Rückgabecode an, der von APPC nach Abschluss des Verbs festgelegt wird. Die gültigen Rückgabecodes variieren je nach ausgegebenem APPC-Verb. Gültige Fehlercodes für dieses Verb finden Sie unter „Rückgabecodes“.

secondary_rc
Zurückgegebener Parameter. Gibt den sekundären Rückgabecode an, der von APPC nach Abschluss des Verbs festgelegt wird. Die gültigen Rückgabecodes variieren je nach ausgegebenem APPC-Verb. Gültige Fehlercodes für dieses Verb finden Sie unter „Rückgabecodes“.

tp_id
Angegebener Parameter. Gibt das lokale Transaktionsprogramm (LOCAL TRANSACTION PROGRAM, TP) an. Der Wert dieses Parameters wurde von TP_STARTED zurückgegeben.

conv_id
Angegebener Parameter. Stellt den Unterhaltungsbezeichner bereit.

Der Wert dieses Parameters wird von ALLOCATE im aufrufenden TP oder von RECEIVE_ALLOCATE im aufgerufenen TP zurückgegeben.

rtn_ctl
Angegebener Parameter. Gibt an, wie APPC eine Sitzung auswählen soll, die für die Unterhaltung zugewiesen werden soll, und wann die lokale LU die Steuerung an den lokalen TP zurückgeben soll. Zulässige Werte sind:

  • AP_IMMEDIATE gibt an, dass die LU eine Konflikt-Gewinner-Sitzung zuweist, wenn sie sofort verfügbar ist, und gibt die Steuerung an den TP zurück.

  • AP_WHEN_SESSION_ALLOCATED gibt an, dass die LU erst dann die Steuerung an den TP zurückgibt, wenn sie eine Sitzung ordnet oder einen der in Rückgabecodes in diesem Thema beschriebenen Fehler auftritt. Wenn das Sitzungslimit 0 ist, gibt die LU sofort das Steuerelement zurück. Beachten Sie, dass der TP auf eine Sitzung wartet, wenn eine Sitzung nicht verfügbar ist.

  • AP_WHEN_SESSION_FREE gibt an, dass die LU eine Konflikt-Gewinner- oder Konflikt-Verlierer-Sitzung ordnet, wenn sie verfügbar ist oder aktiviert werden kann, und gibt die Steuerung an den TP zurück. Wenn ein Fehler auftritt (wie unter Rückgabecodes in diesem Thema beschrieben), wird der Aufruf sofort zurückgegeben, wobei der Fehler in den Feldern primary_rc und secondary_rc angezeigt wird.

  • AP_WHEN_CONWINNER_ALLOC gibt an, dass die LU erst dann die Steuerung zurückgibt, wenn sie eine Konflikt-Gewinner-Sitzung zuweist oder einen der in Rückgabecodes in diesem Thema beschriebenen Fehler auftritt. Wenn das Sitzungslimit 0 ist, gibt die LU sofort das Steuerelement zurück. Beachten Sie, dass der TP auf eine Sitzung wartet, wenn eine Sitzung nicht verfügbar ist.

  • AP_WHEN_CONV_GROUP_ALLOC gibt an, dass die LU erst dann die Steuerung an den TP zurückgibt, wenn sie die durch conv_group_id angegebene Sitzung ordnet oder einen der in Rückgabecodes in diesem Thema beschriebenen Fehler auftritt. Wenn die Sitzung nicht verfügbar ist, wartet der TP, bis sie frei wird.

    conv_group_id
    Angegebener/zurückgegebener Parameter. Wird als angegebener Parameter verwendet, wenn rtn_ctl WHEN_CONV_GROUP_ALLOC ist, um die Identität der Konversationsgruppe anzugeben, aus der die Sitzung zugeordnet werden soll. Wenn rtn_ctl einen anderen Wert angibt und der primary_rc AP_OK ist, ist dies ein zurückgegebener Wert. Der Zweck dieses Parameters besteht darin, einen TP mit der Sicherheit bereitzustellen, dass dieselbe Sitzung neu zugewiesen wird und daher die über die Sitzung durchgeführten Unterhaltungen in derselben Sequenz stattfinden, die sie initiiert haben.

    sense_data
    Zurückgegebener Parameter. Wenn die primären und sekundären Rückgabecodes auf einen Zuordnungsfehler hinweisen (Wiederholungsversuch oder kein Wiederholungsversuch), wird ein SNA-definierter Sinncode zurückgegeben.

    plu_alias
    Angegebener Parameter. Gibt den Alias an, unter dem die Partner-LU dem lokalen TP bekannt ist. Dieser Parameter muss mit dem Namen einer Partner-LU übereinstimmen, die während der Konfiguration eingerichtet wurde. Der Parameter ist ein 8-Byte-Typ G ASCII-Zeichensatz, der Folgendes enthält:

  • Großbuchstaben

  • Ziffern 0 bis 9

  • Leerzeichen

  • Sonderzeichen $, #, %und @

    Wenn der Wert dieses Parameters weniger als acht Bytes beträgt, polstern Sie ihn auf der rechten Seite mit ASCII-Leerzeichen (0x20).

    mode_name
    Angegebener Parameter. Gibt den Namen einer Gruppe von Netzwerkmerkmalen an, die während der Konfiguration definiert wurden. Dieser Parameter muss mit dem Namen eines Modus übereinstimmen, der der Partner-LU während der Konfiguration zugeordnet ist.

    Der Parameter ist eine 8-Byte-EBCDIC-Zeichenfolge. Sie kann aus Zeichen des EBCDIC-Zeichensatzes vom Typ A bestehen, einschließlich aller EBCDIC-Leerzeichen. Diese Zeichen sind:

  • Großbuchstaben

  • Ziffern 0 bis 9

  • Sonderzeichen $, #und @

    Das erste Zeichen in der Zeichenfolge muss ein Großbuchstaben oder Sonderzeichen sein.

    Die Verwendung des Namens SNASVCMG (ein reservierter Modusname, der intern von APPC verwendet wird) in einer einfachen Unterhaltung wird nicht empfohlen.

    tp_name
    Angegebener Parameter. Gibt den Namen des aufgerufenen TP an. Der Wert von tp_name , der von ALLOCATE im aufrufenden TP angegeben wird, muss mit dem Wert von tp_name übereinstimmen, der von RECEIVE_ALLOCATE im aufgerufenen TP angegeben wird.

    Der Parameter ist eine EBCDIC-Zeichenfolge mit 64 Byte, wobei die Groß-/Kleinschreibung beachtet wird. Dieser Parameter kann aus Zeichen vom Typ AE EBCDIC-Zeichensatz bestehen. Diese Zeichen sind:

  • Groß- und Kleinbuchstaben

  • Ziffern 0 bis 9

  • Sonderzeichen $, #, @ und Punkt (.)

    Wenn der TP-Name weniger als 64 Bytes ist, verwenden Sie EBCDIC-Leerzeichen (0x40), um ihn auf der rechten Seite zu polstern.

    Die SNA-Konvention zum Benennen eines Dienst-TP ist bis zu vier Zeichen lang. Das erste Zeichen ist ein hexadezimales Byte zwischen 0x00 und 0x3F. Die anderen Zeichen stammen aus dem EBCDIC AE-Zeichensatz.

    security
    Angegebener Parameter. Gibt die Informationen an, die die Partner-LU benötigt, um den Zugriff auf das aufgerufene TP zu überprüfen.

  • AP_NONE gibt an, dass der aufgerufene TP keine Konversationssicherheit verwendet.

  • AP_PGM gibt an, dass der aufgerufene TP Unterhaltungssicherheit verwendet und eine Benutzer-ID und ein Kennwort erfordert. Verwenden Sie user_id und pwd , um diese Informationen zur Verfügung zu stellen.

  • AP_SAME gibt an, dass der aufgerufene TP, der mit einem gültigen Benutzerbezeichner und Kennwort aufgerufen wird, wiederum einen anderen TP aufruft.

    Angenommen, TP A ruft TP B mit einem gültigen Benutzerbezeichner und Kennwort auf, und TP B ruft wiederum TP C auf. Wenn TP B den Wert AP_SAME angibt, sendet APPC die LU für TP C den Benutzerbezeichner von TP A und einen bereits überprüften Indikator. Dieser Indikator gibt an, dass TP C das Kennwort nicht erfordert (wenn TP C so konfiguriert ist, dass ein bereits überprüfter Indikator akzeptiert wird).

    pwd
    Angegebener Parameter. Gibt das Kennwort an, das user_id zugeordnet ist. Dieser Parameter ist nur erforderlich, wenn der Sicherheitsparameter auf AP_PGM festgelegt ist und mit dem Kennwort für user_id übereinstimmen muss, der während der Konfiguration eingerichtet wurde.

    Bei diesem Parameter handelt es sich um eine EBCDIC-Zeichenfolge mit 10 Byte, wobei die Groß-/Kleinschreibung beachtet wird. Sie kann aus Zeichen des Typs AE EBCDIC bestehen. Diese Zeichen sind:

  • Groß- und Kleinbuchstaben

  • Ziffern 0 bis 9

  • Sonderzeichen $, #, @ und Punkt (.)

    Wenn das Kennwort weniger als 10 Bytes ist, verwenden Sie EBCDIC-Leerzeichen (0x40), um es auf der rechten Seite zu polstern.

    User_id
    Angegebener Parameter. Gibt die Benutzer-ID an, die für den Zugriff auf das Partner-TP erforderlich ist. Dieser Parameter ist nur erforderlich, wenn der Sicherheitsparameter auf AP_PGM festgelegt ist und einer der Benutzer-IDs entsprechen muss, die für den Partner-TP konfiguriert sind.

    Der Parameter kann aus Zeichen aus dem Zeichensatz vom Typ AE EBCDIC bestehen. Diese Zeichen sind:

  • Groß- und Kleinbuchstaben

  • Ziffern 0 bis 9

  • Sonderzeichen $, #, @ und Punkt (.)

    Wenn die Benutzer-ID weniger als 10 Byte beträgt, verwenden Sie EBCDIC-Leerzeichen (0x40), um sie auf der rechten Seite zu polstern.

    pip_dlen
    Angegebener Parameter. Gibt die Länge des PIP an, das an den Partner-TP übergeben werden soll. Der Bereich für diesen Parameter liegt zwischen 0 und 32767.

    pip_dptr
    Angegebener Parameter. Gibt die Adresse des Puffers an, der PIP-Daten enthält. Verwenden Sie diesen Parameter nur, wenn pip_dlen größer als 0 (null) ist.

    PIP-Daten können aus Initialisierungsparametern oder Umgebungssetupinformationen bestehen, die von einem Partner-TP oder Remotebetriebssystem benötigt werden. Die PIP-Daten müssen dem GDS-Format entsprechen. Weitere Informationen finden Sie in Ihren IBM SNA-Handbüchern.

    Für das Microsoft Windows-Betriebssystem kann sich der Datenpuffer in einem statischen Datenbereich oder in einem global zugeordneten Bereich befinden.

    fqlu_name
    Angegebener Parameter. Gibt den vollqualifizierten Namen der lokalen LU an. Dieser Parameter muss mit dem vollqualifizierten Namen der lokalen LU übereinstimmen, die im Remoteknoten definiert ist. Der Parameter besteht aus zwei EBCDIC-Zeichenfolgen vom Typ A (jeweils bis zu acht Zeichen), bei denen es sich um den Netzwerknamen (NETID) und den LU-Namen der Partner-LU handelt. Die Namen werden durch einen EBCDIC-Punkt (.) getrennt. Die NETID kann weggelassen werden, und wenn dies der Fall ist, sollte auch der Zeitraum weggelassen werden.

    Dieser Name muss angegeben werden, wenn keine plu_alias angegeben wird.

    Typ A EBCDIC-Zeichen enthalten:

  • Großbuchstaben

  • Ziffern 0 bis 9

  • Sonderzeichen $, #, und @

    Wenn der Wert dieses Parameters weniger als 17 Bytes beträgt, füllen Sie ihn auf der rechten Seite mit EBCDIC-Leerzeichen (0x40).

    dlen
    Angegebener Parameter. Gibt die Anzahl der Bytes der Daten an, die in den Sendepuffer der lokalen LU eingefügt werden sollen. Der Bereich für diesen Parameter liegt zwischen 0 und 65535.

    dptr
    Angegebener Parameter. Gibt die Adresse des Puffers an, der die Daten enthält, die in den Sendepuffer der lokalen LU eingefügt werden sollen.

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

Rückgabecodes

AP_OK
Primärer Rückgabecode; das Verb wurde erfolgreich ausgeführt.

AP_UNSUCCESSFUL
Primärer Rückgabecode; Der angegebene Parameter rtn_ctl die sofortige Rückgabe des Steuerelements an den TP (AP_IMMEDIATE) angegeben, und die lokale LU verfügte nicht über eine verfügbare Konfliktgewinnersitzung.

AP_PARAMETER_CHECK
Primärer Rückgabecode; das Verb wurde aufgrund eines Parameterfehlers nicht ausgeführt.

AP_BAD_RETURN_CONTROL

Sekundärer Rückgabecode; Der für rtn_ctl angegebene Wert war ungültig.

AP_BAD_SECURITY

Sekundärer Rückgabecode; Der für die Sicherheit angegebene Wert war ungültig.

AP_BAD_TP_ID

Sekundärer Rückgabecode; Der Wert von tp_id stimmte nicht mit einem TP-Bezeichner überein, der von APPC zugewiesen wurde.

AP_PIP_LEN_INCORRECT

Sekundärer Rückgabecode; der Wert von pip_dlen war größer als 32767.

AP_UNKNOWN_PARTNER_MODE

Sekundärer Rückgabecode; Der für mode_name angegebene Wert war ungültig.

AP_BAD_PARTNER_LU_ALIAS

Sekundärer Rückgabecode; APPC hat die bereitgestellte partner_lu_alias nicht erkannt.

AP_ALLOCATION_ERROR
Primärer Rückgabecode; APPC konnte eine Unterhaltung nicht zuordnen. Der Unterhaltungszustand ist auf ZURÜCKSETZEN festgelegt.

Dieser Code kann über ein Verb zurückgegeben werden, das nach ALLOCATE ausgegeben wurde.

AP_ALLOCATION_FAILURE_NO_RETRY

Sekundärer Rückgabecode; Die Konversation kann aufgrund einer permanenten Bedingung nicht zugeordnet werden, z. B. aufgrund eines Konfigurations- oder Sitzungsprotokollfehlers. Um den Fehler zu ermitteln, sollte der Systemadministrator sollte das Fehlerprotokoll untersuchen. Wiederholen Sie die Zuordnung erst, wenn der Fehler behoben wurde.

AP_ALLOCATION_FAILURE_RETRY

Sekundärer Rückgabecode; Die Konversation konnte aufgrund einer temporären Bedingung, z. B. eines Linkfehlers, nicht zugeordnet werden. Der Grund für den Fehler wird im Systemfehlerprotokoll protokolliert. Wiederholen Sie die Zuordnung.

AP_COMM_SUBSYSTEM_ABENDED
Primärer Rückgabecode; weist darauf hin, dass eine der folgenden Bedingungen aufgetreten ist:

  • Der von dieser Konversation verwendete Knoten hat einen ABEND gefunden.

  • Die Verbindung zwischen dem TP und dem PU 2.1-Knoten wurde unterbrochen (LAN-Fehler).

  • SnaBase auf dem Computer des TP hat einen ABEND gefunden.

    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 nicht geladen werden oder wurde während der Verarbeitung des Verbs beendet. Folglich 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 dies darauf hindeuten, dass kein Kommunikationssystem gefunden wurde, das die lokale LU unterstützt. (Beispielsweise ist der mit TP_STARTED angegebene lokale LU-Alias falsch oder wurde nicht konfiguriert.) Wenn lu_alias oder mode_name weniger als acht Zeichen umfasst, müssen Sie sicherstellen, dass diese Felder rechts mit Leerzeichen 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 Host Integration Server-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 ausgestellt wird) ist nicht auf aktiven Knoten konfiguriert. Das Problem kann wie folgt aussehen:

  • Der Knoten mit der lokalen LU wird nicht gestartet.

  • Die lokale LU ist nicht konfiguriert.

    AP_INVALID_VERB_SEGMENT
    Primärer Rückgabecode; der VCB wurde über das Ende des Datensegments hinaus erweitert.

    AP_STACK_TOO_SMALL
    Primärer Rückgabecode; die Stapelgröße der Anwendung ist zu klein, um das Verb auszuführen. Vergrößern Sie die Stapelgröße Ihrer Anwendung.

    AP_CONV_BUSY
    Primärer Rückgabecode; es kann nur ein herausragendes Konversationsverb gleichzeitig für jede Unterhaltung geben. Dies kann auftreten, wenn der lokale TP über mehrere Threads verfügt und mehr als ein Thread APPC-Aufrufe mit demselben conv_id ausgibt.

    AP_THREAD_BLOCKING
    Primärer Rückgabecode; der aufrufende Thread befindet sich bereits in einem blockierenden Aufruf.

    AP_UNEXPECTED_DOS_ERROR
    Primärer Rückgabecode; das Betriebssystem hat bei der Verarbeitung eines APPC-Aufrufs vom lokalen TP einen Fehler an APPC zurückgegeben. Der Rückgabecode des Betriebssystems wurde über secondary_rc zurückgegeben. Er wird in Intel-Bytetauschreihenfolge angezeigt. Wenn das Problem weiterhin besteht, wenden Sie sich an Ihren Systemadministrator.

Hinweise

Dieses Verb wird vom aufrufenden TP ausgegeben, um eine gesamte Konversation mit dem Remote-TP zu führen. Wenn der Remote-TP entweder die Konversationsinitiierung oder die Daten ablehnt, erhält der aufrufende TP keine Benachrichtigung über die Ablehnung.

Der Unterhaltungszustand ist RESET, wenn das TP dieses Verb ausgibt. Es gibt keine Zustandsänderung.

Mehrere Parameter von SEND_CONVERSATION sind EBCDIC- oder ASCII-Zeichenfolgen. Ein TP kann die CSV CONVERT-Datei verwenden, um eine Zeichenfolge von einem Zeichensatz in das andere zu übersetzen.

Normalerweise muss der Wert von mode_name mit dem Namen eines Modus übereinstimmen, der für den knoten des aufgerufenen TP konfiguriert und während der Konfiguration der Partner-LU zugeordnet ist. Wenn einer der Modi, die der Partner-LU auf dem Knoten des aufgerufenen TP zugeordnet sind, ein impliziter Modus ist, wird die zwischen den beiden LUs eingerichtete Sitzung vom impliziten Modus verwendet, wenn kein der Partner-LU zugeordneter Modusname mit dem Wert von mode_name übereinstimmt.