Bonjour à tous,
J'ai défini une macro qui compte simplement le nombre de valeurs dans une liste. Je voudrais ensuite utiliser ce nombre dans une autre macro. Explications :
Je voudrais ensuite utiliser cette macro dans dans une autre macro
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 /*Cette macro compte simplement le nombre d'éléments dans liste*/ %macro nb_elements(liste); %let i=1; %do %while(%length(%scan(&liste,&i))NE 0); %let i=%eval(&i+1); %end; %let nb=%eval(&i-1); %mend nb_elements;
J'ai fait exprès de mettre le %put pour vérifier que le nombre d'éléments a été bien récupéré.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 %macro parangons(table,ident,listevar,classe); %let n=%nb_elements(&listevar); %put &n; proc means data=&table mean std; var &listevar; class &classe; output out=moyennes mean=m1-m&n std=sigma1-sigma&n; run; %mend parangons;
Mais quand j’exécute la macro parangons :
Mais j'ai une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 %parangons(matable, cle, v1 v2 v3 v4 v5 v6 v7 v8, cluster);
Donc il ne me reconnait pas le m. Pourtant dans la première macro je récupère bien le nombre. Je n'arrive pas à comprendre pourquoi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ERREUR: m n'a pas un suffixe numérique. ERREUR: sigma n'a pas un suffixe numérique.
Merci de votre aide.
Partager