REBUILD は、コマンド プロンプトで呼び出すファイル管理ユーティリティです。主な機能は、次のとおりです。
REBUILD がファイルに対して実行する操作は、REBUILD コマンド行で指定するオプションによって異なります。
注意 :
上記の条件を満たさない場合は、予期しない結果が生じることがあります。
REBUILD コマンド行の形式は、次のとおりです。
rebuild in-file [,out-file] [options]
in-file と out-file の両方に、ファイル名の拡張子を付ける必要があります。out-file のファイル名は in-file のファイル名と異なる必要があります。in-file や out-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 で実行される処理は、コマンド行で指定したオプションにより定義されます。
次のオプションを使用できます。
/d | 破損したデータ レコードをスキップします。 |
/e | 不正な重複キーを報告し、処理を続行します。 |
/f | 索引ファイルを検証します。 |
/i | 処理するファイルの情報を表示します。 |
/n | ファイルに関する情報を表示します (他の処理は実行されません)。 |
/p | IDXFORMAT "8" ファイルを正しい場所にリビルドします。 |
/q | クイック リビルドを指定します。 |
/t | 出力ファイルの形式を指定します。 |
/u | 最後の更新操作が完了していないファイルを回復します。 |
/v | ファイルが処理されると増えるレコード カウントを表示します。 |
/y | REBUILD にファイル サイズの不一致を無視するよう強制します。 |
/x | 索引ファイルを再編成するときにデータを書き込む順番を指定します。 |
//v | REBUILD のバージョン番号を表示します。 |
索引ファイルのレコードのデータ部分が破壊されていることがわかった場合に、REBUILD がその次のレコードの最初から続行するように指定します。
/d オプションが設定されていない場合、破壊されたレコードが見つかると、REBUILD はファイル ステータス エラー 9/018 を返します。
リビルド中に、破壊されたファイルとレコードに不正な重複キーが発見された場合、REBUILD がその重複キーを報告し、残りのレコード処理を続行するよう指定します (重複キーを持つレコードは書き込まれません)。
/e オプションが指定されていない場合は、不正な重複キーがあると、「出力ファイルのエラー - ステータス 22」のエラーで REBUILD が終了します。
索引ファイルを検証します。ファイルが破壊されている場合は、REBUILD は 0 以外の値を返します。
c | 実行する検証を指定します。それぞれの値を足すことで、1、2、および 8 の検査を組み合わせて選択できます。(検査を多く実行するほど、検証時間が長くなります。) デフォルトの設定は 11 です。
|
||||||||||||||||||||||||||||
d | メッセージ レベルを指定します。この値は累積なので、レベル 4 を選択すると、レベル 1、2、および 3 のメッセージも受け取ります。デフォルトの設定は 5 です。
|
注意 : 表示は、「ファイルが破壊されています
」というメッセージで終了することがあります。これは、ファイル内の制御情報がデータと一致していないことを意味します。たとえば、レコードが削除されており、削除レコード リストにそれが含まれていない場合です。このようなファイルは、データが破壊されていなくても破壊されていると報告されます。
rebuild test.dat /f:c9
データ ファイルの構造 (1) と、索引ファイルの構造 (8) を検査します。
rebuild test.dat /f
ファイルについて完全性検査を完全に実行し、すべての情報を表示します。
レコード長、ファイル タイプ、およびキー構造を含む、入出力ファイルについての情報を表示します。情報を表示するだけで、そのほかの処理を実行しない場合は、代わりに /n オプションを使用します。
/n オプションは /i オプションと同じ情報を表示しますが、そのほかの処理は実行しません。
正しい場所に IDXFORMAT"8" ファイルをリビルドするよう REBUILD に指示します。リビルドで使用するディスク容量は少なくてすみますが、障害が発生した場合はファイルが損失します。このオプションでリビルドする場合は、実行前にファイルのバックアップを作成してください。
クイック リビルドを指定します。
このオプションを使用すると、REBUILD のパフォーマンスが向上します。ただし、処理により多くのディスク容量が使用されます。
最後の更新操作が完了していないファイルを回復するよう、REBUILD に指示します。ファイルの更新中にプログラムに障害が発生したり終了した場合は、このオプションを使用します。REBUILD でファイルに関する特定の問題を認識し修正することができます。これは標準的なリビルドを実行するより速いので、このオプションを最初に実行してください。
ファイル処理中に、REBUILD に進捗状況を表示させます。これは、REBUILD の処理の進捗を追跡する場合に役立ちます。出力をファイルにリダイレクトしている場合は、/v オプションを使用しないことをお勧めします。
n | /f オプションを指定すると、n 個のレコードごとに REBUILD は「.」文字を表示します。 /f オプションを指定しないと、n 個のレコードごとにレコード カウントを表示します。:n を指定しないと、REBUILD はその処理段階についての情報を表示します。 |
参照キーを定義します。参照キーは、索引ファイルを入力ファイルとして指定したときにデータが書き込まれる順序を指定します。
n | 使用するキーの番号。主キーは 0 で、代替キーには、作成プログラムの SELECT 文で指定した順序で 1 から番号が付けられます。 |
/x オプションを指定しないと、主キー (キー 0) が想定されます。
/x:2
データは、ファイルの 2 番目の代替キーによって指定された順序で書き込まれます。
物理ファイルのサイズとファイル ヘッダーに表示されているファイル サイズ間の不一致を無視するよう REBUILD に指示します。
物理ファイルのサイズがファイル ヘッダーの表示より小さいと REBUILD が検出した場合は、停止します。この問題は、ストライプ化情報が REBUILD に提供されないために生じることがあります。このような状況で、リビルドを継続するとレコードが損失することがあります。
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 は、エラーが発生したコマンド行のポイントの下にカラット (^) を表示します。
データ圧縮に指定した整数が、許容範囲内にありません。
データ圧縮には、0 〜 255 の間の整数を指定してください。
データ圧縮のオプションが 2 回以上、つまり /c:[dn][dn]
と指定されました。
正しい形式 : /c:[dn][in]
を使用してください。
出力ファイルに入力ファイルと同じ名前が指定されました。
別の出力ファイル名を使用してください。
索引圧縮に指定した整数が、許容範囲内にありません。
0 〜 15 の間の整数を指定してください。
コマンド行に、上記以外のエラーが含まれています。
入力中のコマンド行の構文、スペル、および空白を確認してください。
データまたは索引の圧縮の指定が間違っています。
d
または i
パラメータを指定してください。
索引ファイル フォーマットに指定した値が無効です。
有効な値を指定してください。「リビルド オプション」の項の /s および /t オプションの説明を参照してください。
定義されたキーに長さが 0 のキーがあります。これは不正な値です。このエラーは、区切り文字の不正使用が原因で生じた可能性があります。
定義したキーのすべてに有効な長さが指定されていることを確認してください。
定義されたキーのうちの 1 つが、レコードに完全に含まれていません。これは正しくありません。
キーがレコードに完全に含まれていることを確認してください。可変長レコードの場合、キーは最小長レコードに完全に含まれている必要があります。
出力ファイルのない索引ファイル以外の入力ファイルが指定されています。出力ファイルがないと、REBUILD では索引ファイルをリビルドするものと想定します。
入力ファイルが索引ファイルでない場合は、出力ファイルを指定してください。
レコードの長さを 0 に指定しています。これは無効です。
この COBOL システムのレコード長の範囲内で、0 より大きい値を指定する必要があります。
レコードの最大長および最小長を指定する整数の最大長が、最小長よりも小さくなっています。これは無効です。
レコードの最大長または最小長を再入力して、最大長が最小長よりも大きいことを確認してください。
可変長ファイルのレコード構造を指定する場合に、最小レコード長と最大レコード長がハイフン (-) で区切られていません。
正しい形式 : /r:Vminreclen-maxreclen
を使用してください。
データ圧縮用の出力ファイル名が指定されていません。
有効な出力ファイル名を指定してください。
圧縮番号を指定するべきところに、別の文字が指定されました。
このパラメータには圧縮番号を指定してください。
出力編成を指定していますが、ファイル名を指定していません。
出力ファイル名を指定してください。
コマンド行に指定されたオプション ファイルが見つかりません。
ファイルが存在するか、およびコマンド行の指定が正しいかを確認してください。
ディスク容量が不足しているため、ファイル処理を続行できません。
入力ファイルが破壊されていないことを確認してください。リビルドが完了していない場合でも、出力ファイルを閉じると、使用できます。
無効な重複キーが作成されるため、レコードは出力ファイルに書き込まれませんでした。
入力ファイルとして指定したファイルが、別のプロセスによってロックされています。
ファイルが解放されてアクセス可能になってから、再試行してください。
入力ファイルが見つかりません。戻りコードは 1 に設定されます。
入力したファイル名が正しく、そのファイルが実際に存在することを確認してください。
ファイル名がオペレーティング システムまたは COBOL システムの規格に準拠していません。
正しいファイル名を使用して、ファイル操作をもう一度実行してください。
参照キー オプションで指定された番号 (/x
) が指定ファイルのキーの番号と等しいまたはより大きい値です。戻りコードは 1 に設定されます。
必要なキーを確認して、もう一度実行してください。
解決法については、アプリケーションのサプライヤにお問い合わせください。
レコード長が最小値より小さい、または、最大値より大きい値のレコードを REBUILD が出力ファイルに書き込もうとしました。
/r
オプションに指定したレコード長を変更してください。
解決法については、アプリケーションのサプライヤにお問い合わせください。
REBUILD がファイルを処理している間に、次の情報メッセージが出力されます。
指定したファイルが正常に再構築されました。
ファイルの変換、再構築、または再編成時に指定数のレコードが処理されました。
選択した操作によっては、不要なコマンド行オプションがあります。その場合、不要なオプションは表示されますが無視されて、処理を続行します。オプションが正しくても、他の情報を省略したために REBUILD が誤った処理を選択することがあります。この場合は、コマンド行を修正して再実行してください。
索引ファイルの再編成以外の操作を選択したときに、参照キー オプションが指定されました。/x オプションは無視されます。