MC_CONFIRMED動詞は、パートナー トランザクション プログラム (TP) からの確認要求に応答します。 ローカル TP が受信したデータのエラーを検出しなかったことをパートナー TP に通知します。 確認要求を発行する TP は確認を待機するため、 MC_CONFIRMED は 2 つの TP の処理を同期します。
次の構造体では、 MC_CONFIRMED 動詞で使用される動詞制御ブロック (VCB) について説明します。
構文
struct mc_confirmed {
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 rts_rcvd;
};
メンバー
オペコード
指定されたパラメーター。 動詞の操作コード (AP_M_CONFIRMED) を指定します。
opext
指定されたパラメーター。 動詞演算拡張機能 (AP_MAPPED_CONVERSATION) を指定します。
reserv2
予約済みフィールド。
primary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定される主なリターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラー コードについては、リターン コードを参照してください。
secondary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定されるセカンダリ リターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラー コードについては、リターン コードを参照してください。
tp_id
指定されたパラメーター。 ローカル TP を識別します。 このパラメーターの値は、呼び出し元 TP の TP_STARTEDまたは呼び出された TP のRECEIVE_ALLOCATE によって返されました。
conv_id
指定されたパラメーター。 2 つの TP 間で確立された会話を識別します。 このパラメーターの値は、呼び出し元の TP で MC_ALLOCATE するか、呼び出された TP のRECEIVE_ALLOCATE によって返されます。
rts_rcvd
返されたパラメーター。 パートナー TP が MC_REQUEST_TO_SEND発行したかどうかを示します。この場合、ローカル TP は会話を RECEIVE 状態に変更するよう要求します。
RECEIVE 状態に変更するには、ローカル TP で MC_PREPARE_TO_RECEIVE、 MC_RECEIVE_AND_WAIT、または MC_RECEIVE_AND_POSTを使用できます。
リターン コード
AP_OK
プライマリ リターン コード。動詞が正常に実行されました。
AP_PARAMETER_CHECK
プライマリ リターン コード。パラメーター エラーのため、動詞が実行されませんでした。
AP_BAD_CONV_ID
セカンダリ リターン コード。 conv_id の値が、APPC によって割り当てられた会話識別子と一致しませんでした。
AP_BAD_TP_ID
セカンダリ リターン コード。 tp_id の値が、APPC によって割り当てられた TP 識別子と一致しませんでした。
AP_STATE_CHECK
プライマリ リターン コード。無効な状態で発行されたため、動詞は実行されませんでした。
AP_CONFIRMED_BAD_STATE
セカンダリ リターン コード。会話が CONFIRM、CONFIRM_SEND、またはCONFIRM_DEALLOCATE状態ではありません。
AP_COMM_SUBSYSTEM_ABENDED
プライマリ リターン コード。は、次のいずれかの条件を示します。
この会話で使用されたノードで、異常終了が発生しました。
TP と PU 2.1 ノード間の接続が切断されました (LAN エラー)。
TP のコンピューターの SnaBase で、異常終了が発生しました。
システム管理者は、エラー・ログを調べて、異常終了の理由を判別する必要があります。
AP_COMM_SUBSYSTEM_NOT_LOADED
プライマリ リターン コード。動詞の処理中に必要なコンポーネントを読み込んだり終了したりできませんでした。 したがって、通信は行われませんでした。 修正措置については、システム管理者に問い合わせてください。AP_CONVERSATION_TYPE_MIXED
プライマリ リターン コード。TP は、基本的な会話動詞とマップされた会話動詞の両方を発行しました。 1 つの会話で発行できる型は 1 つだけです。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 がこの動詞を発行する場合、会話は次のいずれかの状態である必要があります。
確認する
CONFIRM_SEND
CONFIRM_DEALLOCATE
新しい状態は、古い状態 (ローカル TP が MC_CONFIRMED発行したときの会話の状態) によって決まります。 古い状態は、前の受信動詞の what_rcvd パラメーターの値によって示されます。 次の状態変更が可能です。
| 古い状態 | 新しい状態 |
|---|---|
| 確認する | 受ける |
| CONFIRM_SEND | 送信 |
| CONFIRM_DEALLOCATE | リセット |
確認要求
確認要求は、パートナー TP の次のいずれかの動詞によって発行されます。
MC_PREPARE_TO_RECEIVEptr_type がAP_SYNC_LEVELに設定されていて、会話の同期レベル ( MC_ALLOCATE によって確立) がAP_CONFIRM_SYNC_LEVEL
MC_DEALLOCATE dealloc_typeがAP_SYNC_LEVELに設定されていて、会話の同期レベル (MC_ALLOCATE によって確立) がAP_CONFIRM_SYNC_LEVEL
MC_SEND_DATA 型 が AP_SEND_DATA_CONFIRM に設定されていて、会話の同期レベル (MC_ALLOCATE によって確立) がAP_CONFIRM_SYNC_LEVEL
次のいずれかの動詞の what_rcvd パラメーターを使用して、ローカル TP によって確認要求が受信されます。
-
MC_CONFIRMED は、what_rcvdに次のいずれかの値 が含まれている 場合にのみ、ローカル TP によって発行されます。
AP_CONFIRM_WHAT_RECEIVED
AP_CONFIRM_SEND
AP_CONFIRM_DEALLOCATE
rtn_status パラメーターが AP_YES に設定されている場合、what_rcvdには次の値を含めることもできます。
AP_DATA_COMPLETE_CONFIRM
AP_DATA_COMPLETE_CONFIRM_SEND
AP_DATA_COMPLETE_CONFIRM_DEALL