リビルドは、コマンド プロンプトから呼び出すことができるファイル管理ユーティリティです。これを使用して次のことを行うことができます。
リビルドがファイルに対して実行する操作は、リビルドのコマンド ラインで指定するオプションによって異なります。
注:
これを行っていないと、予期しない結果になる場合があります。
リビルドのコマンド ラインの構文は、次のとおりです。
rebuild in-file [,out-file] [options]
in-file と out-file に指定するファイル名には、どちらも拡張子が必要です。out-file と in-file の両方に、同じファイル名を指定することはできません。in-file や out-file の代わりに環境変数を使用してファイル名マッピングを実行することができます。
リビルドが実行する操作内容は、コマンド ラインで指定するオプションにより定義されます。
リビルドのコマンド ラインで at 文字 (@) の次にファイル名を記述すると、そのファイルにリビルド コマンド ライン オプションが含まれていることを示します。
ファイルを使用してリビルド コマンド ライン オプションを用意する場合、ファイルは ASCII テキストファイルでなければなりません。
リビルド オプションファイルは、次の形式にします。
次に例を示します。
rebuild infile.dat, outfile.dat @conv.par
conv.par は、リビルド オプションを含む ASCII テキストファイルです。
リビルドユーティリティで表示されるすべての情報は、標準的なオペレーティング システムのリダイレクトを使用して、テキストファイルにリダイレクトすることができます。
> | 新規ファイルを作成します。 |
>> | 既存のファイルを拡張します。 |
次に例を示します。
rebuild oldms001.dat,ms001.dat -k:1+20<N> -i >> rebuild.prt
この例では、リビルドからの出力を既存のファイル rebuild.prt にリダイレクトします。
警告:出力をリダイレクトする場合、-v オプションを使用しないでください。
リビルドにより実行される処理は、コマンド ラインで指定したオプションで定義されます。
UNIX システムの場合、リビルド オプションには、先頭にスラッシュ (/) 文字ではなくハイフン (-) 文字を付ける必要があります。
また、次のオプションも使用できます。
-c | ファイル圧縮を指定します。 |
-d | 索引ファイルのデータ領域から索引を再構築します。 |
-e | 無効な重複キーを報告し、処理を続行します。 |
-f | 索引ファイルを検証します。 |
-i | 処理しているファイルの情報を表示します。 |
-k | 索引ファイルのキー構造を定義します。 |
-m | 将来のために予約されています。 |
-n | ファイルに関する情報を表示します (他の処理は実行されません)。 |
-o | 入出力ファイルの構成を指定します。 |
-p | IDXFORMAT "8" ファイルをかわりにリビルドします。 |
-q | 将来のために予約されています。 |
-r | 入出力ファイルのレコード構造を定義します。 |
-s | 入力ファイルの形式を指定します。 |
-t | 出力ファイルの形式を指定します。 |
-u | 前回更新に失敗したファイルの回復を試みます。 |
-v | ファイルの処理に伴って増加するレコードカウントを表示します。 |
-y | ファイルサイズの矛盾を無視してリビルドを強制実行します。 |
-x | 索引ファイルの再編成時にデータを書き込む順序を指定します。 |
-z | ファイルアクセスに Fileshare サーバーを使用するようにリビルドに指示します。 |
--q | リビルドのバナーの表示を抑制します。 |
--v | リビルドのバージョン番号を表示します。 |
オプションはコマンド ラインの任意の場所に指定できます。ただし、二重ハイフン (--) で始まるオプションは、一重ハイフン (-) で始まるオプションの前に配置する必要があります。オプションの形式には特に制約はありませんが、各オプションは空白文字で区切る必要があります。
-f または -v オプションのパラメーターの前には、コロン (:) を使用する必要があります。 他のオプションの場合は、パラメーターの前にコロンを置くかどうかは任意です。オプションのパラメーター間には空白文字は挿入しないでください。
オプションの詳細については、ヘルプトピック 『Rebuild コマンド ライン オプション』を参照してください。
ファイルを再編成するためのコマンド ラインの形式は次のとおりです。
rebuild in-file,out-file [-c] [-d] [-i] [-k] [-n] [-p] [-s] [-v] [-x]
索引ファイルは、レコードの追加、削除、変更などにより更新されるときに、索引構造体とデータ構造体に切り離されるため、処理効率が悪くなります。さらに、削除されたレコードに残された領域は常に再使用されるわけではないので、ファイルが必要以上に大きくなってしまいます。
多くの変更を行った場合、索引ファイルを再編成して、データと索引を順にリビルドし、空き領域を再利用できるようにすると便利です。この作業により、最適な性能とデータの完全性が保証されます。
ファイルを再編成する利点は他にもあります。たとえば、ファイルを順次処理する場合、ファイルを処理するためのアクセス時間は時間が経つにつれて増えます。これは、レコードが更新され、順序が変更されるためです。この状況でファイルを再編成すると、アクセス時間を短縮することができます。
3 つ目の理由は 重複キー チェーンをリビルドすることです。 重複キーには重複オカレンスの数が追加され一意に識別されます。 重複キーが新たに追加されるとそのキーに、最後に追加されたキーのオカレンス値を 1 つインクリメントした数値が使用されます。 キーが削除されても、残りのキーのオカレンス値は変更されません。つまり、一部のキーをすでに削除した場合は、重複値の最大回数に到達する可能性があります。 このような状況では、ファイルを再編成することが得策です。 重複キーの詳細については、『ファイル編成』の章の『重複キー』の項を参照してください。
次に例を示します。
rebuild infile.dat,outfile.dat
この場合、リビルドでは索引ファイル (infile.idx) を使用してデータファイル (infile.dat) を読み込み、出力ファイル (outfile.dat) が作成されます。infile.dat の削除されたレコードは、出力ファイルに書き込まれません。
注:入力ファイルと出力ファイルに同じファイル名を使用することはできません。
索引をリビルドするためのコマンド ラインの形式は次のとおりです。
rebuild in-file[,out-file] [-c] [-d] [-e] [-i] [-k] [-n] [-p] [-s] [-v]
out-file パラメーターは指定を省略できますが、指定することをお奨めします。指定せずにリビルド操作が失敗した場合、元のファイルが失われるからです。
索引ファイルの破損理由はいくつかあります。次に例を示します。
COBOL プログラムが破損した索引ファイルを開くときに、ランタイム システムがファイルの破損を検出すると、拡張ファイル状態コードを返します。
リビルドを使用すると、破損したファイルを自動的にリビルドすることができます。
注: リビルドを使用して既存のデータファイルから新しい索引ファイルを生成すると、ファイルは大きくなることがあります。 理由の 1 つは、元の索引ファイルに保持されているデータファイルの空き領域に関する情報が失われることです。そのため、空き領域は再使用できなくなります。 もう 1 つの理由は、-d オプションを指定した場合、索引レコードが通常の入出力操作で個別に作成され、部分的にのみ使用された索引ノードができることになるからです。この問題を解決するには、索引をリビルドした後でファイルを再編成する必要があります。
次の例では、リビルドは .idx ファイルを読み込んでキー情報を取得し、データファイル infile.dat を読み込んで新しい索引ファイルを作成します。
rebuild infile.dat
次の例では、リビルドは入力ファイルを読み込んでキー情報を取得し、物理的な順序でデータを処理し重複レコードを飛ばして、新しい索引ファイルを作成します。
rebuild infile.dat, outfile.dat -d -e
索引ファイルがない場合には、-k オプションを使用してキー構造体に関する情報を指定する必要があります。
ファイルを変換するためのコマンド ラインの形式は、次のとおりです。
rebuild in-file,out-file [-c] [-i] [-k] [-o] [-r] [-s] [-t] [-v]
REBUILDを指定することによって、ファイル構成と形式を変換できます。
次の例では、リビルドは C-ISAM ファイルをシステムで使用される形式に変換し、ファイルのデータ部分を圧縮します。
rebuild infile.dat,outfile.dat -s:c-isam -c:d1 -t:mf
索引ファイルを検証するためのコマンド ラインの形式は次のとおりです。
rebuild in-file -f
リビルドでは、多くの検証を実行できます。また、すべての検証を実行するか、サブセットだけを実行するかを選択することができます。確認する内容が多いほど、検証処理にかかる時間は長くなります。
次の例では、リビルドはファイルの完全性をすべて検査します。
rebuild test.dat -f
Fileshare サーバーに存在するファイルにリビルドを実行できますが、使用できるのは限られた範囲のリビルド オプションだけです。Fileshare でリビルドを実行するためのコマンド ラインの形式は、次のとおりです。
rebuild in-file[,out-file] -z:server-name {/l|/n}
説明
server-name | Fileshare サーバーの名前。 server-name のすべてのオカレンスが同一の Fileshare サーバーを参照する必要があります。 |
-z リビルド オプションを使用せずに、Fileshare サーバーを指定することもできます。 コマンド ラインの形式は、次のとおりです。
rebuild $$server-name\in-file [$$server-name\out-file] {/l|/n}
UNIX システムでは、server-name のプレフィックス $$ の代わりに \$\$ を使用します。
次のように指定すると、COBOL プログラムでリビルドを呼び出せます。
call "callrb" using commands status
パラメーターの内容は、次のとおりです。
commands | リビルド コマンド ラインを格納する PIC X(600) 項目。リビルドはオフセット 599 から 0 へ向かってコマンド ラインを調べるため、この項目の長さは 600 バイトになります。 |
status | 返されたファイル状態を格納する PIC XX の COMP X 項目。この項目は、リビルドの呼び出し結果を示します。 |
リビルドをプログラムで呼び出すと、-v オプションを指定しない限り、通常のメッセージは表示されません。-v オプションを設定すると、処理中のレコードの合計が表示されます。
エラーが発生した場合、またはリビルドが成功しなかった場合、RETURN-CODE にはゼロ以外の値が格納され、status には返されたファイル状態が格納されます。 リビルドを呼び出した後は、常に RETURN-CODE と status を確認する必要があります。
RETURN-CODE に格納される値を次に示します。
値 | 説明 |
0 | リビルドが正常に実行されたことを示します。 |
1 | ファイルが見つからない、ファイル形式が無効である、などの入力ファイルにエラーが発生したことを示しています。状態パラメーターを確認してください。 |
2 | 出力ファイルにエラーが発生したことを示します。状態パラメーターを確認してください。 |
4 | ファイルが破損しています。 |
9 | オプションが無効である、オプションの組合わせが無効である、などのエラーがパラメーターリストに含まれていることを示します。 |
エラーが発生した場合は、同一のオプションを使用して同じファイルのコマンド ラインからリビルドを実行します。画面出力では、エラー原因についてより詳細な情報が表示されます。
注: -f オプション (索引ファイルの検証) を使用している場合には、ゼロ以外の RETURN-CODE はファイルが破損していることを示します。その場合は、より詳細な情報を取得するために、同一のオプションで同じファイルのコマンド ラインから再度リビルドを実行してください。
次の例は、COBOL プログラムによるリビルドの呼び出しを示します。
01 parameters pic x(600). 01 status pic xx comp-x. ... move "infile.dat,outfile.dat -s:lii -c:d1" to parameters call "callrb" using parameters,status end-call
リビルドは、索引ファイルのリビルド、変換、再編成を行うときに、エラー、情報、または警告メッセージを出力する場合があります。詳細については、ヘルプトピック 『REBUILD のエラー、情報、および警告のメッセージ』を参照してください。
ここでは、リビルドを使用した例を説明します。
rebuild infile.dat,outfile.dat -i
ファイルを再編成します。データは主レコードキーの順序で書き込まれ、再編成の完了時に処理情報が表示されます。
rebuild infile.dat,outfile.dat -x:3
ファイルを再編成します。データは、3 番目の副キーの順序で書き込まれます。
rebuild infile.dat
索引ファイルをリビルドします (索引 (.idx) ファイルがまだ存在していて、そこに保持されたキー情報が破壊されていないことを前提とします)。
rebuild infile.dat -k:1+20 -i
索引ファイルをリビルドします。索引 (.idx) ファイルは不要であり、存在していても無視されます。これは、指定されたキー定義を使用して完全に再作成されます (ファイル作成時に使用したキー定義に対応させる必要はありません)。リビルドが完了すると、処理情報が表示されます。
索引ファイルのない C-ISAM および Level 2 のファイルでは、-r および -s オプションを使用してレコード情報とファイル形式を指定します。
rebuild infile.dat,outfile.dat -s:c-isam -c:d1 -t:mf
C-ISAM 形式の索引ファイルをシステムで使用される形式に変換し、ファイルのデータ部分を圧縮します。
rebuild infile.dat,outfile.dat --o:rel,ind -k:1+2:3+10d -c:i7 -r:f10
キーを圧縮して固定長の相対ファイルの索引を生成します。
rebuild infile.dat,outfile.dat -s:lii -t:lii
LEVEL II V2.5 COBOL 形式のファイルを再編成して、出力ファイルに LII 構造を保存します。同様の方法で、-s および -t を他の形式と組み合せることができます。
set data=/tmp.dat rebuild data -i
ファイル /tmp.dat を再編成して、情報を表示します。