Hi! I am using the following macro within a proc format to generate a format. It is working perfectly. However, if I replace the format DDMMYYP10. by YYMMD9. it suddenly does not work anymore. How can I fix it? &Stichdatum is a date, f.e. 31May2012 Thx, Stefan -------------------------------------- /* Dynamische Generierung der Intervallgrenzen */ %Macro genInt(); value faellig low - %SYSFUNC(Intnx(Month, &Stichdatum, 0, e)) = '0_abgelaufen' %put Stichdatum=&stichdatum; %LET dvar = &stichdatum; %LET hvar = %SYSFUNC(Intnx(month, &dvar, 1, e)); /* Falls Monatsende nicht mit Quartalsende zusammenfällt */ %IF %sysfunc(intnx(month,&dvar,0,e)) < %sysfunc(intnx(qtr,&dvar,0,e)) %THEN %DO; %SYSFUNC(Intnx(Month, &dvar, 1, b)) - %SYSFUNC(Intnx(Qtr, &dvar, 0, e)) = %SYSFUNC(Intnx(qtr, &dvar, 0, end), DDMMYYP10.) %END; %LET dvar = %SYSFUNC(Intnx(qtr, &dvar, 1, b)); /* nächstes Quartal */ /* Quartalsscheiben erzeugen */ %DO %UNTIL (%SYSFUNC(Intnx(Qtr, &dvar, 0, e)) > %SYSFUNC(Intnx(year, &hvar, 1, e))); %SYSFUNC(Intnx(qtr, &dvar, 0, b)) - %SYSFUNC(Intnx(Qtr, &dvar, 0, e)) = %SYSFUNC(Intnx(qtr, &dvar, 0, end), DDMMYYP10.) %LET dvar = %SYSFUNC(Intnx(qtr, &dvar, 1, b)); /* nächstes Quartal */ %END; /* Halbjahresscheiben erzeugen */ %DO %UNTIL (%SYSFUNC(Intnx(semiyear, &dvar, 0, e)) > %SYSFUNC(Intnx(year, &hvar, 2, e))); %SYSFUNC(Intnx(semiyear, &dvar, 0, b)) - %SYSFUNC(Intnx(semiyear, &dvar, 0, e)) = %SYSFUNC(Intnx(semiyear, &dvar, 0, end), DDMMYYP10.) %LET dvar = %SYSFUNC(Intnx(semiyear, &dvar, 1, b)); /* nächstes Halbjahr */ %END; /* Jahresscheiben erzeugen */ %DO %UNTIL (%SYSFUNC(Intnx(year, &dvar, 0, e)) > %SYSFUNC(Intnx(year, &hvar, 6, e))); %SYSFUNC(Intnx(year, &dvar, 0, b)) - %SYSFUNC(Intnx(year, &dvar, 0, e)) = %SYSFUNC(Intnx(year, &dvar, 0, end), YEAR4.) %LET dvar = %SYSFUNC(Intnx(year, &dvar, 1, b)); /* nächstes Halbjahr */ %END; /* Restscheibe erzeugen */ %SYSFUNC(Intnx(year, &dvar, 0, b)) - high = %SYSFUNC(Catx(%str( ),nach ,%SYSFUNC(Intnx(year, &dvar, -1, e), YEAR4.))) ; %mend genInt;
... View more