Область видимости (PascalABC.NET)
Объекты, описанные в некотором блоке, компилятор «видит» только в нем и во всех вложенных в него блоках. В частности, это означает, что все объекты определенные внутри подпрограмм, вызывающая программа не видит. Это позволяет разрабатывать подпрограммы, не задумываясь о возможном совпадении имен, которое могло бы породить проблемы.
PascalABC.NET имеет одну интересную особенность. Если внутри программной единицы описать переменную, а ниже по тексту использовать внутриблочную переменную с таким же именем, компилятор зафиксирует ошибку. Но если описать переменную после блока, это не считается ошибкой. Параметр цикла также считается внутриблочной переменной.
Может возникнуть вопрос, как вызывающая программа видит подпрограмму, если подпрограмма описана вне вызывающей программы. Ответ очень прост: описание подпрограмм является частью кода программы, именуемом разделом подпрограмм. А сам раздел подпрограмм помещается текстуально выше кода основной программы.