TP_ENDED動詞は、呼び出し元トランザクション プログラムと呼び出されたトランザクション プログラム (TP) の両方によって発行され、TP が終了していることを APPC に通知します。
Microsoft® Windows® バージョン 3 の場合。x システムでは、この呼び出しのブロッキング バージョンではなく WinAsyncAPPC 関数を使用することをお勧めします。
次の構造体では、 TP_ENDED 動詞で使用される動詞制御ブロック (VCB) について説明します。
構文
struct tp_ended {
unsigned short opcode;
unsigned char opext;
unsigned char reserv2;
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned char tp_id[8];
unsigned char type;
};
メンバー
オペコード
指定されたパラメーター。 動詞操作コード (AP_TP_ENDED) を指定します。
opext
指定されたパラメーター。 動詞演算拡張機能を指定します。 このフィールドは、 TP_ENDED 動詞では使用されません。
reserv2
予約済みフィールド。
primary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定される主なリターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラー コードについては、リターン コードを参照してください。
secondary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定されるセカンダリ リターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラー コードについては、リターン コードを参照してください。
tp_id
指定されたパラメーター。 ローカル TP を識別します。 このパラメーターの値は、呼び出し元の TP の TP_STARTED または呼び出された TP のRECEIVE_ALLOCATE によって返されました。
タイプ
指定されたパラメーター。 実行する終了の種類を指定します。 使用できる値を次に示します。
AP_HARDは、TP のすべてのアクティブな動詞が終了することを示します。会話で使用されているセッションが終了します。 ローカル TP とパートナー TP の両方で、会話エラーのリターン コード (マップされた会話の場合はAP_DEALLOC_ABEND、基本的な会話の場合はAP_DEALLOC_ABEND_PROG) を受け取ることができます。
AP_SOFTは、TP がすべてのアクティブな動詞の完了を待機することを示します。会話で使用されているセッションはアクティブなままです。
リターン コード
AP_OK
プライマリ リターン コード。動詞が正常に実行されました。
AP_PARAMETER_CHECK
プライマリ リターン コード。パラメーター エラーのため、動詞が実行されませんでした。
AP_BAD_TP_ID
セカンダリ リターン コード。APPC は 、tp_id を割り当てられた TP 識別子として認識しませんでした。
AP_BAD_TYPE
セカンダリ リターン コード。指定された 型 の値が APPC によって認識されませんでした。
AP_COMM_SUBSYSTEM_ABENDED
プライマリ リターン コード。は、次のいずれかの条件を示します。
この会話で使用されたノードで、異常終了が発生しました。
TP と PU 2.1 ノード間の接続が切断されました (LAN エラー)。
TP のコンピューターの SnaBase で、異常終了が発生しました。
システム管理者は、エラー・ログを調べて、異常終了の理由を判別する必要があります。
AP_COMM_SUBSYSTEM_NOT_LOADED
プライマリ リターン コード。動詞の処理中に必要なコンポーネントを読み込んだり終了したりできませんでした。 したがって、通信は行われませんでした。 修正措置については、システム管理者に問い合わせてください。AP_INVALID_VERB_SEGMENT
プライマリ リターン コード。データ セグメントの末尾を超えて拡張された VCB。AP_STACK_TOO_SMALL
プライマリ リターン コード。アプリケーションのスタック サイズが小さすぎて動詞を実行できませんでした。 アプリケーションのスタック サイズを増やします。AP_TP_BUSY
プライマリ リターン コード。APPC が同じ TP に対して別の呼び出しを処理している間に、ローカル TP が APPC の呼び出しを発行しました。 これは、ローカル TP に複数のスレッドがあり、複数のスレッドが同じ tp_idを使用して APPC 呼び出しを発行している場合に発生する可能性があります。AP_THREAD_BLOCKING
プライマリ リターン コード。呼び出し元スレッドは既にブロック呼び出し中です。AP_UNEXPECTED_DOS_ERROR
プライマリ リターン コード。ローカル TP からの APPC 呼び出しの処理中に、オペレーティング システムから APPC にエラーが返されました。 オペレーティング システムのリターン コードは、 secondary_rcを介して返されます。 Intel のバイト スワップ順に表示されます。 問題が解決しない場合は、システム管理者に問い合わせてください。
注釈
TP_ENDEDに応答して、APPC は TP によって使用されるリソースを解放します。 この動詞を実行すると、TP 識別子は無効になります。TP はそれ以上 APPC 会話動詞を発行できません。
TP がこの動詞を発行すると、会話は任意の状態になります。
会話が SEND 状態の場合、 TP_ENDED は DEALLOCATE または MC_DEALLOCATE の機能を実行し、 dealloc_typeを AP_FLUSH に設定します。
会話が RESET または SEND 以外の状態の場合、 TP_ENDED は DEALLOCATE または MC_DEALLOCATE の機能を実行し、 dealloc_type を AP_ABEND (マップされた会話の場合) またはAP_ABEND_PROG (基本会話の場合) に設定します。
正常に実行された後 (primary_rc がAP_OK)、APPC 状態はありません。