Re: Why you shouldn't be afraid to use VARCHAR in RPGLE
Peter Dow <[email protected]>
| Newsgroups | gmane.comp.lang.as400.rpg |
|---|---|
| Message-ID | <[email protected]> |
Hi Javier, I'm one of those RPG programmers that doesn't know C. Given dcl-s boolVal int(5) inz; // No need more room than two bytes dcl-s a int(5) inz(10); dcl-s b int(5) inz (15); what is the difference between 1. boolVal = (a = b ? 1: 0); 2. boolVal = (a == b ? 1: 0); 3. boolVal = (a = b); From what Paul Therrien said in his reply, it sounds like 2 and 3 are the same, while 1 is very different. 2 and 3 are equivalent to if a = b; boolVal = 1; else; boolVal = 0; endif; and 1 is equivalent to a = b; if b = 0; boolVal = 1; else; boolVal = 0; endif; Actually, in RPGLE, boolVal would have to be defined as IND, not INT, in order for 3 to compile successfully. Anyway, if what I stated is correct, then obviously we already have boolVal = (a = b); and a = b; boolVal = (a = b); isn't too onerous or confusing. -- *Peter Dow* / 909 793-9050 [email protected] / On 12/11/2025 12:19 PM, Javier Sanchez wrote: > Brian, > The "ternary" operator is a very simple concept. Test in one single line > "a query" that will yield a true or false and return one out of two values > that are the ones in the expression after the question mark. > > Put it more clear again: > dcl-s boolVal int(5) inz; // No need more room than two bytes > dcl-s a int(5) inz(10); > dcl-s b int(5) inz (15); > > boolVal = (a = b ? 1: 0); > > I confess, recognize that my initial example was way too fast written. > This one is more clear. Now, without this ILE RPG TR: > > if a = b; > boolVar = 1; > else; > boolVar = 0; > endif; > > 5 lines of code. Sure, very clear, but very unnecessary! > This is elegance and efficiency. > Hey guys! For if any of you took care about it, even Einstein was excited > with his elegant e=mc2, just look a bit at it! > One single line! Not a function, not code at all, just concept and > simplicity! > “Imagination is more important than knowledge. > For knowledge is limited, whereas imagination embraces the entire world, > stimulating progress, giving birth to evolution.” > -- Albert Einstein > > JS > > > El jue, 11 dic 2025 a las 14:01, Brian Parkins (<[email protected]>) > escribió: > >> May I beg to differ? >> >> I would suggest many folk will find such an expression too cryptic, >> especially when maintaining code written by others. It may be efficient, >> it may be "elegant" - but is it easy to read and understand? Take a very >> simple example: >> >> a = a + 5; -or- a += 5; >> >> Personal opinion: the former is more readily understood, the latter not >> so, and open to miscoding (a =+ 5;). It is my experience that a majority >> will favour readability in preference to "elegant" coding >> >> Brian. >> >> On 11/12/2025 14:14, Javier Sanchez 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! 🙂 >> -- >> 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 >> athttps://archive.midrange.com/rpg400-l. >> >> Please [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.