home *** CD-ROM | disk | FTP | other *** search
- '\"
- '\" Copyright (c) 1993 The Regents of the University of California.
- '\" All rights reserved.
- '\"
- '\" Permission is hereby granted, without written agreement and without
- '\" license or royalty fees, to use, copy, modify, and distribute this
- '\" documentation for any purpose, provided that the above copyright
- '\" notice and the following two paragraphs appear in all copies.
- '\"
- '\" IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
- '\" FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- '\" ARISING OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
- '\" CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- '\"
- '\" THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- '\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- '\" AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- '\" ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
- '\" PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- '\"
- '\" $Header: /user6/ouster/tcl/man/RCS/proc.n,v 1.1 93/05/10 17:10:18 ouster Exp $ SPRITE (Berkeley)
- '\"
- .so man.macros
- .HS proc tcl
- .BS
- '\" Note: do not modify the .SH NAME line immediately below!
- .SH NAME
- proc \- Create a Tcl procedure
- .SH SYNOPSIS
- \fBproc \fIname args body\fR
- .BE
-
- .SH DESCRIPTION
- .PP
- The \fBproc\fR command creates a new Tcl procedure named
- \fIname\fR, replacing
- any existing command or procedure there may have been by that name.
- Whenever the new command is invoked, the contents of \fIbody\fR will
- be executed by the Tcl interpreter.
- \fIArgs\fR specifies the formal arguments to the
- procedure. 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.
- .PP
- When \fIname\fR 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 invoking 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 arguments for all the
- formal arguments that don't have defaults, and there must not be any extra
- actual arguments. There is one special case to permit procedures with
- variable numbers of arguments. If the last formal argument has the name
- \fBargs\fR, then a call to the procedure may contain more actual arguments
- than the procedure has formals. In this case, all of the actual arguments
- starting at the one that would be assigned to \fBargs\fR are combined into
- a list (as if the \fBlist\fR command had been used); this combined value
- is assigned to the local variable \fBargs\fR.
- .PP
- When \fIbody\fR 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 \fBglobal\fR command or the \fBupvar\fR command.
- .PP
- The \fBproc\fR command returns an empty string. When a procedure is
- invoked, the procedure's return value is the value specified in a
- \fBreturn\fR command. If the procedure doesn't execute an explicit
- \fBreturn\fR, 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.
-
- .SH KEYWORDS
- argument, procedure
-