Some of Tcl's documentation refers to procedures as a distinct type of command.
A procedure is a Tcl command that is created by the proc command.
For example the info args command expects its argument to be the name of a procedure. Names of other commands passed to info args will cause an error to be raised.
see also Pass by reference and Implicit upvar.
ZB 26.06.2008. - in fact, there aren't any procedures at all in TCL, because returning a value by TCL's "proc-s" is obligatory. So in TCL there are only functions available (a procedure is "a function, which doesn't return any value" - like f.e. "void" in C - see Pascal as well).