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
![Définitions et expansions de macros Définitions et expansions de macros](https://www.itpro.fr/wp-content/uploads/2015/07/d15c961a4e42f1f0e8920130d3d7e741.jpg)
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
![Reporting Microsoft 365 & Exchange](https://www.itpro.fr/wp-content/uploads/2023/06/Promodag-Reports-pour-Microsoft-Exchange-Solution-de-reporting-detaille-de-lutilisation-de-Microsoft-Exchange-2023-1.jpg)
Reporting Microsoft 365 & Exchange
Comment bénéficier d’une vision unifiée de vos messageries, protéger vos données sensibles, vous conformer aisément aux contraintes réglementaires et réduire votre empreinte carbone ? Testez la solution de reporting complet de l’utilisation de Microsoft 365 et Exchange en mode Cloud ou on-premise.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Guide des certifications Microsoft
- Transition vers le Cloud : l’approche stratégique pour répondre aux exigences de cybersécurité NIS 2
- Vers une meilleure qualité de données : l’IA vient en renfort
- Stimuler l’innovation durable grâce à la transformation numérique et aux principes ESG
- Retour au bureau avec Copilot M365
![Revue Smart DSI](https://www.itpro.fr/wp-content/uploads/2024/07/SMART-DSI-Numero-34-Juin-2024.jpg)