+----------------------------------IBM 拡張----------------------------------+
ROLLBACK ステートメントは、データベース・レコードに対する 1 つまたは複数の変更を永続化すべきでないときに、それらを取り消す手段となります。
ROLLBACK ステートメント - 形式 >>-ROLLBACK----------------------------------------------------><
ROLLBACK ステートメントが実行されると、最後のコミットメント境界以降にコミットメント制御下のファイルに対して行われたすべての変更が、データベースから除去されます。 ファイルが OUTPUT 用にオープンされているときに消去されると、ROLLBACK ステートメントを実行しても、消去されたレコードがファイルに復元されないことに注意してください。
コミットメント境界とは、ROLLBACK または COMMIT ステートメントの前のオカレンスを指します。 COMMIT または ROLLBACK が出されていなかった場合、コミットメント境界は、コミットメント制御下のファイルの最初の OPEN です。 変更の除去は、ROLLBACK を発行する COBOL プログラム内のコミットメント制御下のファイルに対してだけではなく、 コミットメント制御下にあるすべてのファイルに対して行われます。
ROLLBACK が正常に実行されると、コミットメント制御下のファイルに対して保持されていたすべてのレコード・ロックが解放され、レコードが他のジョブにとって使用可能になります。 コミットメント制御は、ジョブ・レベルまたは活動化グループ・レベルで範囲を限定できます。 (コミットメント制御は、デフォルトによって、活動化グループ・レベルで範囲が限定されます。)
ROLLBACK は、コミットメント制御下にないファイルには影響しません。 ROLLBACK が実行され、コミットメント制御下にあるファイルがない場合は、ROLLBACK は無視されます。
コミットメント制御下のファイルは、最後のコミットメント境界以降に行われた変更の状況に影響を与えずに、オープンまたはクローズすることができます。 なお、変更を永続的なものにするには、COMMIT を出さなければなりません。 ROLLBACK が実行されると、ファイルは、実行前と同じオープンまたはクローズ状態に置かれます。
ROLLBACK ステートメントは、次のことは行いません。
ROLLBACK ステートメントに対して、以下の考慮事項が適用されます。
コミットメント制御の範囲がジョブ・レベルで限定される場合には、 それぞれのジョブの終わりでコミットメント制御下のすべてのファイルに対して、 コミットされていないレコードの暗黙の ROLLBACK が自動的に行われます。 データベースに対してコミットされていない変更が取り消されます。
コミットメント制御の範囲が活動化グループ・レベルで限定される場合には、 活動化グループが正常に終了するときに、暗黙のコミットが起こります。 活動化グループが異常に終了すると、暗黙の ROLLBACK が起こります。
コミットメント制御の詳細は、「WebSphere Development Studio: ILE COBOL プログラマーの手引き」を参照してください。
+------------------------------End of IBM 拡張-------------------------------+