Task

For each number list of 6-digit SEDOLs, calculate and append the checksum digit.



That is, given this input:

710889
B0YBKJ
406566
B0YBLH
228276
B0YBKL
557910
B0YBKR
585284
B0YBKT
B00030

Produce this output:

7108899
B0YBKJ7
4065663
B0YBLH2
2282765
B0YBKL9
5579107
B0YBKR5
5852842
B0YBKT7
B000300

Extra credit

Check each input is correctly formed, especially with respect to valid characters allowed in a SEDOL string.



Related tasks

   Luhn test
   ISIN


fcn checksum(text){
   ( text.len()!=6 or (text..matches("*[AEIOUaeioua-z]*")) ) and 
      throw(Exception.ValueError("Invalid SEDOL text: "+text));
 
   text + (10 - text.pump(List,'wrap(c){
                    if("0"<=c<="9") c.toAsc()-0x30;
		    else c.toAsc()-55;
	          }).zipWith('*,T(1,3,1,7,3,9)).sum() % 10) % 10;
}