I think you can simplify this a bit with a shift index and SYSFUNC's little known format parameter.
INTNX(interval<.shift-index>, start-from, increment<, 'alignment'>)
[pre]
5006 %let start_date = %sysfunc(putn(%eval(%sysfunc(intnx(week, "&SYSDATE"D, -1))-1),DATE9.));
5007 %let end_date = %sysfunc(putn(%eval(%sysfunc(intnx(week, "&SYSDATE"D, 0))-1),DATE9.));
5008
5009
5010 %put &START_DATE &END_DATE;
11SEP2010 18SEP2010
5011
5012
5013 %let start_date = %sysfunc(intnx(week.7, "&SYSDATE"D, -1),date9.);
5014 %let end_date = %sysfunc(intnx(week.7, "&SYSDATE"D, 0),date9.);
5015
5016
5017 %put &START_DATE &END_DATE;
11SEP2010 18SEP2010
[/pre]