リソース競合の回避

このセクションでは、FM/IMS の編集セッションまたはブラウズ・セッションと、インストール済み環境で並行して実行中の他のプロセスとの間のリソース競合を回避する方法を説明します。

ユーザーが編集セッションまたはブラウズ・セッションを開始すると、FM/IMS はバッチ・メッセージ処理 (BMP) プログラムまたは DL/I バッチ処理プログラムを開始します。通常、BMP プログラムまたは DL/I バッチ処理プログラムは、ユーザーが編集セッションまたはブラウズ・セッションを終了するまで実行を継続します。これらのプログラムは、ユーザーの応答を待機しているときが非活動期間となり、ユーザーの応答を処理しているときが活動期間となります。

リソース競合を減らすために取ることができる手段を、プログラムが活動状態のとき、およびプログラムが非活動状態のときの両方について検討する必要があります。ただし、プログラムはほとんどの時間はユーザー応答を待つだけであるため、後者の手段がより重要になります。

非アクティブな編集セッションおよびブラウズ・セッション

ここでは、以下の 2 つのタイプのリソース競合が考えられます。

  • ロック競合
  • /DBRECOVERY コマンドを使用するプロセスとの競合

これらについて順番に説明します。

ロック競合

ロック競合は、同時に実行中のプログラムが、非アクティブな編集セッションまたはブラウズ・セッションが保持しているロックを獲得しようとしたときに発生します。これを回避する方法は、FM/IMS がユーザーに制御を戻す前に、すべてのロックを解放させることです。

次の 2 つのタイプのロックについて検討する必要があります。

  • 未変更データのロック
  • 更新を保護するロック

FM/IMS はユーザーに制御を戻す前に、未変更データに対して保持されているすべてのロックを解放する RLSE 呼び出しを発行します。このため、更新を保護するロックにのみ注意を払えば十分です。

更新を保護するロックは編集セッションのみが保持します。ユーザーに制御を戻す前に、編集セッションが保持している更新を保護するロックを FM/IMS が解放するようにしたい場合は、FM/IMS インストール・モジュールをカスタマイズするときに、AUTOSAVE=Y、EDITFREQ=1、および UAUTOSAV=N を設定する必要があります。これらの設定値を一部の IMS サブシステムに指定して、ユーザーがそれらのサブシステムのデータベースを編集するときに更新を保護するすべてのロックが解除されるようにし、これらのロックが解放されることがそれほど重要ではない他の IMS サブシステムについては別の設定値を指定することができます。

また、BMP モードと DLI モードに別の設定値を指定することもできます。このパラメーターのコーディング方法の詳細については、選択済み処理オプションの指定およびFM/IMS Optionsを参照してください。

注: AUTOSAVE=Y、EDITFREQ=1、および UAUTOSAV=N を設定した場合は、編集の変更内容は、ユーザーが Enter を押すとコミットされます。したがって、この設定で、ユーザーが UNDO および CANCEL コマンドを使用して変更内容の編集を廃棄できなくなります。

/DBRECOVERY コマンドを使用するプロセスとの競合

このセクションで説明されている競合は、編集セッションまたはブラウズ・セッションが BMP モードで実行されるときに発生します。

/DBRECOVERY コマンドを使用してデータベースの割り振りを解除するプロセスは、非アクティブな編集/ブラウズ BMP がそのデータベースにアクセスしているときには実行できません。このプロセスは、ユーザーが編集セッションまたはブラウズ・セッションを終了したときに実行できます。しかし、ほとんどのインストール済み環境では、/DBRECOVERY コマンドを使用してデータベースの割り振りを解除するプロセスはユーザーが帰宅したあと夜間に実行されるため、割り振り解除を実行するために以下のプロセスを常に利用できるというわけではありません。

Online Reorganization Facility などのいくつかのユーティリティーは BMP の一時停止をサポートしており、これによってその BMP がアクセスしているデータベースを割り振り解除するためにユーティリティーで /DBRECOVERY コマンドを使用することができます。ただし、BMP はチェックポイントを発行するときにのみ休止することができるため、非アクティブな編集またはブラウズ BMP を休止する場合は、チェックポイントを発行するために BMP を定期的にウェイクアップする必要があります。

このタイプのリソース競合の発生を停止するために使用できるインストール・オプションには、時間ベースのチェックポイント・オプションとタイムアウト・オプションの 2 つがあります。

時間ベースのチェックポイント・オプションが選択された場合、編集/ブラウズ BMP はユーザー応答を待機しているときにチェックポイントを発行します。このオプションを選択した場合、BMP の休止をサポートするユーティリティーは、非アクティブな編集/ブラウズ BMP を休止することができ、編集/ブラウズ BMP がアクセスしているデータベースを割り振り解除するために、ユーティリティーで /DBRECOVERY コマンドを使用することができます。

IMS サブシステムに対して時間ベースのチェックポイント機能オプションを選択するには、FMN1POPI マクロ・ステートメントの CHKPINTVL パラメーターを使用して、チェックポイント間の時間間隔を指定します。このパラメーターのコーディング方法については、FM/IMS Optionsを参照してください。

タイムアウト・オプションが選択された場合、編集セッションまたはブラウズ・セッションは、一定期間の非アクティブな状態の後でタイムアウトになります。このオプションを選択した場合、編集/ブラウズ BMP がタイムアウトしたときに、/DBRECOVERY コマンドを使用するプロセスを実行して、非アクティブの編集/ブラウズ BMP がアクセス中のデータベースを割り振り解除することができます。

IMS サブシステムに対してタイムアウト・オプションを選択するには、FMN1POPI マクロ・ステートメントの TIMEOUTI パラメーターを使用して、編集/ブラウズ BMP がタイムアウトになる前にユーザーが応答する必要がある期間を指定します。このパラメーターのコーディング方法については、FM/IMS Optionsを参照してください。

アクティブな編集セッションおよびブラウズ・セッション

一般的に、編集セッションまたはブラウズ・セッションがアクティブのときに保持されるロックはリソース競合の原因になりません。これは、ロックは通常非常に短い期間しか保持されず、ロックされるリソースの数が常に非常に少ないためです。ただし例外もあります。CHANGE ALL コマンドおよび REPEAT ALL コマンドは、長期間にわたって大量のロックを保持できるため、これらのコマンドの使用を制御する必要があります。IMS サブシステムに対するそれらのコマンドの使用を制御する場合は、AUTOSAVE=Y および UAUTOSAV=N を設定し、CHGAFREQ パラメーターを使用して、CHANGE ALL 操作中および REPEAT ALL 操作中に使用されるチェックポイント頻度を指定します。このパラメーターのコーディング方法の詳細については、選択済み処理オプションの指定およびFM/IMS Optionsを参照してください。また、MAXGN パラメーターを使用して、データベースの検索時に発行できる DL/I 呼び出しの数を制限することもできます。このパラメーターのコーディング方法の詳細については、サブシステムへのアクセスの制御およびFM/IMS Optionsを参照してください。