|
|
TPENQUEUE(3cbl)
名前
TPENQUEUE() - メッセージをキューに登録するルーチン
形式
01 TPQUEDEF-REC.
COPY TPQUEDEF.
01 TPTYPE-REC.
COPY TPTYPE.
01 DATA-REC.
COPY User data.
01 TPSTATUS-REC.
COPY TPSTATUS.
CALL "TPENQUEUE" USING TPQUEDEF-REC TPTYPE-REC DATA-REC TPSTATUS-REC.
機能説明
TPENQUEUE() は、キュー・スペース QSPACE-NAME 内の QNAME で指定されるキューにメッセージを格納します。 キュー・スペースは、キューを集めたもので、そのうちの 1 つのキューが QNAME でなければなりません。
メッセージが BEA Tuxedo ATMI のサーバを対象としている場合、QNAME は、サーバによって提供されるサービスの名前と一致します。 システムが提供するサーバである TMQFORWARD(5) は、メッセージをキューから取り出し、キューと同じ名前のサービスを提供するサーバにそのメッセージを転送するデフォルトの機構となります。 発信元が応答を期待していた場合、特に指定されていなければ、転送されたサービス要求の応答は発信元のキューに格納されます。 発信元は、後で応答メッセージをキューから取り出します。 キューは、任意の 2 つの BEA Tuxedo ATMI のプロセス間 (クライアントやサーバ) における信頼性の高いメッセージ転送機構としても使用できます。 この場合、キューの名前はサービス名とは一致せず、メッセージ転送のための名前に関連します。
メッセージのデータ部は、DATA-REC によって指定されます。TPTYPE-REC 内の LEN は、キューに登録する DATA-REC の大きさを指定します。 ただし、DATA-REC が長さの指定を必要としないタイプのレコードである場合 LEN は無視されます (0 でかまいません)。 TPTYPE-REC 内の REC-TYPE が SPACES の場合には、DATA-REC および LEN は無視され、データ部なしでメッセージがキューに登録されます。 TPTYPE-REC 内の REC-TYPE および SUB-TYPE は、QSPACE-NAME が認識する REC-TYPE および SUB-TYPE のいずれかと一致しなければなりません。
メッセージは、QSPACE-NAME 用に定義された優先順位が事前の TPSPRIO() の呼び出しによって無効化されていないかぎり、QSPACE-NAME 用の優先順位でキューに登録されます。
呼び出し元がトランザクションにあり、TPTRAN が設定されている場合は、メッセージは、トランザクション・モードでキューに登録されます。 この結果、TPENQUEUE() が正常終了して呼び出し元のトランザクションが正常にコミットされると、メッセージは、トランザクションの完了後に処理されることが保証されます。 呼び出し元のトランザクションが、明示的に、またはトランザクション・タイムアウトあるいはなんらかの通信エラーの結果としてロールバックされると、メッセージはキューから削除されます。つまり、キューへのメッセージの登録もロールバックされます。 同じトランザクション内で同じメッセージの登録と取り出しを行うことはできません。
呼び出し元がトランザクション・モードにないか、または TPNOTRAN が設定されている場合は、メッセージはトランザクション・モードではキューに登録されません。 TPENQUEUE() が正常終了した後は、サブミットされたメッセージがキューに登録されたことが保証されます。 トランザクション・モードでない場合に通信エラーまたはタイムアウトが発生すると、アプリケーションには、メッセージが正しくキューに格納されたかどうかがわかりません。
メッセージが処理される順序は、以下に説明するように、アプリケーションによってTPQUEDEF-REC を介して制御されます。デフォルトのキューの順序付けは、キューの作成時に設定されます。
TPQUEDEF-REC の有効な設定の一覧を次に示します。
キューへのメッセージ登録に関する追加情報は、TPQUEDEF-REC を介して指定できます。 この情報には、デフォルトのキューの順序付けを無効にしてキューの先頭または登録済みのメッセージの前にメッセージを入れるための値、キューに登録したメッセージを処理する絶対時間または相対時間、メッセージが期限切れになりキューから削除される絶対時間または相対時間、メッセージに対する配信サービスの品質、メッセージの応答に対する配信サービスの品質、応答または異常終了メッセージと元の要求を結び付けるときに役立つ相関識別子、応答を登録するキューの名前、およびすべての異常終了メッセージを登録するキューの名前が含まれます。
制御パラメータ
TPQUEDEF-REC は、アプリケーション・プログラムが、キューへのメッセージの登録に関連する情報を渡したり、取得したりするために使用します。 設定は、レコード内のどの要素が有効であるかを示すために使用されます。
TPENQUEUE() への入力時には、次の要素を TPQUEDEF-REC に設定できます。
05 DEQ-TIME PIC S9(9) COMP-5.
05 PRIORITY PIC S9(9) COMP-5.
05 MSGID PIC X(32).
05 CORRID PIC X(32).
05 TPQUEQOS-DELIVERY-FLAG PIC S9(9) COMP-5.
05 TPQUEQOS-REPLY-FLAG PIC S9(9) COMP-5.
05 EXP-TIME PIC S9(9) COMP-5.
05 REPLYQUEUE PIC X(15).
05 FAILUREQUEUE PIC X(15).
05 APPL-RETURN-CODE PIC S9(9) COMP-5.
次の値は、どの値が TPQUEDEF-REC に設定されるかを示します。
TPQREPLYQOS
TPQQOSREPLYDEFAULTPERSIST
TPQQOSREPLYPERSISTENT
TPQQOSREPLYNONPERSISTENT
また、TPSTATUS-REC 内の APPL-RETURN-CODE にユーザ戻り値を設定することができます。 この値は、メッセージをキューから取り出すアプリケーションに返されます。
TPENQUEUE() からの出力時には、次の要素が TPQUEDEF-REC に設定されます。
05 MSGID PIC X(32).
05 DIAGNOSTIC PIC S9(9) COMP-5.
TPENQUEUE() からの出力情報を制御する TPQUEDEF-RECの有効な設定を次に示します。 TPENQUEUE() の呼び出し時にこの設定が真の場合、BEA Tuxedo /Q サーバ TMQUEUE(5) は、レコード内の対応する要素にメッセージ識別子を格納します。 TPENQUEUE() の呼び出し時にこの設定が真でない場合、TMQUEUE() は、レコード内の対応する要素にメッセージ識別子を格納しません。
制御構造体の残りのメンバーは、TPENQUEUE() への入力では使用しません。
TPENQUEUE() の呼び出しが異常終了し、TP-STATUS に TPEDIAGNOSTIC が設定された場合は、異常終了の原因を示す値が DIAGNOSTIC に返されます。 返される可能性のある値は、この後の「診断」の項で定義しています。
戻り値
TPENQUEUE() は正常終了時には、TP-STATUS に [TPOK] を設定します。
エラー
次の条件が発生すると、TPENQUEUE() は異常終了し、TP-STATUS に次の値を設定します。特に説明がなければ、この障害は呼び出し元のトランザクションには影響しません。
診断
次の診断値は、キューへのメッセージの登録中に返されます。
関連項目
qmadmin(1)、TPDEQUEUE(3cbl)、TPSPRIO(3cbl)、TMQFORWARD(5)、TMQUEUE(5)
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|