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 の by RECEIVE_ALLOCATE によって返されます。

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

reserv2
予約済みフィールド。

reserv3
予約済みフィールド。

reserv4
予約済みフィールド。

max_len
指定されたパラメーター。 APPC が TP に通知を送信するようにトリガーするデータの長さを指定します。

reserv5
予約済みフィールド。

reserv6
予約済みフィールド。

reserv7
予約済みフィールド。

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

リターン コード

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

AP_DATA

2 次戻りコード。データは、プログラムが受け取るために使用できます。

AP_NOT_DATA

2 次戻りコード。データ以外の情報は、プログラムが受け取るために利用できます。

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

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

AP_BAD_CONV_ID

2 次戻りコード。 conv_id の値が、APPC によって割り当てられた会話識別子と一致しませんでした。

AP_BAD_TP_ID

2 次戻りコード。 tp_id の値が、APPC によって割り当てられた TP 識別子と一致しませんでした。

AP_INVALID_SEMAPHORE_HANDLE

2 次戻りコード。 sema パラメーターが有効な値に設定されていません。

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

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

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

AP_ALLOCATION_FAILURE_NO_RETRY

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

AP_ALLOCATION_FAILURE_RETRY

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

AP_CONVERSATION_TYPE_MISMATCH

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

AP_PIP_NOT_ALLOWED

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

AP_PIP_NOT_SPECIFIED_CORRECTLY

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

AP_SECURITY_NOT_VALID

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

AP_SYNC_LEVEL_NOT_SUPPORTED

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

AP_TP_NAME_NOT_RECOGNIZED

2 次戻りコード。パートナー LU は、割り当て要求で指定された TP 名を認識しません。

AP_TRANS_PGM_NOT_AVAIL_NO_RETRY

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

AP_TRANS_PGM_NOT_AVAIL_RETRY

2 次戻りコード。リモート 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 で ABEND が発生し、パートナー 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
    主な戻りコード。ERR_TYPEが RECEIVE、PENDING_POST、CONFIRM、 CONFIRM_SEND 、またはCONFIRM_DEALLOCATE状態の間に AP_SVCに設定 されたMC_SEND_ERRORを発行したパートナー TP (またはパートナー LU)。 パートナー TP に送信されたデータが切り捨てられなかった。

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

    AP_SVC_ERROR_TRUNC
    主な戻りコード。ERR_TYPEが RECEIVE、PENDING_POST、CONFIRM、 CONFIRM_SEND 、またはCONFIRM_DEALLOCATE状態の間に AP_SVCに設定 された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