fork download
  1. proc getNumber {prjowner prjnum} {
  2. # calculates checksum for addres and retruns whole address
  3. set prjowner [string toupper $prjowner]
  4. scan $prjowner "%c%c%c" prjowner1 prjowner2 prjowner3
  5. set prjnum [string toupper $prjnum]
  6. scan $prjnum "%1s%1s%1s" pn1 pn2 pn3
  7. if {![regexp {[0-9]} $pn1]} {scan $pn1 "%c" pn1}
  8. if {![regexp {[0-9]} $pn2]} {scan $pn2 "%c" pn2}
  9. if {![regexp {[0-9]} $pn3]} {scan $pn3 "%c" pn3}
  10. set prj "$prjowner1$prjowner2$prjowner3$pn1$pn2$pn3"
  11. set checkarray "0946827135"
  12. set takeover 0
  13. set prjlen [string length $prj]
  14. for {set i 0} {$i<$prjlen} {incr i} {
  15. set checkarrayindex [expr int([string index $prj $i]. + $takeover.) % 10]
  16. set takeover [string index $checkarray $checkarrayindex]
  17. }
  18. set takeover [expr (10 - $takeover) % 10]
  19. return "$prjowner-$prjnum-$takeover"
  20. }
  21. puts [getNumber "DEP" "001"]
Success #stdin #stdout 0.02s 5272KB
stdin
Standard input is empty
stdout
DEP-001-9