-異なるスタックフレームにおいてスクリプトを実行します。concatに渡されたかのように連結されます。示された変数の文脈で評価され、Uplevelの戻り値はその評価の結果です。整数であればレベル数を表します。これはコマンドを実行する前にプロシージャのコール・スタックでのレベルアップさせるステップ数です。先頭が#で、その後が数字であれば、その数字は絶対的レベル番号を表します。省略される場合の既定値は1です。プロシージャaはトップレベルからコールされ、そしてaがbをコールし、bがcをコールし、cがuplevelコマンドを呼び出すと仮定します。1または#2、もしくは省略される場合、本コマンドはbの変数文脈において実行されることになります。2または#1ならば、本コマンドはaの変数文脈において実行されることになります。3または#0の場合、本コマンドがトップレベル文脈で実行されることになり、この場合はグローバル変数しか見えません。uplevelコマンドが実行されると、uplevelをコールしたプロシージャはコールスタックから削除されます。前述の例においてcがuplevelコマンドを呼び出すと仮定します。d}dは別のTclプロシージャです。setコマンドはbの文脈において変数xを変更することになります。同じようにdはまるでbから呼ばれたかのようにレベル3で実行されます。dで下記コマンドを実行することとします。42}この場合setコマンドはb文脈において同じ変数xを修正します。プロシージャcはdが実行されているときにはコールスタックに存在しません。」コマンドを使えば、現在のプロシージャのレベルを取得することができます。Uplevelは新しい制御構造をTclのプロシージャとして使うことを可能にします。uplevelはwhile構造Tclプロシージャとして実行するために使われます。evalは(プロシージャの呼び出し以外に)Tclの命名文脈を変えるもう1つの方法です。evalはnamespaceの文脈を表すために、コールフレームをスタックに加えます。evalコマンドが使われるたびにカウントアップされます。1はコマンドリストを返します。evalコマンドのいずれかにあたります。トップレベルでスクリプトを評価します。