          case string ?in? patList body ?patList body ...?

          case string ?in? {patList body ?patList body ...?}
               Match string against each of the patList  arguments  in
               order.   If  one  matches,  then evaluate the following
               body argument by passing  it  recursively  to  the  Tcl
               interpreter,  and return the result of that evaluation.
               Each patList argument consists of a single  pattern  or
               list  of patterns.  Each pattern may contain any of the
               wild-cards described under string match.  If a  patList
               argument  is  default,  the  corresponding body will be
               evaluated if no patList matches string.  If no  patList
               argument  matches  string and no default is given, then
               the case command returns an empty string.

               Two syntaxes are provided.  The first uses  a  separate
               argument  for  each  of the patterns and commands; this
               form is convenient if substitutions are desired on some
               of  the  patterns  or commands.  The second form places
               all of the patterns and commands together into a single
               argument; the argument must have proper list structure,
               with the elements of the list being  the  patterns  and
               commands.   The  second form makes it easy to construct
               multi-line case commands, since the braces  around  the
               whole  list  make it unnecessary to include a backslash
               at the end of each line.  Since the  patList  arguments
               are  in  braces  in  the  second  form,  no  command or
               variable substitutions are  performed  on  them;   this
               makes  the  behavior  of the second form different than
               the first form in some cases.

               Below are some examples of case commands:

                 case abc in {a b} {format 1} default {format 2} a* {format 3}

               will return 3,

                    case a in {
                      {a b} {format 1}
                      default {format 2}
                      a* {format 3}
                    }

               will return 1, and

                    case xyz {
                      {a b}
                        {format 1}
                      default
                        {format 2}
                      a*
                        {format 3}
                    }

               will return 2.

