レコードの整合性検査

File Manager が共用環境内で動作している場合は、レコードの整合性検査が可能です。これは、あるレコードの内容をファイルに再書き込みする前に、そのレコードが検索されてから (別のユーザーによって) 更新されたかどうかをまず最初に File Manager が検査することを意味します。File Manager はこの検査を実行して検索時のレコードの内容と現在ファイルにあるレコードの内容を比較します。

使用頻度の高い共用ファイルでは、レコードがファイルから最初にフェッチされてから SAVE コマンドが発行されるまで (または、「Autosave frequency (自動保管の頻度)」オプション (指定した数の更新実行後にファイルを保管 (「Autosave frequency (自動保管頻度)」オプション)を参照) の値によって SAVE が自動的に発行されるまで) の間に、自分が更新しようとしているレコードは別のユーザーによって既に更新された可能性があります。

ファイルのレコードの保管は、以下の場合に行われます。
  • SAVE 基本コマンド (ファイルの全レコードに適用される) を発行した。
  • SV または SVV 接頭部コマンド (ファイルの特定レコードに適用される) を発行した。
  • SNGL 表示形式で SV 基本コマンド (表示中の特定レコードに適用される) を発行した。
  • 「AUTOSAVE frequency (AUTOSAVE の頻度)」オプションの値を使用してファイル全体の SAVE をトリガーした。
  • 「Change all autosave frequency (CHANGE ALL 自動保管の頻度)」オプションの値CHANGE コマンド・プロセス中にファイル全体の SAVE をトリガーします。

File Manager が別のユーザーによるレコードの変更を検出した場合、整合性検査が呼び出されます。

File Manager は、整合性検査について以下の 3 つのバリエーションを認識します。
  • レコードを更新しようとする一方で、別のユーザーによってそのレコードの内容が削除された。
  • レコードを削除しようとする一方で、別のユーザーがそのレコードを更新した。
  • レコードを更新しようとする一方で、別のユーザーによってそのレコードの内容が更新された。
前述のそれぞれの保管シナリオについて、整合性検査が行われると File Manager は (上記にリストされた 3 つのバリエーションに従って) 以下のページに示す整合性検査パネルのいずれかを表示します。
注: CHANGE コマンド・プロセスで「CHANGE ALL autosave frequency (CHANGE ALL 自動保管の頻度)」オプション (CHANGE ALL (自動保管および再試行)を参照) の値を使用してファイル全体の SAVE をトリガーする保管シナリオの場合、File Manager は、「Auto retry for CHANGE ALL (CHANGE ALL の自動再試行)」オプション (CHANGE ALL (自動保管および再試行)を参照) が OFF に設定されている場合のみ整合性検査パネルを表示します。
1. 整合性検査のバリエーション 1: (更新を試行したがそのレコードは別のユーザーによって更新された)
 ┌─────────────────────────────────────────────────────────────────────────────────┐
 │  File Manager           Record Updated by other user                            │
 │  Command ===>                                                       Scroll CSR  │
 │                                                                     Format CHAR │
 │  Between the time the record was retrieved and the time a save was issued,      │
 │  another user has updated the record that you are attempting to update. The     │
 │  records are shown below and changes highlighted.                               │
 │                                                                                 │
 │  Enter  SAVE   to save this record anyway.                                      │
 │  Enter  CONTINUE  Save anyway and don't ask again for other records.            │
 │  Enter  CANCEL to skip this update.                                             │
 │  Enter  ABORT  to skip this update and halt performing other updates.           │
 │                                                                                 │
 │  Col 1                                                                          │
 │  Offset      Pending record contents:            Record contents as on file:    │
 │         <----+----1----+----2----+----3-->   <----+----1----+----2----+----3--> │
 │  000000 00000001A This is my change AAAAAA | 00000001AAAAAAAA meanwhile, user 2 │
 │  000034 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |  updated this record AAAAAAAAAAAAA │
 │  000068 AAAAAAAAAAAA                       | AAAAAAAAAAAA                       │
 └─────────────────────────────────────────────────────────────────────────────────┘
2. 整合性検査のバリエーション 2: (更新を試行したがそのレコードは別のユーザーによって削除された)
 ┌─────────────────────────────────────────────────────────────────────────────────┐
 │  File Manager           Record Deleted by other user                            │
 │  Command ===>                                                       Scroll CSR  │
 │                                                                     Format CHAR │
 │  Between the time the record was retrieved and the time a save was issued,      │
 │  another user has deleted the record that you are attempting to update. The     │
 │  record you are updating is shown below.                                        │
 │                                                                                 │
 │  Enter  SAVE   to save this record anyway.                                      │
 │  Enter  CONTINUE  Save anyway and don't ask again for other records.            │
 │  Enter  CANCEL to skip this update.                                             │
 │  Enter  ABORT  to skip this update and halt performing other updates.           │
 │                                                                                 │
 │  Col 1                                                                          │
 │  Offset      Pending record contents:                  Record deleted           │
 │         <----+----1----+----2----+----3-->                                      │
 │  000000 00000001AAMaking a change to a rec |                                    │
 │  000034 ord that someone else deleted AAAA |                                    │
 │  000068 AAAAAAAAAAAA                       |                                    │
 └─────────────────────────────────────────────────────────────────────────────────┘
3. 整合性検査のバリエーション 3: (削除を試行したがそのレコードは別のユーザーによって更新された)
 ┌─────────────────────────────────────────────────────────────────────────────────┐
 │  File Manager           Record Updated by other user                            │
 │  Command ===>                                                       Scroll CSR  │
 │                                                                     Format CHAR │
 │  Between the time the record was retrieved and the time a save was issued,      │
 │  another user has updated the record that you are attempting to delete. The     │
 │  records are shown below and changes highlighted.                               │
 │                                                                                 │
 │  Enter  SAVE   to save this record anyway.                                      │
 │  Enter  CONTINUE  Save anyway and don't ask again for other records.            │
 │  Enter  CANCEL to skip this update.                                             │
 │  Enter  ABORT  to skip this update and halt performing other updates.           │
 │                                                                                 │
 │  Col 1                                                                          │
 │  Offset           Record deleted                 Record contents as on file:    │
 │         <----+----1----+----2----+----3-->   <----+----1----+----2----+----3--> │
 │  000000 00000001AAAAAAAAAAAAAAAAAAAAAAAAAA | 00000001AAA Another user happily u │
 │  000034 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | pdates the record AAAAAAAAAAAAAAAA │
 │  000068 AAAAAAAAAAAA                       | AAAAAAAAAAAA                       │
 └─────────────────────────────────────────────────────────────────────────────────┘
整合性検査パネルにはそれぞれ 4 つのオプションがあり、キーワードを選んでから Enter キーを押して選択できます。オプションは以下のとおりです。
SAVE
他の更新を無視して、自分の更新を適用します。このオプションは、自分が指示した (または削除した) ようにレコードを設定する必要がある場合に使用します。
CONTINUE
他の更新を無視して、自分の更新を適用します。これは、自分が指示した (または削除した) ようにレコードを設定する必要がある場合に使用します。CONTINUE を使用すると、整合性検査が行われる、これ以降のレコードもすべて File Manager が自動的に SAVE するようにします。
この独自の更新を取り消す (PF12 キーまたは CANCEL コマンド)
個々のレコード・エレメントへの自分の更新を無視します。レコードを変更している場合、このオプションによりセッション中の自分の変更は放置され、レコード・エレメントには整合性検査の対象としてのマークが付けられます。
この更新および以降の更新を打ち切る (ABORT コマンド)
「Cancel」オプションと似た動作をしますが、現行コマンドのプロセスを停止して個々の状態を訂正および検査できるようにします。例えば、編集セッションの終了プロセス中に整合性検査が実行され、整合性検査パネルが表示された場合は、ABORT を入力すると、保管プロセスを停止してから再度編集セッションに入り、セッションを再度終了する前にレコードを調べることが可能になります。

関連トピック