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]> |
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 > > 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.