Lors de l'automatisation de tâches dans SAS© Viya™, il est courant d'utiliser des macros pour configurer des sources de données. Un cas classique consiste à boucler sur une liste de domaines d'authentification (par exemple pour Oracle) afin de créer dynamiquement des CASLIBs.
Cependant, une difficulté survient souvent lorsque l'on doit exécuter ce code plusieurs fois : la gestion des doublons.
Imaginez un scénario où votre macro parcourt une liste pour créer des connexions.
Première exécution : Tout fonctionne parfaitement. Les CASLIBs sont créés.
Seconde exécution : Le système renvoie une erreur fatale car les CASLIBs existent déjà (ERROR: Duplicate Caslib).
La réaction naturelle est d'ajouter une instruction pour supprimer (DROP) la bibliothèque avant de la recréer. Mais cela crée un nouveau problème : lors de la toute première exécution, ou si la session est neuve, la bibliothèque n'existe pas encore. Résultat ? Une erreur dans le journal (ERROR: The caslib ... does not exist).
Bien que l'on puisse ignorer cette erreur, elle pollue le journal (log) et peut masquer de vrais problèmes. L'objectif est d'avoir un code "propre" qui s'exécute sans erreur, quel que soit l'état initial.
La méthode la plus robuste pour contourner ce problème est d'utiliser la fonction CLIBEXIST.
Cette fonction permet de vérifier l'existence d'une CASLIB dans la session actuelle avant de tenter une action. Si la bibliothèque existe, on la supprime pour la recréer proprement. Si elle n'existe pas, on passe directement à la création.
Implémentation du code
Voici comment intégrer cette logique dans votre boucle macro. L'astuce consiste à envelopper l'instruction DROP dans une condition %IF qui appelle CLIBEXIST.
Pourquoi c'est important ?
L'utilisation de CLIBEXIST rend votre code idempotent. Cela signifie que vous pouvez l'exécuter une fois ou cent fois, le résultat final sera le même (les bibliothèques sont configurées) et, surtout, votre journal d'exécution restera vert, sans messages d'erreur rouges inquiétants.
C'est une petite modification qui améliore grandement la qualité et la maintenabilité de vos programmes SAS© Viya™.