Язык макросов подключения для редактора макросов подключения

При работе со многими службами доступа к сети Internet и другими интерактивными службами для установки связи необходимо вручную вводить такие сведения, как имя пользователя и пароль. Редактор макросов подключения позволяет написать макрос для автоматизации этого процесса.

Макрос подключения — это текстовый файл, который содержит набор команд, параметров и выражений, запрашиваемых службой доступа к сети Internet или интерактивной службой для установки связи и начала работы со службой. Для создания макроса можно использовать любой текстовый редактор, в том числе блокнот Windows 95. После создания макроса его можно связать с нужным соединением удаленного доступа с помощью редактора макросов подключения.

Cтруктура макроса

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

Ниже показана стандартная структура макроса подключения:

; Строка макроса, начинающаяся с точки с запятой, является

; комментарием. Комментарии могут занимать несколько строк,

; но в начале каждой строки должна стоять точка с запятой.

proc main

; Макрос может содержать любое число переменных

; и команд.

описания переменных

блок команд

endproc

Макрос должен обязательно содержать главную процедуру, которая начинается с ключевого слова proc и заканчивается ключевым словом endproc.

Описание переменных помещается перед блоком команд. Выполнение макроса начинается с первой команды главной процедуры, после чего выполняются последующие команды в том порядке, как они описаны в макросе. Выполнение макроса заканчивается после выполнения последней команды главной процедуры.

Переменные

В макросах допускается использование переменных. Имена переменных должны начинаться с буквы или символа подчеркивания (‘_’) и могут содержать любую последовательность строчных или заглавных букв, цифр или символов подчеркивания. В качестве имен переменных запрещается использовать зарезервированные слова, список которых приведен в конце данного документа.

Перед использованием любой переменной необходимо предварительно описать ее тип данных, то есть указать, какие значения может хранить переменная. В макросах подключения используются три типа переменных:

Системные переменные

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

Строковые константы

Редактор макросов подключения поддерживает обработку управляющих последовательностей, записываемых с помощью символов “^”, “<” и “\”, как описано в данном разделе.

Константа    Описание

^символ       Обработка сочетания с символом “^” (крышка).

Если символ имеет значение от “@” до “_”, данное сочетание преобразуется в однобайтовое значение от 0 до 31. Например, ^M преобразуется в символ возврата каретки.

Если символ имеет значение от a до z, данное сочетание преобразуется в однобайтовое значение от 1 до 26.

Если символ имеет любое другое значение, обработка сочетания не производится.

<cr> Возврат каретки

<lf> Перевод строки

\” Кавычка

\^  Символ “^” (крышка)

\< Символ “<” (меньше)

\\ Символ “\” (обратная косая черта) 

Примеры: 

transmit “^M”

transmit “Иванов^M”

transmit “<cr><lf>”

waitfor “<cr><lf>”

Выражения

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

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

Унарные операторы:

Оператор    Тип операции

Унарный минус        (изменение знака)

Двоичное дополнение

В следующей таблице перечислены бинарные операторы в порядке убывания приоритета. Сначала описаны операторы с более высоким приоритетом:

Примеры:

count = 3 + 5 * 40

transmit “Привет” + ” всем!”

delay 24 / (7 – 1)

Комментарии

Вся строка текста, начинающаяся с точки с запятой, считается комментарием.

Примеры:

; это комментарий

transmit “Привет”; передача строки “Привет”

Ключевые слова

Ключевые слова определяют структуру макроса. В отличие от команд они не вызывают каких-либо действий. Ключевые слова перечислены ниже.

proc имя

Обозначение начала процедуры. Все макросы должны содержать главную процедуру (proc main). Выполнение макроса начинается с первой команды главной процедуры и завершается на последней команде главной процедуры.

endproc

Обозначение конца процедуры. После выполнения инструкции endproc главной процедуры подключение удаленного доступа запускает протокол PPP или SLIP.

integer имя [ = значение ]

Описание целочисленной переменной. Для присвоения значения переменной можно использовать любое числовое выражение или другую переменную.

string имя [ = значение ]

Описание строковой переменной. Для присвоения значения переменной можно использовать любое строковое выражение или другую переменную.

boolean имя [ = значение ]

Описание логической переменной. Для присвоения значения переменной можно использовать любое логическое выражение или другую переменную.

Команды

Все команды являются зарезервированными словами. Это означает, что названия команд запрещается использовать в качестве имен переменных. В данном разделе перечислены команды макросов подключения:

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