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

Updated 2010-01-28 11:03:35 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]