addPrototypes
Description
L'action `addPrototypes` de l'action setGemini said
Groupe logique de fonctionnalités CAS (Cloud Analytic Services) contenant des actions spécifiques (statistiques, data mining, etc.) pour traiter les données en mémoire de manière optimisée. `fcmpact` permet d'ajouter des définitions de prototypes (les fameux PROTOPROTO est une interface de programmation permettant d'appeler des fonctions C externes à partir de SAS. Elle facilite l'intégration de bibliothèques tierces pour étendre les capacités de traitement. de la procédure 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.) et de les sauvegarder judicieusement dans une table CAS. C'est l'outil idéal pour déclarer des fonctions externes (comme des fonctions C/C++) et les rendre utilisables directement dans vos programmes SAS sur Viya. Ne vous inquiétez pas, ça a l'air complexe comme ça, mais c'est magique une fois en place ! Les pros du code natif vont adorer. N'oubliez pas de consulter la doc officielle pour plus de détails.
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| bridgeCatchSignals | Indique si le fichier bridge doit contenir le code nécessaire pour installer et gérer les signaux système (par défaut à FALSE). |
| bridgeFile | Spécifie le chemin d'accès au module source du fichier bridge PROTO. |
| encode | Permet d'encoder (chiffrer) les définitions de prototypes dans la table de fonctions sauvegardée, histoire de cacher vos secrets de fabrication (Alias : encrypt, hide). |
| funcTable | Paramètre obligatoire ! Spécifie la table de sortie CAS (casouttable) dans laquelle les définitions PROTO seront écrites. |
| library | Spécifie le nom d'une bibliothèque FCMP existante à charger. |
| package | Spécifie le nom du package FCMP utilisé pour stocker les définitions PROTO. |
| routineCode | Paramètre obligatoire ! Le code source brut de la définition PROTO à enregistrer dans la table (Alias : code). |
| saveTable | Indique si la table FCMP générée doit être sauvegardée sur disque (par défaut à FALSE). |
| stdcall | Indique si les fonctions doivent être appelées en utilisant la convention __stdcall (spécifique aux PC Windows). |
Préparation des données
Préparation de l'environnement
Création d'une session CAS et définition des bibliothèques nécessaires avant de lancer l'intégration de nos fonctions externes.
| 1 | cas mycas sessopts=(caslib='casuser'); |
| 2 | LIBNAME casuser cas caslib='casuser'; |
Exemples d'utilisation
Ajout d'un prototype simple
Cet exemple montre comment addPrototypes compile un module C externe via routineCode. La table CAS my_protos générée est persistée (saveTable=TRUE) pour exécuter ce code distribué in-memory.
| 1 | PROC CAS; |
| 2 | fcmpact.addPrototypes / |
| 3 | routineCode={"double my_multiplier(double x);", "externc my_multiplier;", "double my_multiplier(double x) { return x * 2.0; }"} |
| 4 | funcTable={name="my_protos", caslib="casuser", replace=TRUE} |
| 5 | package="pkg1" |
| 6 | saveTable=TRUE; |
| 7 | QUIT; |
Résultat Attendu :
Prototypage avancé avec chiffrement et promotion
Cet exemple pour l'action CAS addPrototypes implémente l'obfuscation via encode et la persistance globale (promote), sécurisant ainsi vos fonctions FCMP compilées en environnement multi-utilisateurs.
| 1 | PROC CAS; |
| 2 | fcmpact.addPrototypes / |
| 3 | routineCode={"double secure_calc(double a, double b);", "externc secure_calc;", "double secure_calc(double a, double b) { return a + b; }"} |
| 4 | funcTable={name="secure_protos", caslib="casuser", promote=TRUE} |
| 5 | package="secpkg" |
| 6 | library="seclib" |
| 7 | encode=TRUE |
| 8 | saveTable=TRUE |
| 9 | bridgeCatchSignals=TRUE; |
| 10 | QUIT; |