コミットメント制御開始 (STRCMTCTL)
実行可能場所: すべての環境 (*ALL) スレッド・セーフ: はい |
パラメーター 例 エラー・メッセージ |
コミットメント制御開始(STRCMTCTL)コマンドは,ジョブ・レベル,または活動化グループ・レベル・コミットメント定義のいずれかで設定するために使用されます。コミットメント定義が作成される独立補助記憶域プール(IASP)がジョブの現在の名前空間によって決定されます。ファイルが同じASPに存在する場合か,ファイルが*SYSBASに存在してかつコミットメント定義に資源が登録されていない場合に,このコミットメント定義のコミットメント制御で開くことができます。
また,このコマンドは,開始されたコミットメント定義で行われるレコードのロックのレベルも指定します。また,通知オブジェクトを指定することもできます。
コミットメント定義の確立の前に,単一コミットメント・トランザクションのコミットメント制御のもとでオープンされるすべてのデータベース・ファイルがジャーナル処理されていることを,ユーザーは確認しなければなりません。事後イメージだけがジャーナル処理されている場合には,システムは,変更がこのコミットメント定義のもとでオープンされたファイルの期間中に事前および事後の両方のイメージのジャーナル処理を暗黙に開始します。
省略時のジャーナルを指定することができます。すべてのジャーナルを記述する項目およびコミットメント制御操作に含まれるシステムをこのジャーナルに入れることができます。
ジャーナル管理の使用の詳細については,IBM i Information Center(http://www.ibm.com/systems/i/infocenter/)の「ジャーナル管理」トピック・コレクションにあります。コミットメント制御に関連したジャーナリングの詳細は,IBM i Information Center(http://www.ibm.com/systems/i/infocenter/)の「コミットメント制御」トピック・コレクションにあります。
制約事項:
- ユーザーは,NFYOBJパラメーターで指定されたオブジェクト(オブジェクトが指定されている場合)に対してオブジェクト操作権限および追加権限を持っていなければなりません。
- ユーザーは,DFTJRNパラメーターで指定されたオブジェクト(オブジェクトが指定されている場合)に対してオブジェクト操作権限および追加権限を持っていなければなりません。
上 |
パラメーター
キーワード | 記述 | 選択項目 | ノーツ |
---|---|---|---|
LCKLVL | ロック・レベル | *CHG, *CS, *ALL | 必須, 定位置 1 |
NFYOBJ | 通知オブジェクト | 単一値: *NONE その他の値: 要素リスト |
オプショナル, 定位置 2 |
要素 1: オブジェクト | 修飾オブジェクト名 | ||
修飾子 1: オブジェクト | 名前 | ||
修飾子 2: ライブラリー | 名前, *LIBL, *CURLIB | ||
要素 2: オブジェクト・タイプ |
単一値: *MSGQ, *DTAARA その他の値: 要素リスト |
||
要素 1: (*MSGQ *DTAARAまたは*FILE) | *FILE | ||
要素 2: *FILEの場合にメンバー | 名前, *FIRST | ||
CMTSCOPE | コミットメント定義有効範囲 | *ACTGRP, *JOB | オプショナル |
TEXT | テキスト'記述' | 文字値, *DFTTEXT | オプショナル |
DFTJRN | ジャーナル | 単一値: *NONE その他の値: 修飾オブジェクト名 |
オプショナル |
修飾子 1: ジャーナル | 名前 | ||
修飾子 2: ライブラリー | 名前, *LIBL, *CURLIB | ||
OMTJRNE | 除外するジャーナル項目 | *NONE, *LUWID | オプショナル |
上 |
ロック・レベル (LCKLVL)
開始されたコミットメント定義で行われるレコード・ロックの省略時のレベルを指定します。
これは必須パラメーターです。
- *CHG
- 更新のために読み取られたレコード(コミットメント制御下のオープンされたファイル)がすべてロックされます。レコードを変更,追加,または削除した場合には,そのレコードは,トランザクションがコミットまたはロールバックされるまで,ロックされたままとなります。更新操作のためにアクセスされたが,変更されずに解放されたレコードは,アンロックされます。
- *CS
- コミットメント制御下のオープンされたファイルからアクセスされたレコードがすべてロックされます。読み取られたが変更または削除されていないレコードは,別のレコードが読み取られた時にアンロックされます。変更,追加,または削除されたレコードは,トランザクションがコミットまたはロールバックされるまで,ロックされます。
- *ALL
- コミットメント制御下のオープンされたファイルからアクセスされたすべてのレコードは,トランザクションがコミットまたはロールバックされるまで,ロックされます。
上 |
通知オブジェクト (NFYOBJ)
コミットメント定義のトランザクションの情報に関する通知が送られるオブジェクトの名前およびタイプを指定します。最後に正常に実行されたコミット操作のコミットメントIDが通知オブジェクトに送られるのは,次の条件の場合だけです。
- ジョブ・レベルのコミットメント定義で,次のいずれかが真である場合:
- システムの障害が起こった
- コミットされていない変更でジョブが終了した
- ゼロ以外の完了コードでジョブが終了した
- 活動化グループ・レベルのコミットメント定義で,次のいずれかが真である場合:
- システムの障害が起こった
- コミットされていない変更でジョブが終了した
- ゼロ以外の完了コードでジョブが終了した
- 活動化グループが異常終了した
- 活動化グループはコミットされていない変更で終了し,コミットされていない変更はロールバックされます。
システムの障害が起こった場合には,コミットメントIDは,正常に実行された次の初期プログラム・ロード(IPL)の後で通知オブジェクトに入れられます。コミットされていない変更またはゼロ以外の完了コードで終了したジョブの場合には,コミットメントIDは,終了ジョブ処理中に通知オブジェクトに入れられます。コミットされていない変更で終了し,あるいは異常終了した活動化グループの場合には,通知テキストは,活動化グループの終了処理時に通知オブジェクトに入れられます。
コミットメントID(コミット(COMMIT)コマンドのコミット識別 (CMTID)パラメーターに指定される)は,コミットメント定義に対して実行されるそれぞれのコミット操作で指定することができます。複数のジョブが同時にコミットメント制御を使用しているか,あるいは1つのジョブの中で複数のコミットメント定義が同時に使用されている場合には,それぞれのジョブのそれぞれのコミットメント定義が固有の通知オブジェクトを使用するか,あるいは指定されたコミットIDに固有のテキスト入っていてそのテキストが1つのジョブに対して単一のコミットメント定義を識別するようにしなければなりません。コミット(COMMIT)コマンドのCMTIDパラメーターに*NONEが指定された場合には,この項目は無視されます。
- *NONE
- システムまたは処理が異常終了した後で,通知は送信されません。
- オブジェクト名
- 正常にコミットされた最後のトランザクションの通知を受け取るオブジェクトの名前(ライブラリー名/オブジェクト名)を指定してください。指定されたオブジェクトに対する正しい権限を持っていなければなりません。
考えられるライブラリーの値は次の通りです。
- *LIBL
- 最初に一致するものが見つかるまで,現行スレッドのライブラリー・リスト内のすべてのライブラリーが検索されます。
- *CURLIB
- オブジェクトを見つけるために,ジョブの現行ライブラリーが使用されます。ジョブの現行ライブラリーとしてライブラリーが指定されていない場合には,QGPLライブラリーが使用されます。
- ライブラリー名
- オブジェクトが入っているライブラリーを指定してください。
指定できるオブジェクト・タイプの値は次の通りです。
- *MSGQ
- 最後のコミットメント境界を識別するテキストが,指定したメッセージ待ち行列に入れられます。
- *DTAARA
- 最後のコミットメント境界を識別するテキストが,指定したデータ域に入れられます。指定したデータ域はタイプ文字,およびこのジョブに固有のものでなければなりません。 テキストは,データ域に合うように埋め込まれるか,あるいは切り捨てられます。
- *FILE
- 最後のコミットメント境界を識別するテキストが,指定した物理ファイルに追加されます。
指定できる物理ファイル・メンバー値は次の通りです。
- *FIRST
- 物理ファイルの最初のメンバーが通知を受け取ります。
- メンバー名
- 通知を受け入れる物理ファイルのメンバーの名前を指定してください。
上 |
コミットメント定義有効範囲 (CMTSCOPE)
開始されるコミットメント定義の有効範囲を指定します。
- *ACTGRP
- コマンドを出したプログラムと対応した活動化グループに対して,活動化グループ・レベルのコミットメント定義が開始されます。
- *JOB
- ジョブに対して,ジョブ・レベルのコミットメント定義が開始されます。
上 |
テキスト'記述' (TEXT)
開始されるコミットメント定義を簡単に記述するテキストを指定します。このパラメーターの詳細はAS/400 CL(制御言語)解説書(SC88-5339)の付録Aにあります。
- *DFTTEXT
- システムがコミットメント定義の省略時のテキスト記述を提供します。
- '記述'
- 50文字を超えないテキストを,アポストロフィで囲んで指定してください。
上 |
ジャーナル (DFTJRN)
省略時のジャーナルを指定します。省略時のジャーナルには,ある作業単位に含まれる各資源を識別する項目が入っています。OMTJRNEパラメーター値によって,コミットまたはロールバック操作のために各作業単位が開始または終了された時にも項目を入れることができます。
省略時のジャーナルの詳細は,IBM i Information Center(http://www.ibm.com/systems/i/infocenter/)の「コミットメント制御」トピック・コレクションにあります。
コミット可能資源追加(QTNADDCR)アプリケーション・プログラム・インターフェース(API)を介して資源を追加する時に,省略時のジャーナルを使用することができます。APIの呼び出し時にジャーナル名に対して特殊値*DFTJRNを指定した場合には,このDFTJRNパラメーターに指定された名前が使用されます。
- *NONE
- 省略時のジャーナルは指定されません。
省略時のジャーナルの名前は,次の値の1つで修飾することができます。
- *LIBL
- 最初に一致するものが見つかるまで,現行スレッドのライブラリー・リスト内のすべてのライブラリーが検索されます。
- *CURLIB
- ジョブの現行ライブラリーが検索されます。ジョブの現行ライブラリーとしてライブラリーが指定されていない場合には,QGPLライブラリーが使用されます。
- ライブラリー名
- 検索するライブラリーの名前を指定してください。
- ジャーナル名
- 省略時のジャーナルの名前を指定します。
上 |
除外するジャーナル項目 (OMTJRNE)
省略時のジャーナルから除外するジャーナル項目を指定します。DFTJRNパラメーターに*NONEを指定した場合には,このパラメーターは無視されます。
- *NONE
- ジャーナル項目は除外されません。
- *LUWID
- 作業論理単位が正常にコミットまたはロールバックされた場合には,作業論理単位ID(LUWID)および作業論理単位に含まれるすべての資源が入っているジャーナル項目が除外されます。作業論理単位のコミットまたはロールバック中にエラーが起こった場合には,この値に関係なく常に項目が送られます。
上 |
例
例1:活動化グループ・レベルのコミットメント制御の定義
STRCMTCTL LCKLVL(*CHG) CMTSCOPE(*ACTGRP) TEXT('BLUE COMMIT GROUP')
ユーザーによってBLUE COMMIT GROUPとして記述されたこのコマンドは,コマンドを出したプログラムに関連した活動化グループに対して,活動化グループ・レベルのコミットメントを開始します。
トランザクションがコミットまたはロールバック操作によって終了されるまで,更新,挿入,または削除されたレコードだけがロックされます。システムの異常終了に続く初期プログラム・ロード(IPL)の後,ジョブの活動化グループに対する異常終了の後,あるいはジョブまたは活動化グループがコミットされていない変更またはゼロ以外の完了コードで終了した場合には,コミットメント境界の識別は送られません。
例2:ジョブ・レベルのコミットメント制御の定義
STRCMTCTL LCKLVL(*ALL) NFYOBJ(RCVLIB/MYFILE *FILE IDSAVE) CMTSCOPE(*JOB) DFTJRN(MGWLIB/MYJRN)
このコマンドは,ジョブ・レベルのコミットメント定義を開始します。コミットメント・トランザクションがコミットまたはロールバック操作によって終了されるまで,コミットメント制御の下でオープンされたファイル内でアクセスされるすべてのレコードがロックされます。コミットメント・トランザクションが,最後の正常なコミット操作のコミットメント識別コードによって通知オブジェクトが更新されるような方法で終了する場合には,更新する通知オブジェクトはライブラリーRCVLIBのファイルMYFILEのメンバーIDSAVEです。コミットまたはロールバックが行われると,作業論理単位に含まれているすべての資源に関する情報をリストする項目が,ライブラリーMGWLIBのジャーナルMYJRNに書き込まれます。
上 |
エラー・メッセージ
*ESCAPE メッセージ
- CPF8351
- コミットメント制御は既に活動状態になっている。
- CPF8352
- 通知オブジェクト&1タイプ*&4の属性が正しくない。
- CPF8360
- コミットメント制御操作を実行するための記憶域が不十分である。
- CPF8366
- コミットメント定義&2が作成されなかった。理由コードは&1です。
- CPF9801
- ライブラリー&3にオブジェクト&2が見つからない。
- CPF9802
- &3のオブジェクト&2は認可されていない。
- CPF9807
- ライブラリー・リストの1つまたは複数のライブラリーが削除された。
- CPF9808
- ライブラリー・リストの1つまたは複数のライブラリーを割り振ることができない。
- CPF9810
- ライブラリー&1が見つかりません。
- CPF9815
- ライブラリー&3のファイル&2のメンバー&5が見つからない。
- CPF9820
- ライブラリー&1の使用は認可されていない。
- CPF9830
- ライブラリー&1を割り当てることができない。
上 |