# tclvars

Переменные, используемые Tcl.

## ОПИСАНИЕ

Следующие глобальные переменные автоматически создаются при запуске программ. Как правило, они ведутся автоматически и в пользовательском приложении их значения не изменяются.

env

  Эта переменная представляет собой массив, элементы которого соответствуют переменным окружения. Присвоение значения элементу массива приводит к изменению значения (или созданию) соответствующей переменной окружения. Удаление элемента массива с помощью команды unset удаляет соответствующую переменную окружения. Модифицированное состояние массива используется для процессов - потомков, запущенных командой exec.

  На Windows-платформах переменные PATH, COMSPEC и WINDIR всегда пишутся в верхнем регистре. Все остальные переменные оставляются в том виде, в каком они заданы в операционной системе.

  На Macintosh-платформах, на которых нет переменных окружения, автоматически формируемый массив env, тем не менее, содержит следующие элементы:

  LOGIN, USER, SYS_FOLDER, APPLE_M_FOLDER, CP_FOLDER, DESK_FOLDER, EXT_FOLDER, PREF_FOLDER, PRINT_MON_FOLDER, SHARED_TRASH_FOLDER, TRASH_FOLDER, START_UP_FOLDER, PWD

errorCode

  При возникновении ошибки эта переменная содержит дополнительную информацию об ошибке в форме, удобной для автоматической обработки. Эта информация содержится в виде списка из одного или более элементов. Первый элемент списка содержит имя класса ошибки. Его значение определяет формат остальной части списка. Стандартно используются следующие классы ошибок (в приложении могут определяться и дополнительные классы):

  ARITH code msg
    Этот класс ошибки формируется при арифметической ошибке (например, при попытке делить на ноль в команде expr). Код code определяет конкретный тип ошибки, а msg содержит текст с описанием ошибки. Возможные значения кода DIVZERO (попытка делить на нуль), DOMAIN (аргумент не принадлежит области определения функции, например acos(2)), IOVERFLOW (переполнение при целочисленных операциях), OVERFLOW (переполнение при вычислениях с плавающей запятой) или UNKNOWN (если не удается определить тип ошибки).
  CHILDKILLED pid sigName msg
    Этот класс ошибки используется, если выполнение процесса - потомка прервано сигналом. Второй элемент списка (pid) содержит в этом случае идентификатор прерванного процесса. Элемент sigName содержит символьное имя сигнала, например SIGPIPE, а в элементе msg содержит текст с описанием сигнала, например "write on pipe with no readers".
  CHILDSTATUS pid code
    Этот класс ошибки используется, когда процесс - потомок завершается с кодом ошибки. Второй элемент списка (pid) содержит в этом случае идентификатор прерванного процесса а третий элемент (code) - значение кода ошибки.
  CHILDSUSP pid sigName msg
    Этот класс ошибки используется, когда выполнение процесса-потомка приостановлено из-за сигнала. Элементы списка имеют тот же смысл, что и для CHILDKILLED.
  NONE
    Этот класс используется для тех ошибок, для которых дополнительная информация не может быть получена, поскольку при попытке ее выдать произошла ошибка.
  POSIX errName msg
    Этот класс используется для тех ошибок, которые происходят при выполнении вызовов POSIX. Второй элемент списка содержит символическое имя ошибки, например, ENOENT, а в элементе msg содержит текст с описанием ошибки, например, "no such file or directory".
errorInfo
  При возникновении ошибки эта переменная содержит описание команды или процедуры, в которой произошла последняя ошибка. Описание построено в виде описания стека, указывающего вложенные Tcl-команды, выполнявшиеся при возникновении ошибки.
tcl_library
  В этой переменной хранится имя каталога, содержащего системную библиотеку Tcl-скриптов, используемых, в частности, при автозагрузке. Величина этой переменной возвращается командой info library. Начальное значение переменной формируется в результате просмотра ряда каталогов и поиска в них соответствующих скриптов. Если задана переменная окружения TCL_LIBRARY, указанный в ней каталог проверяется первым. Если переменная TCL_LIBRARY не задана или в ней не содержатся необходимые файлы, то просматриваются еще несколько каталогов, зависящих от расположения каталогов Tcl и текущего каталога.
tcl_patchLevel
  В этой переменной хранится информация о текущей версии Tcl, например 7.3p2 для второй доработки версии 7.3. или 7.4b4 для четвертого бета релиза версии 7.4. Значение переменной возвращается командой info patchlevel.
tcl_pkgPath
  Переменная содержит список каталогов, используемых для размещения пакетов библиотек. Обычно список состоит из двух элементов - каталога для бинарных файлов и каталога для скриптов. Пакеты обычно устанавливаются как подкаталоги этих каталогов. Исходное значение переменной добавляется к списку каталогов в auto_path и используются для поиска пакетов при выполнении команды package require. Последующие изменения в tcl_pkgPath не отражаются в переменной auto_path. Поэтому дополнительные каталоги для поиска пакетов необходимо указывать (если это нужно) непосредственно в переменной auto_path.
tcl_platform
  Эта переменная является ассоциативным массивом, в элементах которого содержится информация о платформе. Ниже содержится список элементов массива (расширения и приложения могут хранить информацию о себе в дополнительных элементах этого массива).
byteOrder
  Исходный порядок байтов в слове: littleEndian или bigEndian
machine
  Набор команд, исполняемых на машине, например intel, PPC, 68k или sun4m. На Unix - платформах совпадает с величиной, возвращаемой командой uname -m.
os
  Имя операционной системы, например Win32s, Windows NT, MacOS или SunOS. На Unix - платформах совпадает с величиной, возвращаемой командой uname -s.
osVersion
  Версия операционной системы. На Unix - платформах совпадает с величиной, возвращаемой командой uname -r.
platform
  Может принимать одно из значений windows, macintosh или unix.
tcl_precision

  Переменная управляет числом цифр при переводе десятичных чисел в строки. Значение по умолчанию 12. Максимальное значение 17 позволяет переводить числа из двоичного представления в строковое и обратно без потери точности. Однако при этом отключается округление. В результате команда

      	  expr 1.4

  вернет значение 1.3999999999999999, если tcl_precision равна 17, и значение. 1.4 если tcl_precision равна 12.

  Все интерпретаторы в процессе используют одно и тоже значение tcl_precision. Изменение точности представления чисел в одном из интерпретаторов ведет к его синхронному изменению во всех остальных. Однако, в надежных интерпретаторах изменять точность нельзя.

tcl_rcFileName
  Эта переменная используется при инициализации для определения имени пользовательского фала, исполняемого при запуске. Для wish обычно ее значение ~/.wishrc для Unix платформ и ~/wishrc.tcl для Windows платформ. Если соответствующий файл найден, он читается командой source.
tcl_rcRsrcName
  Используется только на Macintosh платформах для задания TEXT ресурса.
tcl_traceCompile
  Эта переменная позволяет управлять объемом информации, формирующейся при компиляции Tcl в байт-код. По умолчанию значение переменной равно 0 и никакая информация не выводится. Если присвоить tcl_traceCompile значение 1, то при компиляции каждой процедуры или команды верхнего уровня на стандартный выход посылается одна строка комментариев. Если присвоить tcl_traceCompile значение 2, то при компиляции в стандартный вывод выдается подробный листинг. Это бывает полезно при проблемах, возникающих в процессе компиляции, особенно, при переводе старых программ на Tcl8.0.
tcl_traceExec
  Эта переменная позволяет управлять объемом информации, выводящейся при исполнении байт-кода. По умолчанию tcl_traceExec равна 0 и никакая информация не выводится. Если присвоить tcl_traceExec значение 1, то при исполнении процедур в стандартный вывод выдается одна строка текста. Если присвоить tcl_traceExec значение 1, то строка текста выдается также при выполнении каждой команды, а если присвоить tcl_traceExec значение 3, то выдается информация о выполнении каждой инструкции байт-кода. Это бывает полезно при проблемах, возникающих в процессе компиляции и исполнения, особенно, при переводе старых программ на Tcl8.0.
tcl_version
  Эта переменная содержит номер версии Tcl в форме x.y. Обычно изменение x может означать потерю совместимости с предыдущими версиями, тогда как изменение y означает небольшие улучшения и исправление ошибок. Значение переменной возвращается командой info tclversion.