専用および汎用のロード入力

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 プログラムから生成された入力ファイルから IMS データベースをロードできるようになります。

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

固定長の汎用フォーマット

固定長レコード・フォーマットは、レコード順次または長さ区切りファイルです。このファイル内のレコードは、すべて同じ長さです。DBUTILF.CBL というサンプル・プログラムは、汎用レイアウト固定長ファイルを作成します。一部のサードパーティー製データベース抽出ユーティリティーでも、これらのファイルを作成できる場合があります。

可変長の汎用フォーマット

可変長レコード・ファイルを使用すると、必要な記憶域とファイル転送時間を削減できます。セグメント名とセグメント・データに加えて、各レコードには最初の 2 バイトにバイナリー長さコード (LL) が含まれている必要があります。このコードは、2 バイトの長さコード自体を含めたレコードの合計長を示します。

可変長レコード・ファイルをメインフレーム上で格納する方法と、そのファイルをファイル転送後にワークステーション上で格納する方法には違いがあります。メインフレームでは、レコード記述語 (RDW) を使用して各レコードが格納されます。この 4 バイトの RDW にはレコード長が保持されます。ファイルがワークステーションにダウンロードされると、これらの RDW は失われます。ワークステーション上に置かれたそのファイルにはレコード長の情報はありません。

RDW が失われる問題を解決するには、2 バイトのバイナリー・レコード長 (LL) を各レコードに格納する必要があります。Micro Focus VRECGEN ユーティリティーを使用すると、この長さが各レコードの接頭辞として付きます。このユーティリティーからの出力は、VRECGEN フォーマット・ファイルと呼ばれます。VRECGEN フォーマット・ファイルをワークステーションに転送すると、このファイルは IMSDBU へ入力される汎用レイアウト可変長ファイルになります。

DBUTILV というサンプル・プログラムは、VRECGEN フォーマット・ファイルを直接作成するため、VRECGEN ユーティリティーを必要としません。IMS/ESA アンロード・ユーティリティーとほとんどのサードパーティー製データベース抽出ユーティリティーでは、VRECGEN を使用して各レコードの前にレコード長を付ける必要があります。

関連項目