削除プログラムの開発 

データセキュリティのため、アーカイブプログラム自体は、データベース内のいかなるデータも削除することはできません。したがって、アーカイブデータを削除するには、別の削除プログラムを使用する必要があります。

削除プログラムは、汎用モジュールを使用してアーカイブを読み込んだ後、データベース内のデータを削除します。これにより、アーカイブ中のデータ損失がなくなり、オンラインでのアーカイブが可能となります。

削除プログラムは、必要に応じて調整することが可能です。削除するデータオブジェクトのデータは、直接削除プログラムから取り出すか、論理データベースを経由して取り出すことができます。アーカイブファイルからのデータの読み込みは、 ADK 汎用モジュール(機能グループ ARCH )によって、オブジェクト全体について行います。

アーカイブカスタマイズの制御パラメータによって、アーカイブプログラムによりアーカイブファイルが閉じられると同時に、削除プログラムを自動的に呼び出すかどうか、およびインデックスを更新するかどうかを指定することができます( アーカイブ内のデータオブジェクトのアクセス - インデックス インデックス登録およびアーカイブの個々のデータオブジェクトにアクセスするための使用も参照してください)。また、アーカイブのカスタマイズで削除プログラムのテストおよび稼動バリアントを登録することもできます。

削除プログラムが処理するのは、常に1つのアーカイブセッションファイルだけです。複数の削除プログラムを平行して実行し、各削除プログラムについて1つのアーカイブセッションファイルを処理することが可能です。

ガイドライン

削除プログラムは、アーカイブファイルの読み込みによって、どのデータをデータベースから削除するかを決める必要があります。これによって、アーカイブに保存され、読み取れたデータだけが、データベースから削除されることを保証します。

これらのデータを削除するためには、アーカイブクラスの汎用モジュールを呼び出す必要があります。それらの汎用モジュールは、“ COMMIT WORK ”せず、すなわち、データを直ちに削除せずに、“ PERFORM ON COMMIT ”を呼び出します。

削除プログラムは、汎用モジュール ARCHIVE_GET_CUSTOMIZING_DATA によってオブジェクトカウンタの値を得る必要があります。この汎用モジュールは、 COMMIT WORK の前に削除プログラムによってデータオブジェクトがいくつ呼び出されるかを制御します。

汎用モジュールの呼び出し順序

1. 削除の初期化 - ARCHIVE_OPEN_FOR_DELETE
この汎用モジュールが呼び出されるのは、削除プログラムの起動時だけです。この汎用モジュールは、以下のタスクを実行します。

− 読み込むアーカイブファイルのオープン

− アーカイブアクセスのためのハンドルの提供

− アーカイブファイルに示されたすべてのアーカイブクラスのインクルード

− アーカイブ管理におけるステータス情報の設定

− アーカイブリンクへのアーカイブファイルのパス

2. アーカイブファイルからの次のデータの読み込み - ARCHIVE_GET_NEXT_OBJECT
すべてのアーカイブ読み込みアクセスに対して、この汎用モジュールを使用して以下のアーカイブデータオブジェクトを読み込みます。この汎用モジュールは、以下のタスクを実行します。

− アーカイブファイルからのアーカイブデータオブジェクトの読み込み

− データパケットをともなうアーカイブクラスの供給

− 標準クラスへのデータコンテナの提供

この汎用モジュールは、データオブジェクトが提供されなくなるまで、ループ中で(繰返し) 呼び出される必要があります。

3. データベース内のアーカイブデータの削除
データの書き込み時に OBJECT_DELETE_FLAG がアーカイブプログラムで‘ X ’に設定されていた場合、汎用モジュール ARCHIVE_DELETE_OBJECT_DATA は、 ARCHIVE_GET_NEXT_OBJECT を使って最後に読み込まれたデータオブジェクトのすべてのアーカイブクラスについて、データベース内のデータを削除します。したがって、削除プログラムでこの汎用モジュールを呼び出す必要があるのは、データオブジェクトの読み込み( ARCHIVE_GET_NEXT_OBJECT )ごとに一度だけです。
データオブジェクトから標準クラスデータを読み込み、これらをデータベース内で削除する必要があります。データオブジェクトがレコードを提供できなくなるまで、標準クラス読み込み汎用モジュール( ARCHIVE_GET_NEXT_RECORD )をループ内に置いてください。アーカイブプログラムが RECORD_FLAGS 項目の情報を取得すれば、この情報を削除プログラムに使用して、どのデータを実際にデータベースから削除するかを決めることができます。

4. 削除終了 - ARCHIVE_CLOSE_FILE
この汎用モジュールは、以下のタスクを実行します。

− アーカイブファイルのクローズ

− インクルードされたアーカイブクラスの解放

− 現在ハンドルの破棄