ジョブ中で実行されているプログラム・オブジェクトによって、複数のコミットメント定義が開始され使用される場合があります。 ジョブの個々のコミットメント定義により、関連リソースのある個々のトランザクションが識別されます。 それらのリソースは、ジョブで開始された他のすべてのコミットメント定義には関係なくコミットしたりロールバックしたりすることができます。
コミットメント定義の有効範囲は、ジョブ内で実行されているプログラムのうち、 どのプログラムがそのコミットメント定義を使用するかを指定するものです。 コミットメント定義の有効範囲は次の 2 つです。
コミットメント定義の有効範囲は、STRCMTCTL コマンドの CMTSCOPE パラメーターで指定します。
コミットメント定義のデフォルトの有効範囲は、STRCMTCTL コマンドを出すプログラムの活動化グループです。 その活動化グループ中で実行するプログラム・オブジェクトだけがコミットメント定義を使用します。 OPM デフォルト活動化グループに対して活動化グループ・レベルで開始されたコミットメント定義は、 デフォルト活動化グループ (*DFTACTGRP) コミットメント定義として認識されます。 個々の活動化グループには、それぞれ独自のコミットメント定義があります。
コミットメント定義をジョブに限定することもできます。 活動化グループのコミットメント定義が活動化グループ・レベルで開始されていない場合、 その活動化グループ中で実行しているプログラム・オブジェクトは、ジョブ・レベルのコミットメント定義を使用します。 このことは、ジョブに関する他のプログラム・オブジェクトがすでにジョブ・レベルのコミットメント定義を開始している場合に当てはまります。 ジョブごとに開始できるジョブ・レベル・コミットメント定義は 1 つだけです。
特定の活動化グループについて、その活動化グループ中で実行するプログラム・オブジェクトが使用できるコミットメント定義は 1 つだけです。 活動化グループ中で実行されるプログラム・オブジェクトは、コミットメント定義をジョブ・レベルでも活動化グループ・レベルでも使用できます。 しかし、同時に両方のレベルのコミットメント定義を使用することはできません。
ILE COBOL プログラムがコミットメント制御の操作を実行する場合、要求用に使用するコミットメント定義が直接指定されるわけではありません。 その代わりに、要求を行うプログラム・オブジェクトが実行している活動化グループに基づいて、 使用されるコミットメント定義をシステムが判別します。
コミットメント定義が ILE 活動化グループに限定されている場合、活動化グループが正常終了すると、 その定義に関連するファイルはクローズされ、暗黙のうちにコミットされます。 活動化グループが異常終了すると、 活動化グループに限定されたコミットメント定義の関連ファイルは、ロールバックされてクローズされます。
コミットメント制御の有効範囲の詳細については、「ILE 概念」を参照してください。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.