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 ...

Follow-Ups:
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.