CBL_ALLOC_MEM

実行時、動的にメモリを割り当てる。また、割り当てられたヒープデータをスレッドまたは呼出しプログラムに関連付けることができる。

構文:
call "CBL_ALLOC_MEM" using     mem-pointer
                     by value  mem-size
                               flags
                     returning status-code
パラメタ:
呼び出しプロトタイプ使用時 ( 説明の読み方) PIC (32bitシステム)
mem-pointer cblt-pointer usage pointer. Must be level 01.
mem-size cblt-os-size pic x(4) comp-5.
flags cblt-os-flags pic x(4) comp-5.
status-code 説明の読み方 参照
入力パラメタ:
mem-size

割り当てるメモリのバイト数

flags

次のビット設定に従って割り当てるメモリの種類を示す。

ビット0

メモリを共有メモリとして割り当てる。

ビット1

予約済み。ゼロに設定すること。

ビット2

どの呼出しプログラムからも独立させてメモリを割り当てる。ビット3が設定されている場合、呼出しスレッドの終了時に自動的に解放される。ビット3が設定されていない場合、実行単位の終了時に解放される。

ビット3

スレッドローカルにメモリを割り当てる。ビット2が未設定で直接的または間接的に(混合言語環境において)COBOLプログラムが呼び出されている場合、呼出しプログラムがキャンセルされるかスレッドが終了したときに解放される。

ビット4-31

予約済み。ゼロに設定すること。

出力パラメタ:
mem-pointer

割り当てられるメモリへのポインタ。割り当てられたメモリは初期化されない。

説明:

割り当てられたメモリは、どの値にも初期化されない。

本機能に割り当てられた任意の共有メモリに対する更新は、実行時システムによって直列化も保護もされない。データの保全性を保持するためにセマフォを使用すること。

メモリがスレッドによって割り当てられている場合は、呼出しスレッドが終了したときに解放される。

非共有メモリの最大サイズは、(-l実行時スイッチが設定されていない限りは)オペレーティングシステムだけに制約される。

共有メモリの最大サイズは、オペレーティングシステムおよび実行時システムだけに制約される。実行時チューナーshared_memory_segment_sizeは、最大サイズを設定する場合に使用できる。省略時の最大サイズは65536バイト、最小サイズは8192バイトである。

ビット1、2、または3は、互いに排他的である。排他的でない場合には、チェックするとエラー181が返される。(混合言語環境において直接的または間接的な)呼出しプログラムがない場合は、ビット2は無視される。

ビット2が設定されていない場合は、CBL_ALLOC_DYN_MEMによって割り当てられたメモリは割り当てたプログラムが取り消される(論理的または物理的に)ときに解放される。ただし、これはCOBOLプログラムが直接的または間接的にプログラムの呼出し側である場合である。

他参照:

関連項目