Kbase P4455: Error 444 working with local variables in a 4GL program
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  16/10/2008 |
|
Status: Verified
FACT(s) (Environment):
Progress 8.x
Progress 9.x
SYMPTOM(s):
** Attempt to expand record beyond the maximum allowed size. (444)
Using local variables in a 4GL program.
The database record that you are trying to access is, in fact, not greater than 32K or the -Mr "maximum record size" setting.
CAUSE:
The problem might be that the program in question is working with a large amount of program data. This could be a large number of variables. It could even be a single character variable that contains a large number of characters.
The active context, that is, 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.
FIX:
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.