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

Rapport Forrester sur les services de réponse aux incidents de cybersécurité
Dans ce rapport, basé sur 25 critères, Forrester Consulting passe au crible les 14 principaux fournisseurs de services de réponse aux incidents de cybersécurité du marché. Cette analyse complète permet aux professionnels de la sécurité et de la gestion des risques d’évaluer et de sélectionner les solutions les plus adaptées à leurs besoins.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Le World Cyber Ranking, 1er classement mondial de la cybersécurité des entreprises
- Comment le Quarter Plan permet d’aligner IT et Métiers pour délivrer
- Explosion des attaques d’ingénierie sociale en 2025
- SI sous pression : 3 signes que vos flux sont mal orientés
- Transformation numérique : les entreprises françaises changent de méthode de gestion de projet en cours de route
