m4 est un puissant préprocesseur utilisable avec une variété de langages, dont SPL et HTML. J’ai réécrit le SP GetRank que j’ai présenté dans l’article en deux parties « Inside V5R2 SPL Error Handling » pour illustrer la manière d’utiliser la macro en programmation SPL. La version originale de la
Utiliser m4 avec SPL
SP (procédure stockée) démontre une approche élaborée mais quelque peu complexe du traitement des exceptions SPL. Le volume du code de traitement des exceptions rend aussi cette technique difficile à appliquer sur un grand nombre de SP.
La version originale de la SP Get- Rank contient environ 360 lignes de code source. J’ai réduit de moitié le code source pour GetRank et amélioré sa lisibilité en définissant et en utilisant un jeu de macros m4. De plus, je dispose maintenant d’un jeu de macros pour simplifier l’écriture d’autres SP et pour les rendre plus homogènes et plus faciles à maintenir.
Ici, j’illustre le mode d’utilisation de m4 pour une programmation SP plus complexe (l’exemple complet peut être téléchargé www.itpro.fr Club Abonnés). La figure 4A montre le code source d’entrée chargé de définir les avertissements et les exceptions SQL traités ou signalés par cette SP. Les macros SqlDclWarning et SqlDclException prennent trois arguments : un nom court pour la condition, une valeur d’état SQL associée à la condition, et un texte de message associé à la condition.
Le code généré en figure 4B inclut des commentaires d’en-tête qui documentent les avertissements et les exceptions que cette SP pourrait retourner à son appelant. En utilisant les diversions m4, j’ai codé la macro SqlProcBodyBegin (que l’on rencontrera plus tard dans l’entrée) pour générer des déclarations pour les conditions et variables SPL qui servent de mnémoniques au texte du message. L’utilisation de ces macros est simple et elle produit une sortie homogène en différents points du code SP.
Un dernier exemple illustre l’utilisation de pushdef et popdef pour maintenir une pile de labels de blocs pour les blocs SPL imbriqués. La figure 5A utilise la macro SqlBlockBegin avec un seul argument qui fournit le label du bloc. Cette macro génère un commentaire séparateur et un délimiteur de bloc Begin libellé. Dans la macro, la valeur du paramètre est poussée sur une pile. La macro SqlBlockEnd fait surgir la pile et génère un délimiteur End block libellé. Et voilà des labels en correspondance parfaite. Cette petite astuce évite des délimiteurs begin-end discordants dans le code SPL.
Téléchargez cette ressource
Microsoft 365 Tenant Resilience
Face aux failles de résilience des tenants M365 (configurations, privilèges, sauvegarde). Découvrez 5 piliers pour durcir, segmenter et surveiller vos environnements afin de limiter l’impact des attaques. Prioriser vos chantiers cyber et améliorer la résilience de vos tenants Microsoft 365.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Les marchés publics peuvent-ils encore faire émerger des champions numériques français ?
- ESET accélère en France et mise sur l’IA face à la montée des cybermenaces
- Souveraineté des données : cessons de traiter le symptôme, attaquons-nous aux causes
- Asys accélère sur la planification intelligente avec l’acquisition de m-work
Articles les + lus
Computex 2026 : 5 signaux forts à retenir
La chaîne d’approvisionnement, point de rupture récurent du SI
Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
Analyse Patch Tuesday Mai 2026
À la une de la chaîne Tech
- Computex 2026 : 5 signaux forts à retenir
- La chaîne d’approvisionnement, point de rupture récurent du SI
- Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
- Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
- Analyse Patch Tuesday Mai 2026
