Previous | Next | Trail Map |

Index |

Сценарии

     Коммерческая версия T-Mail позволяет использовать при его работе
сценарии.

     Сценарии - это последовательности некоторых действий T-Mail, описанные
на специальном  языке сценариев. Эти описания  хранятся в файлах сценариев,
которые  представляют собой  обычные текстовые  файлы. Каждая  инструкция в
файле сценария должна располагаться в  отдельной строке, при этом начальные
и конечные  пробелы  игнорируются.  В  файлах  сценариев можно использовать
комментарии, директивы DEFINE и номера задач так же, как и в основном файле
конфигурации   t-mail.ctl .  При   интерпретации  сценария  T-Mail  выполняет
инструкции в том порядке, в каком  они расположены в файле сценария, если с
помощью языка описания сценариев не задано иное.

     Командой на выполнение соответствующего файла сценария служит ключевое
слово Script.  Сценарий может выполняться  как и любое  другое действие при
обработке Process, Process_Flag, Key, External, а также перед сеансом связи
(при задании Script в  subst.lst ).

     Если  выполнение сценария  вызывается  из  другого сценария,  то после
завершения  второго  (вызванного)  сценария  управление  обратно  в  первый
(инициировавший вызов) сценарий не передается.

     Ниже  перечислены  инструкции,  которые  можно  использовать  в  файле
сценария:

     Timer  <время>

         Эта   инструкция  задает   максимальную  длительность   выполнения
         сценария  по   времени  в  секундах.   По  умолчанию  максимальная
         длительность  выполнения  сценария  -   60  секунд.  По  истечении
         заданного времени выполнение сценария прекращается.

     Set  <переменная>=<значение>

         Эта  инструкция устанавливает  значение любой  переменной из файла
          t-mail.ctl . Первоначальное значение переменной будет восстановлено
         как  и в  случае  выполнения  обычной процедуры  Set ( events.ctl ):
         после  завершения  сеанса  связи  (если  сценарий выполнялся перед
         сеансом связи), либо при любом перечтении файлов конфигурации.

     Disconnect

         Эта инструкция прерывает соединение.

     Xmit   <строка>
     Xmit  @<filename>

         Эта  инструкция  передает  <строку>  в  модем.  Символы "|" в этой
         строке будут заменены на символ  "возврат каретки" (CR). Во втором
         варианте в модем будет побайтно передан файл с именем <filename>.

     XmitLn <строка>

         Эта инструкция  действует так же, как  Xmit, единственным отличием
         является  то, что  к передаваемой  строке будут  добавлены символы
         начала новой строки <cr><lf>.

     Delay  <время>

         Эта  инструкция  приостанавливает  выполнение  сценария  на время,
         указанное в параметре <время> (в секундах).

     Exit

         Эта  инструкция   вызывает  завершение  сценария.   Если  сценарий
         выполнялся   непосредственно   перед   сеансом   связи,  то  после
         завершения этого сценария T-Mail начинает сеанс связи.

*    Exec  <команда>

         Эта  инструкция выполняет  внешнюю программу  или другие действия.
         Аналогично использованию  Exec в файле   events.ctl  и в  директивах
         Process и Process_Flag ( t-mail.ctl ).

*    Carrier

         Эта  инструкция анализирует  наличие несущей  (carrier). Результат
         анализа может быть использован в последующей инструкции Goto.

*    Baud  <скорость>

         Эта  инструкция сравнивает  скорость установленного  соединения со
         значением <скорость>. Результаты сравнения могут быть использованы
         в последующей инструкции Goto.

*    Address  <addr list>

         Эта инструкция сравнивает адрес  вызываемой системы с <addr list>.
         Результат   сравнения   может   быть   использован  в  последующей
         инструкции Goto.

*    Wait  [<timeout>] <строка>

         Эта  инструкция  ожидает  поступления  из  модема строки символов,
         заданных  в параметре  <строка>.  Если  параметр <строка>  имеет в
         конце символ  "|", то принятая строка  должна завершаться символом
         "возврат каретки"  (CR). Необязательный параметр  <timeout> задает
         время этого ожидания в секундах. Если за это время заданная строка
         принята  не  будет,  то  ожидание  завершается.  Если  же параметр
         <timeout>  не  определен,  то  ожидание  будет  осуществляться  до
         завершения сценария  по истечении времени,  заданного в инструкции
         Timeout.

*    Dial [<tries>]  <address>|#<phone number>

         Эта  инструкция  выполняет  набор  номера  в  эмуляторе  терминала
         T-Mail.  В  ней  может  быть  задан  как  адрес вызываемой системы
         <address>, так  и произвольный номер телефона.  В последнем случае
         номер  предваряется  символом  "#".  Можно  задать  число  попыток
         дозвона -  <tries>. Это необязательный  параметр, его значение  по
         умолчанию  - 5.  Результаты  работы  данной инструкции  могут быть
         использованы в последующей инструкции Goto.

*    Zreceive
*    Zsend <filename>

         Эти инструкции инициируют соответственно  прием или передачу файла
         (или  файлов) с  помощью протокола  Zmodem. Они  могут быть заданы
         только во время работы эмулятора  терминала. Для приема и передачи
         используется либо  встроенный протокол Zmodem,  либо внешний (если
         таковой  задан с  помощью переменных  Term_Upload и  Term_Download
         ( t-mail.ctl ).    Если     определена    переменная    Term_DownDir
         ( t-mail.ctl ),  то  прием  файлов   будет  осуществлен  в  каталог,
         заданный этой переменной. В  качестве <filename> может быть задано
         имя  файла  или  шаблон  имени  файла,  в соответствии с правилами
         используемой операционной системы.  Результаты приема или передачи
         файлов могут быть использованы в последующей инструкции Goto.

     :<метка>

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

     Goto  <метка#1>  [<метка#2>]

         Эта инструкция  вызывает в порядке  выполнения инструкций сценария
         безусловный или условный переход на указанную метку.

         Если в качестве параметра  задана только <метка#1>, то выполняется
         безусловный переход к выполнению  инструкции, следующей за строкой
         с меткой <метка#1>.

         Если  в  качестве  параметров  заданы  две  метки,  то выполняется
         переход  к первой  или второй   метке в  зависимости от  того, как
         завершилась предыдущая инструкция (из числа инструкций, отмеченных
         знаком "*"), как показано ниже в таблице:

      Предыдущая        Переход к метке          Переход к метке
      инструкция          <метка#1>                <метка#2>
      ---------------------------------------------------------------------

      Carrier        если несущая присутствует   если несущая отсутствует

      Wait           если указанная строка       если до завершения времени
                     была принята                ожидания указанная строка
                                                 принята не была

      Exec           если код завершения         если код завершения
                     (errorlevel) равен 0        (errorlevel) не равен 0

      Address        если адрес вызываемой       если адрес вызываемой
                     системы входит в            системы не входит в
                     заданный список адресов     заданный список адресов

      Baud           если скорость соединения    если скорость соединения
                     больше или равна заданной   меньше заданной

      Dial           если после набора номера    если было превышено
                     обнаружена несущая          заданное число попыток
                                                 дозвона или набор был
                                                 прерван оператором

      Zreceive       если прием или передача     если прием или передача
      Zsend          файлов завершились          файлов не завершились
                     успешно                     успешно

     Пример (example.scr):
     ---------------------
------------------------------------------------------------------------
     ; Test script

         Timer   45
         Delay   2
         Baud    14400                    ; check connection baudrate
         Goto    _Start  _Cancel2         ; continue if >= 14400
     :_Start
         Wait    10   login
         Goto    _Login  _Cancel
     :_Login
         Xmit         mylogin|             ; send login
         Wait    10   password
         Goto    _Passw  _Cancel
     :_Passw
         Xmit         mypassw|             ; send password
         Delay   3
         Carrier
         Goto    _Smth   _Cancel
     :_Smth
         Exec    Create  SEM32\test.t-m
         Exec    smth.exe
         Set     Files=c:\t-mail\files\tmp
         Xmit    telnet 123.456.789.101    ; establish telnet connection
         Delay   2

     :_Cancel
         Exit

     :_Cancel2
         Disconnect
         Exit

     ; End of script

-------------------------------------------------------------------------

     Есть возможность  передавать в сценарий до  девяти параметров, которые
задаются  после  ключевого  слова  Script  и  имени  файла сценария при его
запуске. Эти  параметры внутри сценария будут  представлены как символы %1,
%2, ... %9.

     Пример:
     -------
     ( t-mail.ctl )

     Key   <F5>    Script  test.scr  123-4567  c:\files\update.ra*

     (test.scr)

      Dial  #%1
      Goto  good bad
      :good
      XmitLn  Get ready to recieve file %2
      Zsend  %2                                   ; May be called only from
      XmitLn  Thank you, good bye.                ; terminal emulator.

      В файлах  сценариев можно использовать  значения переменных окружения
DOS или  OS/2. При этом имена  переменных заключаются в символы  "%". Кроме
того,  могут быть  использованы  две  специальные переменные  с аналогичным
синтаксисом - %TASKNO% и %PLATFORM%.  Переменные окружения с такими именами
будут  проигнорированы.  Вместо  %TASKNO%  будет  подставлен  номер  задачи
T-Mail,  который задается  в командной   строке ключом  -N (см.   главу 21 ).
Вместо  %PLATFORM%  будет  подставлено  наименование  операционной системы:
"DOS","OS/2" или "NT". Так, если вы  используете T-Mail для DOS (пусть даже
в окне OS/2) - подставится "DOS".

     В   сценариях,  выполняемых   непосредственно  перед   сеансами  связи
(заданными в   subst.lst ), возможно использование  следующих инструкций Set,
задающих параметры протокола Zmodem для этого сеанса связи:

  Set  ZMinCPS_In    - установка минимальной скорости приема файлов;
  Set  ZMinCPS_Out   - установка минимальной скорости передачи файлов;
  Set  ZStartBlock   - установка начального размера блока;
  Set  ZMaxBlock     - установка максимального размера блока;
  Set  ZTimeout      - установка размера таймаута.

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

     Пример (example2.scr):
     ----------------------
  Set  ZMinCPS_In=400
  Set  ZMinCPS_Out=200
  Set  ZStartBlock=4096
  Set  ZMaxBlock=8192
  Set  ZTimeout=20


Previous | Next | Trail Map |