COMMIT 命令の使用

COMMIT 命令は、コミットメント制御下にあるファイルに対する一群の変更を完 了したことをシステムに通知します。 ROLBK 命令は、コミットメント制御下にあるファイルに対する現行グループの 変更を除去します。 これらの命令コードの指定方法および各命令の機能の詳細な説明については、「IBM Rational® Development Studio for i: ILE RPG 解説書」を参照してください。

システム障害の場合には、システムは暗黙に ROLBK 命令を出します。 COMMIT 命令コードの 演算項目 1 に指定したラベル、および STRCMTCTL コマンドに 指定した通知オブジェクトを使用して、正常に完了して いる最後の変更グループの識別を検査することができます。

活動化グループまたはジョブの終わり、あるいは ENDCMTCTL コマンドを出した時には、IBM® i システムは暗黙の ROLBK を出し、これによって、最後に ROLBK または COMMIT 命令が出された後の変更が除去されます。すべてのファイル命令が確実に実行されるようにするには、 コミットメント制御の下で実行している活動化グループまたはジョブの 終了前に、COMMIT 命令を出してください。

OPEN 命令はファイルに対してなされる入出力操作を許可し、CLOSE 命令はファイルに対して なされる入出力操作を停止します。 しかし、OPEN および CLOSE 命令は、COMMIT および ROLBK 命令に 影響しません。 COMMIT または ROLBK 命令は、ファイルがクローズされた後でもファイルに影 響します。 例えば、プログラムに次のステップを組み込むことができます。
  1. COMMIT を出す (既にコミットメント制御の下でオープンされているファ イルに対して)。
  2. コミットメント制御のために指定されているファイルをオープンする。
  3. このファイルに対していくつかの入力および出力操作を実行する。
  4. ファイルをクローズする。
  5. ROLBK を出す。

ステップ 3 で行われた変更は、ステップ 4 でファイルがクローズされていた としても、ステップ 5 の ROLBK 命令によってロールバックされます。ROLBK 命令は同じ 活動化グループまたはジョブ内の別のプログラムから出すことができます。

プログラムがすべてのファイルをコミットメント制御の下で処理しなければ ならないということはありませんし、また、そうすることによって、かえって パフォーマンスが落ちてしまう場合もあります。 COMMIT および ROLBK 命令は、コミットメント制御下にないファイルには影響を 与えません。
注: 複数装置がアプリケーション・プログラムに接続されていて、このプログラムが使用 するファイルに対してコミットメント制御が有効となっている場合には、 COMMIT および ROLBK 命令は、装置によってではなく、ファイルに基づいて作 業を続行します。 データベースは部分的に完了した COMMIT ブロックで更新されるか、あるいは他のユーザーが完了した変更が 削除されることもあります。 これが確実に起こらないようにすることは、ユーザーの責任です。