Data container (internal data structure) is an internal data structure that enables to save both simple and structured values according to a key.
The owner of a container is always one running instance of the script. It can be shared between various scripts and processes.

Data container may be created by the actions CNT_CREATE (a spare container), or GETARCHARR_TO_CNT. The second type is filled with pages containing data read from the archive.
The first access to the archive is more effective (memory consumption and partly speed) than using GETARCHARR action. Data container created by GETARCHARR_TO_CNT action can use only the actions CNT_GETNR, CNT_FIND and CNT_DESTROY (example).

The container has a unique identifier. The container is automatically terminated by terminating the script, to which it belongs, or by executing the CNT_DESTROY action.
The size of a container is not specified and is only limited by the operating memory size.

Each value included in a container is uniquely determined by the so-called key.
Users can insert, find, read and delete values into/from the container. The type of values to be inserted into the container is optional (Int, Bool, Text, Real, Time) or structures (entire structured variable, row, ...). The value type of the key must be one of Int, Bool, Text, Real, or Time, but all keys in the container must be the same type.

The actions that ensure work with the data container are stated on page Script actions.


Transferring data container between running ESL scripts

A container transfer can be done by RPC procedures. In the declaration for the RPC procedure, you have to tag the parameter that represents the handle to the container by CNT_HANDLE. An algorithm is contingent on the existence of data containers.  If the handle to the data container is an invalid value or points to a non-existent data container, the algorithm ends with an error
The value of CNT_HANDLE local variables is an integer (INT).

RPC procedure declaration:


  RPC PROCEDURE ProcName [([IN]  CNT_HANDLE paramName1[,paramName2, ...] [IN]  CNT_HANDLE paramName3]...)] 

 ;actions
 
 END ProcName 

Notes:

Script actions