CBL_LOCATE_FILE

このルーチンには、2 種類の使用法があります。このルーチンは、ファイル指定で環境変数を拡張する場合に使用できます。この場合、環境変数には、いくつかのパスのリストが含まれます。特定のファイル指定を使用する OPEN INPUT 文で、ライブラリ ファイル内のファイルまたは個別のディスク ファイルのどちらを検索するかを指定することもできます。

構文:

call "CBL_LOCATE_FILE" using     user-file-spec
                                 user-mode
                                 actual-file-spec
                                 exist-flag
                                 path-flag
                       returning status-code

パラメーター:

user-file-spec
呼び出しプロトタイプ使用時 (「説明の読み方」を参照):pic x(n)
PIC:pic x(n)
user-mode
呼び出しプロトタイプ使用時 (「説明の読み方」を参照):cblt-x1-compx
PIC:pic x comp-x
actual-file-spec
呼び出しプロトタイプ使用時 (「説明の読み方」を参照):次のように定義された集団項目
01 actual-file-spec.
   03 buffer-len   cblt-x2-compx. 
   03 buffer       pic x(n). 
PIC:次のように定義された集団項目
01 actual-file-spec.
   03 buffer-len   pic x(2) comp-x. 
   03 buffer       pic x(n). 
exist-flag
呼び出しプロトタイプ使用時 (「説明の読み方」を参照):cblt-x1-compx
PIC:pic x comp-x
path-flag
呼び出しプロトタイプ使用時 (「説明の読み方」を参照):cblt-x1-compx
PIC:pic x comp-x
status-code
説明の読み方」を参照

入力パラメーター:

user-file-spec
ファイル名指定を含みます。ファイル名指定には、組み込みの環境変数またはライブラリ名を含めることができます。user-mode のビット 7 に応じて、空白文字終了または null 終了の文字列にすることができます。
注: 空白文字を含むファイル名の場合は、二重引用符 (") で囲みます。
user-mode
user-file-spec に対して実行する操作を指定します。
ビット ペア 0 と 1 (値 0、1、または 2)
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 予約済み。使用できません。
ビット 2 から 6
予約済み。ゼロに設定する必要があります。
ビット 7
終了記号のタイプを決定します。
0 user-file-spec および actual-file-spec は空白文字で終了します。
1 user-file-spec および actual-file-spec は null で終了します。
path-flag
user-mode の最初の 2 ビットが 2 (10) に設定されている場合に、user-mode の最初の 2 ビットが 1 (01) または 2 (10) である際の前の呼び出しでこのデータ項目に返された値が格納されています。
buffer-len
buffer のサイズ

出力パラメーター:

buffer
user-mode で説明した解決済みのファイル指定を格納するバッファー。解決済みのファイル指定が buffer-len で指定したサイズより大きい場合は、buffer の内容は変更されず、status-code はその内容に従って設定されます。
exist-flag
user-mode = 0 の場合、終了時のこのデータ項目は、user-file-spec で指定されたファイルが存在するかどうかを示します。
0 ファイルは見つからなかったか検索されませんでした
1 ファイルはすでに開いていたライブラリ内に見つかりました
2 ファイルは user-file-spec で指定したライブラリ内に見つかりました
3 ファイルは個別のディスク ファイルとして見つかりました
user-mode が 0 以外の場合は、このデータ項目が終了時に常に 0 になります。
path-flag
user-file-spec に、actual-file-spec で拡張された組み込みの環境変数が含まれているかどうかを示します。
0 actual-file-spec には、組み込みの環境変数が含まれません。
>0 actual-file-spec には、拡張された環境変数が含まれます。
status-code
戻り状態:
0 成功
1 環境変数は存在しません
2 次のパスはありません
3 解決済みのファイル名は大きすぎてバッファーに格納できません
4 結果のファイル名は無効です
255 その他のエラー

説明:

CBL_LOCATE_FILE はストライプを認識しません。このルーチンをストライプ化したファイルで使用すると、ルーチンは、最初のストライプのみを検索します。そのため、このルーチンは個々のストライプでのみ使用し、ストライプ名でストライプを参照します。ストライプ化ファイルの使用の詳細については、「ファイルのストライプ化」を参照してください。

注: ストライプ化は非推奨です。下位互換性のみを目的として提供されています。代わりに IDXFORMAT"8" を使用することをお勧めします。

例:

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)