Просто для удовольствия - версия регулярного выражения в чистых макросах:
%let a= A,B,C,D,,,G,,I,,;
%let regex1 = %sysfunc(prxparse(%str(s/,+/,/)));
%let b=%sysfunc(prxchange(®ex1,-1,%quote(&a)));
%let regex2 = %sysfunc(prxparse(%str(s/,$//)));
%let b=%sysfunc(prxchange(®ex2,-1,%quote(&b)));
%put b= &b;
Вы можете пропустить второе регулярное выражение, если вам никогда не приходилось сталкиваться с конечными запятыми в конце ввода.