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
already known.

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
VARLEN(15) ?
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.

John Voris
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

This thread ...


Return to Archive home page | Return to MIDRANGE.COM home page