![]() | REBUILD | その他のトピック | ![]() |
この章では、ファイルの処理に使用できる COBOL システムライブラリルーチンについて説明します。
次の COBOL システムライブラリルーチンを使用すると、COBOL アプリケーションからファイルを処理することができます。
CBL_CHANGE_DIR | カレントディレクトリを変更します。 |
CBL_CHECK_FILE_EXIST | ファイルが存在するかどうか確認します。 |
CBL_COPY_FILE | ファイルをコピーします。 |
CBL_CREATE_DIR | ディレクトリを作成します。 |
CBL_DELETE_DIR | ディレクトリを削除します。 |
CBL_DELETE_FILE | ファイルを削除します。 |
CBL_GET_CURRENT_DIR | カレントディレクトリを返します。 |
CBL_JOIN_FILENAME | ファイル名の構成要素部分を結合してファイル名を作成します。 |
CBL_LOCATE_FILE | ファイルを検索し、パスを拡張します。 |
CBL_READ_DIR | カレントディレクトリを読み取ります。 |
CBL_RENAME_FILE | ファイルのの名前を変更します。 |
CBL_SPLIT_FILENAME | ファイル名をその構成要素部分に分割します。 |
x"91" function 46 | ヌル挿入を有効化します。 |
x"91" function 47 | ヌル挿入を無効化します。 |
x"91" function 48 | タブ挿入を有効化します。 |
x"91" function 49 | タブ挿入を無効化します。 |
x"91" function 52 | 2 バイトのレコード終了記号の使用を指定します。 |
x"91" function 53 | 1 バイトのレコード終了記号の使用を指定します。 |
すべての名前別呼び出しルーチンの説明を、アルファベット順に示します。その後に、番号別呼び出しルーチンを示します。 それぞれの説明には、ルーチン名とファンクションおよび、必要に応じて、次のエントリが示されます。
構文 | ルーチンを呼び出す際に使用できる CALL 文を示します。
オプションの RETURNING 句も示されます。全てのルーチンは、操作の結果を示す値を返します。特に指定がない限り、ゼロの値は成功を示し、ゼロ以外の値は失敗を示します。この値は、RETURNING 句で指定したデータ項目 (このリファレンスでは、状態コード) に残ります。この句を省略すると、値は特殊なレジスタ RETURN-CODE に残ります(呼び出し規則ビット 2 を設定すると、RETURN-CODE は変更されません。) 状態コードは、0〜65535 までの正の値を格納できる数値データ項目です (PIC X(2) COMP-5 など)。 ルーチンの名前は大文字でコード化する必要があります。 |
パラメータ | RETURNING および USING 句に示されるパラメータを説明します。角かっこで囲まれたパラメータ ( [parameter1] など) はオプションで、ルーチンのすべてのフォームには必要ありません。 |
入力時 | 表示されるパラメータの中で、入力時に渡されるパラメータを示します。 |
終了時 | 表示されるパラメータの中で、終了時に返されるパラメータを示します。
1 以上のバイトのビットが参照される場合、ビット 0 はLSB (右端) になります。 |
コメント | ルーチンを正常に使用するための追加情報を示します。 |
関連トピック | 他の関連トピックを列挙します。 |
カレントディレクトリを変更します。
call "CBL_CHANGE_DIR" using path-name returning status-code
path-name
pic
x(n).
status-code
『キー』を参照してください。
path-name |
空白文字またはヌル (x"00") で終了する相対または絶対パス名。この値は、オペレーティングシステムで許可される最大文字数を超えないようにし、ルーチンを呼び出すときはカレントのディレクトリで有効である必要があります。 |
なし
ファイルが存在するかどうか確認して、ファイルが存在する場合はその詳細を返します。
call "CBL_CHECK_FILE_EXIST" using filename file-details returning status-code
filename
pic
x(n).
file-details
cblt-exit-params
としてあらかじめ定義されているグループ項目。
次の従属項目を含みます。
cblte-fe-filesize
cblt-x8-compx
cblte-fe-date
次のように定義されるグループ項目
cblte-fe-day
cblt-x1-compx
cblte-fe-month
cblt-x1-compx
cblte-fe-year
cblt-x2-compx
cblte-fe-time
次のように定義されるグループ項目
cblte-fe-hours
cblt-x1-compx
cblte-fe-minutes
cblt-x1-compx
cblte-fe-seconds
cblt-x1-compx
cblte-fe-hundredths
cblt-x1-compx
status-code
『キー』を参照してください。
filename |
検索対象のファイル。名前はパスを含むことができ、空白文字で終了します。パスを指定しない場合は、カレントディレクトリとみなされます。 |
cblte-fe-filesize |
ファイルのサイズ (バイト数) |
cblte-fe-date |
ファイルが作成された日付 |
cblte-fe-time |
ファイルが作成された時刻 |
ファイル名にはワイルドカード文字を使用できません。
CBL_CHECK_FILE_EXIST はストライプを認識しません。このルーチンを、ストライピングされたファイルで使用すると、最初のストライプのみに関する詳細が返されます。そのため、このルーチンは個々のストライプでのみ使用し、ストライプ名別にストライプを参照します。ストライピングされたファイルの使用方法については、『ファイルハンドラの構成』の章の『ファイルのストライピング』の項を参照してください。
ファイルをコピーします。
call "CBL_COPY_FILE" using filename1 filename2 returning status-code
filename1
pic
x(n)
filename2
pic
x(n)
status-code
『キー』を参照してください。
filename1 |
コピーするファイル。名前にはパスを含めることができ、空白文字で終了します。パスを指定しない場合は、カレントディレクトリとみなされます。 |
filename2 |
新しいファイルの名前。名前はパスを含めることができ、空白文字で終了します。パスを指定しない場合は、カレントディレクトリとみなされます。 |
None.
ファイル名にはワイルドカード文字を使用できません。
CBL_COPY_FILE は、等価のオペレーティングシステムの呼び出しをエミュレートします。そのため、新しいファイルは現在の日時のスタンプが押されます。
CBL_COPY_FILE はストライプを認識しません。このルーチンをストライピングされたファイルで使用すると、最初のストライプのみがコピーされます。そのため、このルーチンは個々のストライプでのみ使用し、ストライプ名でストライプを参照します。ストライピングされたファイルの使用方法については、『ファイルハンドラの構成』の章の『ファイルのストライピング』の項を参照してください。
サブディレクトリを作成します。指定したパスのすべてのディレクトリ (最後のディレクトリ以外) が存在している必要があります。
call "CBL_CREATE_DIR" using path-name returning status-code
path-name
pic
x(n)
status-code
『キー』を参照してください。
path-name |
空白文字またはヌル (x"00") で終了する相対または絶対パス名 |
なし
ディレクトリを削除します。ディレクトリは、空の場合にのみ削除されます。
call "CBL_DELETE_DIR" using path-name returning status-code
path-name
pic
x(n)
status-code
『キー』を参照してください。
path-name |
空白文字またはヌル (x"00") で終了する相対または絶対パス名 |
なし
ファイルを削除します。
call "CBL_DELETE_FILE" using filename returning status-code
filename
pic
x(n)
status-code
『キー』を参照してください。
filename |
削除するファイル。名前にはパス名を含めることができ、空白文字で終了します。 パスを指定しない場合は、カレントディレクトリとみなされます。 |
None
ファイル名にはワイルドカード文字を使用できません。
CBL_DELETE_FILE はストライプを認識しません。このルーチンをストライピングされたファイルで使用すると、最初のストライプのみが削除されます。そのため、このルーチンは個々のストライプでのみ使用し、ストライプ名でストライプを参照します。ストライピングされたファイルの使用方法については、『ファイルハンドラの構成』の章の『ファイルのストライピング』の項を参照してください。
カレントディレクトリを返します。
call "CBL_GET_CURRENT_DIR" using by value flags by value name-length by reference directory-name returning status-code
flags |
cblt-os-flags |
name-length |
cblt-os-size |
directory-name |
pic x(n) |
status-code |
『キー』を参照してください。 |
flags |
予約済み。ゼロに設定する必要があります。 |
name-length |
directory-name パラメータのサイズ (バイト数)。このパラメータは、返すことができる最長のディレクトリ名より長くする必要があります。 |
directory-name |
空白文字で終了する形式のカレント作業ディレクトリを含みます。directory-name に埋め込みの空白文字が含まれている場合は、この空白文字が二重引用符で囲まれて返されます。このパラメータは、この二重引用符も格納できる大きさにする必要があります。 | ||||
status-code |
戻りコード
|
ファイル名の構成要素部分 (パス名、基本名および拡張子) を結合してファイル名を作成します。
call "CBL_JOIN_FILENAME" using sj-param join-buffer path-buffer basename-buffer extension-buffer returning status-code
sj-param |
cblt-splitjoin-buf としてあらかじめ定義されたグループ項目で、次の従属項目を含みます。
|
||||||||||||||||||||||||||
join-buffer |
pic x(n) | ||||||||||||||||||||||||||
path-buffer |
pic x(n) | ||||||||||||||||||||||||||
basename-buffer |
pic x(n) | ||||||||||||||||||||||||||
extension-buffer |
pic x(n) | ||||||||||||||||||||||||||
status-code |
『キー』を参照してください。 |
cblte-sj-param-length |
2 バイトの cblte-sj-param-length を含む sj-param の長さ (バイト数)。cblte-sj-param-length の標準値は 24 です。 |
|||||||||||||||
cblte-sj-split-join-flag1 |
次のように設定できます。
|
|||||||||||||||
cblte-sj-split-join-flag2 |
次のように設定できます。
|
|||||||||||||||
cblte-sj-device-offset |
1 から索引化される path-buffer のパスの開始のオフセット |
|||||||||||||||
cblte-sj-device-length |
空白文字またはヌルで終了しない場合のパスの長さ | |||||||||||||||
cblte-sj-basename-offset |
1 から索引化されるbasename-buffer の基本名の開始のオフセット |
|||||||||||||||
cblte-sj-basename-len |
空白文字またはヌルで終了しない場合の基本名の長さ | |||||||||||||||
cblte-sj-extension-offset |
1 から索引化される extension-buffer の拡張子の開始のオフセット |
|||||||||||||||
cblte-sj-extension-length |
空白文字またはヌルで終了しない場合の拡張子の長さ | |||||||||||||||
path-buffer |
パス名 | |||||||||||||||
basename-buffer |
基本名 | |||||||||||||||
extension-buffer |
拡張子 | |||||||||||||||
cblte-sj-join-buf-len |
join-buffer の長さ |
cblte-sj-total-length |
ファイル名の文字の合計数 | ||||||
join-buffer |
結合されたファイル名 | ||||||
status-code |
戻り状態
|
新しいファイル名は、次を結合して作成します。
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-length
で join-buffer
内に配置されます。
cblte-sj-split-join-flag1
の LSB (ビット 0) を設定すると、このルーチンを使用してファイル名のアルファベットを大文字に変換できます。このビットを設定しない場合は、大文字と小文字の別が保持されます。
このルーチンは、ヌルで終了する文字列または空白文字で終了する文字列のどちらも受け入れることができます。cblte-sj-split-join-flag1
の 2 番目の LSB (ビット 1) を設定すると、ルーチンはヌルで終了する文字列とみなします。このビットを設定しない場合は、空白文字で終了する文字列とみなされます。
空白文字またはヌルで終了している場合は、パス、基本名および拡張子のフィールドを、cblte-sj-split-join-flag1
の ビット 1 の設定に応じて、それぞれcblte-sj-device-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
で返された文字列に空白文字の拡張子が付きます。つまり、ファイル名の後ろにピリオド(.)がつきます。
cblt-sj-total-length
が cblte-sj-join-buf-len
よりも短い場合は、ファイル名の終わりの後の文字は、cblte-sj-split-join-flag1
のビット 1 の値に基づきヌルまたは空白文字になります。
パスフィールドが有効なドライブ文字で構成されていても、コロン(:)がない場合は、このルーチンがコロンを追加します。ただし、コロンが必要でないデバイス (LPT1 など) には追加されません。空ではない基本名にデバイスを結合することはできません (ドライブ文字には結合できます)。
************************************************************ * * * (C) Micro Focus 2000 * * * * SPLTJOIN.CBL * * * * このプログラムはファイル名を構成要素の文字列 * * (CBL_SPLIT_FILENAME) に分けたり、結合して ファイル名 * * (CBL_JOIN_FILENAME) にすることができるルーチンの * * 例です。 * * * ************************************************************ working-storage section. 78 environ value "dos". 01 split-buffer pic x(65). 01 split-params cblt-splitjoin-buf. 03 cblte-sj-param-length cblt-x2-compx value 24. 03 cblte-sj-split-join-flag1 cblt-x1-compx value 0. 03 cblte-sj-split-join-flag2 cblt-x1-compx. 03 cblte-sj-device-offset cblt-x2-compx. 03 cblte-sj-device-length cblt-x2-compx. 03 cblte-sj-basename-offset cblt-x2-compx. 03 cblte-sj-basename-length cblt-x2-compx. 03 cblte-sj-extension-offset cblt-x2-compx. 03 cblte-sj-extension-length cblt-x2-compx. 03 cblte-sj-total-length cblt-x2-compx. 03 cblte-sj-split-buf-len cblt-x2-compx value 65. 03 cblte-sj-join-buf-len cblt-x2-compx value 65. 03 cblte-sj-first-component-length cblt-x1-compx. 01 join-buffer pic x(65). 01 path-buffer pic x(65). 01 basename-buffer pic x(65). 01 extension-buffer pic x(3) value "cbl". procedure division. * 長さを設定 move 65 to cblte-sj-split-buf-len cblte-sj-join-buf-len * 空白文字で終了し、大文字に変換するフラグを設定 move 1 to cblte-sj-split-join-flag1 $if environ = "unix" move "/dir/file.ext" to split-buffer $else move "a:\dir\file.ext" to split-buffer $end move 1 to cblte-sj-split-join-flag1 call "CBL_SPLIT_FILENAME" using split-params split-buffer * ここで結合に必要なパラメータの大半を設定。 * 結合ではsplit-bufferの元の拡張子を * extension-bufferの拡張子に置き換え、 * 結果をjoin-bufferに入れます。 move 1 to cblte-sj-extension-offset move 3 to cblte-sj-extension-length call "CBL_JOIN_FILENAME" using split-params join-buffer split-buffer split-buffer extension-buffer $if environ = "unix" if join-buffer = "/DIR/FILE.CBL" then $else if join-buffer = "A:\DIR\FILE.CBL" then $end display "first test passed" else display "first test failed" end-if * 最初に分けないで結合を設定するのは難しいが、 * 必要なことです。 move 1 to cblte-sj-device-offset cblte-sj-basename-offset cblte-sj-extension-offset move length of path-buffer to cblte-sj-device-length move length of basename-buffer to cblte-sj-basename-length move length of extension-buffer to cblte-sj-extension-length move length of join-buffer to cblte-sj-join-buf-len move 0 to cblte-sj-split-join-flag1 move 24 to cblte-sj-param-length $if environ = "unix" move "/path" to path-buffer $else move "c:\path" to path-buffer $end move "basename" to basename-buffer move "ext" to extension-buffer call "CBL_JOIN_FILENAME" using split-params join-buffer path-buffer basename-buffer extension-buffer $if environ = "unix" if join-buffer = "/path/basename.ext" then $else if join-buffer = "c:\path\basename.ext" then $end display "second test passed" else display "second test failed" end-if stop run.
このルーチンには、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).
user-mode
cblt-x1-compx
actual-file-spec
次のように定義されるグループ項目
buffer-len
pic
x(2) comp-x
buffer
pic
x(n)
exist-flag
pic
x comp-x
path-flag
pic
x comp-x
status-code
『キー』を参照してください。
user-file-spec |
ファイル名指定を含みます。ファイル名指定には、埋め込みの環境変数またはライブラリ名を含むことができます。 | ||||||
user-mode |
user-file-spec の処理内容を指定します。
|
||||||
path-flag |
user-mode = 2 の場合は、このデータ項目に、前の user-mode
= 1 または 2 の呼び出しからこの項目に返された値が含まれます。 |
||||||
buffer-len |
バッファのサイズ |
buffer |
『user-mode 』で説明した解決済みのファイル指定を格納するバッファ。解決済みのファイル指定が buffer-len で指定したサイズより大きい場合は、バッファの内容は変更されず、status-code はその内容に従って設定されます。 |
||||||||||||
exist-flag |
user-mode = 0 の場合は、このデータ項目が、終了時に、user-file-spec
で指定したファイルが存在するかどうかを示します。
|
||||||||||||
path-flag |
user-file-spec に、actual-file-spec
で拡張された埋め込みの環境変数が含まれていたかどうかを示します。
|
||||||||||||
status-code |
戻り状態
|
user-file-spec
は次のフォームを取ります。
path/filename.ext $envname/filename.ext path/lbr-name.lbr/filename.ext
CBL_LOCATE_FILE はストライプを認識しません。このルーチンをストライピングしたファイルで使用すると、ルーチンは、最初のストライプのみを検索します。そのため、このルーチンは個々のストライプでのみ使用し、ストライプ名別にストライプを参照します。ストライピングされたファイルの使用方法については、『ファイルハンドラの構成』の章の『ファイルのストライピング』の項を参照してください。
カレントディレクトリまたはパスを返します。
call "CBL_READ_DIR" using path-name path-name-length returning status-code
path-name
pic
x(n)
path-name-length
cblt-x1-compx
status-code
『キー』を参照してください。
path-name-length |
使用する path-name の長さ。この長さが短すぎてパス名を含めることができない場合は、ルーチンが失敗します。 |
path-name |
空白文字またはヌル (x"00") で終了する相対または絶対パス名 |
ファイルの名前を変更します。
call "CBL_RENAME_FILE" using old-filename new-filename returning status-code
old-filename
pic
x(n)
new-filename
pic
x(n)
status-code
『キー』を参照してください。
old-filename |
名前を変更するファイル。名前はパス名を含めることができ、空白文字で終了します。パス名を指定しない場合は、カレントディレクトリとみなされます。
このルーチンは、ワイルドカード文字を含むファイル名に対しては機能しません。 |
new-filename |
空白文字で終了する新しい名前。old-filename にパス名が含まれる場合は、この新しい名前に同じパス名が含まれる必要があります。一部のオペレーティングシステムでは、new-filename
の名前のファイルがすでに存在する場合に、ファイル名を変更できないことがあります。 |
なし
CBL_RENAME_FILE はストライプを認識しません。このルーチンをストライピングしたファイルで使用すると、ルーチンは、最初のストライプのみの名前を変更します。そのため、このルーチンは個々のストライプでのみ使用し、ストライプ名でストライプを参照します。ストライピングされたファイルの使用方法については、『ファイルハンドラの構成』の章の『ファイルのストライピング』の項を参照してください。
ファイル名をその構成要素部分 (パス名、基本名および拡張子) に分割します。
call "CBL_SPLIT_FILENAME" using sj-param split-buffer returning status-code
sj-param |
次の従属項目を含む、cblt-splitjoin-buf としてあらかじめ定義されたグループ項目
|
||||||||||||||||||||||||||
split-buffer |
pic x(n) | ||||||||||||||||||||||||||
status-code |
『キー』を参照してください。 |
cblte-sj-param-length |
2 バイトの cblte-sj-param-length を含む、sj-param の長さ (バイト数)。cblte-sj-param-length の標準値は 24 です。 |
|||||||||||||||
cblte-sj-split-join-flag1 |
|
|||||||||||||||
cblte-sj-split-buf-len |
split-buffer の長さ |
|||||||||||||||
split-buffer |
分割する文字列 |
cblte-sj-split-join-flag2 |
ビット 2 ファイル名に有効な空白文字がある場合に設定します。 ビット 1 パスにワイルドカードがある場合に設定します。 ビット 0 基本名または拡張子にワイルドカードがある場合に設定します。 |
||||
cblte-sj-device-offset |
1 から開始する split-buffer の開始 |
||||
cblte-sj-device-length |
パス名の長さ。パス名がない場合はゼロになります。長さには名前の後に続くコロン (:) も含まれます。 | ||||
cblte-sj-basename-offset |
1 から開始する split-buffer の基本名の開始 |
||||
cblte-sj-basename-length |
基本名の長さ。基本名がない場合はゼロになります。長さには名前に続くピリオド (.) は含まれません。 | ||||
cblte-sj-extension-offset |
1 から開始する split-buffer の拡張子の開始 |
||||
cblte-sj-extension-length |
拡張子の長さ。拡張子がない場合はゼロになります。長さには、拡張子の前のピリオド (.) は含まれません。 | ||||
cblte-sj-total-length |
文字列内の合計文字数 | ||||
cblte-sj-first-component-length |
最初のバックスラッシュ(\)、スラッシュ(/)またはコロン(:)を含む合計文字数。split-buffer
にこれらの文字が含まれない場合は、このパラメータが path-len になります。 |
||||
split-buffer |
cblte-sj-split-join-flag1 のビット 0 が設定されている場合は、このルーチンがアルファベットのファイル名を大文字に変換します。cblte-sj-split-join-flag1
のビット 1 を使用せず、split-buffer が埋込めみの空白文字または引用符を含む引用符付きの名前である場合は、不要な引用符は削除されます。 |
||||
status-code |
戻り状態
|
このルーチンを使用してファイル名のアルファベットをすべて大文字に変更するには、cblte-sj-split-join-flag1
の LSB (ビット 0) を設定します。このビットを設定しない場合は、大文字と小文字の別は保持されます。
このルーチンは、ヌルで終了する文字列または空白文字で終了する文字列のどちらも受け入れることができます。cblte-sj-split-join-flag1
の 2 番目の LSB (ビット 1) を設定すると、ルーチンはヌルで終了する文字列とみなします。このビットを設定しない場合は、空白文字で終了する文字列とみなされます。
ファイル名に 2 つ以上のピリオド (.) がある場合 (パス名のピリオド (.) は含まない)、返された拡張子は、最後のピリオド (.) とファイル名の最後の文字で構成されます。基本名には、最後のピリオド (.) を除いたすべてが含まれます。
拡張子が空白文字の場合に、拡張子のないファイル名と空白文字の拡張子をもつファイル名 (最後の文字がピリオド (.) の基本名) を区別するには、 cblte-sj-extension-len が 1 となり、 cblte-sj-extsentions は最後のピリオド(.)指します。
します。
************************************************************ * * * (C) Micro Focus * * * * SPLTJOIN.CBL * * * * このプログラムはファイル名を構成要素の文字列 * * (CBL_SPLIT_FILENAME) に分けたり、結合して ファイル名 * * (CBL_JOIN_FILENAME) にすることができるルーチンの * * 例です。 * * * ************************************************************ working-storage section. 78 environ value "dos". 01 split-buffer pic x(65). 01 split-params cblt-splitjoin-buf. 03 cblte-sj-param-length cblt-x2-compx value 24. 03 cblte-sj-split-join-flag1 cblt-x1-compx value 0. 03 cblte-sj-split-join-flag2 cblt-x1-compx. 03 cblte-sj-device-offset cblt-x2-compx. 03 cblte-sj-device-length cblt-x2-compx. 03 cblte-sj-basename-offset cblt-x2-compx. 03 cblte-sj-basename-length cblt-x2-compx. 03 cblte-sj-extension-offset cblt-x2-compx. 03 cblte-sj-extension-length cblt-x2-compx. 03 cblte-sj-total-length cblt-x2-compx. 03 cblte-sj-split-buf-len cblt-x2-compx value 65. 03 cblte-sj-join-buf-len cblt-x2-compx value 65. 03 cblte-sj-first-component-length cblt-x1-compx. 01 join-buffer pic x(65). 01 path-buffer pic x(65). 01 basename-buffer pic x(65). 01 extension-buffer pic x(3) value "cbl". procedure division. * 長さを設定 move 65 to cblte-sj-split-buf-len cblte-sj-join-buf-len * 空白文字で終了し、大文字に変換するフラグを設定 move 1 to cblte-sj-split-join-flag1 $if environ = "unix" move "/dir/file.ext" to split-buffer $else move "a:\dir\file.ext" to split-buffer $end move 1 to splitjoin-flg1 call "CBL_SPLIT_FILENAME" using split-params split-buffer * ここで結合に必要なパラメータの大半を設定。 * 結合ではsplit-bufferの元の拡張子を * extension-bufferの拡張子に置き換え、 * 結果をjoin-bufferに入れます。 move 1 to extension-strt move 3 to extension-len call "CBL_JOIN_FILENAME" using split-params join-buffer split-buffer split-buffer extension-buffer $if environ = "unix" if join-buffer = "/DIR/FILE.CBL" then $else if join-buffer = "A:\DIR\FILE.CBL" then $end display "first test passed" else display "first test failed" end-if * 最初に分けないで結合を設定するのは難しいが、 * 必要なことです。 move 1 to cblte-sj-device-offset cblte-sj-basename-offset cblte-sj-extension-offset move length of path-buffer to cblte-sj-device-length move length of basename-buffer to cblte-sj-basename-length move length of extension-buffer to cblte-sj-extension-length move length of join-buffer to cblte-sj-join-buf-len move 0 to cblte-sj-split-join-flag1 move 24 to cblte-sj-param-length $if environ = "unix" move "/path" to path-buffer $else move "c:\path" to path-buffer $end move "basename" to basename-buffer move "ext" to extension-buffer call "CBL_JOIN_FILENAME" using split-params join-buffer path-buffer basename-buffer extension-buffer $if environ = "unix" if join-buffer = "/path/basename.ext" then $else if join-buffer = "c:\path\basename.ext" then $end display "second test passed" else display "second test failed" end-if stop run.
行順ファイルで x"20" 未満の値をもつデータの 4 文字の前へのヌル文字 (x"00") の挿入を有効化します。
call x"91" using result function-code parameter
result
pic
x comp-x
function-code
pic
x comp-x
parameter
ファイルの FD 名
function-code
|
値 46 |
parameter |
ファイル記述 (FD) で指定されたファイル識別子。現在開かれている行順ファイルを参照する必要があります。 |
result |
呼び出しが成功した場合はゼロに設定されます。それ以外の場合は、ゼロ以外に設定されます。 |
ファイルに ASCII 以外のデータを含む場合は、ヌル挿入を有効化する必要があります。このファンクションは、ヌル挿入ランタイムスイッチ (N) の設定に関係なく、個々のファイルに対してヌル挿入を有効化します。
x"91" には多くのサポートルーチンが必要なため、このファンクションをプログラムに含めると、実行可能ファイルのサイズが非常に大きくなります。
fd payroll-file ... call x"91" using result function-code payroll-file
行順ファイルで x"20" 未満の値をもつデータの文字の前へのヌル文字 (x"00") の挿入を無効化します。
call x"91" using result function-code parameter
result
pic
x comp-x
function-code
pic
x comp-x
parameter
ファイルの FD 名
function-code
|
値 47 |
parameter |
ファイル記述 (FD) で指定されたファイル識別子。現在開かれている行順ファイルを参照する必要があります。 |
result |
呼び出しが成功した場合はゼロに設定されます。それ以外の場合は、ゼロ以外に設定されます。 |
このファンクションは、ヌル挿入ランタイムスイッチ (N) の設定に関係なく、個々のファイルに対してヌル挿入を無効化することができます。
ファイルが EXTERNAL として宣言されている場合は、このファンクションを使用できません。
x"91" には多くのサポートルーチンが必要なため、このファンクションをプログラムに含めると、実行可能ファイルの容量が非常に大きくなります。
行順ファイルでタブ文字の挿入を有効化します。
call x"91" using result function-code parameter
result
pic
x comp-x
function-code
pic
x comp-x
parameter
ファイルの FD 名
function-code
|
値 48 |
parameter |
ファイル記述 (FD) で指定されたファイル識別子。現在開いている行順ファイルを参照する必要があります。 |
result |
呼び出しが成功した場合はゼロに設定されます。それ以外の場合は、ゼロ以外に設定されます。 |
入力時には、すべてのタブ文字は適切な数の空白文字に拡張されますが、ディスクへの出力時には、タブ停止位置の前の複数の空白文字がタブ文字に短縮されます。このファンクションは、タブ圧縮ランタイムスイッチ (T) の設定に関係なく、個々のファイルに対しタブ挿入を有効化します。
x"91" には多くのサポートルーチンが必要なため、このファンクションをプログラムに含めると、実行可能ファイルのサイズが非常に大きくなります。
行順ファイルへのタブ文字の挿入を無効化します。
call x"91" using result function-code parameter
result
pic
x comp-x
function-code
pic
x comp-x
parameter
ファイルの FD 名
function-code
|
値 49 |
parameter |
ファイル記述 (FD) で指定されたファイル識別子。現在開かれている行順ファイルを参照する必要があります。 |
result |
呼び出しが成功した場合はゼロに設定されます。それ以外の場合は、ゼロ以外に設定されます。 |
このファンクションは、ヌル挿入ランタイムスイッチ (N) の設定に関係なく、個々のファイルに対してヌル挿入を無効化します。
x"91" には多くのサポートルーチンが必要なため、このファンクションをプログラムに含めると、実行可能ファイルのサイズが非常に大きくなります。
指定した行順ファイルまたは相対ファイルで 2 バイトのレコード終了記号を使用します。
call x"91" using result function-code parameter
result
pic
x comp-x
function-code
pic
x comp-x
parameter
ファイルの FD 名
function-code
|
値 52 |
parameter |
ファイル記述 (FD) で指定されたファイル識別子 |
result |
呼び出しが成功した場合はゼロに設定されます。それ以外の場合は、ゼロ以外に設定されます。 |
使用するレコード終了記号は x"0D0A" (キャリッジリターン、ラインフィード) です。
x"91" には多くのサポートルーチンが必要なため、このファンクションをプログラムに含めると、実行可能ファイルの容量が非常に大きくなります。
レコードを行順ファイルまたは相対ファイルに書込むときに、UNIX デフォルトの 1 バイトのレコード終了記号を復元します。
call x"91" using result function-code parameter
result
pic
x comp-x
function-code
pic
x comp-x
parameter
ファイルの FD 名
function-code
|
値 53 |
parameter |
ファイル記述 (FD) で指定されたファイル識別子 |
result |
呼び出しの結果を示します。呼び出しが成功した場合はゼロに設定され、失敗した場合はゼロ以外の値に設定されます。 |
使用する 1 バイトのレコード終了記号は x"0A" (ラインフィード) です。
x"91" には多くのサポートルーチンが必要なため、このファンクションをプログラムに含めると、実行可能ファイルの容量が非常に大きくなります。
Copyright © 2002 Micro Focus International Limited. All rights reserved.
本書、ならびに使用されている固有の商標と商品名は国際法で保護されています。
![]() | REBUILD | その他のトピック | ![]() |