リカバリー不能と
分類されているリソース (Windows® 2000 のシリアル・ファイルなど) を変更すると、
その変更結果は比較的永続的になります。コードでも EGL ランタイム・サービスでも、
この変更結果を単純に無効にすることはできません。リカバリー可能と
分類されているリソース (リレーショナル・データベースなど) を変更すると、
コードまたは EGL ランタイム・サービスで、この変更をコミットして変更内容を
永続的にしたり、最後に変更がコミットされた時点の状態に戻すために変更を
ロールバックしたりできます。
リカバリー可能リソースには以下のものがあります。
- リレーショナル・データベース
- リカバリー可能として構成されている CICS® キューまたはファイル。
- MQSeries® メッセージ・キュー。ただし、『MQSeries のサポート』で説明するように MQSeries レコードでリカバリー不可と指定されていない場合。
作業論理単位 により、グループとしてコミットまたはロールバックさ
れる入力操作が識別されます。作業単位は、リカバリー可能リソースがコードにより変更された時点で開始され、次のいずれかが初めて発生した時点で終了します。
- 変更内容をコミットまたはロールバックするために、システム関数 sysLib.commit または sysLib.rollback がコードから呼び出された。
- コードでは処理されないハード・エラーに応答して、EGL ランタイム・サービスが
ロールバックを実行した。この場合、実行単位のすべてのプログラムはメモリーから
除去される。
- 以下の場合のように、暗黙的コミットが発生した。
- プログラムが show 文を発行した場合。
- 実行単位内のトップレベルのプログラムが、『実行単位』で説明されているように、正常に終了した場合。
- PageHandler が forward 文を発行したときのように、Web ページが表示された場合。
- プログラムが converse 文を発行し、かつ、以下のいずれかに該当する場合。
- VisualAge® Generator との互換性モードで実行しておらず、プログラムがセグメント化されたプログラムである
- ConverseVar.commitOnConverse が 1 に設定されている。
- VisualAge Generator との互換性モードで実行中であり、ConverseVar.segmentedMode が 1 に設定されている。