Poll (EN)

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

Last Updated on 13 September 2019 by Roberto De Pedrini

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?

Related Posts
DB2 for i SQL – String Manipulation – POSSTR-LOCATE-LOCATE_IN_STRING (EN)

Introduction Often, in our applications, we need to work with text strings, and DB2 SQL can come in very useful Read more

DB2 for i – FAQ & Howtos (EN)

DB2 Database and SQL ... maybe the most important things on IBM i platform: here's a collection of FAQs, tips Read more

IBM i 7.4 Announcement (En)

Comes directly with the Easter egg this IBM announcement for the news of the IBM i 7.4 version, iNext version Read more

Generated Always Columns (EN)

Introduction "Generated Always Column": are columns, table fields, filled by DB2 engine: something like columns with a default value but Read more

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

Your email address will not be published. Required fields are marked *