bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

Tuxedo COBOL リファレンス

 Previous Next Contents View as PDF  

TPPOST(3cbl)

名前

TPPOST()−イベントを通知する

形式

01 TPEVTDEF-REC.
COPY TPEVTDEF.

01
TPTYPE-REC.
COPY TPTYPE.

01
DATA-REC.
COPY User data.

01
TPSTATUS-REC.
COPY TPSTATUS.

CALL "TPPOST" USING
TPEVTDEF-REC TPTYPE-REC DATA-REC TPSTATUS-REC.

機能説明

呼び出し元は、イベントおよび関連データを通知するために TPPOST() を使用します。イベントの名前は TPEVTDEF-RECEVENT-NAME で指定され、ポストされるデータは DATA-REC に含まれます。通知されるイベントおよびそのデータは、EVENT-NAME がそのサブスクリプション条件を満たし、DATA-REC がそのオプションのフィルタ規則に適合するすべてのサブスクライバに対し、BEA Tuxedo のイベント・ブローカによってディスパッチされます。

EVENT-NAME の文字長は最大 31 文字で、SPACES であってはなりません (スペースで埋めることはできません)。また、ドット (”.”) は BEA Tuxedoシステムによるイベントの頭文字として使用されるため、EVENT-NAME の最初の文字にドットを使用することはできません。

DATA-REC はポストされるレコードであり、そのタイプを指定することができます。イベントとともにポストされる DATA-REC のデータ長は、TPTYPE-RECLEN で指定されます。ただし、DATA-REC が長さの指定を必要としないタイプのレコードである場合 LEN は無視されます (0 でかまいません)。DATA-REC がデータ長を指定する必要のあるタイプのレコードである場合は、LEN を 0 にセットすることはできません (0 にセットした場合はデータはポストされません)。TPTYPE-RECREC-TYPESPACES の場合は、DATA-RECLEN は無視され、データをともなわずにイベントだけがポストされます。

TPPOST() をトランザクション内で使用する場合、トランザクションの境界は、イベント・ブローカによって通知されるサーバおよび安定記憶域のメッセージ・キュー、またはそのいずれかを含むように拡張されます。トランザクションによるポストでは、ポストされたイベントを受け取ったことがポスト元のトランザクションに通知される場合 (サーバやキューなど) と、通知されない場合 (クライアントなど) があります。

ポスト元がトランザクション内にあり、TPTRAN が設定されると、通知されるイベントはトランザクション・モードでイベント・ブローカに渡されます。これは、イベント・ブローカがイベントをポスト元のトランザクションの一部としてディスパッチできるようにするためです。ブローカは、サブスクリプションの実行時に TPEVTDEF-RECTPEVTRAN をセットしたサービス・ルーチンや安定記憶キューのサブスクリプションに対してのみトランザクション・イベント通知を送出します。クライアント通知、およびサブスクリプション時に TPEVTDEF-RECTPEVNOTRAN を設定したサービス・ルーチンや安定記憶域キューのサブスクリプションも、イベント・ブローカによってディパッチされますが、これらはポスト側プロセスのトランザクションの一部としては処理されません。

次に、TPEVTDEF-REC の有効な設定の一覧を示します。

TPNOTRAN

呼び出し元がトランザクション・モードにあり、このフラグがセットされている場合は、イベントのポストは呼び出し元のトランザクションについては実行されません。このフラグ設定を使用するトランザクション・モードの呼び出し元は、依然としてトランザクション・タイムアウトの対象となります (それ以外はなし)。イベントのポストが正しく実行されなかった場合、呼び出し元のトランザクションには影響はありません。TPNOTRAN または TPTRAN のいずれかが設定されていなければなりません。

TPTRAN

呼び出し元がトランザクション・モードにあり、このフラグがセットされている場合は、イベントのポストは呼び出し元のトランザクションに関して実行されます。呼び出し元がトランザクション・モードにない場合、この設定は無視されます。TPNOTRAN または TPTRAN のいずれかが設定されていなければなりません。

TPNOREPLY

TPPOST() に対し、イベント・ブローカが EVENT-NAME に対するすべてのサブスクリプションを処理するまで待ってから戻る必要はないことを知らせます。TPNOREPLY を設定すると、TPPOST() が正常終了するかどうかにかかわらず、TPEVTDEF-RECEVENT-COUNT は 0 に設定されます。呼び出し元がトランザクション・モードにある場合は、TPTRAN も設定するときには、この設定は使用できません。TPNOREPLY または TPREPLY のいずれかが設定されていなければなりません。

TPREPLY

TPPOST() に対し、すべてのサブスクリプションが処理されてから戻るよう指示します。TPREPLY を設定すると、ルーチンは正常終了時には [TPOK] を返し、EVENT-NAME に関してイベント・ブローカによってデイスパッチされたイベント通知の数が TPEVTDEF-RECEVENT-COUNT に設定されます。呼び出し元がトランザクション・モードにあり、TPTRAN がセットされている場合は、このフラグを設定する必要があります。TPNOREPLY または TPREPLY のいずれかが設定されていなければなりません。

TPNOBLOCK

ブロッキング条件が存在する場合は、イベントはポストされません。このような条件が発生すると、呼び出しは失敗し、TP-STATUS は [TPEBLOCK] に設定されます。TPNOBLOCK または TPBLOCK のいずれかが設定されていなければなりません。

TPBLOCK

TPBLOCK がセットされ、ブロッキング条件が存在する場合は、呼び出し元はブロッキング条件が消失するか、またはタイムアウト (トランザクション・タイムアウト、またはブロッキング・タイムアウト) が発生するまでブロックします。TPNOBLOCK または TPBLOCK のいずれかが設定されていなければなりません。

TPNOTIME

この設定は、呼び出し元が無制限にブロックでき、ブロッキング・タイムアウトの影響を受けないようにすることを指定します。ただし、トランザクション・タイムアウトは発生する可能性があります。TPNOTIME または TPTIME のいずれかが設定されていなければなりません。

TPTIME

このフラグは、ブロッキング条件が存在し、ブロッキング時間に達すると、呼び出し元がブロッキング・タイムアウトを受け取ることを示します。TPNOTIME または TPTIME のいずれかが設定されていなければなりません。

TPSIGRSTRT

ルーチン内部のシステム・コールがシグナルによって中断された場合、中断されたシステム・コールは再発行されます。TPNOSIGRSTRT または TPSIGRSTRT のいずれかが設定されていなければなりません。

TPNOSIGRSTRT

ルーチン内部のシステム・コールがシグナルによって中断された場合、そのシステム・コールは再度実行されることはなく、呼び出しは異常終了し、TP-STATUSは [TPGOTSIG] にセットされます。TPNOSIGRSTRT または TPSIGRSTRT のいずれかが設定されていなければなりません。

戻り値

TPPOST() は正常終了時には、TP-STATUS に [TPOK] を設定します。また、EVENT-COUNT にはイベント・ブローカが EVENT-NAME に関してディスパッチしたイベント通知 (つまり、そのイベント表現が EVENT-NAME に対して有効であると評価され、かつそのフィルタ規則が DATA-REC に対して有効であると評価されたサブスクリプションのためのポスト) の数が入ります。終了時に TP-STATUS が [TPESVCFAIL] に設定された場合、EVENT-COUNT には、イベント・ブローカが EVENT-NAME に関してディスパッチした非トランザクション・イベント通知の数が入ります。

エラー

次の条件が発生すると、TPPOST() は異常終了し、TP-STATUS に次のいずれかの値を設定します。(特に記述した場合を除いては、エラーが呼び出し元のトランザクションに影響を及ぼすことはありません)。

[TPEINVAL]

無効な引数が指定されました ( EVENT-NAMESPACES である場合など)。

[TPENOENT]

BEA Tuxedo のユーザ・イベント・ブローカにアクセスできません。

[TPETRAN]

呼び出し元がトランザクション・モードにあり、TPTRAN が設定され、TPPOST() がトランザクション伝達をサポートしないイベント・ブローカにコンタクトしました。つまり、TMUSREVT(5) が、トランザクションをサポートする BEA Tuxedo ATMI グループで実行されていません。

[TPETIME]

このエラー・コードは、タイムアウトが発生したか、または現在のトランザクションがすでに「ロールバックのみ」とマークされているにもかかわらず TPPOST() が試行されたことを示します。

呼び出し元がトランザクション・モードにある場合、トランザクションはすでに「ロールバックのみ」になっているか、またはタイムアウトが発生しています (中途終了マークが付けられる)。呼び出し元がトランザクション・モードにない場合、ブロッキング・タイムアウトが発生しています。ブロッキング・タイムアウトは、TPBLOCKTPTIME の両方が指定された場合にのみ発生します。

トランザクション・タイムアウトが発生すると、1 つの例外を除き、トランザクションがアボートされない限り、新しいリクエストを送信したり、未処理の応答を受信しようとしても、TPETIME で異常終了します。例外は、ブロックされず、応答を期待せず、かつ呼び出し元のトランザクションのために送信されない (つまり、TPNOTRANTPNOBLOCK および TPNOREPLY が設定された状態で TPACALL() が呼び出される場合) 要求です。

TPPOST() がトランザクション内部で失敗すると、そのトランザクションは TX_ROLLBACK_ONLY 状態になります。ほとんどの場合、この状態はタイムアウトと同じものとして扱われます。このトランザクションの以降の ATMI 呼び出しは、TPETIME で異常終了します (前の段落で説明した例外を除く)。

[TPESVCFAIL]

イベント・ブローカが呼び出し元のトランザクションに関して、トランザクション・イベントをサービス・ルーチンまたは安定記憶域キューに通知する際に、エラーが発生しました。呼び出し元の現在のトランザクションは、「アボートのみ」にセットされます。このエラーが返されると、EVENT-COUNT には、イベント・ブローカが EVENT-NAME に関してディスパッチした非トランザクション・イベント通知の数が入ります。トランザクションのポスティングの結果はトランザクション終了時にアボートされるため、カウントされません。なお、トランザクションがタイムアウトしないかぎり、通信はトランザクションがアボートするまで継続され、呼び出し元のトランザクションのためになされた作業はトランザクションが完了する時点でアボートされます (つまり、以降のやりとりで何らかの結果が得られる場合には、TPNOTRAN を設定しておく必要があります)。

[TPEBLOCK]

ブロッキング状態のため、TPNOBLOCK が指定されました。

[TPGOTSIG]

シグナルが受信され、TPNOSIGRSTRT がセットされていました。

[TPEPROTO]

TPPOST() の呼び出し方法が不適切です。

[TPESYSTEM]

BEA Tuxedo システムのエラーが発生しました。エラーの正確な内容がログ・ファイルに書き込まれます。

[TPEOS]

オペレーティング・システムのエラーが発生しました。

関連項目

TPSUBSCRIBE(3cbl)TPUNSUBSCRIBE(3cbl)EVENTS(5)TMSYSEVT(5)TMUSREVT(5)

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy