REBUILD

概要

REBUILD は、コマンド プロンプトで呼び出すファイル管理ユーティリティです。主な機能は、次のとおりです。

REBUILD がファイルに対して実行する操作は、REBUILD コマンド行で指定するオプションによって異なります。


注意 :


コマンド行

REBUILD コマンド行の形式は、次のとおりです。

rebuild in-file [,out-file] [options]

in-fileout-file の両方に、ファイル名の拡張子を付ける必要があります。out-file のファイル名は in-file のファイル名と異なる必要があります。in-fileout-file の代わりに環境変数を使用してファイル名マッピングを行うことができます。

REBUILD が実行する処理内容は、コマンド行で指定するオプションにより定義されます。

オプション ファイル

REBUILD コマンド行で at 文字 (@) の次にファイル名を記述すると、そのファイルに REBUILD コマンド行オプションが含まれていることを示します。

REBUILD コマンド行オプションを定義するためにファイルを使用する場合、ファイルは ASCII テキスト ファイルである必要があります。

REBUILD オプション ファイル内では、

rebuild infile.dat, outfile.dat @conv.par

上記の例では、conv.par は REBUILD オプションを含む ASCII テキスト ファイルです。

情報のリダイレクト

REBUILD ユーティリティで表示されるすべての情報は、標準的なオペレーティング システムのリダイレクトを使用して、テキスト ファイルにリダイレクトすることができます。

> 新規ファイルを作成します。
>> 既存のファイルを拡張します。

たとえば、次のように記述します。

rebuild oldms001.dat,ms001.dat -k:1+20<N> -i >> rebuild.prt

上記の例では、REBUILD からの出力を既存のファイル rebuild.prt にリダイレクトします。


警告 : 出力をリダイレクトする場合は、-v オプションを使用しないでください。


REBUILD オプション

REBUILD で実行される処理は、コマンド行で指定したオプションにより定義されます。

次のオプションを使用できます。

/d 破損したデータ レコードをスキップします。
/e 不正な重複キーを報告し、処理を続行します。
/f 索引ファイルを検証します。
/i 処理するファイルの情報を表示します。
/n ファイルに関する情報を表示します (他の処理は実行されません)。
/p IDXFORMAT "8" ファイルを正しい場所にリビルドします。
/q クイック リビルドを指定します。
/t 出力ファイルの形式を指定します。
/u 最後の更新操作が完了していないファイルを回復します。
/v ファイルが処理されると増えるレコード カウントを表示します。
/y REBUILD にファイル サイズの不一致を無視するよう強制します。
/x 索引ファイルを再編成するときにデータを書き込む順番を指定します。
//v REBUILD のバージョン番号を表示します。

/d

索引ファイルのレコードのデータ部分が破壊されていることがわかった場合に、REBUILD がその次のレコードの最初から続行するように指定します。

デフォルト

/d オプションが設定されていない場合、破壊されたレコードが見つかると、REBUILD はファイル ステータス エラー 9/018 を返します。


/e

リビルド中に、破壊されたファイルとレコードに不正な重複キーが発見された場合、REBUILD がその重複キーを報告し、残りのレコード処理を続行するよう指定します (重複キーを持つレコードは書き込まれません)。

デフォルト

/e オプションが指定されていない場合は、不正な重複キーがあると、「出力ファイルのエラー - ステータス 22」のエラーで REBUILD が終了します。


/f

索引ファイルを検証します。ファイルが破壊されている場合は、REBUILD は 0 以外の値を返します。

パラメータ
c 実行する検証を指定します。それぞれの値を足すことで、1、2、および 8 の検査を組み合わせて選択できます。(検査を多く実行するほど、検証時間が長くなります。) デフォルトの設定は 11 です。
1 データ ファイルの構造を確認し、レコード数を数えます。
2 空き領域リスト (FSL) の構造を確認します。
8 索引ファイルの構造を確認します。
256 データ ファイル構造を確認し、別のプロセスで共有できるオープンなファイルを持つレコード数を数えます。このオプションは他の検査と組み合わせて指定することはできません。
d メッセージ レベルを指定します。この値は累積なので、レベル 4 を選択すると、レベル 1、2、および 3 のメッセージも受け取ります。デフォルトの設定は 5 です。
0 何も表示しません。
1 エラー メッセージだけを表示します。
2 選択したオプションを示すメッセージを表示します。
3 キーの定義、レコード長、データの圧縮、およびファイルを作成、更新するファイル ハンドラのバージョンを含むファイル情報を表示します。
4 ファイルに存在する次のようなさまざまなタイプのレコードを表示します。
1 IDXFORMAT"4" 情報レコード
2 削除されたレコード
3 システム レコード
4 データ レコード
5 上書きでサイズを縮小したデータ レコード
6 上書きでサイズが拡大し、元のレコード領域に適合できなくなったデータ レコード。その代わり、このレコードは、レコードを含む別のレコード領域をポイントします。
7 タイプ 6 のレコードでポイントされたレコード
8 タイプ 6 レコードでポイントされたサイズが縮小したレコード
5 キーの圧縮で節約された領域の大きさに関する情報を含め、各キー構造についての統計を表示します。

注意 : 表示は、「ファイルが破壊されています」というメッセージで終了することがあります。これは、ファイル内の制御情報がデータと一致していないことを意味します。たとえば、レコードが削除されており、削除レコード リストにそれが含まれていない場合です。このようなファイルは、データが破壊されていなくても破壊されていると報告されます。


rebuild test.dat /f:c9

データ ファイルの構造 (1) と、索引ファイルの構造 (8) を検査します。

rebuild test.dat /f

ファイルについて完全性検査を完全に実行し、すべての情報を表示します。


/i

レコード長、ファイル タイプ、およびキー構造を含む、入出力ファイルについての情報を表示します。情報を表示するだけで、そのほかの処理を実行しない場合は、代わりに /n オプションを使用します。


/n

/n オプションは /i オプションと同じ情報を表示しますが、そのほかの処理は実行しません。


/p

正しい場所に IDXFORMAT"8" ファイルをリビルドするよう REBUILD に指示します。リビルドで使用するディスク容量は少なくてすみますが、障害が発生した場合はファイルが損失します。このオプションでリビルドする場合は、実行前にファイルのバックアップを作成してください。


/q

クイック リビルドを指定します。

このオプションを使用すると、REBUILD のパフォーマンスが向上します。ただし、処理により多くのディスク容量が使用されます。


/u

最後の更新操作が完了していないファイルを回復するよう、REBUILD に指示します。ファイルの更新中にプログラムに障害が発生したり終了した場合は、このオプションを使用します。REBUILD でファイルに関する特定の問題を認識し修正することができます。これは標準的なリビルドを実行するより速いので、このオプションを最初に実行してください。


/v

ファイル処理中に、REBUILD に進捗状況を表示させます。これは、REBUILD の処理の進捗を追跡する場合に役立ちます。出力をファイルにリダイレクトしている場合は、/v オプションを使用しないことをお勧めします。

パラメータ
n /f オプションを指定すると、n 個のレコードごとに REBUILD は「.」文字を表示します。
/f オプションを指定しないと、n 個のレコードごとにレコード カウントを表示します。:n を指定しないと、REBUILD はその処理段階についての情報を表示します。

/x

参照キーを定義します。参照キーは、索引ファイルを入力ファイルとして指定したときにデータが書き込まれる順序を指定します。

パラメータ
n 使用するキーの番号。主キーは 0 で、代替キーには、作成プログラムの SELECT 文で指定した順序で 1 から番号が付けられます。
デフォルト

/x オプションを指定しないと、主キー (キー 0) が想定されます。

/x:2 

データは、ファイルの 2 番目の代替キーによって指定された順序で書き込まれます。


/y

物理ファイルのサイズとファイル ヘッダーに表示されているファイル サイズ間の不一致を無視するよう REBUILD に指示します。

デフォルト

物理ファイルのサイズがファイル ヘッダーの表示より小さいと REBUILD が検出した場合は、停止します。この問題は、ストライプ化情報が REBUILD に提供されないために生じることがあります。このような状況で、リビルドを継続するとレコードが損失することがあります。


//v

REBUILD のバージョン番号を表示します。


索引ファイルの再編成

ファイルを再編成するコマンド行の形式は、次のとおりです。

rebuild in-file,out-file [/d] [/x] [/n] [/i] [/v]

索引ファイルは、レコードの追加、削除、および変更により更新されるときに、索引構造体とデータ構造体に切り離されるため、処理効率が悪くなります。さらに、削除されたレコードによってできた領域は常に再使用されるわけではないので、ファイルが必要以上に大きくなってしまいます。

多くの変更を行った場合、索引ファイルを再編成し、データと索引を順にリビルドし、空き領域を再使用すると便利です。この作業により、最適なパフォーマンスとデータの完全性が保証されます。

ファイルを再編成する意義は他にもあります。たとえば、ファイルを順に処理する場合、ファイルを処理するためのアクセス時間は時間が経つにつれて増えます。これは、レコードが更新され、順番が変更されるためです。このような状況のときにファイルを再編成すると、アクセス時間を短縮することができます。

たとえば、次のように記述します。

rebuild infile.dat,outfile.dat

この例では、REBUILD は、索引ファイル (infile.idx) を使用してデータ ファイル (infile.dat) を読み込み、出力ファイル (outfile.dat) を作成します。infile.dat の削除されたレコードは、出力ファイルに書き込まれません。


注意 : 入力ファイルと出力ファイルに同じファイル名を使用することはできません。


破損した索引ファイルのリビルド

索引をリビルドするためのコマンド行の形式は、次のとおりです。

rebuild in-file [-i] [-v] [-e] [-q]

索引ファイルの破損理由はいくつかあります。次に例を示します。

COBOL プログラムで破損した索引ファイルを開くときに、ランタイム システムがファイルの破損を検出すると、拡張ファイル ステータス コードを返します。

REBUILD では、破損した索引ファイルを自動的にリビルドできます。


注意 : REBUILD を使用して既存のデータ ファイルから新しい索引ファイルを生成すると、元の索引に記述されているデータ ファイルの空き領域情報は失われます。これは、データ ファイルの空き領域を再使用できず、ファイルが必要以上に大きくなる可能性があることを意味します。この問題を解決するには、索引をリビルドした後でファイルを再編成する必要があります。


次の例では、REBUILD は、.idx ファイルを読み取ってキー情報を取得し、さらにデータ ファイル infile.dat を順に読み取って、新しい索引ファイルを作成します。

rebuild infile.dat

索引ファイルの検証

索引ファイルを検証するためのコマンド行の形式は、次のとおりです。

rebuild in-file /f

REBUILD では多くの検証を実行できます。これらの検証をすべて要求したり、サブセットだけを要求したりできます。確認する内容が多いほど、検証処理にかかる時間は長くなります。

次の例では、REBUILD はファイルの完全性をすべて検査します。

rebuild test.dat /f

REBUILD のメッセージ

REBUILD は、索引ファイルのリビルド、変換、再編成の実行中に、エラー、情報、または警告の各メッセージを出力することがあります。REBUILD のエラー メッセージのリストは、次の項に記載されています。

REBUILD がエラーを発見すると、コマンド行とそれに続いてエラー メッセージを表示します。コマンド行のエラーの場合、REBUILD は、エラーが発生したコマンド行のポイントの下にカラット (^) を表示します。

構文エラー メッセージ

データ圧縮の値が範囲外です - 0 から 255 の範囲を指定してください

データ圧縮に指定した整数が、許容範囲内にありません。

解決法

データ圧縮には、0 〜 255 の間の整数を指定してください。

このデータ ファイルの圧縮は何度も行われているのでこれ以上圧縮できません

データ圧縮のオプションが 2 回以上、つまり /c:[dn][dn] と指定されました。

解決法

正しい形式 : /c:[dn][in] を使用してください。

入力と出力ファイル名が同一です。出力ファイル名を変更しなさい

出力ファイルに入力ファイルと同じ名前が指定されました。

解決法

別の出力ファイル名を使用してください。

索引圧縮の値が範囲外です - 0 から 15 の範囲を指定してください

索引圧縮に指定した整数が、許容範囲内にありません。

解決法

0 〜 15 の間の整数を指定してください

コマンド行に間違いがあります

コマンド行に、上記以外のエラーが含まれています。

解決法

入力中のコマンド行の構文、スペル、および空白を確認してください。

圧縮ファイル選択エラー - データは 'd'、索引は 'i' を指定してください

データまたは索引の圧縮の指定が間違っています。

解決法

d または i パラメータを指定してください。

索引ファイル フォーマット指定エラー - 0 から 4 の整数を指定してください

索引ファイル フォーマットに指定した値が無効です

解決法

有効な値を指定してください。「リビルド オプション」の項の /s および /t オプションの説明を参照してください。

キーの長さ指定エラー - キー長に 0 は指定できません

定義されたキーに長さが 0 のキーがあります。これは不正な値です。このエラーは、区切り文字の不正使用が原因で生じた可能性があります。

解決法

定義したキーのすべてに有効な長さが指定されていることを確認してください。

キー指定の誤り - 指定されたキーがレコード内に存在しません

定義されたキーのうちの 1 つが、レコードに完全に含まれていません。これは正しくありません。

解決法

キーがレコードに完全に含まれていることを確認してください。可変長レコードの場合、キーは最小長レコードに完全に含まれている必要があります。

ファイル編成が正しくない - 再構築には索引が必要です

出力ファイルのない索引ファイル以外の入力ファイルが指定されています。出力ファイルがないと、REBUILD では索引ファイルをリビルドするものと想定します。

解決法

入力ファイルが索引ファイルでない場合は、出力ファイルを指定してください。

レコード長エラー - 固定長のレコード長に 0 は指定できません

レコードの長さを 0 に指定しています。これは無効です。

解決法

この COBOL システムのレコード長の範囲内で、0 より大きい値を指定する必要があります。

レコード長エラー - /r オプションで最大長に最小長より小さい値が指定されています

レコードの最大長および最小長を指定する整数の最大長が、最小長よりも小さくなっています。これは無効です。

解決法

レコードの最大長または最小長を再入力して、最大長が最小長よりも大きいことを確認してください。

レコード パラメータ エラー - /r オプションの V 形式は最小長と最大長を '-' で区切る

可変長ファイルのレコード構造を指定する場合に、最小レコード長と最大レコード長がハイフン (-) で区切られていません。

解決法

正しい形式 : /r:Vminreclen-maxreclen を使用してください。

データ圧縮処理の出力ファイルが指定されていません

データ圧縮用の出力ファイル名が指定されていません。

解決法

有効な出力ファイル名を指定してください。

圧縮番号を入力してください

圧縮番号を指定するべきところに、別の文字が指定されました。

解決法

このパラメータには圧縮番号を指定してください。

出力編成が指定されていますが、出力ファイル名が指定されていません

出力編成を指定していますが、ファイル名を指定していません。

解決法

出力ファイル名を指定してください。

オプション ファイルが見つかりません

コマンド行に指定されたオプション ファイルが見つかりません。

解決法

ファイルが存在するか、およびコマンド行の指定が正しいかを確認してください。

実行エラー メッセージ

***入力ファイル関連エラー - ディスク上に領域が確保できません

ディスク容量が不足しているため、ファイル処理を続行できません。

解決法

入力ファイルが破壊されていないことを確認してください。リビルドが完了していない場合でも、出力ファイルを閉じると、使用できます。

***入力ファイル関連エラー - duplicate キー - 重複キー指定されていません

無効な重複キーが作成されるため、レコードは出力ファイルに書き込まれませんでした。

***入力ファイル関連エラー - ファイルがロックされています

入力ファイルとして指定したファイルが、別のプロセスによってロックされています。

解決法

ファイルが解放されてアクセス可能になってから、再試行してください。

***入力ファイル関連エラー - 入力ファイルが見つかりません

入力ファイルが見つかりません。戻りコードは 1 に設定されます。

解決法

入力したファイル名が正しく、そのファイルが実際に存在することを確認してください。

***入力ファイル関連エラー - 不正なファイル名が指定されました

ファイル名がオペレーティング システムまたは COBOL システムの規格に準拠していません。

解決法

正しいファイル名を使用して、ファイル操作をもう一度実行してください。

***入力ファイル関連エラー - /x オプションに無効な参照キーが指定されています

参照キー オプションで指定された番号 (/x) 指定ファイルのキーの番号と等しいまたはより大きい値です。戻りコードは 1 に設定されます。

解決法

必要なキーを確認して、もう一度実行してください。

***入力ファイル関連エラー - ステータス xx

***入力ファイル関連エラー - ステータス 9/yyy

解決法については、アプリケーションのサプライヤにお問い合わせください。

***出力ファイル関連エラー - レコード長が最小長から最大長の範囲外です

レコード長が最小値より小さい、または、最大値より大きい値のレコードを REBUILD が出力ファイルに書き込もうとしました。

解決法

/r オプションに指定したレコード長を変更してください。

***出力ファイル関連エラー - ステータス xx

***出力ファイル関連エラー - ステータス 9/yyy

解決法については、アプリケーションのサプライヤにお問い合わせください。

情報メッセージ

REBUILD がファイルを処理している間に、次の情報メッセージが出力されます。

再構築の処理が成功しました

指定したファイルが正常に再構築されました。

レコードは変換処理済です

ファイルの変換、再構築、または再編成時に指定数のレコードが処理されました。

警告メッセージ

選択した操作によっては、不要なコマンド行オプションがあります。その場合、不要なオプションは表示されますが無視されて、処理を続行します。オプションが正しくても、他の情報を省略したために REBUILD が誤った処理を選択することがあります。この場合は、コマンド行を修正して再実行してください。

*** 警告 *** - /x オプションを無視する - /x オプションは再構築では使用しません

索引ファイルの再編成以外の操作を選択したときに、参照キー オプションが指定されました。/x オプションは無視されます。