8.8.3. Глобальные
переменные
Глобальные переменные в NDOS могут иметь стандартные и нестандартные имена.
Стандартное имя может содержать
только буквы, цифры, а также символы _ и $.
В нестандартном имени допускаются любые символы, за исключением скобок [ и
]. Чтобы имя было действительно нестандартным, в него должен входить
по крайней мере один запрещенный для стандартного имени символ.
Длина имени глобальной переменной не может превышать 80, а значения —
255 символов. - В командах NDOS допускается ссылаться как на имена глобальных переменных, так и на их значения
Ссылки на значение могут быть везде, где допустимы строки (в частности, в командах IF, IFF, ECHO и SET), а также в спецификациях файлов и
каталогов. При ссылке на значение глобальной переменной ее имени должен
предшествовать один символ %, причем нестандартное имя необходимо заключить в
квадратные скобки. Стандартное имя глобальной переменной
ограничивается справа любым запрещенным для использования в нем символом, в том числе символом %. В случае ссылки на значение
глобальной переменной со стандартным именем, когда сразу вслед за ссылкой
располагаются допустимые для стандартного имени символы, ограничивайте имя
справа именно символом %. Этот символ в строке после подстановки значения глобальной
переменной присутствовать не будет. С нестандартным же именем проблем
возникнуть не может, так как оно ограничивается квадратными скобками.
Если же требуется (скажем, в командах INKEY и INPUT, но не в SET, ESET или UNSET) указать не значение, а имя глобальной переменной, то ему должны
предшествовать два символа %%, причем квадратные скобки для обрамления нестандартного имени недопустимы. Эта
же пара символов в другом контексте обозначает единственный символ %.
Примеры:
■ MYVAR1 —
стандартное имя глобальной переменной;
■
MYVAR#1 — нестандартное имя глобальной
переменной;
■ %MYVAR1 — ссылка на значение глобальной
переменной;
■ %MYVAR1% ― то же;
■ %[MYVAR#1] — ссылка
на значение глобальной переменной;
■ %%MYVAR1 — ссылка
на имя глобальной переменной;
■ %%MYVAR#1 — ссылка
на имя глобальной переменной;
■ ECHO A%MYVAR1%B —
запрос на отображение символьной строки, состоящей из значения глобальной
переменной MYVAR1, которое ограничено слева и справа
символами А и В соответственно.
Возможность доступа к значениям глобальных переменных в командах NDOS созвучна средствам командного языка ОС UNDC и сулит неоспоримые выгоды. Они состоят в том, что длинные строки (в
частности, спецификации файлов и каталогов) можно обозначать короткими именами
и затем использовать лишь последние.
NDOS поддерживает как определяемые, так и встроенные глобальные
переменные.
Определяемые глобальные переменные задаются пользователем и могут иметь произвольные (но допустимые)
имена, а также значения. Среди определяемых существуют так называемые зарезервированные глобальные переменные, значения которых используются NDOS, но устанавливаются пользователем. К таким переменным относятся PATH, TEMP, DIRCMD, COMSPEC и уже описанная NDSHELL.
Глобальной переменной PATH задаются маршруты поиска исполняемых (COM-, ЕХЕ-, ВАТ- и ВТМ-)
файлов. ВТМ-файл — это командный файл, который загружается в
память целиком, а поэтому выполняется существенно быстрее, но не может быть
самомодифицирующимся.
Глобальная переменная TEMP предназначена для указания каталога, в
котором будут размещаться временные файлы, используемые при перенаправлении
ввода-вывода. Если значение переменной TEMP не определено, то предполагается, как и в КП DOS, рабочий каталог.
Глобальная переменная DIRCMD задает формат по умолчанию для команды DIR. В качестве ее значения можно установить любую
допустимую комбинацию переключателей данной команды.
Встроенные глобальные переменные полностью
определяются NDOS'om. Их значения обычно используются в командных файлах, определениях синонимов
и программах, в частности, для выбора одной из нескольких альтернатив, а также
для настройки на конкретную среду выполнения. Встроенные переменные делятся на обычные и внутренние.
Обычные встроенные глобальные переменные (пока имеется только одна такая переменная, а именно, CMDUNE) наряду с определяемыми глобальными
переменными регистрируются в окружении NDOS.
Внутренние встроенные глобальные переменные (к которым относятся все остальные встроенные глобальные переменные) в
окружение NDOS не заносятся и поэтому не могут быть отображены и изменены командами SET и ESET. При попытке переопределить значение внутренней
встроенной переменной просто будет создана определяемая глобальная переменная,
а доступ к одноименной внутренней переменной станет невозможным. Иными словами,
приоритетом пользуется определение, сделанное пользователем.
В NDOS имеются следующие встроенные
глобальные переменные (все значения имеют
строковый тип):
# — число
аргументов в вызове командного файла (ссылка %# допустима только в командных
файлах и недопустима в синонимах);
? ― код возврата последней из выполненных программ (в том числе
внешних команд);
CMDUNE ― полная командная строка запуска программы с
замененными в ней синонимами и глобальными переменными (но истинный маршрут, по
которому найдена программа, Вместо указаний в командной строке не
подставляется);
_BG ― наименование
фонового цвета;
_COLUMNS ― размер строки экрана,
т.е. число символов в ней;
_CPU ― одна из следующих строк,
идентифицирующая тип МП:
86 - МП 8086/88;
186 - МП 80186/88;
200 - МП NEC V20 или V30;
286 - МП 80286;
386 - МП 80386 или 80486;
_CWD ― полная спецификация рабочего каталога;
_CWDS ― то же, но за спецификацией присутствует символ \;
_CWP ― полная спецификация рабочего каталога, но без указания привода;
_CWPS ― то же, но за спецификацией имеется символ \;
_DATE ― текущая дата в формате ММ-ДД-ГГ (США), ДД-ММ-ГТ (Европа) или ГТ-ММ-ДД
(Япония);
_DISK ― имя текущего привода (без последующего двоеточия);
_DOSVER ― версия DOS (например, 33);
_DOW ― строка, обозначающая день недели:
Моn — понедельник;
Tue —
вторник;
Wed —
среда;
Тhи — четверг,
Fri —
пятница;
Sat —
суббота;
Sun —
воскресенье;
_FG —
наименование цвета символов;
_MONITOR — строка, обозначающая тип дисплея:
MONO — монохромный дисплей;
COLOR — цветной дисплей;
_NDP — строка, идентифицирующая тип
сопроцессора плавающей тачки:
000 — сопроцессор
отсутствует;
087 — сопроцессор 8087;
287 — сопроцессор 80287;
387 —
сопроцессор 80387 или МП 80486, в состав которого стандартно входит сопроцессор;
_ROWS — число строк на экране дисплея;
_SHELL — номер текущего уровня КП NDOS в режиме свопинга (0 — первичная копия).
Если NDOS работает в резидентном режиме, то возвращается 99;
_Т1МЕ — текущее время в
формате ЧЧ:ММ:СС (разделитель зависит от установленных
средств национальной поддержки);
_VIDEO — строка, идентифицирующая тип дисплейного адаптера:
MONO — адаптер MDA;
CGA —
адаптер CGA;
EGA —
адаптер EGA;
VGA —
адаптер VGA.