proc damm {number} { set digits [split $number ""] set tbl { {0 3 1 7 5 9 8 6 4 2} {7 0 9 2 1 5 4 8 6 3} {4 2 0 6 8 7 1 3 5 9} {1 7 5 0 9 8 3 4 2 6} {6 1 2 3 0 4 5 9 7 8} {3 6 7 4 2 0 9 5 8 1} {5 8 6 9 7 2 0 1 3 4} {8 9 4 5 3 6 2 0 1 7} {9 4 3 8 6 1 7 2 0 5} {2 5 8 1 4 3 6 7 9 0} } set row 0 foreach col $digits { set row [lindex $tbl $row $col] } return [expr {$row == 0 ? 1 : 0}] } foreach number {5724 5727 112946} { set correct [damm $number] puts "$number:\tChecksum digit [expr {$correct ? "" : "in"}]correct." }