IMS データベース ユーティリティ (IMSDBU)

IMSDBU は、さまざまな操作制御機能を備えたデータベース管理ツールです。これを使用して、データベースの初期化、ロード、アンロード、および再編成を実行できます。IMSDBU の操作を調整することで、ファイル命名規則、進捗レポート、統計、監査レポートなどを制御できます。

IMSDBU はスタンドアロン ユーティリティとして動作するため、IMSDBU を使用する際に PSB は必要ありません。IMSDBU は、DBDGEN 機能を使用して定義した物理データベースに対して作用します。また、アプリケーション リージョンの外部で動作するため、操作が効率的です。

IMSDBU 機能

以下のような IMSDBU 機能を使用して、IMS データベースを管理できます。

高パフォーマンス
IMSDBU は、アプリケーション プログラムが DL/I 呼び出しを発行するためにかかる時間の数分の 1 でデータベースをロードおよびアンロードできます。これは、IMSDBU が階層データベース エンジンで物理アクセス レイヤーと直接交信するためです。このレイヤーは、MFIMS DL/I 言語インターフェイスと IMSDBU との間で共有されます。これにより、データベースとセグメントのフォーマットの一貫性を確保できます。
Load および Unload 出口
セグメント出口を使用すると、ユーザー記述プログラムでセグメント選択を制御し、ロードおよびアンロード処理中にセグメント データを変更できます。出口プログラムは、データベース セグメントごとに呼び出されます。出口プログラムでは、セグメントを削除したり、セグメント データを変更したり、セグメント データを未変更のまま渡したりできます。セグメントを削除すると、そのセグメントの子セグメントも自動的にすべて削除されます。セグメント出口を有効にするには、SEGEXIT 指令を使用します。

圧縮出口は、Load への入力ファイルおよび Unload の出力ファイルに使用されます。圧縮出口により、入力ファイルまたは出力ファイルのセグメント圧縮または暗号化 (あるいはその両方) が可能になります。圧縮出口は、MFIMS データベースに格納されたデータには使用されません。入力ファイルの圧縮解除および出力ファイルの圧縮を行うために、CBLDCIMS という標準ルーチンが用意されています。ユーザー記述プログラムでは、別のセグメント エンコーディングを実行できます。この出口を有効にするには、COMPRESS 指令を使用します。

IMS/ESA データベースをアンロードするための IMSDBUV サンプル プログラムは、IMSDBUV Load への入力用の圧縮ファイルを作成し、CBLDCIMS ルーチンを使用して解凍できます。

これらの出口の詳細は、デフォルトで %PUBLIC%\Documents\Micro Focus\Enterprise Developer\Samples\Mainframe\IMS\Classic\Examples ディレクトリにあるサンプル ファイル DBUPARMS.CPY に記載されています。

進捗レポート
IMSDBU は、データベース関数の処理中に進捗をレポートします。データベースのロードまたは論理ポインターの更新を行う際に、IMSDBU は進捗状況および推定残り時間を表示します。データベースのアンロードについては、進捗を算出できないため、IMSDBU は処理中のセグメント番号を表示します。進捗レポートの頻度は、PROGRESS 指令で制御します。
詳細レポートおよび統計
データベース関数の結果を示す詳細レポートを利用できます。このレポートは、ASCII テキスト ファイルとして生成されます。詳細レポートにより、最後に使用した関数の反映、または履歴レコードの保持が可能です。このレポート機能は、LIST および LISTOPEN 指令で制御します。このレポートには、以下の項目が含まれます。
  • 日時、データベース名、および実行された関数を示す開始メッセージ。
  • 使用した指令の一覧を示す有効なオプション。
  • 実行中に発行された情報、警告、およびエラー メッセージ。
  • Load および Unload 関数のデータベース統計。これらには、セグメント タイプ別にリストされたセグメント数、ルートごとの最大数、およびルートごとの平均値が含まれます。
  • 関数によって生成された終了メッセージ。これは、関数の成功または失敗、および終了戻りコード値を示します。このメッセージは、アクティビティの履歴ログにも含まれます。
アクティビティ履歴ログ
アクティビティ履歴ログは、すべての IMSDBU アクティビティを対象として保持できます。関数が完了すると、エントリがログに書き込まれます。このエントリは、日時、データベース名、および関数の終了メッセージで構成されます。最新のエントリは、ファイルの最後に書き込まれます。このログは、ASCII テキスト ファイルとして生成され、LOG 指令で制御します。
論理ロードの簡略化
IMSDBU は、Load 関数を使用して、すべての物理データベースを同じ方法でロードします。データベースに論理子が含まれている場合、ポインター更新関数は論理子をその親に接続し、ロード後に対のセグメントを分解します。

論理データベースのロードは、Makelist 関数を使用することでさらに簡略化できます。Makelist は、論理的に関連したデータベースの全セットをロードするために必要なステップをすべて生成します。ユーザーが DBD 名を指定すると、Makelist はその関係に従ってセットを作成します。また、そのセットから、ステップを実行する Runlist 関数への入力用のファイルを生成します。

専用および汎用のロード入力
IMSDBU は、データベースのロード用に専用の入力ファイル レイアウトを提供します。このファイル レイアウトは、IMSDBU Unload 関数または IMSDBUV プログラムで作成します。IMSDBUV は、COBOL のソース コードとして提供されており、source ディレクトリにインストールされています。このプログラムをメインフレームに転送し、コンパイルして実行すると、IMS/ESA セグメント データを抽出できます。

この専用レイアウトにより、データベースのロードが簡略化されます。ファイルおよびデータの物理特性は、ファイル内のヘッダーおよびトレーラーのレコードに格納されます。これには、セグメント名の配置、セグメント データ、圧縮オプションなどの項目が含まれます。この形式でのデータベースのロードは、入力ファイルを指定して LAYOUT(D) 指令を使用する場合と同様に簡単です。参考までに、IMSDBU レイアウト ファイルは、必要な記憶域および転送時間を削減するために可変長ファイルになっています。

IMSDBU は、専用の IBM レイアウトもサポートしています。これは、LAYOUT(I) 指令を使用して指定され、DFSURGU0 などの IMS/ESA DB アンロード ユーティリティを使用して作成された入力ファイルをサポートします。このレイアウトは、指令値 SEGM(7)、DATA(36)、RECFM(V)、および NOCOMPRESS を設定します。このレイアウトは、入力ファイル内の削除バイト設定に従い、削除済みとしてマークされたセグメントをスキップするように IMSDBU に指示します。

IMSDBU は、LAYOUT(S) 指令を使用して順編成入力ファイルをサポートします。これにより、COBOL プログラムから生成された入力ファイル、または Drag and Drop を使用してメインフレームから順編成ファイルとしてダウンロードした入力ファイルから IMS データベースをロードできます。

IMSDBU は、LAYOUT(G) 指令を使用して入力ロード ファイルの汎用レイアウトをサポートします。汎用レイアウトには、セグメント名およびセグメント データを各レコードの同じ位置に含める必要があります。このセグメントは、固定長または可変長として指定できます。SEGM 指令は、レコード領域内のセグメント名の位置を示します。DATA 指令は、セグメント データの開始位置を示します。ファイル内のセグメントは階層順になっている必要がありますが、キー順になっている必要はありません。