Bonjour Huître.
Déjà, les noms de tes 2 dernières macro-variables sont incorrects : ne sont autorisés dans les noms que des lettres, des chiffres sauf en 1er et le underscore _.
A l'exécution de
1 2 3 4
| %let a=IF a;
%let b=IF b;
%let a+b=IF a AND b;
%let a*b=IF a OR b; |
SAS répond
%let a+b=IF a AND b;
NOTE: A missing equal sign has been inserted after the variable name A.
%let a*b=IF a OR b;
NOTE: A missing equal sign has been inserted after the variable name A.
Je ne vois pas bien l'intérêt de ces 4 macro-variables, sauf à titre d'exercice. Dans ce cas il faudrait que tu modifies dans ton étape Data
1 2 3 4 5
| DATA &tab3;
merge &tab1(IN=a) &tab2(IN=b);
BY &var;
&&&condition;
run; |
car vue la manière dont tu codes, trois & sont nécessaires puisque CONDITION ne contient pas du code SAS mais le nom d'une autre macro-variable.
Sinon sans rien changer de ton code de macro-programme, tu pourrais bien plus simplement appeler le macro-programme avec
%fusion(base.clients_fin,base.fichepat,base.test2,ID_PERSONNE,IF a OR b);
et ça devrait fonctionner. (pas testé)
Bon courage dans ton apprentissage du macro-langage.
Olivier
Partager