proc getNumber {prjowner prjnum} {
# calculates checksum for addres and retruns whole address
set prjowner [string toupper $prjowner]
scan $prjowner "%c%c%c" prjowner1 prjowner2 prjowner3
set prjnum [string toupper $prjnum]
scan $prjnum "%1s%1s%1s" pn1 pn2 pn3
if {![regexp {[0-9]} $pn1]} {scan $pn1 "%c" pn1}
if {![regexp {[0-9]} $pn2]} {scan $pn2 "%c" pn2}
if {![regexp {[0-9]} $pn3]} {scan $pn3 "%c" pn3}
set prj "$prjowner1$prjowner2$prjowner3$pn1$pn2$pn3"
set checkarray "0946827135"
set takeover 0
set prjlen [string length $prj]
for {set i 0} {$i<$prjlen} {incr i} {
set checkarrayindex [expr int([string index $prj $i]. + $takeover.) % 10]
set takeover [string index $checkarray $checkarrayindex]
}
set takeover [expr (10 - $takeover) % 10]
return "$prjowner-$prjnum-$takeover"
}
puts [getNumber "DEP" "001"]