(495)240-8280ПН-СБ с 12:00 до 20:00
We speak English

2.3. Область действия внутренних переменных

Когда внутренние переменные создаются путем их описания либо в качестве аргументов программы или части блока программы, то их область действия ограничена только этой программой. В примере урока 2.2 внутренние переменные var1 и var2 доступны только для команд, которые находятся в пределах описания программы MYPROG1 и которые идут ПОСЛЕ описания каждой переменной (например, команда MSGBOX()).

Можно создать внутреннюю переменную, чья область действия будет значительно шире - то есть распространяться на весь исходный файл. В предыдущей версии эти внутренние переменные были неверно названы как "не экспортируемые глобальные переменные". Они были внутренними переменными, которые описываются в сокращенном стиле. Но, прежде всего, внутренняя переменная, описанная ВНЕ любого блока программы, считается "глобальной" для всех программ в исходном файле, так как любые программы, описанные после такой переменной, могут ее использовать. Однако она называется внутренней не только потому, что она обычно описывается с помощью команды LOCAL, но также потому, что ее область действия ограничена исходным файлом.

Примеры ниже показывают, как такой тип внутренней переменной можно описать и использовать:

Код:

LOCAL var1, var2, var3; // описывает переменные var1, var2 и var3 как внутренние для данного исходного файла; могут быть использованы всеми программами, введенными ниже этой строки кода
var4, var5, var6; // фактически то же самое, что выше, то есть команда LOCAL - это необязательный  элемент при описании внутренних переменных, используемых внутри всего исходного файла

EXPORT MAINPRG()
BEGIN
  var1 := var2+var3;
  var4 := 1;
END;

SUBROUTINE()
BEGIN
  LOCAL var7; // данная внутренняя переменная может использоваться только в рамках подпрограммы   SUBROUTINE()
  var7 := var4+var5-var1;
END;

Внутренние переменные от var1 до var6 могут быть использованы в любой программе, определенной далее в исходном файле. В отличие от внутренних переменных, описанных внутри блока программы, такой как переменная var7 в примере выше, внутренние переменные, описанные вне любого блока программы, сохраняют свои значения, даже после завершения программы и вплоть до перекомпилирования исходника. Это единственное существенное различие. Но они недоступны для программ, определенных в другом исходном файле, или для пользователя.