Une macro est une variable pour un texte dynamique. Si par exemple vous voulez insérer la date du jour dans votre texte, vous pouvez soit changer votre texte chaque jour ou utiliser une macro de date qui remplacera la macro de date par la date du jour. Ce comportement rend la macro très puissante dans les outils où vous avez besoin de texte dynamique.
Un texte de macro peut contenir à la fois des balises de macro et du texte ordinaire. Il peut contenir, une ou plusieurs balises macro, ou aucune.
Un champ de macro ressemble à un champ de texte normal. La seule différence est que ce champ de macro a un fond jaune tandis que les champs de texte ont un fond blanc.
Une balise de macro commence et se termine par un signe de pourcentage (%). Le nom de la macro se trouve immédiatement après le premier signe de pourcentage.
Exemple d’une macro simple
La macro du chemin de fichier d’un fichier donné se nomme 'FILE_PATH'. La macro s’écrit
L’exemple ci-dessus contient une macro « simple ». Les macros simples ne contiennent qu'un nom. Il existe cependant des macros « complexes » qui ont besoin d’informations supplémentaires pour être manipulées correctement. Beaucoup de macros ont à la fois une version simple et au moins une version complexe.
Les macros complexes sont écrites comme les macros simples avec une partie complémentaire où sont écrits les paramètres. Les paramètres sont insérés entre crochets ([ et ]) immédiatement après le nom de la macro.
Exemple d’une macro complexe
La macro pour la date du jour se nomme « D ».
Cette macro a une forme simple %D%
Il existe une alternative étendue à la macro de date dans laquelle le format de la date peut être saisi (plus de détails sur les formats se trouvent dans les spécifications de la macro), p. ex.
Les macros complexes peuvent avoir un ou plusieurs paramètres. Dans l’exemple ci-dessus, la macro de date utilise un seul paramètre dans la forme complexe pour indiquer dans quel format la date doit s’afficher. Si plusieurs paramètres sont utilisés, ils sont séparés par des virgules (,).
Macros contenant plus d’un paramètre
La macro de date a une version dont le résultat peut être la date du jour plus ou moins un certain nombre de jours. Si nous voulons ajouter un jour et afficher le résultat sous la fforme aaaa-mm-jj, la macro sera :
%D[+1,yyyy-MM-dd]%
Une macro est composée de quatre caractères spéciaux:
Les paramètres d’une macro peuvent s’intégrer avec d’autres macros qui, à leur tour, peuvent contenir d’autres macros, etc. Les paramètres d’une macro ne peuvent pas contenir l’un des quatre caractères spéciaux sauf si une nouvelle macro est spécifiée. Aucun des quatre caractères spéciaux ne peut être utilisé directement comme texte simple dans une macro. Les remplacements suivants peuvent être utilisés pour obtenir ces caractères en sortie :
Notez que cette restriction sur les quatre caractères n’est nécessaire que lorsque du texte statique est écrit dans la liste des paramètres d'une macro.
Caractères spéciaux dans la liste des paramètres de la macro
Ainsi, la macro LENGTH retourne le nombre de caractères du paramètre, p.ex. %LENGTH[le texte]% retournera « 8 » (les espaces sont comptés). Si le texte qui est dans le paramètre contient l’un des caractères spéciaux, cela peut provoquer une erreur, p. ex. %LENGTH[100%]%.
Dans ce cas, le signe % dans le texte pourrait être considéré comme un début de macro et créer une erreur. Pour pouvoir compter les caractères dans le texte « 100% », nous devons terminer avec un signe de pourcentage. La macro %LENGTH[100%%]% retournera « 4 ».
Alternative à la terminaison par %
Il existe une macro spéciale appelée CHAR qui retournera un caractère basé sur une valeur UTF. Cette macro peut être utilisée pour retourner un caractère spécial désiré. Si le texte « 100% » est désiré, le texte macro pourrait être « 100%CHAR[37]% ».
Notez que cette restriction de ne pas utiliser les caractères spéciaux dans la liste des paramètres de la macro ne vaut que lorsque les caractères sont utilisés directement. Si une macro utilisée peut résulter en l’un des caractères spéciaux, cela ne sera pas une erreur.
Les macros retournant des caractères spéciaux sont correctes
En revoyant les exemples ci-dessus, nous voulons avoir une macro qui nous donne la longueur du texte « 100% ». Nous utiliserons la macro CHAR pour représenter le signe de pourcentage unique (nous aurions pu de même utiliser « %% »). La macro finale (qui est correcte et ne déclenchera pas d’erreur) sera :
%LENGTH[100%CHAR[37]%]%
Notez que cela ne sera pas une erreur alors que vous pourriez avoir suspecté que la macro CHAR va résulter en un seul pourcentage et cela aurait alors créé une erreur lorsque la macro LENGTH voit le signe de pourcentage unique. Les macros sont analysées d’une façon telle que cette erreur ne se produise jamais.