RE: Why you shouldn't be afraid to use VARCHAR in RPGLE
Paul Therrien via RPG400-L <[email protected]>
| Newsgroups | gmane.comp.lang.as400.rpg |
|---|---|
| Message-ID | <CH3PR22MB4516E093E1D4030A0EBB5580F1A1A@CH3PR22MB4516.namprd22.prod.outlook.com> |
This works in RPG... doesn't this do what you are asking for? Where iResult is an indicator. iResult will be either on or off based on whether x = y. iresult = ( x = y); (Although it won’t set 'x' = to 'y'). -----Original Message----- From: RPG400-L <[email protected]> On Behalf Of Infodorado InfoDorado via RPG400-L Sent: Thursday, December 11, 2025 4:54 PM To: RPG programming on IBM i <[email protected]>; Javier Sanchez <[email protected]> Cc: Infodorado InfoDorado <[email protected]> Subject: Re: Why you shouldn't be afraid to use VARCHAR in RPGLE About that: "boolVal = (a = b ? 0: 1);" Could that be implemented by "boolVal = (a = b)"? Am I missing something in the C-like syntax? It's been a long time since I looked at C. --Alan Cassidy > On 12/11/2025 9:14 AM EST Javier Sanchez <[email protected]> wrote: > > BTW, I have wondered a lot why you guys have not yet implemented the > C-like expression as: > boolVal = (a = b ? 0: 1); > This is not only necessary for modern RPG but it should have been > provided long time ago! :-) JS > > El mié, 10 dic 2025 a las 22:04, Barbara Morris (<[email protected]>) > escribió: > > > On 2025-12-10 12:25 p.m., James H. H. Lampert via RPG400-L wrote: > > > On 12/10/25 4:06 AM, Infodorado InfoDorado via RPG400-L wrote: > > >> The RPG compiler is a single-pass compiler > > > > > > No, it can't be pure single-pass. If it were, then a program in > > > which a variable is NOT defined in a D-spec, nor in the first > > > C-spec in which it appears, would not compile, much less run. And > > > it's trivially simple to construct an example of this (it took me > > > about 2 minutes), and it compiles and runs just fine. I'd quote > > > the source here, but it would likely be mangled beyond recognition. > > > > > > > It's a single pass through the source but it gathers information > > that it can use multiple times. > > > > The compiler usually allows forward-referencing, so you can code > > LIKE(x) where x is defined later. > > > > But for free-form definitions, the compiler requires the parameter > > for the data-type keywords to be defined before the keyword is seen. > > > > dcl-s x char(con1); // bad, con1 not defined yet > > dcl-c con1 5; > > dcl-s y char(con1); // ok, con1 is defined > > > > Where it becomes extra fun is when you have a data structure that > > LOOKS defined. > > > > dcl-ds ds1; > > subf char(10); > > end-ds; > > dcl-s x char(%size(ds1)); // %size(ds1) is not defined. WHAT??? > > > > RPG allows you to define the length of a data structure later, > > either due to being on an I spec, possible an externally-described I > > spec, or on a C spec. > > > > C MOVE *blanks ds1 50 > > > > Almost certainly wrong columns, but you get what I mean. I'm > > defining > > DS1 to have a length of 50 here, not the length of 10 that it looked > > like it should have. Shenanigans? Yep, but upward-compatible R Us. > > > > We have a H-spec/CTL-OPT keyword for that: DLCOPT(*NOCHGDSLEN). With > > that keyword, the compiler doesn't allow you to change the length of > > the data structure like that, so it's considered defined as soon as > > all the subfields are defined. > > > > -- > > Barbara > > > > -- > > 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 > > main=lists.midrange.com 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 > in=lists.midrange.com 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.