ファイルまたはディレクトリの検索を初期化する。
構文:
CALL "CBL_DIR_SCAN_START" using by reference handle
pattern
by value search-attribute
flags
returning search-status
パラメーター:
- handle
- USAGE POINTER。
- pattern
- 以下の従属項目を含むグループ項目
01 pattern
03 pattern-length cblt-x2-comp5. *> pic x(2) comp-5
03 pattern-content pic x(n)
- search-attribute
- 呼び出しプロトタイプ:cblt-x4-comp5
- ピクチャ:pic x(4) comp-5
- search-status
- 「説明の読み方」を参照。
入力パラメーター:
- pattern-length
- pattern-content フィールドのパターン文字列の長さ。この属性は、ハンドルと関連しているため、スキャン中は変更できない。長さが 0 の場合は、pattern-content フィールドが null で終了していることを表す。pattern-length には pattern-content フィールドの長さより小さな値を設定できるが、より大きな値を設定することはできない。
- pattern-content
- 名前検索用の文字列。この属性は、ハンドルと関連しているため、スキャン中は変更できない。この文字列には、ファイル名を含む、または含まないディレクトリ パスの全体または一部や、ファイル名そのものを設定できる。パス内の各要素は "/" (UNIX) または "\" (Windows) で区切られます。pattern-length で提供される文字列の終わりより前に null がある場合や、pattern-length が 0 に設定されている場合、その文字列は null で終了している文字列だと認識される。flags のビット 1 を設定している場合、ファイル名にワイルドカード文字を使用できる。ワイルドカード文字の「*」は任意の長さの文字列を表し、「?」は任意の 1 文字を表す。flags のビット 0 を設定している場合、プリング文字「!」をエスケープ文字として使用できる。ワイルドカードとエスケープ文字の使い方の詳細については、「コメント」の項を参照。
- search-attribute
- 検索対象ファイルのプロパティを指定するために使用できる。この属性は、ハンドルと関連しているため、スキャン中は変更できない。有効な値は次のとおり。
値 |
ビット セット |
意味 |
1 |
0 |
ファイルを検索。 |
2 |
1 |
ディレクトリを検索。 |
4 |
2 |
ファイルでもディレクトリでもないエントリを検索。 |
上記の指定ビットより上位のビットは無視される。ビット 0 から 2 は常に OR で結合され、例えばファイルまたはディレクトリのいずれかを検索対象にする場合はビット 0 と 1 (数値 3) を設定する。すべてのタイプのエントリを検索対象とする場合はビット 0、1 および 2 (数値 7) を設定する。
- flags
- 次の中のいずれか 1 つの値を設定できる。
値 |
ビット セット |
意味 |
1 |
0 |
pattern-content 内のエスケープ シーケンス処理を有効にする。デフォルトでは、エスケープ シーケンス処理は行われない。 |
2 |
1 |
pattern-content フィールドでのワイルドカード使用を可能にする。ワイルドカードはこのオプションが設定されている場合にのみ意味を成す。 |
4 |
2 |
返されるファイル名にパスが含まれるようにする。デフォルトでは、Windows のネイティブ ランタイム システムではパスは返されず、UNIX のネイティブ ランタイム システムとマネージ ランタイム システムではパスが返される。 |
上記の指定ビットより上位のビットは無視される。エスケープ文字の処理とワイルドカードの使用を共に有効にするには、ビット 0 と 1 の両方を設定 (数値 3) する。
出力パラメーター:
- handle
- この検索の参照。一度、検索パラメーターを指定してハンドルを取得したなら、パラメーターを変更することはできない。
- search-status
- 戻り状態:
0 |
成功 |
1 |
検索を開始できない |
2 |
無効な検索ハンドル |
3 |
検索終了 |
127 |
その他のエラー |
コメント:
ワイルドカードは、次の例のように検索対象パターンのファイル名部分でのみ使用できる。
main/rts/mf*.h
ワイルドカードをディレクトリ名やドライブ文字で使用することはできない。
次のいずれかの文字を強制的に含めるため、パターン中でエスケープ シーケンスを使うことができる。
「\」、「/」、「!」、「*」、「?」。
エスケープ シーケンスを使用するには、エスケープ シーケンス文字、プリング (「!」) のあとにエスケープ指定する文字を入力する。次に例を示す。
「abc?」の場合、現在のフォルダーにあって「abc」で始まり、名前にさらにもう 1 文字を含むすべてのファイルが該当する。
「abc!?」の場合、現在のフォルダーにあって名前が「abc?」のファイルが該当する。