MC_SEND_DATA
MC_SEND_DATA動詞は、パートナー トランザクション プログラム (TP) に送信するために、ローカル論理ユニットの (LU) 送信バッファーにデータを配置します。
次の構造体では、 MC_SEND_DATA 動詞で使用される動詞制御ブロック (VCB) について説明します。
構文
struct mc_send_data {
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;
unsigned char data_type;
unsigned short int dlen;
unsigned char FAR * dptr ;
unsigned char type;
unsigned char reserv4;
};
メンバー
opcode
指定されたパラメーター。 動詞操作コード (AP_M_SEND_DATA) を指定します。
opext
指定されたパラメーター。 動詞操作拡張機能をAP_MAPPED_CONVERSATION指定します。
reserv2
予約済みフィールド。
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 することによって返されます。
rts_rcvd
返されたパラメーター。 受信要求インジケーターを提供します。
AP_YESは、パートナー TP が MC_REQUEST_TO_SENDを発行したことを示します。これにより、ローカル TP が会話を RECEIVE 状態に変更するように要求されます。 RECEIVE 状態に変更するには、ローカル TP で MC_PREPARE_TO_RECEIVE、 MC_RECEIVE_AND_WAIT、または MC_RECEIVE_AND_POSTを使用できます。
AP_NOは、パートナー TP が MC_REQUEST_TO_SENDを発行していないことを示します。
data_type
指定されたパラメーター。 同期ポイントがサポートされている場合に送信するデータの種類を指定します。 有効なパラメーターは次のとおりです。AP_APPLICATION
AP_USER_CONTROL_DATA
AP_PS_HEADER
dlen
指定されたパラメーター。 ローカル LU の送信バッファーに格納されるデータのバイト数を指定します。 範囲は 0 ~ 65535 です。dptr
指定されたパラメーター。 ローカル LU の送信バッファーに格納されるデータを含むバッファーのアドレスを指定します。Windows オペレーティング システムの場合、データ バッファーは静的データ領域またはグローバルに割り当てられた領域に存在できます。 データ バッファーは、この領域内に完全に収まる必要があります。
type
指定されたパラメーター。 TP がデータを送信し、1 つの API 呼び出し内で他の関数を実行できるようにします。 たとえば、MC_SEND_DATAを CONFIRM に設定された型と組み合わせて、MC_SEND_DATA発行した後にMC_CONFIRMを実行するのと同じ目的を達成できます。AP_SEND_DATA_CONFIRMは、 MC_SEND_DATA に続けて MC_CONFIRMに対応します。
AP_SEND_DATA_FLUSHは、 MC_SEND_DATA に続けて MC_FLUSHに対応します。
AP_SEND_DATA_DEALLOC_ABENDは 、AP_ABENDのdealloc_type を持つ MC_DEALLOCATE が続く MC_SEND_DATA に対応します。
AP_SEND_DATA_DEALLOC_FLUSHは 、MC_SEND_DATA に対応し、その後に AP_FLUSH のdealloc_typeを持つ MC_DEALLOCATE が続きます。
AP_SEND_DATA_DEALLOC_SYNC_LEVELは 、MC_SEND_DATA に対応し、その後に AP_SYNC_LEVEL のdealloc_typeを持つ MC_DEALLOCATE が続きます。
AP_SEND_DATA_P_TO_R_FLUSHは 、MC_SEND_DATA に対応し、その後に AP_FLUSH のptr_typeを持つ MC_PREPARE_TO_RECEIVE に対応します。
AP_SEND_DATA_P_TO_R_SYNC_LEVELは、MC_SEND_DATAに対応し、その後にAP_SYNC_LEVELのptr_typeとロックが AP_SHORT に設定されたMC_PREPARE_TO_RECEIVEに対応します。
リターン コード
AP_OK
プライマリ リターン コード。動詞は正常に実行されました。
AP_PARAMETER_CHECK
プライマリ リターン コード。パラメーター エラーのため、動詞は実行されませんでした。
AP_BAD_CONV_ID
セカンダリ リターン コード。 conv_id の値が、APPC によって割り当てられた会話識別子と一致しませんでした。
AP_BAD_TP_ID
セカンダリ リターン コード。 tp_id の値が、APPC によって割り当てられた TP 識別子と一致しませんでした。
AP_INVALID_DATA_SEGMENT
セカンダリ リターン コード。データ バッファーに指定された長さが、バッファーを格納するために割り当てられたセグメントより長かった。
AP_SEND_DATA_INVALID_TYPE
セカンダリ リターン コード。指定した型が APPC によって認識されませんでした。
AP_SEND_DATA_CONFIRM_SYNC_NONE
セカンダリ リターン コード。 型 CONFIRM は、 none のsync_level で割り当てられた会話では許可されません。
AP_STATE_CHECK
プライマリ リターン コード。動詞は無効な状態で発行されたため、実行されませんでした。
AP_SEND_DATA_NOT_SEND_STATE
セカンダリ リターン コード。ローカル TP が MC_SEND_DATA発行したが、会話が SEND 状態ではなかった。
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
主なリターン コード。必要なコンポーネントを読み込めなかったか、動詞の処理中に終了しました。 そのため、通信を行うことができませんでした。 是正措置については、システム管理者に問い合わせてください。この戻りコードを MC_ALLOCATEと共に使用すると、ローカル LU をサポートする通信システムが見つからなかったことを示している可能性があります。 (たとえば、 TP_STARTED で指定されたローカル LU エイリアスが正しくないか、構成されていません)。 lu_alias または mode_name が 8 文字未満の場合は、これらのフィールドに右側のスペースが入力されていることを確認する必要があることに注意してください。 MC_ALLOCATE 要求を 満たすことができるノードがないため、これらのパラメーターにスペースが入力されていない場合、このエラーが返されます。
複数のノードで構成された Microsoft Host Integration Server クライアント システムのこのリターン コードを生成MC_ALLOCATE、次の 2 つのセカンダリ リターン コードがあります。
0xF0000001
セカンダリ リターン コード。ノードが開始されていません。
0xF0000002
セカンダリ リターン コード。少なくとも 1 つのノードが開始されましたが、ローカル LU ( TP_STARTED が発行された場合) は、どのアクティブ ノードでも構成されていません。 この問題は、次のいずれかである可能性があります。
ローカル LU を持つノードが開始されていません。
ローカル LU が構成されていません。
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 は MC_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
主なリターン コード。次のいずれかの理由により、会話の割り当てが解除されました。dealloc_type が AP_ABEND に設定された MC_DEALLOCATE 発行されたパートナー TP。
パートナー TP が異常終了を検出し、パートナー LU が MC_DEALLOCATE 要求を送信しました。
注釈
TP がこの動詞を発行する場合、会話は SEND 状態である必要があります。 primary_rcに基づく状態の変更を次の表にまとめます。
primary_rc | 新しい状態 |
---|---|
AP_OK | 変更なし |
AP_ALLOCATION_ERROR | RESET |
AP_CONV_FAILURE_RETRY | RESET |
AP_CONV_FAILURE_NO_RETRY | RESET |
AP_DEALLOC_ABEND | RESET |
AP_DEALLOC_ABEND_PROG | RESET |
AP_DEALLOC_ABEND_SVC | RESET |
AP_DEALLOC_ABEND_TIMER | RESET |
AP_PROG_ERROR_PURGING | RECEIVE |
AP_SVC_ERROR_PURGING | RECEIVE |
パートナー TP が受信動詞を発行していないため、MC_SEND_DATAは無期限に待機することがあります。 この場合、送信バッファーがいっぱいになる可能性があります。
ローカル LU の送信バッファーで収集されたデータは、次のいずれかが発生すると、パートナー LU (およびパートナー TP) に送信されます。
送信バッファーがいっぱいになります。
ローカル TP は 、MC_FLUSH、 MC_CONFIRM、または MC_DEALLOCATE (または LU の送信バッファーをフラッシュするその他の動詞) を発行します。