Une macro est un morceau de code avec un nom (les noms de macros m4 distinguent les majuscules/minuscules), des paramètres facultatifs, et une chaîne de texte associée qui constitue la définition de la macro. L’exemple suivant définit la macro SqlSaveState, qui n’a pas de paramètres, et une définition d’instruction d’assignation
Définitions et expansions de macros
SPL :
define(SqlSaveState, Set PrvStmtSqlState = SqlState)
Quand m4 rencontre la ligne d’entrée
SqlSaveState;
il remplace le nom de la macro par le texte de la définition pour produire la ligne de sortie
Set PrvStmtSqlState = SqlState;
On voit tout de suite que les macros simples offrent un « raccourci » pour des fragments de code fréquemment utilisés. Le texte de définition d’une macro peut être constitué de plusieurs lignes de code et il peut inclure d’autres macros, que nous verrons plus loin.
Les paramètres de macros permettent de réutiliser des morceaux de code qui varient légèrement selon l’usage. La macro suivante a un paramètre qui fournit le nom d’une variable SPL à tester :
define(SqlStateIsOk, ($1 = ‘00000’))
Quand m4 rencontre la ligne d’entrée
Is SqlStateIsOk(PrvStmtSqlState) Then
il remplace le nom de la macro et son argument par un texte étendu pour produire la ligne de sortie
If (PrvStmtState = ‘00000’) Then
Les macros de m4 peuvent avoir jusqu’à neuf paramètres, référencés dans le texte de remplacement de $1 à $9. m4 possède également plusieurs structures de genre paramètre intégrées, y compris $#, qui est remplacé par le nombre d’arguments fournis sur l’appel de macro. Vous pouvez traiter les paramètres facultatifs en testant $#.
Le texte de remplacement d’une macro peut contenir d’autres macros définies par l’utilisateur, intégrées, ce qui accroît grandement la puissance de m4, au prix, il est vrai, d’un peu plus de complexité.
La figure 1A montre les définitions de deux macros (les <<…>> sont des délimiteurs guillemets) : SqlApp Signal, qui s’étend en deux instructions SPL (Set et Signal) et SqlStd WarningWrapup, qui s’étend en une clause SPL When qui exécute conditionnellement le code défini dans la macro SqlAppSignal. Quand m4 rencontre l’entrée de la figure 1B, il produit la sortie de la figure 1C. Les appels de macros ne sont pas la même chose que les appels de procédures à l’exécution.
Lorsqu’il scrute le flux d’entrée, m4 recherche constamment des chaînes correspondant au nom d’une macro (ou de quelque structure intégrée). Dès que m4 rencontre une macro, il remplace le nom de celle-ci et toute éventuelle liste d’arguments par le texte de définition de la macro, allant jusqu’à remplacer les éventuelles références de paramètres $n par les chaînes correspondantes fournies comme arguments sur l’appel de macro. Lorsqu’il collecte les arguments d’une macro, m4 examine les chaînes d’arguments sans guillemets pour voir si elles contiennent des macros et, s’il en rencontre, il les étend immédiatement. Après il rescrute l’appel de macro.
Si d’autres macros sont rencontrées alors, le cycle se répète. Quand l’appel de macro ne contient plus de macros non étendues, la macro originale est étendue conformément à son texte de définition. Pour des macros simples, le résultat de leur imbrication est simple et direct. Mais sachez que certains résultats pourront sembler surprenants quand vous commencerez à travailler avec du traitement conditionnel, des chaînes entre guillemets et autres fonctions m4 (voir l’encadré « Les mystères des macros »).
Téléchargez cette ressource
Créer des agents dans Microsoft 365 Copilot
Insight vous guide dans l’utilisation de la nouvelle expérience de création d’agents dans Microsoft Copilot Studio, disponible dans Copilot Chat. Découvrez les étapes clés pour concevoir, configurer et déployer ces nouveaux agents et injecter la puissance de l’IA directement dans le flux de travail.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Infrastructures IT : 5 leviers concrets pour éviter les impasses technologiques
- Top 6 des priorités des DSI en 2026
- Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
- À l’aube de 2026, le SaaS entre dans une nouvelle phase
Articles les + lus
CES 2026 : l’IA physique et la robotique redéfinissent le futur
Les 3 prédictions 2026 pour Java
Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
Face à l’urgence écologique, l’IT doit faire sa révolution
D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
À la une de la chaîne Tech
- CES 2026 : l’IA physique et la robotique redéfinissent le futur
- Les 3 prédictions 2026 pour Java
- Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
- Face à l’urgence écologique, l’IT doit faire sa révolution
- D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
