前ページへ統合プリプロセッサインターフェイス

第 17 章 ライブラリルーチン

この章では、COBOL システムのライブラリルーチンについて説明します。ライブラリルーチンは、アプリケーションの実行環境を制御する手段として役立ちます。

17.1 ライブラリルーチン用の TYPEDEF と CALL プロトタイプ

Server Express 2.0 には、ライブラリルーチン用のコピーファイルが 2 つ、標準で付属しています。1 つは TYPEDEF で定義された各種のデータ型を含むコピーファイル、もう 1 つは CALL プロトタイプを含むコピーファイルです。これらのコピーファイルを COBOL プログラムで利用すると、ライブラリルーチンの呼び出しをコンパイラで確実に検証できます。

$COBDIR/cpylib/cbltypes.cpy ファイル内には、システムのライブラリルーチンに必要なすべてのデータ型が含まれています。COBOL プログラム内で使用されるデータ項目名との競合を回避するため、これらのデータ型には CBLT- で始まる名前が付けられています。また、定義されている型が集団項目の場合には、各基本項目がそれぞれ CBLTE- で始まる名前を持ちます。

$COBDIR/cpylib/cblproto.cpy ファイル内では、システムの各ライブラリルーチンのプロトタイプが宣言されています。プロトタイプのパラメータが ANY で宣言されている場合もありますが、これは可変長データの入力を示します。

ライブラリルーチンのパラメータについて説明している部分では、システムで定義された型の参照に CBLT- で始まる名前を使用します。また、システム定義の基本項目には、CBLTE- で始まる名前を使用します。これらの集団項目の変数を宣言する場合は、基本項目の宣言は行いません。宣言した変数を使用する箇所で、その基本項目も必要に応じて使用できます。ただし、同じ集団項目の変数を複数宣言した場合は、これらの各変数が同じ名前の基本項目を持つことになるため、参照する変数をコンパイラに識別させるための手段が必要です。なんらかの理由により、 cbltypes.cpy で定義されている型を使用せず、独自に集団項目を定義する場合は、各基本項目の型も明示的に宣言する必要があります。なお、この場合には基本項目に任意の名前を付けることができます。

2 つのコピーファイルのうち、cbltypes.cpycblproto.cpy 内でインクルードされているため、プログラムのコード内では cblproto.cpy のみをインクルードします。このファイルをインクルードする行は、見出し部より前に記述する必要があります。

CALL プロトタイプと TYPEDEF の使用方法については、『プログラムの呼び出し』の章の『CALL プロトタイプ』を参照してください。『言語リファレンス - 追加トピック』の『』の章では、『CALL プロトタイプ』の項に CALL プロトタイプの詳しい使用例が示されています。また、CALLの構文と ANY キーワード、および TYPEDEF キーワードのprdevc.htm(54):

COBOL では、ソースプログラムの構成部 (CONFIGURATION SECTION) で機能名 (function-name) を宣言することによって、論理デバイスに依存する機能を指定できます (『言語リファレンスの『特殊名段落』を参照)。これらの機能は、オペレーティングシステムの該当する機能にマッピングされます。


注: CALL プロトタイプが使用されるのは、名前で呼び出されるルーチン (CBL_name_name の形式) のみであり、数値で呼び出されるルーチン (X"NN" の形式) は対象外です。


プロトタイプを利用したプログラムの例を次に示します。このプログラムは mymain.cbl ファイルのサイズを表示します。

 copy "cblproto.cpy".
 
 program-id. MYMAIN.
 working-storage section.
 01  .
     05  file-details    cblt-fileexist-buf.
 procedure division.
     call 'CBL_CHECK_FILE_EXIST' using 'mymain.cbl '
                                       file-details
     if  return-code not = 0
       display "File mymain.cbl does not exist (or error)"
     else
       display "File mymain.cbl size is " cblt-fe-filesize
       of file-details
     end-if
 end program MYMAIN.

17.2 ライブラリルーチンの分類

Server Express のライブラリルーチンは、次のカテゴリに分類されます。

17.2.1 アプリケーションサブシステムのルーチン

CBL_SUBSYSTEM サブシステムの宣言または割り当て解除を行う。

複数のプログラムを論理グループ (サブシステム) にまとめるためのルーチンです。サブシステム内のすべてのプログラムは、1 つの文で一度にキャンセルできます。

17.2.2 バイトパックルーチン

X"F4" バイトをパックする。
X"F5" バイトをアンパックする。

これらのルーチンを使用すると、バイトのパックおよびアンパックを実行できます。

17.2.3 並行処理ルーチン

メモリ割り当てルーチン
CBL_ALLOC_DYN_MEM メモリ領域を動的に割り当てる。
CBL_ALLOC_MEM メモリ領域を動的に割り当てる。
CBL_FREE_DYN_MEM 動的に割り当てられたメモリ領域を解放する。
CBL_FREE_MEM 動的に割り当てられたメモリ領域を解放する。
実行単位制御ルーチン
CBL_CULL_RUN_UNITS 終了した実行単位をクリアする。
CBL_EXEC_RUN_UNIT 実行単位を生成する。
CBL_GET_SHMEM_PTR 名前付き値を読み取る。
CBL_PUT_SHMEM_PTR 名前付き値を生成または更新する。
CBL_YIELD_RUN_UNIT 実行単位の残りのタイムスライスを譲渡する。

並行処理の管理を可能にするルーチンです。並行処理のサポートについては、『並行処理のサポート』の章を参照してください。

17.2.4 終了プロシージャ/エラープロシージャ登録ルーチン

CBL_ERROR_PROC エラープロシージャを登録する。
CBL_EXIT_PROC 終了プロシージャを登録する。

アプリケーションの終了時 (正常終了または異常終了) に、ランタイムシステムによって実行される独自のルーチンを登録できます。

17.2.5 論理演算ルーチン

CBL_AND 論理積
CBL_EQ 論理等価
CBL_IMP 論理包含
CBL_NOT 論理否定
CBL_OR 論理和
CBL_XOR 排他的論理和

ビット単位で論理演算を実行するルーチンです。CBL_NOT 以外の各ルーチンは、いずれも 3 つのデータ項目を使用します。

オペランドの長さ (length) がリテラルで指定されており、RETURNING 句が使用されていない場合は、ネイティブコードがインラインコードを生成するように最適化されます。

2 つのオペランド、つまり sourcetarget を使用するルーチンでは、これらのオペランドの値を入れ替えても結果は変わりません (CBL_IMP は除く)。 計算結果は常に 2 つめのオペランド (target) に格納されます。

sourcetarget のサイズが length の値より短い場合には、該当するデータ項目の後続バイトも、不足するバイト数のみが処理されます。

次のいずれかの構文を使用すれば、length は省略できます。

    length of source
    length of target

ただし、データ項目の全バイトが使用されることが条件です。

論理積と論理和は、VALUE 句を使って実行することも可能です。

これらのルーチンは、RETURN-CODE には影響を与えません。

17.2.6 NLS (National Language Support) ルーチン

CBL_NLS_CLOSE_MSG_FILE メッセージファイルを閉じる。
CBL_NLS_COMPARE 2 つの文字列を比較する。
CBL_NLS_INFO 言語情報を取得または設定する。
CBL_NLS_OPEN_MSG_FILE メッセージファイルを開く。
CBL_NLS_READ_MSG メッセージファイルからメッセージを読み取る。

17.2.7 オペレーティングシステム情報ルーチン

CBL_GET_OS_INFO オペレーティングシステム情報を取得する。

17.2.8 移植性ルーチン

CBL_SCR_SET_PC_ATTRIBUTES IBM PC の属性パレットをセットアップする。

このルーチンは、作成済みアプリケーションの移植性を高める手段として提供されており、新規に作成するアプリケーションには使用しません。開発段階では、別の仕組みを使って移植性を高めることができます。

17.2.9 プログラム情報ルーチン

CBL_GET_PROGRAM_INFO プログラム情報を取得する。

17.2.10 テキストルーチン

CBL_TOLOWER 文字列を小文字に変換する。
CBL_TOUPPER 文字列を大文字に変換する。

17.2.11 仮想ヒープルーチン

CBL_CLOSE_VFILE ヒープを閉じる。
CBL_OPEN_VFILE ヒープを開く。
CBL_READ_VFILE ヒープからデータを読み取る。
CBL_WRITE_VFILE ヒープにデータを書き込む。

ヒープとは、利用可能なメモリ領域に記憶されるバイトストリームファイルのことです。

ヒープの生成時に指定された状態語は当該ヒープと関連付けられており、そのヒープに対する処理が失敗すると情報が書き込まれます。各ヒープはこの仕組みを通じて特定のプログラム (状態語を含むプログラム) に関連付けられ、該当するプログラムがキャンセルされると自動的にクリアされます (CBL_CLOSE_VFILE の呼び出しで明示的にクリアされる場合もあります)。

各ヒープはヒープ識別語で区別されます。この識別語はプログラム間でやり取りすることが可能であり、識別語を受け取ったプログラムは対応するヒープの読み書きを実行できます。ただし、これらの処理を実行するプログラムが処理結果を確認するには、ヒープの状態語をチェックする必要があります。状態語にはポインタ変数でアクセスできるほか、一般的な連絡節のマッピングを介する方法も利用できます。

ヒープ処理の成否は RETURN-CODE レジスタでもチェックできます。また、CALL 文で ON OVERFLOW/EXCEPTION 構文を使って、エラーをトラップする方法もあります。どちらの方法でも、具体的なエラーを特定するには、続いてヒープの状態語をチェックします。

ヒープの読み取りや書き込みが成功すると、RETURN-CODE の値はゼロになります。失敗した場合には、RETURN-CODE はゼロ以外の値に設定され、対応する状態語の 1 バイトめに 9、2 バイトめに詳細情報が格納されます。

CBL_READ_VFILE と CBL_WRITE_VFILE で使用されるバッファは、データ節や連絡節内の任意の位置で定義できます。CBL_ALLOC_MEM ルーチンを使用して動的に割り当てることも可能です。

各ヒープは必要に応じてページングできます。

1 つの実行単位で使用できるローカルヒープ数の上限は 128 です。

バッファ呼び出しのパラメータで部分参照を使用すれば、COBOL レコード内でヒープバッファを宣言することも可能です。この手法はバッファサイズが固定であれば、コンパイル効率の面でも有効です。呼び出しインターフェイスではバッファサイズは無視されるため、部分参照を使用してサイズを固定します。

17.3 ルーチン一覧について

次の項では、COBOL システムの各ライブラリルーチンをアルファベット順に説明します。それぞれのルーチンの説明部分にはルーチンの名前と機能のほか、次の各項目 (またはその一部) の情報を示しています。

構文 ルーチンの呼び出しに使用する CALL 文。

オプションの RETURNING 句も明示します。各ライブラリルーチンは、必ず処理結果を示す値を返します。この値は特に明記していない限り、処理が成功するとゼロ、失敗するとゼロ以外になります。RETURNING 句を指定した場合は、返される値が RETURNING に指定された項目 (以下の一覧では status-code) に格納されますが、省略した場合は特殊レジスタ RETURN-CODE に格納されます (呼び出し規約の 2 ビットめを設定すると、RETURN-CODE の値は変更されません)。

status-code には、0 〜 65535 の値を格納できる数字項目を使用する必要があります。この項目は cbltypes.cpy ファイルでは cblt-rtn-code として定義されています。

ルーチン名は必ず大文字で記述します。

パラメータの型 RETURNING 句と USING 句に指定する各パラメータの型を示しています。[parameter1] のように角かっこで囲んでいるパラメータはオプションであり、ルーチンによっては省略可能です。
入力 ルーチンに渡す値を格納するパラメータを示しています。
出力 ルーチンから返される値が格納されるパラメータを示しています。

バイトデータ中のビットには、ビット 0 を LSB (右端のビット) としています。

備考 ルーチンを正しく使用するために必要な追加情報を示しています。
関連情報 関連するトピックの参照先を示しています。

17.4 ルーチン一覧


CBL_ALLOC_DYN_MEM

メモリ領域を動的に割り当てます。割り当てたメモリ領域を、呼び出し側プログラムに関連付けることも可能です。

構文
call "CBL_ALLOC_DYN_MEM" using     mem-pointer 
                         by value  mem-size 
                                   flags 
                         returning status-code
パラメータの型
mem-pointer cblt-pointer
mem-size cblt-os-size
flags cblt-os-flags
status-code ルーチン一覧について』を参照。
入力
mem-size 割り当てるメモリ領域のバイト数
flags 割り当てるメモリ領域の種類。次のビットを設定できる。
0 〜 1 予備。値は常に 0
2 呼び出し側プログラムから独立したメモリ領域として割り当てる。
3-31 予備。値は常に 0
出力
mem-pointer 割り当てたメモリ領域へのポインタ。このメモリ領域は初期化されない。
status-code
0 メモリ領域の割り当てに成功した。
157 メモリ領域の割り当てに失敗した。
181 flags の指定が矛盾している。
備考

割り当てたメモリ領域には、特定値への初期化は実行されません。

割り当て可能なメモリ領域の上限サイズは、(-l ランタイムスイッチを指定している場合を除いて) 常にオペレーティングシステムによって決定されます。

ビット 2 を設定しない場合は、CBL_ALLOC_DYN_MEM によって割り当てられたメモリ領域は、割り当てを行ったプログラムがキャンセルされると解放されます。一方、ビット 2 を設定したメモリ領域は、対応する実行単位が終了したときに解放されます (実行単位の終了前に CBL_FREE_DYN_MEM によって明示的に解放される場合もあります)。

関連情報

CBL_FREE_DYN_MEM


CBL_ALLOC_MEM

メモリ領域を動的に割り当てます。

構文
call "CBL_ALLOC_MEM" using     mem-pointer 
                     by value  mem-size 
                               flags 
                     returning status-code
パラメータの型
mem-pointer cblt-pointer
mem-size cblt-os-size
flags cblt-os-flags
status-code ルーチン一覧について』を参照。
入力
mem-size 割り当てるメモリ領域のバイト数
flags 割り当てるメモリ領域の種類。次のビットを設定できる。
0 共有メモリとして割り当てる。
1 予備。値は常に 0
2 呼び出し側プログラムから独立したメモリ領域として割り当てる。ビット 3 を設定した場合は、このメモリ領域が呼び出し側スレッドの終了とともに自動的に解放される。ビット 3 を設定しない場合は、対応する実行単位が終了したときに解放される。
3 呼び出し側スレッド専用のメモリ領域として割り当てる。ビット 2 を設定しない場合は、COBOL プログラムによる呼び出し (または非 COBOL プログラムを介した間接的な呼び出し) で割り当てられたメモリ領域が、そのプログラムがキャンセルされる、または呼び出したスレッドが終了すると解放される。
4-31 予備。値は常に 0
出力
mem-pointer 割り当てたメモリ領域へのポインタ。このメモリ領域は初期化されない。
status-code
0 メモリ領域の割り当てに成功した。
157 メモリ領域の割り当てに失敗した。
181 flags の指定が矛盾している。
備考

割り当てたメモリ領域には、特定値への初期化は実行されません。

このルーチンで割り当てらる共有メモリには、アクセスの順序付けやランタイムシステムからの保護は施されません。そのため、セマフォを使用して、データの整合性を維持する必要があります。

スレッドによって割り当てられたメモリ領域は、該当するスレッドが終了すると解放されます。

割り当て可能な非共有メモリ領域の上限サイズは、(-l ランタイムスイッチを指定している場合を除いて) 常にオペレーティングシステムによって決定されます。このルーチンで割り当て可能な共有メモリの上限サイズは、およそ 64000 バイトです。

ビット 1 と ビット 2 または ビット3 は互いに排他的であり、同時に設定することはできません。ビット 1 とビット 2 または 3 を同時に設定すると、エラー 181 を返します。なお、このルーチンを直接呼び出したプログラム (または非 COBOL プログラムを介して間接的に呼び出したプログラム) が存在しない場合は、ビット 2 が無視されます。

ビット 2 を設定しない場合は、COBOL プログラムによる CBL_ALLOC_MEM の呼び出し (または非 COBOL プログラムを介した間接的な呼び出し) で割り当てられた標準メモリ領域は、そのプログラムが論理的または物理的にキャンセルされると解放されます。

関連情報

CBL_FREE_MEM


CBL_AND

2 つのデータ項目の論理積をビット単位で計算します。

構文
call "CBL_AND" using    source 
                        target 
               by value length
パラメータの型
source cblt-x1-compx
target cblt-x1-compx
length cblt-os-size
入力
source 論理積を計算する一方のデータ項目
target 論理積を計算する他方のデータ項目
length 論理積の計算対象になる source および target のバイト長。target がこの値より長い場合は、 target の残りの部分は変更されません。
出力
target 演算結果
備考

sourcetarget のそれぞれ左端から演算が開始され、各ビットの論理積が target に格納されます。論理積の演算における入力ビットと出力ビットの関係を次に示します。

source target 結果
0 0 0
0 1 0
1 0 0
1 1 1
関連情報

拡張言語機能』の『論理演算子 (BOOL 演算子) によるビット操作


CBL_CLOSE_VFILE

ヒープを閉じます。

構文
call "CBL_CLOSE_VFILE" using by value  heap-id 
                             returning status-code
パラメータの型
heap-id cblt-vfile-handle
status-code ルーチン一覧について』を参照。
入力
heap-id ヒープを開いたときに割り当てられたヒープハンドル
出力

なし。

関連情報

仮想ヒープルーチン


CBL_CULL_RUN_UNITS

終了した実行単位を一括してクリアする。

構文
call "CBL_CULL_RUN_UNITS"
パラメータの型

なし。

備考

STOP RUN または kill で終了した後、削除されていない実行単位をすべてクリアします。

関連情報

並行処理のサポート


CBL_EQ

2 つのデータ項目の論理等価をビット単位で計算します。

構文
call "CBL_EQ" using     source 
                        target 
              by value  length
パラメータの型
source cblt-x1-compx
target cblt-x1-compx
length cblt-os-size
入力
source 論理等価を計算する一方のデータ項目
target 論理等価を計算する他方のデータ項目
length 論理等価の計算対象になる source および target のバイト長。target がこの値より長い場合は、 target の残りの部分は変更されません。
出力
target 演算結果
備考

sourcetarget のそれぞれ左端から演算が開始され、各ビットの論理等価が target に格納されます。論理等価の演算における入力ビットと出力ビットの関係を次に示します。

source target 結果
0 0 1
0 1 0
1 0 0
1 1 1
関連情報

拡張言語機能』の『論理演算子 (BOOL 演算子) によるビット操作


CBL_ERROR_PROC

ランタイムシステムエラーの発生時に自動的に呼び出されるエラープロシージャを登録または解除します。

構文
call "CBL_ERROR_PROC"  using     install-flag               
                                 install-addrs 
                       returning status-code
パラメータの型
install-flag cblt-x1-compx
install-addrs cblt-ppointer
status-code ルーチン一覧について』を参照。
入力
install-flag 実行する処理。次のいずれかを指定します。
0 エラープロシージャを登録する。
1 登録済みのエラープロシージャを解除する。
install-addrs 登録または解除するエラープロシージャのアドレス
出力

なし。

備考

同じアプリケーション用のエラープロシージャを複数登録するには、このルーチンを繰り返し呼び出します。

登録済みのエラープロシージャは、再登録を試みても無視されます。同じエラープロシージャを再登録するには、その前に登録を解除する必要があります。エラープロシージャの登録はエラー処理中などに暗黙的に解除されるほか、install-flag を "1" に設定した CBL_ERROR_PROC を呼び出して明示的に解除することも可能です。

エラープロシージャはさまざまな開発言語で作成できます。COBOL で作成したエラープロシージャを使用する場合は、install-addrs に入口点のアドレスを指定する必要があります。入口点のアドレスは、次の文で取得できます。

     set install-addrs to entry entry-name

COBOL で作成するエラープロシージャには、CALL 文を含む有効な COBOL コードを必要に応じて使用できます。

エラーが発生すると、登録した各プロシージャが順次実行されます。実行順序は登録順序とは逆で、後から登録したプロシージャが先に実行されます。全プロシージャの実行が完了すると、続いてランタイムシステムのエラー処理プロシージャが開始されます。

最後に登録したプロシージャのみを実行し、その他の登録済みプロシージャやランタイムシステムのエラー処理を回避するには、RETURN-CODE をゼロに設定します。

エラープロシージャを含むプログラムをキャンセルすると、そのエラープロシージャの登録は解除されます。

プログラムに登録しているエラープロシージャは、他のプログラムによって解除できます。

エラープロシージャから他のエラープロシージャを登録することも可能です。

エラー処理中に登録されたエラープロシージャは、それを登録したエラープロシージャに続いて実行されます。処理中のエラープロシージャによって登録された場合には、現在のエラープロシージャの完了後、ただちに実行されます。ただし、エラープロシージャのリターンコードがゼロの場合は、その時点でエラー処理が終了します。

エラープロシージャ内でランタイムシステムエラーが発生すると、そのプロシージャはただちに終了します。次に実行すべきエラープロシージャが存在する場合には、発生したランタイムシステムエラーの処理がそのプロシージャによって開始されます。

プロシージャを登録するときには、必ず有効なプロシージャポインタを使用してください。

エラープロシージャは登録元の実行単位に属します。そのため、エラープロシージャを実行できるのは、それを登録した実行単位のみです。

キーボード割り込みでエラープロシージャが呼び出されることはありません。

エラープロシージャをプログラム内の入口点の 1 つとして定義し、そのプログラムで発生する可能性があるエラーに備える場合には、局所記憶節を確保してください。局所記憶節を持つプログラムは再入可能であるため、エラープロシージャが呼び出されてもランタイムシステムエラー 166 は生成されません (エラー 166 は再帰的な COBOL 呼び出しが無効であることを示します)。

エラープロシージャに渡されるパラメータ

登録したエラープロシージャの呼び出しでは、その原因になったランタイムシステムエラーのメッセージ文字列がパラメータとして渡されます。

このパラメータは連絡節で PIC X(325) 項目として定義し、USING 句でエラープロシージャの呼び出しに含めます。ランタイムシステムエラーのメッセージ文字列の例を次に示します。

Load Error : file 'prog-name'\n 
error code: 173, pc=0, call=-1, seg=0\n 
173    Called program file not found in drive/directory\n\0

\n は改行、\0 は文字列終端の NULL (x"00") です。この形式の解説については、『エラーメッセージ』を参照してください。

コード例

エラープロシージャを登録するコード例を次に示します。この例には、エラーの発生時に呼び出されるエラープロシージャのひな型も含まれています。

 working-storage section 
 01 install-flag       cblt-x1-compx. 
 01 install-address    cblt-ppointer. 
 01 status-code        cblt-rtncode value zeros. 
 
 linkage section. 
 01 err-msg            pic x(325). 
 
 procedure division. 
     set install-address to entry "err-proc". 
     call "CBL_ERROR_PROC" using     install-flag 
                                     install-address 
                           returning status-code. 
 
* エラープロシージャ 
 entry "err-proc" using err-msg. 
 
* err-msg からエラー番号を取得し、必要な処理を実行する。
           ... 
 
* 終了。他のエラープロシージャの実行を可能にする。
     move 1 to return-code 
     exit program 
     stop run.

CBL_EXEC_RUN_UNIT

非同期の実行単位を生成します。

構文
call "CBL_EXEC_RUN_UNIT" using        command-line
                         by value     command-line-len
                         by reference run-unit-id
                         by value     stack-size
                                      flags 
                         returning    status-code
パラメータの型
command-line pic x(n).
command-line-len cblt-os-size
run-unit-id cblt-x8-comp5
stack-size cblt-os-size
flags cblt-os-flags
status-code ルーチン一覧について』を参照。
入力
command-line 生成する実行単位に渡すコマンド。プログラム名に続いて必要なパラメータを列挙する。
line-length コマンド行の長さ
stack-size 使用されない。
flags
親と子の実行単位の動作を制御するフラグ

次のビットを設定できる。

0 親は子が完了するまで呼び出し元に制御を戻さない。
1 子は親の環境変数のみを継承し、スイッチやその他の属性は継承しない。
出力
run-unit-id
flags の ビット 0 を設定していない場合は、生成された実行単位を識別する一意のハンドルが格納される。ビット 0 を設定すると、この値は変更されない。
status-code 処理状態を示すコード
0 成功
157 メモリ不足
181 パラメータが無効
200 内部ロジックエラー
備考

このルーチンを呼び出す実行単位は親、この呼び出しで生成される実行単位は子と呼ばれます。子は生成時に、その親から一部の属性を継承します。これらの属性は、呼び出しが行われた時点で親から子にコピーされます。それ以降に親の該当属性に変更が加えられても、子の属性には変更は反映されません。同様に、子の属性に加えられた変更は、親の属性にはまったく影響を与えません。

最初の実行単位と、そこから生成された下位の全実行単位は「実行単位セット」と総称されます。

実行単位を使用する場合は、次の点に留意してください。

32 ビットアドレス空間を使用するプログラムと 64 ビットアドレス空間を使用するプログラムの両方を開発できるプラットフォームでは、実行単位セット内で使用されるアドレス空間を統一する必要があります。

32 ビットの実行単位から 64 ビットの実行単位を生成すると、属性はまったく継承されません。64 ビットの実行単位から 32 ビットの実行単位を生成する場合も同様です。どちらの場合も、生成された子の実行単位は、新しい実行単位セットの最上位の実行単位として扱われます。

関連情報

並行処理のサポート


CBL_EXIT_PROC

アプリケーションの終了時に自動的に呼び出される終了プロシージャを登録または解除します。

構文
call "CBL_EXIT_PROC" using     install-flag
                               install-params
                     returning status-code
パラメータの型
install-flag cblt-x1-compx
install-params cblt-exit-params として定義されている集団項目。次の基本項目を含む。
cblte-ep-install-addr  cblt-pointer
cblte-ep-install-priority cblt-x1-compx
status-code ルーチン一覧について』を参照。
入力
install-flag 実行する処理。次のいずれかを指定します。
0 終了プロシージャをデフォルトの優先度 (64) で登録する。
1 登録済みの終了プロシージャを解除する。
2 登録済みの終了プロシージャの優先度を照会する。
3 終了プロシージャを指定された優先度で登録する。
cblte-ep-install-addr 登録、登録解除、または照会する終了プロシージャのアドレス
cblte-ep-install-priority install-flag を 3 に指定した場合は、登録する終了プロシージャの優先度を設定する。優先度の範囲は 0 〜 127。install-flag が 3 以外の場合は無視される。
出力
cblte-ep-install-priority install-flag の値が 2 の場合は、登録したプロシージャの優先度が格納される。
備考

登録した終了プロシージャは、アプリケーションが STOP RUN で正常終了した場合のみでなく、キーボード割り込みやランタイムシステムエラーなどで異常終了した場合にも実行されます。このルーチンを繰り返し呼び出せば、1 つのアプリケーションに複数の終了プロシージャを登録できます。

終了プロシージャはさまざまな開発言語で作成できます。COBOL で作成した終了プロシージャを使用する場合には、cblte-ep-install-addr に入口点のアドレスを指定する必要があります。入口点のアドレスは、次の文で取得できます。

     set cblte-ep-install-addr to entry "entry-name"

COBOL で作成する終了プロシージャには、CALL 文を含む有効な COBOL コードを必要に応じて使用できます。終了プロシージャは、その中のメインプログラムで EXIT PROGRAM/GOBACK が実行されるか、またはSTOP RUN 文が実行されると終了します。

終了プロシージャには、呼び出し時に渡すべきパラメータはありません。

登録したすべての終了プロシージャは優先度を持っており、その値によって実行される順序が決まります。優先度の値が小さいプロシージャが先に実行されます。複数のプロシージャの優先度の値が同じである場合には、実行順序は登録とは逆になります。つまり、最後に登録したプロシージャが最初に実行されることになります。

登録時に優先度を指定しない (install-flag = 0) 場合には、デフォルトの優先度である 64 が割り当てられます。任意の優先度を割り当てるには、install-flag を 3 に設定し、0 〜 127 の範囲内で優先度を指定します。128 〜 256 の範囲の優先度は COBOL システム用に予約されており、使用することはできません。ただし、独自に作成したファイルハンドラには優先度として 200 を割り当てる必要があります。

登録済みの終了プロシージャは、再登録を試みても無視されます。ただし、異なる優先度で再登録を試みた場合は、該当する登録済みプロシージャの優先度が変更されます。RETURN-CODE はゼロに設定されます。

登録済みプロシージャの優先度を照会するには、install-flag を 2 に設定します。この呼び出しで対象のプロシージャが見つかると、その優先度が cblte-ep-install-priority で返されます。プロシージャはアドレスで識別されます。プロシージャが見つからない場合には、RETURN-CODE がゼロ以外の値に設定されます。


CBL_FREE_DYN_MEM

CBL_ALLOC_DYN_MEM ルーチンによって動的に割り当てられたメモリ領域を解放します。

構文
call "CBL_FREE_DYN_MEM" using by value  mem-pointer 
                              returning status-code
パラメータの型
mem-pointer cblt-pointer
status-code ルーチン一覧について』を参照。
入力
mem-pointer CBL_ALLOC_DYN_MEM でメモリ領域を割り当てたときに返されたポインタ
出力

なし。

備考

CBL_ALLOC_DYN_MEM で割り当てたメモリ領域を解放するルーチンです。

関連情報

CBL_ALLOC_DYN_MEM


CBL_FREE_MEM

動的に割り当てられたメモリ領域を解放します。

構文
call "CBL_FREE_MEM" using by value  mem-pointer 
                          returning status-code
パラメータの型
mem-pointer cblt-pointer
status-code ルーチン一覧について』を参照。
入力
mem-pointer CBL_ALLOC_MEM でメモリ領域を割り当てたときに返されたポインタ
出力

なし。

備考

CBL_ALLOC_MEM で割り当てたメモリ領域を解放するルーチンです。

関連情報

CBL_ALLOC_MEM


CBL_GET_PROGRAM_INFO

指定されたプログラムや、現在の呼び出しスタック内の特定プログラムに関する情報を戻します。

構文
call "CBL_GET_PROGRAM_INFO" using by value     function
                                  by reference param-block
                                  by reference name-buf
                                  by reference name-len
                                  returning    status-code
パラメータの型
function cblt-x4-comp5
param-block cblt-prog-info-params として定義されている集団項目。次の基本項目を含む。
cblte-gpi-size cblt-x4-comp5
cblte-gpi-flags cblt-x4-comp5
cblte-gpi-handle cblt-pointer
cblte-gpi-prog-id cblt-pointer
cblte-gpi-attrs cblt-x4-comp5
name-buf pic x(n)
name-len cblt-x4-comp5
status-code ルーチン一覧について』を参照。
入力
function 実行する処理を指定する値
0 現在のプログラムの状態情報を返す。このプログラムに関する詳細情報を得るには、cblte-gpi-flags パラメータのビット 0 を設定して cblte-gpi-handle の返りを取得し、それを function 2 〜 7 の入力値として使用する。cblte-gpi-handle に関連付けられている最初のプログラムが現在のプログラムである。
1 指定したプログラムの状態情報を返す。このプログラムに関する詳細情報を得るには、cblte-gpi-flags パラメータのビット 0 を設定して cblte-gpi-handle の返りを取得し、それを function 2 〜 7 の入力値として使用する。cblte-gpi-handle に関連付けられている最初のプログラムが指定したプログラムである。
2 cblte-gpi-handle に関連付けられているプログラムを呼び出したプログラムの状態情報を返す。この処理を行うには、事前に function 0 (または 1) で cblte-gpi-handle を取得する必要がある。cblte-gpi-handle に関連付けられているプログラムは、呼び出し側プログラムに更新される。
3 取得済みの cblte-gpi-handle を破棄する。この処理を行うには、function 0 (または 1) で有効な cblte-gpi-handle が取得されている必要がある。この処理は cblte-gpi-handle を利用する処理の終了後に実行する。
4 cblte-gpi-handle に関連付けられているプログラムの最初の入口点を返す。この処理を行うには、事前に function 0 (または 1) で cblte-gpi-handle を取得する必要がある。最初の入口点を取得した後、function を 5 に設定して CBL_GET_PROGRAM_INFO を繰り返し呼び出せば、プログラム内の残りのエントリも取得できる。すべての入口点の取得後、function を 6 に設定して CBL_GET_PROGRAM_INFO を呼び出すと、入口点の取得処理が終了する。
5 cblte-gpi-handle に関連付けられているプログラムの次の入口点を返す。この処理を行うには、事前に function 0 (または 1) で有効な cblte-gpi-handle を取得し、さらに function 4 で最初の入口点を取得する必要がある。
6 入口点の取得処理を終了する。この処理を行うには、事前に function 0 (または 1) で有効な cblte-gpi-handle を取得し、さらに function 4 で最初の入口点を取得する必要がある。
7 cblte-gpi-handle に関連付けられているプログラムの完全なプログラム名を返す。この処理を行うには、function 0 (または 1) で有効な cblte-gpi-handle が取得されている必要がある。
size
この項目を含むパラメータブロック全体のサイズ。32 ビットシステムでは 20、64 ビットシステムでは 28 に設定する。
cblte-gpi-flags 返される情報を示す 32 ビットのフラグ。各ビットの内容は次のとおり。
ビット 意味
0

function が 0 または 1 の場合に、cblte-gpi-handle を返すかどうかを指定する。function がそれ以外の値であれば、このビットは無視される。

0 cblte-gpi-handle を返さない。
1 cblte-gpi-handle を返す。
1

function が 0 または 2 の場合に、プログラムの状態情報の一部として、プログラムの基本名を name-buf で返すかどうかを指定する。

0 プログラムの基本名を返さない。
1 プログラムの基本名を返す。
2

name-buf で入力するプログラムの基本名や、同パラメータで返される基本名 (または完全なプログラム名) の終端を示す文字として、NULL と空白文字のどちらを使用するかを指定する。

0 空白文字
1 NULL
3

function が 0、1、または 2 の場合に、cblte-gpi-attrs でプログラムの属性を返すかどうかを指定します。

0 cblte-gpi-attrs でプログラムの属性を返さない。
1 cblte-gpi-attrs でプログラムの属性を返す。
4 〜 31

予備。値は常に 0

cblte-gpi-handle function が 0 または 1 の場合に生成されるハンドル
name-buf 情報が必要なプログラムの基本名。function が 1 の場合に指定する。
name-len name-buf のサイズ。この値が返される情報のサイズより小さいと、ルーチンは失敗する。
出力
cblte-gpi-handle function が 0 または 1 の場合に返されるハンドル。このハンドルは、function にその他の値を設定した呼び出しで使用する。
cblte-gpi-prog-id cblte-gpi-handle に関連付けられているプログラムを示す一意の識別子
cblte-gpi-attrs cblte-gpi-handle に関連付けられているプログラムの属性。各ビットの値と意味は次のとおり。
ビット 意味
0 0
1
プログラムが AMODE"24" コンパイラ指令を使ってコンパイルされていない。
プログラムが AMODE"24" コンパイラ指令を使ってコンパイルされている (このコンパイラ指令は、現バージョンの Net Express ではサポートされていない)。
1 0
1
プログラムが AMODE"32" コンパイラ指令を使ってコンパイルされていない。
プログラムが AMODE"31" コンパイラ指令を使ってコンパイルされている (このコンパイラ指令は、現バージョンの Net Express ではサポートされていない)。
2 0
1
プログラムが CHARSET(ASCII) コンパイラ指令を使ってコンパイルされている。
プログラムが CHARSET(EBCDIC) コンパイラ指令を使ってコンパイルされている。
3 0
1
プログラムが ANS85 コンパイラ指令を使ってコンパイルされていない。
プログラムが ANS85 コンパイラ指令を使ってコンパイルされている。
4 0
1
プログラムが VSC2 コンパイラ指令を使ってコンパイルされていない。
プログラムが VSC2 コンパイラ指令を使ってコンパイルされている (このコンパイラ指令は、現バージョンの Net Express ではサポートされていない)。
5 0
1
プログラムが OSVS コンパイラ指令を使ってコンパイルされていない。
プログラムが OSVS コンパイラ指令を使ってコンパイルされている (このコンパイラ指令は、現バージョンの Net Express ではサポートされていない)。
6-27 0
1
予備。値は常に 0
28 0
1
プログラムがサブシステムに属していない。
プログラムがサブシステムのメンバーである。
29 0
1
プログラムが現在の呼び出しスタック内に存在する。
プログラムが現在の呼び出しスタック内に存在しない。
30 0
1
プログラムはキャンセルされていない。
プログラムはキャンセルされている。
31 0
1
COBOL プログラムである。
非 COBOL プログラムである。
name-buf 要求されたプログラムの基本名、入口点名、または完全名
name-len name-buf で返された名前の長さ (status-code が 1013 の場合には、必要なバッファサイズが格納される)
status-code 処理状態を示すコード
0 成功
500 情報の終了。関連付けされているプログラムに呼び出し元が存在しない (function が 2 の場合) 、または次の入口点が見つからない (function が 5 の場合)場合に返される。
1001 cblte-gpi-handle の入力が無効。
1009 パラメータが無効。
1013 返される情報に比べ、バッファが小さすぎる。

CBL_GET_OS_INFO

現在のオペレーティングシステムと環境に関する情報を返します。

構文
call "CBL_GET_OS_INFO" using     parameter-block 
                       returning status-code
パラメータの型
parameter-block cblt-os-info-params として定義されている集団項目。次の基本項目を含む。
cblte-osi-length cblt-x2-compx value 23
cblte-osi-os-type cblt-x1-compx
cblte-osi-os-version cblt-x4-compx
cblte-osi-dbcs-support cblt-x1-compx
cblte-osi-char-coding cblt-x1-compx
cblte-osi-country-id cblt-x2-compx
cblte-osi-code-page cblt-x2-compx
cblte-osi-process-type cblt-x1-compx
cblte-osi-rts-capabilities cblt-x4-compx
cblte-osi-reserved cblt-x1 occurs 5
status-code ルーチン一覧について』を参照。
出力
cblte-osi-os-type COBOL システムとオペレーティングシステムを示す値
128 UNIX 上の COBOL システム
cblte-osi-os-version オペレーティングシステムのバージョン
cblte-osi-dbcs-support DBCS のサポート状況を示すフラグ
ビット 0 0 DBCS 確認なし
1 DBCS 確認あり
ビット 1 0 PIC N データ型をサポートしない
1 PIC N データ型をサポートする
cblte-osi-char-coding 文字のコード化方式
0 ASCII
1 Shift-JIS
2 EUC-J
3 BIG-5 (中国語繁体字)
4 5550 (中国語繁体字)
5 GB (中国語簡体字)
6 KS-CODE (韓国語)
7 PC-CODE (韓国語)
8 EUC Taiwan
9 その他の EUC ロケール
cblte-osi-country-id 予備。値は常に 0
cblte-osi-code-page 予備。値は常に 0
cblte-osi-process-type 予備。値は未定義
cblte-osi-rts-capabilities COBOL ランタイムの特殊機能
ビット 0 マルチスレッド対応
ビット 1 メインフレームの負荷軽減 (メインフレームのポインタをエミュレート)
ビット 2 64 ビット対応。ランタイムシステムが 64 ビット OS 上で動作している。
3 〜 31 ビット 予備
cblte-osi-reserved 予備。値は常に NULL

CBL_GET_SHMEM_PTR

名前付き値を読み取ります。

構文
call "CBL_GET_SHMEM_PTR" using     node-value               
                                   node-name 
                         returning status-code
パラメータの型
node-value cblt-pointer
node-name cblt-node-name として定義されている集団項目。次の基本項目を含む。
cblte-nname-name-len cblt-x1-comp5
cblte-nname-name-text cblt-x1 (cblte-nname-name-len に依存)
status-code ルーチン一覧について』を参照。
入力
cblte-nname-name-len node-name の長さ
cblte-nname-name-text node-name に割り当てられている値
出力
node-value 名前付き値
備考

名前付き値とは、実行時に取り決められた名前を使って、複数の実行単位間でポインタをやり取りする手段の 1 つです。名前付き値はランタイムシステムによって保護され、その更新には必ず順序付けが行われるため、同じ実行単位セット内のすべての実行単位から並行参照できます。定義可能な名前付き値の最大数は、マシンに搭載されている物理メモリの容量によって左右されます。

関連情報

CBL_PUT_SHMEM_PTR
並行処理のサポート


CBL_IMP

2 つのデータ項目の論理包含をビット単位で計算します。

構文
call "CBL_IMP" using    source
                        target 
               by value length
パラメータの型
source cblt-x1-compx
target cblt-x1-compx
length cblt-os-size
入力
source 論理包含を計算する一方のデータ項目
target 論理包含を計算する他方のデータ項目
length 論理包含の計算対象になる source および target のバイト長。target がこの値より長い場合は、 target の残りの部分は変更されません。
出力
target 演算結果
備考

sourcetarget のそれぞれ左端から演算が開始され、各ビットの論理包含が target に格納されます。論理包含の演算における入力ビットと出力ビットの関係を次に示します。

source target 結果
0 0 1
0 1 1
1 0 0
1 1 1
関連情報

拡張言語機能』の『論理演算子 (BOOL 演算子) によるビット操作


CBL_NLS_CLOSE_MSG_FILE

NLS (National Language Support) メッセージファイルを閉じます。

構文
call "CBL_NLS_CLOSE_MSG_FILE" using     msg-file-handle
                              returning status-code
パラメータの型
msg-file-handle cblt-x4-compx
status-code ルーチン一覧について』を参照。
入力
msg-file-handle メッセージファイルが開かれたときに返された識別用のハンドル
出力
status-code ルーチンの結果を示すコード。次のいずれかの値が格納される。
0 成功
404 msg-file-handle が無効
備考

CBL_NLS_OPEN_MSG_FILE ルーチンで開いた NLS メッセージファイルを閉じるためのルーチンです。

このルーチンを使用できるのは、NLS コンパイラ指令付きでコンパイルしたプログラムのみです。

関連情報

各国語対応


CBL_NLS_COMPARE

2 つの文字列を比較します。

構文
call "CBL_NLS_COMPARE" using        string1
                                    string2
                       by value     string1-length
                       by value     string2-length
                       by reference result-byte
                       returning    status-code
パラメータの型
string1 pic x(n)
string2 pic x(n)
string1-length cblt-os-size
string2-length cblt-os-size
result-byte cblt-sx1-comp5
status-code ルーチン一覧について』を参照。
入力
string1 比較する一方の文字列
string2 比較する他方の文字列
string1-length string1 の長さ
string2-length string2 の長さ
出力
result-byte 比較結果
0 2 つの文字列が等しい。
-1 string1 < string2
+1 string1 > string2
status-code ルーチンの結果
0 成功
備考

このルーチンを使用できるのは、NLS コンパイラ指令付きでコンパイルしたプログラムのみです。

関連情報

各国語対応


CBL_NLS_INFO

言語情報を取得または設定します。

構文
call "CBL_NLS_INFO" using     function-code
                              info-category
                              info-buffer
                    returning status-code
パラメータの型
function-code cblt-x1-compx 型。次のいずれかの値を指定する。
1    言語情報を取得する。
2    言語情報を設定する。
info-category cblt-x1-compx
info-buffer pic x(n)
status-code ルーチン一覧について』を参照。
入力

function-code が 1 の場合

info-category NLS モジュールから取得する情報の種類
1    通貨記号
2    1000 桁の区切りを表す記号
3    小数点記号

function-code が 2 の場合

info-category 設定する情報の種類
1    通貨記号
2    1000 桁の区切りを表す記号
3    小数点記号
info-buffer 設定する情報を NULL で終了する文字列で指定する。1000 桁の区切りと小数点の記号はそれぞれ 1 文字、通貨記号は最大 10 文字。
出力

function-code が 1 の場合

info-buffer 要求した情報
status-code ルーチンの結果
0 成功

function-code が 2 の場合

status-code ルーチンの結果
0 成功
164 失敗
備考

言語情報を取得または設定するためのルーチンです。function-code を 2 に指定して設定した変更は、呼び出しを行ったプログラムのみに反映されます。

このルーチンを使用できるのは、NLS コンパイラ指令付きでコンパイルしたプログラムのみです。

関連情報

各国語対応


CBL_NLS_OPEN_MSG_FILE

NLS(各国語対応)メッセージカタログを開きます。

構文
call "CBL_NLS_OPEN_MSG_FILE" using     msg-filename
                                       msg-filename-ln
                                       msg-file-handle
                             returning status-code
パラメータの型
msg-filename pic x(n)
msg-filename-ln cblt-x1-compx
msg-file-handle cblt-x4-compx
status-code ルーチン一覧について』を参照。
入力
msg-filename 開くべきメッセージファイルの名前
msg-filename-ln msg-filename の長さ
出力
msg-file-handle メッセージファイルを識別するハンドル
status-code ルーチンの結果
0 成功

ゼロ以外の status-code の値は、ランタイムエラーのメッセージ番号です。

備考

NLS メッセージカタログを開き、識別用のハンドルを返します。このハンドルは、CBL_NLS_READ_MSG ルーチンと CBL_NLS_CLOSE_MSG_FILE ルーチンで使用します。

メッセージカタログは、$NLSPATH 環境変数で指定されたディレクトリ内で検索されます。$NLSPATH に %L 要素が含まれる場合は、実行時に $LC_MESSAGES (または $LANG) 環境変数を設定することによって、メッセージの表示に使用する言語を選択できます。メッセージカタログは gencat コマンドで作成します。メッセージカタログの詳細については、『各国語対応』の『NLS メッセージファイルの作成』を参照してください。

このルーチンを使用できるのは、NLS コンパイラ指令付きでコンパイルしたプログラムのみです。

関連情報

各国語対応


CBL_NLS_READ_MSG

NLS (National Language Support) メッセージカタログからメッセージを 1 つ読み取ります。

構文
call "CBL_NLS_READ_MSG" using     msg-file-handle
                                  full-msg-number
                                  msg-ins-struct
                                  msg-buffer
                        returning status-code
パラメータの型
msg-file-handle cblt-x4-compx
full-msg-number cblt-nls-msg-number-pair として定義されている集団項目。次の基本項目を含む。
cblte-nmnp-set-number cblt-x2-compx
cblte-nmnp-number cblt-x2-compx
msg-ins-struct cblt-nls-msg-ins-struct として定義されている集団項目。次の基本項目を含む。
cblte-nmis-ins-count cblt-x2-compx
cblte-nmis-ins-pointer cblt-pointer (cblte-nmis-ins-count に依存)
msg-buffer cblt-nls-msg-buffer として定義されている集団項目。次の基本項目を含む。
cblte-nmb-buff-len cblt-x2-compx
cblte-nmb-buff-text cblt-x1 (cblte-nmb-buff-len に依存)
status-code ルーチン一覧について』を参照。
入力
msg-file-handle メッセージの読み取り先ファイルを識別するハンドル
cblte-nmnp-set-number メッセージファイル内の読み取り対象メッセージセット
cblte-nmnp-number メッセージセット内の読み取り対象メッセージの番号
cblte-nmis-ins-count メッセージ内のテキスト挿入の数
cblte-nmis-ins-pointer メッセージに挿入すべきテキスト (NULL で終了する文字列) を指すポインタ
cblte-nmb-buff-len cblte-nmb-buff-text の長さ
出力
cblte-nmb-buff-text 返されたメッセージ (NULL で終了する文字列)
status-code ルーチンの結果
0 成功
401 メッセージセットが見つからない
402 セット内にメッセージが見つからない
403 メッセージがテキストバッファより長い
404 メッセージファイルのハンドルが無効

ゼロ以外の status-code の値は、ランタイムエラーのメッセージ番号です。

備考

メッセージカタログ内のメッセージは、いくつかのセット (メッセージセット) にグループ分けして格納されている場合があります。メッセージセット内の各メッセージには、それを識別するメッセージ番号が割り当てられています。メッセージカタログの詳細については、『各国語対応』の『NLS メッセージファイルの作成』を参照してください。

このルーチンでは、メッセージカタログから読み込んだメッセージにテキストを挿入することも可能です。メッセージに含まれるフォーマット構文 (%s) が、指定したテキストによって置き換えられます。メッセージに含まれるフォーマット構文の数が、cblte-nmis-ins-count の値を超えることはできません。

テキストの挿入順序は、使用している言語に応じて調整することが可能です。挿入順序を調整するには、%n$s フォーマット構文を使用します。この構文によって、該当箇所には n 番めの cblte-nmis-ins-pointer が使用されます。n には cblte-nmis-ins-count を超える値は指定できません。

このルーチンを使用できるのは、NLS コンパイラ指令付きでコンパイルしたプログラムのみです。

関連情報

各国語対応


CBL_NOT

データ項目の各ビットの論理否定を実行します。

構文
call "CBL_NOT" using    target by value length
パラメータの型
target cblt-x1-compx
length cblt-os-size
入力
target 演算対象データ
length target 内で論理否定を施す部分のバイト長。target がこの値より長い場合、target の残りの部分は変更されません。
出力
target 各ビットが反転されたデータ
備考

target の左端から演算が開始され、各ビットが順次反転されます。論理否定の演算における入力ビットと出力ビットの関係を次に示します。

演算前 演算後
0 1
1 0
関連情報

拡張言語機能』の『論理演算子 (BOOL 演算子) によるビット操作


CBL_OPEN_VFILE

ヒープを開きます。

構文
call "CBL_OPEN_VFILE" using     heap-id                     
           status-word 
                      returning status-code
パラメータの型
heap-id cblt-vfile-handle
status-word cblt-vfile-status
status-code ルーチン一覧について』を参照。
入力

なし。

出力
heap-id ヒープに割り当てられたハンドル。この値がゼロの場合は、ヒープが開けなかったことを示す。
status-word ヒープの状態語。ヒープを開いたときにゼロに設定される。状態語の 1 バイトめに数字 9 が格納されている場合は、2 バイトめのバイナリ値が次のいずれかになる。
000 プログラムからの要求でヒープが閉じられた
001 ヒープへのアクセスに失敗した (バッファ不足)
002 プログラムが無効化されている間にヒープの割り当てが解除された。
014 ファイルへの書き込みに失敗 (ファイルが多すぎる)
037 ファイルへの書き込みに失敗 (アクセスが拒否された)
201 ファイルへの書き込みに失敗 (入出力エラー)

status-word とヒープの関連付けは、対応するヒープが閉じられるまで維持されます。ヒープのオープン処理に成功すると、1 バイトめは ASCII の数字 0 に設定されます。開かれたヒープに対する読み取り、書き込み、またはクローズ処理で割り当てエラーや入出力エラーが検出されると、status-word は入出力状態データとして書き込まれます (これらの操作が成功した場合でも、ゼロにリセットされることはありません)。

ヒープの状態語が実際に存在する (連絡節で定義されていない) プログラムがキャンセルされると、そのプログラム内の状態語に対応するヒープはすべて自動的にキャンセルされ、該当するヒープ識別子も使用不能になります。ヒープ識別子が他のプログラムに渡されている場合も同様です。

関連情報

仮想ヒープルーチン


CBL_OR

2 つのデータ項目の論理和をビット単位で計算します。

構文
call "CBL_OR" using    source 
                       target 
              by value length
パラメータの型
source cblt-x1-compx
target cblt-x1-compx
length cblt-os-size
入力
source 論理和を計算する一方のデータ項目
target 論理和を計算する他方のデータ項目
length 論理和の計算対象になる source および target のバイト長。target がこの値より長い場合は、 target の残りの部分は変更されません。
出力
target 演算結果
備考

sourcetarget のそれぞれ左端から演算が開始され、各ビットの論理和が target に格納されます。論理和の演算における入力ビットと出力ビットの関係を次に示します。

source target 結果
0 0 0
0 1 1
1 0 1
1 1 1
関連情報

拡張言語機能』の『論理演算子 (BOOL 演算子) によるビット操作


CBL_PUT_SHMEM_PTR

名前付き値を作成または更新します。

構文
call "CBL_PUT_SHMEM_PTR" using by value node-value 
                         by reference   node-name 
                         returning      status-code
パラメータの型
node-value cblt-pointer
node-name cblt-node-name として定義されている集団項目。次の基本項目を含む。
cblte-nname-name-len cblt-x1-comp5
cblte-nname-name-text cblt-x1 (cblte-nname-name-len に依存)
status-code ルーチン一覧について』を参照。
入力
node-value 作成または更新する名前付き値に割り当てる値
cblte-nname-name-len cblte-nname-name-text の長さ
cblte-nname-name-text 名前付き値の名前
出力

なし。

備考

名前付き値とは、実行時に取り決められた名前を使って、複数の実行単位間でポインタをやり取りする手段の 1 つです。名前付き値はランタイムシステムによって保護され、その更新には必ず順序付けが行われるため、同じ実行単位セット内のすべての実行単位から並行参照できます。定義可能な名前付き値の最大数は、マシンに搭載されている物理メモリの容量に依存します。

関連情報

CBL_GET_SHMEM_PTR
並行処理のサポート


CBL_READ_VFILE

ヒープからバイト単位でデータを読み取ります。

構文
call "CBL_READ_VFILE" using by value heap-id
                                          heap-ref
                                          heap-length
                           by reference   heap-buffer
                           returning      status-code
パラメータの型
heap-id cblt-vfile-handle
heap-ref cblt-x4-comp5
heap-length cblt-x4-comp5
heap-buffer pic x(n)
status-code ルーチン一覧について』を参照。
入力
heap-id ヒープを開いたときに割り当てられたヒープハンドル
heap-ref ヒープ内で読み取りを開始する位置までのオフセット
heap-length 読み取るバイト数
出力
heap-buffer 読み取ったデータを格納するバッファ。このバッファのサイズはプログラム側で決定します。データを確実に格納できる容量を確保してください。
備考

データが書き込まれていないヒープ領域の読み取りを試みると、バッファには不明なデータが返されます。

関連情報

仮想ヒープルーチン


CBL_SCR_SET_PC_ATTRIBUTES

現在の COBOL 属性から、IBM PC の属性テーブルにできる限り近いテーブルを生成します。

構文
call "CBL_SCR_SET_PC_ATTRIBUTES" returning status-code
パラメータの型
status-code ルーチン一覧について』を参照。
入力

なし。

出力
status-code ルーチンの結果
0 成功
1 成功 (1 つ以上の色が正確ではない)
2 失敗
備考

このルーチンを使用すれば、汎用的な属性ルーチンで IBM PC の属性テーブル全体を設定する場合とほぼ同じ結果が得られます。そのため、既存のプログラムに汎用的な属性を与え、属性処理部分の移植性を高める手段として効果的です。ただし、このルーチンは可能なすべての属性を定義するため、処理効率に問題があります。新規にアプリケーションを作成する場合は、処理効率への影響を回避するためにも、汎用的な属性ルーチンで必要な属性のみを定義してください。

このルーチンは、作成済みアプリケーションの移植性を高める手段として提供されており、新規に作成するアプリケーションには使用しません。開発段階では、別の仕組みを使って移植性を高めることができます。


CBL_SUBSYSTEM

サブシステムの宣言または割り当て解除を実行します。

構文
call "CBL_SUBSYSTEM" using     function-code
                               parameter 
                     returning status-code
パラメータの型
function-code cblt-x1-compx。次のいずれかの値を指定する。
0 サブシステムを宣言する。
1 サブシステムをキャンセルする。
2 サブシステムから削除する。
function-code が 0 の場合
parameter cblt-subsys-params として定義されている集団項目。次の基本項目を含む。
cblte-ssp-handle cblt-x2-compx
cblte-ssp-name-len cblt-x2-compx
cblet-ssp-name cblt-x1 (cblte-ssp-name-len に依存)
function-code が 1 の場合
parameter cblt-x2-compx
function-code が 2 の場合
parameter cblt-x2-compx (値は 0)
status-code ルーチン一覧について』を参照。
入力
function-code 処理の種類として、次のいずれかの値を指定する。
function-code が 0 の場合
cblte-ssp-name-len サブシステムのプログラム名の長さ
cblte-ssp-name サブシステムのプログラム名。COBOL の .int ファイルまたは .gnt ファイルのみ。名前の末尾には空白文字を付加する。
function-code が 1 の場合
parameter function-code を 0 に指定した呼び出しで返されるサブシステムハンドル
function-code が 2 の場合
parameter 値は 0
出力

function-code が 0 の場合

cblte-ssp-handle サブシステムのハンドル
備考

サブシステムが、アプリケーション内の指定したプログラムとして定義されます。この定義以降、サブシステム内のプログラムから呼び出される各サブプログラムも、当該サブシステムのメンバーになります (ただし、すでに他のサブシステムに属しているサブプログラムは除きます)。

function-code が 0 の場合

サブシステムを宣言し、そのハンドルを返します。サブシステムとして宣言したプログラムがロードされていない場合は、この呼び出しでロードされます。指定されたプログラムが見つからないか、またはロードできない場合は、サブシステムのハンドルとして 0 が返されます。

サブシステムに属するプログラムの割り当てが解除される (メモリから削除される) のは、それが CANCEL 文でキャンセルされる、function-code を 1 に設定した CBL_SUBSYSTEM ルーチンでサブシステム全体がキャンセルされるか、またはアプリケーションで STOP RUN 文 (または CHAIN 文) が実行された場合のみです。ただし、サブシステムのメインプログラムは、同じサブシステム内の他の全プログラムをキャンセルしない限り、CANCEL 文でキャンセルすべきではありません。

function-code が 1 の場合

指定したサブシステム内の全プログラムをキャンセルします。対象のサブシステム内に使用中のプログラムが含まれている場合は、そのプログラムがサブシステムから分離されます。分離されたプログラムはキャンセルされません。

function-code が 2 の場合

呼び出し元のプログラムを、あらゆるサブシステムから削除します。この呼び出しを特定のプログラムが開始するたびに実行すれば、そのプログラムを常にサブシステムに属さない状態で維持できます。


CBL_TOLOWER

文字列を小文字に変換します。

構文
call "CBL_TOLOWER" using     string 
                   by value  length 
                   returning status-code
パラメータの型
string pic x(n)
length cblt-os-size
status-code ルーチン一覧について』を参照。
入力
string 変換する文字列
length 変換すべきバイト数。string がこの値より長い場合は、string の残りの部分は変更されません。
出力
string 変換後の文字列
備考

string の左端から処理が開始され、string を構成する各文字が小文字に変換されます。


CBL_TOUPPER

文字列を大文字に変換します。

構文
call "CBL_TOUPPER" using     string 
                   by value  length 
                   returning status-code
パラメータの型
string pic x(n)
length cblt-os-size
status-code ルーチン一覧について』を参照。
入力
string 変換する文字列
length 変換すべきバイト数。string がこの値より長い場合は、string の残りの部分は変更されません。
出力
string 変換後の文字列
備考

string の左端から処理が開始され、string を構成する各文字が大文字に変換されます。


CBL_WRITE_VFILE

バイトデータをヒープに書き出します。

構文
call "CBL_WRITE_VFILE" using by value     heap-id 
                                          heap-ref
                                          heap-length
                             by reference heap-buffer
                             returning    status-code
パラメータの型
heap-id cblt-vfile-handle
heap-ref cblt-x4-comp5
heap-length cblt-x4-comp5
heap-buffer pic x(n)
status-code ルーチン一覧について』を参照。
入力
heap-id ヒープを開いたときに割り当てられたヒープハンドル
heap-ref ヒープ内で書き出しを開始する位置までのオフセット
heap-length 書き出すデータのバイト数
heap-buffer 書き出すデータを格納したバッファ。このバッファのサイズはプログラム側で決定します。データを確実に格納できる容量を確保してください。
出力

なし。

関連情報

仮想ヒープルーチン


CBL_XOR

2 つのデータ項目の排他的論理和をビット単位で計算します。

構文
call "CBL_XOR" using     source 
                         target 
                by value length
パラメータの型
source cblt-x1-compx
target cblt-x1-compx
length cblt-os-size
入力
source 排他的論理和を計算する一方のデータ項目
target 排他的論理和を計算する他方のデータ項目
length 排他的論理和の計算対象になる source および target のバイト長。target がこの値より長い場合、target の残りの部分は変更されません。
出力
target 演算結果
備考

sourcetarget のそれぞれ左端から演算が開始され、各ビットの排他的論理和が target に格納されます。排他的論理和の演算における入力ビットと出力ビットの関係を次に示します。

source target 結果
0 0 0
0 1 1
1 0 1
1 1 0
関連情報

拡張言語機能』の『論理演算子 (BOOL 演算子) によるビット操作


CBL_YIELD_RUN_UNIT

実行単位のタイムスライスの残りを譲渡します。

構文
call "CBL_YIELD_RUN_UNIT"
パラメータの型

なし。

備考

実行単位のタイムスライスの残りを、不特定の実行単位に譲渡します。


X"F4" (バイトのパック)

8 つの 1 バイトデータの最下位ビットを 1 バイトのデータにパックします。

構文
call x"F4" using byte 
                 array
パラメータの型
byte cblt-x1-compx
array cblt-x1-compx occurs 8
入力
array パックする 8 つのバイトデータの配列
出力
byte パックされたバイト
備考

array に格納されている 8 つの 1 バイトデータから最下位ビットを取得し、1 つのバイトデータを生成して byte に格納します。array の先頭に格納されている要素の最下位ビットが、byte では最上位ビット (ビット 7) になります。

  00000001 00000001 00000000 00000000 00000001 00000000 00000001 00000001
         |        |        |        |+-------+        |        |        |
         |        |        +-------+||+---------------+        |        |
         |        +---------------+||||+-----------------------+        |
         +-----------------------+||||||+-------------------------------+
                                 VVVVVVVV
                                 11001011 

X"F5" (バイトのアンパック)

1 バイトデータの各ビットを、8 つの 1 バイトデータにアンパックします。

構文
call x"F5" using byte 
                 array
パラメータの型
byte cblt-x1-compx
array cblt-x1-compx occurs 8
入力
byte アンパックする 1 バイトデータ
出力
array アンパックされた 8 つのバイトデータの配列
備考

byte に格納されている 1 バイトデータの各ビットの値を、array 内の該当する要素の最下位ビットに設定します。

                                10110011
        +-----------------------+||||||+-------------------------------+
        |        +---------------+||||+-----------------------+        |
        |        |        +-------+||+---------------+        |        |
        |        |        |        |+-------+        |        |        |
        V        V        V        V        V        V        V        V
 00000001 00000000 00000001 00000001 00000000 00000000 00000001 00000001 


Copyright © 2002 Micro Focus International Limited. All rights reserved.
本書、ならびに使用されている固有の商標と商品名は国際法で保護されています。

前ページへ 統合プリプロセッサインターフェイス