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

Tuxedo COBOL リファレンス

 Previous Next Contents View as PDF  

TPCALL(3cbl)

名前

TPCALL()−サービスへのメッセージの同期送信を行うルーチン

形式

01 TPSVCDEF-REC.
COPY TPSVCDEF.

01
ITPTYPE-REC.
COPY TPTYPE.

01
IDATA-REC.
COPY User data.

01
OTPTYPE-REC.
COPY TPTYPE.

01
ODATA-REC.
COPY User data.

01
TPSTATUS-REC.
COPY TPSTATUS.

CALL "TPCALL" USING
TPSVCDEF-REC ITPTYPE-REC IDATA-REC OTPTYPE-REC ODATA-REC TPSTATUS-REC.

機能説明

TPCALL() は要求を送り、それと同期してその応答を待ちます。このルーチンへの呼び出しは、TPACALL()を呼び出した後即座に TPGETRPLY() を呼び出すのと同じことです。TPCALL() は、 TPSVCDEF-REC 内の SERVICE-NAME で指定する要求/応答型サービスに要求を送ります。この要求は、以前になされた TPSPRIO() の呼び出しで変更されていないかぎり、SERVICE-NAME に定義されている優先順位で送信されます。要求のデータ部分は、IDATA-REC によって指定され、ITPTYPE-REC 内の LEN は、送信する IDATA-REC の大きさを指定します。なお、IDATA-REC は、長さの指定を必要としないタイプのレコードを指している場合、ITPTYPE-REC 内の LEN は無視されます (0 でかまいません)。ITPTYPE-REC 内の REC-TYPESPACES の場合には、IDATA-REC および ITPTYPE-REC 内の LEN は無視され、データ部なしで要求が送信されます。ITPTYPE-REC 内の REC-TYPESTRING のときに ITPTYPE-REC 内の LEN0 の場合にも、データ部なしで要求が送信されます。ITPTYPE-REC 内の REC-TYPE および ITPTYPE-REC 内の SUB-TYPE は、SERVICE-NAME が認識する REC-TYPE および SUB-TYPE のいずれかと一致しなければなりません。

ODATA-REC は応答が読み込まれる場所を指定し、入力時の OTYPE-REC 内の LENODATA-REC に移動されるべき最大バイト数を示します。同じレコードを送信と受信の両方に使用する場合には、ODATA-RECIDATA-RECREDEFINED してください。TPCALL() の正常終了時には、OTPTYPE-REC 内の LEN には、ODATA-REC に実際に移動されたバイト数が入ります。OTPTYPE-REC 内の REC-TYPE および SUB-TYPE には、それぞれ応答のタイプおよびサブタイプが入っています。応答が ODATA-REC より大きい場合は、ODATA-REC にはこのレコードに入るバイト数分のみが入ります。応答の残りは破棄され、TPCALL()TPTRUNCATE() を設定します。

OTPTYPE-REC 内の LEN が正常終了時に 0 であると、応答にはデータ部がなく、ODATA-REC は変更されていません。OTPTYPE-REC 内の LEN が入力時に 0 であると、エラーになります。

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

TPNOTRAN

呼び出し元がトランザクション・モードにあり、この設定を使用していると、SERVICE-NAME が呼び出されても、呼び出し元のトランザクションの一部として実行されません。トランザクションをサポートしないサーバに SERVICE-NAME が属しており、呼び出し元がトランザクション・モードにある場合は、この設定を指定しなければなりません。この値を真に設定する、トランザクション・モードの呼び出し元は、やはりトランザクション・タイムアウトの影響を受けます (それ以外はなし)。この設定を使用した状態で呼び出されたサービスが正常に実行できない場合、呼び出し元のトランザクションは影響を受けません。TPNOTRAN または TPTRAN のいずれかが設定されていなければなりません。

TPTRAN

呼び出し元がトランザクション・モードにあり、この設定が使用されていると、SERVICE-NAME が呼び出されたときに、このプログラムは呼び出し元のトランザクションのために実行されます。呼び出し元がトランザクション・モードにない場合は、この設定は無視されます。TPNOTRAN または TPTRAN のいずれかが設定されていなければなりません。

TPNOCHANGE

この設定を使用すると、ODATA-REC のタイプは変更されません。つまり、応答されたレコードのタイプとサブタイプは、受け取り側が着信レコードのタイプを識別するかぎりは、それぞれ OTPTYPE-REC 内の REC-TYPE および OTPTYPE-REC 内の SUB-TYPE と一致しなければなりません。TPNOCHANGE または TPCHANGE のいずれかが設定されていなければなりません。

TPCHANGE

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

TPNOBLOCK

この要求は、ブロッキング条件が存在する場合 (たとえば、メッセージの送信先である内部バッファがいっぱいの場合など) には、送信されません。ただし、この設定は TPCALL() の送信部分にしか適用されません。このルーチンは応答を待ってブロックすることがあります。TPNOBLOCK または TPBLOCK のいずれかが設定されていなければなりません。

TPBLOCK

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

TPNOTIME

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

TPTIME

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

TPSIGRSTRT

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

TPNOSIGRSTRT

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

戻り値

TPCALL() は正常終了時には、TP-STATUS に [TPOK] を設定します。TP-STATUSTPOK または TPESVCFAIL が設定されると、TPSTATUS-REC 内の APPL-RETURN-CODETPRETURN() の一部として送信されたアプリケーション定義の値が入ります。

着信メッセージの大きさが入力時に LEN に指定されたものより大きい場合は、TPTRUNCATE() が設定され、LEN 分のデータのみが ODATA-REC に移動されて残りのデータは破棄されます。

エラー

次の条件が発生すると、TPCALL() は異常終了し、TP-STATUS に次の値を設定します。特に説明がなければ、この障害は呼び出し元のトランザクションには影響しません。

[TPEINVAL]

無効な引数が指定されました (たとえば、SERVICE-NAMESPACES である場合、または TPSVCDEF-REC の設定が無効である場合など)。

[TPENOENT]

存在しないか、要求/応答型サービスでない (すなわち、会話サービスである) ため、SERVICE-NAME に送信できません。

[TPEITYPE]

REC-TYPE および SUB-TYPE が、SERVICE-NAME が受け付けるタイプおよびサブタイプではありません。

[TPEOTYPE]

応答のタイプまたはサブタイプのいずれかは、呼び出し元が認識しているものでありません。あるいは、TPNOCHANGE が設定されていて、ODATA-RECREC-TYPESUB-TYPE が、そのサービスから送られた応答のタイプおよびサブタイプと一致しません。ODATA-REC および OTPTYPE-REC 内の LEN はいずれも変更されません。サービス要求が呼び出し元の現在のトランザクションの一部として発行されると、応答が破棄されるので、そのトランザクションに中途終了マークが付けられます。

[TPETRAN]

SERVICE-NAME は、トランザクションをサポートしていないサーバに属していて、TPTRAN が設定されていました。

[TPETIME]

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

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

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

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

[TPESVCFAIL]

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

[TPESVCERR]

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

[TPEBLOCK]

TPCALL() の送信部分でブロッキング状態が検出されましたが、TPNOBLOCK が指定されていました。

[TPGOTSIG]

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

[TPEPROTO]

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

[TPESYSTEM]

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

[TPEOS]

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

関連項目

TPACALL(3cbl)TPFORWAR(3cbl)TPGPRIO(3cbl)TPRETURN(3cbl)TPSPRIO(3cbl)

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy