チェックディジットの計算をする必要があるので、出し方を調べて書いてみた。
Dim SummaryValue As Integer = 0 Dim ResultValue As Integer Dim SourceLength As Integer = Source.Length - 1 Dim ReversedPos As Integer For i As Integer = 0 To SourceLength ReversedPos = SourceLength - i SummaryValue += CInt(Source.Substring(i, 1)) * ((ReversedPos Mod 6) + 2) Next ResultValue = 11 - (SummaryValue Mod 11) Return ResultValue
ウェイト2〜7で計算するが、この重みの値を出すのに、反転した文字位置を6で割った余りに2を足している。もしかしたら、別に配列などを用意して素直に掛けた方が高速かもしれないね。ま、いいや。