Allocate (CPI-C)

Allocate 呼び出し (関数名 cmallc) は、現在の会話特性を使用して、パートナー プログラムとの会話を割り当てるために呼び出し元プログラムによって発行されます。 CPI-C は、ローカル論理ユニット (LU) とパートナー LU の間にセッションを割り当てることもできます (まだ存在しない場合)。

構文

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

パラメーター

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

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

リターン コード

CM_OK
主なリターン コード。呼び出しが正常に実行されました。

CM_OPERATION_NOT_ACCEPTED
主なリターン コード。この値は、この会話に対する以前の操作が不完全であることを示します。

CM_OPERATION_INCOMPLETE
主なリターン コード。会話で非ブロッキング操作が開始されましたが、完了していません。 プログラムは、 操作の 完了を待つWait_For_Conversationを 発行したり、 操作と会話を取り消Cancel_Conversationしたりできます。

CM_PARAMETER_ERROR
主なリターン コード。次のいずれかが発生しました。

  • サイド情報から派生したモード名、または Set_Mode_Name によって設定されたモード名が無効です。

  • モード名は SNA サービス・トランザクション・プログラム (TP) によって使用されます。呼び出し側プログラムには、このモード名を使用する権限がありません。 例として SNASVCMG があります。

  • サイド情報から派生したパートナー プログラムは SNA サービス TP です。ローカル プログラムには、SNA サービス TP に会話を割り当てるために必要な特権がありません。

  • パートナー プログラムは、基本的な会話に参加するサービス TP ですが、会話は CM_MAPPED_CONVERSATION に設定されています。

  • サイド情報から派生したパートナー LU 名、または Set_Partner_LU_Name によって設定されたパートナー LU 名が無効です。

    CM_PROGRAM_PARAMETER_CHECK
    主なリターン コード。 conversation_ID で指定された値が無効であるか、変数のアドレスが無効です。

    CM_PROGRAM_STATE_CHECK
    主なリターン コード。会話が INITIALIZE 状態ではありません。

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

    CM_UNSUCCESSFUL
    主なリターン コード。会話の戻り制御特性が CM_IMMEDIATE に設定され、ローカル LU に使用可能な競合勝者セッションがありませんでした。

    会話の return-control 型が CM_WHEN_SESSION_ALLOCATED に設定されている場合は、次のリターン コードを生成できます。

    CM_ALLOCATE_FAILURE_NO_RETRY
    主なリターン コード。構成エラーやセッション プロトコル エラーなどの永続的な条件のため、会話を割り当てることができません。 エラーを特定するには、システム管理者がエラー ログ ファイルを調べる必要があります。 エラーが修正されるまで、割り当てを再試行しないでください。

    CM_ALLOCATE_FAILURE_RETRY
    主なリターン コード。リンクエラーなどの一時的な状態のため、会話を割り当てませんでした。 エラーの理由は、システム エラー ログに記録されます。 割り当てを再試行してください。

    状態の変更

    Allocate が発行された場合、会話は INITIALIZE 状態である必要があります。

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

return_code 新しい状態
CM_OK SEND
CM_ALLOCATE_FAILURE_NO_RETRY RESET
CM_ALLOCATE_FAILURE_RETRY RESET
その他すべて 変更なし

注釈

割り当てられる会話の種類は、会話の種類の特性 (mapped または basic) に基づいています。

この呼び出しによって会話が割り当てられている場合、次の会話特性を変更することはできません。

  • 会話の種類

  • モード名

  • パートナー LU 名

  • パートナー プログラム名

  • コントロールを返す

  • 同期レベル

  • 会話のセキュリティ

  • ユーザー識別子

  • パスワード

    割り当て要求をすぐに送信するために、呼び出し元のプログラムは、割り当ての直後に Flush または Confirm を発行できます。 それ以外の場合、割り当て要求は、バッファーがいっぱいになるまで、ローカル LU 送信バッファー内の他のデータと共に蓄積されます。

    割り当て後に Confirm を発行することで、呼び出し元のプログラムは、割り当てが成功したかどうかをすぐに判断できます (会話の同期レベルが CM_CONFIRM に設定されている場合)。

    パートナー LU が Allocate によって生成された割り当て要求を拒否した場合、後続の呼び出しで呼び出し元のプログラムにエラーが返されます。