|
AFAIK - I might have to test it - this should be possible:
dcl-s w_address1 varchar(%len(phaddress1)) inz;
At least it should be possible to define a constant and use this to define your varchar variable:
dcl-c #LEN %len(phaddress1);
dcl-s w_address1 varchar(#LEN) inz;
As long as the expression value is resolvable at compile time. But I'm pretty sure, that also the first form should work.
-> https://www.ibm.com/docs/en/i/7.6.0?topic=length-len-used-its-value
And you can also use %LEN to get the maximum size of a VARCHAR variable, simply use:
%len(varchar_variable:*max)
-> https://www.ibm.com/docs/en/i/7.6.0?topic=lgsl-len-used-get-maximum-length-varying-length-expressions
But when %LEN is used in definition statement, it always returns the maximum length of variable length fields like VARCHAR. So it should also work the other way around:
dcl-s x_address1 char(%len(w_address1)) inz;
HTH
Daniel
Am 06.12.2025 um 03:41 schrieb Jon Paris <jon.paris@xxxxxxxxxxxxxx>:
Not quite, Charles. $SIZE returns the storage required to hold the field - it's capacity will be 2 or 4 less than that due to the storage used by the length.
So:
Dcl-S myVarLen Varchar(200) Inz; // %Len = 0, %Size = 202 bytes.
Jon Paris
Jon.Paris@xxxxxxxxxxxxxx
On Dec 5, 2025, at 6:08 PM, Charles Wilt <charles.wilt@xxxxxxxxx> wrote:--
LIKE should pick up the both the type and size...
dcl-s w_address1 like(phaddress1);
note: %len() on a varchar is always the length of the current value. The
max size is retrieved using %size().
HTH,
Charles
On Fri, Dec 5, 2025 at 3:28 PM DEnglander--- via RPG400-L <--
rpg400-l@xxxxxxxxxxxxxxxxxx> wrote:
Does anyone know how to do something like this:
I would like to define a %TRIMmed disk field that is CHAR(200)
[PHADDRESS1] as a VARCHAR and eliminate the %TRIMs.
So as not to hardcode the size of the VARCHAR, can I define it as VARCHAR
but based on the length of the CHAR(200) field? Something like:
dcl-s w_address1 varchar(%len(phaddress1));
Can that be done?
Thank you,
Doug
"CONFIDENTIALITY NOTICE: This e-mail transmission (and/or the attachments
accompanying it) contain confidential information belonging to the sender.
The information is intended only for the use of the intended recipient. If
you are not the intended recipient, you are hereby notified that any
disclosure, copying, distribution or the taking of any action in reliance
on the contents of the information is strictly prohibited. Any
unauthorized interception of this transmission is illegal under the law.
If you have received this transmission in error, please promptly notify the
sender by reply e-mail, and then destroy all copies of the transmission."
--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 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.