?>Array ( [lang] => fr [id] => 176 ) Cas Volumétrie/Performance : Création et extension d'une librairie de fonctions persistante - WeAreCAS
fcmpact addRoutines

Cas Volumétrie/Performance : Création et extension d'une librairie de fonctions persistante

Scénario de test & Cas d'usage

Contexte Métier

Une équipe d'analystes a besoin d'une librairie de fonctions utilitaires (transformations de chaînes, calculs mathématiques) disponible pour toutes leurs sessions CAS. L'objectif est de créer une première version de la librairie, de la sauvegarder physiquement, puis de l'enrichir dans une session ultérieure sans écraser les fonctions existantes.
Préparation des Données

Aucune donnée initiale n'est requise, le test se concentre sur la gestion des tables de fonctions.

Copié !
1/* Pas de données nécessaires pour ce scénario */

Étapes de réalisation

1
Création d'une librairie de fonctions initiale (`util_lib_v1`) avec deux fonctions et sauvegarde de la table en tant que fichier SASHDAT.
Copié !
1PROC CAS;
2 fcmpact.addRoutines /
3 routineCode = {
4 'function normalize_str(s$) $; return(upcase(compbl(s))); endsub;',
5 'function is_positive(n); return(n > 0); endsub;'
6 },
7 package = 'util_lib_v1',
8 funcTable = {name='lib_utilitaires', caslib='CASUSER', replace=true},
9 saveTable = true;
10QUIT;
2
Simulation d'une nouvelle session. Ajout d'une nouvelle fonction à la librairie existante en utilisant `appendTable=true`.
Copié !
1PROC CAS;
2 fcmpact.addRoutines /
3 routineCode = {
4 'function safe_divide(numerator, denominator);
5 if (denominator = 0) then return(.);
6 else return(numerator / denominator);
7 endsub;'
8 },
9 package = 'util_lib_v1',
10 funcTable = {name='lib_utilitaires', caslib='CASUSER'},
11 appendTable = true,
12 saveTable = true; /* On sauvegarde à nouveau la table enrichie */
13QUIT;
3
Vérification que les trois fonctions (les deux anciennes et la nouvelle) sont bien présentes et utilisables.
Copié !
1PROC CAS;
2 datastep.runCode /
3 code = 'data CASUSER.VERIF_LIB;
4 str_test = normalize_str(" test string ");
5 pos_test = is_positive(-5);
6 div_test = safe_divide(10, 0);
7 output;
8 run;';
9QUIT;

Résultat Attendu


L'action de l'étape 2 s'exécute avec succès, en ajoutant la nouvelle fonction à la table `lib_utilitaires` sans supprimer les anciennes. La table `VERIF_LIB` est créée et contient une ligne avec les résultats des trois fonctions : `str_test`='TEST STRING', `pos_test`=0 (faux), et `div_test`= . (valeur manquante), prouvant que l'ancienne et la nouvelle fonction coexistent et fonctionnent.