Kbase 13879: Error 444 when working with large character variables
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  10/05/1998 |
|
Error 444 when working with large character variables
If you are getting error 444 "*** Attempt to expand record beyond the
maximum allowed size" when you are working with local variables in a
program (i.e., you really are not trying to access a database record
that is greater than 32K or the -Mr "maximum record size" setting),
then the problem may be that the program in question is working with a
large amount of program data (lots of variables or even a single
character variable that contains a large number of characters). The
reason is is that the active context (the program that is currently
executing) is given one 32K "record" buffer to store all of its
program data (local variables). Each record that you read (each
record buffer that you use) gets its own (up to) 32K buffer in
addition to this. So for example, if the program is trying to copy a
large character string into another variable, you could get error 444
if the sum of these two values (number of bytes of storage) exceeded
32K. There is a workaround, however: you also get another 32K
buffer used exclusively for storing NO-UNDO variables. So, if you
wanted to copy a character string with 30000 bytes in it to another
local variable, you could define one as NO-UNDO and the other without
NO-UNDO and you could avoid the 444 error, like so:
def var a as char.
def var b as char NO-UNDO.
a = FILL("X",30000).
b = a.
Progress Software Technical Support Note # 13879