Bonjour,
Je suis débutant en SAS et j'ai encore un peu de difficulté avec le langage donc soyez indulgents SVP.
Je tente actuellement d'optimiser une page SAS qui inclus d'abord de nombreuses fonctions par la ligne :
Par la suite, j'appelle la macro "calculer" (qui est dans le fichier INCLUDE) plusieurs fois selon un paramètre différent à chaque appel. Je garde le principe simple avec t1 mais j'ai de nombreux autres paramètres :
Code : Sélectionner tout - Visualiser dans une fenêtre à part %INCLUDE "/mnt/SASDATA/macro_DF.sas";
Etc. pour des centaines d'occurrences. Le code actuel fonctionne bien mais n'est pas optimal! Plutôt que de faire cette opération des centaines de fois, on voudrait passer par un fichier excel pour que ça puisse être facilement mis à jour par une autre équipe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 %LET t1 = 0.11; %calculer(t1 = put(&t1, 6.2)); %LET t1 = 0.14; %calculer(t1 = put(&t1, 6.2)); %LET t1 = 0.18; %calculer(t1 = put(&t1, 6.2));
Actuellement, j'ai réussi à importer le fichier Excel dans une table SAS mais tout ce que je réussi à faire, c'est que la macro "calculer" s'exécute une seule fois sur le dernier enregistrement du fichier CSV. Voici mon code :
Comment faire pour que la macro "calculer" s'exécute pour chacune des lignes provenant de mon excel?
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 %INCLUDE "/mnt/SASDATA/macro_DF.sas"; data test; infile '/mnt/SASDATA/valeurs.csv' delimiter=';' FIRSTOBS=2; input t1:$6.; call symput("_N_",_N_); run; data _null_; SET test; call symput("t1",t1); do i = 1 to &_N_; call execute('%calculer(depense='||i||', t1 = '||put(&t1,6.2)||')'); end; run;
En espérant être clair et que quelqu'un pourra m'aider.
Merci à l'avance!
Partager