Prepare_To_Receive (CPI-C)

Prepare_To_Receive呼び出し (関数名 cmptr) は、ローカル プログラムの会話の状態を SEND から RECEIVE に変更します。

構文

  
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 または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
    主なリターン コード。割り当て要求で指定されたユーザー識別子またはパスワードが、パートナー 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 状態の場合、パートナー プログラムまたはパートナー LU は、型パラメーターを 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
その他すべて 変更なし

会話の状態を変更する前に、この呼び出しは次のいずれかに相当する処理を実行します。

  • Flush 呼び出し。次のいずれかの条件に該当する場合は、ローカル LU 送信バッファーの内容をパートナー LU およびプログラムに送信します。

    • メッセージ交換の受信準備の種類は CM_PREP_TO_RECEIVE_FLUSH に設定されます。

    • メッセージ交換の受信準備の種類は CM_PREP_TO_RECEIVE_SYNC_LEVEL に設定され、会話の同期レベルは CM_NONE に設定されます。

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

    • メッセージ交換の受信準備の種類は、CM_PREP_TO_RECEIVE_CONFIRMに設定されます。

    • メッセージ交換の受信準備の種類は CM_PREP_TO_RECEIVE_SYNC_LEVEL に設定され、会話の同期レベルは CM_CONFIRM に設定されます。

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

    スレッドは、パートナー プログラムが Receive 呼び出しの status_received パラメーターを介して次のいずれかの値を受け取るまで、パートナー プログラムの SEND またはSEND_PENDINGに変更できません。

  • CM_SEND_RECEIVED

  • 確認みまたはSend_Error通話でCM_CONFIRM_SEND_RECEIVEDと返信

注釈

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