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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.