call "CBL_ALLOC_MEM" using     mem-pointer
                     by value  mem-size
                     returning status-code


  Using call prototype (see Key) Picture (32-bit systems)
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 See Library Routines - Key  

On Entry:

The number of bytes of memory to allocate.
The type of memory required. You can set the following bits:
Bit 0 Allocate this memory as shared.
Bit 1 Reserved. Must be set to zero.
Bit 2 Allocate this memory independently from any calling program. If bit 3 is set it will be freed automatically when the calling thread ends. If bit 3 is unset it will be freed when the run-unit ends.
Bit 3 Allocate this memory as thread local. If bit 2 is unset and there is a direct or indirect (in a mixed language environment) calling COBOL program, it will be freed when the calling program is canceled or the thread ends - whichever comes first.
Bits 4-31 Reserved. Must be set to 0.

On Exit:

A pointer to the memory allocated. The allocated memory is not initialized.


The memory allocated is not initialized to any value.

Updates to any shared memory allocated to this function are not serialized or protected by the run-time system; you should use semaphores to maintain the integrity of the data.

If the memory has been allocated by a thread, it is freed when the calling thread terminates.

The maximum size of nonshared memory is restricted only by your operating system (unless the -l run-time switch is set).

The maximum size of shared memory is restricted by the operating system and the run-time system. The run-time tunable, shared_memory_segment_size, can be used to set the maximum size.

Bit 1 and bit 2 or bit 3 are mutually exclusive. This is checked and error 181 returned otherwise. If there is no calling program (directly or indirectly in a mixed language environment) bit 2 is ignored.

If bit 2 is not set all standard memory allocated by CBL_ALLOC_MEM is freed when the program that allocated it is canceled (logically or physically), if there is a COBOL program that is directly or indirectly the caller.