Version 4 of clock's valid year : a catch example

Updated 2010-01-28 11:02:17 by LGT
 proc isValidYear { year } {
    set valid 1
    if [catch {clock scan "1/1/$year" }] {
      set valid 0
    } 
    return $valid
 }

 proc limitvalidyear { year direction} {
  set stillvalid [isValidYear $year]
  if {! $stillvalid} {
    return -1
  }  
  while {$stillvalid} {
    if {[isValidYear $year]} {
      incr year $direction
    } else {
      set stillvalid 0
    } 
  }
  return $year
 }


 puts [limitvalidyear 2010 1]
 puts [limitvalidyear 2010 -1]