CONFIRM 動詞は、ローカル論理ユニット (LU) 送信バッファーの内容と確認要求をパートナー トランザクション プログラム (TP) に送信します。
次の構造体では、 CONFIRM 動詞で使用される動詞制御ブロックについて説明します。
構文
struct confirm {
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_B_CONFIRM) を指定します。
opext
指定されたパラメーター。 動詞演算拡張機能 (AP_BASIC_CONVERSATION) を指定します。
reserv2
予約済みフィールド。
primary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定される主なリターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラー コードについては、リターン コードを参照してください。
secondary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定されるセカンダリ リターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラー コードについては、リターン コードを参照してください。
tp_id
指定されたパラメーター。 ローカル TP を識別します。 このパラメーターの値は 、TP_STARTEDによって返されました。
conv_id
返されたパラメーター。 2 つの TP 間で確立された会話を識別します。
rts_rcvd
返されたパラメーター。 パートナー TP が REQUEST_TO_SEND発行したかどうかを示します。この場合、ローカル TP は会話を RECEIVE 状態に変更するよう要求します。
Microsoft Windows で動作している RECEIVE 状態に変更するには、ローカル TP で PREPARE_TO_RECEIVE、 RECEIVE_AND_WAIT、または RECEIVE_AND_POSTを使用できます。
リターン コード
AP_OK
プライマリ リターン コード。動詞が正常に実行されました。
AP_PARAMETER_CHECK
プライマリ リターン コード。パラメーター エラーのため、動詞が実行されませんでした。
AP_BAD_CONV_ID
セカンダリ リターン コード。 conv_id の値が、APPC によって割り当てられた会話識別子と一致しませんでした。
AP_BAD_TP_ID
セカンダリ リターン コード。 tp_id の値が、APPC によって割り当てられた TP 識別子と一致しませんでした。
AP_CONFIRM_ON_SYNC_LEVEL_NONE
セカンダリ リターン コード。ローカル TP は、同期レベルが AP_NONE の会話で CONFIRM を使用しようとしました。 ALLOCATE によって確立される同期レベルは、AP_CONFIRM_SYNC_LEVELする必要があります。
AP_STATE_CHECK
プライマリ リターン コード。無効な状態で発行されたため、動詞は実行されませんでした。
AP_CONFIRM_BAD_STATE
セカンダリ リターン コード。メッセージ交換が SEND 状態ではなかった。
AP_CONFIRM_NOT_LL_BDY
セカンダリ リターン コード。ローカル TP の会話が SEND 状態で、ローカル TP が論理レコードの送信を完了しませんでした。
AP_ALLOCATION_ERROR
プライマリ リターン コード。APPC が会話を割り当てませんでした。 会話の状態は RESET に設定されます。
このコードは、 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、またはAP_SYNCPT) をサポートしていないか、 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
プライマリ リターン コード。は、次のいずれかの条件を示します。
この会話で使用されたノードで、異常終了が発生しました。
TP と PU 2.1 ノード間の接続が切断されました (LAN エラー)。
TP のコンピューターの SnaBase で、異常終了が発生しました。
システム管理者は、エラー・ログを調べて、異常終了の理由を判別する必要があります。
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 は、err_typeがAP_PROG に設定された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_PROG
プライマリ リターン コード。次のいずれかの理由により、会話の割り当てが解除されました。パートナー TP は、dealloc_typeが AP_ABEND_PROGに設定された DEALLOCATE を発行しました。
パートナー TP が異常終了を検出し、パートナー LU が DEALLOCATE 要求を送信しました。
AP_DEALLOC_ABEND_SVC
プライマリ リターン コード。パートナー TP が DEALLOCATE を発行し、 dealloc_typeが AP_ABEND_SVC に設定されているため、会話の割り当てが解除されました。AP_DEALLOC_ABEND_TIMER
プライマリ リターン コード。パートナー TP が DEALLOCATE を発行し、 dealloc_typeが AP_ABEND_TIMER に設定されているため、会話の割り当てが解除されました。AP_SVC_ERROR_PURGING
プライマリ リターン コード。RECEIVE、PENDING_POST、CONFIRM、 CONFIRM_SEND 、またはCONFIRM_DEALLOCATE状態の間に AP_SVC に設定されたerr_typeでSEND_ERROR発行されたパートナー TP (またはパートナー LU)。 パートナー TP に送信されたデータが消去されている可能性があります。注釈
CONFIRM に応答して、パートナー TP は通常、エラーなしでデータを受信したことを確認するために CONFIRMED を発行します。 (パートナー TP でエラーが発生した場合は、 SEND_ERROR を発行するか、会話の割り当てを異常に解除します)。
TP は、ALLOCATE によって確立された会話の同期レベルがAP_CONFIRM_SYNC_LEVEL場合にのみ CONFIRM を発行できます。
TP がこの動詞を発行する場合、会話は SEND 状態である必要があります。 次の表に示す状態の変化は、 primary_rcの値に基づいています。
| primary_rc | 新しい状態 |
|---|---|
| AP_OK | 変更なし |
| AP_ALLOCATION_ERROR | リセット |
| AP_COMM_SUBSYSTEM_ABENDED AP_COMM_SUBSYSTEM_NOT_LOADED | RESET RESET |
| AP_CONV_FAILURE_RETRY AP_CONV_FAILURE_NO_RETRY | RESET RESET |
| AP_DEALLOC_ABEND AP_DEALLOC_ABEND_PROG AP_DEALLOC_ABEND_SVC AP_DEALLOC_ABEND_TIMER | リセット リセット リセット リセット |
| AP_PROG_ERROR_PURGING AP_SVC_ERROR_PURGING | RECEIVE RECEIVE |
CONFIRM は、パートナー TP からの応答を待機します。 応答は、パートナー TP の次のいずれかの動詞によって生成されます。
dealloc_typeを AP_ABEND_PROG、AP_ABEND_SVC、または AP_ABEND_TIMER に設定した DEALLOCATE
-
ALLOCATE 後に CONFIRM を発行することで、呼び出し元の TP は、割り当てが成功したかどうかをすぐに判別できます (synclevel が AP_CONFIRM_SYNC_LEVEL に設定されている場合)。
通常、 ALLOCATE 動詞の mode_name パラメーターの値は、呼び出された TP のノード用に構成され、パートナー LU との構成中に関連付けられているモードの名前と一致する必要があります。
呼び出された TP のノード上のパートナー LU に関連付けられているモードのいずれかが暗黙的モードの場合、パートナー LU に関連付けられているモード名が mode_nameの値と一致しない場合、2 つの LU 間で確立されたセッションは暗黙的モードになります。 詳細については、Host Integration Server のヘルプを参照してください。
ALLOCATE のいくつかのパラメーターは、EBCDIC または ASCII 文字列です。 TP では、共通サービス動詞 (CSV) CONVERT を使用して、文字列を 1 つの文字セットから他方の文字セットに変換できます。
ALLOCATE 要求を直ちに送信するために、呼び出し元の TP は ALLOCATE の直後に FLUSH または CONFIRM を発行できます。 それ以外の場合、 ALLOCATE 要求は、バッファーがいっぱいになるまで、ローカル LU の送信バッファー内の他のデータと共に蓄積されます。