:WHILE... :ENDWHILE

L'instruction de script :WHILE définit une boucle. Utilisez un bloc :WHILE lorsque des parties de script doivent être exécutées plusieurs fois jusqu'à ce qu'une condition ne soit plus remplie.

Tant qu'une condition s'applique, l'instruction :WHILE met un processus en boucle dans le script. La condition est une expression logique qui donne un résultat vrai ou faux. Tant qu'une condition est vraie, les instructions de la boucle sont traitées. La condition est ré-évaluée et si elle est toujours vraie, les instructions sont de nouveau traitées. Ce processus se répète jusqu'à ce que la condition ne soit plus vraie, auquel cas la boucle se termine et le script passe à la ligne suivant l'instruction :ENDWHILE.

Syntaxe

:WHILE condition
[statements]
:ENDWHILE

Paramètres

Remarques :

Pour écrire des conditions, utilisez la structure suivante :

Valeur Opérateur de comparaison Valeur de comparaison [OR Valeur de comparaison...]

Les opérateurs de comparaison proposés pour les conditions sont les suivants :

Exemples

La condition suivante est vraie :

:WHILE "0" = "0"

La condition suivante est fausse :

:WHILE "0" = "abc"

La longueur n'a pas d'importance lorsque vous comparez des chaînes de caractères. La condition suivante est vraie car S précède W dans l'alphabet :

:WHILE "Smith" < "Wilson"

L'instruction de script suivante définit une condition exigeant qu'une variable ait l'une des deux valeurs possibles pour être vraie. Si la condition est vraie, les lignes de script du bloc :WHILE sont traitées.

:WHILE &ABT# = "EDP" OR "AE"

Dans l'exemple suivant, le système demande un nom et un département à l'utilisateur. Cette requête est répétée jusqu'à ce que l'utilisateur indique un nom autre que le sien.

:SET &REPEAT# = "Y"

 

:WHILE &REPEAT# = "Y"

:SET &DEP# = SYS_USER_DEP()

:SET &NAME# = SYS_USER_NAME()

 

:BEGINREAD 

:   READ &DEP#, "08" ,"Please enter a department", &DEP#, "M" 

:   READ &NAME#, "08", "Please enter a name", &NAME#, "M" 

:ENDREAD

 

:IF SYS_LAST_ERR_NR() <> 0

:   STOP

:ELSE

:   IF SYS_USER_NAME() = &NAME#

:      SET &REPEAT# = "Y"

:      SET_LAST_ERR 10006, "Please enter a name that is not your own name"

:   ELSE

:      SET &REPEAT# = "N"

:   ENDIF

:ENDIF

 

:ENDWHILE

Voir aussi :