確認 (CPI-C)

Confirm 呼び出し (関数名 cmcfm) は、ローカル論理装置 (LU) の送信バッファーの内容と確認要求をパートナー・プログラムに送信し、確認を待機します。 Microsoft Windows の場合は、すべての CPI-C 通信に対してバックグラウンド スレッドを実行し、ユーザー インターフェイスのみのフォアグラウンド スレッドを保持します。

構文

  
CM_ENTRY Confirm(   
  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_PROGRAM_STATE_CHECK に設定されている場合、この値は関係ありません。

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

リターンコード

CM_OK
プライマリ リターン コード。呼び出しが正常に実行されました。 パートナー プログラムが確認済み呼び出しを発行 しました

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

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

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

  • conversation_IDで指定された値が無効です。

  • ローカル プログラムは、同期レベルが CM_NONE の会話で Confirm を使用しようとしました。 同期レベルはCM_CONFIRMする必要があります。

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

  • 会話が SEND またはSEND_PENDING状態ではありません。

  • ローカル・プログラムの基本会話は SEND 状態であり、ローカル・プログラムは論理レコードの送信を完了しませんでした。

    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 に設定されています。 呼び出しの発行時にリモート・プログラムの会話が RECEIVE 状態であった場合、ローカル・プログラムによって送信され、リモート・プログラムがまだ受信していない情報は消去されます。

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

    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 変更なし
SEND 状態で呼び出しが発行されました 変更なし
SEND_PENDING状態で呼び出しが発行されました SEND
CM_PROGRAM_ERROR_PURGING RECEIVE
CM_SVC_ERROR_PURGING RECEIVE
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_RESOURCE_FAILURE_NO_RETRY リセット
CM_RESOURCE_FAILURE_RETRY リセット
CM_DEALLOCATED_ABEND リセット
CM_DEALLOCATED_ABEND_SVC リセット
CM_DEALLOCATED_ABEND_TIMER リセット
その他すべて 変更なし

注釈

[確認] に応答して、パートナー プログラムは通常、エラーなしでデータを受信したことを確認するために Confirmed を発行します。 (パートナー プログラムでエラーが発生した場合は、 Send_Error を発行するか、 割り当て解除 を使用して会話を異常に割り当て解除します)。

プログラムは、会話の同期レベルがCM_CONFIRM場合にのみ 確認 を発行できます。

パートナー プログラムからの応答を待機します。 応答は、パートナー プログラムで次のいずれかの CPI-C 呼び出しによって生成されます。

  • 確認済み

  • Send_Error

  • 5会話の割り当てを解除する型をCM_DEALLOCATE_ABENDに設定して割り当てを解除する