Structures des contrôles
Une structure de contrôle est un composant de script décidant de la direction à prendre compte tenu de certains paramètres. ACLScript fournit à la fois des structures de bouclage et des structures logiques conditionnelles IF.
Logique conditionnelle à l'aide de IF
ACLScript met en œuvre une logique conditionnelle sous la forme d'une commande IF et sous la forme d'un paramètre facultatif dans plusieurs commandes du langage :
- commande contrôle l'exécution ou l'inexécution d'une commande
- paramètre décide des enregistrements d'une table par rapport auxquels exécuter la commande
La commande IF
Lorsque vous utilisez la commande IF, vous spécifiez une expression conditionnelle suivie de la commande à exécuter si l'expression est évaluée sur « true » (vrai) :
IF v_compteur > 10 CLASSIFY ON num_client
Cette structure conditionnelle contrôle quel code s'exécute ; vous pouvez donc utiliser la commande IF lorsque vous souhaitez traiter une table entière basée sur l'expression de test. Si l'expression est évaluée sur « true », la commande est exécutée sur tous les enregistrements de la table. Pour obtenir plus d'informations sur la commande IF, consultez la rubrique Commande IF.
Paramètre IF
Un grand nombre de commandes accepte un paramètre IF facultatif que vous pouvez utiliser pour filtrer les enregistrements dans lesquels la commande s'exécute :
CLASSIFY ON num_client IF état = 'NY'
Lorsque cette instruction s'exécute, le script classe tous les enregistrements dans la table pour lesquels la valeur du champ état est 'NY'.
Boucles
La commande LOOP
La commande LOOP fournit la structure de contrôle en boucle dans ACLScript.
Remarque
La commande LOOP doit s'exécuter à l'intérieur de la commande GROUP, elle ne peut pas s'exécuter de façon autonome.
Cette commande traite les instructions contenues à l'intérieur de la boucle tant que l'expression WHILE spécifiée est vraie :
ASSIGN v_compteur = 10 GROUP LOOP WHILE v_compteur > 0 v_total = v_total + montant v_comptant = v_compteur - 1 END END
Cette structure effectue 10 itérations et ajoute la valeur du champ montant à la variable v_total. À la fin de chaque itération, la variable v_counter est décrémentée de 1, puis testée dans l'expression WHILE. Une fois que l'expression est évaluée sur faux, la boucle se termine et le script se poursuit.
Une fois la boucle terminée, v_total conserve la somme des champs montant des 10 enregistrements.
Pour obtenir plus d'informations sur les boucles, consultez la rubrique Commande LOOP.
LOOPING avec un sous-script
Il arrive que la commande LOOP ne fournisse pas exactement la fonctionnalité d'exécution en boucle dont vous pouvez avoir besoin. Dans ce cas, vous pouvez aussi appeler un script Analytics distinct pour exécuter une boucle à l'aide de la commande DO SCRIPT : DO SCRIPT NomScript WHILE TestConditionnel.
Vous pouvez utiliser l'une de ces méthodes courantes pour choisir quand terminer votre boucle :
- drapeau la boucle se poursuit jusqu'à ce que la variable logique drapeau soit définie sur FALSE
- compteur la boucle se poursuit jusqu'à ce qu'une variable incrémentant ou décrémentante croise un seuil conditionnel
Pour obtenir plus d'informations sur l'appel de sous-scripts, consultez la rubrique Commande DO SCRIPT.
Exemple
Vous devez importer tous les fichiers CSV dans le dossier C:\data de votre projet. Vous pouvez utiliser la commande DIRECTORY pour obtenir une liste des fichiers du dossier. Toutefois, vous ne pouvez pas utiliser la commande IMPORT à l'intérieur de la structure GROUP. Vous devez trouver un autre moyen d'exécuter une boucle dans la table créée par DIRECTORY.
Pour ce faire, vous créez un script principal qui :
- Exécute la commande DIRECTORY et enregistre les résultats dans une table.
- Obtient le nombre d'enregistrements dans la table à utiliser comme compteur.
- Appelle un sous-script une fois par enregistrement dans la table afin d'exécuter la commande IMPORT par rapport à l'enregistrement actuel.
Script principal
COMMENT Script principal DIRECTORY "C:\data\*.csv" TO T_Table_à_boucler OPEN T_Table_à_boucler COUNT v_nb_enreg = COUNT1 v_compteur = 1 DO SCRIPT Importer_sous_script WHILE v_compteur <= v_nb_enreg
Importer un sous-script
COMMENT Importer_sous_script OPEN T_Table_à_boucler LOCATE RECORD v_compteur COMMENT code à importer fichier CSV dans l'enregistrement va ici.... ASSIGN v_compteur = v_compteur + 1
Les variables sont communes à tous les scripts s'exécutant dans le projet ; le script principal appelle donc le sous-script jusqu'à ce que la valeur de v_compteur dépasse la valeur de v_nb_enreg. À chaque exécution du sous-script, il incrémente v_compteur.
Cette structure vous permet d'appeler la commande IMPORT par rapport à chaque enregistrement tout en exécutant une boucle dans la table. À la fin du script principal, vous avez importé tous les fichiers CSV du dossier C:\data.