CBL_JOIN_FILENAME

ファイル名の構成要素部分 (パス名、ベース名、および拡張子) を結合してファイル名を作成します。

構文:

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-lengthcblte-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
パス名
basename-buffer
ベース名
extension-buffer
拡張子
cblte-sj-join-buf-len
join-buffer の長さ

出力パラメーター:

cblte-sj-total-length
ファイル名の合計文字数
join-buffer
結合ファイル名
status-code
戻り状態:
0 成功
1 ファイル名が join-buffer を超えている
4 無効なファイル名

説明:

新しいファイル名は、次を結合して作成します。

  • path-buffer の最初の cblte-sj-device-length バイト (cblte-sj-device-offset から開始)
  • basename-buffer の最初の cblte-sj-basename-length バイト (cblte-sj-basename-offset から開始)
  • extension-buffer の最初の cblte-sj-extension-length バイト (cblte-sj-extension-offset から開始)

このファイル名は、長さ cblte-sj-total-lengthjoin-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-lengthcblte-sj-basename-length、および cblte-sj-extension-length で指定した長さよりも短くすることができます。

path-bufferbasename-bufferextension-buffer、および join-buffer は、それぞれ異なる 4 つのバッファーにする必要はありません。つまり、このルーチンを CBL_SPLIT_FILENAME とともに使用して、ファイル名の 1 つの構成要素を置き換えることができます。

path-buffer が空ではなく、後続のバックスラッシュ (\)、スラッシュ (/)、およびコロン (:) がなく、また basename-buffer も空でない場合は、join-buffer のパスとベース名の間にバックスラッシュ (Windows)、またはスラッシュ (UNIX) が挿入されます。

拡張子が「.」の場合は、join-buffer で返された文字列に空白文字の拡張子が付きます。つまり、ファイル名の後ろにピリオド (.) が付きます。

cblte-sj-total-lengthcblte-sj-join-buf-len よりも短い場合は、ファイル名の末尾に続く文字は、cblte-sj-split-join-flag1 のビット 1 の値に応じて null または空白文字になります。

パスが有効なドライブ文字で構成されていても、コロン (:) がない場合は、コロンが追加されます。ただし、コロンが必要でないデバイス (LPT1 など) には追加されません。空ではないベース名にデバイスを結合することはできません (ドライブ文字には結合できます)。これは、Windows 環境 (ローカル開発) にのみ該当します。