Bonjour,
J'ai écrit une macro devant me permettre d'afficher une liste de dates (9 premiers mois sous la forme YYMMM (ex:17M01, pour le mois de janvier 2017) et 3 derniers mois sous la forme YYWXX (ex: 17W09 pour la semaine 9 de 2017).
Pour cela, j'ai créer des variables intermédiaires dans une macro à l'aide de l'instruction %SYSFUNC.
Ma variable x3 contient le mois et s'affiche bien sur 2 digits lors de l'affectation par le %LET, mais quand je l'introduis dans une fonction CAT (val2) , il n'y a plus qu'1 seul digit qui s'affiche (17M1).
Quelqu'un connait-il la raison et la solution ?
Ci-dessous le code que j'utilise:
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
16
17
18
19
20
21
22
23 %macro remplir_references_dates(); %DO LOOP=7 %to 12; %LET x1=%SYSFUNC(INTNX(month,%SYSFUNC(INTNX(day,%SYSFUNC(today()),%SYSFUNC(day(%SYSFUNC(today())))-1)),&LOOP.-19)); %LET x2=%SYSFUNC(MONTH(&x1.)); %LET x3=%SYSFUNC(PUTN(&x2., Z2.)); %LET val1=&x1.; %LET val2=%SYSFUNC(CAT(%SYSFUNC(PUTN(&x1.,year2.)),M,&x3.)); PROC SQL; INSERT INTO RDMTSSMF.REFERENCES_DATES VALUES(&val1.,"&val2."); QUIT; %END; %DO LOOP=1 %to 29; %LET val3=%SYSFUNC(INTNX(week,%SYSFUNC(INTNX(day,%SYSFUNC(today()),%SYSFUNC(day(%SYSFUNC(today())))-1)),&LOOP.-30)); %LET val4=%SYSFUNC(PUTN(%SYSFUNC(INTNX(week,%SYSFUNC(INTNX(day,%SYSFUNC(today()),%SYSFUNC(day(%SYSFUNC(today())))-1)),&LOOP.-30)),WeekV5.0)); PROC SQL; INSERT INTO RDMTSSMF.REFERENCES_DATES VALUES(&val3.,"&val4."); QUIT; %END; %mend remplir_references_dates;
Partager