RPG FreeForm - %LIST
Fonction :
La fonction %LIST définit une liste temporaire de valeurs.
Cela permet de tester si une variable correspond ou non aux valeurs définies dans la liste.
L’utilisation de la fonction %LIST améliore la lisibilité du code en évitant de complexifier une condition IF ou WHEN…
Syntaxe :
%LIST( ma_valeur_1 : ma_valeur_2 : ma_valeur_3 : … : ma_valeur_n )
if ma_variable_a_tester IN %LIST( ma_valeur_1 : ma_valeur_2 : ma_valeur_3 : … : ma_valeur_n );
if NOT ( ma_variable_a_tester IN %LIST( ma_valeur_1 : ma_valeur_2 : ma_valeur_3 : … : ma_valeur_n ) );
Exemples :
Les exemples suivants, sont basés sur les variables déclarées ci-dessous :
Dcl-s ma_variable_a_tester char(10) inz(‘JEROME‘);
Dcl-s ma_valeur_1 char(10) inz(‘YVES‘);
Dcl-s ma_valeur_2 char(10) inz(‘YOUCEF‘);
Dcl-s ma_valeur_3 char(10) inz(‘MICA‘);
Dcl-s ma_valeur_4 char(10) inz(‘JEROME‘);
Exemple 1 : Tester si ma_variable_a_tester correspond à une de mes variables « ma_valeur_x » : SANS %LIST
if ma_variable_a_tester = ma_valeur_1
or ma_variable_a_tester = ma_valeur_2
or ma_variable_a_tester = ma_valeur_3
or ma_variable_a_tester = ma_valeur_4;
…
endif;
Exemple 2 : Tester si ma_variable_a_tester correspond à une de mes variables « ma_valeur_x » : AVEC %LIST
if ma_variable_a_tester IN %LIST(ma_valeur_1 : ma_valeur_2 : ma_ valeur_3 : ma_valeur_4);
…
endif;
Exemple 3 : Tester si ma_variable_a_tester ne correspond à aucune de mes variables « ma_valeur_x » : SANS %LIST
if ma_variable_a_tester <> ma_valeur_1
and ma_variable_a_tester <> ma_valeur_2
and ma_variable_a_tester <> ma_valeur_3
and ma_variable_a_tester <> ma_valeur_4;
…
endif;
Exemple 4 : Tester si ma_variable_a_tester ne correspond à aucune de mes variables « ma_valeur_x » : AVEC %LIST
if NOT ( ma_variable_a_tester IN %LIST(ma_valeur_1 : ma_valeur_2 : ma_ valeur_3 : ma_valeur_4) );
…
endif;
Conclusions :
La fonction %LIST est très simple à utiliser et apporte de la lisibilité au code.