Bonjour,
Je cherche à créer un programme qui affiche certaines observations d'une table.
Tout se passe bien si je le fait directement, comme dans le programme suivant :
Si je construit la macro ci-dessous, qui vise à faire la même chose, j'obtiens une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 proc print data=sashelp.class; where Name in ('Jane' 'Janet'); run;
L'erreur est ERROR: Erreur de syntaxe détectée lors de l'analyse de la clause WHERE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 %macro Essai(Noms,Variable); %local ListeNoms; %let i=0; %do %until (&Nom eq); %let i=%eval(&i+1); %let Nom=%scan(&Noms, &i); %if &Nom eq %then %goto FinBoucle; %else %let ListeNoms=&ListeNoms %bquote('&Nom'); %end; %FinBoucle : proc print data=sashelp.class; where &Variable in (&ListeNoms); run; %mend Essai; %Essai(Jane Janet, Name);
l'option mprint permet de voir qu'en effet, le programme généré est identique au programme exemple.
Est-ce que quelqu'un comprend ce qui se passe ?
Merci d'avance
Partager