При выполнении процедуры для каждого формального параметра создается локальная переменная. Ей присваивается значение соответствующего аргумента, указанного при вызове процедуры, или значение по умолчанию. Аргумент, для которого при определении процедуры указано значение по умолчанию, может не присутствовать в вызове процедуры. Однако общее количество указанных параметров должно быть достаточным для аргументов, не имеющих значения по умолчанию, но не больше общего числа формальных параметров. Если это условие выполнено, все аргументы процедуры собираются в один список (как при исполнении команды list). Эта комбинированная величина присваивается локальной переменной args.
При исполнении тела процедуры имена переменных обычно считаются именами локальных переменных, которые создаются автоматически по мере необходимости и удаляются после завершения процедуры. По одной локальной переменной создается также для каждого аргумента процедуры. Для использования глобальных переменных необходимо использовать команду global или upvar. Для использования переменных из пространства имен необходимо использовать команду variable или upvar.
Команда proc возвращает пустую строку.
При вызове процедуры возвращается величина, заданная в команде return.
Если в процедуре не выполнялась явная команда return,
она возвращает результат выполнения последней команды, выполнявшейся в теле
процедуры. Если при выполнении процедуры произошла ошибка, то процедура в
целом возвращает эту ошибку.