其中一个问题我自己用穷举+暴力的方法给破解了。
data test id;
a='1101081988xxxx1234';
t=0;
array xx(11) $ ('1','0','X','9','8','7','6','5','4','3','2');
array mm(12) $ ("01","02","03","04","05","06","07","08","09","10","11","12");
array dd(31) $ ("01","02","03","04","05","06","07","08","09","10","11","12"
,"13","14","15","16","17","18","19","20","21","22","23","24","25","26","27"
,"28","29","30","31");
do m=1 to 12;
do d=1 to 31;
str=compress(substr(a,1,10)||mm(m)||dd(d)||substr(a,15,3));
t=0;
do i=2 to 18;
t=t+substr(str,(19-i),1)*mod(2**(i-1),11);
end;
y=(mod(t,11)+1);
ka=xx(mod(t,11)+1);
if substr(a,18,1)=xx(mod(t,11)+1) then output id ;else output test;
end;
end;
run;