Hello,
You should use the %by option of the %do loop. Your macro becomes:
%macro RunMP;
%do RunMP = 1 %to 5 %by 3;
%let p1=%eval(&RunMP);
%let p2=%eval(&RunMP+1);
%let p3=%eval(&RunMP+2);
%put &p1 &p2 &p3;
%end;
%mend; %RunMP *;
You should also keep in mind that if you have a number of elements to display which is not a multiple of 3, you could see unresolved macro-variables displayed (text '&p1', '&p2' or '&p3' ) in your log... So you should check that each macro-variable you want to display exists prior including its reference in the %put statement.
I hope it helps.
Regards,
Florent