ファイル名の構成要素部分 (パス名、ベース名、および拡張子) を結合してファイル名を作成します。
call "CBL_JOIN_FILENAME" using sj-param join-buffer path-buffer basename-buffer extension-buffer returning status-code
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.
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 で決まります。 |
説明:
新しいファイル名は、次を結合して作成します。
このファイル名は、長さ 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 など) には追加されません。空ではないベース名にデバイスを結合することはできません (ドライブ文字には結合できます)。