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 <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Infodorado InfoDorado via RPG400-L
Sent: Thursday, December 11, 2025 4:54 PM
To: RPG programming on IBM i <rpg400-l@xxxxxxxxxxxxxxxxxx>; Javier Sanchez <javiersanchezbarquero@xxxxxxxxx>
Cc: Infodorado InfoDorado <infodorado@xxxxxxxxxxx>
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 <javiersanchezbarquero@xxxxxxxxx> 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 (<bmorris@xxxxxxxxxx>)
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: RPG400-L@xxxxxxxxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit:
https://lists.midrange.com/mailman/listinfo/rpg400-l
main=lists.midrange.com or email:
RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related questions.


--
This is the RPG programming on IBM i (RPG400-L) mailing list To post a
message email: RPG400-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe,
or change list options,
visit:
https://lists.midrange.com/mailman/listinfo/rpg400-l
in=lists.midrange.com or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.
--
This is the RPG programming on IBM i (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.