je n'ai pas trop compris ta demande mais il y a déjà quelques problèmes dans ton code à mon avis.
Les macro-variable que tu crées dans tes étapes data son écrasées à chaque nouvelle ligne de ta table. Sauf dans ta 1ere étape data, où là ton dépendra des valeurs de la variable nom.
Ex :
table, 2 variables var1 et var2
valeur1 x
valeur2 y
valeur1 z
Si tu fais un call symput du type call symput(var1, var2), alors tu vas créer deux macro-variables valeur1 (tu garderas uniquement la valeur z) et une valeur2.
dans ta deuxième étape simplifie, tu n'as pas besoin de passer en macro-language tes if car tu travailles sur des variables de ta table.
1 2 3 4 5 6 7 8 9
| data _NULL_;
set &data;
if substr(nom,1,6) ="predil" and SampleID=&type then do;
call symput ("predil",valeur);
end;
else do;
call symput ("predil",'.');
end;
run; |
Mais là encore il y aura une seule macro-variable predil de créée...elle sera toujours écrasée.
Solution
call symput("predil" !! trim(put(_n_,best. -L)), valeur)
Cela ajoutera un indice tu auras donc predil1, predil2...et elles ne seront plus écraser.
si ça ne répond pas à ta question, n'hésite pas.
Partager