このルーチンには、2 種類の使用法があります。このルーチンは、ファイル指定で環境変数を拡張する場合に使用できます。この場合、環境変数には、いくつかのパスのリストが含まれます。特定のファイル指定を使用する OPEN INPUT 文で、ライブラリ ファイル内のファイルまたは個別のディスク ファイルのどちらを検索するかを指定することもできます。
call "CBL_LOCATE_FILE" using user-file-spec
user-mode
actual-file-spec
exist-flag
path-flag
returning status-code
01 actual-file-spec. 03 buffer-len cblt-x2-compx. 03 buffer pic x(n).
01 actual-file-spec. 03 buffer-len pic x(2) comp-x. 03 buffer pic x(n).
| 00 | ファイルがライブラリ内にあるか、または個別のディスク ファイルとして存在するかを確認します。
user-file-spec に組み込みライブラリ名が含まれる場合は、そのライブラリ (存在する場合) が開かれてファイルが検索されます。ライブラリはその後も開かれたままです。 user-file-spec に組み込みの環境変数が含まれている場合は、環境変数で指定した各パスに従ってファイルが検索されます。 ファイルが見つかると、終了時の actual-file-spec に、成功したパスに拡張された環境変数をもつファイル指定が含まれます。上記以外の場合は、終了時の actual-file-spec に、最初のパスに拡張された環境変数をもつファイル指定が含まれます。 |
| 01 | user-file-spec に環境変数が含まれる場合は、終了時の actual-file-spec に、最初のパスに拡張された環境変数をもつファイル指定が含まれます。このファイルは検索されません。 |
| 10 | user-file-spec に環境変数が含まれる場合は、終了時の actual-file-spec に、次のパスに拡張された環境変数をもつファイル指定が含まれます。このファイルは検索されません。このオプションは、user-mode の最初の 2 ビットを 1 (01) または 2 (10) に設定して呼び出しが成功した後にのみ使用する必要があります。後述の「path-flag」を参照してください。 |
| 11 | 予約済み。使用できません。 |
| 0 | user-file-spec および actual-file-spec は空白文字で終了します。 |
| 1 | user-file-spec および actual-file-spec は null で終了します。 |
| 0 | ファイルは見つからなかったか検索されませんでした |
| 1 | ファイルはすでに開いていたライブラリ内に見つかりました |
| 2 | ファイルは user-file-spec で指定したライブラリ内に見つかりました |
| 3 | ファイルは個別のディスク ファイルとして見つかりました |
| 0 | actual-file-spec には、組み込みの環境変数が含まれません。 |
| >0 | actual-file-spec には、拡張された環境変数が含まれます。 |
| 0 | 成功 |
| 1 | 環境変数は存在しません |
| 2 | 次のパスはありません |
| 3 | 解決済みのファイル名は大きすぎてバッファーに格納できません |
| 4 | 結果のファイル名は無効です |
| 255 | その他のエラー |
user-file-spec の形式は次のとおりです。
| 標準ファイル名: | path\filename.ext (Windows)、または path/filename.ext (UNIX) |
| 組み込み環境変数: | $envname\filename.ext (Windows)、または $envname/filename.ext (UNIX) |
| 組み込みライブラリ名: | path\lbr-name.lbr\filename.ext (Windows)、または path/lbr-name.lbr/filename.ext (UNIX) |
説明:
CBL_LOCATE_FILE はストライプを認識しません。このルーチンをストライプ化したファイルで使用すると、ルーチンは、最初のストライプのみを検索します。そのため、このルーチンは個々のストライプでのみ使用し、ストライプ名でストライプを参照します。ストライプ化ファイルの使用の詳細については、「ファイルのストライプ化」を参照してください。