D3 Reference Manual

Index | Help

Поиск по страницам

Разделы / Unix / d3tcl

d3tcl

Позволяет выполнять команды TCL D3 из оболочки Unix

d3tcl
d3tcl {tcl.command}
d3tcl -boot

Позволяет выполнять команды TCL D3 прямо из оболочки операционной системы Unix. Она устанавливается в процесcе инсталляции системы D3 как сценарий (script) интерпретатора команд Unix. Для правильной работы команды "d3tcl" пользователь должен правильно создать несколько переменных среды командного процессора Unix.

  • PICKVM - это имя виртуальной машины D3. Если эта переменная не задана, по умолчанию предполагается "pick0".
  • PICKUSER - это имя пользователя D3. Если эта переменная не задана, предполагается, что пользователь D3 - это то же самое, что и пользователь Unix.
  • PICKUPASS - это пароль пользователя D3. Эта переменная требуется только в случае, если имеется пароль пользователя.
  • PICKMD - это главный словарь D3. Эта переменная должна быть задана за исключением случая, когда макрос пользователя автоматически подключает к конкретному словарю.
  • PICKMDPASS - это пароль главного словаря D3. Эта переменная требуется только в случае, если для главного словаря имеется пароль.

У команды "d3tcl" имеется несколько вариантов.

Команда "d3tcl" без параметров повышает уровень оболочки TCL D3 относительно текущего уровня Unix. Это эквивалентно команде "sh" Unix. Отключение от системы D3 (logging off) автоматически возвращает в операционную систему Unix. Следует отметить, что хотя никакие сообщения по поводу подключения не появляются, подсказка "login" и макрос пользователя выполняются без вывода на экран. Макрос главного словаря выполняется обычным образом.

Команда в формате "d3tcl {tcl.command}" выполняет единственную команду TCL и возвращается в Unix. Следует помнить о том, что интерпретатор команд Unix выполняет синтаксический анализ команды TCL прежде, чем посылать ее в D3, и, следовательно, для предотвращения ошибок следует избегать всех специальных символов, включая "(", или нейтрализовать их с помощью символа обратной косой черты ("\"). Следует также отметить, что команда "tcl" подключается к системе D3 и отключается от нее при каждом выполнении.

Команда в формате "d3tcl -boot" пытается осуществить загрузку нужной виртуальной машины D3. По окончании загрузки система D3 передает управление не процедуре подключения (logon), а операционной системе Unix. Это может быть полезно для сценариев оболочки, которые выполняются автоматически при загрузке машины Unix.

Опции:

Опция "-boot" загружает машину D3.

Примеры:

Следующая последовательность команд создает необходимые переменные среды, повышает уровень оболочки TCL D3, выполняет несколько команд TCL и осуществляет возврат в оболочку Unix. Следует отметить, что этот пример показывает и ввод, и вывод. Предполагается также, что "bsh" или "ksh" - это активная оболочка Unix.

$ PICKUSER="dm"; export PICKUSER
$ PICKMD="dm"; export D3MD
$ d3tcl
:who
6 dm dm
:time
08:14:12  01 Mar 1993  Monday
:off
$ 

Команду "d3tcl" можно легко включать в сценарии оболочки Unix. В следующем примере показан сценарий под названием "up", который вызывает процессор обновления (UP) системы D3 из оболочки Unix.

#Shell script to run update processor
exec d3tcl u $*

Сценарий оболочки вводится с помощью редактора типа "vi" и запоминается в файловой системе Unix. Затем необходимо изменить его разрешения, чтобы его можно было выполнять с помощью команды "chmod a+x up". И, наконец, необходимо поместить сценарий в справочник, который содержится в переменных "$PATH" всех пользователей. Чтобы узнавать новую команду, пользователи в некоторых случаях должны отключиться и подключиться заново. Для прогона сценария оболочки пользователи могут ввести, например, следующее:

up bp date

Эта команда вызывает процессор обновления (UP) для программы "date" в файле "bp". Эта запись может быть записана в файл или даже выполнена (с помощью команды "ctl-X R"). По окончании UP осуществит возврат в оболочку Unix.

Команда "tcl" позволяет также передавать данные из системы D3 в Unix через программные каналы (pipes). Следующий пример помещает частичную распечатку файла "bp" системы D3 в файл "bp.list" Unix.

tcl list bp sampling 5 \(hcnb | tr -d "\015" > bp.list

В связи с этим оператором можно отметить следующее. Во-первых, команде "(" должен предшествовать символ обратной косой черты ("\"), т.к. в противном случае интерпретатор команд воспримет "(" как специальный символ. Кроме того, выходные данные сначала должны быть направлены в команду "tr", которая убирает символы возврата каретки. Это необходимо, т.к. система D3 осуществляет вывод в "сыром" (необработанном) виде.

Cледующий пример демонстрирует различные возможности оболочки Unix. Первая строка помещает имя первой программы в файле "bp" в переменную "PROGRAM" оболочки Unix. Затем эта переменная "экспортируется" ("export"), чтобы к ней могли обратиться "подчиненные" оболочки (sub-shells). И, наконец, эта программа, являющаяся первой в файле "bp", копируется в запись под именем "backup", а результаты операции запоминаются в файле "log" Unix.

PROGRAM=`d3tcl list bp sampling 1 \(hcnb | tr -d "\015"`
export PROGRAM
echo "backup\r" | d3tcl copy bp $PROGRAM \(o | tr -d "\015" > log

Если во входном программном канале опустить "\r", выполнение команды прекратится, и произойдет возврат в Unix без каких-либо действий.

Другой режим используется, если действительные команды передаются в программу "d3tcl" по программным каналам, как в следующем примере. следует отметить, что пример показывает и ввод, и вывод, и предполагается, что "bsh" или "ksh" - это активная оболочка Unix.

$ echo "select bp with a0 \"date]\"\rcompile bp\r" | d3tcl
:select bp with a0 "date]"
[404] 2 items selected out of 279 items.
:compile bp
date
***************  ...
[241] successful compile!   3 frames used.
date.iconv
******
[241] Successful compile!   1 frame(s) used.
:

Если команды передаются в оператор "d3tcl" по программному каналу и это единственный ввод в оператор, система D3 ведет себя так, как если бы эти команды были введены прямо с клавиатуры. Весь смоделированный ввод и вывод, включая приглашения, посылается в стандартное выходное устройство (standard-out). Следует также отметить, что в этом режиме в программу "d3tcl" можно передать несколько команд и что списки отобранных записей (select lists) будут сохраняться между этими командами при условии, что они выполняются в ходе одного выполнения программы "d3tcl".