| FUNCTION |
| Objet : | Créer, modifier ou afficher des fonctions variables définies par l'utilisateur |
| Format : | Mode d'affichage : |
FUNCTION [/GL /LL /P] [wildname]
Mode définition directe :
FUNCTION [/= /GL /LL] name[=]definition
Mode fichier de définition :
FUNCTION [/= /G /GL /L /LL /O /Z] /R [file...]
| file | Un ou plusieurs fichiers d'entrée pour lire les définitions de fonctions. |
| wildname | Nom de la fonction dont la définition doit être affichée (peut contenir des caractères génériques* et ?) |
| name | Nom de la fonction à définir. |
| definition | Valeur ou définition de ce que la fonction doit renvoyer. |
Voir aussi : UNFUNCTION et ESET.
Syntaxe d'achèvement des fichiers :
La syntaxe de complétion de nom de fichier par défaut est la suivante : [/r] * [1] fonctions [2*] : [/r] * [1] fonctions [2*] *
Utilisation :
Sauvegarde et rechargement des fonctions
FUNCTION vous permet de créer ou d'afficher desfonctions définies par l'utilisateur variable qui peuvent être utilisées partout où desfonctions variables peuvent être utilisées . Les fonctions définies par l'utilisateur sont de puissantes alternatives aux sous-programmes.
Si vous invoquez la commande FUNCTION sans paramètres, elle affichera la liste des fonctions en cours (la liste des fonctions locales si vous avez défini des fonctions locales dans TCMD.INI ou dans la ligne de commande de démarrage de TCC; sinon, la liste des fonctions globales):
function
Si vous incluez un nom de remplacement, qui peut inclure des caractères de remplacement (* ou ?), sans signe égal et sans définition, FUNCTION affichera les valeurs actuelles, le cas échéant, de toutes les fonctions correspondant au nom de remplacement, par ex :
function *dx*
affichera toutes les fonctions dont le nom contient dx.
Vous pouvez utiliser l' option /P pour contrôler le défilement de l'écran lors de l'affichage des fonctions.
Si vous incluez le signe égal et la définition, FUNCTION créera ou mettra à jour la fonction à laquelle le nom fait référence . Toute définition antérieure associée au nom est supprimée . Au lieu du signe =, vous pouvez utiliser un ou plusieurs espaces ou caractères de tabulation pour séparer le nom et la définition.
Unefois qu'une fonction est définie, la définition peut être modifiée à l'aide d'ESET /F.
Une fonction peut éventuellement utiliser des références à des paramètres numérotés de %0 à %511, qui seront remplacés par la valeur du paramètre correspondant lorsque la fonction sera appelée. %0 fait référence au nom de la fonction, %1 au premier paramètre, etc. Par exemple, la fonction
function leftmost=`%@left[1,%1]`
renverra le caractère le plus à gauche de son paramètre, par exemple%@leftmost[xyz] renverra x.
Le paramètre %n$ a une signification particulière. TCC Si n n 'est pas spécifié, sa valeur par défaut est 1, de sorte que %$ signifie "tous les arguments passés à la fonction ".
Leparamètre %-n$ signifie "les arguments du paramètre 1 à n - 1".
La référence à la variable spéciale %# s 'étend au nombre deparamètres passés à la fonction.
Une définition de fonction ne doit faire référence à aucun paramètre. Par exemple :
function tomorrow=`%@makedate[%@inc[%@date[%_date]]]`
pourrait être simplement invoquée sous la forme %@tomorrow[].
Pour utiliser le nom de la fonction , vous l'invoquez sous la forme %@nom[paramètres], où vous devez spécifier suffisamment de paramètres pour attribuer une valeur au paramètre le plus élevé référencé dans la définition de la fonction. Il peut y avoir plus de paramètres, qui seront ignorés silencieusement.
La rubrique Couleurs, noms de couleurs et codes présente un exemple simple d'utilisation d'une fonction dans un fichier batch.
Laméthode normale consiste à utiliser la commande UNFUNCTION. Cependant, il est également possible de supprimer une fonction en la redéfinissant sans définition, par exemple, la commande
function fs=
supprime la fonction fs.
Lesfonctions peuvent être stockées dans des listeslocales et/ou globales.
Dans le cas d'une liste de fonctions locale, toute modification apportée aux fonctions n'affecte que la copie actuelle de TCC. Elles ne seront pas visibles dans d'autres shells ou d'autres sessions.
Avec une liste de fonctions globale, toutes les copies de TCC partageront la même liste de fonctions, et toute modification apportée aux fonctions d'une copie affectera toutes les autres copies. C'est l'option par défaut dans TCC.
Vous pouvez contrôler le type de liste de fonctions à utiliser avec les options /GL et /LL dans les options de configuration FUNCTION, Local Functions et Global Functions, avec les options /L et /LF de la commande START et avec les options de démarrage /L et /LF .
Si vous ne spécifiez pas /GL ou /LL, TCC cherchera d'abord les fonctions dans la liste locale. S'il n'y a pas de liste locale ou si la fonction n'est pas trouvée, TCC cherchera dans la liste globale (si elle existe).
Il n'existe pas de règle fixe pour déterminer s'il convient d'utiliser une liste de fonctions locale ou globale. En fonction de votre style de travail, vous pouvez trouver plus pratique d'utiliser un seul type de liste, ou un mélange de types dans différentes sessions ou shells. Nous vous recommandons de commencer par l'approche par défaut, puis de la modifier si vous rencontrez une situation dans laquelle l'approche par défaut n'est pas pratique.
Lorsque vous démarrez une deuxième copie de TCC qui utilise une liste de fonctions locale, elle hérite d'une copie des fonctions du shell précédent. Cependant, toute modification apportée aux fonctions dans le second shell n'affectera que ce shell. Si vous souhaitez que les modifications apportées dans le second shell affectent le shell précédent, utilisez une liste de fonctions globale dans les deux shells.
Sauvegarde et rechargement des fonctions
Vous pouvez enregistrervos fonctions dans un fichier (par exemple ,FUNCTIONS.LST) de cette manière :
function > function.lst
Vous pouvez ensuite recharger toutes les définitions de fonctions dans le fichier la prochaine fois que vous démarrez avec la commande :
function /r function.lst
C'est beaucoup plus rapide que de définir chaque fonction individuellement dans un fichier batch. Si vous conservez vos définitions de fonctions dans un fichier distinct que vous chargez au démarrage de l'ordinateur, vous pouvez les modifier à l'aide d'un logiciel de traitement de texte. TCC vous pouvez les éditer avec un éditeur de texte, recharger le fichier édité avec FUNCTION /R, et savoir que la même liste de fonctions sera chargée au prochain démarrage de TCC.
Lorsque vous définissez des fonctions dans un fichier qui sera traité par la commande FUNCTION /R, vous n'avez pas besoin de guillemets autour de la définition, même si des guillemets seraient normalement nécessaires pour définir la même fonction à la ligne de commande ou dans un fichier batch.
Lorsque vous définissez une fonction en ligne de commande (c'est-à-dire sans utiliser l' option /R ), les variables et les fonctions qui ne sont pas protégées par des guillemets ou des signes % doublés sont immédiatement évaluées et le résultat fait partie de la définition de la fonction.
Les erreurs de syntaxe dans une définition de fonction ne sont pas détectées tant qu'elle n'est pas utilisée.
Options :
nom=définition
où nom est le nom de la fonction et définition spécifie comment déterminer sa valeur. Vous pouvez utiliser le signe égal = ou des espaces pour séparer le nom et la définition. Les guillemets arrière ne sont pas nécessaires.
Vous pouvezajouter des commentaires au fichier en commençant chaque ligne de commentaire par deux points :.
Vous pouvez charger plusieurs fichiers avec une seule commande FUNCTION /R en plaçant les noms sur la ligne de commande, séparés par des espaces :
function /r func1.lst func2.lst
Lesdéfinitions de FUNCTION /R peuvent s'étendre sur plusieurs lignes du fichier si chaque ligne, à l'exception de la dernière, est terminée par un caractère d'échappement.
S'il n'y a pas de paramètre de nom de fichier et que l'entrée est redirigée, FUNCTION /R lira à partir de stdin.