×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) midrange.com.




I like the Select statement, but I find RPG's select to be a bit anemic when compared to PL/I's select
construct where you can put an expression at the select level or the when level. It's been a while so
the syntax is probably not exact, but something like this is valid:

Select (a+b);
When (1);
Do something;
When (2);
Do something else;
When (c+d);
Do something else;
Otherwise;
Some default action;
End;

No breaks required.

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Joe Pluta
Sent: Monday, June 23, 2008 12:23 PM
To: RPG programming on the AS400 / iSeries
Subject: Re: Advantages of RPG

Doug Palme wrote:
your statement of "perhaps the best
implementation ever..." are you referring to the SELECT statement
specifically or the group as a whole? The reason I ask is that
SELECT-ENDSL is the same as SELECT CASE-END SELECT is it not?

If I am off the mark on this, please feel free to correct me.

Not a correction so much as a clarification. Most implementation of
CASE logic have actually been variations on the SWITCH statement. The
concept of a switch is that you have a single variable, and then you
execute logic based on the contents of that variable.

switch (a) {
case 1: doSomething1();
break;
case 2: doSomething2();
break;
default;
doSomethingElse();
}

SELECT on the other hand was much more a derivation of the old CASE
construct in RPG, where you could compare any two variables. And in
RPG, a combination of SELECT and procedures is incredible:

SELECT;

// Opcodes 01 and 02 don't need authorization
WHEN OPCODE = '01';
DoOpcode1();
WHEN OPCODE = '02';
DoOpcode1();

// Opcode 10 needs authorization
WHEN not Authorized();
SendError('Not Authorized');
WHEN OPCODE = '10';
DoOpcode10();

// Bad opcode
OTHER;
SendError('Bad Opcode');
ENDSL;

The code above is just stunningly simple for client/server programming.
I used this all throughout the RSDC Scheduler application and I was able
to create new servers in minutes. The fact that the WHEN can be as
complex as you need it, or even execute a subprocedure (which in turn
could call another program!) makes this one of the very best opcodes
ever designed for procedural logic.

Joe


This thread ...

Replies:

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

This mailing list archive is Copyright 1997-2026 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.