Poll (EN)

Frida-i Quick Poll: RPG IF-ELSEIF or SELECT-WHEN? (EN)

IF_ELSEIF or SELECT_WHEN? It’s a battle from RPGers on different forums… who like IF_ELSEIF and who like SELECT_WHEN to control flow on multiple conditions.

Let’s start by saying that IF-ELSEIF and SELECT-WHEN are the exact same thing from a point in the program flow and the performance of the code itself, so these following two pieces of code do exactly the same thing:

if YourAge<30;

    dsply 'Oh, you are very young!' 'inp;

 elseif YourAge<40;

    dsply 'You are young!' 'inp;

 elseif YourAge<50;

    dsply 'OK you are still young!' 'inp;

 elseif YourAge<60;

    dsply 'Oh, you were young once!' 'inp;

else;

    dsply 'Oh yeah, it's RPG!...' 'inp;

 ENDIF;           

select;

 when YourAge<30;

    dsply 'Oh, you are very young!' 'inp;

 when YourAge<40;

     dsply 'You are young!' 'inp;

 when YourAge<50;

     dsply 'OK you are still young!' 'inp;

 when YourAge<60;

   dsply 'Oh, you were young once!' 'inp;

 Other;

    dsply 'Oh yeah, it's RPG!...' 'var;

 ENDsl;   

As you can see the two parts of code do the same and identical thing … the difference is an “extra line” … “select;” in the right box.

I, personally, prefer “SELECT – WHEN” … I find the most readable code … but other RPG developers like “IF-ELSEIF” … others still use SELECT-WHEN when the condition repeats on the same variable in the various WHEN (as in the case above) … and “IF-ELSEIF” when the condition changes from time to time (example IF A-B … ELSEIF C-D AND E-F ….. ELSEIF G-X … ENDIF).

References:

Here we are for our “Frida-i Quick Poll” 01: SELECT vs ELSEIF ? Which side are you on?

	
--- Roberto De Pedrini Faq400.com
About author

Founder of Faq400 Srl, IBM Champion, creator of Faq400.com and blog.faq400.com web sites. RPG developer since I was wearing shorts, strong IBM i supporter, I have always tried to share my knowledge with others through forums, events and courses. Now, with my company Faq400 Srl, I help companies to make the most of this great platform IBM i.

Leave a Reply

%d bloggers like this: