FILEINFO 関数

構文

FILEINFO ( file.variable ,  key)

file.variable は、開いているファイルのファイル変数です。

key は、必要な特定の情報を示す数値です。 これらのキー番号の説明は、「FILEINFO 関数で用意されているキーおよび数値」の表にあります。

説明

FILEINFO 関数を使用すると、指定したファイルの構成に関する情報 (パラメーター、モジュラスとロード、オペレーティング・システムのファイル名、VOC 名など) を返すことができます。返される情報は、ファイル・タイプとキーの値によって決まります。

最初の引数がファイル変数でなければ、0 を除くすべてのキーは空白ストリングを返します。 警告メッセージも表示されます。 無効なキーを指定すると致命的エラーになります。

キーの等式名

等式名の挿入ファイルは、キー番号ではなくニーモニックを使用できるように用意されています。 挿入ファイルは、FILEINFO.INS.IBAS という名前で UV アカウント・ディレクトリー内の INCLUDE ディレクトリーに格納されています。 このファイルは、PIOPEN フレーバー・アカウントでは SYSCOM という名前の VOC ファイル・ポインターを通して参照されます。$INCLUDE ステートメントは、次の例に示すように等式名を使用する場合にこのファイルを挿入します。 次の表に、シンボル名、数値、および説明を示します。

表 1. FILEINFO 関数で用意されているキーおよび数値
シンボル名 説明
FINFO$IS.FILEVAR 0 file.variable が有効なファイル変数なら 1、それ以外は 0。
FINFO$VOCNAME 1 ファイルの VOC 名。
FINFO$PATHNAME 2 ファイルのパス名。
FINFO$TYPE 3 次に示すファイル・タイプ。

1 静的ハッシュ

3 動的ハッシュ

4 タイプ 1

5 順次

7 分散およびマルチボリューム

FINFO$HASHALG 4 ハッシュ・アルゴリズム。GENERAL では 2、SEQ.NUM では 3。
FINFO$MODULUS 5 現在のモジュラス。
FINFO$MINMODULUS 6 最小モジュラス。
FINFO$GROUPSIZE 7 1 KB 単位のグループ・サイズ。
FINFO$LARGERECORDSIZE 8 大規模レコード・サイズ。
FINFO$MERGELOAD 9 ロード・パラメーターのマージ。
FINFO$SPLITLOAD 10 ロード・パラメーターの分割。
FINFO$CURRENTLOAD 11 現在ロード中のファイル (%)。
FINFO$NODENAME 12 ファイルがローカル・システムにある場合は空白ストリング、それ以外はファイルがあるノードの名前。
FINFO$IS.AKFILE 13 ファイルに 2 次索引がある場合は 1、それ以外は 0。
FINFO$CURRENTLINE 14 現在の行番号。
FINFO$PARTNUM 15 分散ファイルの場合は現在開いているパート番号のリストを返します。
FINFO$STATUS 16 分散ファイルの場合は、各パートの最後の入出力操作が各パートで成功したか失敗したかを示すステータス・コードのリストを返します。 -1 なら、対応するパート・ファイルが開いていないことを示します。
FINFO$RECOVERYTYPE 17 ファイルが回復可能としてマークされている場合は 1、それ以外は 0。 回復可能機能が、ファイル・タイプ (例: タイプ 1 ファイルおよびタイプ 19 ファイル) でサポートされていない場合は、空白ストリングを返します。
FINFO$RECOVERYID 18 常に空白ストリングを返します。
FINFO$IS.FIXED.MODULUS 19 常に 0 を返します。
FINFO$NLSMAP 20 NLS が有効ならファイル・マップ名、それ以外は空白ストリング。 マップ名が uvconfig ファイルで指定されるデフォルトなら、返されるストリングはマップ名とそれに続く括弧内の設定可能パラメーター名です。
FINFO$MAXKEYSIZE 21 指定されるファイルに書き込み可能なキーの最大文字サイズを返します。 最大文字サイズは、分離値の影響を受け、分離値の半分より大きくすることはできません。例えば分離値が 4 なら、各グループは 2048 バイトで構成され、最大のキーが 1024 バイトを超えないことを意味します。 キーの最大サイズは分離サイズに関係なく 2048 バイトです。
FINFO$DISKCACHEMODE 22 0 - ファイルはディスク・キャッシュ内にありません。

1 - ファイルは標準の読み取り/書き込みモードのディスク・キャッシュ内にあります。

2 - ファイルは読み取り専用モードのディスク・キャッシュ内にあります。

FINFO$PRECACHE 23 1 - ファイルはディスク・キャッシュにプリロード済みです。その他の場合は 0 です。
FINFO$WRITEDEFER 24 1 - ファイルはディスク・キャッシュで遅延書き込み済みです。その他の場合は 0 です。
FINFO$MAXOPTION 20 FINFO$ キーの最大数値。

STATUS 関数によって返される値

関数が正常に実行されると STATUS 関数は 0 を返し、関数が実行に失敗すると STATUS はゼロ以外の値を返します。 次の表に、キー、ファイル・タイプ、および key に対して戻り値を示します。

表 2. ファイル・タイプ別の FILEINFO の戻り値
キー 動的 ディレクトリー 分散 順次
0 1 = ファイルは開いている 0 = ファイルは閉じている 1 = ファイルは開いている 0 = ファイルは閉じている コードの動的配列: 1 = ファイルは開いている 0 = ファイルは閉じている 1 = ファイルは開いている 0 = ファイルは閉じている
1 VOC 名 VOC 名 VOC 名 VOC 名
2 ファイルのパス名 ファイルのパス名 VOC レコード順による完全なパス名の動的な配列 (VOC で使用不可ファイルに対して用いられるパス名) ファイルのパス名
3 3 4 7 5
4 2 = GENERAL

3 = SEQ.NUM

空白ストリング コードの動的配列: 2 = GENERAL 3 = SEQ.NUM 空白ストリング
5 現在のモジュラス 1 各パート・ファイルの現在のモジュラスの動的な配列  
6 最小モジュラス 空白ストリング 各パート・ファイルの最小モジュラスの動的な配列 空白ストリング
7 ディスク・レコード単位のグループ・サイズ 空白ストリング 各パート・ファイルのグループ・サイズの動的な配列 空白ストリング
8 大規模レコード・サイズ 空白ストリング 各パート・ファイルの大規模レコード・サイズの動的な配列 空白ストリング
9 ロード値のマージ 空白ストリング 各パート・ファイルのマージ・ロード % の動的な配列 空白ストリング
10 ロード値の分割 空白ストリング 各パート・ファイルの分割ロード値の動的な配列 1 空白ストリング
11 現行ロード値 空白ストリング 各パート・ファイルの現行ロード値の動的配列 1 空白ストリング
12 ローカル・ファイル: 空白ストリング リモート・ファイル: ノード名 空白ストリング ローカル・ファイル = 空白ストリング、リモート・ファイル = ノード名の value を持つ値の動的配列 空白ストリング
13 1 = 索引 2 = 索引なし 0 1 = 共通索引の表示 2 = 表示なし 空白ストリング
15 空白ストリング 空白ストリング VOC レコード順によるコードの動的な配列コードは次のとおり: パート・ファイルが開いていなければ空白ストリング、ファイルが開いていればパート番号。 空白ストリング
16 空白ストリング 空白ストリング 各パート・ファイルに対する VOC レコード順によるコードの動的配列: 0 = 入出力操作 OK -1 = パート・ファイルが使用不可 >0 = エラー・コード 空白ストリング
19 0 = 固定モジュラスなし 1 = 固定モジュラス 空白ストリング 各パート・ファイルのコードの動的配列: 0 = 固定モジュラスなし 1 = 固定モジュラス 空白ストリング

1 分散ファイルに対して返される値は、各パート・ファイルの該当の値を持つ動的な配列です。 各値は、パート・ファイルのファイル・タイプによって決まります。 例えば、パート・ファイルがハッシュ・ファイルなら、最小モジュラスなどの一部の数値はそのパート・ファイルの動的な配列では空ストリングになります。

注: 最初に入出力操作が分散ファイルでのパート・ファイルの処理に失敗したときは、FILEINFO 関数はそのパート・ファイルのエラー・コードを返します。 同じ使用不可のパート・ファイルを持つ分散ファイル上のそれ以降の入出力処理では、FILEINFO 関数は -1 を返します。

NLS モード

FILEINFO 関数は、FINFO$NLSMAP の値に基づいてファイルのマップ名を判定します。 NLS は FILEINFO.H と呼ばれる挿入ファイルを使用します。

次の例では、キーの等式名を含むファイルが $INCLUDE ステートメントで挿入されます。 FILMS ファイルが開いてそのファイル・タイプが表示されます。

$INCLUDE SYSCOM FILEINFO.INS.IBAS
OPEN '','FILMS' TO FILMS
        ELSE STOP 'CANT OPEN FILE'
PRINT FILEINFO(FILMS,FINFO$TYPE)

次の例では、FILMS ファイルが開いて、そのファイル・タイプは数値キーを指定することで表示されます。

OPEN '','FILMS' TO FILMS
        ELSE STOP 'CANT OPEN FILE'
PRINT FILEINFO(FILMS,3)