ファイル ハンドラーの動作の一部を構成できます。 これらの動作は、ファイル ハンドラー構成ファイルに値を入力して変更します。
ファイル ハンドラーのデフォルトのファイル名は extfh.cfg です。ただし、次のように EXTFH 環境変数を設定し、別のファイル名を使用できます。 たとえば、次のように設定します。
set EXTFH=c:\mydir\test.cfg
上記のように記述すると、ファイル名は c:¥mydir¥test.cfg に設定されます。
ファイル ハンドラー構成ファイルを使用して、個々のファイルまたはすべてのファイルについて、ファイル ハンドラーパラメーターを変更できます。すべてのファイルに適用する設定は、次に示すタグの下に一覧表示されます。
[XFH-DEFAULT]
また、個々のファイルに適用する設定は、次のような個々のファイル名の下に一覧表示されます。
[TEST.DAT]
すべてのファイルに対する設定より、個々のファイルに対する設定の方が優先されます。 ファイル名だけを指定する場合には、解決済みファイル名(ファイル ハンドラーがファイル名マッピング処理を行った後に使用するファイル名)を使用する必要があります。 または、ファイル名の前にキーワード INTERNAL を追加して、そのファイル名が SELECT 句で使用した名前であることを表すことができます。これにより、設定はファイル名マッピング処理の終わりに特定されたファイルに適用されます。たとえば、ASSIGN モードが動的割り当ての場合に、次のように記述します。
[INTERNAL:$myfile\outfile.dat] IDXFORMAT=8
この myfile は、そのフォルダーがあるディレクトリの名前を保持する環境変数です。設定は、このディレクトリの outfile.dat に適用されます。
ASSIGN モードが外部割り当ての場合には、次のように記述します。
SELECT MYDATA ASSIGN TO EXTERNAL REALDATA
上記のように記述すると、次のように設定できます。
[INTERNAL:REALDATA]
この場合、後続のすべてのオプションが、論理名 "REALDATA" がマッピングされたファイルに適用されます。
次のように設定した場合は結果が異なります。
SELECT MYDATA ASSIGN TO '\directory\subdirectory\datadirectory\myfile'
上記のように記述すると、extfh.cfg で INTERNAL オプションを使用できません。 extfh.cfg 内では SELECT 文の定数値は、角かっこ ([ ]) で囲んで反復する必要があります。
ファイル名マッピングの詳細については、『ファイル名』の章にある『ファイル名のマッピング』の項を参照してください。
ファイル名には、パスと DD_マッピングを使用できますが、ワイルドカードや論理名は使用できません。 ファイル ハンドラー構成オプション BASENAME=ON を設定した場合には、パスを指定せずにファイル名を指定できます。 ファイル名はプログラム内のマッピングされた名前と一致する必要があります。
次の表は、ファイル ハンドラー構成ファイルで設定できるオプションのリストです。
パラメーター | 説明 |
---|---|
BASENAME | タグで指定したファイル名をパス名なしで表すことができるようにするかどうかを指定します。 |
COMMITFLUSH | Fileshare を使用していないプログラムのコンテキストで、COMMIT 文や ROLLBACK 文により、レコード ロックを解放するのみでなく、すべてのファイル更新をディスクに書き出すかどうかを指定します。 |
CONCATNAME | '+' 文字を含むファイル名を、通常のファイル名とファイル連結文字のどちらで解釈されるようにするかを指定します。 |
CONVERTDBSPACE | 行順編成ファイルを読み取るときに、2 バイトの文字集合 (DBCS) の空白文字を ASCII 空白文字に変換できるようにします。 |
CONVERTEUCKATAKANA | 行順編成ファイルを読み取るときに、EUC シングル幅 2 バイト文字を、等価のダブル幅のカタカナに変換できるようにします。 |
CONVERTSTATUS | 呼び出すプログラムの名前を指定し、ファイル ハンドラーが処理を完了した後で、返された状態値をエミュレーション用にマップします。 |
DATACOMPRESS | データ圧縮を有効化するかどうかと圧縮の種類を指定します。 |
DATAFILE | OPEN 文に渡されたファイル名を別の名前にマップします。 |
EXPANDPOSITIONING | WRITE AFTER POSITIONING 文 (OS/VS COBOL 互換) を使用するときに、レコードにキャリッジ制御情報を書き込むかどうかを指定します。 |
EXPANDTAB | 行順編成ファイルまたは行送りファイルで READ 操作中に検出されたタブコードを同じ数の空白文字に拡張するかどうかを指定します。 |
FASTREAD | 索引ファイルを読み取るときに、ファイル ハンドラーで、データの完全性を保証するための追加確認を実行するかどうかを指定します。 |
FHREDIR | Fileshare を使用してリモートサーバーでのファイル処理を可能にするかどうかを指定します。 |
FILEMAXSIZE1 | 大容量ファイルにアクセスできるように、ロックの呼び出しで使用するオフセットを保持するサイズ (バイト単位) を指定します。 |
FILEPOINTERSIZE | 形式 8 の索引ファイルについて、ファイルポインターを格納するために使用するバイト数を指定します。 |
IDXDATBUF | 索引ファイルのデータ部分にアクセスするときに使用するバッファーのサイズを指定します。 |
IDXFORMAT | 索引ファイルを作成するときに使用する形式を指定します。 |
IDXNAMETYPE | データファイルと、索引ファイル (存在する場合) の両方のファイル名タイプの形式を指定します。 |
IGNORELOCK | 入力用に開いたファイルを読み取るときに、ロックを無視するかどうかを指定します。 |
INDEXCOUNT | 索引ファイルについてキャッシュする索引ノードの数を指定します。 |
INDEXFILE | 索引ファイルの名前を、個別の索引ファイルがある形式の名前にマップします。 |
INSERTNULL | 行順編成ファイルや行送りファイルに WRITE 操作、または REWRITE 操作を実行するときは、印刷不可能な文字の前にヌル文字 (x"00") を挿入するかどうかを指定します。 また、READ 操作中に、これらのヌル文字を削除するかどうかを指定します。 |
INSERTTAB | 行順編成ファイルや行送りファイルに WRITE 操作、または REWRITE 操作を実行するときは、タブコードを連続した空白文字に置き換えるかどうかを指定します。 |
KEYCHECK | アプリケーションで定義したキー定義と開こうとしている索引ファイルのキー定義が一致することをファイル ハンドラーで確認するかどうかを指定します。 |
KEYCOMPRESS | 使用中のキー圧縮の種類を指定します。 |
LOADONTOHEAP | ファイルを開くときに、ファイルをメモリにロードするかどうかを指定します。 |
LOCKTYPE | 使用中のレコード ロックの種類を指定します。 |
LOG | ファイルの破損や自動ファイル回復などのファイルに関する異常な状況を、後で確認できるようにログ ファイルに記録するかどうかを指定します。 |
LOGFILENAME | LOG オプションが有効なときに、ログ ファイルの名前を指定します。 |
LSRECDELIM | 行順編成ファイルでレコード区切り文字として使用する文字を指定します。 |
MAINFRAMEPRINT | WRITE AFTER ADVANCING または WRITE BEFORE ADVANCING を使用しているファイルについて、メインフレームのプリンター形式 (filetype(11)) を使用するかどうかを指定します。 |
NAMEOPTIONS | OPEN 文に渡す名前に、角かっこ ([ ]) で囲まれたファイル ハンドラー指令を含めてよいかどうかを指定します。 このパラメーターは、古い Micro Focus 製品との互換性を確保するために提供されています。Micro Focus Workbench V4.0 との互換性が必要な場合のみに使用してください。 |
NFSFILELOCK | UNIX NFS ファイル システムのレコード ロックとファイルロックをアプリケーションで検出できるようにします。 |
NODESIZE | 索引ファイルに使用する索引ノードのサイズを指定します。 |
NOSEQCHECK | ACCESS SEQUENTIAL が指定された索引ファイルを出力または拡張用に開く場合に、書き込まれる各新規レコードの主キーが、以前のキーよりも大きいかどうかを確認するかどうかを指定します。 |
OPENINPUTSHARED | 入力用に開いたファイルに LOCK MODE 句を指定していない場合に、このファイルを他のユーザーと共有可能にするかどうかを指定します。 |
OSVSREWRITE | 出力用に開いた順編成ファイルに対して WRITE 文を使用可能にするかどうかを指定します。 WRITE 文を有効化した場合は、REWRITE 文とまったく同じ動作を行います。 |
READSEMA | ファイル修正以外の目的で入出力操作を実行する場合に、システムに共有ファイルのセマフォを獲得させるかどうかを指定します。 |
RELDATBUF | 相対ファイルにアクセスするときに使用するバッファーのサイズを指定します。 |
RELRECDELIM | 固定長形式の相対ファイルでレコード区切り文字として使用する文字を指定します。 |
RETRYLOCK | ある操作でロックされたレコードにアクセスしようとしたときに、この操作を再試行するかどうかを指定します。 |
RETRYOPEN | ある操作でロックされたファイルにアクセスしようとしたときに、この操作を再試行するかどうかを指定します。 |
RETRYTIME | RETRYLOCK オプションまたは RETRYOPEN オプションに設定された整数が、試行回数と秒数のどちらを表すかを指定します。 |
RUNITLOCKDETECT | 同じ実行ユニットで実行された別の OPEN 文によりレコードがロックされている場合に、これを検知できるようにするかどうかを指定します。 |
SEARCHONCREATE | ファイル ハンドラーが、作成中のファイルと同じ名前をもつファイルを探すため、複数ディレクトリパス上の特定のディレクトリを検索するかどうかを指定します。 |
SEQDATBUF | 順編成ファイルにアクセスするときに使用するバッファーのサイズを指定します。 |
SKIPLOCK | 順読み取り中にロックされたレコードが検出された場合に、現在のレコードポインターを進めるかどうかを指定します。 |
SPACEFILL | 行順編成ファイルや行送りファイルに READ 操作を実行する場合に、読み取ったデータ以外のレコード領域を空白文字で埋めるかどうかを指定します。 |
STARTUNLOCK | START 操作で、単一レコードのロックが指定されている (WITH LOCK ON MULTIPLE RECORDS 指定が設定されていない) ファイルの既存のロックを解除するかどうかを指定します。 |
STRIPSPACE | 行順編成ファイルや行送りファイルに WRITE 操作または REWRITE 操作を実行する場合に、後続の空白文字を削除するかどうかを指定します。 |
SUPPRESSADV | レコード順編成ファイルの場合に、WRITE 文の ADVANCING 指定を無視するかどうかを指定します。 |
TRACE | ファイル ハンドラーのトレースを有効にするかどうかを指定します。 |
TRACEFILEEXTEND | 既存のトレースファイルがある場合に、トレース情報を現行のトレースファイルの末尾に追加するかどうかを指定します。 |
TRACEFILENAME | TRACE オプションが有効なときに、作成するトレースファイルの名前を指定します。 |
WRITELINE | メインフレームまたは PC の動作をレコードの書き込みに使用するかどうかを指定します。 |
WRITETHRU | ファイルの修正をすぐにディスクに書き出すかどうかを指定します。 または、COBOL システムやオペレーティング システムにより、変更を内部的にバッファーに書き込み、後でディスクに書き出すこともできます。 |
脚注
次の警告を参照してください。
警告:FILEMAXSIZE オプションでは、ファイルのオフセットを保存するために内部で使用されるバイト数を指定します。 これは、内部のロック機構にも影響します。 同じファイルを共有するすべてのプログラムで同じ FILEMAXSIZE 設定を使用して、セマフォとレコード ロックが適切に処理されるようにし、共有ファイルでのファイルの破損を防ぐ必要があります。
FILEMAXSIZE オプションのデフォルト値は 4 です。この場合には、ファイルのアドレス指定は、Micro Focus システムの初期のバージョンと互換する 32 ビット値に制限されます。FILEMAXSIZE オプションを 8 に設定することもできます。この値を設定すると、NTFS ファイルにアクセスするときに、Windows プラットフォームでのファイルのアドレス指定に最大 64 ビット値を使用できますが、基になるレコード ロック機構が変更されてしまいます。
次の場合は、FILEMAXSIZE の値を 8 に設定しないでください。
64 ビットおよび32 ビットのファイル システムの詳細については、付録の『ファイル システム』を参照してください。
これらの各オプションの有効な設定値とデフォルト値の詳細については、ヘルプトピック 『構成ファイルのオプション』を参照してください。
構成ファイルの例については、ヘルプトピック 『例』を参照してください。
ファイル ハンドラー構成ファイルで構成できるファイル ハンドラーの動作は、次のとおりです。ここでは、オンラインヘルプよりも詳しく説明します。
デフォルトでは、ファイル ハンドラーは、最大 2 GB のファイルを処理できます。 ただし、2 GB より大きい索引ファイルを作成する必要がある場合は、ファイル ハンドラー構成ファイルで IDXFORMAT パラメーターを 8 に設定し、IDXFORMAT(8) ファイルを作成します。通常、索引ファイルは .idx ファイルと .dat ファイルに分かれているのに対して、これらのファイルは、単一のファイルとして構成され、最大 32 TB のサイズにすることができます。
多くのオペレーティング システムでは、ファイルサイズに制限があります (たとえば、Windows 95 では 2 GB)。 これらのシステムで大容量ファイルを作成できるようにするには、ストライプ化オプションを使用します。 ストライプ化は大容量論理ファイルを必要な数の物理的なファイルに分割します (最大数 256)。
ファイルストライプ化オプションを使用すると、最大 512 GB の論理ファイルを作成できます。 これらの論理ファイルは、最大 256 の物理ファイルで構成することができます。
これらの大容量の論理ファイルは複数の物理ファイルで構成されるため、ファイルストライプ化をグローバルに行うと、オペレーティング システムでファイルハンドルが足りなくなる可能性があります。 そのため、ファイルストライプ化をグローバルに行うことはできません。
ファイルをストライプ化するには、ファイル ハンドラー構成ファイルでストライプ化する各ファイルに STRIPING=ON オプションを設定します。
ストライプ化したファイルでは、個々のストライプのヘッダーの長さは 128 バイトになります。ヘッダーには、次の形式の ASCII 文字列が含まれます。
ファイルのストライプ番号 nnn : filename
この nnn には、ストライプ番号を表す 3 桁の数値を指定します。filename は、関連付けられたファイルの名前です。
文字列は、128 バイトのヘッダーの終わりまで空白文字で埋められます。
ストライプ化オプションでは、大文字小文字を区別しません。
注:
ファイルをストライプ化するかどうかを指定します。 デフォルトの設定は OFF です。
STRIPING=[ON/OFF]
このオプションでは、ストライプに名前を付けるためのファイル命名規則を指定します。 デフォルトの設定は 0 です。
STRIPENAMETYPE=[0/1]
StripeNameType を 0 に設定すると、ストライプファイルは基本ファイルと同じ名前になりますが、ファイル拡張子の前にある基本名に番号が追加されます。たとえば、ファイル test.dat に 3 個のストライプがある場合には、基本ファイル名とそのストライプは次のように表記されます。
ファイル | 説明 |
---|---|
test.dat | 基本ファイル |
test01.dat | ストライプ番号 1 |
test02.dat | ストライプ番号 2 |
test03.dat | ストライプ番号 3 |
基本名が長く、そのままではストライプファイル番号を入れることができない場合は、基本名の右端から文字が削除されます。たとえば、ファイル testfile.dat に 3 個のストライプがある場合には、ファイルとそのストライプは次のように表記されます。
ファイル | 説明 |
---|---|
testfile.dat | 基本ファイル |
testfi01.dat | ストライプ番号 1 |
testfi02.dat | ストライプ番号 2 |
testfi03.dat | ストライプ番号 3 |
StripeNameType を 1 に設定すると、ストライプファイル名は基本ファイルと同じ名前になりますが、ファイル名のファイル拡張子の後にストライプ番号が追加されます。 基本ファイル名はストライプ 0 に変更されることに注意してください。たとえば、ファイル test.dat に 3 個のストライプがある場合には、基本ファイル名とそのストライプは次のように表記されます。
ファイル | 説明 |
---|---|
test.dat.00 | 基本ファイル |
test.dat.01 | ストライプ番号 1 |
test.dat.02 | ストライプ番号 2 |
test.dat.03 | ストライプ番号 3 |
個々のストライプの最大サイズをバイト数で指定します。n のデフォルト値は 1 GB (1,073,741,824 バイト) です。 最小値は 65,536 バイトです。 最大値は現在のところ 2 GB (2,147,483,648 バイト) です。
MAXSTRIPESIZE=n
基本ファイル以外のストライプファイル数を指定します。 デフォルトでは、17 ファイルが作成されます。つまり、基本ファイルと 16 個のストライプです。n の最小値は 1 で、最大値は 255 です。
MAXSTRIPEFILES=n
ストライプに名前を付けるときに、基本ファイルの名前に追加する桁数を指定します。 たとえば、STRIPETYPENAME が 0 の場合、2 を指定すると test01.dat、5 を指定するとオペレーティング システムのファイル名の制限により test00001.dat か tes0001.dat になります。n のデフォルト値は 2 です。最小値は 1 で、最大値は 5 です。
MAXSTRIPEDIGITS=n
ストライプファイルのパスとサイズを指定します。x はストライプ番号、path はストライプがある場所、n はストライプのサイズを示します。n を省略すると、ストライプのサイズは前のストライプと同じになります。
STRIPE-X オプションを一度設定すると、もう一度 STRIPE-X オプションで変更するまで、すべてのストライプに新しいパスとサイズが適用されます。 Stripe- の後に続く数字はストライプ番号で、0 は基本ファイルを表します。 基本ファイル以外のストライプには、0 という文字を指定しないでください。
STRIPE-X=path[,n]
ファイルのストライプ化を指定する方法をいくつか例を挙げて説明します。
ファイル test.dat を、同じサイズの 2 つのストライプに分割します。
[test.dat] Striping=on Stripe-1=dir2 Stripe-2=dir3
この結果、test.dat は現在のディレクトリに格納されます。test01.dat は dir2 に、test02.dat は dir3 に格納されます。
ファイル test.dat を 5 つのストライプに分割します。
[test.dat] Striping=on Stripe-0=dir1 Stripe-4=dir2
この結果、test.dat、test01.dat、 test02.dat、test03.dat は dir1 に格納されます。test04.dat と test05.dat は dir2 に格納されます。
ファイル test.dat を 3 つのストライプに分割します。
[test.dat] Striping=on Stripe-0=dir1,100000000 Stripe-1=dir2,200000000
この結果、test.dat は、ファイルサイズが 100,000,000 バイトになり、dir1 に格納されます。また、test01.dat は、ファイルサイズが 200,000,000 バイトになり、dir2 に格納されます。
いくつかの手順を実行して、ファイル ハンドラーのパフォーマンスを向上できます。 これらのすべての手順で、さまざまな構成オプションを使用します。 これらの手順について次に詳しく説明します。
ロックが設定されているかどうかを確認すると、パフォーマンスが大幅に低下します。 この手順が行われないようにするには、次に示す構成オプションのいずれかを使用します。
LOCKTYPE を 1 に設定すると、IGNORELOCK の設定が無効になります。