> Tech > Utiliser m4 avec SPL

Utiliser m4 avec SPL

Tech - Par iTPro - Publié le 24 juin 2010
email

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 gratuitement cette ressource

Les 7 étapes d’un projet de dématérialisation RH

Les 7 étapes d’un projet de dématérialisation RH

Dans ce livre blanc, nous vous donnons les clés pour concevoir votre projet de dématérialisation RH. Vous découvrirez chacune des étapes qui vous permettront d’apporter de nouveaux services aux collaborateurs, de vous adapter aux nouvelles pratiques et de renforcer la marque employeur.

Tech - Par iTPro - Publié le 24 juin 2010