proc cas;
/* 1. Définition propre du code C dans une variable CASL 'monCodeC' */
/* Note: J'ai corrigé la fonction mystring pour qu'elle soit valide */
source monCodeC;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* Fonction arithmétique simple */
int myadd(int a, int b) {
return a + b;
}
/* Fonction de concaténation (corrigée pour l'exemple) */
/* ATTENTION : En production, préférez passer le buffer de résultat en argument
plutôt que de faire un malloc pour éviter les fuites de mémoire. */
void myconcat(char* result, char* str, int num) {
sprintf(result, "%s_%d", str, num);
}
endsource;
/* 2. Chargement de l'action set */
loadactionset "fcmpact";
/* 3. Appel de l'action avec le paramètre OBLIGATOIRE routineCode */
fcmpact.addPrototypes /
/* C'est ici que l'injection se fait via la variable */
routineCode = { monCodeC }
/* Paramètres contextuels nécessaires */
package = "Pkg_Demo"
saveTable = TRUE
funcTable = {name="Table_Prototypes", replace=TRUE};
print "Le code source a été transmis et compilé avec succès.";
run;
quit;
fcmpact