Please enable JavaScript to view this site.

ESL Documentation

Navigation: » No topics above this level «

Q12 What are the limits of ESL variables and objects?

Scroll Prev Top Next More

Some variables, such as an ESL string, have very large theoretical sizes which cannot currently be achieved due to the limitations of system memory. All variables and the manipulation of data within screen objects require an allocation of memory which is limited by the PRGMAX parameter (default 32MBytes). You must ensure there is sufficient memory available by setting the PRGMAX if your application is required to manipulate large strings and/or arrays.

ESL Strings:        2 Gigabytes subject to the above comment.

 (Note. As an ESL string structure includes a size, it is possible to store and copy binary data, including NULLs, between ESL strings.)

ESL Integers:      -2^31 to 2^31-1 (it is a 'C' long: about - 2 billion to 2 billion).

ESL Floats:        (+-)1.7 * 10^308 (it is a 'C' double).

ESL Arrays:        

The maximum number of dimensions: 11 (i.e. Array[2,2,2,2,2,2,2,2,2,2,2] )

There is no maximum allocation for an array. However, during compilation every declared array is created, including local arrays, which are not actually written to the resulting WEB file. The result of this array creation is that the compiler may not have sufficient memory to create an array, so an error is generated and the following message written to the errorlog:

"line nn: error: memory pool 'Easel Program' ran out of memory"

(Where nn is the line number where the array is declared.)  You can resolve this problem by increasing the value of the PRGSIZE parameter within the ESL configuration file (typically named "EslConfig.ini"), or use the "-m" command line option to increase the memory available to the compiler. If you need to increase the PRGSIZE parameter for compilation, you should certainly increase the same parameter for your runtime environment. Where a number of large local arrays have been declared in different subroutines, you must be aware that the PRGMAX parameter for your runtime environment will need to be set higher than the PRGSIZE parameter used for compilation, as more than one large array may be current in any instance. It is also possible, via recursive subroutines, that more than one instance of an array is current.

To help you calculate the memory requirements of an array, the following is the size of each element:        

String

4 bytes per element declared, plus 9 bytes for each element used, plus the sum of the lengths of the strings referenced

Integer

4 bytes per element

Float

8 bytes per element

Boolean

1 bit per element, therefore 8 elements per byte

Length of an Object's Parameter: 256 Characters if assigned with a literal, as per ESL String when assigned with a variable using the following syntax:

make OBJECT parameter VARIABLE_SV

Static Text: 256 Characters if assigned with a literal, or 32KBytes when assigned with a variable.

List and Combination Box: 255 characters per line. Total size of content limited by system memory.

Entry Field: 256 Characters if assigned with a literal, as per ESL String when assigned with a variable, although when characters entered by operator the size is limited to the "text size columns" argument.

Multi-Line Entry Field: As per ESL String.

Textual Region: 32KBytes per line, 32K lines

Maximum number of menu choices allowed in an application: 500 default, although new setting allows up to 2,000 (see: MaxMenuItems in ESL configuration file). Warning as this setting is compiled into the WEB file, you must re-compile your applications each time you amend this setting. You should be aware the larger the number set, the slower the ESL application will respond, even if the menu items are not defined within the application, either at compilation or dynamically at runtime.

Maximum number of arguments passed to subroutine: 13 for ESL subroutines, and external subroutines or functions. All external subroutines and functions return a value, which can be of any ESL data type for a function, but is limited to an integer for subroutines, since it is always used to set the internal variable "errorlevel".

Maximum length of argument passed in ESL configuration file: 400 characters including argument name and equals sign, therefore maximum length of INCPATH argument is 392 i.e. 400 - (7 + 1). There is no restriction on values passed using the Environment Variables, which take precedence over the configuration file, therefore if you need an "Include Path" greater than 392 characters, set the environment variables "INCPATH".

Line size limit to errorlog:

 Using -terp: the Sending '<text>' to errorlog line will indicate only the first 504 characters (after that an ellipse appears).

 Without -terp, the text is not truncated.

Table Object:

 Maximum number of columns in a table is 250.

 Length of a string cell is 1,000 characters.

 Maximum number of rows in a table is determined by available system memory.