Bonjour ,
Je suis débutante en langage de programmation MACRO sous SAS. J'essaye de créer une MACRO "modifnamevar" qui me permette de renommer les noms de variables d'une table en ajoutant un suffixe "_new". Etand donné que ma table contient plus de 100 variables, j'aimerais à partir d'une MACRO "getvars" récupérer la liste des noms de variables de ma table, et ensuite utiliser cette liste de noms dans la macro "modifnamevar". Le code ci-dessous qui me semble logique me donne un message d'erreur . D'avance merci pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 /*macro de récup de noms de variables d'une table*/ %macro getvars(table); %global vlist; proc sql; select name into :vlist separated by ' ' from dictionary.columns where memname = upcase("&table"); quit; %mend; /*execution de la macro*/ %getvars(faminc); /*MACRO QUI RENOMME LES NOMS DE VARIABLES EN FESANT APPEL A LA MACRO PRECEDANTE*/ %macro modifnamevar (oldvartable, suffix); %getvars(table=&oldvartable); %local vlist; /*vlist est dans la macro précédente*/ %let k=1; %let old = %scan(&vlist, &k); %do %while("&old" NE ""); rename &old = &old.&suffix; %let k = %eval(&k + 1); %let old = %scan(&vlist, &k); %end; %mend; /*TEST DE MA MACRO "modifnamevar" (me donne un message d'erreur)*/ data a ; set faminc; %modifnamevar(faminc, _new); run;
Partager