*This macro takes a begin and end datetime in quotes, and then calculates steps. *Useful for generating aggregate statistics. DEFINE !TimeExpand (Begin = !TOKENS(1) /End = !TOKENS(1) /Step = !DEFAULT("60*60*24") !TOKENS(1) /Var = !DEFAULT (DT) !TOKENS(1) /Dataset = !DEFAULT ("TimeExpan") !TOKENS(1) ) INPUT PROGRAM. COMPUTE #Begin = !UNQUOTE(!Begin). COMPUTE #End = !UNQUOTE(!End). COMPUTE #Step = !UNQUOTE(!Step). LOOP #i = #Begin TO #End BY #Step. COMPUTE !Var = #i. END CASE. END LOOP. END FILE. END INPUT PROGRAM. DATASET NAME !UNQUOTE(!Dataset). FORMATS !Var (DATETIME17). EXECUTE. !ENDDEFINE. *Example with defaults. *TimeExpand Begin = "DATE.MDY(01,01,2013)" End = "DATE.MDY(01,01,2014)". *15 minute example. *DATASET CLOSE ALL. *TimeExpand Begin = "DATE.MDY(01,01,2013)" End = "DATE.MDY(01,01,2014) - TIME.HMS(0,10)" Step = "15*60" Dataset = "Time15min". *Week from a begin date example. *DATASET CLOSE ALL. *TimeExpand Begin = "DATE.MDY(01,01,2013)" End = "DATE.MDY(01,01,2014)" Step = "60*60*24*7" Dataset = "WeekBin". *Backwards!. *DATASET CLOSE ALL. *TimeExpand Begin = "DATE.MDY(01,01,2014)" End = "DATE.MDY(01,01,2013)" Step = "-60*60*24*7" Dataset = "WeekBinBack". *1 Minute example. *DATASET CLOSE ALL. *TimeExpand Begin = "DATE.MDY(01,01,2013)" End = "DATE.MDY(01,01,2014) - TIME.HMS(0,0,1)" Step = "60" Dataset = "Time1min". *You can use current date-time. *DATASET CLOSE ALL. *TimeExpand Begin = "DATE.MDY(01,01,2013)" End = "XDATE.DATE($TIME)". *Valid types are years, quarters, months, weeks, days, hours, minutes, seconds. DEFINE !DateExpand (Begin = !TOKENS(1) /End = !TOKENS(1) /Type = !TOKENS(1) /Var = !DEFAULT (DT) !TOKENS(1) /Dataset = !DEFAULT ("DateExpan") !TOKENS(1) ) INPUT PROGRAM. COMPUTE #B = !UNQUOTE(!Begin). COMPUTE #E = !UNQUOTE(!End). COMPUTE #Int = DATEDIFF(#E,#B,!Type). LOOP #i = 0 TO #Int. COMPUTE !Var = DATESUM(#B,#i,!Type). END CASE. END LOOP. END FILE. END INPUT PROGRAM. DATASET NAME !UNQUOTE(!Dataset). FORMATS !Var (DATETIME17). !ENDDEFINE. *DATASET CLOSE ALL. *DateExpand Begin = "DATE.MDY(01,01,2013)" End = "DATE.MDY(01,01,2014)" Type = "DAYS". *DATASET CLOSE ALL. *DateExpand Begin = "DATE.MDY(01,01,2013)" End = "DATE.MDY(01,01,2014)" Type = "MONTHS" Dataset = "DateMon". *DATASET CLOSE ALL. *DateExpand Begin = "DATE.MDY(01,01,2013)" End = "$TIME" Type = "MINUTES" Dataset = "DateMin".