次の方法で共有


SEND_DATA

SEND_DATA動詞は、パートナー トランザクション プログラム (TP) に送信するために、ローカル論理ユニット (LU) 送信バッファーにデータを配置します。

次の構造体では、 SEND_DATA 動詞で使用される動詞制御ブロック (VCB) について説明します。

構文

  
struct 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;  
};   

メンバー

オペコード
指定されたパラメーター。 動詞操作コード (AP_B_SEND_DATA) を指定します。

opext
指定されたパラメーター。 動詞演算拡張機能 (AP_BASIC_CONVERSATION) を指定します。

reserv2
予約済みフィールド。

primary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定される主なリターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラー コードについては、リターン コードを参照してください。

secondary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定されるセカンダリ リターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラー コードについては、リターン コードを参照してください。

tp_id
指定されたパラメーター。 ローカル TP を識別します。

このパラメーターの値は、呼び出し元の TP の TP_STARTED または呼び出された TP のRECEIVE_ALLOCATE によって返されます。

conv_id
指定されたパラメーター。 会話識別子を提供します。

このパラメーターの値は、呼び出し元 TP の ALLOCATE または呼び出された TP のRECEIVE_ALLOCATE によって返されます。

rts_rcvd
返されたパラメーター。 受信要求インジケーターを提供します。

  • AP_YESは、パートナー TP が REQUEST_TO_SENDを発行したことを示します。これは、ローカル TP が会話を RECEIVE 状態に変更するよう要求します。 RECEIVE 状態に変更するには、ローカル TP で PREPARE_TO_RECEIVERECEIVE_AND_WAIT、または RECEIVE_AND_POSTを使用できます。

  • AP_NOは、パートナー TP が REQUEST_TO_SENDを発行しなかったことを示します。

    data_type
    指定されたパラメーター。 同期ポイントがサポートされている場合に送信するデータの種類を指定します。 有効なパラメーターは次のとおりです。

    AP_APPLICATION

    AP_USER_CONTROL_DATA

    AP_PS_HEADER

    dlen
    指定されたパラメーター。 ローカル LU の送信バッファーに格納されるデータのバイト数を指定します。 範囲は 0 から 65535 です。

    dptr
    指定されたパラメーター。 ローカル LU の送信バッファーに格納されるデータを含むバッファーのアドレスを指定します。

    Microsoft Windows オペレーティング システムの場合、データ バッファーは静的データ領域またはグローバルに割り当てられた領域に配置できます。 データ バッファーは、この領域内に完全に収まる必要があります。

    タイプ
    指定されたパラメーター。 TP がデータを送信し、1 つの API 呼び出し内で他の関数を実行できるようにします。 たとえば、 SEND_DATA を CONFIRM に設定した と組み合わせて、発行 SEND_DATA の後に CONFIRM を実行するのと同じ目的を達成できます。

  • AP_SEND_DATA_CONFIRMは、 SEND_DATA の後に CONFIRM が続く場合に対応します。

  • AP_SEND_DATA_FLUSHは、 SEND_DATA の後に FLUSH が続く場合に対応します。

  • AP_SEND_DATA_DEALLOC_ABENDは 、SEND_DATA の後に DEALLOCATE が続き、 AP_ABEND_PROGのdealloc_type に対応します。

  • AP_SEND_DATA_DEALLOC_FLUSHは 、SEND_DATA の後に DEALLOCATE が続き、 dealloc_typeのAP_FLUSH に対応します。

  • AP_SEND_DATA_DEALLOC_SYNC_LEVELは 、SEND_DATA の後に DEALLOCATE が続き、 AP_SYNC_LEVELのdealloc_type に対応します。

  • AP_SEND_DATA_P_TO_R_FLUSHは 、AP_FLUSHのptr_type を持つ PREPARE_TO_RECEIVE が続く SEND_DATA に対応します。

  • AP_SEND_DATA_P_TO_R_SYNC_LEVELは 、SEND_DATA に対応し、その後に AP_SYNC_LEVELptr_type を持つPREPARE_TO_RECEIVEが続き、 ロック がAP_SHORTに設定されます。

    reserv4
    予約済みフィールド。

リターン コード

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

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

AP_BAD_CONV_ID

セカンダリ リターン コード。 conv_id の値が、APPC によって割り当てられた会話識別子と一致しませんでした。

AP_BAD_LL

セカンダリ リターン コード。論理レコードの論理レコード長フィールドに無効な値 (0x0000、0x0001、0x8000、または0x8001) が含まれていました。 論理レコードの詳細については、 トランザクション・プログラム についてを参照してください。

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 は、 sync_level NONE で割り当てられた会話では許可されません。

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

AP_SEND_DATA_NOT_SEND_STATE

セカンダリ リターン コード。ローカル TP が SEND_DATA発行したが、会話が SEND 状態ではなかった。

AP_SEND_DATA_NOT_LL_BDY

セカンダリ リターン コード。TP が開始されましたが、論理レコードの送信が完了しませんでした。 これは、 パラメーターが次のいずれかである場合にのみ発生します。

AP_SEND_DATA_CONFIRM

AP_SEND_DATA_DEALLOC_FLUSH

AP_SEND_DATA_DEALLOC_SYNC_LEVEL

AP_SEND_DATA_P_TO_R_FLUSH

AP_SEND_DATA_P_TO_R_SYNC_LEVEL

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) をサポートしていないか、 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_COMM_SUBSYSTEM_NOT_LOADED
    プライマリ リターン コード。必要なコンポーネントを読み込めなかったか、動詞の処理中に終了しました。 したがって、通信は行われませんでした。 修正措置については、システム管理者に問い合わせてください。

    この戻りコードを ALLOCATE と共に使用すると、ローカル LU をサポートする通信システムが見つからなかったことを示している可能性があります。 (たとえば、 TP_STARTED で指定されたローカル LU エイリアスが正しくないか、構成されていません)。 lu_alias または mode_name が 8 文字未満の場合は、これらのフィールドに右側のスペースが入力されていることを確認する必要があります。 ALLOCATE 要求を満たすノードがないため、これらのパラメーターにスペースが入っていない場合、このエラーが返されます。

    ALLOCATE が複数のノードで構成された Host Integration Server クライアント システムに対してこのリターン コードを生成する場合、次の 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 は、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
    プライマリ リターン コード。パートナー TP (またはパートナー LU) は、RECEIVE、PENDING_POST、CONFIRM、 CONFIRM_SEND 、またはCONFIRM_DEALLOCATE状態の間、 err_type がAP_SVCに設定されたSEND_ERROR動詞を発行しました。 パートナー TP に送信されたデータが消去されている可能性があります。

注釈

TP がこの動詞を発行する場合、会話は SEND 状態である必要があります。 primary_rcに基づく状態の変化を次の表にまとめます。

primary_rc 新しい状態
AP_OK 変更なし
AP_ALLOCATION_ERROR リセット
AP_CONV_FAILURE_RETRY リセット
AP_CONV_FAILURE_NO_RETRY リセット
AP_DEALLOC_ABEND リセット
AP_DEALLOC_ABEND_PROG リセット
AP_DEALLOC_ABEND_SVC リセット
AP_DEALLOC_ABEND_TIMER リセット
AP_PROG_ERROR_PURGING 受ける
AP_SVC_ERROR_PURGING 受ける

パートナー TP が受信動詞を発行していないため、SEND_DATAは無期限に待機する可能性があります。 この場合、送信バッファーがいっぱいになる可能性があります。

ローカル LU の送信バッファーで収集されたデータは、次のいずれかが発生すると、パートナー LU (およびパートナー TP) に送信されます。

  • 送信バッファーがいっぱいになります。

  • ローカル TP は FLUSH、CONFIRMDEALLOCATE (または LU の送信バッファーをフラッシュするその他の動詞) を発行します。