実行時、動的にメモリを割り当てる。また、割り当てられたヒープデータをスレッドまたは呼び出しプログラムに関連付けることができる。
call "CBL_ALLOC_MEM" using mem-pointer by value mem-size flags returning status-code
呼び出しプロトタイプ使用時 ( 説明の読み方) | PIC (32 ビット システム) | |
---|---|---|
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 | 次のビット設定に従って割り当てるメモリの種類を示す。
|
mem-pointer | 割り当てられるメモリへのポインター。割り当てられたメモリは初期化されない。 |
割り当てられたメモリは、どの値にも初期化されない。
本機能に割り当てられた任意の共有メモリに対する更新は、ランタイム システムによって直列化も保護もされない。データの保全性を保持するためにセマフォを使用すること。
メモリがスレッドによって割り当てられている場合は、呼び出しスレッドが終了したときに解放される。
非共有メモリの最大サイズは、(-lランタイム スイッチが設定されていない限りは)オペレーティング システムだけに制約される。
共有メモリの最大サイズは、オペレーティング システムおよびランタイム システムだけに制約される。ランタイム チューナーshared_memory_segment_sizeは、最大サイズを設定する場合に使用できる。省略時の最大サイズは65536バイト、最小サイズは8192バイトである。
ビット1、2、または3は、互いに排他的である。排他的でない場合には、チェックするとエラー181が返される。(混合言語環境において直接的または間接的な)呼び出しプログラムがない場合は、ビット2は無視される。
ビット2が設定されていない場合は、CBL_ALLOC_DYN_MEMによって割り当てられたメモリは割り当てたプログラムが取り消される(論理的または物理的に)ときに解放される。ただし、これはCOBOLプログラムが直接的または間接的にプログラムの呼び出し側である場合である。