Or stated more directly:
data DST;

format dst_beg dst_end DATE5.;

do year = 2012 to 2022;
dst_beg = intnx ("week", mdy ( 3, 1, year), (weekday (mdy ( 3, 1, year)) ^= 1) + 1); /* 1 or 2 weeks after 01MAR */
dst_end = intnx ("week", mdy (11, 1, year), (weekday (mdy (11, 1, year)) ^= 1) ); /* 1 or 2 weeks after 01NOV */
output;
end;
run;