Could one also use a function / procedure such as:
Select;
When MyFunction() = 1;
Exsr Exitprocess;
EndSL;
which I believe would also work with either VB or C.......then again I do
not recall ever having tested that......
Again, I am not disagreeing with you.....just making an observation :)
From:
Joe Pluta <joepluta@xxxxxxxxxxxxxxxxx>
To:
RPG programming on the AS400 / iSeries <rpg400-l@xxxxxxxxxxxx>
Date:
06/23/2008 11:30 AM
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