I found it in a presentation "DB2 UDB for iSeries: Coding Techniques for SQL
Performance" from Kent Milligan
"Internally, DB2 UDB for iSeries will automatically set the Allocate value
to the maximum
length of the variable length column whenever the column length is 30 bytes
Mit freundlichen Grüßen / Best regards
"Shoot for the moon, even if you miss, you'll land among the stars." (Les
"If you think education is expensive, try ignorance." (Derek Bok)
"What is worse than training your staff and losing them? Not training them
and keeping them!"
Von: MIDRANGE-L [mailto:midrange-l-bounces@xxxxxxxxxxxx] Im Auftrag von
Gesendet: Wednesday, 30.7 2014 15:01
An: Midrange Systems Technical Discussion
Betreff: Re: Variable length fields question
Then only reason to use VARLEN with a 30 character field would be if you
have lots of %trimr() and or %len() in your code.
If the field was variable length, you could remove all the %trimr() except
where you are writing to the DB from a fixed length source such as a screen
and the %len() op-code would perform better as it wouldn't have to actually
count characters; the current length of a variable length field is always
FYI: I seem to recall hearing that (with SQL DDL?) if you left off the
allocate clause for a field or 30 chars or less the DB defaulted the
allocation to the length of the field. However, I can't find a reference
for this information and per the manual, allocate is defaulted to 0.
On Tue, Jul 29, 2014 at 5:07 PM, Voris, John <john.voris@xxxxxxxxxxxxx>
I have been following the discussion with interest.
"The OS is smart enough to pad out the field" when processing, and RPG
buffers are sized at the maximum."
Here is our case: our Bill of Lading numbers are defined as 30A. But
in one file, CUPMIFH, the BOL was defined as 15A.
Most of our Bills of Lading are 7 or 8 char, and it was only once or
twice we found the 15A exceeded.
We have installed a fix in the RPG program where this surfaced as a
problem, so we have the problem resolved for now.
But when / if we were to address this mismatch . . . by redefining the
problem file, . . . would it make sense to define the BOL field as 30A
Are there any advantages to making the field VARLEN ?
.+ One advantage we see is that SQL joins would be more reliable and
simpler to construct.
. - But we still have to recompile all RPG programs that are using
this problem file, correct ?
So if we are recompiling, we are more likely to go with the existing
30A and not use VARLEN.
As far as saving DASD space, I believe it would be trivial, as the
detail file with the field BOL is only 2.2 GB ( 1.4 mill records ),
and there are other files with BOL scattered throughout the module in
question. But the space savings of 5A ( actually 5A - 2A for LEN ) is
So I assume that if we really wanted to gain any advantage, it would
be to convert the entire system to use the VARLEN(15).
And in actuality, I believe that if we defined the system using SQL
Tables and Views instead of DDS, then we would likely gain more in CPU
savings than anything we might achieve with database field sizes.
Crown Americas LLC
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take
a moment to review the archives at
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe, unsubscribe,
or change list options,
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take a
moment to review the archives at http://archive.midrange.com/midrange-l