MC_PREPARE_TO_RECEIVE

MC_PREPARE_TO_RECEIVE動詞は、ローカル トランザクション プログラム (TP) の会話の状態を SEND から RECEIVE に変更します。

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

構文

  
struct mc_prepare_to_receive {  
    unsigned short   opcode;  
    unsigned char    opext;  
    unsigned char    primary_rc;  
    unsigned short   reserv2;  
    unsigned long    secondary_rc;  
    unsigned char    tp_id[8];  
    unsigned long    conv_id;  
    unsigned char    ptr_type;  
    unsigned char    locks;  
};   

注釈

[メンバー]

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

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

reserv2
予約済みフィールド。

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

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

tp_id
指定されたパラメーター。 ローカル TP を識別します。 このパラメーターの値は、呼び出し元の TP で TP_STARTED するか、呼び出された TPのRECEIVE_ALLOCATE によって返されます。

conv_id
指定されたパラメーター。 会話識別子を提供します。 このパラメーターの値は、呼び出し元の TP で MC_ALLOCATE するか、呼び出された TP でRECEIVE_ALLOCATE することによって返されます。

ptr_type
指定されたパラメーター。 状態変更を実行する方法を指定します。

AP_FLUSHを使用して、会話の状態を RECEIVE に変更する前に、ローカル論理ユニット (LU) 送信バッファーの内容をパートナー LU (および TP) に送信します。

AP_SYNC_LEVEL値は、会話の同期レベル ( MC_ALLOCATEによって確立) を使用して、状態変更の実行方法を決定します。

会話の同期レベルがAP_NONE場合、APPC は、会話の状態を RECEIVE に変更する前に、ローカル LU の送信バッファーの内容をパートナー TP に送信します。 同期レベルがAP_CONFIRM_SYNC_LEVEL場合、APPC はローカル LU の送信バッファーの内容と確認要求をパートナー TP に送信します。 パートナー TP から確認を受け取ると、APPC は会話の状態を RECEIVE に変更します。 ただし、パートナー TP からエラーが報告された場合、状態は RECEIVE または RESET に変わります。 このトピックの「備考」を参照してください。

locks
指定されたパラメーター。 APPC がローカル TP に制御を返すタイミングを指定します。

このパラメーターは 、ptr_typeが AP_SYNC_LEVEL に設定され、 MC_ALLOCATEによって確立された会話の同期レベルがAP_CONFIRM_SYNC_LEVEL場合にのみ使用します。 (それ以外の場合、パラメーターは無視されます)。

  • AP_LONGは、パートナー TP からの確認と後続のデータがローカル LU に到着したときに、APPC がローカル TP に制御を返すことを示します。 (このメソッドを使用すると、ネットワークがより効率的に使用されますが、ローカル TP に制御を返すには、より長い時間が必要になります)。

  • AP_SHORTは、パートナー TP からの確認がローカル LU に到着したときに、APPC がローカル TP に制御を返したことを示します。

    リターン コード

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

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

    AP_BAD_CONV_ID

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

    AP_BAD_TP_ID

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

    AP_P_TO_R_INVALID_TYPE

    セカンダリ リターン コード。 ptr_type パラメーターが有効な値に設定されていません。

    AP_STATE_CHECK
    プライマリ リターン コード。動詞は無効な状態で発行されたため、実行されませんでした。

    AP_P_TO_R_NOT_SEND_STATE

    セカンダリ リターン コード。メッセージ交換が SEND 状態ではなかった。

    AP_P_TO_R_NOT_LL_BDY

    セカンダリ リターン コード。ローカル TP が論理レコードの送信を完了しませんでした。

    AP_ALLOCATION_ERROR
    プライマリ リターン コード。APPC で会話の割り当てに失敗しました。 会話の状態は RESET に設定されます。

    このコードは、 MC_ALLOCATE後に発行された動詞を介して返すことができます。

    AP_ALLOCATION_FAILURE_NO_RETRY

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

    AP_ALLOCATION_FAILURE_RETRY

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

    AP_CONVERSATION_TYPE_MISMATCH

    セカンダリ リターン コード。パートナー LU または TP は、割り当て要求で指定された会話の種類 (基本またはマップ) をサポートしていません。

    AP_PIP_NOT_ALLOWED

    セカンダリ リターン コード。割り当て要求で PIP データが指定されましたが、パートナー TP がこのデータを必要としないか、パートナー LU でサポートされていません。

    AP_PIP_NOT_SPECIFIED_CORRECTLY

    セカンダリ リターン コード。パートナー TP には PIP データが必要ですが、割り当て要求で PIP データが指定されていないか、パラメーターの数が正しくありません。

    AP_SECURITY_NOT_VALID

    セカンダリ リターン コード。割り当て要求で指定されたユーザー ID またはパスワードが、パートナー LU によって受け入れられなかった。

    AP_SYNC_LEVEL_NOT_SUPPORTED

    セカンダリ リターン コード。パートナー TP は、割り当て要求で指定された sync_level (AP_NONEまたはAP_CONFIRM_SYNC_LEVEL) をサポートしていないか、 sync_level が認識されませんでした。

    AP_TP_NAME_NOT_RECOGNIZED

    セカンダリ リターン コード。パートナー LU は、割り当て要求で指定された TP 名を認識しません。

    AP_TRANS_PGM_NOT_AVAIL_NO_RETRY

    セカンダリ リターン コード。リモート LU は、要求されたパートナー TP を開始できなかったため、割り当て要求を拒否しました。 条件は永続的です。 エラーの理由が、リモート ノードでログに記録されている可能性があります。 エラーが修正されるまで、割り当てを再試行しないでください。

    AP_TRANS_PGM_NOT_AVAIL_RETRY

    セカンダリ リターン コード。リモート LU は、要求されたパートナー TP を開始できなかったため、割り当て要求を拒否しました。 状態は一時的 (タイム アウトなど) である可能性があります。エラーの理由が、リモート ノードでログに記録されている可能性があります。 割り当てを再試行してください。

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

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

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

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

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

    AP_CONV_FAILURE_NO_RETRY
    主なリターン コード。セッション プロトコル エラーなどの永続的な状態のため、会話が終了しました。 システム管理者は、システム エラー ログを調べて、エラーの原因を特定する必要があります。 エラーが修正されるまで、会話を再試行しないでください。

    AP_CONV_FAILURE_RETRY
    主なリターン コード。一時的なエラーが発生したため、会話が終了しました。 TP を再起動して、問題が再び発生するかどうかを確認します。 その場合、システム管理者はエラー ログを調べて、エラーの原因を特定する必要があります。

    AP_CONVERSATION_TYPE_MIXED
    主なリターン コード。TP は、基本的な会話動詞とマップされた会話動詞の両方を発行しました。 1 つの会話で発行できる型は 1 つだけです。

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

    AP_PROG_ERROR_PURGING
    主なリターン コード。RECEIVE、PENDING、PENDING_POST、CONFIRM、CONFIRM_SEND、またはCONFIRM_DEALLOCATEの状態では、パートナー TP は MC_SEND_ERRORを発行します。 送信されたが、まだ受信されていないデータは消去されます。

    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 バイトスワップ順で表示されます。 問題が解決しない場合は、システム管理者に問い合わせてください。

    AP_DEALLOC_ABEND
    主なリターン コード。次のいずれかの理由により、会話の割り当てが解除されました。

  • dealloc_type が AP_ABEND に設定された MC_DEALLOCATE 発行されたパートナー TP。

  • パートナー TP が異常終了を検出し、パートナー LU が MC_DEALLOCATE 要求を送信しました。

    備考

    会話の状態を変更する前に、この動詞は次のいずれかと同等のものを実行します。

  • MC_FLUSH、ローカル LU の送信バッファーの内容をパートナー LU (および TP) に送信します。

  • MC_CONFIRM、ローカル LU の送信バッファーの内容と確認要求をパートナー TP に送信します。

    この動詞が正常に実行されると、ローカル TP はデータを受信できます。

    TP がこの動詞を発行する場合、会話は SEND 状態である必要があります。

    次の表に示す状態の変更は、 primary_rcの値に基づいています。

primary_rc 新しい状態
AP_OK RECEIVE
AP_ALLOCATION_ERROR RESET
AP_CONV_FAILURE_RETRY RESET
AP_CONV_FAILURE_NO_RETRY RESET
AP_DEALLOC_ABEND RESET
AP_DEALLOC_ABEND_PROG RESET
AP_DEALLOC_ABEND_SVC RESET
AP_DEALLOC_ABEND_TIMER RESET
AP_PROG_ERROR_PURGING RECEIVE
AP_SVC_ERROR_PURGING RECEIVE

会話は、パートナー TP が後続の受信動詞の what_rcvd パラメーターを介して次のいずれかの値を受け取るまで、パートナー TP の SEND 状態に変更されません。