Saving memory by using STRING variables
The CHAR and
    VARCHAR data
   types are provided to hold string data from a database column.
When you define a     CHAR or VARCHAR variable
with a length of 1000, the runtime    system must allocate the entire
size, to be able to fetch SQL data directly into the internal    string
buffer.
For character string data that is not stored in the database, consider
using the STRING data
type. The     STRING type is similar to VARCHAR,
except that you don't need    to specify a maximum length and the
internal string buffer is allocated dynamically as needed.    Thus,
by default, a STRING variable initially requires
just a bunch of bytes,    and grows during the program life time,
with a limitation of 65534 bytes.
Use of a STRING variable is typically recommended when building SQL statements
         dynamically, for example from a CONSTRUCT instruction. You may also use the
            STRING type for utility function parameters, to hold file names for
         example.
After a large STRING variable is used, it should
be cleared with a LET or
a INITIALIZE
TO NULL instruction.    However, this is only needed
for STRING variables declared as global or module
   variables. The variables defined in functions will be automatically
destroyed when the program    returns from the function.
Use of the base.StringBuffer
         build-in class is recommended when a great deal of string manipulation and modification is
         required. String data is not copied on the stack when an object of this class is passed to
         a function, or when the string is modified with class methods. This can have a big impact
         on performance when very large strings are processed.