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

Étude CIO Indicator : la collaboration entre DSI et DAF
Les DSI, acteurs de la transformation digitale ! Découvrez, dans ce rapport basé sur une enquête internationale auprès de 1 060 directeurs financiers et IT, pourquoi l'alignement DSI - DAF est essentiel au succès de la transformation digitale de la Finance.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Industrie 4.0 : Comment l’analyse de données enrichie par les capteurs et augmentée par l’IA optimise la production automobile
- Vidéo Protection des données avec Purview !
- Le pari de la FemTech : améliorer la santé des femmes
- Qui sont les super utilisateurs de l’IA générative ?
- 7 façons de se préparer aux ransomwares à double extorsion
