Commande LOOP

Exécute une série de commandes ACLScript de manière répétée alors qu'une condition spécifiée est évaluée sur vrai.

Remarque

La commande LOOP doit être insérée à l'intérieur de la commande GROUP.

Syntaxe

LOOP WHILE test
  commande
  <...n>
END

Paramètres

Nom Description
WHILE test

Le test qui doit renvoyer la valeur « vrai » avant l'exécution des commandes dans la commande LOOP. Si le test renvoie « vrai », les commandes sont exécutées à répétition jusqu'à ce que le test renvoie « faux ».

commande <...n>

Une ou plusieurs commande à exécuter.

Vous pouvez saisir plusieurs commandes au sein de la commande LOOP. Chaque commande doit commencer sur une nouvelle ligne.

END Fin de la commande LOOP.

Exemples

Diviser un champ délimité par des virgules

Une table contient des données de facture et vous avez besoin d'isoler certaines informations pour des montants de facture par service. Une facture peut être reliée à plusieurs services et les codes des services sont enregistrés dans un format séparé par une virgule dans la table.

Pour extraire les montants de facture par service, vous :

  1. Utilisez une commande GROUP pour traiter la table, enregistrement par enregistrement.
  2. Calculez le nombre de services (n) associé à chaque enregistrement.
  3. Utilisez la commande LOOP pour effectuer une itération sur l'enregistrement x fois afin d'extraire les données pour chaque service associé à l'enregistrement.
COMMENT
Utilisez GROUP pour compter les virgules dans chaque champ de code de département afin d'identifier le nombre de départements associés à l'enregistrement
appliquez "LOOP" à chaque enregistrement pour chaque code du champ, chaque itération de la boucle extrayant un seul enregistrement vers la table result1
END

GROUP
  v_department_count = OCCURS(Dept_Code;',')
  v_counter = 0
  LOOP WHILE v_counter <= v_department_count
    v_dept = SPLIT(Dept_Code; ',;, (v_counter + 1))
    EXTRACT FIELDS No_Facture, Quantité, v_dept AS "Département" TO résultat1
    v_compteur = v_compteur + 1
  END
END

Remarques

Astuce

Pour consulter des tutoriels détaillés sur les commandes LOOP et GROUP, reportez-vous à Structures des contrôles et à Regroupement et exécution de boucles.

Quand utiliser LOOP

Des boucles sont souvent utilisées lorsqu'un enregistrement contient des répétitions de segments de données que vous souhaitez traiter.

Fonctionnement

Chaque commande LOOP doit indiquer une condition WHILE à tester, et se terminer par une instruction END. Les commandes situées entre LOOP et END sont exécutées à répétition sur l'enregistrement actuel, tant que le test spécifié renvoie « vrai ».

Si le test renvoie initialement « faux », les commandes ne sont pas exécutées.

Éviter des boucles infinies

Pour éviter de créer une boucle infinie, assurez-vous que le test puisse toujours se révéler faux. Vous pouvez également utiliser la commande SET LOOP pour éviter une boucle infinie.