コミットメント制御のロック

STRCMTCTL コマンドでは、ロックのレベルを LCKLVL(*ALL)、LCKLVL(*CHG)、または LCKLVL(*CS) の いずれかに指定します。 プログラムがコミットメント制御下で操作され、コミットメント制御下の ファイルのレコードで入力または出力操作を処理した時には、 レコードは次のとおりコミットメント制御によってロックされます。
  • ユーザー・プログラムはレコードにアクセスすることができます。
  • 活動化グループまたはジョブにあって、このファイルをコミットメント制御の下に置いてい る別のプログラムは、レコードを読み取ることができます。 ファイルが共用ファイルの場合には 、2 番目のプログラムもレコードを更新することができます。
  • 活動化グループまたはジョブ中のこのファイルをコミットメント制御の下に 置いていない別のプログラムは、レコードを読み取ったり、更新したりする ことはできません。
  • LCKLVL(*CHG) を指定した場合には、別の活動化グループまたはジョブにあ り、このファイルをコミットメント制御の下に置いている別のプログラムは レコードを読み取ることができますが、LCKLVL(*ALL) を指定した場合には、 レコードを読み取ることができません。 どちらのロック・レベルの場合でも、2 番目のプログラムはレコードを更新 することはできません。
  • このファイルをコミットメント制御の下に置いておらず、またこの活動化 グループまたはジョブにない別のプログラムは、レコードを読み取ることはで きますが、更新することはできません。
  • コミットメント制御ロックは、通常のロックとは異なり、指定された LCKLVL によって変わり、COMMIT 命令および ROLBK 命令によってのみ解除 できます。

COMMIT 命令および ROLBK 命令は、レコード上のロックを解除します。UNLOCK 命令は、コミットメント制御を使用してロックされたレコードを解除 しません。ロック・レベルについての詳細は、Web サイト http://www.ibm.com/systems/i/infocenter/IBM® i Information Center の中の『プログラミング』カテゴリーの『CL および API』の節を参照してください。

COMMIT 命令または ROLBK 命令が必要となる前にコミットメント制御によって ロックできる項目数は、制限される場合があります。 詳細については、資料「バックアップおよび回復」を参照してください。
注: SETLL および SETGT 命令は、(更新ではなく) 読み取り命令でコミット メント制御のためにレコードがロックされた場合と同様にレコードをロック します。