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


Class Utils.Check [ Abstract ]
{
 
ClassMethod SEDOL(x As %String) As %Boolean
{
	// https://en.wikipedia.org/wiki/SEDOL
	IF x'?1(7N,1U5UN1N) QUIT 0
	IF x'=$TRANSLATE(x,"AEIOU") QUIT 0
	SET cd=$EXTRACT(x,*), x=$EXTRACT(x,1,*-1)
	SET wgt="1317391", t=0
	FOR i=1:1:$LENGTH(x) {
		SET n=$EXTRACT(x,i)
		IF n'=+n SET n=$ASCII(n)-55
		SET t=t+(n*$EXTRACT(wgt,i))
	}
	QUIT cd=((10-(t#10))#10)
}
 
}