変数の参照は、常に下位スコープから可能です。この辺のルールはC言語と同様です。関数がスタックで実装されていることを考えれば、上位スコープは、存在していることが保証されます。上位スコープから見た下位スコープは、呼び出し前なら、存在しませんし、return後なら、やはり存在しませんね。いう訳で、この辺の振る舞いは、言語に依存しないと思います。ループの外、ここからでは、iは、見えない(参照不可)。ここからiを呼び出してもコンパイルエラーとなる。機能は、Cとほぼ同じといっていいでしょう。break構文は存在せず、スレッドの消滅指示であるdisableを使うしかありませんでした。endendmoduleこれを、SV風に書き換えてみます。上記ベンチ比較では数十倍違う結果になります。ジャンプ文だけで実装できることによります。文が次のように拡張されています。複数のイニシャライズ文、およびステップ文を置くことができます。ループ内のローカル変数は、異なるスコープで置くことができます。宣言していますが、実体は、全く別で、影響は相互にありません。参照は、最も近い上方のスコープのiが参照されます。使うのは、あまり気持ちのよいものではないですね。最近の言語C#でも禁止されているようですし、避けたほうがよいでしょう。