Язык макросов подключения
для редактора макросов подключения
Copyright (c) 1995-1996 Microsoft Corp.
Содержание
1.0 Общие сведения
2.0 Cтруктура макроса
3.0 Переменные
3.1 Системные переменные
4.0 Строковые константы
5.0 Выражения
6.0 Комментарии
7.0 Ключевые слова
8.0 Команды
9.0 Зарезервированные слова
1.0 Общие сведения
При работе со многими службами доступа к сети Internet и другими интерактивными службами для установки связи необходимо вручную вводить такие сведения, как имя пользователя и пароль. Редактор макросов подключения позволяет написать макрос для автоматизации этого процесса.
Макрос подключения — это текстовый файл, который содержит набор команд, параметров и выражений, запрашиваемых службой доступа к сети Internet или интерактивной службой для установки связи и начала работы со службой. Для создания макроса можно использовать любой текстовый редактор, в том числе блокнот Windows 95. После создания макроса его можно связать с нужным соединением удаленного доступа с помощью редактора макросов подключения.
2.0 Cтруктура макроса
Основными элементами макроса подключения являются команды. Некоторые команды требуют задания параметров, которые уточняют, какое именно действие выполняет команда. В качестве параметров любой команды допускается использование результатов выражений, состоящих из операторов и аргументов. Примерами выражений являются арифметические операции, слияние строк и операции отношения.
Ниже показана стандартная структура макроса подключения:
;
; Строка макроса, начинающаяся с точки с запятой, является
; комментарием. Комментарии могут занимать несколько строк,
; но в начале каждой строки должна стоять точка с запятой.
;
proc main
; Макрос может содержать любое число переменных
; и команд.
описания переменных
блок команд
endproc
Макрос должен обязательно содержать главную процедуру, которая начинается с ключевого слова proc и заканчивается ключевым словом endproc.
Описание переменных помещается перед блоком команд. Выполнение макроса начинается с первой команды главной процедуры, после чего выполняются последующие команды в том порядке, как они описаны в макросе. Выполнение макроса заканчивается после выполнения последней команды главной процедуры.
3.0 Переменные
В макросах допускается использование переменных. Имена переменных должны начинаться с буквы или символа подчеркивания (‘_’) и могут содержать любую последовательность строчных или заглавных букв, цифр или символов подчеркивания. В качестве имен переменных запрещается использовать зарезервированные слова, список которых приведен в конце данного документа.
Перед использованием любой переменной необходимо предварительно описать ее тип данных, то есть указать, какие значения может хранить переменная. В макросах подключения используются три типа переменных:
Тип Описание
integer Отрицательные или положительные целые числа,
например 7, -12 или 5698.
string Строки символов, заключенные в кавычки, например «Привет всем!» или «Password:».
boolean Логические значения TRUE (истина) или FALSE (ложь).
Инструкция присваивания значения переменной выглядит следующим образом:
переменная = выражение
При выполнении этой инструкции переменной присваивается значение указанного выражения.
Примеры:
integer count = 5
integer timeout = (4 * 3)
integer i
boolean bDone = FALSE
string szIP = «getip 2»
set ipaddr szIP
3.1 Системные переменные
Значения системных переменных задаются при выполнении команд макроса подключения или определяются при установке удаленного подключения. Системные переменные доступны только для чтения, то их изменение в макросе подключения не допускается. Ниже перечислены системные переменные:
Имя Тип Описание
$USERID String Имя пользователя для текущего подключения. Пользователь указывает свое имя при создании подключения удаленного доступа.
$PASSWORD String Пароль для текущего подключения. Пароль также задается пользователем при создании подключения удаленного доступа.
$SUCCESS Boolean Некоторые команды присваивают этой переменной значение TRUE (истина), если команда
была выполнена успешно. Проверка значения этой
переменной позволяет организовать условное
выполнение групп команд макроса.
$FAILURE Boolean Некоторые команды присваивают этой переменной значение TRUE (истина), если при выполнении команды возникла ошибка. Проверка значения этой переменной позволяет организовать условное выполнение групп команд макроса.
Эти системные переменные можно использовать в любом выражении подходящего типа. Например, команда
transmit $USERID
является правильной, так как $USERID — переменная строкового типа.
4.0 Строковые константы
Редактор макросов подключения поддерживает обработку управляющих последовательностей, записываемых с помощью символов «^», «<» и «\», как описано в данном разделе.
Константа Описание
^символ Обработка сочетания с символом «^» (крышка).
Если символ имеет значение от «@» до «_», данное сочетание преобразуется в однобайтовое значение от 0 до 31. Например, ^M преобразуется в символ возврата каретки.
Если символ имеет значение от a до z, данное сочетание преобразуется в однобайтовое значение от 1 до 26.
Если символ имеет любое другое значение, обработка сочетания не производится.
<cr> Возврат каретки
<lf> Перевод строки
\» Кавычка
\^ Символ «^» (крышка)
\< Символ «<» (меньше)
\\ Символ «\» (обратная косая черта)
Примеры:
transmit «^M»
transmit «Иванов^M»
transmit «<cr><lf>»
waitfor «<cr><lf>»
5.0 Выражения
Выражением называется набор операторов и значений, при вычислении которого получается результат. Выражения можно использовать вместо параметров в любой команде макроса.
Выражение может содержать любые переменные, целые числа, строки или логические значения, а также любые унарные или бинарные операторы, перечисленные в следующих таблицах. Все унарные операторы имеют наивысший приоритет. Приоритет бинарных операторов определяется их расположением в таблице.
Унарные операторы:
Оператор Тип операции
— Унарный минус (изменение знака)
! Двоичное дополнение
В следующей таблице перечислены бинарные операторы в порядке убывания приоритета. Сначала описаны операторы с более высоким приоритетом:
Операторы Операции Допустимые типы значений
* / Умножение, деление Целые числа
+ — Сложение, вычитание Строки (только +), целые числа
< > <= >= Сравнение Целые числа
== != Равенство Целые числа, строки, логические
and Логическое И Логические значения
or Логическое ИЛИ Логические значения
Примеры:
count = 3 + 5 * 40
transmit «Привет» + » всем!»
delay 24 / (7 — 1)
6.0 Комментарии
Вся строка текста, начинающаяся с точки с запятой, считается комментарием.
Примеры:
; это комментарий
transmit «Привет» ; передача строки «Привет»
7.0 Ключевые слова
Ключевые слова определяют структуру макроса. В отличие от команд они не вызывают каких-либо действий. Ключевые слова перечислены ниже.
proc имя
Обозначение начала процедуры. Все макросы должны содержать главную процедуру (proc main). Выполнение макроса начинается с первой команды главной процедуры и завершается на последней команде главной процедуры.
endproc
Обозначение конца процедуры. После выполнения инструкции endproc главной процедуры подключение удаленного доступа запускает протокол PPP или SLIP.
integer имя [ = значение ]
Описание целочисленной переменной. Для присвоения значения переменной можно использовать любое числовое выражение или другую переменную.
string имя [ = значение ]
Описание строковой переменной. Для присвоения значения переменной можно использовать любое строковое выражение или другую переменную.
boolean имя [ = значение ]
Описание логической переменной. Для присвоения значения переменной можно использовать любое логическое выражение или другую переменную.
8.0 Команды
Все команды являются зарезервированными словами. Это означает, что названия команд запрещается использовать в качестве имен переменных. В данном разделе перечислены команды макросов подключения:
delay nСекунд
Задержка перед выполнением следующей команды макроса. Время ожидания (в секундах) задается значением параметра nСекунд.
Примеры:
delay 2 ; задержка на 2 секунды
delay x * 3 ; задержка на x * 3 секунд
getip значение
Ожидание адреса IP, получаемого от удаленного компьютера. Если служба доступа к Internet возвращает в строке сразу несколько адресов IP, используйте параметр значение для выбора нужного адреса IP.
Примеры:
; получение второго адреса IP
set ipaddr getip 2
; присвоение переменной первого полученного адреса IP
szAddress = getip
goto метка
Переход к строке макроса, начинающейся с метки, и продолжение выполнения всех описанных далее команд.
Пример:
waitfor «Prompt>» until 10
if !$SUCCESS then
goto BailOut ; переход к метке BailOut и выполнение
; всех команд после нее.
endif
transmit «bbs^M»
goto End
BailOut:
transmit «^M»
halt
Остановка выполнения макроса. Данная команда не закрывает диалоговое окно терминала. Для установки связи необходимо нажать кнопку «Продолжить». Перезапуск макроса подключения также невозможен.
if условие then
команды
endif
Выполнение набора команд, если условие истинно (TRUE).
Пример:
if $USERID == «Иванов» then
transmit «Мой пароль^M»
endif
метка :
Определяет место в макросе для выполнения переходов. Метка должна иметь уникальное имя и удовлетворять общим соглашениям для имен переменных.
set port databits 5 | 6 | 7 | 8
Изменение числа бит в байтах, передаваемых и получаемых во время сеанса связи. Число бит может быть от 5 до 8. Если макрос не содержит этой команды, при удаленном доступе будут использованы стандартные значения свойств связи.
Пример:
set port databits 7
set port parity none | odd | even | mark | space
Изменение режима проверки четности для порта во время сеанса связи. Если макрос не содержит этой команды, при удаленном доступе будут использованы стандартные значения свойств связи.
Пример:
set port parity even
set port stopbits 1 | 2
Изменение числа стоповых бит для порта во время сеанса связи. Допускается только два значения: 1 или 2. Если макрос не содержит этой команды, при удаленном доступе будут использованы стандартные значения свойств связи.
Пример:
set port stopbits 2
set screen keyboard on | off
Разрешение или запрет ввода с клавиатуры в окно терминала.
Пример:
set screen keyboard on
set ipaddr строка
Определение адреса IP рабочей станции во время сеанса связи. Строка должна быть записана в формате адреса IP.
Примеры:
szIPAddress = «11.543.23.13»
set ipaddr szIPAddress
set ipaddr «11.543.23.13»
set ipaddr getip
transmit строка [ , raw ]
Отправка строки удаленному компьютеру.
Если не указан параметр raw, удаленный компьютер будет проводить обработку управляющих команд и сочетаний символов со знаком «крышка» (^). Параметр raw полезен при передаче системных переменных $USERID и $PASSWORD, когда в имени пользователя или пароле содержится специальная последовательность символов, которая при отсутствии параметра raw будет преобразована по обычным правилам.
Примеры:
transmit «slip» + «^M»
transmit $USERID, raw
waitfor строка [ , matchcase ] [ then метка
{ , string [ , matchcase ] then метка } ]
[ until время ]
Ожидание получения компьютером одной или нескольких строк от удаленного компьютера. Если не указан параметр matchcase, регистр символов в параметре строка не учитывается.
Если указан параметр then метка, после получения нужной строки выполнение макроса будет продолжено с команды, стоящей после метки.
Необязательный параметр until время определяет максимальное время в секундах, в течение которого компьютер ожидает получения строки перед выполнением следующей команды. При отсутствии этого параметра время ожидания не будет ограничено, и компьютер будет находиться в состоянии ожидания до получения нужной строки.
После получения компьютером одной из указанных строк системной переменной $SUCCESS присваивается значение TRUE. Если в течение заданного времени строка не получена, системной переменной присваивается значение FALSE.
Примеры:
waitfor «Login:»
waitfor «Password?», matchcase
waitfor «prompt>» until 10
waitfor
«Login:» then DoLogin,
«Password:» then DoPassword,
«BBS:» then DoBBS,
«Other:» then DoOther
until 10
while условие do
команды
endwhile
Выполнение набора команд до тех пор, пока условие не станет ложным (FALSE).
Пример:
integer count = 0
while count < 4 do
transmit «^M»
waitfor «Login:» until 10
if $SUCCESS then
goto DoLogin
endif
count = count + 1
endwhile
…
9.0 Зарезервированные слова
Перечисленные ниже слова являются зарезервированными и не могут использоваться в качестве имен переменных.
and boolean databits delay
do endif endproc endwhile
even FALSE getip goto
halt if integer ipaddr
keyboard mark matchcase none
odd off on or
parity port proc raw
screen set space stopbits
string then transmit TRUE
until waitfor while