MC_POST_ON_RECEIPT

MC_POST_ON_RECEIPT動詞を使用すると、データまたは状態がローカル論理ユニット (LU) に到着したときに、アプリケーションが通知を同時に受信せずに、登録して通知を受け取ることができます。 この動詞は、RECEIVE 状態の間にのみ発行でき、会話状態の変更は発生しません。

トランザクション プログラム (TP) がこの動詞を発行すると、APPC はすぐに TP に制御を返します。 指定した条件が満たされると、 sema パラメーターで指定された Win32® イベントが通知され、動詞が完了します。 次に、TP は動詞制御ブロック (VCB) のリターン コードを調べて、データまたは状態通知がローカル LU に到着したかどうかを判断し、実際にデータまたは状態通知を受信するために MC_RECEIVE_IMMEDIATE または MC_RECEIVE_AND_WAIT 動詞を発行します。

MC_POST_ON_RECEIPT動詞は、LU タイプ 6.2 の IBM トランザクション・プログラマーズ・マニュアルで説明されているように、POST_ON_RECEIPT動詞と TEST 動詞の両方を実装します。

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

構文

  
struct mc_post_on_receipt {  
    unsigned short   opcode;  
    unsigned char    opext;  
    unsigned char    reserv1;  
    unsigned char    primary_rc;  
    unsigned long    secondary_rc;  
    unsigned char    tp_id[8];  
    unsigned long    conv_id;  
    unsigned short   reserv2;  
    unsigned char    reserv3;  
    unsigned char    reserv4;  
    unsigned short   max_len;  
    unsigned short   reserv5;  
    unsigned char *  reserv6;  
    unsigned char    reserv7[5];  
    unsigned long    sema;  
};   

メンバー

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

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

reserv1
予約済みフィールド。

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 することによって返されます。

reserv2
予約済みフィールド。

reserv3
予約済みフィールド。

reserv4
予約済みフィールド。

max_len
指定されたパラメーター。 通知を TP に投稿するために APPC をトリガーするデータの長さを指定します。

reserv5
予約済みフィールド。

reserv6
予約済みフィールド。

reserv7
予約済みフィールド。

Sema
指定されたパラメーター。 Win32 イベントのハンドルを指定します。 イベントは TP によって作成されている必要があり、TP は呼び出しが行われる前と動詞が完了した後にリセットされるようにします。

リターン コード

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

AP_DATA

セカンダリ リターン コード。データは、プログラムが受け取るために使用できます。

AP_NOT_DATA

セカンダリ リターン コード。データ以外の情報は、プログラムが受け取るために使用できます。

AP_CANCELLED
主なリターン コード。動詞が取り消されました。

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

AP_BAD_CONV_ID

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

AP_BAD_TP_ID

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

AP_INVALID_SEMAPHORE_HANDLE

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

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

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

セカンダリ リターン コード。割り当て要求で指定されたユーザー識別子またはパスワードが、パートナー 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_COMM_SUBSYSTEM_NOT_LOADED
    プライマリ リターン コード。動詞の処理中に、必要なコンポーネントを読み込めなかったか、終了できませんでした。 そのため、通信を行うことができませんでした。 是正措置については、システム管理者に問い合わせてください。

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

  • パートナー TP が MC_DEALLOCATE発行しました。

  • パートナー TP で異常終了が発生し、パートナー LU から MC_DEALLOCATE 要求が送信されました。

    AP_DEALLOC_NORMAL
    主なリターン コード。パートナー TP は、確認を要求せずに会話の割り当てを解除し、 dealloc_type 次のいずれかに設定 されたMC_DEALLOCATE を発行しました。

  • AP_CONFIRM_SYNC_LEVEL

  • AP_FLUSH

  • メッセージ交換の同期レベルが AP_NONE として指定されたAP_SYNC_LEVEL

    AP_PROG_ERROR_NO_TRUNC
    主なリターン コード。会話が SEND 状態の間に、パートナー TP が MC_SEND_ERROR を発行しました。 データは切り捨てられませんでした。

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

    AP_PROG_ERROR_TRUNC
    主なリターン コード。会話が SEND 状態の間に、パートナー TP が MC_SEND_ERROR を発行しました。 データは切り捨てられました。

    AP_SVC_ERROR_NO_TRUNC
    主なリターン コード。RECEIVE、PENDING_POST、CONFIRM、 CONFIRM_SEND 、または CONFIRM_DEALLOCATE 状態の間 にAP_SVC に設定err_type MC_SEND_ERROR発行されたパートナー TP (またはパートナー LU)。 パートナー TP に送信されたデータは切り捨てされませんでした。

    AP_SVC_ERROR_PURGING
    主なリターン コード。RECEIVE、PENDING_POST、CONFIRM、 CONFIRM_SEND 、または CONFIRM_DEALLOCATE 状態の間 にAP_SVC に設定err_type MC_SEND_ERROR発行されたパートナー TP (またはパートナー LU)。 パートナー TP に送信されたデータが削除された可能性があります。

    AP_SVC_ERROR_TRUNC
    主なリターン コード。RECEIVE、PENDING_POST、CONFIRM、 CONFIRM_SEND 、または CONFIRM_DEALLOCATE 状態の間 にAP_SVC に設定err_type MC_SEND_ERROR発行されたパートナー TP (またはパートナー LU)。 パートナー TP に送信されたデータが切り捨てられている可能性があります。

注釈

MC_POST_ON_RECEIPT動詞は未処理ですが、同じ会話で次の動詞を発行できます。

GET_ATTRIBUTES

GET_TYPE

MC_DEALLOCATE

MC_RECEIVE_AND_WAIT

MC_RECEIVE_IMMEDIATE

MC_REQUEST_TO_SEND

MC_SEND_ERROR

MC_TEST_RTS

TP_ENDED

非同期 MC_POST_ON_RECEIPT 動詞が完了する前に次のいずれかの動詞を発行すると、 MC_POST_ON_RECEIPT 動詞が取り消されます (Win32 イベントが通知され、動詞制御ブロックの主なリターン コードが AP_CANCELLED に設定されます)。

MC_DEALLOCATE

MC_RECEIVE_AND_WAIT

MC_RECEIVE_IMMEDIATE

MC_SEND_ERROR

TP_ENDED