Crée une fonction Tcl
proc name args body
La commande proc crée une nouvelle fonction Tcl nommée name, remplaçant toute commande ou fonction existante de ce nom. Chaque fois que la nouvelle commande est appelée, le contenu de body sera exécuté par l'interpréteur Tcl. Normalement, name est non qualifié (n'inclut pas les noms des namespaces contenant), et la nouvelle fonction est créée dans le namespace courant. Si name inclut un quelconque quantificateurs namespace, la fonction est créée dans le namespace spécifié. args spécifie les arguments formels à la fonction. Ils consiste d'une liste, qui peut être vide, dont chaque éléments spécifie un argument. Chaque spécificateur d'argument est aussi une liste avec soit un ou deux champs. S'il y a seul champ dans le spécificateur alors c'est le nom de l'argument; s'il y a deux champs, alors le premier est le nom de l'argument et le second est sa valeur par défaut.
Quand name est appelée une variable locale sera créée pour chacun des arguments formel à la fonction; leur valeur sera la valeur de l'argument correspondant dans la commande appelée ou la valeur par défaut de l'argument. Les arguments avec une valeur par défaut n'ont pas besoin être spécifiés dans un appel de fonction. Néanmoins, il doit y avoir assez d'arguments pour tous les arguments qui n'ont pas de valeur par défaut, et il ne doit pas y avoir d'arguments supplémentaires. Il y a un cas spécial pour permettre les fonctions avec un nombre variable d'arguments. Si le dernier argument a le nom args, alors un appel à la fonction peut contenir plus d'arguments que la fonction en a. Dans ce cas, tous les arguments à partir de celui qui serait assigné à args sont combinés en une liste (comme si la commande list avait été utilisée); ces valeurs combinées sont assignées à la variable locale args.
Quand body est exécuté,les noms de variables normalement se réfèrent aux variables locales, qui sont créées automatiquement quand référencées et effacées quand la fonction retourne. Une variable locale est automatiquement créée pour chacun de ses arguments de fonction. Les variables globales peuvent seulement être accédée en appelant la commande global ou la commande upvar. Les variables namespace peuvent seulement être accédées en appelant la commande variable ou la commande upvar.
La commande proc retourne une chaîne vide. Quand une fonction est appelée, la valeur de retour de la fonction est la valeur spécifiée dans une instruction return. Si la fonction n'exécute pas un return explicite , alors sa valeur de retour est la valeur de la dernière commande exécutée dans le corps de la fonction. Si une erreur se produit pendant l'exécution du corps la fonction, alors la fonction renverra cette même erreur.