Objets Execute conditionnels – méthode de contournement des blocs #if

Le code ci-dessous exécute conditionnellement des commandes, en utilisant des objets Execute qui sont activés sur la base d'un # if.

object 'TASK' "main" {
processes = {
#if MONTH = "Jan" "exec_1",
#endif
#if MONTH = "Feb" "exec_2",
#endif }
}

object 'PROC' "exec_1" {
process_type = "execute",
command = "Foo"
}

object 'PROC' "exec_2" {
process_type = "execute",
command = "Bar"
}

Il est possible d'obtenir la même fonctionnalité en mettant toutes les commandes à exécuter dans un objet LIST et de les transmettre à un EXECROWS pour les exécuter. Un objet CALC, QUAL ou FILTER pourrait ensuite être utilisé pour sélectionner un sous-ensemble de commandes en fonction de la valeur du paramètre. L'exemple ci-dessous filtre les exemples de commandes sur la base de la colonne Condition: la commande Foo est exécutée en Janvier, et la comande Bar est exécutée en Février.

object 'INPT' "list_of_commands" {
input_type = `list`,
columns = { `Command`, `Condition` },
values = { { `Foo`, `Jan` }, { `Bar`, `Feb` } }
};

object 'PROC' "create_subset" {
process_type = `filter`,
input = `list_of_commands`,
filters = { { column = `Condition`, values = { `$(MONTH)` } } }
};

object 'OUTP' "run_commands" {
output_type = `execrows`,
input = `create_subset`,
command = `$Command`
};

Télécharger PDF