fcmpact

addRoutines

##set_fcmpact

Description

L'action 'addRoutines' compile et ajoute des routines personnalisées (fonctions et sous-routines) FCMPProcédure de création de fonctions et sous-programmes personnalisés réutilisables. Elle permet d'étendre le langage SAS et de partager des logiques métier complexes entre différentes étapes DATA. (SAS Function Compiler) pour les stocker dans une table CAS. C'est l'outil parfait pour créer votre propre bibliothèque de fonctions métier et les exécuter massivement en parallèle sur tous les nœuds de votre cluster Viya. Parce que réécrire dix fois la même formule complexe, c'est fatiguant : autant la coder une bonne fois pour toutes ! Sources :

Syntaxe Officielle
fcmpact.addRoutines <result=results> <status=rc> /
appendTable=TRUE | FALSE,
funcTable={
caslib="string",
compress=TRUE | FALSE,
indexVars={"variable-name-1" <, "variable-name-2", ...>},
label="string",
lifetime=64-bit-integer,
maxMemSize=64-bit-integer,
memoryFormat="DVR" | "INHERIT" | "STANDARD",
name="table-name",
promote=TRUE | FALSE,
replace=TRUE | FALSE,
replication=integer,
tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE",
threadBlockSize=64-bit-integer,
timeStamp="string",
where={"string-1" <, "string-2", ...>}
},
library="string",
package="string",
* routineCode={"string-1" <, "string-2", ...>},
saveTable=TRUE | FALSE;

Paramètres Clés

Nom du paramètre Description
appendTable Indique s'il faut ajouter les nouvelles fonctions à une table FCMP existante (TRUE) ou l'écraser purement et simplement (FALSE). La valeur par défaut est FALSE.
funcTable Spécifie la table de sortie CAS (nom, caslib, paramètres de promotion, etc.) où la fonction FCMP compilée sera sauvegardée. C'est la nouvelle maison de votre code.
library Spécifie le nom d'une bibliothèque FCMP pré-existante à charger en amont.
package Définit le nom du package (une sorte de répertoire virtuel ou d'espace de noms interne) utilisé pour organiser et stocker ces fonctions FCMP spécifiques.
routineCode Paramètre obligatoire. Il s'agit du code source brut (sous forme de chaîne ou tableau de chaînes) de la routine FCMP. C'est ici que la magie opère !
saveTable Spécifie si la table FCMP générée en mémoire doit également être sauvegardée physiquement sur le disque pour survivre à la fin de votre session.

Préparation des données

Initialisation d'une session CAS

Démarrage d'une session CAS et assignation d'une librairie (casuser) pour accueillir notre future table de fonctions.

1cas mysess; LIBNAME casuser cas caslib="casuser";

Exemples d'utilisation

Création et stockage d'une fonction mathématique simple

Nous allons créer une fonction FCMP très simple qui calcule le carré d'un nombre, et la sauvegarder dans une table CAS nommée 'my_funcs'.

1PROC CAS; fcmpact.addRoutines / routineCode="function my_square(x); return(x**2); endsub;" funcTable={name="my_funcs", caslib="casuser"} package="math_pkg"; RUN; QUIT;
Résultat Attendu :
Une table CAS 'my_funcs' est créée dans la caslib 'casuser'. Elle contient la version compilée de la fonction 'my_square', rangée dans le package 'math_pkg'.
Ajout de multiples routines, promotion et sauvegarde physique

Cet exemple compile deux fonctions en même temps (un calcul de cube et une fonction texte), les ajoute (append) à la table précédente, promeut la table en mémoire globale, et l'écrit physiquement sur le disque pour ne jamais la perdre.

1PROC CAS; fcmpact.addRoutines / routineCode={"function my_cube(x); return(x**3); endsub;", "function my_greet(n $) $; return('Bonjour ' || n); endsub;"} funcTable={name="my_funcs", caslib="casuser", promote=TRUE} package="utils_pkg" appendTable=TRUE saveTable=TRUE; RUN; QUIT;
Résultat Attendu :
Les deux nouvelles fonctions sont ajoutées sans écraser la précédente. La table 'my_funcs' devient accessible à tous les utilisateurs (promote=TRUE) et un fichier '.sashdat' correspondant est sauvegardé sur le disque de la caslib.