Not really. PRX is hard for this, But easy for data step:
data have;
string='Codes find';
run;
data _null_;
set have;
call symputx('n',length(string));
run;
data want;
set have;
array x{&n};
n=dim(x);
k=-1;
nsubs=2**n;
do i=1 to nsubs;
string=lowcase(string);
rc=graycode(k, of x{*});
do j=1 to dim(x);
if x{j}=1 then substr(string,j,1)=upcase(substr(string,j,1));
end;
output;
end;
keep string;
run;
Xia Keshan