×
The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.
Hi David,
PwordwrapText B
D PI
D input 32767 value
D linelength 5 0 value
D lineCount 5 0 value
D output 32767
Not part of the problem, but... it should be noted that passing a 32k
field by VALUE will not perform well. You might consider changing that
to 'CONST'.
Now on to the problem:
inputLength = %len(%trim(input));
workBufferP = %alloc(inputLength + lineLength);
workBuffer = %trim(input);
In this example, workBuffer will only have 139 bytes of memory allocated
to it. However, when you do 'workbuffer = %trim(input)' you are assign
32767 bytes to it. That's a big problem... that means that whatever
happens to be in the 32628 bytes after the space you allocated will be
overwritten... which isn't good.
You may be saying 'But, Scott... %trim(input) is only 89 bytes long!'
That's true, but you have workBuffer defined as a fixed-length variable,
and therefore RPG will pad the rest of the field with blanks.
So, workBuffer is 32767 bytes long... it'll assign the 89 bytes from
inputLength, and then fill the remainder of the 32k with blanks -- not
good, since you haven't allocated the remainder of the field!
Hope that makes sense.
The solution is this:
%subst(workbuffer:1:inputLength) = %trim(input);
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact
[javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.