![]() | 統合プリプロセッサインターフェイス |
この章では、COBOL システムのライブラリルーチンについて説明します。ライブラリルーチンは、アプリケーションの実行環境を制御する手段として役立ちます。
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.cpy は cblproto.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.
Server Express のライブラリルーチンは、次のカテゴリに分類されます。
CBL_SUBSYSTEM | サブシステムの宣言または割り当て解除を行う。 |
複数のプログラムを論理グループ (サブシステム) にまとめるためのルーチンです。サブシステム内のすべてのプログラムは、1 つの文で一度にキャンセルできます。
X"F4" | バイトをパックする。 |
X"F5" | バイトをアンパックする。 |
これらのルーチンを使用すると、バイトのパックおよびアンパックを実行できます。
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 | 実行単位の残りのタイムスライスを譲渡する。 |
並行処理の管理を可能にするルーチンです。並行処理のサポートについては、『並行処理のサポート』の章を参照してください。
CBL_ERROR_PROC | エラープロシージャを登録する。 |
CBL_EXIT_PROC | 終了プロシージャを登録する。 |
アプリケーションの終了時 (正常終了または異常終了) に、ランタイムシステムによって実行される独自のルーチンを登録できます。
CBL_AND | 論理積 |
CBL_EQ | 論理等価 |
CBL_IMP | 論理包含 |
CBL_NOT | 論理否定 |
CBL_OR | 論理和 |
CBL_XOR | 排他的論理和 |
ビット単位で論理演算を実行するルーチンです。CBL_NOT 以外の各ルーチンは、いずれも 3 つのデータ項目を使用します。
オペランドの長さ (length) がリテラルで指定されており、RETURNING 句が使用されていない場合は、ネイティブコードがインラインコードを生成するように最適化されます。
2 つのオペランド、つまり source と target を使用するルーチンでは、これらのオペランドの値を入れ替えても結果は変わりません (CBL_IMP は除く)。 計算結果は常に 2 つめのオペランド (target) に格納されます。
source や target のサイズが length の値より短い場合には、該当するデータ項目の後続バイトも、不足するバイト数のみが処理されます。
次のいずれかの構文を使用すれば、length は省略できます。
length of source
length of target
ただし、データ項目の全バイトが使用されることが条件です。
論理積と論理和は、VALUE 句を使って実行することも可能です。
これらのルーチンは、RETURN-CODE には影響を与えません。
CBL_NLS_CLOSE_MSG_FILE | メッセージファイルを閉じる。 |
CBL_NLS_COMPARE | 2 つの文字列を比較する。 |
CBL_NLS_INFO | 言語情報を取得または設定する。 |
CBL_NLS_OPEN_MSG_FILE | メッセージファイルを開く。 |
CBL_NLS_READ_MSG | メッセージファイルからメッセージを読み取る。 |
CBL_GET_OS_INFO | オペレーティングシステム情報を取得する。 |
CBL_SCR_SET_PC_ATTRIBUTES | IBM PC の属性パレットをセットアップする。 |
このルーチンは、作成済みアプリケーションの移植性を高める手段として提供されており、新規に作成するアプリケーションには使用しません。開発段階では、別の仕組みを使って移植性を高めることができます。
CBL_GET_PROGRAM_INFO | プログラム情報を取得する。 |
CBL_TOLOWER | 文字列を小文字に変換する。 |
CBL_TOUPPER | 文字列を大文字に変換する。 |
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 レコード内でヒープバッファを宣言することも可能です。この手法はバッファサイズが固定であれば、コンパイル効率の面でも有効です。呼び出しインターフェイスではバッファサイズは無視されるため、部分参照を使用してサイズを固定します。
次の項では、COBOL システムの各ライブラリルーチンをアルファベット順に説明します。それぞれのルーチンの説明部分にはルーチンの名前と機能のほか、次の各項目 (またはその一部) の情報を示しています。
構文 | ルーチンの呼び出しに使用する CALL 文。
オプションの RETURNING 句も明示します。各ライブラリルーチンは、必ず処理結果を示す値を返します。この値は特に明記していない限り、処理が成功するとゼロ、失敗するとゼロ以外になります。RETURNING 句を指定した場合は、返される値が RETURNING に指定された項目 (以下の一覧では status-code) に格納されますが、省略した場合は特殊レジスタ RETURN-CODE に格納されます (呼び出し規約の 2 ビットめを設定すると、RETURN-CODE の値は変更されません)。 status-code には、0 〜 65535 の値を格納できる数字項目を使用する必要があります。この項目は cbltypes.cpy ファイルでは ルーチン名は必ず大文字で記述します。 |
パラメータの型 | RETURNING 句と USING 句に指定する各パラメータの型を示しています。[parameter1] のように角かっこで囲んでいるパラメータはオプションであり、ルーチンによっては省略可能です。 |
入力 | ルーチンに渡す値を格納するパラメータを示しています。 |
出力 | ルーチンから返される値が格納されるパラメータを示しています。
バイトデータ中のビットには、ビット 0 を LSB (右端のビット) としています。 |
備考 | ルーチンを正しく使用するために必要な追加情報を示しています。 |
関連情報 | 関連するトピックの参照先を示しています。 |
メモリ領域を動的に割り当てます。割り当てたメモリ領域を、呼び出し側プログラムに関連付けることも可能です。
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 |
割り当てるメモリ領域の種類。次のビットを設定できる。
|
mem-pointer |
割り当てたメモリ領域へのポインタ。このメモリ領域は初期化されない。 | ||||||
status-code |
|
割り当てたメモリ領域には、特定値への初期化は実行されません。
割り当て可能なメモリ領域の上限サイズは、(-l ランタイムスイッチを指定している場合を除いて) 常にオペレーティングシステムによって決定されます。
ビット 2 を設定しない場合は、CBL_ALLOC_DYN_MEM によって割り当てられたメモリ領域は、割り当てを行ったプログラムがキャンセルされると解放されます。一方、ビット 2 を設定したメモリ領域は、対応する実行単位が終了したときに解放されます (実行単位の終了前に CBL_FREE_DYN_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 |
割り当てるメモリ領域の種類。次のビットを設定できる。
|
mem-pointer |
割り当てたメモリ領域へのポインタ。このメモリ領域は初期化されない。 | ||||||
status-code |
|
割り当てたメモリ領域には、特定値への初期化は実行されません。
このルーチンで割り当てらる共有メモリには、アクセスの順序付けやランタイムシステムからの保護は施されません。そのため、セマフォを使用して、データの整合性を維持する必要があります。
スレッドによって割り当てられたメモリ領域は、該当するスレッドが終了すると解放されます。
割り当て可能な非共有メモリ領域の上限サイズは、(-l ランタイムスイッチを指定している場合を除いて) 常にオペレーティングシステムによって決定されます。このルーチンで割り当て可能な共有メモリの上限サイズは、およそ 64000 バイトです。
ビット 1 と ビット 2 または ビット3 は互いに排他的であり、同時に設定することはできません。ビット 1 とビット 2 または 3 を同時に設定すると、エラー 181 を返します。なお、このルーチンを直接呼び出したプログラム (または非 COBOL プログラムを介して間接的に呼び出したプログラム) が存在しない場合は、ビット 2 が無視されます。
ビット 2 を設定しない場合は、COBOL プログラムによる CBL_ALLOC_MEM の呼び出し (または非 COBOL プログラムを介した間接的な呼び出し) で割り当てられた標準メモリ領域は、そのプログラムが論理的または物理的にキャンセルされると解放されます。
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 |
演算結果 |
source
と target
のそれぞれ左端から演算が開始され、各ビットの論理積が target
に格納されます。論理積の演算における入力ビットと出力ビットの関係を次に示します。
source |
target |
結果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
『拡張言語機能』の『論理演算子 (BOOL 演算子) によるビット操作』
ヒープを閉じます。
call "CBL_CLOSE_VFILE" using by value heap-id returning status-code
heap-id |
cblt-vfile-handle |
status-code |
『ルーチン一覧について』を参照。 |
heap-id |
ヒープを開いたときに割り当てられたヒープハンドル |
なし。
終了した実行単位を一括してクリアする。
call "CBL_CULL_RUN_UNITS"
なし。
STOP RUN または kill で終了した後、削除されていない実行単位をすべてクリアします。
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 |
演算結果 |
source
と target
のそれぞれ左端から演算が開始され、各ビットの論理等価が target
に格納されます。論理等価の演算における入力ビットと出力ビットの関係を次に示します。
source | target | 結果 |
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
『拡張言語機能』の『論理演算子 (BOOL 演算子) によるビット操作』
ランタイムシステムエラーの発生時に自動的に呼び出されるエラープロシージャを登録または解除します。
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 |
実行する処理。次のいずれかを指定します。
|
||||
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.
非同期の実行単位を生成します。
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 |
親と子の実行単位の動作を制御するフラグ
次のビットを設定できる。
|
run-unit-id |
flags の ビット 0 を設定していない場合は、生成された実行単位を識別する一意のハンドルが格納される。ビット
0 を設定すると、この値は変更されない。 |
||||||||
status-code |
処理状態を示すコード
|
このルーチンを呼び出す実行単位は親、この呼び出しで生成される実行単位は子と呼ばれます。子は生成時に、その親から一部の属性を継承します。これらの属性は、呼び出しが行われた時点で親から子にコピーされます。それ以降に親の該当属性に変更が加えられても、子の属性には変更は反映されません。同様に、子の属性に加えられた変更は、親の属性にはまったく影響を与えません。
最初の実行単位と、そこから生成された下位の全実行単位は「実行単位セット」と総称されます。
実行単位を使用する場合は、次の点に留意してください。
32 ビットアドレス空間を使用するプログラムと 64 ビットアドレス空間を使用するプログラムの両方を開発できるプラットフォームでは、実行単位セット内で使用されるアドレス空間を統一する必要があります。
32 ビットの実行単位から 64 ビットの実行単位を生成すると、属性はまったく継承されません。64 ビットの実行単位から 32 ビットの実行単位を生成する場合も同様です。どちらの場合も、生成された子の実行単位は、新しい実行単位セットの最上位の実行単位として扱われます。
アプリケーションの終了時に自動的に呼び出される終了プロシージャを登録または解除します。
call "CBL_EXIT_PROC" using install-flag install-params returning status-code
install-flag |
cblt-x1-compx | ||||||
install-params |
cblt-exit-params として定義されている集団項目。次の基本項目を含む。
|
||||||
status-code |
『ルーチン一覧について』を参照。 |
install-flag |
実行する処理。次のいずれかを指定します。
|
||||||||
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_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 で割り当てたメモリ領域を解放するルーチンです。
動的に割り当てられたメモリ領域を解放します。
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 で割り当てたメモリ領域を解放するルーチンです。
指定されたプログラムや、現在の呼び出しスタック内の特定プログラムに関する情報を戻します。
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 として定義されている集団項目。次の基本項目を含む。
|
|||||||||||||||
name-buf |
pic x(n) | |||||||||||||||
name-len |
cblt-x4-comp5 | |||||||||||||||
status-code |
『ルーチン一覧について』を参照。 |
function |
実行する処理を指定する値
|
||||||||||||||||||||||||||||
size |
この項目を含むパラメータブロック全体のサイズ。32 ビットシステムでは 20、64 ビットシステムでは 28 に設定する。 |
||||||||||||||||||||||||||||
cblte-gpi-flags |
返される情報を示す 32 ビットのフラグ。各ビットの内容は次のとおり。
|
||||||||||||||||||||||||||||
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 に関連付けられているプログラムの属性。各ビットの値と意味は次のとおり。
|
||||||||||||||||||||||||||||||||||||
name-buf |
要求されたプログラムの基本名、入口点名、または完全名 | ||||||||||||||||||||||||||||||||||||
name-len |
name-buf で返された名前の長さ (status-code が 1013 の場合には、必要なバッファサイズが格納される) |
||||||||||||||||||||||||||||||||||||
status-code |
処理状態を示すコード
|
現在のオペレーティングシステムと環境に関する情報を返します。
call "CBL_GET_OS_INFO" using parameter-block returning status-code
parameter-block |
cblt-os-info-params として定義されている集団項目。次の基本項目を含む。
|
||||||||||||||||||||||||||||||
status-code |
『ルーチン一覧について』を参照。 |
cblte-osi-os-type |
COBOL システムとオペレーティングシステムを示す値
|
||||||||||||||||||||
cblte-osi-os-version |
オペレーティングシステムのバージョン | ||||||||||||||||||||
cblte-osi-dbcs-support |
DBCS のサポート状況を示すフラグ
|
||||||||||||||||||||
cblte-osi-char-coding |
文字のコード化方式
|
||||||||||||||||||||
cblte-osi-country-id |
予備。値は常に 0 | ||||||||||||||||||||
cblte-osi-code-page |
予備。値は常に 0 | ||||||||||||||||||||
cblte-osi-process-type |
予備。値は未定義 | ||||||||||||||||||||
cblte-osi-rts-capabilities |
COBOL ランタイムの特殊機能
|
||||||||||||||||||||
cblte-osi-reserved |
予備。値は常に NULL |
名前付き値を読み取ります。
call "CBL_GET_SHMEM_PTR" using node-value node-name returning status-code
node-value |
cblt-pointer | ||||||
node-name |
cblt-node-name として定義されている集団項目。次の基本項目を含む。
|
||||||
status-code |
『ルーチン一覧について』を参照。 |
cblte-nname-name-len |
node-name の長さ |
cblte-nname-name-text |
node-name に割り当てられている値 |
node-value |
名前付き値 |
名前付き値とは、実行時に取り決められた名前を使って、複数の実行単位間でポインタをやり取りする手段の 1 つです。名前付き値はランタイムシステムによって保護され、その更新には必ず順序付けが行われるため、同じ実行単位セット内のすべての実行単位から並行参照できます。定義可能な名前付き値の最大数は、マシンに搭載されている物理メモリの容量によって左右されます。
『CBL_PUT_SHMEM_PTR』
『並行処理のサポート』
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 |
演算結果 |
source
と target
のそれぞれ左端から演算が開始され、各ビットの論理包含が target
に格納されます。論理包含の演算における入力ビットと出力ビットの関係を次に示します。
source | target | 結果 |
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 0 |
1 | 1 | 1 |
『拡張言語機能』の『論理演算子 (BOOL 演算子) によるビット操作』
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 |
ルーチンの結果を示すコード。次のいずれかの値が格納される。
|
CBL_NLS_OPEN_MSG_FILE ルーチンで開いた NLS メッセージファイルを閉じるためのルーチンです。
このルーチンを使用できるのは、NLS コンパイラ指令付きでコンパイルしたプログラムのみです。
『各国語対応』
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 |
比較結果
|
||||||
status-code |
ルーチンの結果
|
このルーチンを使用できるのは、NLS コンパイラ指令付きでコンパイルしたプログラムのみです。
『各国語対応』
言語情報を取得または設定します。
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 |
ルーチンの結果
|
function-code が 2 の場合
status-code |
ルーチンの結果
|
言語情報を取得または設定するためのルーチンです。function-code を 2 に指定して設定した変更は、呼び出しを行ったプログラムのみに反映されます。
このルーチンを使用できるのは、NLS コンパイラ指令付きでコンパイルしたプログラムのみです。
『各国語対応』
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 |
ルーチンの結果
ゼロ以外の status-code の値は、ランタイムエラーのメッセージ番号です。 |
NLS メッセージカタログを開き、識別用のハンドルを返します。このハンドルは、CBL_NLS_READ_MSG ルーチンと CBL_NLS_CLOSE_MSG_FILE ルーチンで使用します。
メッセージカタログは、$NLSPATH 環境変数で指定されたディレクトリ内で検索されます。$NLSPATH に %L 要素が含まれる場合は、実行時に $LC_MESSAGES (または $LANG) 環境変数を設定することによって、メッセージの表示に使用する言語を選択できます。メッセージカタログは gencat コマンドで作成します。メッセージカタログの詳細については、『各国語対応』の『NLS メッセージファイルの作成』を参照してください。
このルーチンを使用できるのは、NLS コンパイラ指令付きでコンパイルしたプログラムのみです。
『各国語対応』
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 として定義されている集団項目。次の基本項目を含む。
|
||||
msg-ins-struct |
cblt-nls-msg-ins-struct として定義されている集団項目。次の基本項目を含む。
|
||||
msg-buffer |
cblt-nls-msg-buffer として定義されている集団項目。次の基本項目を含む。
|
||||
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 |
ルーチンの結果
ゼロ以外の status-code の値は、ランタイムエラーのメッセージ番号です。 |
メッセージカタログ内のメッセージは、いくつかのセット (メッセージセット) にグループ分けして格納されている場合があります。メッセージセット内の各メッセージには、それを識別するメッセージ番号が割り当てられています。メッセージカタログの詳細については、『各国語対応』の『NLS メッセージファイルの作成』を参照してください。
このルーチンでは、メッセージカタログから読み込んだメッセージにテキストを挿入することも可能です。メッセージに含まれるフォーマット構文 (%s
) が、指定したテキストによって置き換えられます。メッセージに含まれるフォーマット構文の数が、cblte-nmis-ins-count
の値を超えることはできません。
テキストの挿入順序は、使用している言語に応じて調整することが可能です。挿入順序を調整するには、%n$s
フォーマット構文を使用します。この構文によって、該当箇所には n 番めの cblte-nmis-ins-pointer
が使用されます。n には cblte-nmis-ins-count
を超える値は指定できません。
このルーチンを使用できるのは、NLS コンパイラ指令付きでコンパイルしたプログラムのみです。
『各国語対応』
データ項目の各ビットの論理否定を実行します。
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 演算子) によるビット操作』
ヒープを開きます。
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
バイトめのバイナリ値が次のいずれかになる。
ヒープの状態語が実際に存在する (連絡節で定義されていない) プログラムがキャンセルされると、そのプログラム内の状態語に対応するヒープはすべて自動的にキャンセルされ、該当するヒープ識別子も使用不能になります。ヒープ識別子が他のプログラムに渡されている場合も同様です。 |
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 |
演算結果 |
source
と target
のそれぞれ左端から演算が開始され、各ビットの論理和が target
に格納されます。論理和の演算における入力ビットと出力ビットの関係を次に示します。
source |
target |
結果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
『拡張言語機能』の『論理演算子 (BOOL 演算子) によるビット操作』
名前付き値を作成または更新します。
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 として定義されている集団項目。次の基本項目を含む。
|
||||||
status-code |
『ルーチン一覧について』を参照。 |
node-value |
作成または更新する名前付き値に割り当てる値 |
cblte-nname-name-len |
cblte-nname-name-text の長さ |
cblte-nname-name-text |
名前付き値の名前 |
なし。
名前付き値とは、実行時に取り決められた名前を使って、複数の実行単位間でポインタをやり取りする手段の 1 つです。名前付き値はランタイムシステムによって保護され、その更新には必ず順序付けが行われるため、同じ実行単位セット内のすべての実行単位から並行参照できます。定義可能な名前付き値の最大数は、マシンに搭載されている物理メモリの容量に依存します。
ヒープからバイト単位でデータを読み取ります。
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 |
読み取ったデータを格納するバッファ。このバッファのサイズはプログラム側で決定します。データを確実に格納できる容量を確保してください。 |
データが書き込まれていないヒープ領域の読み取りを試みると、バッファには不明なデータが返されます。
現在の COBOL 属性から、IBM PC の属性テーブルにできる限り近いテーブルを生成します。
call "CBL_SCR_SET_PC_ATTRIBUTES" returning status-code
status-code |
『ルーチン一覧について』を参照。 |
なし。
status-code |
ルーチンの結果
|
このルーチンを使用すれば、汎用的な属性ルーチンで IBM PC の属性テーブル全体を設定する場合とほぼ同じ結果が得られます。そのため、既存のプログラムに汎用的な属性を与え、属性処理部分の移植性を高める手段として効果的です。ただし、このルーチンは可能なすべての属性を定義するため、処理効率に問題があります。新規にアプリケーションを作成する場合は、処理効率への影響を回避するためにも、汎用的な属性ルーチンで必要な属性のみを定義してください。
このルーチンは、作成済みアプリケーションの移植性を高める手段として提供されており、新規に作成するアプリケーションには使用しません。開発段階では、別の仕組みを使って移植性を高めることができます。
サブシステムの宣言または割り当て解除を実行します。
call "CBL_SUBSYSTEM" using function-code parameter returning status-code
function-code |
cblt-x1-compx。次のいずれかの値を指定する。
|
|||||||||
function-code が 0 の場合 | ||||||||||
parameter |
cblt-subsys-params として定義されている集団項目。次の基本項目を含む。
|
|||||||||
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 の場合呼び出し元のプログラムを、あらゆるサブシステムから削除します。この呼び出しを特定のプログラムが開始するたびに実行すれば、そのプログラムを常にサブシステムに属さない状態で維持できます。
文字列を小文字に変換します。
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
を構成する各文字が小文字に変換されます。
文字列を大文字に変換します。
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
を構成する各文字が大文字に変換されます。
バイトデータをヒープに書き出します。
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 |
書き出すデータを格納したバッファ。このバッファのサイズはプログラム側で決定します。データを確実に格納できる容量を確保してください。 |
なし。
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 |
演算結果 |
source
と target
のそれぞれ左端から演算が開始され、各ビットの排他的論理和が target
に格納されます。排他的論理和の演算における入力ビットと出力ビットの関係を次に示します。
source |
target |
結果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
『拡張言語機能』の『論理演算子 (BOOL 演算子) によるビット操作』
実行単位のタイムスライスの残りを譲渡します。
call "CBL_YIELD_RUN_UNIT"
なし。
実行単位のタイムスライスの残りを、不特定の実行単位に譲渡します。
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
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.
本書、ならびに使用されている固有の商標と商品名は国際法で保護されています。
![]() |
統合プリプロセッサインターフェイス |