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

Tuxedo COBOL リファレンス

 Previous Next Contents View as PDF  

TPGETRPLY(3cbl)

名前

TPGETRPLY()−非同期メッセージからの応答の取得

形式

01 TPSVCDEF-REC.
COPY TPSVCDEF.

01
TPTYPE-REC.
COPY TPTYPE.

01
DATA-REC.
COPY User data.

01
TPSTATUS-REC.
COPY TPSTATUS.

CALL "TPGETRPLY" USING
TPSVCDEF-REC TPTYPE-REC DATA-REC TPSTATUS-REC.

機能説明

TPGETRPLY() は、事前に送られた要求の応答を返します。TPGETRPLY() は、特定の要求に対する応答、または取得可能なすべての応答を返します。選択可能なこの 2 つについて、ここで説明します。

DATA-REC は、応答を読み込む場所を指定し、TPTYPE-REC 内の LEN は、DATA-REC に移動すべき最大バイト数を示します。また、TPTYPE-RECREC-TYPE を指定する必要があります。TPGETRPLY() の正常終了時には、実際に DATA-REC に移動されたバイト数が LEN に入り、TPTYPE-REC 内の REC-TYPE および SUB-TYPE には、それぞれデータのタイプおよびサブタイプが入ります。応答が DATA-REC より大きい場合は、DATA-REC にはこのレコードに入るバイト数分のみが入ります。応答の残りは破棄され、TPGETRPLY()TPTRUNCATE() を設定します。

正常終了時に LEN0 である場合は、応答にはデータ部がなく、DATA-REC は変更されていません。入力時に LEN0 にすると、エラーになります。

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

TPGETANY

この値を設定すると、TPGETRPLY()TPSVCDEF-REC 内の COMM-HANDLE によって示される通信ハンドルを無視し、存在する応答があればそれらを返し、返された応答の通信ハンドルを指すよう COMM-HANDLE を設定します。応答が存在しなければ、TPGETRPLY() は応答が届くまで待機します。TPGETANYTPGETHANDLE のいずれかを設定しなければなりません。

TPGETHANDLE

この値を設定すると、TPGETRPLY()COMM-HANDLE によって示される通信ハンドルを使用し、その COMM-HANDLE に対応する応答があればそれを返します。応答が存在しなければ、TPGETRPLY() は応答が届くまで待機します。TPGETANYTPGETHANDLE のいずれかを設定しなければなりません。

TPNOCHANGE

この値を設定すると、DATA-REC のタイプは変更されなくなります。すなわち、応答レコードのタイプおよびサブタイプは、それぞれ REC-TYPE および SUB-TYPE と一致しなければなりません。TPNOCHANGE または TPCHANGE のいずれかが設定されていなければなりません。

TPCHANGE

応答レコードのタイプとサブタイプの両方または片方は、受け取り側が着信レコードのタイプを識別するかぎりは、それぞれ REC-TYPE および SUB-TYPE と異なっています。TPNOCHANGE または TPCHANGE のいずれかが設定されていなければなりません。

TPNOBLOCK

TPGETRPLY() は、応答が送られてくるまで待機しません。応答が取り出せる状態であれば、TPGETRPLY() はその応答を取り込み、終了します。TPNOBLOCK または TPBLOCK のいずれかが設定されていなければなりません。

TPBLOCK

TPBLOCK が設定されていて、データも取り出せる状態にない場合、呼び出し元は応答が到着するまで、あるいはタイムアウト (トランザクションまたはブロッキング) が発生するまでブロックされます。TPNOBLOCK または TPBLOCK のいずれかが設定されていなければなりません。

TPNOTIME

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

TPTIME

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

TPSIGRSTRT

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

TPNOSIGRSTRT

ルーチン内部のシステム・コールがシグナルによって中断された場合、中断されたシステム・コールは再開されず、この呼び出しは異常終了します。TPNOSIGRSTRT または TPSIGRSTRT のいずれかが設定されていなければなりません。

特に説明がなければ、COMM-HANDLE は対応する応答が受信された後は、無効になります。

戻り値

TPGETRPLY() は正常終了時には、TP-STATUS に [TPOK] を設定します。TP-STATUSTPOK() または TPESVCFAIL() が設定されると、TPSTATUS-REC 内の APPL-RETURN-CODETPRETURN() の一部として送信されたアプリケーション定義の値が入ります。着信メッセージの大きさが入力時に LEN に指定されたより大きい場合、TPTRUNCATE() が設定され、LEN 分のデータのみが DATA-REC に移動されて残りのデータは破棄されます。

エラー

次の条件が発生すると、TPGETRPLY() は異常終了し、TP-STATUS を以下のように設定します。TPGETHANDLE が設定されている場合は、特に明記されないかぎり、COMM-HANDLE は無効になります。TPGETANY が設定されていると、COMM-HANDLE は障害を起こした応答の通信ハンドルを示します。応答を取り出せるようになる前にエラーが発生した場合には、COMM-HANDLE0 です。また、特に明記しない限り、この異常終了は呼び出し元のトランザクションには影響しません。

[TPEINVAL]

無効な引数が指定されました (TPSVCDEF-REC の設定が無効など)。

[TPEOTYPE]

応答のタイプまたはサブタイプのいずれかは、呼び出し元が認識しているものでありません。あるいは、TPNOCHANGE が設定されていて、REC-TYPESUB-TYPEが、そのサービスから送られた応答のタイプおよびサブタイプと一致しません。DATA-RECTPTYPE-REC も変更されません。呼び出し元の現在のトランザクションのために応答が受信された場合は、そのトランザクションには中途終了マークが付けられます。

[TPEBADDESC]

COMM-HANDLE に無効な通信ハンドルが入っています。

[TPETIME]

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

呼び出し元がトランザクション・モードにある場合、トランザクションはすでに「ロールバックのみ」になっているか、またはタイムアウトが発生しています (中途終了マークが付けられる)。呼び出し元がトランザクション・モードでない場合、ブロッキング・タイムアウトが発生しています。ブロッキング・タイムアウトは、TPBLOCKTPTIME の両方が指定された場合にのみ発生します。いずれの場合でも、DATA-RECTPTYPE-REC も変更されません。COMM-HANDLE は、呼び出し元がトランザクション・モードでなければ (そして、TPGETHANDLE が設定されている場合) そのまま有効です。

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

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

[TPESVCFAIL]

呼び出し元の応答を送るサービス・ルーチンが、TPFAIL() を設定して TPRETURN() を呼び出しました。これは、アプリケーション・レベルの障害です。サービスの応答の内容は (送信された場合)、DATA-REC に入ります。APPL-RETURN-CODE には、TPRETURN() の一部として送信されたアプリケーション定義の値が入ります。応答が呼び出し元のトランザクションのために受信された場合、トランザクションには中途終了マークが付けられます。トランザクションがタイムアウトになったかどうかにかかわらず、トランザクションがアボートされる前に有効な通信は、TPNOREPLYTPNOTRAN、および TPNOBLOCK を設定した TPACALL() の呼び出しのみです。

[TPESVCERR]

サービス・ルーチンが TPRETURN() あるいは TPFORWAR() で完了する際にエラーを検出しました。(たとえば、誤った引数が渡された場合など)。このエラーが発生すると、応答データは返されません (つまり、DATA-RECTPTYPE-REC も変更されません)。応答が呼び出し元のトランザクションのために受信された場合、トランザクションには中途終了マークが付けられます。トランザクションがタイムアウトになったかどうかにかかわらず、トランザクションがアボートされる前に有効な通信は、TPNOREPLYTPNOTRAN、および TPNOBLOCK を設定した TPACALL() の呼び出しだけです。

[TPEBLOCK]

ブロッキング状態のため、TPNOBLOCK が指定されました。COMM-HANDLE はそのまま有効です。

[TPGOTSIG]

シグナルを受け取りましたが、TPSIGRSTRT が指定されていませんでした。

[TPEPROTO]

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

[TPESYSTEM]

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

[TPEOS]

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

関連項目

TPACALL(3cbl)TPCANCEL(3cbl)TPRETURN(3cbl)

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy