Re-Bonjour
Voici ce que je voudrais faire:
Parcourir une table et pour chaque ligne, appeler ma macro.
J'ai regardé sur le net et je suis tombé sur le magnifique call symput.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Table A dataset_name (--> le nom de mon champ) -------------- valeur1 valeurj valeurk %mamacro(valeur1) %mamacro(valeurj) %mamacro(valeurk)
Ensuite, j'ai rencontré le call symput (compress()) pour créer des variables automatiquement.
Le problème est que dans ce exemples, je n'ai pas trouvé comment appeler cette variable concaténée avec symput/compress.
Ci-dessous le code:
En fait ma sortie est pourrie, je pense avoir un problème au niveau le l'appel à le macro sstest.
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 %macro t; DATA _null_; SET Duplicates_datasets_listing; call symput("fin",_n_); /*nombre de lignes*/ call symput(compress("test"||_n_), dataset_name); run; %do i = 1 %to &fin ; %sstest (&test&i); %end; %mend; %macro sstest(var); %put &var; %mend; %t;
Voilà, n'ayant pas encore réellement appris les macro en SAS, je ne sais pas si ceci est la solution la plus élégante mais je voulais absolument éviter une solution avec du SQL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part %sstest (&test&i);
Partager