No need macro.
Perl Regular Expression is more than suffice.
%let kept=Arne Bert Hansi;
%let want1=%str(%')%qsysfunc(prxchange(s/\s+/','/,-1,&kept.))%str(%');
%let want2=%str(%')%qsysfunc(prxchange(s/\s+/' '/,-1,&kept.))%str(%');
%put &=want1.;
%put &=want2.;
%let want3="%sysfunc(prxchange(s/\s+/"%str(,)"/,-1,&kept.))";
%let want4="%sysfunc(prxchange(s/\s+/" "/,-1,&kept.))";
%put &=want3.;
%put &=want4.;
1 %let kept=Arne Bert Hansi;
2
3 %let want1=%str(%')%qsysfunc(prxchange(s/\s+/','/,-1,&kept.))%str(%');
4 %let want2=%str(%')%qsysfunc(prxchange(s/\s+/' '/,-1,&kept.))%str(%');
5 %put &=want1.;
WANT1='Arne','Bert','Hansi'
6 %put &=want2.;
WANT2='Arne' 'Bert' 'Hansi'
7
8
9 %let want3="%sysfunc(prxchange(s/\s+/"%str(,)"/,-1,&kept.))";
10 %let want4="%sysfunc(prxchange(s/\s+/" "/,-1,&kept.))";
11 %put &=want3.;
WANT3="Arne","Bert","Hansi"
12 %put &=want4.;
WANT4="Arne" "Bert" "Hansi"