Les Allergies
Alimentaires
Posez votre question Signaler

Macro SAS paramètre dans nom de fichier [Résolu]

fabienne35 11Messages postés 23 janvier 2008Date d'inscription 20 avril 2010Dernière intervention - Dernière réponse le 28 janv. 2008 à 14:55
Bonjour,
une nouvelle fois j'ai besoin d'aide pour une macro :
%let an=07
%macro test;
%do jour= 01 %to 31;
%do mois= 01 %to 12;
data sd01;
set mabase&jour&mois&an;
where a='A';
run;
data sd;
set sd sd01;
run;
%end;
%end;
%mend;
%test;
les noms de mes fichiers sont du type mabase040507 j'ai essayé :
%let an=07
%macro test;
%do jour= 1 %to 9;
%do mois= 1 %to 9;
data sd01;
set mabase0&jour0&mois&an;
where a='A';
run;
data sd;
set sd sd01;
run;
%end;
%end;
%do jour= 10 %to 31;
%do mois= 10 %to 12;
data sd01;
set mabase&jour&mois&an;
where a='A';
run;
data sd;
set sd sd01;
run;
%end;
%end;
%mend;
%test;
Mais ça ne marche pas à cause du 0 entre &jour et &mois. Y-at-il un moyen de le forcer à mettre mon 0 ?
ou alors j'insère %let z='0' &jour&z&mois ?
Merci de l'aide que vous pourrez m'apporter.
Fabienne
Lire la suite 

Macro SAS paramètre dans nom de fichier »

2 réponses
Réponse
+0
moins plus
Bonjour,

Voici la solution :

remplacer set mabase&jour&mois&an;
par
set mabase%sysfunc(putn(&jour,z2.))%sysfunc(putn(&mois,z2.))&an;

on utilise ici le format z2. qui met un 0 devant si la valeur est sur 1 caractère. Pour appliquer le format dans une macro on utilise %sysfunc et putn qui applique le format à la volée.

Steel
Ajouter un commentaire
Réponse
+0
moins plus
Merci pour la réponse.


Du coup mon pg devient :
%let an=07
%macro test;
%do jour= 01 %to 31;
%do mois= 01 %to 12;
data sd01;
set mabase%sysfunc(putn(&jour,z2.))%sysfunc(putn(&mois,z2.))&an;
where a='A';
run;
data sd;
set sd sd01;
run;
%end;
%end;
%mend;

%test;
Ajouter un commentaire
Ce document intitulé « Macro SAS paramètre dans nom de fichier » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?