Prepare_To_Receive (CPI-C)

Prepare_To_Receive呼び出し (関数名cmptr) は、ローカルプログラムのメッセージ交換の状態を送信から受信に変更します。

構文

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

パラメーター

conversation_ID
指定されたパラメーター。 メッセージ交換の識別子を指定します。 このパラメーターの値は Initialize_Conversation または Accept_Conversationによって返されました。

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

リターン コード

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

CM_OPERATION_NOT_ACCEPTED
プライマリリターンコード。このメッセージ交換での以前の操作は完了していません。

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

CM_PROGRAM_PARAMETER_CHECK
プライマリリターンコード。 conversation_ID によって指定された値が無効です。

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

  • メッセージ交換の状態が送信または SEND_PENDING ではありません。

  • 基本的な会話の場合、メッセージ交換は SEND 状態です。 ただし、プログラムは論理レコードの送信を完了できませんでした。

    これらのリターンコードは、メッセージ交換の準備の種類が CM_PREP_TO_RECEIVE_CONFIRM に設定されている場合、または [受信準備の種類] が [CM_PREP_TO_RECEIVE_SYNC_LEVEL] に設定されていて、メッセージ交換の同期レベルが CM_CONFIRM に設定されている場合に発生する可能性があります。

    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
    プライマリリターンコード。次のいずれかが発生しました。

  • 受信または確認の状態で、パートナープログラムは Send_Errorを発行しました。 送信されたが、まだ受信されていないデータは削除されます。

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

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

  • 永続的な状態により、メッセージ交換が途中で終了しました。 エラーが修正されるまで再試行しないでください。

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

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

    CM_DEALLOCATED_ABEND
    プライマリリターンコード。次のいずれかの理由により、メッセージ交換の割り当てが解除されました。

  • リモートプログラムが、型パラメーターが CM_DEALLOCATE_ABEND に設定されている 割り当て解除 を実行したか、リモートプログラムが異常終了したことが原因でリモート LU がこの状態になりました。 呼び出しが発行されたときにリモートプログラムのメッセージ交換が受信状態だった場合、ローカルプログラムによって送信され、リモートプログラムによって受信されていない情報は削除されます。

  • リモート TP は正常に終了しましたが、終了する前にメッセージ交換の割り当てを解除できませんでした。 リモート LU のノードサービスによって、リモート TP に代わってメッセージ交換が割り当て解除されます。

    CM_DEALLOCATED_ABEND_SVC
    プライマリリターンコード。次のいずれかの理由により、メッセージ交換の割り当てが解除されました。

  • パートナープログラムは、型パラメーターを ABEND_SVC に設定して、 割り当てを解除 しました。

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

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

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

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

    状態の変更

    メッセージ交換は、SEND または SEND_PENDING 状態である場合があります。

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

return_code 新しい状態
CM_OK RECEIVE
CM_PROGRAM_ERROR_PURGING RECEIVE
CM_SVC_ERROR_PURGING RECEIVE
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_DEALLOCATED_ABEND RESET
CM_RESOURCE_FAILURE_NO_RETRY RESET
CM_RESOURCE_FAILURE_RETRY RESET
CM_DEALLOCATED_ABEND_SVC RESET
CM_DEALLOCATED_ABEND_TIMER RESET
その他すべて 変更なし

この呼び出しでは、メッセージ交換の状態を変更する前に、次のいずれかと同等のものが実行されます。

  • 次のいずれかの条件に該当する場合は、 フラッシュ 呼び出しによってローカル lu の内容がパートナーの lu とプログラムに送信されます。

    • メッセージ交換の準備の種類が CM_PREP_TO_RECEIVE_FLUSH に設定されています。

    • メッセージ交換の準備の種類が CM_PREP_TO_RECEIVE_SYNC_LEVEL に設定され、メッセージ交換の同期レベルが CM_NONE に設定されています。

  • 次のいずれかの条件に該当する場合は、 確認 呼び出しによって、ローカル lu の内容がパートナープログラムに送信バッファーと確認要求として送信されます。

    • メッセージ交換の準備の種類が CM_PREP_TO_RECEIVE_CONFIRM に設定されています。

    • メッセージ交換の準備の種類が CM_PREP_TO_RECEIVE_SYNC_LEVEL に設定され、メッセージ交換の同期レベルが CM_CONFIRM に設定されています。

    受信準備の種類は Set_Prepare_To_Receive_Typeによって設定されます。同期レベルは Set_Sync_Levelによって設定されます。

    このメッセージ交換は、パートナープログラムが受信呼び出しのstatus_receivedパラメーターを通じて次のいずれかの値を受け取るまで、パートナープログラムの送信または SEND_PENDING に変更することはできません。

  • CM_SEND_RECEIVED

  • 確認またはSend_Errorの呼び出しで CM_CONFIRM_SEND_RECEIVED および応答する

解説

この呼び出しが正常に実行されると、ローカルプログラムはデータを受け取ることができます。