Etiquettes, drapeaux et contrôle des commandes

Le système d'étiquettage décrit au début de ce tutoriel est en réalité plus qu'une simple identification de messages. Par exemple, vous pouvez arrêter n'importe quelle commande avec la commande stop, depuis n'importe quelle connexion:

maboucle:loop legRF2 = legLF2,
...
stop maboucle;

Vous pouvez aussi geler une commande avec la commande freeze et la dégeler (elle reprendra là où elle en était) avec la commande unfreeze. Il existe aussi la combinaison de commandes block/unblock qui permet d'empêcher de nouvelles exécutions de la commande possédant l'étiquette donnée. Une étiquette peut préfixer un ensemble de commandes entre accolades, comme { ... }, et ainsi être associée à une large portion de code et pas forcément une seule commande.

A la suite de l'étiquette, il est possible d'ajouter un ou plusieurs drapeaux (flags). Un drapeau est un mot-clé préfixé par le signe +. Les drapeaux les plus utiles sont +begin et +end qui envoient un message-système lorsque la commande démarre et lorsqu'elle s'arrête, ou +bg qui place la commande en tâche de fond. Voici quelques exemples illustrant tout ceci:

monetiquette+begin:
loop legRF2 = legLF2,
[139464:monetiquette] *** begin
+begin+end:
wait(1s);
[521200:monetiquette] *** begin
[522200:monetiquette] *** end

D'autres drapeaux sont présentés dans le document "URBI Language Specification".

Depuis URBI 1.0, vous pouvez utiliser des étiquettes hiérarchiques comme monetiquette.sousetiquette. L'avantage de ceci est que vous pouvez arrêter une famille entière basée uniquement sur l'étiquette-mère: l'étiquette précédente peut aussi bien être arrêtée avec un stop monetiquette.sousetiquette qu'avec un stop monetiquette, et vous pouvez ainsi regrouper facilement plusieurs commandes. Une prochaine version incluera également le multi-étiquettage pour accroître encore les possibilités.