ファイルまたはディレクトリの検索を初期化します。
構文:
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:pic x(4) comp-5
- search-status
- 「説明の読み方」を参照
入力パラメーター:
- pattern-length
- pattern-content フィールドのパターン文字列の長さ。この属性は、ハンドルと関連しているため、スキャン中は変更できません。長さが 0 の場合は、pattern-content フィールドが null で終了していることを表します。pattern-length には pattern-content フィールドの長さより小さな値を設定できますが、より大きな値を設定することはできません。
- pattern-content
- 名前検索用の文字列。この属性は、ハンドルと関連しているため、スキャン中は変更できません。この文字列には、ファイル名を含む、または含まないディレクトリ パスの全体または一部や、ファイル名そのものを設定できます。従来のパス内の各要素は「/」(UNIX) または 「\」Windows で区切られます。MFDBFH データストアをスキャンすることもできます。このようなスキャンには、特定の URL 検索文字列が必要です (詳細については、「データストアの URL」を参照してください)。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) を設定します。
-
重要: このうちの少なくとも 1 つはビットを設定してください。
- flags
- 次のいずれかの値を設定できます。
値 |
ビット セット |
意味 |
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?」のファイルが該当します。