Last Updated on 13 Settembre 2019 by Roberto De Pedrini
E’ un argomento che compare sui gruppi di discussione IBM i (Midrange.com, Code400.com ecc) e tutte le volte è una “battaglia” tra chi preferisce IF-ELSEIF e chi invece predilige SELECT-WHEN … ognuno con i suoi motivi validi.
Iniziamo con il dire che IF-ELSEIF e SELECT-WHEN sono la stessa identica cosa da un punto del flusso di programma e delle prestazioni del codice stesso, quindi questi codici nei box che seguono arrivano allo stesso risultato:
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!…' '' var;
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;
Alla fine possiamo dire che il box di destra ha semplicemente una riga in più … quella con “select”! Ma da un punto di vista leggibilità e chiarezza del codice quale preferisci?
Io, personalmente, preferisco “SELECT – WHEN” … trovo il codice più leggibile… ma altri sviluppatori RPG preferiscono “IF-ELSEIF” … altri ancora utilizzano SELECT-WHEN quando la condizione si ripete sulla stessa variabile nei vari WHEN (come nel caso sopra) … e “IF-ELSEIF” quando la condizione cambia di volta in volta (esempio IF A=B … ELSEIF C=D AND E=F ….. ELSEIF G=X … ENDIF).
Riferimenti:
- Midrange.com “IF_ELSEIF vs SELECT“
- Midrange.com “Select Vs If-elseif“
- RPGPGM.COM “Alternative to SELECT is ELSEIF“
Index
Eccoci quindi al sondaggio “Frida-i Quick Poll” 01: SELECT vs ELSEIF ? Da che parte stai?
---
Roberto De Pedrini
Faq400.com