Informix Error -4454: The size of the local string table has exceeded the limit of 32767.
Cause and resolution
The size of the local string table has exceeded the limit of 32767.
The table is used to hold literal strings and identifiers used in the current function. To avoid this error, split the function into two or more sub-functions. Alternatively, find a way to initialize character variables without assigning literal strings, for example by reading the initial values from a database or file. Only 4GL returns this error.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-4454 fires when a single function's literal strings and identifiers exceed the local string table's 32,767 limit — per the official guidance, only 4GL returns this error.
- A single function with too many literal strings and identifiers, per the official guidance — the direct, only cause.
Solutions / Resolution
- Split the function into two or more sub-functions, per the official guidance.
- Initialize character variables without literal strings (e.g. reading initial values from a database or file), per the official guidance.
Examples
Splitting an oversized function
Extract a large block of the function's logic (and the literal strings/identifiers it uses) into a separate sub-function, called from the original.
Diagnostic Checks
- Check the flagged function for a large number of local literal strings and identifiers, and split it into sub-functions.
Related Errors / Related Topics
- -4451 — "The size of the pcode generated from this function/report has exceeded the 32K per function limit." A related compiler-size limit, about generated p-code size rather than the local string table.
- -4453 — "Too many global identifiers and literal strings in your program." A closely related compiler-size limit, about the program's global string table rather than one function's local one.
A function's local string table exceeds 32,767 — split it into sub-functions.