このドキュメントでは、Software AG Editor で使用する中間メインストレージエリアであるエディタバッファプールの目的、使用、および操作について説明します。
以下のトピックについて説明します。
エディタバッファプールは、エディタバッファ(SSIZE
)の拡張と見なすことができます。 これは、Software AG Editor で論理ファイルを保持するために使用する中間メインストレージエリアです。
論理ファイルは 1 つまたは複数の論理レコードで構成され、エディタによって保持されるオブジェクトのデータ(ファイルメンバなど)を含みます。 ユーザーは複数のオブジェクトを同時に使用することができ、ユーザーごとに複数の論理ファイルを同時に存在させることができます。
論理ファイル数は(エディタワークファイルのリカバリレコードの比率と同じように)バッファプールパラメータマクロで定義されます。
エディタバッファプールは、ローカルバッファプールやグローバルバッファプール(z/OS および BS2000/OSD のみ)または補助バッファプール(EDPSIZE
)として定義できます。 マルチユーザー環境(CICS、IMS/TM、UTM)の場合は、エディタバッファプールは同じリージョン(ローカルプール)または複数リージョン(グローバルプール)のどちらかのすべてのエディタユーザーによって共有されます。 CMS
環境では、バッファプールは常にローカルプールです。 グローバルバッファプールは、Com-plete 環境では SD エディタワークファイルが異なるため、Com-plete とその他のリージョンとの間では共有できません。
エディタバッファプールには、以下のさまざまな制御テーブルと多数のデータブロックが含まれます。
エリア | サイズ |
---|---|
メインコントロールブロック | 500 バイト |
論理ファイルテーブル | 論理ファイル当たり 20 バイト |
ワークファイルテーブル | レコード当たり 4 バイト |
リカバリファイルテーブル | レコード当たり 16 バイト |
バッファプールブロックテーブル | ブロック当たり 28 バイト |
バッファプールブロック | 下記の本文参照 |
バッファプールブロックのサイズはワークファイルレコードのサイズと同じで、1 つのバッファプールブロックに 1 つの論理ファイルレコードを含めることができます。
バッファプールはエディタの最初のユーザーによって初期化されます。 ウォームスタートでのバッファプールの初期化中に、すべてのリカバリレコードがチェックされてリカバリファイルテーブルが構築されます。
バッファプールにアクセスする機能は複数あります(例えば、レコードの割り当て、読み取り、書き込み、または削除の各機能)。
バッファプールがいっぱいになったら、外部データセットであるエディタワークファイルにバッファプールブロックを移動して、フリーブロックを取得する必要があります。
このような場合は、エディタによってすべての論理ファイルのタイムアウト値がチェックされ、指定時間内にアクセスされていない論理ファイルが削除されます。 これにより、そのバッファプールブロックとワークファイルレコードがすべて解放され、論理ファイルが失われます。
それでも使用できるバッファプールブロックがまだない場合は、指定のタイムアウトパラメータ値(Natural の『ユーティリティ』ドキュメントの「SYSEDT ユーティリティ - エディタバッファプールサービス」の「生成パラメータ」を参照)に従って、最も古いブロックがワークファイルに移動されます。
初期化されていないエディタバッファプールは、Software AG Editor が初めて呼び出されたときに初期化されます。 その後、さまざまなコントロールブロックが作成されます。 バッファプールとワークファイルの初期化には 2 つモードがあります。"コールドスタート" と "ウォームスタート" です。
バッファプールコールドスタートは、エディタバッファプールサブパラメータ COLD
またはエディタバッファプールサービスユーティリティ SYSEDT
によってトリガされるか、自動的にトリガされます(エディタワークファイルが未フォーマットの場合)。
バッファプールコールドスタートでは、エディタバッファプールパラメータ EDBP
または対応するマクロ NTEDBP
の値がワークファイル制御レコードに保存され、すべてのワークファイルリカバリレコードがクリアされます。
バッファプールウォームスタートでは、バッファプールパラメータがワークファイル制御レコードから読み込まれ、すべてのワークファイルリカバリレコードが読み取られて、バッファプールにリカバリファイルテーブルが構築されます。
SYSEDT
ユーティリティを使用してエディタバッファプールを終了することで、エディタバッファプールを非初期化状態にできます。 これにより、TP システムやグローバルバッファプールの再起動を回避できます。
バッファプールに問題があって SYSEDT
を使用できない場合は、プログラム BPTERM
を使用してバッファプールを終了できます。
重要:
バッファプールの再起動後に Natural セッションでエディタを使用する場合は、すべての Natural セッションを復元する必要があります。
エディタバッファプールを操作するパラメータを定義するには、エディタバッファプールパラメータ EDBP
、または Natural パラメータモジュール NATPARM
の対応するマクロ NTEDBP
が必要です。
エディタワークファイルがフォーマットされると、これらのパラメータはワークファイル制御レコードに保存され、その他のレコードはすべてクリアされます。 したがって、以前使用したワークファイルを再フォーマットすると、すべてのエディタチェックポイントとリカバリ情報が失われます。
これらのパラメータの一部は、エディタバッファプールサービスユーティリティ SYSEDT
を使用して、バッファプールの実行中にダイナミックに変更できます。
バッファプールの初期化中に、すべてのリカバリレコードがエディタワークファイルから読み込まれます。 エディタバッファプールの初期化が完了するまで、最初のユーザーは長時間待たねばならず、タイムアウトメッセージが表示されることもあります。
このため、最初のユーザーがアクティブになる前にバッファプールの初期化をトリガする特別な Natural プログラムが用意されています。 このプログラムは、TP モニタの起動中に有効にするか、グローバルバッファプールの使用時にバッチジョブで有効にすることができます。
その後、以下のセッションパラメータを使用してセッションを開始する必要があります。
STACK=(LOGON SYSEDT,user,password;BPINIT;FIN)
CICS 環境の場合:セッションを非同期的に実行している場合は、初期化中に出力されるエラーメッセージを取得するために SENDER=CONSOLE
を指定する必要があります。 ソースプログラム FRONTPLT
が、PLTPI
経由で CICS 起動中に非同期 Natural セッションを開始する方法を示すサンプルプログラムとして提供されています。