<snip> What the
%indexsize (or %prefixsize, perhaps) would do is give you the number of
bytes in the prefix.
That way, you can code something like:
        MaxDataLen = %size(MyVarFld) - %prefixsize(MyVarFld)
Right now people who mess around with this stuff are hardcoding this
value,
using things like "%size(MyVarFld) - 2", and this will break if a field
has
a 4-byte prefix.  The %prefixsize BIF will return the size of the prefix
field.</snip>
True and using %prefixsize ( I like that BTW) removes the "magic number"
syndrome.... 
Thanks,
Tommy Holden
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[
mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Joe Pluta
Sent: Thursday, May 17, 2007 12:25 PM
To: 'RPG programming on the AS400 / iSeries'
Subject: RE: Max length of a VARYING field
From: Peter Dow (ML)
Hi Joe,
I agree with this scenario, with a couple of questions.
Why VARYING(x) as opposed to VARYINGx?  The former implies (to me
anyway) that I can put whatever I want in there -- VARYING(1),
VARYING(7), etc.
You'll have to ask Scott and Barbara.  Me, I like a big long name like
*MAX4GB, but Scott has opined that it's too much to type.
After all, I don't have to know the size of a disk sector in order to
read a record from a file.
That's why I like the idea of a VARYING with no size for those of us who
don't really care about the internals.
Later responses mention a %indexsize BIF.  Index?  It's a current
length
subfield isn't it?.  How about %sizelen, or %lensize or something?
Unless it's considered an index to the end of the string...but I think
most people think of it as the current length, hence the %len BIF.
The %len BIF already gives you the current length (basically, it returns
the
value stored in the prefix).  The %size BIF gives you the total size of
the
field, but that includes the prefix bytes (currently always 2).  What
the
%indexsize (or %prefixsize, perhaps) would do is give you the number of
bytes in the prefix.
That way, you can code something like:
        MaxDataLen = %size(MyVarFld) - %prefixsize(MyVarFld)
Right now people who mess around with this stuff are hardcoding this
value,
using things like "%size(MyVarFld) - 2", and this will break if a field
has
a 4-byte prefix.  The %prefixsize BIF will return the size of the prefix
field.
Joe
As an Amazon Associate we earn from qualifying purchases.