SEND_CONVERSATION

SEND_CONVERSATION動詞は、ローカル論理ユニット (LU) とパートナー LU の間でセッションを割り当て、そのセッションでデータを送信してから、セッションの割り当てを解除します。

次の構造体では、 SEND_CONVERSATION 動詞で使用される動詞制御ブロック (VCB) について説明します。

構文

  
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;  
};   

メンバー

opcode
指定されたパラメーター。 動詞操作コード (AP_B_SEND_CONVERSATION) を指定します。

opext
指定されたパラメーター。 動詞操作拡張機能を指定します(AP_BASIC_CONVERSATION)。

reserv2
予約済みフィールド。

primary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定されるプライマリ リターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラーコードについては、「リターン コード」を参照してください。

secondary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定されるセカンダリ リターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラーコードについては、「リターン コード」を参照してください。

tp_id
指定されたパラメーター。 ローカル トランザクション プログラム (TP) を識別します。 このパラメーターの値は 、TP_STARTEDによって返されました。

conv_id
指定されたパラメーター。 会話識別子を提供します。

このパラメーターの値は、呼び出し元 TP の ALLOCATE または呼び出された TP のRECEIVE_ALLOCATE によって返されます。

rtn_ctl
指定されたパラメーター。 APPC が会話に割り当てるセッションを選択する方法と、ローカル LU がローカル TP に制御を返すタイミングを指定します。 使用できる値は、次のとおりです。

  • AP_IMMEDIATEは、LU が競合勝者セッションをすぐに使用できる場合に割り当て、TP に制御を返すように指定します。

  • AP_WHEN_SESSION_ALLOCATEDは、セッションを割り当てるか、このトピックの「リターン コード」で説明されているエラーのいずれかが発生するまで、LU が TP に制御を返さないことを指定します。 セッション制限が 0 の場合、LU は直ちに制御を返します。 セッションが使用できない場合、TP はセッションを待機します。

  • AP_WHEN_SESSION_FREEは、LU が競合優先セッションまたは競合敗者セッションを割り当てることを指定します (使用可能な場合、またはアクティブ化できる場合)。TP に制御を返します。 エラーが発生した場合 (このトピックの「リターン コード」の説明に従って) 呼び出しは 、primary_rc フィールドと secondary_rc フィールドでエラーを伴って直ちに返されます。

  • AP_WHEN_CONWINNER_ALLOCは、競合の勝者セッションを割り当てるか、このトピックの「リターン コード」で説明されているエラーのいずれかが発生するまで、LU が制御を返さないことを指定します。 セッション制限が 0 の場合、LU は直ちに制御を返します。 セッションが使用できない場合、TP はセッションを待機します。

  • AP_WHEN_CONV_GROUP_ALLOCは、LU が TP に制御を戻さない場合、conv_group_idで指定されたセッション 割り当てるか、このトピックの「リターン コード」で説明されているエラーの 1 つを検出することを指定します。 セッションが利用できない場合、TP はセッションが解放されるまで待機します。

    conv_group_id
    指定された/返されたパラメーター。 セッションの割り当て元となるメッセージ交換グループ ID を指定するためにrtn_ctlがWHEN_CONV_GROUP_ALLOC場合に、指定されたパラメーターとして使用されます。 rtn_ctlが別の値を指定し、primary_rcがAP_OK場合、これは戻り値です。 このパラメーターの目的は、TP に同じセッションが再割り当てされることを保証するため、セッションで行われた会話は、開始されたのと同じ順序で行われることを保証することです。

    sense_data
    返されたパラメーター。 プライマリおよびセカンダリのリターン コードが割り当てエラー (再試行または再試行なし) を示している場合は、SNA 定義のセンス コードが返されます。

    plu_alias
    指定されたパラメーター。 パートナー LU がローカル TP に認識される別名を指定します。 このパラメーターは、構成時に確立されたパートナー LU の名前と一致する必要があります。 パラメーターは、次を含む 8 バイトの G ASCII 文字セットです。

  • 大文字

  • 数字 0 ~ 9

  • スペース

  • 特殊文字 $、#、%、および@

    このパラメーターの値が 8 バイト未満の場合は、右側に ASCII スペース (0x20) を埋め込みます。

    mode_name
    指定されたパラメーター。 構成時に定義されたネットワーク特性のセットの名前を指定します。 このパラメーターは、構成時にパートナー LU に関連付けられているモードの名前と一致している必要があります。

    パラメーターは 8 バイトの EBCDIC 文字ストリングです。 これは、すべての EBCDIC スペースを含む、タイプ A EBCDIC 文字セットの文字で構成できます。 これらの文字は次のとおりです。

  • 大文字

  • 数字 0 ~ 9

  • 特殊文字 $、#、および@

    文字列の最初の文字は、大文字または特殊文字である必要があります。

    基本的な会話で SNASVCMG という名前 (APPC によって内部的に使用される予約モード名) を使用することはお勧めしません。

    tp_name
    指定されたパラメーター。 呼び出された TP の名前を指定します。 呼び出 tp_name TP の ALLOCATE によって指定された値は、呼び出された TP の RECEIVE_ALLOCATE で指定された tp_name の値と一致する必要があります。

    パラメーターは、大文字と小文字を区別する 64 バイトの EBCDIC 文字列です。 このパラメーターは、タイプ AE EBCDIC 文字セットの文字で構成できます。 これらの文字は次のとおりです。

  • 大文字と小文字

  • 数字 0 ~ 9

  • 特殊文字 $、#、@、ピリオド (.)

    TP 名が 64 バイト未満の場合は、EBCDIC スペース (0x40) を使用して右側に埋め込みます。

    サービス TP に名前を付ける SNA 規則は、最大 4 文字です。 先頭の文字は、0x00 から 0x3F までの 16 進数のバイトです。 その他の文字は、EBCDIC AE 文字セットからの文字です。

    セキュリティ
    指定されたパラメーター。 呼び出された TP へのアクセスを検証するためにパートナー LU が必要とする情報を指定します。

  • AP_NONEは、呼び出された TP で会話セキュリティが使用されていないことを指定します。

  • AP_PGMは、呼び出された TP が会話セキュリティを使用し、ユーザー識別子とパスワードを必要とすることを指定します。 この情報を提供するには 、user_idpwd を使用します。

  • AP_SAMEは、有効なユーザー識別子とパスワードで呼び出された呼び出された TP が別の TP を呼び出すように指定します。

    たとえば、TP A が有効なユーザー識別子とパスワードを使用して TP B を呼び出し、TP B が TP C を呼び出すとします。TP B がAP_SAME値を指定した場合、APPC は TP A からのユーザー識別子と既に検証済みのインジケーターを TP C の LU を送信します。 このインジケーターは、TP C にパスワードを必要としないことを示します (TP C が既に検証済みのインジケーターを受け入れるように構成されている場合)。

    pwd
    指定されたパラメーター。 user_idに関連付けられているパスワードを指定します。 このパラメーターは、セキュリティ パラメーターが AP_PGM に設定されており、構成時に確立された user_id のパスワードと一致する必要がある場合にのみ必要です。

    このパラメーターは、大文字と小文字を区別する 10 バイトの EBCDIC 文字列です。 AE EBCDIC 文字セットの文字で構成できます。 これらの文字は次のとおりです。

  • 大文字と小文字

  • 数字 0 ~ 9

  • 特殊文字 $、#、@、ピリオド (.)

    パスワードが 10 バイト未満の場合は、EBCDIC スペース (0x40) を使用して右側に埋め込みます。

    User_id
    指定されたパラメーター。 パートナー TP にアクセスするために必要なユーザー識別子を指定します。 このパラメーターは、セキュリティ パラメーターが AP_PGM に設定されており、パートナー TP 用に構成されているいずれかのユーザー識別子と一致する必要がある場合にのみ必要です。

    パラメーターは、型 AE EBCDIC 文字セットの文字で構成できます。 これらの文字は次のとおりです。

  • 大文字と小文字

  • 数字 0 ~ 9

  • 特殊文字 $、#、@、ピリオド (.)

    ユーザー ID が 10 バイト未満の場合は、EBCDIC スペース (0x40) を使用して右側に埋め込みます。

    pip_dlen
    指定されたパラメーター。 パートナー TP に渡される PIP の長さを指定します。 このパラメーターの範囲は 0 から 32767 です。

    pip_dptr
    指定されたパラメーター。 PIP データを含むバッファーのアドレスを指定します。 このパラメーターは、 pip_dlen が 0 より大きい場合にのみ使用します。

    PIP データは、パートナー TP またはリモート オペレーティング システムに必要な初期化パラメーターまたは環境セットアップ情報で構成できます。 PIP データは GDS 形式に従う必要があります。 詳細については、IBM SNA マニュアルを参照してください。

    Microsoft Windows オペレーティング システムの場合、データ バッファーは静的データ領域またはグローバルに割り当てられた領域に存在できます。

    fqplu_name
    指定されたパラメーター。 ローカル LU の完全修飾名を指定します。 このパラメーターは、リモート・ノードで定義されているローカル LU の完全修飾名と一致している必要があります。 パラメーターは、ネットワーク名 (NETID) とパートナー LU の LU 名である 2 つのタイプ A EBCDIC 文字ストリング (それぞれ最大 8 文字) で構成されます。 名前は EBCDIC ピリオド (.) で区切られます。 NETID は省略できます。この場合は、ピリオドも省略する必要があります。

    plu_aliasが指定されていない場合は、この名前を指定する必要があります。

    型 A EBCDIC 文字には次のものが含まれます。

  • 大文字

  • 数字 0 ~ 9

  • 特殊文字 $、#、および@

    このパラメーターの値が 17 バイト未満の場合は、右側に EBCDIC スペース (0x40) を埋め込みます。

    dlen
    指定されたパラメーター。 ローカル LU の送信バッファーに格納されるデータのバイト数を指定します。 このパラメーターの範囲は 0 から 65535 です。

    dptr
    指定されたパラメーター。 ローカル LU の送信バッファーに格納されるデータを含むバッファーのアドレスを指定します。

    Windows オペレーティング システムの場合、データ バッファーは静的データ領域またはグローバルに割り当てられた領域に存在できます。 データ バッファーは、この領域内に完全に収まる必要があります。

リターン コード

AP_OK
プライマリ リターン コード。動詞は正常に実行されました。

AP_UNSUCCESSFUL
主なリターン コード。指定されたパラメーター rtn_ctl TP (AP_IMMEDIATE) へのコントロールの即時戻りを指定し、ローカル LU に使用可能な競合勝者セッションがありませんでした。

AP_PARAMETER_CHECK
プライマリ リターン コード。パラメーター エラーのため、動詞は実行されませんでした。

AP_BAD_RETURN_CONTROL

セカンダリ リターン コード。 rtn_ctl に指定された値が無効です。

AP_BAD_SECURITY

セカンダリ リターン コード。 セキュリティ に指定された値が無効です。

AP_BAD_TP_ID

セカンダリ リターン コード。 tp_id の値が、APPC によって割り当てられた TP 識別子と一致しませんでした。

AP_PIP_LEN_INCORRECT

セカンダリ リターン コード。 pip_dlen の値が 32767 を超えています。

AP_UNKNOWN_PARTNER_MODE

セカンダリ リターン コード。 mode_name に指定された値が無効です。

AP_BAD_PARTNER_LU_ALIAS

セカンダリ リターン コード。APPC は、提供された partner_lu_aliasを認識しませんでした。

AP_ALLOCATION_ERROR
主なリターン コード。APPC が会話を割り当てませんでした。 会話の状態は RESET に設定されます。

このコードは、 ALLOCATE の後に発行された動詞を介して返される場合があります。

AP_ALLOCATION_FAILURE_NO_RETRY

セカンダリ リターン コード。構成エラーやセッション プロトコル エラーなどの永続的な条件のため、会話を割り当てることができません。 エラーを特定するには、システム管理者がエラー ログ ファイルを調べる必要があります。 エラーが修正されるまで、割り当てを再試行しないでください。

AP_ALLOCATION_FAILURE_RETRY

セカンダリ リターン コード。リンクエラーなどの一時的な状態のため、会話を割り当てませんでした。 エラーの理由は、システム エラー ログに記録されます。 割り当てを再試行してください。

AP_COMM_SUBSYSTEM_ABENDED
プライマリ リターン コード。次のいずれかの条件を示します。

  • このメッセージ交換で使用されているノードで、ABEND が発生しました。

  • TP と PU 2.1 ノードの間の接続が切断されました (LAN エラー)。

  • TP のコンピューターの SnaBase で ABEND が発生しました。

    ABEND の理由を特定するには、システム管理者がエラー ログを調べる必要があります。

    AP_COMM_SUBSYSTEM_NOT_LOADED
    主なリターン コード。必要なコンポーネントを読み込めなかったか、動詞の処理中に終了しました。 そのため、通信を行うことができませんでした。 是正措置については、システム管理者に問い合わせてください。

    この戻りコードを ALLOCATE と共に使用すると、ローカル LU をサポートする通信システムが見つからなかったことを示している可能性があります。 (たとえば、 TP_STARTED で指定されたローカル LU エイリアスが正しくないか、構成されていません)。 lu_alias または mode_name が 8 文字未満の場合は、これらのフィールドに右側のスペースが入力されていることを確認する必要があることに注意してください。 ALLOCATE 要求を満たすノードがないため、これらのパラメーターにスペースが入っていない場合、このエラーが返されます。

    ALLOCATE が複数のノードで構成されたホスト統合サーバー クライアント システムに対してこのリターン コードを生成する場合、次の 2 つのセカンダリ リターン コードがあります。

    0xF0000001

    セカンダリ リターン コード。ノードが開始されていません。

    0xF0000002

    セカンダリ リターン コード。少なくとも 1 つのノードが開始されましたが、ローカル LU ( TP_STARTED が発行されたとき) がアクティブ・ノードに構成されていません。 この問題は、次のいずれかである可能性があります。

  • ローカル LU を持つノードが開始されていません。

  • ローカル LU が構成されていません。

    AP_INVALID_VERB_SEGMENT
    プライマリ リターン コード。VCB がデータ セグメントの終わりを越えています。

    AP_STACK_TOO_SMALL
    プライマリ リターン コード。アプリケーションのスタック サイズが小さすぎて動詞を実行できません。 アプリケーションのスタック サイズを増やしてください。

    AP_CONV_BUSY
    プライマリ リターン コード。どの会話にも、一度に 1 つの未処理の会話動詞しか存在できません。 これは、ローカル TP に複数のスレッドがあり、複数のスレッドが同じ conv_idを使用して APPC 呼び出しを発行している場合に発生する可能性があります。

    AP_THREAD_BLOCKING
    プライマリ リターン コード。呼び出し元のスレッドは、既にブロック呼び出しにあります。

    AP_UNEXPECTED_DOS_ERROR
    プライマリ リターン コード。ローカル TP からの APPC 呼び出しの処理中に、オペレーティング システムから APPC にエラーが返されました。 オペレーティング システムのリターン コードは、secondary_rc 経由で返されます。 これは、Intel バイトスワップ順で表示されます。 問題が解決しない場合は、システム管理者に問い合わせてください。

解説

この動詞は、リモート TP との会話全体を実行するために、呼び出し元の TP によって発行されます。 リモート TP が会話の開始またはデータを拒否した場合、呼び出し元の TP は拒否の通知を受け取りません。

TP がこの動詞を発行すると、会話の状態は RESET になります。 状態の変更はありません。

SEND_CONVERSATIONのいくつかのパラメーターは EBCDIC または ASCII 文字列です。 TP は CSV CONVERT を使用して、文字列を 1 つの文字セットから他方の文字セットに変換できます。

通常、 mode_name の値は、呼び出された TP のノード用に構成され、パートナー LU との構成中に関連付けられているモードの名前と一致する必要があります。 呼び出された TP のノードのパートナー LU に関連付けられているモードの 1 つが暗黙的モードの場合、パートナー LU に関連付けられているモード名が mode_name の値と一致しない場合、2 つの LU 間で確立されたセッションは暗黙的モードになります。