NAME
       proc - Create a Tcl procedure

SYNOPSIS
       proc name args body


DESCRIPTION
       The  proc  command creates a new Tcl procedure named name,
       replacing any existing command or procedure there may have
       been  by  that name.  Whenever the new command is invoked,
       the contents of body will be executed by  the  Tcl  inter-
       preter.  Args specifies the formal arguments to the proce-
       dure.  It consists of a  list,  possibly  empty,  each  of
       whose  elements  specifies  one  argument.   Each argument
       specifier is also a list with either one  or  two  fields.
       If  there  is only a single field in the specifier then it
       is the name of the argument; if there are two fields, then
       the  first  is  the  argument  name  and the second is its
       default value.

       When name is invoked a local variable will be created  for
       each  of  the formal arguments to the procedure; its value
       will be the value of corresponding argument in the  invok-
       ing  command  or  the argument's default value.  Arguments
       with default values need not be specified in  a  procedure
       invocation.   However,  there  must be enough actual argu-
       ments  for  all  the  formal  arguments  that  don't  have
       defaults,  and  there  must  not be any extra actual argu-
       ments.  There is one special  case  to  permit  procedures
       with  variable  numbers  of arguments.  If the last formal
       argument has the name args, then a call to  the  procedure
       may  contain  more actual arguments than the procedure has
       formals.  In this case, all of the actual arguments start-
       ing at the one that would be assigned to args are combined
       into a list (as if the list command had been  used);  this
       combined value is assigned to the local variable args.

       When body is being executed, variable names normally refer
       to local variables, which are created  automatically  when
       referenced  and  deleted  when the procedure returns.  One
       local variable is automatically created for  each  of  the
       procedure's  arguments.   Global  variables  can  only  be
       accessed by invoking the global command or the upvar  com-
       mand.

       The  proc  command returns an empty string.  When a proce-
       dure is invoked, the procedure's return value is the value
       specified  in  a return command.  If the procedure doesn't
       execute an explicit return, then its return value  is  the
       value  of  the  last  command  executed in the procedure's
       body.  If an error occurs while  executing  the  procedure
       body,  then the procedure-as-a-whole will return that same
       error.
KEYWORDS
       argument, procedure
