Re: Why you shouldn't be afraid to use VARCHAR in RPGLE
Infodorado InfoDorado via RPG400-L <[email protected]>
| Newsgroups | gmane.comp.lang.as400.rpg |
|---|---|
| Message-ID | <[email protected]> |
Sorry the previous message "sent itself" before I finished. Isn't there a bif or technique that can be used in the D-specs to get the size of the %len() part of the VARCHAR, or get to the actual data of the variable? --Alan Cassidy > > On 12/05/2025 10:12 PM EST Daniel Gross <[email protected]> wrote > > > > > > 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 <[email protected]>: > > > > > > 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 > > > [email protected] > > > > > > > > > > > >> On Dec 5, 2025, at 6:08 PM, Charles Wilt <[email protected]> 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 < > > >>> [email protected]> 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: [email protected] > > >>> To subscribe, unsubscribe, or change list options, > > >>> visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > > >>> or email: [email protected] > > >>> Before posting, please take a moment to review the archives > > >>> at https://archive.midrange.com/rpg400-l. > > >>> > > >>> Please contact [email protected] for any subscription related > > >>> questions. > > >>> > > >>> > > >> -- > > >> This is the RPG programming on IBM i (RPG400-L) mailing list > > >> To post a message email: [email protected] > > >> To subscribe, unsubscribe, or change list options, > > >> visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > > >> or email: [email protected] > > >> Before posting, please take a moment to review the archives > > >> at https://archive.midrange.com/rpg400-l. > > >> > > >> Please contact [email protected] for any subscription related questions. > > >> > > > > > > -- > > > This is the RPG programming on IBM i (RPG400-L) mailing list > > > To post a message email: [email protected] > > > To subscribe, unsubscribe, or change list options, > > > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > > > or email: [email protected] > > > Before posting, please take a moment to review the archives > > > at https://archive.midrange.com/rpg400-l. > > > > > > Please contact [email protected] for any subscription related questions. > > > > > -- > > This is the RPG programming on IBM i (RPG400-L) mailing list > > To post a message email: [email protected] > > To subscribe, unsubscribe, or change list options, > > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > > or email: [email protected] > > Before posting, please take a moment to review the archives > > at https://archive.midrange.com/rpg400-l. > > > > Please contact [email protected] for any subscription related questions. > -- > This is the RPG programming on IBM i (RPG400-L) mailing list > To post a message email: [email protected] > To subscribe, unsubscribe, or change list options, > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > or email: [email protected] > Before posting, please take a moment to review the archives > at https://archive.midrange.com/rpg400-l. > > Please contact [email protected] for any subscription related questions. -- This is the RPG programming on IBM i (RPG400-L) mailing list To post a message email: [email protected] To subscribe, unsubscribe, or change list options, visit: https://lists.midrange.com/mailman/listinfo/rpg400-l or email: [email protected] Before posting, please take a moment to review the archives at https://archive.midrange.com/rpg400-l. Please contact [email protected] for any subscription related questions.