ファイル名の構成要素部分 (パス名、ベース名、および拡張子) を結合してファイル名を作成します。
構文:
call "CBL_JOIN_FILENAME" using sj-param
join-buffer
path-buffer
basename-buffer
extension-buffer
returning status-code
パラメーター
- sj-param
- cblt-splitjoin-buf として定義されている集団 (以下を含む)
01 cblt-splitjoin-buf typedef.
03 cblte-sj-param-length cblt-x2-compx. *> pic x(2) comp-x.
03 cblte-sj-split-join-flag1 cblt-x1-compx. *> pic x comp-x.
03 cblte-sj-split-join-flag2 cblt-x1-compx. *> pic x comp-x.
03 cblte-sj-device-offset cblt-x2-compx. *> pic x(2) comp-x.
03 cblte-sj-device-length cblt-x2-compx. *> pic x(2) comp-x.
03 cblte-sj-basename-offset cblt-x2-compx. *> pic x(2) comp-x.
03 cblte-sj-basename-length cblt-x2-compx. *> pic x(2) comp-x.
03 cblte-sj-extension-offset cblt-x2-compx. *> pic x(2) comp-x.
03 cblte-sj-extension-length cblt-x2-compx. *> pic x(2) comp-x.
03 cblte-sj-total-length cblt-x2-compx. *> pic x(2) comp-x.
03 cblte-sj-split-buf-len cblt-x2-compx. *> pic x(2) comp-x.
03 cblte-sj-join-buf-len cblt-x2-compx. *> pic x(2) comp-x.
03 cblte-sj-first-component-length cblt-x2-compx. *> pic x(2) comp-x.
- join-buffer
- 呼び出しプロトタイプ (「説明の読み方」を参照):pic x(n)
- PIC:pic x(n)
- path-buffer
- 呼び出しプロトタイプ (「説明の読み方」を参照):pic x(n)
- PIC:pic x(n)
- basename-buffer
- 呼び出しプロトタイプ (「説明の読み方」を参照):pic x(n)
- PIC:pic x(n)
- extension-buffer
- 呼び出しプロトタイプ (「説明の読み方」を参照):pic x(n)
- PIC:pic x(n)
- status-code
- 「説明の読み方」を参照してください。
入力パラメーター:
- cblte-sj-param-length
- sj-param の長さ (バイト単位) で、cblte-sj-param-length 用の 2 バイトを含みます。cblte-sj-param-length の通常の値は 24 です。
- cblte-sj-split-join-flag1
- 次のように設定できます。
- ビット 1
-
1 |
文字列は null で終了します。 |
0 |
文字列は空白文字で終了します。 |
- ビット 0
-
1 |
新しいファイル名は大文字に変換されます。 |
0 |
元の大文字と小文字が保持されます。 |
- cblte-sj-split-join-flag2
- 次のように設定できます。
- ビット 2
-
1 |
cblte-sj-split-join-flag1 のビット 1 を 0 に設定すると、各ファイル名構成要素の長さは、cblte-sj-path-length、cblte-sj-basename-length、および cblte-sj-extension-length で指定したとおりになります。このフラグは、ファイル名構成要素の 1 つに有効な空白文字がある場合に使用できます。cblte-sj-split-join-flag1 のビット 1 が 1 の場合、このフラグは無視されます。
|
0 |
ファイル名構成要素の長さは、cblte-sj-split-join-flag1 のビット 1 で決まります。
|
- ビット 1
- 予約済み
- ビット 0
- 予約済み
- cblte-sj-device-offset
- 1 から索引化される path-buffer のベース名の開始のオフセット
- cblte-sj-device-length
- 空白終了でも null 終了でもない場合のパスの長さ
- cblte-sj-basename-offset
- 1 から索引化される basename-buffer のベース名の開始のオフセット
- cblte-sj-basename-length
- 空白終了でも null 終了でもない場合のベース名の長さ
- cblte-sj-extension-offset
- 1 から索引化される extension-buffer の拡張子の開始のオフセット
- cblte-sj-extension-length
- 空白終了でも null 終了でもない場合の拡張子の長さ
- path-buffer
- パス名または MFDBFH フォルダーの URL (sql://myserver/mydstore?type=folder;folder=/myfolder など)。MFDBFH の URL の詳細については、「データストアの URL」を参照してください。
- basename-buffer
- ベース名
- extension-buffer
- 拡張子
- cblte-sj-join-buf-len
- join-buffer の長さ
出力パラメーター:
- cblte-sj-total-length
- ファイル名の合計文字数
- join-buffer
- 結合ファイル名path-buffer に MFDBFH フォルダーの URL が格納されている場合、返される join-buffer は完全なデータストアの URL になります。詳細については、「データストアの URL」を参照してください。
- status-code
- 戻り状態:
0 |
成功 |
1 |
ファイル名が join-buffer を超えている
|
4 |
無効なファイル名 |
説明:
新しいファイル名は、次を結合して作成します。
このファイル名は、長さ cblte-sj-total-length で join-buffer 内に配置されます。
このルーチンでは、cblte-sj-split-join-flag1 の最下位ビット (ビット 0) を設定することによって、大文字に変換するように指定できます。このビットを設定しない場合は、大文字と小文字の別は保持されます。
このルーチンは、null で終了する文字列または空白文字で終了する文字列のどちらも受け入れることができます。cblte-sj-split-join-flag1 の最下位から 2 番目のビット (ビット 1) を設定すると、null で終了する文字列と見なされます。このビットを設定しない場合は、空白文字で終了する文字列と見なされます。
空白文字または null で終了している場合は、cblte-sj-split-join-flag1 のビット 1 の設定に応じて、パス、ベース名、および拡張子のフィールドをそれぞれ cblte-sj-path-length、cblte-sj-basename-length、および cblte-sj-extension-length で指定した長さよりも短くすることができます。
path-buffer、basename-buffer、extension-buffer、および join-buffer は、それぞれ異なる 4 つのバッファーにする必要はありません。つまり、このルーチンを CBL_SPLIT_FILENAME とともに使用して、ファイル名の 1 つの構成要素を置き換えることができます。
path-buffer が空ではなく、後続のバックスラッシュ (\)、スラッシュ (/)、およびコロン (:) がなく、また basename-buffer も空でない場合は、join-buffer のパスとベース名の間にバックスラッシュが挿入されます。
拡張子が「.」の場合は、join-buffer で返された文字列に空白文字の拡張子が付きます。つまり、ファイル名の後ろにピリオド (.) が付きます。
cblte-sj-total-length が cblte-sj-join-buf-len よりも短い場合は、ファイル名の末尾に続く文字は、cblte-sj-split-join-flag1 のビット 1 の値に応じて null または空白文字になります。
パスが有効なドライブ文字で構成されていても、コロン (:) がない場合は、コロンが追加されます。ただし、コロンが必要でないデバイス (LPT1 など) には追加されません。空ではないベース名にデバイスを結合することはできません (ドライブ文字には結合できます)。