| Java™ 生成 |
- sysLib.rollback() は、以下のリソースに対する変更内容を元に戻します。
- リレーショナル・データベース
- WebSphere® MQ メッセージ・キュー
- クライアント制御の作業単位を使用して呼び出されたリモート・サーバー・プログラム
- エンタープライズ JavaBean (EJB) を介して呼び出した、生成された Java プログラムから sysLib.rollback() を呼び出さないでください。
EJB では、それが実行されているトランザクションを操作できません。
|
| CICS® for z/OS® |
- sysLib.rollback() の結果は CICS SYNCPOINT ROLLBACK になります。
これにより、リレーショナル・データベース、WebSphere MQ メッセージ・キュー、およびリカバリー可能リソースとして定義されているファイルに対する変更がロールバックされます。
- CICS ベースのリモート COBOL プログラムの呼び出しにクライアント制御の作業単位が関与する場合、生成された Java プログラムまたはラッパーでは、
リモートの CICS ベース COBOL プログラムによって行われた更新内容 (CICS リカバリー可能ファイルへの更新も含む) も元に戻します。
詳しくは、callLink 要素の luwControlを参照してください。
- リモート側で呼び出されたバッチ・プログラム (呼び出し側プログラムとは異なるシステムにあるプログラム) で sysLib.rollback() を呼び出すことができます。
luwControl 属性を SERVER に設定すると、ロールバックが正常に機能します。
この属性を CLIENT に設定すると、EGL によって RuntimeException がスローされます。
sysLib.rollback() は、スプール・ファイルをロールバックします。
|
| IMS™ BMP |
sysLib.rollback() は、DL/I ROLB 呼び出しを行います。
非特別代替 PCB に関連付けられたシリアル・ファイルへ書き込まれる出力も、バックアウトされます。 |
| IMS/VS |
sysLib.rollback() は、DL/I ROLB 呼び出しを行います。
非特別代替 PCB に関連付けられたシリアル・ファイルへ書き込まれる出力も、バックアウトされます。 |
| JavaScript 生成 |
sysLib.rollback() はサポートされていません。 |
| WebSphere MQ メッセージ・キュー |
- メッセージ・キューの更新をリカバリーできるのは、MQRecord パーツの includeMsgInTransaction プロパティーが YES に設定されている場合のみです。
- メッセージの get 文と add 文は、いずれも、リカバリー可能メッセージに対する sysLib.commit() および sysLib.rollback() の影響を受けます。
リカバリー可能メッセージに対して、get の後に sysLib.rollback() が
出された場合は、メッセージが入力キューに戻されるため、トランザクションが正常に完了しない場合にも入力メッセージは失われません。
また、リカバリー可能メッセージに対して add の後に sysLib.rollback() が出された場合は、
メッセージはキューから削除されます。
|
| z/OS バッチ |
- プログラムが SQL アクセス用の TSO 端末モニター・プログラム下で実行される場合、sysLib.rollback() を呼び出すと、SQL ROLLBACK WORK ステートメントが実行されます。
- プログラムが DL/I バッチ・ジョブとして実行され、DL/I または SQL 要求を行った場合は、DL/I ROLB 呼び出しが行われます。
バッチ・ジョブが開始されるときに、IMS バッチ・パラメーター BKO=Y を指定して、ROLB 呼び出しが有効になるようにしてください。BKO=N が指定されると、DL/I は ROLB 呼び出しで状況コード AL を戻します。プログラムは AL をソフト・エラーとして扱い、エラー・メッセージを出しません。BKO は、IMS 制御プログラム DFSRRC00 を呼び出すジョブ・ステップで、パラメーターとして指定してください。
- GSAM ファイルに関連付けられたシリアル・ファイルまたは印刷ファイル、および sysLib.audit() の使用により、
DL/I 要求が行われ、DL/I ROLB の呼び出しが行われます。
- DL/I を使用しない EGL プログラムは、SQL テーブルを変更した場合にのみ、ロールバックを実行します。
非 EGL (または非 VisualAge Generator) プログラムによって行われた SQL テーブルの変更の場合には、ロールバックは実行されません。
|