Bonjour,
Mon problème est le suivant :
Un de mes codes SAS nécessite d'exécuter la macro %calcul(prod=); pour un certain nombre de produits : A, B, G, Z. La solution la plus évidente est d'appeler la macro %calcul pour chaque produit successivement :
Le souci dans cette manière de faire est que la liste des produits, en plus d'être longue, est amenée à changer assez régulièrement. Il faudrait donc supprimer et ajouter un nombre conséquent de lignes à chaque traitement, ce qui est assez fastidieux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 %calcul(prod=A); %calcul(prod=B); %calcul(prod=G); %calcul(prod=Z);
Je souhaiterais donc que le traitement s'effectue de la manière suivante :
L'utilisateur final n'aurait ainsi qu'à modifier le contenu de la macro-var listeProduit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 %let listeProduit = A, B, G, Z; %macro traitement(liste=); %do "pour chaque" produit "de" &liste; %calcul(prod=&produit); %end; %mend; % traitement(liste=&listeProduit);
Malheureusement, je ne trouve le moyen de réaliser cette procédure de traitement. Dans les langages de programmation plus classiques (VBA ou C par ex.), cela revient à définir un array. Mais j'ai compris en lisant l'aide en ligne de SAS que les array de SAS ont une utilisation différente.
Bref, je nage.
Est-ce que quelqu'un a une idée de solution?
Merci pour votre aide!
Partager