Send_Error (CPI-C)

Send_Error呼び出し (関数名 cmserr) は、ローカル・プログラムがアプリケーション・レベルのエラーを検出したことをパートナー・プログラムに通知します。

構文

  
CM_ENTRY Send_Error(   
  unsigned char FAR *conversation_ID,    
    CM_INT32 FAR *request_to_send_received,    
  CM_INT32 FAR *return_code              
);  

パラメーター

conversation_ID
指定されたパラメーター。 会話の識別子を指定します。 このパラメーターの値は 、Initialize_Conversation または Accept_Conversationによって返されました。

request_to_send_received
返されたパラメーター。 受信要求インジケーターを指定します。 次のいずれかの値になります。

CM_REQ_TO_SEND_RECEIVED
Request_To_Send発行されたパートナー プログラムは、会話を RECEIVE 状態に変更するようローカル プログラムに要求します。

CM_REQ_TO_SEND_NOT_RECEIVED
パートナー プログラムは Request_To_Sendを発行しませんでした。 この値は、 return_codeが CM_PROGRAM_PARAMETER_CHECK または CM_STATE_CHECK に設定されている場合は関係ありません。

return_code
この呼び出しから返されたコード。 有効なリターン コードについては、このトピックの後半で説明します。

リターン コード

return_codeの値は、呼び出しが発行されたときの会話の状態によって異なります。

SEND 状態

プログラムがメッセージ交換を SEND 状態で呼び出す場合は、次のリターン コードを使用できます。

CM_OK
プライマリ リターン コード。呼び出しが正常に実行されました。

CM_OPERATION_NOT_ACCEPTED
プライマリ リターン コード。この会話に対する前の操作が不完全です。

CM_OPERATION_INCOMPLETE
プライマリ リターン コード。操作が完了せず (処理モードは非ブロッキングのみ)、まだ進行中です。 プログラムは Wait_For_Conversation を発行して操作の完了を待機するか、操作と会話を取り消す Cancel_Conversation できます。 Specify_Windows_Handleが呼び出された場合、アプリケーションは Microsoft® Windows® メッセージによる通知を待機し、Wait_For_Conversationを呼び出す必要はありません。

CM_PRODUCT_SPECIFIC_ERROR
プライマリ リターン コード。製品固有のエラーが発生し、製品エラー ログに記録されています。

CM_CONVERSATION_TYPE_MISMATCH
プライマリ リターン コード。パートナー論理ユニット (LU) またはプログラムは、割り当て要求で指定された会話の種類 (基本またはマップ) をサポートしていません。

CM_PIP_NOT_SPECIFIED_CORRECTLY
プライマリ リターン コード。割り当て要求は、CPI-C LU 6.2 以外のトランザクション プログラム (TP) によって拒否されました。 パートナー・プログラムには、CPI-C ではサポートされていない 1 つ以上の PIP データ変数が必要です。

CM_SECURITY_NOT_VALID
プライマリ リターン コード。割り当て要求で指定されたユーザー ID またはパスワードが、パートナー LU によって受け入れられなかった。

CM_SYNC LEVEL_NOT_SUPPORTED_PGM
プライマリ リターン コード。パートナー プログラムは、割り当て要求で指定された同期レベルをサポートしていません。

CM_TPN_NOT_RECOGNIZED
プライマリ リターン コード。パートナー LU は、割り振り要求で指定されたプログラム名を認識しません。

CM_TP_NOT_AVAILABLE_NO_RETRY
プライマリ リターン コード。永続的な条件のため、パートナー LU は割り振り要求で指定されたプログラムを開始できません。 エラーの理由が、リモート ノードでログに記録されている可能性があります。 エラーが修正されるまで、割り当てを再試行しないでください。

CM_TP_NOT_AVAILABLE_RETRY
プライマリ リターン コード。一時的な条件のため、パートナー LU は割り当て要求で指定されたプログラムを開始できません。 エラーの理由が、リモート ノードでログに記録されている可能性があります。 割り当てを再試行してください。

CM_PROGRAM_ERROR_PURGING
プライマリ リターン コード。次のいずれかが発生しました。

  • RECEIVE または CONFIRM 状態の間に、パートナー プログラムが Send_Error発行しました。 送信されたデータがまだ受信されていないデータは消去されます。

  • エラーの方向がCM_RECEIVE_ERRORに設定された状態SEND_PENDING、パートナー プログラムは Send_Error発行します。 データが消去されませんでした。

    CM_RESOURCE_FAILURE_NO_RETRY
    プライマリ リターン コード。次のいずれかが発生しました。

  • 永続的な状態のため、会話が途中で終了しました。 エラーが修正されるまで再試行しないでください。

  • パートナー プログラムは、正常に終了する前に会話の割り当てを解除しませんでした。

    CM_RESOURCE_FAILURE_RETRY
    プライマリ リターン コード。モデム障害などの一時的な状態が原因で、メッセージ交換が途中で終了しました。 会話を再試行します。

    CM_DEALLOCATED_ABEND
    プライマリ リターン コード。次のいずれかの理由で、会話の割り当てが解除されました。

  • リモート・プログラムが、タイプ・パラメーター・セットを使用してCM_DEALLOCATE_ABEND割 り振り解除 を発行したか、リモート・プログラムの異常終了状態のためにリモート LU が割り当てを解除しました。 呼び出しの発行時にリモート・プログラムの会話が RECEIVE 状態であった場合、ローカル・プログラムによって送信され、リモート・プログラムによってまだ受信されていない情報は消去されます。

  • リモート TP は正常に終了しましたが、終了する前に会話の割り当てを解除しませんでした。 リモート LU のノード サービスは、リモート TP に代わって会話の割り当てを解除しました。

    CM_DEALLOCATED_ABEND_SVC
    プライマリ リターン コード。次のいずれかの理由で、会話の割り当てが解除されました。

  • 型パラメーターが ABEND_SVC に設定された状態で、パートナー プログラムによって 割り当て解除 が発行されました。

  • パートナー プログラムは、終了する前に会話の割り当てを解除しませんでした。

    この呼び出しがローカル・プログラムによって発行されたときに、パートナー・プログラムのメッセージ交換が RECEIVE 状態の場合、ローカル・プログラムによって送信され、まだパートナー・プログラムによって受信されていないデータは消去されます。

    CM_DEALLOCATED_ABEND_TIMER
    プライマリ リターン コード。パートナー プログラムが型パラメーターを ABEND_TIMER に設定して 割り当て解除 を発行したため、会話の割り当てが解除されました。 この呼び出しがローカル・プログラムによって発行されたときに、パートナー・プログラムのメッセージ交換が RECEIVE 状態の場合、ローカル・プログラムによって送信され、まだパートナー・プログラムによって受信されていないデータは消去されます。

    CM_SVC_ERROR_PURGING
    プライマリ リターン コード。が SEND 状態の場合、タイプ パラメーターが SVC に設定 された状態 でパートナー プログラムまたはパートナー LU がSend_Error発行されます。 パートナー プログラムに送信されたデータが消去されている可能性があります。

    RECEIVE 状態

    呼び出しが RECEIVE 状態で発行された場合、次の戻りコードが可能です。

    CM_OK
    プライマリ リターン コード。受信情報は、 Send_Error 呼び出しが RECEIVE 状態で発行されると消去されるため、次の代わりにCM_OKが生成されます。

  • CM_PROGRAM_ERROR_NO_TRUNC

  • CM_PROGRAM_ERROR_PURGING

  • CM_SVC_ERROR_NO_TRUNC

  • CM_SVC_ERROR_PURGING

  • CM_PROGRAM_ERROR_TRUNC

  • CM_SVC_ERROR_TRUNC (基本的な会話のみ)

  • CM_PRODUCT_SPECIFIC_ERROR

  • CM_RESOURCE_FAILURE_NO_RETRY

  • CM_RESOURCE_FAILURE_RETRY

    これらの戻りコードの詳細については、「 CPI-C 共通戻りコード」を参照してください。

    CM_DEALLOCATED_NORMAL
    主なリターン コード。受信情報は RECEIVE 状態で Send_Error 発行されると消去されるため、次の代わりにCM_DEALLOCATED_NORMALが生成されます。

  • CM_CONVERSATION_TYPE_MISMATCH

  • CM_PIP_NOT_SPECIFIED_CORRECTLY

  • CM_SECURITY_NOT_VALID

  • CM_SYNC_LEVEL_NOT_SUPPORTED_PGM

  • CM_TPN_NOT_RECOGNIZED

  • CM_TP_NOT_AVAILABLE_NO_RETRY

  • CM_TP_NOT_AVAILABLE_RETRY

  • CM_DEALLOCATED_ABEND

  • CM_DEALLOCATED_ABEND_SVC

  • CM_DEALLOCATED_ABEND_TIMER

    SEND_PENDING状態

    呼び出しがSEND_PENDING状態で発行された場合は、次のリターン コードが可能です。

  • CM_OK (プライマリ リターン コード。呼び出しが正常に実行されました)。

  • CM_PRODUCT_SPECIFIC_ERROR

  • CM_PROGRAM_ERROR_PURGING

  • CM_RESOURCE_FAILURE_NO_RETRY

  • CM_RESOURCE_FAILURE_RETRY

  • CM_DEALLOCATED_ABEND

  • CM_DEALLOCATED_ABEND_SVC

  • CM_DEALLOCATED_ABEND_TIMER

  • CM_SVC_ERROR_PURGING

    これらの戻りコードの詳細については、 CPI-C 共通戻りコードを参照してください。

    CONFIRM、CONFIRM_SEND、または CONFIRM_DEALLOCATE State

    CONFIRM、CONFIRM_SEND、または CONFIRM_DEALLOCATE 状態で呼び出しが発行された場合は、次のリターン コードを使用できます。

  • CM_OK (プライマリ リターン コード。呼び出しが正常に実行されました)。

  • CM_PRODUCT_SPECIFIC_ERROR

  • CM_RESOURCE_FAILURE_NO_RETRY

  • CM_RESOURCE_FAILURE_RETRY

    これらの戻りコードの詳細については、 CPI-C 共通戻りコードを参照してください。

    その他の状態

    RESET または INITIALIZE 状態のメッセージ交換で Send_Error を発行することは無効です。 次のリターン コードを使用できます。

    CM_PROGRAM_PARAMETER_CHECK
    主なリターン コード。 conversation_ID で指定された値が無効です。

    CM_PROGRAM_STATE_CHECK
    主なリターン コード。会話の状態が SEND、RECEIVE、CONFIRM、CONFIRM_SEND、CONFIRM_DEALLOCATE、またはSEND_PENDINGではありません。

    状態の変更

    メッセージ交換は、INITIALIZE または RESET 以外の任意の状態にすることができます。

    次の表に示す状態の変更は、 return_code パラメーターの値に基づいています。

return_code 新しい状態
CM_OK SEND
CM_CONVERSATION_TYPE_MISMATCH RESET
CM_PIP_NOT_SPECIFIED_CORRECTLY RESET
CM_SECURITY_NOT_VALID RESET
CM_SYNC_LEVEL_NOT_SUPPORTED_PGM RESET
CM_TPN_NOT_RECOGNIZED RESET
CM_TP_NOT_AVAILABLE_NO_RETRY RESET
CM_TP_NOT_AVAILABLE_RETRY RESET
CM_RESOURCE_FAILURE_RETRY RESET
CM_RESOURCE_FAILURE_NO_RETRY RESET
CM_DEALLOCATED_ABEND RESET
CM_DEALLOCATED_ABEND_PROG RESET
CM_DEALLOCATED_ABEND_SVC RESET
CM_DEALLOCATED_ABEND_TIMER RESET
CM_DEALLOCATED_NORMAL RESET
CM_PROGRAM_ERROR_PURGING RECEIVE
CM_SVC_ERROR_PURGING RECEIVE
その他すべて 変更なし

この呼び出しが正常に実行されると、会話はローカル プログラムの場合は SEND 状態になり、パートナー プログラムの場合は RECEIVE 状態になります。

基本的な会話では、ローカル プログラムは Set_Log_Data を使用して、エラー ログ データをパートナー LU に送信し、ローカル エラー ログに追加することを指定できます。 メッセージ交換ログのデータ長の特性が 0 より大きい場合、LU によってデータが書式設定され、送信バッファーに格納されます。

Send_Errorが完了すると、ログ データの長さが 0 に設定され、ログ データが null に設定されます。

プログラムが Send_Errorを発行したときにメッセージ交換が RECEIVE 状態の場合、受信データは CPI-C によって消去されます。 このデータには次が含まれます。

  • Send_Dataによって送信されるデータ。

  • 確認要求。

  • 会話の割り当て解除の種類が CM_DEALLOCATE_CONFIRM に設定されている場合、または同期レベルが CM_CONFIRM に設定されたCM_DEALLOCATE_SYNC_LEVEL場合、割り当て解除要求。

    CPI-C では、受信要求から送信へのインジケーターは要求されません。

    メッセージ交換がSEND_PENDING状態の場合、ローカル・プログラムは Set_Error_Direction を発行して、エラーが、受信したデータから、またはデータを正常に受信した後のローカル・プログラムの処理によって報告されたかどうかを指定できます。

注釈

ローカル プログラムは 、受信 したデータで発生したエラーをパートナー プログラムに通知したり、確認要求を拒否したり、送信中の不完全な論理レコードを切り捨てたりするなどの目的で、Send_Errorを使用できます。

Send_Error ローカル LU 送信バッファーをフラッシュし、パートナー プログラムに送信バッファーの内容とエラー通知を送信します。

エラー通知は、次のいずれかの return_code 値としてパートナーに送信されます。

  • CM_PROGRAM_ERROR_TRUNC

  • CM_PROGRAM_ERROR_NO_TRUNC

  • CM_PROGRAM_ERROR_PURGING