Macro SAS paramètre dans nom de fichier
Résolu
fabienne35
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
fabienne35 Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
fabienne35 Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Macro SAS paramètre dans nom de fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
2 réponses
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
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