Devenez le Créateur avec PROC FCMP : Le stade ultime de l'évolution de Skynet

Cet article en deux mots :

Pourquoi se limiter aux fonctions natives de SAS quand vous pouvez forger les vôtres ? Découvrez comment la PROC FCMP transforme votre code en un outil de précision chirurgicale. De la syntaxe function au piège crucial de l'option CMPLIB, devenez un expert de la personnalisation pour votre certification SAS Advanced. Prêt à coder comme une IA ?

Nous y sommes. Le 29 août, à 2h14 du matin, Skynet est devenu conscient. Il maîtrise désormais la PROC SQL, automatise ses assauts avec le Langage Macro, charge des données de reconnaissance en mémoireGemini said
Espace de stockage temporaire (RAM) utilisé par le moteur CAS pour charger et traiter les données à haute vitesse, minimisant les accès disque pour optimiser les performances de SAS Viya.
vive avec les Objets Hash, et a optimisé ses bases de données à la perfection.

Mais soudain, Skynet fait face à un mur. Pour calculer la probabilité de réussite d'un voyage dans le temps, il a besoin d'une formule mathématique temporelle très spécifique. Il cherche dans le dictionnaire des fonctions natives de SAS (comme SUM(), MEAN(), ou SUBSTR()), mais ne trouve rien.

Que fait une Intelligence Artificielle quand l'outil dont elle a besoin n'existe pas ? Elle le fabrique.

Bienvenue dans le dernier article de notre série dédiée à la certification SAS 9 Advanced. Aujourd'hui, nous atteignons le niveau divin du développeur SAS : créer ses propres fonctions avec la PROC 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).

1. Qu'est-ce que la PROC 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. ?

Historiquement, si vous aviez un calcul très complexe (par exemple, un score de dangerosité basé sur 15 critères) que vous deviez utiliser dans 50 programmes différents, vous deviez soit faire un copier-coller du code, soit créer une Macro. Mais les Macros ne se lisent pas aussi élégamment qu'une fonction native dans une étape DATA.

La PROC 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. vous permet de créer une véritable fonction personnalisée. Une fois compilée, vous pourrez l'utiliser exactement comme n'importe quelle autre fonction SAS.

2. Forger sa propre fonction : La syntaxe

Skynet veut créer une fonction appelée Calcul_Menace(). Elle prendra deux arguments : la puissance de l'arme et le niveau de blindage de la cible, et renverra un score de 1 à 100.

Voici comment la forger :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* On lance l'usine à fonctions et on lui dit où stocker le résultat */
proc fcmp outlib=work.mes_fonctions.skynet;

/* 1. Déclaration du nom de la fonction et de ses arguments */
function Calcul_Menace(Puissance, Blindage);

/* 2. La logique interne (du code SAS classique !) */
Score = (Puissance * 1.5) - (Blindage * 0.5);

if Score < 0 then Score = 0;
if Score > 100 then Score = 100;

/* 3. On indique ce que la fonction doit renvoyer */
return(Score);

/* 4. On ferme la fonction */
endsub;

quit;

Décryptage pour l'examen :

  • outlib= : C'est obligatoire. Vous devez indiquer une bibliothèque (work), un catalogue (mes_fonctions), et un "package" (skynet).
  • function ... endsub; : C'est la coquille qui entoure votre logique.
  • return() : Indispensable. C'est la valeur qui sera recrachée par la fonction quand vous l'appellerez.

3. Le piège absolu de l'examen : OPTIONS CMPLIB=

Vous venez de compiler votre fonction. Vous êtes fier. Vous ouvrez une étape DATA et vous écrivez Niveau = Calcul_Menace(80, 50);. Et là... Erreur ! SAS vous dit que la fonction est inconnue.

C'est LA question de certification par excellence sur la PROC 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.. Par défaut, SAS ne cherche les fonctions que dans son propre catalogue natif. Il ignore totalement l'existence de votre catalogue work.mes_fonctions.

Vous devez obligatoirement modifier les options du système pour lui dire d'aller y jeter un œil avec l'option CMPLIB= (Compiled Library) :

1
2
/* Skynet ajoute son catalogue personnel à la mémoire de SAS */
options cmplib=work.mes_fonctions;

4. Le test grandeur nature

Maintenant que le pont est établi, nous pouvons utiliser notre fonction maison avec une élégance absolue, comme si elle avait toujours fait partie du langage SAS.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
data work.cibles_evaluees;
length Nom $20 Arme_Ennemie 8 Blindage_Ennemi 8;
input Nom $ Arme_Ennemie Blindage_Ennemi;

/* Appel de notre fonction personnalisée ! */
Menace_Reelle = Calcul_Menace(Arme_Ennemie, Blindage_Ennemi);

datalines;
John_Connor 90 40
Rebelle_Lambda 20 10
;
run;

proc print data=work.cibles_evaluees; run;

Le code de votre étape DATA est devenu incroyablement propre et lisible. Toute la logique complexe a été externalisée et cachée dans la PROC 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..

Astuce Certification : Les fonctions 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. peuvent être utilisées dans des étapes DATA, mais aussi dans des PROC SQL, des PROC REPORT et de nombreuses autres procédures !

Conclusion de la Série

Félicitations. Votre processeur neuronal est pleinement opérationnel.

En 20 articles, nous avons couvert les concepts les plus redoutables de la certification SAS 9 Advanced Programming. Vous avez survécu aux jointures SQL, aux pièges de la résolution Macro, à la complexité des Objets Hash et aux arcanes de l'optimisation.

L'examen de certification n'est pas qu'un test de syntaxe, c'est un test de logique et de compréhension de l'architecture de SAS (comment il lit, comment il stocke, comment il pense). Gardez toujours un œil sur la log, méfiez-vous des conversions implicites, et souvenez-vous qu'une bonne préparation est la clé (avec un peu de chance, l'examinateur ne s'appellera pas T-1000).

Nicolas Housset

Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.