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

Tuxedo COBOL リファレンス

 Previous Next Contents View as PDF  

TPSEND(3cbl)

名前

TPSEND()−会話接続でメッセージを送信するルーチン

形式

01 TPSVCDEF-REC.
COPY TPSVCDEF.

01
TPTYPE-REC.
COPY TPTYPE.

01
DATA-REC.
COPY User data.

01
TPSTATUS-REC.
COPY TPSTATUS.

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

機能説明

TPSEND() は、別のプログラムにオープン接続を介してデータを送信するときに使用します。このとき、呼び出し元がこの接続の制御権をもたなければなりません。COMM-HANDLE は、データを送信するオープン接続を指定するものです。COMM-HANDLE は、TPCONNECT() または TPSVCSTART() から返される通信ハンドルです。

DATA-REC は、送信するデータであり、LEN は、送信するデータの大きさを指定します。ただし、DATA-REC が長さの指定を必要としないタイプのレコードである場合 LEN は無視されます (0 でかまいません)。REC-TYPESPACES の場合は、DATA-REC および LEN は無視され、メッセージはデータなしで送信されます (これは、たとえば、データの送信なしに接続の制御権だけを与えるときなどに使用されます)。

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

TPRECVONLY

この設定は、呼び出し元のデータが送信された後、呼び出し元が接続の制御を放棄することを指示します。つまり、呼び出し元はそれ以降、TPSEND() 呼び出しを発行できなくなります。接続の他方の側のプログラムが TPSEND() によって送られたデータを受け取る場合、それが接続の制御を得たことを示すイベント (TPEV-SENDONLY) も受け取ります (そして、それ以降、TPRECV() 呼び出しは発行できません)。TPRECVONLY または TPSENDONLY のいずれかを指定しなければなりません。

TPSENDONLY

この設定は、呼び出し元が接続の制御権を保持することを示します。TPRECVONLY または TPSENDONLY のいずれかを指定しなければなりません。

TPNOBLOCK

ブロッキング条件が存在する場合、データおよびどのイベントも送信されません (たとえば、メッセージの送信に使用されるデータ・バッファがいっぱいのときなど)。TPNOBLOCK または TPBLOCK のいずれかが設定されていなければなりません。

TPBLOCK

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

TPNOTIME

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

TPTIME

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

TPSIGRSTRT

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

TPNOSIGRSTRT

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

COMM-HANDLE に対してイベントが存在する場合、TPSEND() は呼び出し元のデータを送信せずに終了します。イベントのタイプは、TPEVENT() に返されます。TPSEND() の有効なイベントを次に示します。

TPEV-DISCONIMM

会話の従属側が受け取るこのイベントは、その会話の起動元が TPDISCON() により即時切断要求を出したことを、あるいは接続の起動元が従属側のオープン接続を持って TPRETURN() を出したことを示します。このイベントは、通信エラー (サーバ、マシン、ネットワークの障害など) により接続が切断されたときにも起動元またはその従属側に返されます。

TPEV-SVCFAIL

会話の起動元が受け取るこのイベントは、その接続の従属側が会話の制御権をもたずに TPRETURN() を出したことを示します。さらに、TPRETURN()TPFAIL() を設定した状態でデータなし (つまり、TPRETURN() に渡された REC-TYPESPACES が設定されている状態) で発行されています。

TPEV-SVCERR

会話の起動元が受け取るこのイベントは、その接続の従属側が会話の制御権をもたずに TPRETURN() を出したことを示します。さらに、TPEV-SVCFAIL に記述されている以外の形で、TPRETURN() が出されました。

これらのイベントはそれぞれ、即時切断通知 (すなわち、正常ではなく中途で終了) を示すので、処理途中のデータは失われます。この接続に使用された通信ハンドルは無効になります。2 つのプログラムが同じトランザクションに参加していた場合には、そのトランザクションに中途終了マークが付けられます。

戻り値

TPSEND() は正常終了時には、TP-STATUS に [TPOK] を設定します。イベントが存在し、エラーが発生しなかった場合は、TPSEND()TP-STATUS に [TPEEVENT] を設定します。TP-STATUS に [TPEEVENT] が設定され、TP-EVENTTPEV-SVCSUCC または TPEV-SVCFAIL の場合、APPL-RETURN-CODE には、TPRETURN() の一部として送信されたアプリケーション定義の値が入ります。

エラー

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

[TPEINVAL]

無効な引数が指定されました。

[TPEBADDESC]

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

[TPETIME]

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

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

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

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

[TPEEVENT]

イベントが発生し、そのタイプが TPEVENT() に記録されます。このエラーが発生すると、DATA-REC は送られません。

[TPEBLOCK]

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

[TPGOTSIG]

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

[TPEPROTO]

TPSEND() が不正なコンテキストで呼び出されました (たとえば、呼び出し元がデータの受信しかできないように接続が確立された場合など)。

[TPESYSTEM]

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

[TPEOS]

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

関連項目

TPCONNECT(3cbl)TPDISCON(3cbl)TPRECV(3cbl)

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy