home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 September / Simtel20_Sept92.cdr / msdos / pibterm / pibt41d2.arc / PT41SCRI.DOC < prev   
Text File  |  1988-03-04  |  285KB  |  5,487 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.             
  8.             
  9.             
  10.             
  11.             
  12.             
  13.             
  14.             
  15.             
  16.             
  17.             
  18.             
  19.             
  20.             
  21.             
  22.             
  23.             
  24.             
  25.             
  26.             
  27.             
  28.             
  29.             
  30.                 +=================================================+                +=================================================+
  31.                 |      PibTerm Script Language Reference Guide    |                |      PibTerm Script Language Reference Guide    |
  32.                 +=================================================+                +=================================================+
  33.                                           
  34.                                           
  35.                                           
  36.                                           
  37.                                           
  38.             
  39.             
  40.             
  41.             
  42.             
  43.             
  44.             
  45.             
  46.             
  47.             
  48.             
  49.             
  50.             
  51.             
  52.             
  53.                   Copyright (c) February, 1988 by Philip R. Burns                  Copyright (c) February, 1988 by Philip R. Burns
  54.  
  55.  
  56.  
  57.  
  58.  
  59.             
  60.             Using Script Files ....................................    1            Using Script Files ....................................    1
  61.                 Compatibility With Old Scripts ....................    1
  62.             Executing a Script File ...............................    1            Executing a Script File ...............................    1
  63.                 From the PibTerm command line .....................    1
  64.                 From <ALT>G .......................................    2
  65.                 User-defined command ..............................    2
  66.                 Compiling Scripts .................................    2
  67.                 Limitations on Script Size ........................    2
  68.                 Script Library PIBTERM.SCL ........................    2
  69.                     Search Order For Scripts ......................    3
  70.                 Terminating Execution Of A Script .................    4
  71.                 Automatic Script Generation -- The Learn Facility .    4
  72.             Script File Commands ..................................    4            Script File Commands ..................................    4
  73.                 General Syntax of Script Commands .................    9
  74.                 Script Variable Names .............................    9
  75.                     Declaring variables ...........................   10
  76.                     Saving variable values after script ends ......   10
  77.             Detailed Description of Script Commands ...............   11            Detailed Description of Script Commands ...............   11
  78.                 AddCommand -- Add User-Defined Command ............   11
  79.                 Addlf -- Add Line Feeds ...........................   14
  80.                 Alarm -- Issues Five Beeps ........................   14
  81.                 Break -- Send Break ...............................   14
  82.                 Call -- Call Internal Script Procedure ............   14
  83.                 Capture -- Capture Session To Disk ................   14
  84.                 Case -- Case Selector For DoCase ..................   15
  85.                 ChDir -- Change Current Directory or Drive ........   15
  86.                 Clear -- Clear Screen .............................   15
  87.                 Close -- Close File ...............................   16
  88.                 ClrEol -- Clear Display To End Of Line ............   16
  89.                 ComDrain -- Drain Serial Port Output Buffer .......   16
  90.                 ComFlush -- Flush Serial Port Buffers .............   16
  91.                 CopyFile -- Copy File .............................   17
  92.                 Delay -- Delay Execution For Specified Interval ...   17
  93.                 DelLine -- Delete Current Line On Screen ..........   18
  94.                 Dial --- Dial A Number ............................   18
  95.                 DirFirst -- Find First Matching File ..............   18
  96.                 DirNext -- Find Next Matching File ................   20
  97.                 DoCase -- Do Case Statement .......................   22
  98.                 Dos -- Execute DOS Command ........................   23
  99.                 Echo --- Toggle Local Echo ........................   24
  100.                 EditFile -- Invoke File Editor ....................   24
  101.                 Else -- Part Of IF Statement ......................   24
  102.                 EndCase -- Ends Case Block ........................   25
  103.                 EndDoCase -- Ends DoCase Statement ................   25
  104.                 EndIf --- Ends An IF Statement ....................   25
  105.                 EndProc -- Ends a Script Procedure ................   25
  106.                 EndWhile -- Ends a WHILE block ....................   25
  107.                 EraseFile -- Erase (Delete) A File ................   25
  108.                 Execute -- Execute One Script From Another ........   25
  109.                 Exit -- Terminate Script Execution ................   27
  110.                 ExitAll -- Exit Nested Scripts ....................   27
  111.                 For -- Start FOR Loop .............................   28
  112.                 FreeSpace -- Find Free Space On Drive .............   28
  113.  
  114.  
  115.  
  116.  
  117.  
  118.                 GetDir -- Get Current Directory And Drive .........   29
  119.                 GetParam -- Get Value of PibTerm Parameter ........   29
  120.                 GetVar -- Get Value of Script Variable ............   30
  121.                 GoToXY -- Move To Specified Screen Position .......   31
  122.                 Hangup -- Hang Up The Phone .......................   32
  123.                 Host -- Enter Host Mode ...........................   32
  124.                 If -- Conditionally Execute Statements ............   32
  125.                     Conditions allowed in IF statements ...........   32
  126.                 Import -- Import Variable To Execute Script .......   33
  127.                 Input -- Get Input From Keyboard ..................   34
  128.                 InsLine -- Insert Line At Cursor ..................   35
  129.                 Key -- Set Function Key Values ....................   35
  130.                 KeyDef -- Define Function Key Value ...............   36
  131.                 KeyFlush -- Flush KeyBoard ........................   37
  132.                 KeySend -- Send Function Key Value To Remote ......   37
  133.                 Log -- Toggle Printer Logging .....................   38
  134.                 Menu -- Display Pop-Up Menu .......................   38
  135.                 Message -- Display Message On Screen ..............   39
  136.                 Mute -- Toggle Mute Mode ..........................   39
  137.                 Open -- Open File .................................   39
  138.                 Param -- Set Program Parameter ....................   40
  139.                 PrintFile -- Print A FIle .........................   41
  140.                 Procedure -- Define Script Procedure ..............   41
  141.                 Quit -- Quit PibTerm execution ....................   44
  142.                 Read -- Read Character From A File ................   44
  143.                 Readln -- Read Line From File .....................   45
  144.                 Receive -- Receive File From Remote System ........   46
  145.                 Redial -- Redial Last Number Dialed ...............   48
  146.                 Repeat -- Repeat Block Of Statements ..............   48
  147.                 Reset -- Reset Script Execution To Start Of Script    49
  148.                 RInput -- Receive Input From Remote System ........   49
  149.                 ScreenDump -- Dump Screen To File .................   50
  150.                 Send -- Send File To Remote System ................   50
  151.                 Set -- Assign Value To Script Variable ............   52
  152.                 SetParam -- Set Value Of PibTerm Parameter ........   55
  153.                 SetVar -- Set Value of PibTerm Parameter ..........   56
  154.                 SText -- Send Text To Remote System ...............   57
  155.                 Suspend -- Suspend Execution Of Script ............   57
  156.                 Text -- send text to remote system ................   58
  157.                 Translate -- Read In Translate Table ..............   58
  158.                 Until -- Ends Repeat Block ........................   58
  159.                 ViewFile -- Invoke File Viewer ....................   58
  160.                 Wait -- Wait For Time Of Day ......................   59
  161.                 WaitCount -- Wait For Number Of Characters ........   59
  162.                 WaitList -- Wait For List Of Strings ..............   60
  163.                 WaitQuiet -- Wait For Quiet Line ..................   61
  164.                 WaitString -- Wait For String From Remote .........   61
  165.                 WaitTime -- Set Wait Time .........................   62
  166.                 When -- Wait For String And Respond ...............   62
  167.                 WhenDrop -- Take Action On Carrier Drop ...........   63
  168.                 WhereXY -- Return Current Cursor Position .........   63
  169.                 While -- Execute Statements While Condition True ..   64
  170.                 Write -- Write Characters To File .................   64
  171.                 Writeln -- Write Line To File .....................   65
  172.  
  173.  
  174.  
  175.  
  176.  
  177.                 WriteLog -- Write String To Log Files .............   65
  178.             Using Script Commands in Command Line Mode ............   65            Using Script Commands in Command Line Mode ............   65
  179.                 Command mode key definition .......................   65
  180.                 Script Commands Legal In Command Line Mode ........   66
  181.             Sample Scripts ........................................   67            Sample Scripts ........................................   67
  182.                 CDC/NOS login script ..............................   67
  183.                 VAX/VMS login script ..............................   68
  184.                 IBM CMS login script ..............................   69
  185.                 LUIS login script .................................   71
  186.                 OPUS login script .................................   72
  187.                 RBBS login script .................................   73
  188.                 IBBS login script .................................   73
  189.                 CompuServe login script ...........................   74
  190.                 Using A Password File .............................   75
  191.                 PC Board login script using password file .........   78
  192.                 Reading A New Configuration File ..................   80
  193.             Defining Scripts For External Transfer Protocols ......   81            Defining Scripts For External Transfer Protocols ......   81
  194.                 SENDMLIN.SCR for sending files with MegaLink ......   84
  195.                 RECMLINK.SCR for receiving files with MegaLink ....   86
  196.                 SENDZMOD.SCR for sending files with Zmodem ........   87
  197.                 RECZMOD.SCR for receiving files with Zmodem .......   89
  198.             
  199.  
  200.  
  201.  
  202.  
  203.  
  204.             
  205.             Using Script Files            Using Script Files
  206.             
  207.             PibTerm provides  an extensive  script file  facility  which
  208.             allows you to create a file containing a set of instructions
  209.             for PibTerm to execute. The instructions can include dialing
  210.             up a  remote system, performing file transfers,  waiting for
  211.             a specific time before initiating an event, and many others.
  212.             Scripts allow  PibTerm to  run in   unattended mode and take
  213.             advantage of  off-hours  rates  on  host  computer  systems.
  214.             Scripts automate such chores as logging into remote systems.
  215.             And,  scripts  provide  you  with  the  tools  you  need  to
  216.             customize PibTerm by adding new commands or replacing built-
  217.             in commands with those of your own devising.
  218.             
  219.             
  220.             Compatibility With Old Scripts            Compatibility With Old Scripts
  221.             
  222.             The script  language starting with PibTerm v4.0 represents a
  223.             considerable upgrade  of the  script language  available  in
  224.             previous  versions.    Most  of  the  script  commands  have
  225.             changed, mainly  to support  script variables.  When writing
  226.             new scripts  you should  use the  new syntax and facilities.
  227.             However,  scripts  written  using  the  old  pre-version-4.0
  228.             script language  SHOULD continue  to work  with just  a  few
  229.             minor changes.   If an old script does not execute correctly
  230.             with PibTerm  v4.0 (or  a later  version), try rewriting the
  231.             part of  the old  script that  fails using  the  new  script
  232.             syntax.   Most of  the incompatibilities  arise  because  of
  233.             script variables, which are new in PibTerm v4.0, and because
  234.             of minor  changes in  things  like  file  transfer  protocol
  235.             abbreviations.
  236.             
  237.             
  238.             Executing a Script File            Executing a Script File
  239.             
  240.             There are three ways to execute a script file.  The first is
  241.             to enter  the file  name of  a script  file on  the  PibTerm
  242.             command line itself at the DOS prompt:
  243.             
  244.                  PIBTERM /s=script.SCR
  245.             
  246.             where script.SCR is the name of a script file.  You need not                  script.SCR                                            
  247.             explicitly give  the .SCR,  it is  understood  if  no  other                                 .SCR                                   
  248.             extension is provided.
  249.             
  250.             When PibTerm  begins execution,  it will take its input from
  251.             the script file.  You may still type keyboard entries if you
  252.             desire, and  there are some script commands which explicitly
  253.             request keyboard  input.   This  provides  quite  a  bit  of
  254.             flexibility  in   case  something   goes  wrong  during  the
  255.             execution of  a script  and you  are present  to repair  the
  256.             damage.
  257.             
  258.  
  259.  
  260.             PibTerm Script Language Reference Guide              Page 2            PibTerm Script Language Reference Guide              Page 2
  261.  
  262.  
  263.             If no  script file  name appears  on the PibTerm invocation,
  264.             PibTerm looks  for the  file  PIBTERM.SCR  and  executes  it                                          PIBTERM.SCR                   
  265.             automatically if  found.   This is  useful if  you  want  to
  266.             execute a  fixed set  of commands  each time  you  start  up
  267.             PibTerm.
  268.             
  269.             The second  way to  execute a  script file is to hit <ALT>G.
  270.             You will  be prompted  for the  name of  the script  file to
  271.             execute.  Again, you need only provide the first part of the
  272.             file name; .SCR is understood.
  273.             
  274.             If you  hit the  Enter key, a directory of available scripts                             Enter                                      
  275.             appears. You  can choose  to execute one  by using the arrow
  276.             keys to  move to the desired script and hitting the Enter or                                                                Enter   
  277.             Return key.            Return     
  278.             
  279.             The third  way to  execute a  script is  through the  use of
  280.             user-defined commands.   PibTerm  allows you  to  execute  a
  281.             subset of  script commands  using a  command-line mode.  You
  282.             can also  define your  own commands  as  extensions  to  the
  283.             script language;  these are implemented as scripts which are
  284.             automatically invoked  when the  command you defined is used
  285.             in command-line mode.  We will discuss user-defined commands
  286.             in more detail later on.
  287.             
  288.             
  289.             Compiling Scripts            Compiling Scripts
  290.             
  291.             Before  executing  a  script  file,  PibTerm  scans  it  and
  292.             converts it  to an in-memory list of commands.  This process
  293.             is called  compiling  the  script.  During  the  compilation                       compiling                                        
  294.             process, you  will be informed if any script command line is
  295.             syntactically bad.  PibTerm stops scanning at the first line
  296.             in error.  Any erroneous  script statement  prevents PibTerm
  297.             from executing the script.
  298.             
  299.             
  300.             Limitations on Script Size            Limitations on Script Size
  301.             
  302.             The size  of a  script is limited by the available memory to
  303.             hold the  "compiled" script  code. If  there is  not  enough
  304.             memory for  the  script,  it  will  not  be  executed.    No
  305.             individual script can compile to more than 32767 bytes; this
  306.             should not  pose   any problems,  since long  scripts can be
  307.             broken up into a series of shorter scripts which  can invoke
  308.             each other using the EXECUTE script command.                                 EXECUTE                
  309.             
  310.             
  311.             Script Library PIBTERM.SCL            Script Library PIBTERM.SCL
  312.             
  313.             The  file  PIBTERM.SCL  provides  a  simple  script  library                       PIBTERM.SCL                                      
  314.             facility. Versions  of PibTerm  prior to  v4.0 required that
  315.             each script  be stored  in a separate file. This resulted in
  316.             considerable wasted  disk space,  since even  a tiny  script
  317.  
  318.  
  319.             PibTerm Script Language Reference Guide              Page 3            PibTerm Script Language Reference Guide              Page 3
  320.  
  321.  
  322.             took up  a large  block of disk space.  The file PIBTERM.SCL
  323.             may contain  many scripts;   since  it it is one large file,
  324.             disk space is more efficiently used.
  325.             
  326.             PIBTERM.SCL is  a straightforward  ASCII  text  file.    The
  327.             scripts contained  in it  follow one  right after the other,
  328.             separated by a line beginning (in column one) with two equal
  329.             signs and  the name  of the script.  For example, if we have
  330.             three  scripts,   named  WINKEN,   BLINKEN,  and  NOD,  then
  331.             PIBTERM.SCL would look like this:
  332.             
  333.             
  334.                  ==WINKEN
  335.                       -- text of winken.scr
  336.                  ==BLINKEN
  337.                       -- text of blinken.scr
  338.                  ==NOD
  339.                       -- text of nod.scr
  340.             
  341.                  ^
  342.                  |
  343.                  column 1
  344.             
  345.             Script entries  will be  searched for  sequentially in  this
  346.             file. Thus,  you should place the most commonly used scripts
  347.             at the front of PIBTERM.SCL.
  348.             
  349.             PIBTERM.SCL  must  reside  in  the  main  PibTerm  directory
  350.             (pointed to by SET PIBTERM=).
  351.             
  352.             You may  place the  primary script  file to  be executed  in
  353.             PIBTERM.SCL instead of creating a separate PIBTERM.SCR file.
  354.             For this to work, the following conditions must hold:
  355.             
  356.                  1.   No PIBTERM.SCR exists.
  357.             
  358.                  2.   ==PIBTERM    is  the FIRST LINE (and therefore the
  359.                       first script) in PIBTERM.SCL.
  360.             
  361.             This execution order is taken regardless of any script order
  362.             configuration settings (see next section).
  363.             
  364.             
  365.             Search Order For Scripts            Search Order For Scripts
  366.             
  367.             The new  parameter SF=  provides the  name of  the directory
  368.             containing the  (separate file)  scripts to be executed.  If
  369.             SF is  the null  string, then the current directory is used.
  370.             SF= can be set from the <ALT>P P)aths menu.
  371.             
  372.             Scripts may executed from separate files or from the library
  373.             file PIBTERM.SCL.   The  new parameter SO= defines the order
  374.             in which a search for a script is performed:
  375.             
  376.  
  377.  
  378.             PibTerm Script Language Reference Guide              Page 4            PibTerm Script Language Reference Guide              Page 4
  379.  
  380.  
  381.                  SO=0:     SF= directory, then PIBTERM.SCL  (default)
  382.                  SO=1:     PIBTERM.SCL then SF=
  383.                  SO=2:     SF= only  (ignore PIBTERM.SCL)
  384.                  SO=3:     PIBTERM.SCL only  (ignore SF= and any scripts
  385.                            contained there)
  386.             
  387.             
  388.             Terminating Execution Of A Script            Terminating Execution Of A Script
  389.             
  390.             To stop  executing a  script, use  the <ALT>X command.  If a
  391.             script is  executing, you  will be prompted as to whether or
  392.             not you want to stop executing the script.  If you then want
  393.             to exit PibTerm, type <ALT>X again.
  394.             
  395.             You can  also use  the EXIT  and EXITALL  script commands to                                   EXIT      EXITALL                    
  396.             terminate a  script from  within a  script, or  from command
  397.             line mode.
  398.             
  399.             
  400.             Automatic Script Generation -- The Learn Facility            Automatic Script Generation -- The Learn Facility
  401.             
  402.             If you  hit Enter  after striking  <ALT>G, you are presented
  403.             with a  list of  scripts available  for execution as well as
  404.             several other  facilities.   One of  these is  the "Learn  a
  405.             script."   This option  opens a  file to receive a specially
  406.             edited transcript of the communications session in which the
  407.             local and  remote input  and  output  are  transformed  into
  408.             script commands.   This allows PibTerm to "learn" a sequence
  409.             of script commands which you can edit and use again later.
  410.             
  411.             When you start a learn script sequence, you are prompted for
  412.             the maximum  number of  characters to  be generated  in  any
  413.             WAITSTRING and also for the maximum number of lines (defined
  414.             by a  string of  characters ended  with  CR  or  LF)  to  be
  415.             generated in  any WAITSTRING.  Usually choosing the defaults
  416.             of 30 characters and 1 line produces good results.
  417.             
  418.             You usually need to touch up the generated script  manually.
  419.             
  420.             See the  "Guide to  PibTerm" for  more details on learning a
  421.             script.
  422.             
  423.             
  424.             Script File Commands            Script File Commands
  425.             
  426.             Script file  commands consist  of an  initial  command  word
  427.             possibly followed by zero or more arguments.  Blank lines or
  428.             lines beginning  with an  "*" may be used as comments.  Many
  429.             of the  commands perform  similar functions  to the  regular
  430.             <Alt>letter keyboard entries described in the PibTerm Guide.
  431.             
  432.             Here is  a complete  list of  PibTerm script commands with a
  433.             brief description  of the  purpose  of  each.    A  detailed
  434.             description of each command will be given later.
  435.  
  436.  
  437.             PibTerm Script Language Reference Guide              Page 5            PibTerm Script Language Reference Guide              Page 5
  438.  
  439.  
  440.             
  441.             AddCommand     adds a user-defined command to PibTerm script            AddCommand                                                  
  442.                            language
  443.             
  444.             AddLF          adds line feeds to carriage returns.            AddLF                                              
  445.             
  446.             Alarm          issues five beeps            Alarm                           
  447.             
  448.             Break          issues a break sequence (like <ALT>B).            Break                                                
  449.             
  450.             Call           calls internal script procedure            Call                                          
  451.             
  452.             Capture        toggles session  capture  to  specified  file            Capture                                                     
  453.                            (like <ALT>O).
  454.             
  455.             Case           selection block header for DOCASE statement            Case                                                      
  456.             
  457.             ChDir          changes current directory            ChDir                                   
  458.             
  459.             Clear          clears the screen (like <ALT>C).            Clear                                          
  460.             
  461.             Close          closes specified file            Close                               
  462.             
  463.             ClrEol         clears display  from cursor to end of line on            ClrEol                                                      
  464.                            screen
  465.             
  466.             ComDrain       drains serial port output ring buffer            ComDrain                                            
  467.             
  468.             ComFlush       flushes ring buffers for serial port            ComFlush                                           
  469.             
  470.             CopyFile       copies one file to another            CopyFile                                 
  471.             
  472.             Declare        provides name,  type, and  initial value  for            Declare                                                     
  473.                            script variable
  474.             
  475.             Delay          delays PibTerm execution for specified length            Delay                                                       
  476.                            of time.
  477.             
  478.             DelLine        deletes current line in screen display            DelLine                                              
  479.             
  480.             Dial           dial a  number in the dialing directory (like            Dial                                                        
  481.                            <ALT>D).
  482.             
  483.             DirFirst       finds  first   file   matching   a   wildcard            DirFirst                                                    
  484.                            specification
  485.             
  486.             DirNext        finds subsequent  files matching  a  wildcard            DirNext                                                     
  487.                            specification
  488.             
  489.             DoCase         starts multiway selection statement            DoCase                                            
  490.             
  491.             Dos            executes a  specified DOS  command  (somewhat            Dos                                                         
  492.                            like <ALT>J).
  493.             
  494.  
  495.  
  496.             PibTerm Script Language Reference Guide              Page 6            PibTerm Script Language Reference Guide              Page 6
  497.  
  498.  
  499.             Echo           toggles local echo (like <ALT>E).            Echo                                            
  500.             
  501.             
  502.             EditFile       invokes the currently defined editor (usually            EditFile                                                    
  503.                            the built-in PibTerm editor)
  504.             
  505.             Else           FALSE branch of an IF statement.            Else                                           
  506.             
  507.             EndCase        ends a Case block            EndCase                         
  508.             
  509.             EndDoCase      ends a DoCase statement            EndDoCase                             
  510.             
  511.             EndFor         ends FOR loop            EndFor                      
  512.             
  513.             EndIf          ends an IF statement.            EndIf                               
  514.             
  515.             EndProc        ends an internal script procedure            EndProc                                         
  516.             
  517.             EndWhile       ends a WHILE statement.            EndWhile                              
  518.             
  519.             EraseFile      erases (deletes) a file            EraseFile                             
  520.             
  521.             Execute        executes another script            Execute                               
  522.             
  523.             Exit           stop executing the script.            Exit                                     
  524.             
  525.             ExitAll        exits nested scripts            ExitAll                            
  526.             
  527.             For            starts For loop            For                           
  528.             
  529.             FreeSpace      finds free space on drive            FreeSpace                               
  530.             
  531.             GetDir         gets current drive and directory            GetDir                                         
  532.             
  533.             GetParam       gets value of a PibTerm parameter            GetParam                                        
  534.             
  535.             GetVar         gets value of a PibTerm variable            GetVar                                         
  536.             
  537.             GoToXY         positions   cursor    at   specified   screen            GoToXY                                                      
  538.                            coordinates
  539.             
  540.             HangUp         hangs up the phone (like <ALT>H).            HangUp                                          
  541.             
  542.             Host           enters Host mode (like <ALT>W).            Host                                          
  543.             
  544.             If             test   for   several   different   types   of            If                                                          
  545.                            conditions; Else  is also available and Endif
  546.                            terminates an IF block.
  547.             
  548.             Import         declares variable  passed  to  nested  script            Import                                                      
  549.                            invoked using Execute
  550.             
  551.             InsLine        inserts line  at current  cursor position  on            InsLine                                                     
  552.                            screen
  553.  
  554.  
  555.             PibTerm Script Language Reference Guide              Page 7            PibTerm Script Language Reference Guide              Page 7
  556.  
  557.  
  558.             
  559.             Input          prompt for input from local user.            Input                                           
  560.             
  561.             Key            sets function  keys from specified file (like            Key                                                         
  562.                            <ALT>K "Read definitions from a file").
  563.             
  564.             KeyFlush       flushes current keyboard buffer            KeyFlush                                      
  565.             
  566.             KeySend        sends specified  function key's definition to            KeySend                                                     
  567.                            remote system.
  568.             
  569.             Log            toggles  session  logging  on  printer  (like            Log                                                         
  570.                            <ALT>L).
  571.             
  572.             Menu           displays pop-up menu            Menu                               
  573.             
  574.             Message        display message  on PC's  screen; message  is            Message                                                     
  575.                            not sent to remote system.
  576.             
  577.             Mute           toggles mute mode (like <ALT>M).            Mute                                           
  578.             
  579.             Open           opens a file            Open                       
  580.             
  581.             Param          sets program parameters            Param                                 
  582.             
  583.             PrintFile      starts printing  of  a  file  using  built-in            PrintFile                                                   
  584.                            PibTerm spooling facility
  585.             
  586.             Procedure      defines start of internal script procedure            Procedure                                                
  587.             
  588.             Read           reads characters from a file            Read                                       
  589.             
  590.             Readln         reads a line from a file            Readln                                 
  591.             
  592.             Receive        receives a  file from  a remote  system (like            Receive                                                     
  593.                            <ALT>R).
  594.             
  595.             Redial         redials the  last phone  number entered (like            Redial                                                      
  596.                            <ALT>Q).
  597.             
  598.             Repeat         begins block  of statements  to be repeatedly            Repeat                                                      
  599.                            executed until  condition on  matching  UNTIL
  600.                            statement is true.
  601.             
  602.             Reset          starts executing  script from  the  beginning            Reset                                                       
  603.                            again.
  604.             
  605.             Return         returns from  internal  script  procedure  to            Return                                                      
  606.                            calling procedure
  607.             
  608.             RInput         prompt for input from remote system.            RInput                                             
  609.             
  610.             Send           sends a file to a remote system, like <ALT>S.            Send                                                        
  611.             
  612.  
  613.  
  614.             PibTerm Script Language Reference Guide              Page 8            PibTerm Script Language Reference Guide              Page 8
  615.  
  616.  
  617.             Set            sets value of a script variable            Set                                           
  618.             
  619.             SetParam       sets value of a PibTerm parameter            SetParam                                        
  620.             
  621.             SetVar         sets value of a script variable            SetVar                                        
  622.             
  623.             SText          send text  to remote  system,  and  interpret            SText                                                       
  624.                            embedded   characters   like   function   key
  625.                            characters.
  626.             
  627.             Suspend        suspends  script   execution  for   specified            Suspend                                                     
  628.                            length of time (PibTerm continues executing).
  629.             
  630.             Text           send   text    to   remote   system   without            Text                                                        
  631.                            interpretation.
  632.             
  633.             Translate      reads in a translation table (like <ALT>T).            Translate                                                 
  634.             
  635.             Until          terminates   REPEAT    block   and   provides            Until                                                       
  636.                            termination condition.
  637.             
  638.             ViewFile       invokes   currently   defined   file   viewer            ViewFile                                                    
  639.                            (usually built-in PibTerm file viewer)
  640.             
  641.             Wait           stops PibTerm  execution  until  a  specified            Wait                                                        
  642.                            time (in  HH:MM:SS form) is reached, at which
  643.                            time execution proceeds.
  644.             
  645.             WaitCount      waits for  specified number  of characters to            WaitCount                                                   
  646.                            appear from remote system
  647.             
  648.             WaitList       waits for  any one  of a  list of  strings to            WaitList                                                    
  649.                            appear from remote system
  650.             
  651.             WaitQuiet      waits for serial port input to quiesce            WaitQuiet                                            
  652.             
  653.             WaitString     waits for  a given  string to appear from the            WaitString                                                  
  654.                            remote system (only done once).
  655.             
  656.             WaitTime       sets wait time for other wait commands            WaitTime                                             
  657.             
  658.             When           waits for  a given  string to appear from the            When                                                        
  659.                            remote system,  and then  sends  a  specified
  660.                            response string  (done as  often as  required
  661.                            string appears).
  662.             
  663.             WhenDrop       specifies action to take when carrier drops            WhenDrop                                                  
  664.             
  665.             WhereXY        returns current cursor position on screen            WhereXY                                                 
  666.             
  667.             While          begins block  of statements  to be repeatedly            While                                                       
  668.                            executed as  long as  specified condition  is
  669.                            true.   A While  block is  terminated  by  an
  670.                            EndWhile statement.
  671.  
  672.  
  673.             PibTerm Script Language Reference Guide              Page 9            PibTerm Script Language Reference Guide              Page 9
  674.  
  675.  
  676.             
  677.             Write          writes characters to a file            Write                                     
  678.             
  679.             Writeln        writes a line to a file            Writeln                               
  680.             
  681.             WriteLog       writes text to log/capture files            WriteLog                                       
  682.             
  683.             
  684.             General Syntax of Script Commands            General Syntax of Script Commands
  685.             
  686.             Here are some general comments about script command syntax:
  687.             
  688.             1.   Command names  may be  entered in  any case;  "CLEAR" =
  689.                  "Clear" = "ClEaR".
  690.             
  691.             2.   Each command must fit on a single input line.  There is
  692.                  no provision for multi-line commands.
  693.             
  694.             3.   When quoted  strings are  called for,  either single or
  695.                  double quotes  may be  used.   To insert a quote into a
  696.                  string in  which that  same quote  is being used as the
  697.                  string delimiter,  write  two  adjacent  quotes.    For
  698.                  example, the string
  699.             
  700.                       Here's a string
  701.             
  702.                  can be written as:
  703.                  
  704.                       'Here''s a string'.
  705.             
  706.             4.   Quoted strings  cannot span  a line.   Unclosed  quotes
  707.                  cause an error.
  708.             
  709.             
  710.             Script Variable Names            Script Variable Names
  711.             
  712.             The PibTerm  script language  includes variables  as well as
  713.             commands. Script  variable names may be up to ten characters
  714.             long, and  may contain letters and digits.  Case is ignored.
  715.             The first character must be a letter.
  716.             
  717.             Examples:
  718.             
  719.                  Abc
  720.                  c34
  721.                  ABC  (same as Abc)
  722.                  thelongone
  723.             
  724.             
  725.  
  726.  
  727.             PibTerm Script Language Reference Guide              Page 10            PibTerm Script Language Reference Guide              Page 10
  728.  
  729.  
  730.             Declaring variables            Declaring variables
  731.             
  732.             You may  declare script  variables using  the Declare script                                                          Declare       
  733.             command. ALL  script variables  MUST  appear  in  a  Declare
  734.             command.  Each Declare defines only one variable.
  735.             
  736.             The syntax of a Declare statement is:
  737.             
  738.                  DECLARE name type S3
  739.             
  740.             where name is the variable name,  type is the variable type,                  name                        type                      
  741.             and S3  is the  initial value  of the  variable.   S3 may be
  742.             either a string variable or a string constant.
  743.             
  744.             Note that  neither the  name nor  the type  is  enclosed  in
  745.             quotes.
  746.             
  747.             Case is not important in variable names.
  748.             
  749.             The following types are available:
  750.             
  751.             INTEGER   An integer  value from  -2147483648 to  2147483647            INTEGER                                                     
  752.                       (beginning with  PibTerm v4.1  -- in PibTerm v4.0,
  753.                       values were limited to the range -32768 to 32767).
  754.             
  755.             STRING    A variable  length  string  of  maximum  size  255            STRING                                                      
  756.                       characters.
  757.             
  758.             Examples:
  759.             
  760.                  DECLARE Abc String  'ABC'
  761.             
  762.                       --   a string of maximum length 255 with initial   
  763.                            value ABC
  764.             
  765.                  DECLARE c  Integer
  766.             
  767.                       --   'c' is an integer with initial value 0
  768.             
  769.             When no  initial value  is provided  a  string  variable  is
  770.             assigned the  null string as a value when it is declared.  A
  771.             numeric variables  is set  to zero  if no  initial value  if
  772.             provided.
  773.             
  774.             ABC, Abc,  AbC, etc.  are all  the same variable name.  Case
  775.             doesn't matter in variable names.
  776.             
  777.             
  778.             Saving variable values after script ends            Saving variable values after script ends
  779.             
  780.             Variables disappear  when the  last script  in  a  stack  of
  781.             nested scripts  is finished executing.  If you want to carry
  782.             over the  variable  values  from  one  script  execution  to
  783.             another, you  can use  the text  file  facilities  to  store
  784.  
  785.  
  786.             PibTerm Script Language Reference Guide              Page 11            PibTerm Script Language Reference Guide              Page 11
  787.  
  788.  
  789.             information on  MS DOS  files  between  script  invocations.
  790.             Alternatively, you  can store  variable values  in  (unused)
  791.             function  keys  (see  the  KeyDef  script  command  and  the                                       KeyDef                           
  792.             KeyString function in the Set script command).            KeyString                 Set                 
  793.             
  794.             Each script  gets it  own set  of variables.  It is possible
  795.             for one  script to invoke another, and for those two scripts
  796.             to share  variables.  This is done using the Import facility
  797.             described later.
  798.             
  799.             
  800.             Detailed Description of Script Commands            Detailed Description of Script Commands
  801.             
  802.             The following  sections  detail  each  script  command.  The
  803.             examples for some commands use other commands which will not
  804.             be described  until later.   You may need to make two passes
  805.             through these  descriptions in order to fully understand the
  806.             examples.
  807.             
  808.             In what  follows, any  variable name  beginning with  a  'S'
  809.             indicates a  string variable  or constant,  and any variable
  810.             starting with 'I' indicates an integer variable or constant.
  811.             (Note:   It is  assumed that  variables have  been  properly
  812.             declared using the DECLARE statement.)
  813.             
  814.             
  815.             AddCommand -- Add User-Defined Command            AddCommand -- Add User-Defined Command
  816.             
  817.             PibTerm allows you to define up to one hundred new commands.
  818.             This is  primarily useful  when PibTerm  is  being  used  in
  819.             command key mode.
  820.             
  821.             The script  command AddCommand  adds a  new command.  It has                                AddCommand                              
  822.             the syntax:
  823.             
  824.                  AddCommand Sname Script
  825.             
  826.             Sname is  the name  of the command to be added, which may be            Sname                                                       
  827.             up eight characters long.
  828.             
  829.             Script is  the name  of the  script to  be invoked  when the            Script                                                      
  830.             command is  encountered either  in a script or (more likely)
  831.             when entered in command key mode.
  832.             
  833.             Both Sname  and Script  may be  either string  variables  or                 Sname      Script                                      
  834.             string constants.
  835.             
  836.             The best  way to set up a list of commands to be added is to
  837.             place  all   the  AddCommand   definitions  in  the  default
  838.             PIBTERM.SCR which  will be automatically executed at startup
  839.             time.
  840.             
  841.             If you  write a  command with  the same  name as an existing
  842.             PibTerm script  command, then your version will override the                                                       will override    
  843.  
  844.  
  845.             PibTerm Script Language Reference Guide              Page 12            PibTerm Script Language Reference Guide              Page 12
  846.  
  847.  
  848.             built-in command.  You may still want access to the built-in
  849.             command -- for example, if you're writing a spiffy front-end
  850.             for a  built-in command.   To  request the  original command
  851.             name, precede it by a '$'.                                  '$'.
  852.             
  853.             For example,  suppose you  write a  new RECEIVE command, but                                                    RECEIVE             
  854.             you still want access to the original RECEIVE.  Then you can                                                  RECEIVE               
  855.             write $RECEIVE  where you  want the  reference to  be to the                  $RECEIVE                                              
  856.             original built-in RECEIVE command.                              RECEIVE         
  857.             
  858.             To illustrate how to add a command, suppose that you want to
  859.             define an EMULATE command for PibTerm. Also suppose that the
  860.             script containing the code to perform the EMULATE command is
  861.             in the script file EMULATE.SCR.  Then you could write:                               EMULATE.SCR                        
  862.             
  863.                  AddCommand 'Emulate' 'Emulate.scr'
  864.             
  865.             Now if you enter a command like:
  866.             
  867.                  Emulate VT100
  868.             
  869.             then control  is passed  to 'Emulate.scr'  to  process  that
  870.             input line.  When the  script gains control, all of the text
  871.             following the  command name  'Emulate' itself is stored as a
  872.             parameter line.   The contents of that parameter line can be
  873.             accessed using  the ParamLine  command,  or  pieces  may  be
  874.             broken  out   using  the   ParamCount  and  ParamStr  string
  875.             functions.     ParamCount  and  ParamStr  operate  like  the
  876.             standard Turbo  Pascal functions  of the  same name,  except
  877.             that they  operate on the command line text, not the PibTerm
  878.             parameter text:   ParamCount  counts the  number of  (blank-
  879.             delimited) command line entries, and ParamStr(i) returns the
  880.             ith command-line entry.
  881.             
  882.             To make  this  clearer,  here  is  the  text  for  a  sample
  883.             EMULATE.SCR script:
  884.             
  885.                  *******************************************************************
  886.                  *                                                                 *
  887.                  *  Emulate.scr --- Command processor to set terminal emulation.   *
  888.                  *                  Use ADDCOMMAND 'Emulate' 'Emulate.scr' to      *
  889.                  *                  activate this function.                        *
  890.                  *                                                                 *
  891.                  *  Use:                                                           *
  892.                  *                                                                 *
  893.                  *    Emulate terminalname                                         *
  894.                  *                                                                 *
  895.                  *       terminalname -- name of terminal (e.g., VT100) to         *
  896.                  *                       emulate.                                  *
  897.                  *                                                                 *
  898.                  *******************************************************************
  899.                  *
  900.                  Declare TermName String
  901.                  *
  902.  
  903.  
  904.             PibTerm Script Language Reference Guide              Page 13            PibTerm Script Language Reference Guide              Page 13
  905.  
  906.  
  907.                  *   Pick up terminal name from command line text.
  908.                  *
  909.                  IF ( ParamCount > 0 ) THEN
  910.                     Set TermName = UpperCase( ParamStr( 1 ) )
  911.                  ELSE
  912.                     Set TermName = ' '
  913.                  ENDIF
  914.                  *
  915.                  *   Set terminal type depending upon name.
  916.                  *
  917.                  DOCASE TermName OF
  918.                     CASE 'DUMB'
  919.                        Message "Dumb terminal chosen."
  920.                        SetParam   'te' '0'
  921.                     ENDCASE
  922.                     CASE 'VT52'
  923.                        Message "VT52 terminal chosen."
  924.                        SetParam   'te' '1'
  925.                     ENDCASE
  926.                     CASE 'ANSI'
  927.                        Message "ANSI/BBS terminal chosen."
  928.                        SetParam   'te' '2'
  929.                     ENDCASE
  930.                     CASE 'VT100'
  931.                        Message "VT100 terminal chosen."
  932.                        SetParam   'te' '3'
  933.                     ENDCASE
  934.                     CASE 'GOSSIP'
  935.                        Message "Gossip mode chosen."
  936.                        SetParam   'te' '4'
  937.                     ENDCASE
  938.                     CASE 'TEK4010'
  939.                        Message "Tek 4010 terminal chosen."
  940.                        SetParam   'te' '6'
  941.                     ENDCASE
  942.                     CASE 'ADM3A'
  943.                        Message "ADM3a terminal chosen."
  944.                        SetParam   'te' '7'
  945.                     ENDCASE
  946.                     CASE 'ADM5'
  947.                        Message "ADM5 terminal chosen."
  948.                        SetParam   'te' '8'
  949.                     ENDCASE
  950.                     CASE 'TV925'
  951.                        Message "Televideo 925 terminal chosen."
  952.                        SetParam   'te' '10'
  953.                     ENDCASE
  954.                     CASE ELSE
  955.                        Message "Bogus terminal choice!"
  956.                     ENDCASE
  957.                  ENDDOCASE
  958.             
  959.             
  960.  
  961.  
  962.             PibTerm Script Language Reference Guide              Page 14            PibTerm Script Language Reference Guide              Page 14
  963.  
  964.  
  965.             AddLF -- Add Line Feeds            AddLF -- Add Line Feeds
  966.             
  967.             AddLF toggles  the addition  of a line feed to each carriage            AddLF                                                       
  968.             return received from the remote system.  This is useful when
  969.             accessing remote  systems that  expect a  carriage return to
  970.             also act  as a  line feed.  Not many system do that anymore.
  971.             However, occasionally  a  system  accessed  using  FTP  over
  972.             ArpaNet doesn't  send the  <CR><LF> sequence,  just <CR>, so
  973.             AddLF is a handy way to rectify that problem.
  974.             
  975.             
  976.             Alarm -- Issues Five Beeps            Alarm -- Issues Five Beeps
  977.             
  978.             Alarm issues five beeps as long as mute mode is turned off.            Alarm                                                      
  979.             
  980.             
  981.             Break -- Send Break            Break -- Send Break
  982.             
  983.             Break issues  a break  signal over  the communications port.            Break                                                       
  984.             This is  exactly the same as hitting the <ALT>B.  The length
  985.             of the break signal is controlled by the BL= parameter.
  986.             
  987.             
  988.             Call -- Call Internal Script Procedure            Call -- Call Internal Script Procedure
  989.             
  990.             Call  invokes   an  internal  script  procedure.    See  the            Call                                                        
  991.             Procedure command below for more details.            Procedure                                
  992.             
  993.             
  994.             Capture -- Capture Session To Disk            Capture -- Capture Session To Disk
  995.             
  996.             Capture toggles  session capture  to a  specified file.  The            Capture                                                     
  997.             syntax of the capture command is:
  998.             
  999.                  Capture Sname Scaptype
  1000.             
  1001.             Sname is the name of the file to capture to.            Sname                                       
  1002.             
  1003.             Scaptype indicates  the type  of capture  to  be  performed.            Scaptype                                                    
  1004.             "E" specifies   an  edited  capture  and  "U"  specifies  an
  1005.             unedited capture.  An edited  capture displays  the lines as
  1006.             they appear  on the  screen.   An  unedited  capture  writes
  1007.             characters as they arrive from the remote system.
  1008.             
  1009.             For example,  to initiate  edited session  capture  to  file
  1010.             "GETIT.DAT", use the script command:
  1011.             
  1012.                  Capture "GETIT.DAT" "E"
  1013.             
  1014.             If the  script variable  'Sname' contains  "GETIT.DAT",  you
  1015.             could also write:
  1016.             
  1017.                  Capture Sname "E"
  1018.             
  1019.  
  1020.  
  1021.             PibTerm Script Language Reference Guide              Page 15            PibTerm Script Language Reference Guide              Page 15
  1022.  
  1023.  
  1024.             To turn  off capture  later in  the same  script, just enter
  1025.             Capture with no argument:
  1026.             
  1027.                  Capture
  1028.             
  1029.             Be careful  -- if  you enter  Capture with no arguments, and
  1030.             you have  not previously  requested session  capturing, then
  1031.             PibTerm will  issue a  prompt for  the capture file name, if
  1032.             PibTerm is  running in  attended mode. The intent here is to
  1033.             provide flexibility  when running a script in attended mode;
  1034.             but if you're not careful, you may find an unattended script
  1035.             gets hung  up waiting  for the  capture file name entry.  In
  1036.             unattended mode, the spurious Capture is ignored.
  1037.             
  1038.             
  1039.             Case -- Case Selector For DoCase            Case -- Case Selector For DoCase
  1040.             
  1041.             Case marks  the start  of a  Case/EndCase block  in a DoCase            Case                                                        
  1042.             statement.   See the DoCase statement definition for further                                 DoCase                                 
  1043.             details.
  1044.             
  1045.             
  1046.             ChDir -- Change Current Directory or Drive            ChDir -- Change Current Directory or Drive
  1047.             
  1048.             ChDir changes  the current  logged directory  and/or  drive.            ChDir                                                       
  1049.             The syntax is:
  1050.             
  1051.                  CHDIR   Sdir
  1052.             
  1053.             Sdir is  either a string variable or constant containing the            Sdir                                                        
  1054.             name of the new directory, drive, or both in standard MS DOS
  1055.             directory format.
  1056.             
  1057.             Examples:
  1058.             
  1059.                  ChDir 'c:\modem'
  1060.                  Set mydir = 'b:\bogus'
  1061.                  ChDir mydir
  1062.             
  1063.                  ChDir 'b:'
  1064.                  Set mydrive = 'b:'
  1065.                  ChDir mydrive
  1066.             
  1067.             
  1068.             Clear -- Clear Screen            Clear -- Clear Screen
  1069.             
  1070.             Clear clears  the screen (except for the status line).  This            Clear                                                       
  1071.             is just like the <ALT>C keyboard command.
  1072.             
  1073.             
  1074.  
  1075.  
  1076.             PibTerm Script Language Reference Guide              Page 16            PibTerm Script Language Reference Guide              Page 16
  1077.  
  1078.  
  1079.             Close -- Close File            Close -- Close File
  1080.             
  1081.             Close closes  a file  opened using  the script  command Open            Close                                                   Open
  1082.             (see below).  The syntax is:
  1083.             
  1084.                CLOSE  Ifile
  1085.             
  1086.             IFile is the index of the file to be closed.            IFile                                       
  1087.             
  1088.                  *
  1089.                  Declare MyFile Integer
  1090.                  *
  1091.                  Close 1
  1092.                  Set Myfile = 3
  1093.                  Close Myfile
  1094.             
  1095.             
  1096.             ClrEol -- Clear Display To End Of Line            ClrEol -- Clear Display To End Of Line
  1097.             
  1098.             ClrEol clears  the display beginning with the current cursor            ClrEol                                                      
  1099.             position and  continuing to  the end  of  the  line  on  the
  1100.             screen.
  1101.             
  1102.             
  1103.             ComDrain -- Drain Serial Port Output Buffer            ComDrain -- Drain Serial Port Output Buffer
  1104.             
  1105.             ComDrain waits  a specified number of seconds for the serial            ComDrain                                                    
  1106.             port output buffer to empty.  The syntax is:
  1107.             
  1108.                  ComDrain IWaitSecs
  1109.             
  1110.             where "IWaitSecs"  is the  number of seconds to wait for the                   IWaitSecs                                            
  1111.             buffer to  become empty.   Execution of the script continues
  1112.             with the next statement when either the buffer is drained or
  1113.             the number of seconds to wait is exceeded.
  1114.             
  1115.             
  1116.             ComFlush -- Flush Serial Port Buffers            ComFlush -- Flush Serial Port Buffers
  1117.             
  1118.             ComFlush flushes  or drains  the serial  port  buffers.  The
  1119.             syntax is:
  1120.             
  1121.                  ComFlush Sflushtyp
  1122.             
  1123.             where "Sflushtyp"  is a  string constant  or variable  which                   Sflushtyp                                            
  1124.             indicates which serial port buffers are to be flushed:
  1125.             
  1126.                  'I'       Flush input buffer only
  1127.                  'O'       Flush output buffer only
  1128.                  'B'       Flush both buffers
  1129.             
  1130.             If no  Sflushtyp appears,  both the input and output buffers                   Sflushtyp                                            
  1131.             are flushed.
  1132.             
  1133.  
  1134.  
  1135.             PibTerm Script Language Reference Guide              Page 17            PibTerm Script Language Reference Guide              Page 17
  1136.  
  1137.  
  1138.             The input  buffer is  flushed by  throwing away  the current
  1139.             contents of  the buffer -- i.e., any character received from
  1140.             the remote  system but  not yet  processed by PibTerm -- and
  1141.             then waiting for the port to become briefly inactive.
  1142.             
  1143.             The output  buffer is  flushed by throwing away the contents
  1144.             of the  buffer, i.e.,  any characters  waiting to be sent to
  1145.             the remote system.
  1146.             
  1147.             
  1148.             CopyFile --- Copy File            CopyFile --- Copy File
  1149.             
  1150.             CopyFile copies one file (of any type) to another.  The copy            CopyFile                                                    
  1151.             proceeds byte-by-byte and is not limited to text files.  The
  1152.             syntax is:
  1153.             
  1154.                  COPYFILE  Sorig Scopy
  1155.             
  1156.             Sorig is the original file to be copied.            Sorig                                   
  1157.             Scopy is the resultant copy.            Scopy                       
  1158.             
  1159.             
  1160.             Delay -- Delay Execute for Specified Interval            Delay -- Delay Execute for Specified Interval
  1161.             
  1162.             Delay delays PibTerm execution for the number of tenths of a            Delay                                                       
  1163.             second specified by the argument.  The syntax is:
  1164.             
  1165.                  Delay Idelay
  1166.             
  1167.             For example,
  1168.             
  1169.                  Delay  10
  1170.             
  1171.             delays PibTerm  execution for one second (ten tenths = one).
  1172.             To delay execution for half a second, enter:
  1173.             
  1174.                  Delay 5
  1175.             
  1176.             If the  script variable  Delaytime contains  a 5,  then  you
  1177.             could write:
  1178.             
  1179.                  Declare DelayTime Integer
  1180.                  Set DelayTime = 5
  1181.                  Delay Delaytime
  1182.             
  1183.             to delay execution for half a second.
  1184.             
  1185.             Delay differs from the Suspend command described below.  The            Delay                  Suspend                              
  1186.             Suspend  command   only  halts  SCRIPT  processing  for  the
  1187.             specified  length   of  time.     Delay  halts  ALL  PibTerm
  1188.             processing (except  the asynchronous  reception of  incoming
  1189.             characters).
  1190.             
  1191.             
  1192.  
  1193.  
  1194.             PibTerm Script Language Reference Guide              Page 18            PibTerm Script Language Reference Guide              Page 18
  1195.  
  1196.  
  1197.             DelLine -- Delete Current Line On Screen            DelLine -- Delete Current Line On Screen
  1198.             
  1199.             DelLine deletes  the display line on which the cursor rests.            DelLine                                                     
  1200.             All lines  below the  deleted line  (except the status line)
  1201.             are scrolled up.
  1202.             
  1203.             
  1204.             Dial -- Dial A Number            Dial -- Dial A Number
  1205.             
  1206.             Dial dials  a number  in the PibTerm dialing directory, just            Dial                                                        
  1207.             like <ALT>D.  The number  to be dialed can be specified as a
  1208.             string variable or string constant. The syntax for Dial is:
  1209.             
  1210.                  DIAL    Sdial NOSCRIPT
  1211.             
  1212.             SDial specifies the entry to be dialed.            SDial                                  
  1213.             NOSCRIPT (written  without quote  marks) indicates  that the            NOSCRIPT                                                    
  1214.             automatic invocation  of the  associated dialing  script, if
  1215.             any, is to be suppressed.
  1216.             
  1217.             For example, to dial directory entry 3, use the command:
  1218.             
  1219.                  Dial "3"
  1220.             
  1221.             You can add the dialing prefix characters if you wish:
  1222.             
  1223.                  Dial "-3"
  1224.             
  1225.             You can  also request  a manual dial by prefixing the entire
  1226.             number with an M:
  1227.             
  1228.                  Dial "M1234567"
  1229.             
  1230.             If the  string variable  EntryNum contains "-3" then you can
  1231.             write:
  1232.             
  1233.                  Dial EntryNum
  1234.             
  1235.             If you  don't want  the associated  script for entry 3 to be
  1236.             invoked, then write:
  1237.             
  1238.                  Dial EntryNum NOSCRIPT
  1239.             
  1240.             
  1241.             DirFirst -- Find First Matching File            DirFirst -- Find First Matching File
  1242.             
  1243.             DirFirst, combined  with DirNext  (described below),  allows            DirFirst                 DirNext                            
  1244.             you to  search DOS  directories for  file names  matching  a
  1245.             wildcard specification.  The syntax of DirFirst is:
  1246.             
  1247.                  DirFirst Spec Srchattr Sname Sattr Sdate Stime Size
  1248.             
  1249.  
  1250.  
  1251.             PibTerm Script Language Reference Guide              Page 19            PibTerm Script Language Reference Guide              Page 19
  1252.  
  1253.  
  1254.             Spec is  a string  containing the wildcard specification for            Spec                                                        
  1255.             the search.   Only files matching this specification will be
  1256.             selected.  Here are some examples of legal wildcards:
  1257.             
  1258.                  *.*                 All files.
  1259.                  c:\bogus\*.pas      All  files  in  subdirectory  *.pas
  1260.                                      with the extension '.pas'.
  1261.                  myfile.dat               Only the file 'myfile.dat'.
  1262.                  
  1263.             
  1264.             Srchattr is  a string  which specifies which file attributes            Srchattr                                                    
  1265.             should be  searched for.   Only files matching the specified
  1266.             attributes will be selected.  Here are the various attribute
  1267.             letters and meanings:
  1268.             
  1269.                  A    Archive bit set
  1270.                  D    Directory
  1271.                  H    Hidden
  1272.                  N    Normal file
  1273.                  R    Read-only
  1274.                  S    System
  1275.                  V    Volume label
  1276.             
  1277.             You may  combine attributes.   Specifying  a null string for
  1278.             SrchAttr means  the same  thing  as  combining  ALL  of  the            SrchAttr                                                    
  1279.             attributes.  Here are some examples:
  1280.             
  1281.                  "N"  Select normal files only
  1282.                  "HS" Select hidden system files only
  1283.                  "V"  Select volume label only
  1284.                  ""   Select ALL files
  1285.             
  1286.             Refer to  your DOS  manual  for  details  about  these  file
  1287.             attributes.
  1288.             
  1289.             Sname gets  the name of the first file (if any) matching the            Sname                                                       
  1290.             given specification and attributes.  If no files match, then
  1291.             Sname will be an empty string.            Sname                         
  1292.             
  1293.             Sattr gets  the attributes  associated with  the file  as  a            Sattr                                                       
  1294.             string.   The attribute  string  is  composed  of  the  same
  1295.             letters described  above for  the Srchattr  parameter.  Note                                              Srchattr                  
  1296.             that there  may be  MORE attributes for a particular file in
  1297.             Sattr than in Srchattr.            Sattr         Srchattr 
  1298.             
  1299.             Sdate gets  the creation  date of the file as a string.  The            Sdate                                                       
  1300.             date  format  is  controlled  by  the  setting  of  the  DF=
  1301.             parameter (see the PibTerm Parameter Reference Manual).
  1302.             
  1303.             Stime gets  the creation  time of the file as a string.  The            Stime                                                       
  1304.             time format is controlled by the TF= parameter.
  1305.             
  1306.             Size gets the size of the file in bytes as a string.            Size                                                
  1307.             
  1308.  
  1309.  
  1310.             PibTerm Script Language Reference Guide              Page 20            PibTerm Script Language Reference Guide              Page 20
  1311.  
  1312.  
  1313.             Here is an example in which DirFirst is used to retrieve and
  1314.             display the  volume label  of the  current logged drive (DOS
  1315.             3.0 and above only):
  1316.             
  1317.             
  1318.                  Declare VolID String
  1319.                  Declare Drive String
  1320.                  Declare Dir String
  1321.                  Declare Attr String
  1322.                  Declare Date String
  1323.                  Declare Time String
  1324.                  Declare Size String
  1325.                  *
  1326.                  *                             Get current drive/dir
  1327.                  *
  1328.                  GetDir Drive Dir
  1329.                  *
  1330.                  *                             Append colon to drive
  1331.                  *
  1332.                  Set Drive = CONCAT( Drive , ':' )
  1333.                  *
  1334.                  *                             Look for volume label
  1335.                  *
  1336.                  DirFirst Drive "V" VolID Attr Date Time Size
  1337.                  *
  1338.                  *                             Display if found
  1339.                  *
  1340.                  IF ( VolID <> '' ) THEN
  1341.                       Set VolID = CONCAT( 'Volume: ', VolID )
  1342.                       Set VolID = CONCAT( CONCAT( VolID , '   Created: ' ), Date )
  1343.                       Set VolID = CONCAT( CONCAT( VolID , ' ' ), Time )
  1344.                       Writeln
  1345.                       Writeln VolID
  1346.                  ELSE
  1347.                       Writeln
  1348.                       Writeln "Volume label not found."
  1349.                  ENDIF
  1350.             
  1351.             
  1352.             DirNext -- Find Next Matching File            DirNext -- Find Next Matching File
  1353.             
  1354.             DirNext  returns   further   files   matching   a   wildcard            DirNext                                                     
  1355.             specification provided by a previously executed DirFirst.
  1356.             
  1357.             The syntax of DirNext is:
  1358.             
  1359.                  DirNext   Sname Sattr Sdate Stime Size
  1360.             
  1361.             where Sname  through Size  have the  same  meanings  as  for                  Sname          Size                                   
  1362.             DirFirst above.
  1363.             
  1364.             Here is  a script  which prompts for a file specification to
  1365.             be searched for, and then lists the matching files and sizes
  1366.             on the display:
  1367.  
  1368.  
  1369.             PibTerm Script Language Reference Guide              Page 21            PibTerm Script Language Reference Guide              Page 21
  1370.  
  1371.  
  1372.             
  1373.             *                                   Wildcard for files
  1374.              Declare FSpec String
  1375.             *                                   Attributes for search
  1376.              Declare FAttr String
  1377.             *                                   File name
  1378.              Declare FileName String
  1379.             *                                   File attributes
  1380.              Declare FileAttr String
  1381.             *                                   File creation date
  1382.              Declare FileDate String
  1383.             *                                   File creation time
  1384.              Declare FileTime String
  1385.             *                                   File size in bytes
  1386.              Declare FileSize String
  1387.             *                                   Report line
  1388.              Declare ReportLine String
  1389.             *                                   Counts files found
  1390.              Declare TotalFiles Integer
  1391.             *
  1392.             *                                   Get file spec to search for
  1393.             *
  1394.              Writeln
  1395.              Input "Enter file spec to search for: " FSpec
  1396.              Writeln
  1397.             *
  1398.             *                                   If file spec null, quit.
  1399.             *
  1400.              IF ( FSpec = '' ) THEN
  1401.                 Exit
  1402.              ENDIF
  1403.             *
  1404.             *                                   Search for first file.
  1405.             *
  1406.              DirFirst FSpec "" FileName FileAttr FileDate FileTime FileSize
  1407.             *
  1408.             *                                   No first file -- report that
  1409.             *                                   and quit.
  1410.             *
  1411.              IF ( ( FileName = '' ) OR ( IOResult <> 0 ) ) THEN
  1412.                 Writeln
  1413.                 Writeln "No files found."
  1414.                 Writeln
  1415.                 Exit
  1416.              ENDIF
  1417.             *                                   Set files found to 0.
  1418.              Set TotalFiles = 0
  1419.             *
  1420.             *                                   Begin loop over rest of files.
  1421.             *
  1422.              WHILE ( LENGTH( FileName ) <> 0 ) DO
  1423.             *
  1424.             *                                   Increment file count
  1425.             *
  1426.  
  1427.  
  1428.             PibTerm Script Language Reference Guide              Page 22            PibTerm Script Language Reference Guide              Page 22
  1429.  
  1430.  
  1431.                 Set TotalFiles = TotalFiles + 1
  1432.             *
  1433.             *                                   Display file stuff
  1434.             *
  1435.                 Set FileName = CONCAT( FileName , DUPL( ' ' , 14 - LENGTH( FileName ) ) )
  1436.                 Set FileSize = CONCAT( DUPL( ' ' , 12 - LENGTH( FileSize ) ) , FileSize )
  1437.                 Set FileSize = CONCAT( FileSize , ' ' )
  1438.                 Set FileDate = CONCAT( FileDate , ' ' )
  1439.                 Set FileTime = CONCAT( FileTime , ' ' )
  1440.             *
  1441.                 Set ReportLine = CONCAT( CONCAT( FileName , FileSize ), FileDate )
  1442.                 Set ReportLine = CONCAT( CONCAT( ReportLine , FileTime ), FileAttr )
  1443.             *
  1444.                 Writeln ReportLine
  1445.             *                                   Get next file
  1446.             *
  1447.                 DirNext FileName FileAttr FileDate FileTime FileSize
  1448.             *
  1449.              ENDWHILE
  1450.             *                                   Display final count of files
  1451.             *
  1452.              Set ReportLine = CONCAT( 'Total files found: ', STRING( TotalFiles ) )
  1453.             *
  1454.              Writeln
  1455.              Writeln ReportLine
  1456.             
  1457.             
  1458.             DoCase -- Do Case Statement            DoCase -- Do Case Statement
  1459.             
  1460.             The DoCase  statement starts  a  multiway  selection  block.                DoCase                                                  
  1461.             The syntax of DoCase is as follows:
  1462.             
  1463.                  DOCASE var
  1464.                     CASE value1
  1465.                        ...
  1466.                     ENDCASE
  1467.                     CASE value2
  1468.                        ...
  1469.                     ENDCASE
  1470.                        ...
  1471.                     CASE ELSE
  1472.                        ...
  1473.                     ENDCASE
  1474.                  ENDDOCASE
  1475.             
  1476.             'var' can  be  either  an  integer  or  a  string  variable.
  1477.             'value1', 'value2',  etc. are the case-selection values.  If
  1478.             the value  of 'var'  matches one  of the  'value(n)' values,
  1479.             then  the   statements  following  that  CASE  value(n)  are
  1480.             executed.     CASE  ELSE  provides  a  means  for  executing
  1481.             statements if  the  value  of  'var'  matched  none  of  the
  1482.             'value(n)' values.
  1483.             
  1484.  
  1485.  
  1486.             PibTerm Script Language Reference Guide              Page 23            PibTerm Script Language Reference Guide              Page 23
  1487.  
  1488.  
  1489.             DoCase provides a convenient alternative to a long series of
  1490.             nested IF statements.
  1491.             
  1492.             Examples:
  1493.             
  1494.                  DECLARE  I  Integer
  1495.                  DECLARE  S  String
  1496.                   ...
  1497.                  DOCASE I
  1498.                     CASE 1
  1499.                       ...
  1500.                     ENDCASE
  1501.                     CASE 2
  1502.                       ...
  1503.                     ENDCASE
  1504.                     CASE 3
  1505.                       ...
  1506.                     ENDCASE
  1507.                     CASE ELSE
  1508.                       ...
  1509.                     ENDCASE
  1510.                  ENDDOCASE
  1511.             
  1512.                  DOCASE S
  1513.                     CASE 'VT100'
  1514.                       ...
  1515.                     ENDCASE
  1516.                     CASE 'VT52'
  1517.                       ...
  1518.                     ENDCASE
  1519.                     CASE 'ANSI'
  1520.                       ...
  1521.                     ENDCASE
  1522.                     CASE ELSE
  1523.                       ...
  1524.                     ENDCASE
  1525.                  ENDDOCASE
  1526.             
  1527.             For another  example, see  the definition of the EMULATE.SCR
  1528.             script in the description of the AddCommand command above.
  1529.             
  1530.             
  1531.             Dos -- Execute DOS Command            Dos -- Execute DOS Command
  1532.             
  1533.             Dos executes  a  specified  DOS  command  --  somewhat  like            Dos                                                         
  1534.             <ALT>J, but only for a single command.  The syntax is:
  1535.             
  1536.                  Dos Sdos
  1537.             
  1538.             Sdos specifies the DOS command to be executed.            Sdos                                          
  1539.             
  1540.             For example, to execute a DIR command, enter:
  1541.             
  1542.                  Dos "DIR"
  1543.  
  1544.  
  1545.             PibTerm Script Language Reference Guide              Page 24            PibTerm Script Language Reference Guide              Page 24
  1546.  
  1547.  
  1548.             
  1549.             If the  script variable  'Doscom' contains  'DIR' you  could
  1550.             write:
  1551.             
  1552.                  Dos Doscom
  1553.             
  1554.             To jump to a new copy of DOS, write:
  1555.             
  1556.                  Dos ""
  1557.             
  1558.             Dos automatically  returns to  PibTerm after  executing  the            Dos                                                         
  1559.             single  specified  MS  DOS  command,  unless  the  specified
  1560.             command is  null.  In that case, Dos  invokes a new level of                                             Dos                        
  1561.             the MS  DOS command  processor, and  you will  have to enter
  1562.             EXIT to return to PibTerm.  This is the same behavior as for
  1563.             the <ALT>J command.
  1564.             
  1565.             
  1566.             Echo -- Toggle Local Echo            Echo -- Toggle Local Echo
  1567.             
  1568.             Echo toggles  local echo  mode, just like the keyboard entry            Echo                                                        
  1569.             <ALT>E. In  local echo  mode, PibTerm displays characters as
  1570.             you type  them, and  doesn't wait  for the  remote system to
  1571.             echo them back.
  1572.             
  1573.             
  1574.             EditFile -- Invoke File Editor            EditFile -- Invoke File Editor
  1575.             
  1576.             EditFile invokes  the currently  defined editor specified by
  1577.             the EN=  parameter.   If the  value of EN= is null, then the
  1578.             built-in PibTerm  editor is  invoked.  Otherwise, the string
  1579.             specified as  the value of EN= is executed as a DOS command,
  1580.             after making  any required  file name  substitution (see the
  1581.             description of  the EN=  parameter in the "PibTerm Parameter
  1582.             Reference Manual" for details).
  1583.             
  1584.             The syntax of EditFile is:
  1585.             
  1586.                  EditFile  Sname
  1587.             
  1588.             Sname specifies the name of the file to be edited.            Sname                                             
  1589.             
  1590.             For example,  to invoke  the editor  for file "BOGUSCO.DAT",
  1591.             you could write:
  1592.             
  1593.                  EditFile "Bogusco.dat"
  1594.             
  1595.             
  1596.             Else -- Part Of IF Statement            Else -- Part Of IF Statement
  1597.             
  1598.             Else is described as part of the If command below.            Else                                              
  1599.             
  1600.             
  1601.  
  1602.  
  1603.             PibTerm Script Language Reference Guide              Page 25            PibTerm Script Language Reference Guide              Page 25
  1604.  
  1605.  
  1606.             EndCase -- Ends Case Block            EndCase -- Ends Case Block
  1607.             
  1608.             EndCase is described as part of the DoCase command above.            EndCase                                                  
  1609.             
  1610.             
  1611.             EndDoCase -- Ends DoCase Statement            EndDoCase -- Ends DoCase Statement
  1612.             
  1613.             EndDoCase is described as part of the DoCase command above.            EndDoCase                                                  
  1614.             
  1615.             
  1616.             EndIf -- Ends an IF Statement            EndIf -- Ends an IF Statement
  1617.             
  1618.             EndIf is described as part of the 'If' command below.            EndIf                                                
  1619.             
  1620.             
  1621.             EndProc -- Ends a Script Procedure            EndProc -- Ends a Script Procedure
  1622.             
  1623.             EndProc is described as part of the Procedure command below.            EndProc                                                     
  1624.             
  1625.             
  1626.             EndWhile -- Ends a WHILE Block            EndWhile -- Ends a WHILE Block
  1627.             
  1628.             EndWhile is  described as  part  of  the  'While'  statement            EndWhile                                                    
  1629.             below.
  1630.             
  1631.             
  1632.             EraseFile -- Erase (Delete) A File            EraseFile -- Erase (Delete) A File
  1633.             
  1634.             EraseFile erases (deletes) a file.  The syntax is:            EraseFile                                         
  1635.             
  1636.                  EraseFile Sname
  1637.             
  1638.             Sname specifies the name of the file to be erased.            Sname                                             
  1639.             
  1640.             For example,  to erase  the file  "BOGUSCO.DAT",  you  could
  1641.             write the following script command:
  1642.             
  1643.                  EraseFile "Bogusco.dat"
  1644.             
  1645.             This is equivalent to issuing the DOS command:
  1646.             
  1647.                  ERASE BOGUSCO.DAT
  1648.             
  1649.             
  1650.             Execute -- Execute One Script From Another            Execute -- Execute One Script From Another
  1651.             
  1652.             Scripts may  invoke  other  scripts.    The  Execute  script                                                         Execute        
  1653.             command provides the necessary mechanism.  The syntax of the
  1654.             Execute command is:
  1655.             
  1656.                  Execute Sname <Arguments>
  1657.             
  1658.             Sname is the name of the script to be invoked.            Sname                                         
  1659.             
  1660.  
  1661.  
  1662.             PibTerm Script Language Reference Guide              Page 26            PibTerm Script Language Reference Guide              Page 26
  1663.  
  1664.  
  1665.             <Arguments> is  a list  of variables  or constants  (but NOT            <Arguments                                                  
  1666.             expressions) to  be passed  as  arguments  to  the  executed
  1667.             script.   This is essentially the same format as for calling
  1668.             an internal  script procedure  (see Call), except that Sname                                                Call               Sname
  1669.             here refers to  an external script.
  1670.             
  1671.             Here is a script which invokes three other scripts:
  1672.             
  1673.                  DECLARE I Integer
  1674.                  DECLARE S String
  1675.                  DECLARE name String 'Other2'
  1676.                  ...
  1677.                  Message " "
  1678.                  Message "We will now invoke three scripts."
  1679.                  Message " "
  1680.                  Execute 'OTHER1' 23 'VT100' S
  1681.                  Execute name I
  1682.                  Execute 'OTHER3'
  1683.             
  1684.             The three scripts OTHER1, OTHER2, and OTHER3 will be invoked
  1685.             and executed.
  1686.             
  1687.             The TYPE  of the arguments passed is NOT CHECKED by PibTerm.
  1688.             If you  make a  mistake, you  may get  bizarre results.  The
  1689.             NUMBER of  arguments IS checked, and the invoked script will
  1690.             NOT  be  executed  if  the  wrong  number  of  arguments  is
  1691.             provided.
  1692.             
  1693.             Arguments are  passed to  a nested  script using  the Import                                                                  Import
  1694.             script statement.  See the definition of Import for details.
  1695.             
  1696.             The <ALT>X  command exits  one level  of script nesting at a
  1697.             time.  You may need to repeat it several times to get out of
  1698.             all the  scripts.  The script command Exitall will also take                                                  Exitall               
  1699.             you out of all scripts, regardless of nesting depth.
  1700.             
  1701.             Here is  an extended example of an executed script.  Suppose
  1702.             we want  to construct a script to prompt a remote caller and
  1703.             handle  sending   of  files.    The  script  will  take  two
  1704.             arguments, the  file name of the file(s) to be send, and the
  1705.             transfer protocol.  If either or both aren't specified, then
  1706.             the executed  script will  prompt for them.  We'll call this
  1707.             script SENDIT:
  1708.             
  1709.                  IMPORT  Filename String
  1710.                  IMPORT  Protocol String
  1711.                  *
  1712.                  DECLARE Temp     String
  1713.                  *
  1714.                  *        Check if file name provided.  Prompt if missing.
  1715.                  *
  1716.                        WHILE( LENGTH(FileName) = 0 ) DO
  1717.                           RInput  "Enter name of file to transfer: " Filename
  1718.                        ENDWHILE
  1719.  
  1720.  
  1721.             PibTerm Script Language Reference Guide              Page 27            PibTerm Script Language Reference Guide              Page 27
  1722.  
  1723.  
  1724.                  *
  1725.                  *        Check if file exists.  If not, quit.
  1726.                  *
  1727.                        IF ( NOT FILEEXISTS( Filename ) ) THEN
  1728.                           SET Temp = CONCAT( CONCAT( "The file ", Filename ), " does not exist.|")
  1729.                           SText Temp
  1730.                           Quit
  1731.                        ENDIF
  1732.                  *
  1733.                  *        Check if protocol provided.  Prompt if missing.
  1734.                  *
  1735.                        WHILE( LENGTH( Protocol ) = 0 ) DO
  1736.                           RInput  "Enter protocol to use:          " Protocol
  1737.                        ENDIF
  1738.                  *
  1739.                  *        Check if protocol is legitimate; send file if so.
  1740.                  *
  1741.                        IF POS( Protocol , 'X,XC,Y,YB,TE' ) > 0 THEN
  1742.                           Send Filename Protocol
  1743.                        ELSE
  1744.                           SText   "Invalid protocol name.|"
  1745.                        ENDIF
  1746.                  
  1747.             We could invoke this script as:
  1748.                  
  1749.                       SENDIT  '' ''
  1750.             
  1751.             This would prompt the remote caller for the file name and
  1752.             transfer type.
  1753.             
  1754.             
  1755.             Exit -- Terminate Script Execution            Exit -- Terminate Script Execution
  1756.             
  1757.             Exit  terminates   execution  of   the  script.      PibTerm            Exit                                                        
  1758.             automatically inserts an Exit at the end of a script, so you                                     Exit                               
  1759.             need not  provide it  there.   Exit is  most useful when you
  1760.             want to  stop script  execution somewhere in the middle of a
  1761.             script.
  1762.             
  1763.             Exit only  stops the current script.  If you are in a nested
  1764.             script, control is returned to the invoking script.  To exit
  1765.             all scripts, use the ExitAll command instead.
  1766.             
  1767.             Note that terminating a script does NOT terminate processing
  1768.             of any defined 'When' string.  See the section on the 'When'
  1769.             script command below for further details.
  1770.             
  1771.             
  1772.             ExitAll -- Exit Nested Scripts            ExitAll -- Exit Nested Scripts
  1773.             
  1774.             ExitAll stops  executing the  current script,  regardless of            ExitAll                                                     
  1775.             the nesting  depth.    All  higher-level  scripts  are  also
  1776.             stopped.
  1777.             
  1778.  
  1779.  
  1780.             PibTerm Script Language Reference Guide              Page 28            PibTerm Script Language Reference Guide              Page 28
  1781.  
  1782.  
  1783.             
  1784.             For -- Start FOR Loop            For -- Start FOR Loop
  1785.             
  1786.             A For loop has the form:              For                   
  1787.             
  1788.                  FOR index = start-expression TO     end-expression DO
  1789.                      ...
  1790.                      other statements
  1791.                      ...
  1792.                  ENDFOR
  1793.                                    -or-
  1794.             
  1795.                  FOR index = start-expression DOWNTO end-expression DO
  1796.                      ...
  1797.                      other statements
  1798.                      ...
  1799.                  ENDFOR
  1800.             
  1801.             'index' is  an integer  variable name;    'start-expression'
  1802.             gives the  initial loop  value;   'end-expression' gives the
  1803.             final loop value. 'TO' specifies an ascending loop; 'DOWNTO'
  1804.             specifies a descending loop. The increment is always 1.
  1805.             
  1806.             Examples:
  1807.             
  1808.                DECLARE I Integer
  1809.                   ...
  1810.             
  1811.                FOR I = 1 TO 10 DO
  1812.                   ...
  1813.                ENDFOR
  1814.             
  1815.                FOR I = 10 DOWNTO 1 DO
  1816.                   ...
  1817.                ENDFOR
  1818.             
  1819.                FOR I := ( J * 10 - I ) TO ( K - 32 ) DO
  1820.                   ...
  1821.                ENDFOR
  1822.             
  1823.             
  1824.             FreeSpace -- Find Free Space On Drive            FreeSpace -- Find Free Space On Drive
  1825.             
  1826.             FreeSpace finds the number of bytes of space which are still            FreeSpace                                                   
  1827.             unused on a drive.  The syntax is:
  1828.             
  1829.                  FreeSpace Sdrive Sfree
  1830.             
  1831.             Sdrive specifies  the drive  for which  the  free  space  is            Sdrive                                                      
  1832.             desired.
  1833.             
  1834.             Sfree gets the free space as a string.            Sfree                                 
  1835.             
  1836.  
  1837.  
  1838.             PibTerm Script Language Reference Guide              Page 29            PibTerm Script Language Reference Guide              Page 29
  1839.  
  1840.  
  1841.             For example,  to find  the number  of free bytes on drive C:
  1842.             write:
  1843.             
  1844.                  Declare Size String
  1845.                  FreeSpace "C:" Size
  1846.                  Writeln Size
  1847.             
  1848.             
  1849.             GetDir -- Get Current Directory And Drive            GetDir -- Get Current Directory And Drive
  1850.             
  1851.             GetDir retrieves  the currently  logged  drive  and  MS  DOS            GetDir                                                      
  1852.             subdirectory.  The syntax is:
  1853.             
  1854.                  GETDIR  Sdrive Sdir
  1855.             
  1856.             Sdrive is a string variable which receives the current drive            Sdrive                                                      
  1857.             letter (without a trailing colon).
  1858.             
  1859.             Sdir  is  a  string  variable  which  receives  the  current            Sdir                                                        
  1860.             subdirectory, without initial or trailing slashes.
  1861.             
  1862.             Example:
  1863.             
  1864.             Suppose  that   the  current  path  is  "c:\bogus".    After
  1865.             executing the following script statements:
  1866.             
  1867.                  Declare drive string
  1868.                  Declare drive dir
  1869.                  GetDir drive dir
  1870.             
  1871.             The resulting values are:
  1872.             
  1873.                  drive     contains C                 drive               
  1874.                  dir       contains BOGUS                 dir                     
  1875.             
  1876.             
  1877.             GetParam -- Get Value of PibTerm Parameter            GetParam -- Get Value of PibTerm Parameter
  1878.             
  1879.             GetParam retrieves  the current value of a PibTerm parameter            GetParam                                                    
  1880.             variable.  The syntax is:
  1881.             
  1882.                GetParam  Spname  Svalue
  1883.             
  1884.             Spname is  the two-character  name of  the parameter  to  be            Spname                                                      
  1885.             retrieved.   Spname can  be  either  a  string  variable  or
  1886.             constant.
  1887.             
  1888.             Svalue is  the current value of that parameter.  Svalue must            Svalue                                                      
  1889.             be a string variable.
  1890.             
  1891.             See the  "PibTerm Parameters Reference Guide" for a complete
  1892.             list of the parameter names and types.
  1893.             
  1894.  
  1895.  
  1896.             PibTerm Script Language Reference Guide              Page 30            PibTerm Script Language Reference Guide              Page 30
  1897.  
  1898.  
  1899.             Parameters whose values are integers are converted to string
  1900.             form for  storage in  Svalue.   Parameters whose  values are                                  Svalue                                
  1901.             boolean are  converted to "1" for a true value and "0" for a
  1902.             false value.
  1903.             
  1904.             Requesting a  non-existent parameter  name results in Svalue                                                                  Svalue
  1905.             being set to an empty string.
  1906.             
  1907.             To avoid  excessive code overlay swaps, try to keep a series
  1908.             of GetParam statements together in your script.
  1909.             
  1910.             Example:
  1911.             
  1912.             Suppose that  the current baud rate is 2400; that PibTerm is
  1913.             NOT  set   for  hard-wired   access;  and   that  the  modem
  1914.             initialization string  is "ATZ".   Then  after executing the
  1915.             following script statements:
  1916.             
  1917.             *
  1918.                  Declare ModemInit String
  1919.                  Declare BaudRate  String
  1920.                  Declare HardWired String
  1921.                  Declare PName     String
  1922.                  *
  1923.                  *          Get modem initialization string (string)
  1924.                  *
  1925.                  GetParam  'mi' ModemInit
  1926.                  *
  1927.                  *          Get baud rate (integer variable)
  1928.                  *
  1929.                  Set       PName  = 'ba'
  1930.                  GetParam  PName BaudRate
  1931.                  *
  1932.                  *          Get hardwired status
  1933.                  *
  1934.                  GetParam  'hw' HardWired
  1935.             
  1936.             the resulting values are (all strings):
  1937.             
  1938.                  ModemInit      ATZ
  1939.                  BaudRate       2400
  1940.                  HardWired      0
  1941.             
  1942.             
  1943.             GetVar -- Get Value of Script Variable            GetVar -- Get Value of Script Variable
  1944.             
  1945.             GetVar retrieves  the current  value of a script variable by            GetVar                                                      
  1946.             name.  The syntax is:
  1947.             
  1948.                  GetVar Sname Stype Svalue
  1949.             
  1950.             Sname is the name of the variable whose value is wanted.            Sname                                                   
  1951.             
  1952.  
  1953.  
  1954.             PibTerm Script Language Reference Guide              Page 31            PibTerm Script Language Reference Guide              Page 31
  1955.  
  1956.  
  1957.             Stype  returns   the  type   ("INTEGER",  "STRING")  of  the            Stype                                                       
  1958.             variable.
  1959.             
  1960.             Svalue returns  the current value of the variable, converted            Svalue                                                      
  1961.             to a string value if necessary. The most current instance of
  1962.             the variable  name is  returned.   That means  in  a  nested
  1963.             script or  script procedure,  the value from the most recent
  1964.             definition of the variable is used.
  1965.             
  1966.             If the  given variable  name  doesn't  exist,  the  type  is
  1967.             returned as  "UNDEFINED" and  the value  is returned  as  an
  1968.             empty string.
  1969.             
  1970.             GetVar is  useful when  you  don't  know  the  name  of  the
  1971.             variable for  which you  want a  value until  the script  is
  1972.             being executed.   If  you do  know the name of the variable,
  1973.             you should  use the  Set  command  instead,  which  is  more                                 Set                                    
  1974.             efficient.
  1975.             
  1976.             As an  example, suppose  that the  variable VARA is a string                                                        VARA            
  1977.             variable with  the current  value "bogus value".  Then after
  1978.             executing the following script statements:
  1979.             
  1980.                  Declare vtype string
  1981.                  Declare vval  string
  1982.                  Declare vname string
  1983.                       ...
  1984.                  GetVar 'VARA' vtype vval
  1985.                  SET vname = 'VARA'
  1986.                  GetVar vname vtype vval
  1987.             
  1988.             the resulting values are:
  1989.             
  1990.                  vname     VARA
  1991.                  vtype     STRING
  1992.                  vval      bogus value
  1993.             
  1994.             
  1995.             GoToXY -- Move To Specified Screen Position            GoToXY -- Move To Specified Screen Position
  1996.             
  1997.             GoToXY positions the cursor to a specified row and column on            GoToXY                                                      
  1998.             the screen.  The syntax is:
  1999.             
  2000.                  GoToXY IX IY
  2001.             
  2002.             IX is  the new  column position,  and  IY  is  the  new  row            IX                                     IY                   
  2003.             position.
  2004.             
  2005.             Examples:
  2006.             
  2007.             
  2008.                  *
  2009.                  *                Move to column 1, row 12
  2010.                  *
  2011.  
  2012.  
  2013.             PibTerm Script Language Reference Guide              Page 32            PibTerm Script Language Reference Guide              Page 32
  2014.  
  2015.  
  2016.                  GoToXY  1 12
  2017.                  *
  2018.                  *                Move to column 2, row 23
  2019.                  *
  2020.                  Set I1 = 2
  2021.                  Set I2 = 23
  2022.                  GoToXY  I1 I2
  2023.                  
  2024.             
  2025.             
  2026.             Hangup -- Hang Up The Phone            Hangup -- Hang Up The Phone
  2027.             
  2028.             Hangup hangs  up the  phone, just  like the  keyboard  entry            Hangup                                                      
  2029.             <ALT>H.
  2030.             
  2031.             
  2032.             Host -- Enter Host Mode            Host -- Enter Host Mode
  2033.             
  2034.             Host causes  PibTerm to  enter  Host  mode,  just  like  the            Host                                                        
  2035.             keyboard command  <ALT>W.   In this mode PibTerm acts like a
  2036.             mini-BBS (bulletin  board system).  Remote callers  can dial
  2037.             your system and transfers files and leave messages.  See the
  2038.             section on  PibTerm host  mode in the "PibTerm User's Guide"
  2039.             for more details.
  2040.             
  2041.             
  2042.             If -- Conditionally Execute Statements            If -- Conditionally Execute Statements
  2043.             
  2044.             If allows  testing of  several different types of conditions            If                                                          
  2045.             and conditionally  executing  a  block  of  statements.  The
  2046.             general form of the 'If' statement in PibTerm is:
  2047.             
  2048.                IF  ( condition ) THEN
  2049.                  < script statements executed if condition is TRUE >
  2050.                ELSE
  2051.                  < script statements executed of condition is FALSE >
  2052.                ENDIF
  2053.             
  2054.             The Else  part is  optional and  need not be specified.  You                Else                                                    
  2055.             MUST specify  the Endif.   IF statements can be nested up to                              Endif                                     
  2056.             64 levels deep.
  2057.             
  2058.             The "( condition )" must be an expression which evaluates to
  2059.             either zero  (false) or  non-zero (true).    Basically,  the
  2060.             "condition" is  of the  form "v1  OP v2" where v1 and v2 are                                                           v1     v2    
  2061.             script variables  or  functions,  and  OP  is  a  relational                                                   OP                   
  2062.             operator. The  available functions  are described  under the
  2063.             Set command below. The available relational operators are:            Set                                                       
  2064.             
  2065.                  =, <, >, <>, <=, >=, NOT, AND, OR, XOR
  2066.             
  2067.             Examples:
  2068.             
  2069.                  IF ( a = b ) THEN
  2070.  
  2071.  
  2072.             PibTerm Script Language Reference Guide              Page 33            PibTerm Script Language Reference Guide              Page 33
  2073.  
  2074.  
  2075.                       ...
  2076.                  ENDIF
  2077.             
  2078.                  IF ( a <> 'Where''s the beef?' ) THEN
  2079.                  ...
  2080.                  ENDIF
  2081.             
  2082.                  IF ( c <= 25 ) THEN
  2083.                  ...
  2084.                  ENDIF
  2085.             
  2086.                  IF ( NOT ( a = b ) ) THEN
  2087.                  ...
  2088.                  ENDIF
  2089.             
  2090.             Compound conditions are allowed, for example:
  2091.             
  2092.                  IF ( ( a = b ) AND ( NOT CONNECTED ) ) THEN
  2093.                  ...
  2094.                  ENDIF
  2095.             
  2096.             String  comparisons   use  the  ASCII  character  set  as  a
  2097.             collating sequence.
  2098.             
  2099.             These same conditional expressions can be used in all of the
  2100.             other conditional commands like WHILE, UNTIL, and so on.
  2101.             
  2102.             
  2103.             Import -- Import Variable To Executed Script            Import -- Import Variable To Executed Script
  2104.             
  2105.             A script invoked using the Execute script statement needs to                                       Execute                          
  2106.             indicate which  variables are  being passed  to it.  This is
  2107.             done using the IMPORT command, which has the syntax:
  2108.             
  2109.                  Import varname type
  2110.             
  2111.             Imported variables may be used just like Declared variables.
  2112.             You can  also Declare  variables which  will be local to the
  2113.             Executed script.            Execute         
  2114.             
  2115.             Here is the same main script as given in the Execute command
  2116.             description:
  2117.             
  2118.                  DECLARE I Integer
  2119.                  DECLARE S String
  2120.                  DECLARE name String 'Other2'
  2121.                  ...
  2122.                  Message " "
  2123.                  Message "We will now invoke three scripts."
  2124.                  Message " "
  2125.                  Execute 'OTHER1' 23 'VT100' S
  2126.                  Execute name I
  2127.                  Execute 'OTHER3'
  2128.             
  2129.  
  2130.  
  2131.             PibTerm Script Language Reference Guide              Page 34            PibTerm Script Language Reference Guide              Page 34
  2132.  
  2133.  
  2134.             
  2135.             The first three statements of script OTHER1 above might look
  2136.             like this:
  2137.             
  2138.                  IMPORT N        Integer
  2139.                  IMPORT TermType String
  2140.                  IMPORT Message  String
  2141.                     ...
  2142.                  
  2143.             
  2144.             The Import statements connect the variables N, TermType, and
  2145.             Message in  the script OTHER1 with the variables passed from
  2146.             the main  script, which may have quite different names.  For
  2147.             example:
  2148.             
  2149.                  Execute 'other1' 23 'vt100' S
  2150.                  
  2151.             results in the following matchups:
  2152.             
  2153.                  N         <-- 23
  2154.                  TermType  <-- 'VT100'
  2155.                  Message   <-- S
  2156.             
  2157.             As with internal script procedures, you may alter the values
  2158.             of IMPORTed  variables and the new values ARE passed back to
  2159.             the invoking  script IF  the  corresponding  argument  is  a
  2160.             variable.   Changes in  constants are NOT passed back to the
  2161.             invoking script.
  2162.             
  2163.             
  2164.             Input -- Get Input From Keyboard            Input -- Get Input From Keyboard
  2165.             
  2166.             Input prompts  for and  reads characters  from the keyboard.            Input                                                       
  2167.             The syntax is:
  2168.             
  2169.                  Input Sprompt Sinput
  2170.             
  2171.             Sprompt contains  the prompt  string, which  may be the null            Sprompt                                                     
  2172.             string, in which case no prompt is issued.
  2173.             
  2174.             Sinput  receives   the  characters  typed  up  to  (but  not            Sinput                                                      
  2175.             including) the terminating carriage return.
  2176.             
  2177.  
  2178.  
  2179.             PibTerm Script Language Reference Guide              Page 35            PibTerm Script Language Reference Guide              Page 35
  2180.  
  2181.  
  2182.             Example:
  2183.             
  2184.                  *
  2185.                  *           Read letter into variable answer
  2186.                  *
  2187.                  Declare answer string
  2188.                  Declare prompt string
  2189.                  *
  2190.                  Input 'Enter letter: ' answer
  2191.                  *
  2192.                  *           Read letter into variable answer.
  2193.                  *
  2194.                  Set prompt = 'Enter letter: '
  2195.                  Input prompt answer
  2196.             
  2197.             
  2198.             InsLine -- Insert Line At Cursor            InsLine -- Insert Line At Cursor
  2199.             
  2200.             InsLine inserts  a blank  line in  the display following the            InsLine                                                     
  2201.             line on  which the  cursor  rests.    All  lines  below  the
  2202.             inserted line  (except the  status line)  are scrolled down,
  2203.             and the last line is scrolled off the screen.
  2204.             
  2205.             
  2206.             Key -- Set Function Key Values            Key -- Set Function Key Values
  2207.             
  2208.             Key reads  function keys  from a  specified file,  like  the            Key                                                         
  2209.             <ALT>K keyboard  entry "Read  definitions from  a file". The
  2210.             syntax is:
  2211.             
  2212.                  Key Skeyfile
  2213.             
  2214.             Skeyfile is  the name  of the  file containing  the keyboard            Skeyfile                                                    
  2215.             definitions.
  2216.             
  2217.             Example:
  2218.             
  2219.             In the following script segment:
  2220.             
  2221.                  *
  2222.                  *          Read keyboard definition from file "mydefs.fnc"
  2223.                  *
  2224.                  Declare KeyFile String
  2225.                  *
  2226.                  Key "mydefs"
  2227.                  *
  2228.                  Set KeyFile = "mydefs"
  2229.                  Key KeyFile
  2230.                  *
  2231.                  Set KeyFile = "mydefs.fnc"
  2232.                  Key KeyFile
  2233.  
  2234.  
  2235.             PibTerm Script Language Reference Guide              Page 36            PibTerm Script Language Reference Guide              Page 36
  2236.  
  2237.  
  2238.                  
  2239.                  
  2240.             all three  Key statements  read key  definitions  from  file                       Key                                              
  2241.             "mydefs.fnc" -- the ".fnc" is understood.
  2242.                  
  2243.             
  2244.             KeyDef -- Define Function Key Value            KeyDef -- Define Function Key Value
  2245.             
  2246.             KeyDef defines a string to be sent to the remote system when            KeyDef                                                      
  2247.             a function  key is struck.  This is like the <ALT>K "D)efine
  2248.             key" command. The syntax is:
  2249.             
  2250.                  KeyDef Skeyname Skeytext
  2251.             
  2252.             Skeyname is the name of the key to be defined.            Skeyname                                      
  2253.             
  2254.             Skeytext is the text string to be assigned to the key.            Skeytext                                              
  2255.             
  2256.             The following key names are used with KeyDef:
  2257.             
  2258.                  F1 through F12 (for function key F1 through F12)                 F1         F12                                  
  2259.                  A1 through A12 (for <ALT>F1 though <ALT>F12);                 A1         A12                               
  2260.                  C1 through C12 (for <CTRL>F1 through <CTRL>F12);                 C1         C12                                  
  2261.                  S1 through S12 (for <SHIFT>F1 through <SHIFT>F12).                 S1         S12                                    
  2262.             
  2263.                  N1 through N0  (for <ALT>1 through <ALT>0 on top row                 N1         N0                                       
  2264.                                 of the keyboard);
  2265.                  N-             (for <ALT>- on the top keyboard row)                 N-                                                 
  2266.                  N+             (for <ALT>+ on the top keyboard row)                 N+                                                 
  2267.             
  2268.                  K0 through K9  (for keypad 0 through 9)                 K0         K9                          
  2269.                  K.             (for keypad . or DEL key)                 K.                                      
  2270.                  K+             (for keypad + )                 K+                            
  2271.                  K-             (for keypad - )                 K-                            
  2272.                  K*             (for keypad * )                 K*                            
  2273.                  K/             (for keypad / )                 K/                            
  2274.                  KE             (for keypad enter)                 KE                               
  2275.                  AK versions    (for <ALT>keypad 0 through 9, etc.)                 AK                                                
  2276.                  CK versions    (for <CTRL>keypad 0 through 9, etc.)                 CK                                                 
  2277.             
  2278.                  PS             (for PrtSc)                 PS                        
  2279.                  APS            (for <ALT>PrtSc)                 APS                            
  2280.                  CPS            (for <CTRL>PrtSc)                 CPS                             
  2281.             
  2282.                  AEN            (for <ALT>Enter)                 AEN                            
  2283.             
  2284.                  BS             (for Backspace)                 BS                            
  2285.                  CBS            (for <CTRL>Backspace)                 CBS                                 
  2286.                  ABS            (for <ALT>BackSpace)                 ABS                                
  2287.             
  2288.                  XU             (for separate cursor pad up arrow)                 XU                                               
  2289.                  XD             (for separate cursor pad down arrow)                 XD                                                 
  2290.                  XL             (for separate cursor pad left arrow)                 XL                                                 
  2291.                  XR             (for separate cursor pad right arrow)                 XR                                                  
  2292.  
  2293.  
  2294.             PibTerm Script Language Reference Guide              Page 37            PibTerm Script Language Reference Guide              Page 37
  2295.  
  2296.  
  2297.                  AX versions    (for <ALT>separate cursor pad keys)                 AX                                                
  2298.                  CX versions    (for <CTRL>separate cursor pad keys)                 CX                                                 
  2299.             
  2300.                  XI             (for separate position pad Insert)                 XI                                               
  2301.                  XH             (for separate position pad Home)                 XH                                             
  2302.                  XPU            (for separate position pad PageUp)                 XPU                                              
  2303.                  XDE            (for separate position pad Delete)                 XDE                                              
  2304.                  XE             (for separate position pad End)                 XE                                            
  2305.                  XPD            (for separate position pad PageDown)                 XPD                                                
  2306.                  AX versions    (for <ALT>separate position pad keys)                 AX                                                  
  2307.                  CX versions    (for <CTRL>separate position pad keys)                 CX                                                   
  2308.             
  2309.             Not all  keys exist  on all  keyboards.   However,  you  can
  2310.             always assign  values to keys that don't exist on individual
  2311.             keyboards anyway.
  2312.             
  2313.             Examples:
  2314.             
  2315.                  *
  2316.                  Declare KeyName String
  2317.                  Declare KeyDef  String
  2318.                  *
  2319.                  Key 'F1' 'DIR *.*|'
  2320.                  *
  2321.                  Set KeyName = 'F1'
  2322.                  Set KeyDef  = 'DIR *.*|'
  2323.                  KeyDef Keyname KeyDef
  2324.                  KeyDef 'F1' Keydef
  2325.                  KeyDef KeyName 'DIR *.*|'
  2326.             
  2327.             
  2328.             KeyFlush -- Flush Keyboard            KeyFlush -- Flush Keyboard
  2329.             
  2330.             KeyFlush flushes all pending characters from the keyboard.            KeyFlush                                                  
  2331.             
  2332.             
  2333.             KeySend -- Send Function Key Value To Remote            KeySend -- Send Function Key Value To Remote
  2334.             
  2335.             KeySend sends  the specified  key's definition to the remote            KeySend                                                     
  2336.             system.  The syntax is:
  2337.             
  2338.                  KeySend Skeyname
  2339.             
  2340.             Skeyname provides  the name  of the  key to  be sent.    The            Skeyname                                                    
  2341.             allowed values  for Skeyname  are the same as for the KeyDef                                Skeyname                          KeyDef
  2342.             command above.
  2343.             
  2344.             Example:
  2345.             
  2346.                  *           Send the text associated with function key F1
  2347.                  *           to the remote system
  2348.                  *
  2349.                  KeySend "F1"
  2350.             
  2351.  
  2352.  
  2353.             PibTerm Script Language Reference Guide              Page 38            PibTerm Script Language Reference Guide              Page 38
  2354.  
  2355.  
  2356.             
  2357.             Log -- Toggle Printer Logging            Log -- Toggle Printer Logging
  2358.             
  2359.             Log toggles  session logging  on printer,  like the keyboard            Log                                                         
  2360.             entry <ALT>L.  You should ensure that your printer is turned
  2361.             on before  using <ALT>L.  When logging  is active,  all  the
  2362.             output from the remote system is echoed on your printer.
  2363.             
  2364.             
  2365.             Menu -- Display Pop-Up Menu            Menu -- Display Pop-Up Menu
  2366.             
  2367.             Menu displays  a pop-up  menu on the screen similar to those            Menu                                                        
  2368.             used internally by PibTerm.  The syntax is:
  2369.             
  2370.                  MENU Ires Irow Icol Ideflt Stitle Sitem1 Sitem2 ...
  2371.             
  2372.             Ires is  the index of the menu item chosen (or -1 if the ESC            Ires                                                     ESC
  2373.             key it struck).
  2374.             
  2375.             Irow and Icol indicate the position to display the top left-            Irow and Icol                                               
  2376.             hand corner  of the  position menu.   Irow  and Icol  may be                                                  Irow      Icol        
  2377.             either integer variables or constants.
  2378.             
  2379.             Ideflt is  the index of the default choice and may be either            Ideflt                                                      
  2380.             an integer variable or constant.
  2381.             
  2382.             Stitle is the menu title and may be either a string variable            Stitle                                                      
  2383.             or constant.
  2384.             
  2385.             Sitem1, Sitem2,  etc. provide  the text  for the  menu  line            Sitem1, Sitem2                                              
  2386.             entries and may be either string variables or constants.
  2387.             
  2388.             The resulting menu is displayed over the current contents of
  2389.             the screen. The keypad arrow keys/mouse/first character of a
  2390.             menu item  can be used to choose a value from the menu, just
  2391.             like with standard PibTerm menus.
  2392.             
  2393.             Example:
  2394.             
  2395.             Here is  a menu definition which requests that a pop-up menu
  2396.             with the  title "Select  baud rate"  be placed  at  position
  2397.             (column=10, row=11)  on the  screen.   There are to be three
  2398.             possible values,  300, 1200,  and  2400.    2400  is  to  be
  2399.             highlighted as the default value.
  2400.             
  2401.                  Declare MyBaud Integer
  2402.                  Menu MyBaud 10 11 3 "Select baud rate: " "300" "1200" "2400"
  2403.             
  2404.             If the  returned value  of MyBaud is 1, then 300 was chosen;
  2405.             if MyBaud  is 2,  then 1200  was chosen; if MyBaud is 3 then
  2406.             2400 was chosen.  If MyBaud is <= 0, then no choice was made
  2407.             (the ESC key was hit).
  2408.             
  2409.             
  2410.  
  2411.  
  2412.             PibTerm Script Language Reference Guide              Page 39            PibTerm Script Language Reference Guide              Page 39
  2413.  
  2414.  
  2415.             Message -- Display Message On Screen            Message -- Display Message On Screen
  2416.             
  2417.             Message displays text on the screen.  The syntax is:            Message                                             
  2418.             
  2419.                  Message String
  2420.             
  2421.             where String  is the  text to  be displayed.   String may be                  String                                   String       
  2422.             either a string variable or string constant.
  2423.             
  2424.             The text is NOT sent to the remote system.
  2425.             
  2426.             Example:
  2427.             
  2428.                  Message "Here is a sample message."
  2429.             
  2430.             The message  text cannot  span more than a single line.  You
  2431.             may enter as many 'Message' statements in a row as you want,
  2432.             if you wish to have more than one line of text appear.
  2433.             
  2434.             There is  an important difference in the function of Message                                                                 Message
  2435.             and Writeln  0.   Message passes  the characters through the                Writeln  0    Message                                   
  2436.             current terminal  emulator display mechanism, so that escape
  2437.             sequences will  be processed.    This  allows  you  to  take
  2438.             advantage of  interesting effects possible when using escape
  2439.             sequences.   Writeln 0  writes the characters to the display                         Writeln 0                                      
  2440.             directly,  without   regard  for   the  particular  terminal
  2441.             emulation  begin   used.    Escape  sequences  will  not  be                                                                 not    
  2442.             processed.
  2443.             
  2444.             
  2445.             Mute -- Toggle Mute Mode            Mute -- Toggle Mute Mode
  2446.             
  2447.             Mute toggles  mute mode, like the keyboard entry <ALT>M.  In            Mute                                                        
  2448.             mute mode,  no sounds  like bells or music are issued.  This
  2449.             is ideal  for those late-night sessions when you want to log
  2450.             in to  those remote systems that play the entire top 40 rock
  2451.             hits before  they allow  you to do anything useful, and also
  2452.             for those  systems which  beep at  you  every  time  you  do
  2453.             ANYTHING at all.
  2454.             
  2455.             
  2456.             Open -- Open File            Open -- Open File
  2457.             
  2458.             Open make a text file accessible for processing in a script.            Open                                                        
  2459.             The syntax is:
  2460.             
  2461.                  Open Ifile Sname Stype
  2462.             
  2463.             Ifile is  the "handle"  (1 through 10) to be assigned to the            Ifile                                                       
  2464.             file, and may be either an integer variable or constant.
  2465.             
  2466.             Sname is  the name of the file (which may include a complete            Sname                                                       
  2467.             DOS path).
  2468.             
  2469.  
  2470.  
  2471.             PibTerm Script Language Reference Guide              Page 40            PibTerm Script Language Reference Guide              Page 40
  2472.  
  2473.  
  2474.             Stype provides the access method for the file:            Stype                                         
  2475.             
  2476.                  'I'  Input          File to be read
  2477.                  'O'  Output    File to written/overwritten
  2478.                  'A'  Append    File to be added to at end of file
  2479.             
  2480.             A file  opened  with  OPEN  should  be  closed  with  CLOSE.                                  OPEN                            CLOSE 
  2481.             All opened  files are  automatically  closed  when  the  top
  2482.             script level  is exited.   Files  ARE global  across  nested
  2483.             scripts.
  2484.             
  2485.             A handle  of 0 is reserved for keyboard/screen input/output.
  2486.             You need not (and cannot) explicitly open handle 0.
  2487.             
  2488.             To read  from a  file, use  the  script  commands  Read  and                                                               Read     
  2489.             Readln.  To write to a file, use Write and Writeln.  See the            Readln                           Write     Writeln          
  2490.             definitions of  those  commands  for  details.    To  switch
  2491.             between reading  and writing  a file,  you need to CLOSE the                                                               CLOSE    
  2492.             file and re-open it.
  2493.             
  2494.             Examples:
  2495.             
  2496.                  *
  2497.                  Declare handle   integer
  2498.                  Declare filename string
  2499.                  Declare opentype string
  2500.                  *
  2501.                  Open 1 'bogus.txt' 'input'
  2502.                  *
  2503.                  Set handle = 2
  2504.                  Set filename = 'c:\mybogus\bogus2.txt'
  2505.                  Set opentype = 'output'
  2506.                  *
  2507.                  Open handle filename opentype
  2508.                  
  2509.             
  2510.             Param -- Set Program Parameter            Param -- Set Program Parameter
  2511.             
  2512.             Param sets  Pibterm program  parameters.  The syntax follows            Param                                                       
  2513.             that used  in the  PIBTERM.CNF file.   You  specify the two-
  2514.             letter name  of the parameter to change, then an equal sign,
  2515.             and then  the value  to be  assigned to that parameter.  The
  2516.             parameter names  and values  are described  in the  "PibTerm
  2517.             Parameters Reference Guide."
  2518.             
  2519.             Param is  an old  script command,  left over  from  previous            Param                                                       
  2520.             PibTerm versions,  and  included  for  compatibility.    You
  2521.             should use the SetParam command instead in new scripts.                           SetParam                                
  2522.             
  2523.             For example, to change the terminal emulation to VT100 mode,
  2524.             write:
  2525.             
  2526.                  Param te=3
  2527.             
  2528.  
  2529.  
  2530.             PibTerm Script Language Reference Guide              Page 41            PibTerm Script Language Reference Guide              Page 41
  2531.  
  2532.  
  2533.             To change the baud rate to 1200 baud, write:
  2534.             
  2535.                  Param ba=1200
  2536.             
  2537.             
  2538.             PrintFile -- Print A File            PrintFile -- Print A File
  2539.             
  2540.             PrintFile starts  printing a specified file using the built-            PrintFile                                                   
  2541.             in PibTerm  print spooler.   PibTerm   overlaps the printing
  2542.             with other  duties like reading keyboard input or displaying
  2543.             output received from the remote system.
  2544.             
  2545.             The syntax for PrintFile is:
  2546.             
  2547.                  PrintFile Sname
  2548.             
  2549.             Sname specifies the name of the file to be printed.            Sname                                              
  2550.             
  2551.             To start printing a file called "BOGUSCO.LIS", write:
  2552.             
  2553.                  PrintFile "Bogusco.lis"
  2554.             
  2555.             To  stop  the  print  operation  before  the  file  finishes
  2556.             printing, write:
  2557.             
  2558.                  PrintFile ""
  2559.             
  2560.             
  2561.             Procedure -- Define Script Procedure            Procedure -- Define Script Procedure
  2562.             
  2563.             Procedure marks the start of an internal script procedure. A            Procedure                                                   
  2564.             script procedure  is like  a script within a script. You can
  2565.             declare an internal script procedure as follows:
  2566.             
  2567.                  PROCEDURE name args
  2568.                       -- statements ---
  2569.                  ENDPROC
  2570.             
  2571.             Here name  is the  name of the procedure, and args is a list                 name                                     args          
  2572.             of arguments  and types  for the procedure.  A procedure may
  2573.             reference any  variables previously  defined by higher level
  2574.             procedures or  the main  script as  well  as  the  variables
  2575.             defined by its arguments. Local variables -- declared within
  2576.             the procedure -- are also allowed.
  2577.             
  2578.             A procedure definition must precede its first use.
  2579.             
  2580.             The EndProc  acts as  a return.  You may also explicitly use                EndProc                                                 
  2581.             the Return statement.                Return           
  2582.             
  2583.             You invoke a procedure using the CALL statement:                                             CALL           
  2584.             
  2585.                  Call name arguments
  2586.             
  2587.  
  2588.  
  2589.             PibTerm Script Language Reference Guide              Page 42            PibTerm Script Language Reference Guide              Page 42
  2590.  
  2591.  
  2592.             Here name  is the  name of  the procedure, and arguments are                 name                                      arguments    
  2593.             the procedure  arguments.   The arguments must match in type
  2594.             and number  with those  declared on  the  PROCEDURE  command                                                      PROCEDURE         
  2595.             defining the  called procedure.  (If not,  a syntax error is
  2596.             reported.)  The arguments may be variables or constants, but
  2597.             NOT expressions.     Arguments which  ARE variables  may  be
  2598.             changed in  the called procedures if desired. Constants will
  2599.             NOT be  changed, even  if an assignment to the corresponding
  2600.             procedure argument is made in the body of the procedure.
  2601.             
  2602.             IT IS  EXTREMELY IMPORTANT  TO DECLARE  ALL GLOBAL VARIABLES            IT IS  EXTREMELY IMPORTANT  TO DECLARE  ALL GLOBAL VARIABLES
  2603.             BEFORE  DEFINING   ANY  PROCEDURES,   whether  or   not  the            BEFORE  DEFINING   ANY  PROCEDURES,                         
  2604.             procedures use variables. Likewise, all IMPORTs must precede
  2605.             any procedure definitions.
  2606.             
  2607.             Here is  a sample  script with  two procedures,  neither  of
  2608.             which takes an argument:
  2609.             
  2610.                  *
  2611.                  *   Here is the first procedure.
  2612.                  *
  2613.                  PROCEDURE One
  2614.                     Message " "
  2615.                     Message "Script ONE was called."
  2616.                     Message " "
  2617.                  ENDPROC
  2618.                  *
  2619.                  *   Here is the second procedure.
  2620.                  *
  2621.                  PROCEDURE Two
  2622.                     Message " "
  2623.                     Message "Script TWO was called."
  2624.                     Message " "
  2625.                  ENDPROC
  2626.                  *
  2627.                  *   Begin "mainline" script.  This is where script execution
  2628.                  *   actually begins.
  2629.                  *
  2630.                  Call One
  2631.                  Call Two
  2632.                  
  2633.             Here is  a sample script with procedures with sub-procedures
  2634.             and arguments:
  2635.             
  2636.                  Declare A String
  2637.                  Declare B Integer
  2638.                  Declare S String
  2639.                  *
  2640.                  PROCEDURE Sub1 Mya String, MyB Integer
  2641.                  *
  2642.                  Declare MyC String
  2643.                  *
  2644.                     PROCEDURE Sub1a Mya String
  2645.                        Message "Entered procedure Sub1a"
  2646.  
  2647.  
  2648.             PibTerm Script Language Reference Guide              Page 43            PibTerm Script Language Reference Guide              Page 43
  2649.  
  2650.  
  2651.                        Set MyC = CONCAT( CONCAT( 'Value of A = <', MyA ), '>' )
  2652.                        Message MyC
  2653.                        Set MyA = 'BOGUS A!!!!!'
  2654.                     ENDPROC
  2655.                  *
  2656.                     PROCEDURE Sub2a MyB Integer
  2657.                        Set MyC = CONCAT( 'Value of B = ', String( MyB ) )
  2658.                        Message MyC
  2659.                     ENDPROC
  2660.                  *
  2661.                     Call Sub1a Mya
  2662.                     Call Sub2a Myb
  2663.                  *
  2664.                  *
  2665.                  ENDPROC
  2666.                  *
  2667.                  PROCEDURE Sub2 MyB Integer
  2668.                  *
  2669.                     Declare MyC String
  2670.                  *
  2671.                     Message "Entered script Sub2"
  2672.                     Set MyC = CONCAT( 'Value of B = ', String( MyB ) )
  2673.                     Message MyC
  2674.                  *
  2675.                     Set MyB = 10
  2676.                  *
  2677.                  ENDPROC
  2678.                  *
  2679.                  PROCEDURE Sub3 MyA String
  2680.                  *
  2681.                     Declare MyC String
  2682.                  *
  2683.                     Message "Entered script Sub3"
  2684.                     Set MyC = CONCAT( CONCAT( 'Value of A = <', MyA ), '>' )
  2685.                     Message MyC
  2686.                  *
  2687.                  ENDPROC
  2688.                  *==============================================================
  2689.                  *                   M A I N   P R O G R A M                   *
  2690.                  *==============================================================
  2691.                  *
  2692.                  Set A = 'Here is parameter A'
  2693.                  Set B = 50
  2694.                  *
  2695.                  Set S = CONCAT( CONCAT( 'A:<' , A ), '>' )
  2696.                  Message S
  2697.                  *
  2698.                  Set S = CONCAT( CONCAT( 'B:<' , STRING( B ) ), '>' )
  2699.                  Message S
  2700.                  *
  2701.                  Message A
  2702.                  Message "Calling procedure Sub1 ..."
  2703.                  *
  2704.                  Call sub1 A B
  2705.  
  2706.  
  2707.             PibTerm Script Language Reference Guide              Page 44            PibTerm Script Language Reference Guide              Page 44
  2708.  
  2709.  
  2710.                  *
  2711.                  Message "Back to main"
  2712.                  Set S = CONCAT( CONCAT( 'New value of A is <', A ), '>' )
  2713.                  Message S
  2714.                  *
  2715.                  Message "Calling procedure Sub2 ..."
  2716.                  *
  2717.                  Call sub2 B
  2718.                  *
  2719.                  Message "Back to main"
  2720.                  Set S = CONCAT( 'New value of B is ', String( B ) )
  2721.                  Message S
  2722.                  *
  2723.                  Message "Calling procedure Sub3 ..."
  2724.                  *
  2725.                  Call sub3 A
  2726.                  *
  2727.                  Message "Back to main"
  2728.                  
  2729.             
  2730.             Procedure Sub1a  above changes  the value  of MyA,  which in                      Sub1a                               MyA           
  2731.             turn changes  the value  of variable  A in  the main  script                                                  A                     
  2732.             body.  What if the call to Sub1 had been                                       Sub1         
  2733.             
  2734.                  Call sub1 'Hi there!' B
  2735.             
  2736.             instead?  Would the value of 'Hi there!' somehow be changed?
  2737.             
  2738.             No, PibTerm  recognizes that  a request to change a constant
  2739.             has been  made and IGNORES it.  The change WILL be in effect
  2740.             during the  lifetime of Sub1/Sub1a, but the changed value is
  2741.             NOT passed back to the main script body.
  2742.             
  2743.             
  2744.             Quit -- Quit PibTerm execution            Quit -- Quit PibTerm execution
  2745.             
  2746.             
  2747.             Quit terminates  execution of  PibTerm and  returns to  DOS.            Quit                                                        
  2748.             The effect  of Quit is similar to typing <ALT>X, except that                           Quit                                         
  2749.             all current  scripts are  exited, and  no prompt  is  issued
  2750.             asking if execution should actually be terminated.
  2751.             
  2752.             Quit is  useful in writing scripts for unattended operation,            Quit                                                        
  2753.             so that  PibTerm can  be invoked  as one  command in a batch
  2754.             file, and  then the batch file can continue after PibTerm is
  2755.             exited.
  2756.             
  2757.             
  2758.             Read -- Read Characters From A File            Read -- Read Characters From A File
  2759.             
  2760.             Read reads characters from a file which has been opened with            Read                                                        
  2761.             the Open script command.  The syntax is:                Open                                
  2762.             
  2763.                  READ Ifile Sdata Ichars
  2764.  
  2765.  
  2766.             PibTerm Script Language Reference Guide              Page 45            PibTerm Script Language Reference Guide              Page 45
  2767.  
  2768.  
  2769.             
  2770.             Ifile is the file handle for the file from the Open command.            Ifile                                                       
  2771.             Ichars provides the number of characters to be read.            Ichars                                              
  2772.             Sdata is the string of characters as read from the file.            Sdata                                                   
  2773.             
  2774.             Both Ifile  and Ichars can be integer variables.  Sdata must                 Ifile      Ichars                            Sdata     
  2775.             be a string variable.
  2776.             
  2777.             The file  must have  been opened  for input;  see  the  Open                                                                    Open
  2778.             command for details.
  2779.             
  2780.             You can  specify file  handle 0  -- or  omit the file handle
  2781.             altogether -- to read from the keyboard.
  2782.             
  2783.             You can test for end-of-file using the EOF function (see the                                                   EOF                  
  2784.             description  in  the  Set  command).  End-of-file  is  never                                  Set                                   
  2785.             returned for the keyboard.
  2786.             
  2787.             You can test for an I/O error using the IOResult function                                                    IOResult         
  2788.             (see the Set command for details).                     Set                      
  2789.             
  2790.             
  2791.             Example:
  2792.             
  2793.                  Declare mychars string
  2794.                  *                         Open the file
  2795.                  Open 1 "myfile.dat" "I"
  2796.                  *                         Read ten characters from file
  2797.                  READ 1 mychars 10
  2798.                  *                         Check for an error
  2799.                  *
  2800.                  IF ( IOResult <> 0 ) THEN
  2801.                     Message "I/O error reading handle 1"
  2802.                  ENDIF
  2803.             
  2804.             Another example:
  2805.             
  2806.             Suppose you want to read one character from the keyboard
  2807.             without requiring that a carriage return be entered
  2808.             afterwards.  That can be done by writing a read statement
  2809.             for one character as follows:
  2810.             
  2811.                  *
  2812.                  Declare Ch String
  2813.                  *
  2814.                  Read Ch 1
  2815.             
  2816.             
  2817.             Readln -- Read Line From File            Readln -- Read Line From File
  2818.             
  2819.             Readln reads  a line  of text  from a file previously opened            Readln                                                      
  2820.             using the Open script command. The syntax is:                      Open                               
  2821.             
  2822.                  READLN Ifile Sdata
  2823.  
  2824.  
  2825.             PibTerm Script Language Reference Guide              Page 46            PibTerm Script Language Reference Guide              Page 46
  2826.  
  2827.  
  2828.             
  2829.             Ifile is the file handle to read from.            Ifile                                 
  2830.             Sdata stores  the characters read from the file, and must be            Sdata                                                       
  2831.             a string  variable. If  no characters  are  read,  Sdata  is                                                               Sdata    
  2832.             returned as an empty string.
  2833.             
  2834.             A line  is defined  as a  series of  up to to 255 character,
  2835.             terminated by  Ascii characters  ^M^J (carriage  return  and
  2836.             line feed).   The terminating ^M^J characters are not stored
  2837.             as part of the string S1.
  2838.             
  2839.             The file  must have  been opened  for input;  see  the  Open
  2840.             command for details.
  2841.             
  2842.             You can  specify file  handle 0  -- or  omit the file handle
  2843.             altogether -- to read from the keyboard.
  2844.             
  2845.             You can test for end-of-file using the EOF function (see the                                                   EOF                  
  2846.             description  in  the  Set  command).  End-of-file  is  never                                  Set                                   
  2847.             returned for the keyboard.
  2848.             
  2849.             You can  test for  an I/O  error using the IOResult function                                                       IOResult         
  2850.             (see the Set command for details).                     Set                      
  2851.             
  2852.             Example:
  2853.             
  2854.             
  2855.                  Declare mychars string
  2856.                  *                         Open the file
  2857.                  Open 1 "myfile.dat" "I"
  2858.                  *                         Read line from file
  2859.                  READLN 1 mychars
  2860.                  *                         Check for an error
  2861.                  *
  2862.                  IF ( IOResult <> 0 ) THEN
  2863.                     Message "I/O error reading handle 1"
  2864.                  ENDIF
  2865.             
  2866.             
  2867.             Receive -- Receive File From Remote System            Receive -- Receive File From Remote System
  2868.             
  2869.             Receive is used to receive a file from a remote system, like            Receive                                                     
  2870.             the keyboard command <ALT>R.  The syntax is:
  2871.             
  2872.                  Receive Sname Sprotocol
  2873.             
  2874.             Sname is  the name  of the  file to  be received.    It  may            Sname                                                       
  2875.             contain a wildcard specification for batch protocols.
  2876.             
  2877.             Sprotocol contains the abbreviation for the protocol name to            Sprotocol                                                   
  2878.             be used for the transfer.
  2879.             
  2880.             The protocol names are:
  2881.             
  2882.  
  2883.  
  2884.             PibTerm Script Language Reference Guide              Page 47            PibTerm Script Language Reference Guide              Page 47
  2885.  
  2886.  
  2887.                  AS   --   Ascii
  2888.                  XK   --   Xmodem CheckSum
  2889.                  XC   --   Xmodem CRC
  2890.                  X1   --   Xmodem 1K
  2891.                  XG   --   Xmodem 1K G
  2892.                  YB   --   Ymodem Batch
  2893.                  YG   --   Ymodem G Batch
  2894.                  TE   --   Telink
  2895.                  MK   --   Modem7 Batch Checksum
  2896.                  M7   --   Modem7 Batch CRC
  2897.                  KE   --   Kermit
  2898.             
  2899.             If you  have added  any user-defined  protocols, then  their
  2900.             abbreviations  can   also  be   used.     For  example,  you
  2901.             customarily use ZM as an abbreviation for Zmodem.                            ZM                               
  2902.             
  2903.             To receive the file YUMYUM.PAS using Xmodem 1K, write:
  2904.             
  2905.                  Receive "yumyum.pas" "X1"
  2906.             
  2907.             To receive a batch of files using Ymodem, write:
  2908.             
  2909.                  Receive "" "YB"
  2910.             
  2911.             The file names are automatically provided by the sender with
  2912.             Ymodem, so  you don't  have to  specify  the  name  --  just
  2913.             provide a  null filename  as shown above.  This is generally
  2914.             true of other batch protocols as well.
  2915.             
  2916.             Note that  "Receive" only  sets up PibTerm to receive a file
  2917.             - it  does NOT  initiate a  transfer from the remote system.
  2918.             You will need to issue a command to the remote system to get
  2919.             it to  start a  transfer so  that Pibterm  can  receive  the
  2920.             file(s).   For example,  if you  are connected  to the  file
  2921.             section of  an RBBS  system, you  might enter  the following
  2922.             sequence of statements to download a file you know you want:
  2923.             
  2924.                  *
  2925.                  *     Request that file "goodstuf.lbr" be sent to me.
  2926.                  *
  2927.                  Stext "s;goodstuf.lbr;x|"
  2928.                  Receive "goodstuf.lbr" x
  2929.                  
  2930.             
  2931.             There  are   a  number  of  remote  Kermit  server  commands
  2932.             implemented, available  from the  Kermit receive  file menu.
  2933.             You can  also indicate that you want a remote server command
  2934.             in a  script, by  requesting a Kermit download and using '/'
  2935.             followed by the text of the remote server command.
  2936.             
  2937.             Examples:
  2938.             
  2939.                  *
  2940.                  *                          Send FINISH command to server
  2941.  
  2942.  
  2943.             PibTerm Script Language Reference Guide              Page 48            PibTerm Script Language Reference Guide              Page 48
  2944.  
  2945.  
  2946.                  *
  2947.                  Receive '/FINISH'    "Ke"
  2948.                  *
  2949.                  *                          Send "display directory" command
  2950.                  *
  2951.                  Receive '/DIRECTORY' "Ke"
  2952.                  *
  2953.                  *                          Send "type file BOGUS" command
  2954.                  *
  2955.                  Receive '/TYPE BOGUS' "Ke"
  2956.                  *
  2957.                  *                          Send "change directory" command
  2958.                  *
  2959.                  Receive '/CWD Sys$login' "Ke"
  2960.             
  2961.             It may  seem backwards to use RECEIVE rather than SEND here,
  2962.             but it  turns out to be more convenient, since the output of
  2963.             these commands  is sent  to PibTerm as file (to be displayed
  2964.             on the screen) using the Kermit protocol.
  2965.             
  2966.             
  2967.             Redial -- Redial Last Number Dialed            Redial -- Redial Last Number Dialed
  2968.             
  2969.             Redial redials  the last  phone  number  entered,  like  the            Redial                                                      
  2970.             keyboard command  <ALT>Q.   However, you can specify a phone
  2971.             number in  quotes on  the 'Redial'  command and PibTerm will
  2972.             redial that  phone number until a connection is established.
  2973.             For example,  to repeatedly  dial phone  directory  entry  3
  2974.             until a connection is established, write:
  2975.             
  2976.                Redial "3"
  2977.             
  2978.             
  2979.             Repeat -- Repeat Block Of Statements            Repeat -- Repeat Block Of Statements
  2980.             
  2981.             Repeat  begins  a  block  of  statements  to  be  repeatedly            Repeat                                                      
  2982.             executed until  the condition  on a matching UNTIL statement
  2983.             is true.
  2984.             
  2985.             Examples:
  2986.             
  2987.             Here is  a loop  which sends a carriage return to the remote
  2988.             system once every two seconds and looks to see if the string
  2989.             "Username:" has arrived.  The loop exits when "Username:" is
  2990.             found.
  2991.                  
  2992.                  Repeat
  2993.                     Stext '|'
  2994.                     Waitstring "Username:" 2
  2995.                  Until ( WaitFound )
  2996.             
  2997.             
  2998.             Here is a "repeat forever" loop that will never complete:
  2999.             
  3000.  
  3001.  
  3002.             PibTerm Script Language Reference Guide              Page 49            PibTerm Script Language Reference Guide              Page 49
  3003.  
  3004.  
  3005.                  Repeat
  3006.                       .    
  3007.                       .
  3008.                  Until ( 0 )
  3009.                                           
  3010.             You can  stop such  a loop  from  the  keyboard  by  hitting
  3011.             <ALT>X, or  by using the Exit/ExitAll script commands inside                                     Exit/ExitAll                       
  3012.             the Repeat/Until loop.
  3013.             
  3014.             Other testable  conditions  are  described  under  the  "If"
  3015.             statement above.
  3016.             
  3017.             
  3018.             Reset -- Reset Script Execute To Start Of Script            Reset -- Reset Script Execute To Start Of Script
  3019.             
  3020.             Reset starts executing the current script from the beginning            Reset                                                       
  3021.             of the script again.  Reset has no arguments.
  3022.             
  3023.             
  3024.             RInput -- Receive Input From Remote System            RInput -- Receive Input From Remote System
  3025.             
  3026.             RInput prompts for input from the remote system.  The syntax            RInput                                                      
  3027.             is:
  3028.             
  3029.                  RInput Sprompt Secho Sanswer
  3030.             
  3031.             Sprompt is  the prompt  string, which  will be  sent to  the            Sprompt                                                     
  3032.             remote  system   as  an   indication  that  input  is  being
  3033.             requested.  The prompt string can be empty, in which case no
  3034.             prompt to the remote system will be issued.
  3035.             
  3036.             Secho indicates  if the  remote system's response characters            Secho                                                       
  3037.             are to  be echoed by the actual character value or a '.' for
  3038.             security purposes.
  3039.             
  3040.             Sanswer is  the response from the remote system, and must be            Sanswer                                                     
  3041.             specified as a string variable.
  3042.             
  3043.             Setting Sechor  = 'Echo'  causes the actual character values                    Sechor                                              
  3044.             received from the remote system to be echoed.  Setting Secho                                                                   Secho
  3045.             = 'Noecho'  causes '.'  to be  used to  echo each character.
  3046.             This is useful when echoing passwords.
  3047.             
  3048.             Examples:
  3049.             
  3050.  
  3051.  
  3052.             PibTerm Script Language Reference Guide              Page 50            PibTerm Script Language Reference Guide              Page 50
  3053.  
  3054.  
  3055.                  *                 Read response from remote system into
  3056.                  *                 variable, echoing the characters as
  3057.                  *                 sent.
  3058.                  
  3059.                  Declare Response String
  3060.                  Declare Prompt   String
  3061.                  Declare Echo     String
  3062.                  *
  3063.                  RInput 'Enter letter: ' 'ECHO' Response
  3064.                  *
  3065.                  *                 Now read response and echo using '.'s.
  3066.                  *
  3067.                  Set Prompt = 'Enter letter: '
  3068.                  Set Echo   = 'NOECHO'
  3069.                  RInput Prompt Echo Response
  3070.             
  3071.             
  3072.             ScreenDump -- Dump Screen To File            ScreenDump -- Dump Screen To File
  3073.             
  3074.             ScreenDump writes the current screen contents (text only) to            ScreenDump                                                  
  3075.             a file, like the <ALT>U keyboard command.  The syntax is:
  3076.             
  3077.                  SCREENDUMP Sname
  3078.             
  3079.             Sname contains the file name to receive the screen dump.            Sname                                                   
  3080.             
  3081.             Examples:
  3082.             
  3083.                  Declare DumpFile String
  3084.                  ScreenDump 'bozo.dat'
  3085.                  Set DumpFile = 'bozo.dat'
  3086.                  ScreenDump DumpFile
  3087.             
  3088.             
  3089.             Send -- Send File To Remote System            Send -- Send File To Remote System
  3090.             
  3091.             Send sends  a file  to a  remote system,  like the  keyboard            Send                                                        
  3092.             command <ALT>S.  The syntax is:
  3093.             
  3094.                  Send Sname Sprotocol
  3095.             
  3096.             Sname is  the name  of the  file to  be sent,  and can  be a            Sname                                                       
  3097.             wildcard specification for batch protocol transfers.
  3098.             
  3099.             Sprotocol is  the protocol  abbreviation.   (See the Receive            Sprotocol                                            Receive
  3100.             command for a list of protocol abbreviations.)
  3101.             
  3102.             For example,  to send  the file  "yumyum.lbr"  to  a  remote
  3103.             system using Xmodem-CRC, write:
  3104.             
  3105.                  Send "yumyum.lbr" "xc"
  3106.             
  3107.             To send  all files  ending in  .PAS using Telink to a remote
  3108.             system, write:
  3109.  
  3110.  
  3111.             PibTerm Script Language Reference Guide              Page 51            PibTerm Script Language Reference Guide              Page 51
  3112.  
  3113.  
  3114.             
  3115.                  Send "*.pas" "te"
  3116.             
  3117.             'Send' only  causes PibTerm  to begin  sending files  to the
  3118.             remote system.   You  must have  previously  instructed  the
  3119.             remote system  to be  ready  to  receive  the  files.    For
  3120.             example, if you are connected to the file section of an RBBS
  3121.             system, you  could send  the file  "yumyum.lbr" using Xmodem
  3122.             with the commands:
  3123.             
  3124.                  SText "r;yumyum.lbr;x|"
  3125.                  Suspend 400
  3126.                  Send "yumyum.lbr" "x"
  3127.             
  3128.             The Suspend  is included  to ensure  we don't start the send                Suspend                                                 
  3129.             procedure before RBBS is ready.
  3130.             
  3131.             Kermit transfers  are particularly easy if the remote system
  3132.             can run  Kermit in  server mode.   Just  run Kermit  on  the
  3133.             remote system,  put it  into server  mode,  and  issue  Send
  3134.             commands to  your heart's  content.   For example, to send a
  3135.             bunch of files to a Vax system running Kermit under VMS, you
  3136.             could write:
  3137.             
  3138.                  *
  3139.                  *     Wait for VMS command prompt
  3140.                  *
  3141.                   WaitString "$"
  3142.                  *
  3143.                  *     Start up Kermit
  3144.                  *
  3145.                   SText "Kermit|"
  3146.                  *
  3147.                  *     Wait for Kermit's prompt, then send command
  3148.                  *     to put Kermit in server mode.
  3149.                  *
  3150.                   Waitstring ">"
  3151.                   SText "Server|"
  3152.                  *
  3153.                  *     Wait for blurb about server mode to go by, then
  3154.                  *     send a bunch of files, then receive a file.
  3155.                  *
  3156.                   Suspend 500
  3157.                   Send "*.pas" "ke"
  3158.                   Send "*.doc" "ke"
  3159.                  *
  3160.                   Receive "newstuf.doc" "ke"
  3161.                  *
  3162.                  *     Take remote Kermit out of server mode.
  3163.                  *
  3164.                   Receive "/finish" "ke"
  3165.                  *
  3166.                  *     Tell remote Kermit to stop executing.
  3167.                  *
  3168.  
  3169.  
  3170.             PibTerm Script Language Reference Guide              Page 52            PibTerm Script Language Reference Guide              Page 52
  3171.  
  3172.  
  3173.                   SText "exit|"
  3174.                  
  3175.             
  3176.             
  3177.             Set -- Assign Value To Script Variable            Set -- Assign Value To Script Variable
  3178.             
  3179.             The Set  command may  be used  to assign  values  to  script                Set                                                     
  3180.             variables. The Set command has the form:
  3181.             
  3182.                  Set varname = expression
  3183.             
  3184.             where 'varname'  is the  name of the variable to be set, and
  3185.             'expression' is the value.
  3186.             
  3187.             You may  omit Set  if you  like, since  a script line of the                          Set                                           
  3188.             form
  3189.                  
  3190.                  varname = expression
  3191.             
  3192.             is assumed to be a Set statement.                               Set           
  3193.             
  3194.             The allowable expressions are:
  3195.             
  3196.             1.   a string  constant enclosed  in  quotes  for  a  string
  3197.                  variable, e.g.,
  3198.             
  3199.                       SET Abc = 'Here''s a string'
  3200.             
  3201.             2.   an integer constant for an integer variable, e.g.,
  3202.             
  3203.                       SET c = 123
  3204.             
  3205.             3.   another variable
  3206.             
  3207.                       SET Abc = Yum
  3208.             
  3209.             4.   a special function, which may be one of the following:
  3210.             
  3211.                  ATTENDED            returns a value of 1 if the session                 ATTENDED                                               
  3212.                                      is in  attended mode (AM=1) or 0 if
  3213.                                      the session  is in  unattended mode
  3214.                                      (AM=0).
  3215.                  
  3216.                  CHR( n )            returns   a    1-character   string                 CHR( n )                                               
  3217.                                      containing  the   Ascii   character
  3218.                                      whose ordinal is given by 'n'.  For
  3219.                                      example, CHR(65)  = 'A'.  If 'n' is
  3220.                                      not in  the range  0  through  255,
  3221.                                      then a null string is returned.
  3222.                  
  3223.                  CONCAT( s1 , s2 )   concatenates strings 's1' and 's2'.                 CONCAT( s1 , s2 )                                      
  3224.                  
  3225.  
  3226.  
  3227.             PibTerm Script Language Reference Guide              Page 53            PibTerm Script Language Reference Guide              Page 53
  3228.  
  3229.  
  3230.                  CONNECTED           returns a  value of  1 if  a remote                 CONNECTED                                              
  3231.                                      connection has  been made or 0 if a
  3232.                                      remote connection doesn't exist.
  3233.                  
  3234.                  DUPL( S1, n )       returns string with first character                 DUPL( S1, n )                                          
  3235.                                      in S1 duplicated n times.
  3236.                  
  3237.                  DATE                returns  date   as  a   string   in                 DATE                                                   
  3238.                                      YY/MM/DD format.
  3239.                  
  3240.                  DIALED              returns the dialing entry number if                 DIALED                                                 
  3241.                                      this script was executed because it
  3242.                                      was attached to a dialing directory
  3243.                                      entry, or 0 (or -1) otherwise.
  3244.                  
  3245.                  DIALENTRY( n )      returns the  n-th dialing directory                 DIALENTRY( n )                                         
  3246.                                      entry as a string.  This string can
  3247.                                      be  broken  up  into  fields  using
  3248.                                      other string  functions. The format
  3249.                                      of   the   dialing   directory   is
  3250.                                      described in  the PibTerm parameter
  3251.                                      reference guide.    If  an  invalid
  3252.                                      entry  number   is  given,  a  null
  3253.                                      string is returned.
  3254.                  
  3255.                  ENHKEYBD            returns 1  if an  enhanced  101-key                 ENHKEYBD                                               
  3256.                                      keyboard is in use, 0 otherwise.
  3257.                  
  3258.                  EOF( I1 )           returns  1   if  file  attached  to                 EOF( I1 )                                              
  3259.                                      handle specified by I1 is at end of
  3260.                                      file,  0   otherwise.     (See  the
  3261.                                      description  below   of  the   OPEN
  3262.                                      script command for details.)
  3263.                  
  3264.                  FILEEXISTS( S1 )    returns a  value of  1 if  the file                 FILEEXISTS( S1 )                                       
  3265.                                      named in  'S1' exists, or '0' if it
  3266.                                      doesn't exist.
  3267.                  
  3268.                  INDEX( s1 , s2 )    position of  string 's1'  in string                 INDEX( s1 , s2 )                                       
  3269.                                      's2' or zero if not found
  3270.                  
  3271.                  IORESULT            returns system  code from  last I/O                 IORESULT                                               
  3272.                                      operation.       Should   be   used
  3273.                                      following READ,  WRITE, OPEN,  etc.
  3274.                                      commands to check whether operation
  3275.                                      proceeded properly.  0 always means
  3276.                                      operation completely successfully.
  3277.                  
  3278.                  KEYSTRING( s )      returns  the  function  key  string                 KEYSTRING( s )                                         
  3279.                                      attached to  the key name specified
  3280.                                      by the  value  of  "s".    See  the
  3281.                                      description of  the  KeyDef  script
  3282.                                      command for legitimate names to use
  3283.                                      in "s".
  3284.  
  3285.  
  3286.             PibTerm Script Language Reference Guide              Page 54            PibTerm Script Language Reference Guide              Page 54
  3287.  
  3288.  
  3289.                  
  3290.                  LENGTH( s )         current length  of string  variable                 LENGTH( s )                                            
  3291.                                      's'.
  3292.                  
  3293.                  LTRIM( S1 )         trims leading  blanks  from  string                 LTRIM( S1 )                                            
  3294.                                      S1.
  3295.                  
  3296.                  NUMBER( s1 , n )    if  's1'   can  be   converted   to                 NUMBER( s1 , n )                                       
  3297.                                      integer, then  the  integer  value,
  3298.                                      else zero.   If  the conversion was
  3299.                                      done,  N   is  0,  else  N  is  the
  3300.                                      character position  in  's1'  which
  3301.                                      caused the conversion to fail.
  3302.                  
  3303.                  ORD( s1, n )        returns the  Ascii ordinal  of  the                 ORD( s1, n )                                           
  3304.                                      nth character  in  the  string  s1.
  3305.                                      For example,  ORD( 'A', 1 ) returns
  3306.                                      65.   If 'n'  is  less  than  1  or
  3307.                                      greater than  the length of 's1', 0
  3308.                                      is returned.
  3309.                  
  3310.                  PARAMLINE           returns  current   parameter   line                 PARAMLINE                                              
  3311.                                      contents (for  use  when  executing
  3312.                                      script tied to added user command).
  3313.                  
  3314.                  PARAMCOUNT          returns number  of  blank-delimited                 PARAMCOUNT                                             
  3315.                                      parameters  appearing   in  current
  3316.                                      parameter   line   (as   given   by
  3317.                                      PARAMLINE).
  3318.                  
  3319.                  PARAMSTR( I1 )      returns I1-th  parameter in current                 PARAMSTR( I1 )                                         
  3320.                                      parameter   line   (as   given   by
  3321.                                      PARAMLINE).
  3322.                  
  3323.                  READCTRL( s1 )      reads  a   string  containing   the                 READCTRL( s1 )                                         
  3324.                                      special control  character  markers
  3325.                                      used for  function key definitions,
  3326.                                      with each  instance of  the  marked
  3327.                                      characters  converted   to   actual
  3328.                                      control characters.   For  example,
  3329.                                      "ReadCtrl( ^C )" where "^C" are the
  3330.                                      two ascii  characters with ordinals
  3331.                                      94 and  67,  is  converted  to  the
  3332.                                      single control  character  ^C  with                                                                ^C      
  3333.                                      ascii ordinal 3.
  3334.                  
  3335.                  STRING( n )         value  of   integer   constant   or                 STRING( n )                                            
  3336.                                      variable 'n' converted to string
  3337.                  
  3338.                  SUBSTR( s1, b, l )  substring of  's1' for  length 'l',                 SUBSTR( s1, b, l )                                     
  3339.                                      starting at position 'n'.
  3340.                  
  3341.                  TIME                returns time  of day as a string in                 TIME                                                   
  3342.                                      24 hour HH:MM:SS format.
  3343.  
  3344.  
  3345.             PibTerm Script Language Reference Guide              Page 55            PibTerm Script Language Reference Guide              Page 55
  3346.  
  3347.  
  3348.                  
  3349.                  TRIM( S1 )          trims trailing  blanks from  string                 TRIM( S1 )                                             
  3350.                                      S1.
  3351.                  
  3352.                  UPPERCASE( S1 )     returns  contents   of   S1   after                 UPPERCASE( S1 )                                        
  3353.                                      converting  lower-case   to   upper
  3354.                                      case.
  3355.                  
  3356.                  WAITFOUND           returns 1  if preceding  WAITSTRING                 WAITFOUND                                              
  3357.                                      or WAITLIST  was  successful,  else
  3358.                                      returns 0.
  3359.                  
  3360.                  WRITECTRL( s1 )     returns  a   string  in  which  any                 WRITECTRL( s1 )                                        
  3361.                                      instances  in   's1'   of   control
  3362.                                      characters  are  converted  to  '^'
  3363.                                      prefix form, etc.
  3364.                  
  3365.             5.   A complex  expression containing  variables, constants,
  3366.                  operators, parentheses, and function calls.
  3367.             
  3368.             Note that  no SET  statement can  exceed one input line. You
  3369.             can break  up complicated  expressions into  a series of SET
  3370.             statements if you need to.
  3371.             
  3372.             A short example:
  3373.             
  3374.                  DECLARE a String
  3375.                  DECLARE b String
  3376.                  DECLARE c Integer
  3377.                  DECLARE d Integer
  3378.                  SET a = 'HERE IS A LINE OF TEXT WITH 123 in it'
  3379.                  SET d = POS( '1' , a )
  3380.                  SET b = Substr( a, d, 3 )
  3381.                  SET c = NUMBER( b , d )
  3382.                  
  3383.             At this point, the value of 'c' is 123.
  3384.             
  3385.             The last four lines could also be written:
  3386.             
  3387.                  SET a = 'HERE IS A LINE OF TEXT WITH 123 in it'
  3388.                  SET c = NUMBER( Substr( a, d, 3 ) , POS( '1' , a ) )
  3389.             
  3390.             Here is a more complicated arithmetic assignment:
  3391.             
  3392.                  SET c = ( ( c * 24 ) / D ) + 13
  3393.             
  3394.             
  3395.             SetParam -- Set Value Of PibTerm Parameter            SetParam -- Set Value Of PibTerm Parameter
  3396.             
  3397.             SetParam sets  a PibTerm parameter to a specified value. The
  3398.             syntax is:
  3399.             
  3400.                  SetParam  Spname  Spval
  3401.             
  3402.  
  3403.  
  3404.             PibTerm Script Language Reference Guide              Page 56            PibTerm Script Language Reference Guide              Page 56
  3405.  
  3406.  
  3407.             Spname is the name of the parameter.            Spname                              
  3408.             Spval is the new parameter value.            Spval                            
  3409.             
  3410.             If a  PibTerm parameter is of boolean type, enter "1" to set
  3411.             the parameter  value to  True, or enter "0" to set the value
  3412.             to False.  (See the "Parameter Language Reference Manual" to
  3413.             determine the type for each PibTerm parameter.)
  3414.             
  3415.             To increase  the efficiency  of processing  several SetParam
  3416.             statements, try  to place  them one right after the other if
  3417.             possible.  This avoids extra code module swaps during script
  3418.             execution.
  3419.             
  3420.             Examples:
  3421.             
  3422.             
  3423.                  Declare Name String
  3424.                  Declare Rate String
  3425.                  Declare True String
  3426.                  *                           Set terminal type to VT100
  3427.                  SetParam "te" "3"
  3428.                  
  3429.                  *                           Change baud rate to 1200
  3430.                  Set Rate = "1200"
  3431.                  Set Name = "ba"
  3432.                  SetParam name rate
  3433.                  *
  3434.                  *                           Set hardwired mode
  3435.                  *
  3436.                  Set True = "1"
  3437.                  SetParam "hw" True
  3438.             
  3439.             
  3440.             SetVar -- Set Value of PibTerm Parameter            SetVar -- Set Value of PibTerm Parameter
  3441.             
  3442.             
  3443.             SetVar sets  the  most  recent  instantiation  of  a  script            SetVar                                                      
  3444.             variable to a specified value.  The syntax is:
  3445.             
  3446.                  SETVAR Svname Sval
  3447.             
  3448.             Svname provides the name of the variable to be set.            Svname                                             
  3449.             Sval is the new value for the variable.            Sval                                   
  3450.             
  3451.             SetVar has  a different  purpose than  the Set command.  The                                                       Set              
  3452.             Set command  is translated  into internal code at the time a
  3453.             script is  compiled.    You  cannot  therefore  use  Set  to
  3454.             reference a  variable whose  name you  don't know  until the
  3455.             script is  being executed.   With  SetVar, you  can assign a
  3456.             value to  a variable  whose name  you don't  know until  the
  3457.             execution time  of the  script. Note  that  SetVar  is  MUCH
  3458.             slower than using a Set command;  use Set if possible. Also,
  3459.  
  3460.  
  3461.             PibTerm Script Language Reference Guide              Page 57            PibTerm Script Language Reference Guide              Page 57
  3462.  
  3463.  
  3464.             SetVar doesn't allow an expression as a value, although this
  3465.             isn't a real problem: you can use a Set command to build the
  3466.             value of the Sval parameter to SetVar.                         Sval                     
  3467.             
  3468.             Examples:
  3469.             
  3470.                  Declare vtype string
  3471.                  Declare vval  string
  3472.                  Declare vname string
  3473.                  Declare I     Integer
  3474.                  ...
  3475.                  SetVar 'VARA' 'Hi there'
  3476.                  SET vname = 'VARA'
  3477.                  SET vval  = 'Hi there'
  3478.                  SetVar vname vval
  3479.                  SetVar 'I' '10'
  3480.                  
  3481.             
  3482.             SText -- Send Text To Remote System            SText -- Send Text To Remote System
  3483.             
  3484.             SText sends text to the remote system. The syntax is:            SText                                                
  3485.             
  3486.                  SText String
  3487.             
  3488.             String contains the text to be sent.            String                              
  3489.             
  3490.             The special  characters used  in function  keys for carriage
  3491.             returns, marking  control characters, and delays may be used
  3492.             in SText  as well.   (See the section on the <ALT>K keyboard
  3493.             command in  the PibTerm  Guide for  details on these special
  3494.             characters.)
  3495.             
  3496.             You've already  seen a number of examples of SText in action
  3497.             in the description of other commands.
  3498.             
  3499.             
  3500.             Suspend -- Suspend Execution Of Script            Suspend -- Suspend Execution Of Script
  3501.             
  3502.             Suspend suspends script execution for a given length of time            Suspend                                                     
  3503.             (PibTerm continues executing).  The syntax is:
  3504.             
  3505.                  Suspend Itime
  3506.             
  3507.             Itime is  the length  of time  in hundredths  of a second to            Itime                                                       
  3508.             suspend the script execution.
  3509.             
  3510.             For example,  to stop  script  processing  for  one  second,
  3511.             enter:
  3512.             
  3513.                  Suspend 100
  3514.             
  3515.             To stop script processing for half a second, enter:
  3516.             
  3517.                  Suspend 50
  3518.  
  3519.  
  3520.             PibTerm Script Language Reference Guide              Page 58            PibTerm Script Language Reference Guide              Page 58
  3521.  
  3522.  
  3523.             
  3524.             Suspend differs  from the Delay script command in that Delay                                      Delay                             
  3525.             stops EVERYTHING  except the reception of remote characters,
  3526.             while Suspend  only stops  the execution of script commands.
  3527.             Note,  however,  that  WaitString  and  When  searches  will
  3528.             continue during  the suspension  period.  That makes Suspend
  3529.             useful in writing conditional loops with recalcitrant remote
  3530.             systems that may require a variable number of, say, carriage
  3531.             returns before the remote system wakes up.
  3532.             
  3533.             
  3534.             Text -- Send Text To Remote System            Text -- Send Text To Remote System
  3535.             
  3536.             Text sends  text to  the remote  system, WITHOUT any special            Text                                                        
  3537.             interpretation (e.g., unlike SText).  The syntax is:
  3538.             
  3539.                  Text String
  3540.             
  3541.             String provides  the text to be sent.  No special processing            String                                                      
  3542.             is performed on the text, unlike the SText command.
  3543.             
  3544.             
  3545.             Translate -- Read In Translate Table            Translate -- Read In Translate Table
  3546.             
  3547.             Translate reads  in a  translation table  from a  file, just            Translate                                                   
  3548.             like the "read file" option of <ALT>T.  The syntax is:
  3549.             
  3550.                  Translate Sname
  3551.             
  3552.             Sname is  the file  name from  which to read the translation            Sname                                                       
  3553.             table.
  3554.             
  3555.             For example,  to read  a table  from the file "Striphi.tra",
  3556.             write:
  3557.             
  3558.                  Translate "striphi"
  3559.             
  3560.             The ".tra" is assumed.
  3561.             
  3562.             
  3563.             Until -- End Repeat Block            Until -- End Repeat Block
  3564.             
  3565.             See the Repeat statement above.                    Repeat                 
  3566.             
  3567.             
  3568.             ViewFile -- Invoke File Viewer            ViewFile -- Invoke File Viewer
  3569.             
  3570.             ViewFile invokes  the  file  viewer  specified  by  the  LN=
  3571.             parameter.   If the  value of LN= is null, then the built-in
  3572.             PibTerm file  viewer is  invoked.    Otherwise,  the  string
  3573.             specified as  the value of LN= is executed as a DOS command,
  3574.             after making  any required  file name  substitution (see the
  3575.  
  3576.  
  3577.             PibTerm Script Language Reference Guide              Page 59            PibTerm Script Language Reference Guide              Page 59
  3578.  
  3579.  
  3580.             description of  the LN=  parameter in the "PibTerm Parameter
  3581.             Reference Manual" for details).
  3582.             
  3583.             The syntax of ViewFile is:
  3584.             
  3585.                  ViewFile  Sname
  3586.             
  3587.             Sname specifies the name of the file to be viewed.            Sname                                             
  3588.             
  3589.             For  example,   to  invoke   the   viewer   for   the   file
  3590.             "BOGUSCO.DAT", you could write:
  3591.             
  3592.                  ViewFile "Bogusco.dat"
  3593.             
  3594.             
  3595.             Wait -- Wait For Time Of Day            Wait -- Wait For Time Of Day
  3596.             
  3597.             Wait stops PibTerm execution until a given time (in HH:MM:SS            Wait                                                        
  3598.             form) is  reached, at  which time  execution proceeds.   The
  3599.             syntax is:
  3600.             
  3601.                  Wait Stime
  3602.             
  3603.             Stime provides the time to wait for in HH:MM:SS format.
  3604.             
  3605.             For example, to stop PibTerm execution until 1 AM, write:
  3606.             
  3607.                  Wait "01:00:00"
  3608.             
  3609.             The wait command only works within a given 24 hour period.
  3610.             
  3611.             
  3612.             WaitCount -- Wait For Number Of Characters            WaitCount -- Wait For Number Of Characters
  3613.             
  3614.             WaitCount causes PibTerm to wait until a specified count of
  3615.             characters has arrived from the remote system, regardless of
  3616.             what characters they are.  The syntax is:
  3617.             
  3618.                  WAITCOUNT Icount
  3619.             
  3620.             Icount is the number of characters to wait for.            Icount                                         
  3621.             
  3622.             Note that  NUL characters  (Ascii  0)  are  NOT  counted  if                       NUL                                              
  3623.             received.
  3624.             
  3625.             Example:
  3626.             
  3627.  
  3628.  
  3629.             PibTerm Script Language Reference Guide              Page 60            PibTerm Script Language Reference Guide              Page 60
  3630.  
  3631.  
  3632.                  *                   Wait for 5 characters to be received
  3633.                  Declare count integer
  3634.                  *
  3635.                  Set count = 5
  3636.                  *
  3637.                  WaitCount 5
  3638.                  WaitCount count
  3639.             
  3640.             
  3641.             WaitList -- Wait For List Of Strings            WaitList -- Wait For List Of Strings
  3642.             
  3643.             WaitList waits  for any  of up  to twenty  strings to appear            WaitList                                                    
  3644.             from the remote system.  The syntax is:
  3645.             
  3646.                  WaitList Index Swait1 Swait2 Swait3 ...
  3647.             
  3648.             Index is  the index  of the  string found.  Index must be an            Index                                       Index           
  3649.             integer variable.   If  none of  the strings  is found, then
  3650.             Index is returned as 0.            Index                  
  3651.             
  3652.             Swait1, Swait2,  etc. are  the strings  to be waited for.  I            Swait1, Swait2                                              
  3653.             must be an integer variable.
  3654.             
  3655.             If Index  is returned  as 0,  then none  of the  strings was               Index                                                    
  3656.             found in  the wait  time.   The wait  time is  set using the
  3657.             WaitTime command (which see).            WaitTime                     
  3658.             
  3659.             The WaitFound  function (see  the Set  command) can  also be                WaitFound                     Set                       
  3660.             used to  determine if  any of  the strings was found, but it
  3661.             doesn't indicate which.
  3662.             
  3663.             WaitList is  similar  to  WaitString,  but  WaitString  only                                      WaitString                        
  3664.             allows one  string to  be waited  on.   However,  WaitString
  3665.             executes faster than a WaitList with one string specified.
  3666.             
  3667.             Example:
  3668.             
  3669.                   Declare Index Integer
  3670.                   Declare Str1 'CONNECT'
  3671.                   Declare Str2 'NO CARRIER'
  3672.                   Declare Str3 'BUSY'
  3673.                   WaitList Index Str1 Str2 Str3 'VOICE'
  3674.                   IF ( Index > 0 ) THEN
  3675.                  *
  3676.                  *            process string found
  3677.                  *
  3678.                               ...
  3679.                   ELSE
  3680.                  *
  3681.                  *            process string not found
  3682.                  *
  3683.                               ...
  3684.                   ENDIF
  3685.             
  3686.  
  3687.  
  3688.             PibTerm Script Language Reference Guide              Page 61            PibTerm Script Language Reference Guide              Page 61
  3689.  
  3690.  
  3691.             
  3692.             WaitQuiet -- Wait For Quiet Line            WaitQuiet -- Wait For Quiet Line
  3693.             
  3694.             WaitQuiet waits until the communications line has been
  3695.             "quiet" -- no characters have been received -- for a
  3696.             specified length of time.  The syntax is:
  3697.             
  3698.                  WAITQUIET Itime
  3699.             
  3700.             Itime specifies the number of tenths of a second to wait for            Itime                                                       
  3701.             the communications line to be quiet.
  3702.             
  3703.             Example:
  3704.             
  3705.                  *                Wait for 1/2 (5/10) second for quiet line
  3706.                  *
  3707.                   Declare Time Integer
  3708.                  *
  3709.                   Set Time = 5
  3710.                  *
  3711.                   WaitQuiet 5
  3712.                   WaitQuiet Time
  3713.             
  3714.             
  3715.             WaitString -- Wait For String From Remote            WaitString -- Wait For String From Remote
  3716.             
  3717.             WaitString causes  Pibterm to  wait for  a given  string  to            WaitString                                                  
  3718.             appear from the remote system. The syntax is:
  3719.             
  3720.                  WaitString Swait Itime
  3721.             
  3722.             Swait is the string to be waited on.            Swait                               
  3723.             
  3724.             Itime is  the number  of seconds  to wait  for the string to            Itime                                                       
  3725.             appear.   If Itime  is not  specified, then the current wait                         Itime                                          
  3726.             time is  whatever was  specified  by  a  preceding  WaitTime                                                                WaitTime
  3727.             command.   If no previous WaitTime command was given, then a
  3728.             wait time of 30 seconds is used.
  3729.             
  3730.             If the  string does  not appear  within the  specified  time
  3731.             period,  then   execution  proceeds  with  the  next  script
  3732.             command.   WaitString can be combined with the Repeat/Until,
  3733.             While/EndWhile, and  If/Else/Endif script statements to good
  3734.             effect, since  the WaitFound (see the Set command) condition                               WaitFound          Set                   
  3735.             is TRUE  (=1) if  the specified  string appeared,  and FALSE
  3736.             (=0) if it didn't appear.
  3737.             
  3738.             To wait until the string 'Username:' appears, write:
  3739.             
  3740.                  WaitString 'Username:'
  3741.             
  3742.             PibTerm waits  30 seconds for 'Username:' to appear.  If you
  3743.             want it to wait for, say 60 seconds, write:
  3744.             
  3745.  
  3746.  
  3747.             PibTerm Script Language Reference Guide              Page 62            PibTerm Script Language Reference Guide              Page 62
  3748.  
  3749.  
  3750.                  WaitString 'Username:' 60
  3751.             
  3752.             You can wait for a single character:
  3753.             
  3754.                  WaitString ">"
  3755.             
  3756.             WaitString slows  down PibTerm's  execution somewhat, so you            WaitString                                                  
  3757.             should not be surprised if the output from the remote system
  3758.             is displayed more slowly than usual.
  3759.             
  3760.             
  3761.             WaitTime -- Set Wait Time            WaitTime -- Set Wait Time
  3762.             
  3763.             
  3764.             WaitTime  specifies   the  time   allotted  for   successful            WaitTime                                                    
  3765.             completion of  a WaitString  or WaitList  command.   (For an
  3766.             individual WaitString,  this time  can be  overridden on the
  3767.             WaitString command itself.) The syntax is:
  3768.             
  3769.                  WAITTIME Itime
  3770.             
  3771.             Itime is  the time  in seconds  to wait.   30 seconds is the            Itime                                                       
  3772.             default wait time.
  3773.             
  3774.             Examples:
  3775.             
  3776.                  Declare waiting Integer
  3777.                  WaitTime 25
  3778.                  Set waiting = 40
  3779.                  WaitTime waiting
  3780.             
  3781.             
  3782.             When -- Wait For String And Respond            When -- Wait For String And Respond
  3783.             
  3784.             When waits  for a  given string  to appear  from the  remote            When                                                        
  3785.             system --  like WaitString  -- and  then sends  a  specified
  3786.             response string.   The syntax is:
  3787.             
  3788.                  When Swait Ssend
  3789.             
  3790.             Swait is  the string  to wait for, and Ssend is the response            Swait                                  Ssend                
  3791.             string.   Both may  be either  string  constants  or  string
  3792.             variables.
  3793.             
  3794.             When searching  stays active  until you  deactivate it using            When                                                        
  3795.             <ALT>X, even after the script itself has finished executing.
  3796.             Hence, to  stop a script, you can enter <ALT>X, but the WHEN
  3797.             keeps on  going.   You can  enter another <ALT>X to stop the
  3798.             WHEN.  A third <ALT>X takes you out of PibTerm entirely.
  3799.             
  3800.             When slows  down PibTerm's execution somewhat, so you should            When                                                        
  3801.             not be  surprised if the output from the remote system seems
  3802.             to be displayed more slowly than usual.
  3803.             
  3804.  
  3805.  
  3806.             PibTerm Script Language Reference Guide              Page 63            PibTerm Script Language Reference Guide              Page 63
  3807.  
  3808.  
  3809.             Examples:
  3810.             
  3811.                  Declare Whenwait String
  3812.                  Declare Whensend String
  3813.                  *
  3814.                  WHEN 'Username: ' 'MYUSERID|'
  3815.                  *
  3816.                  Set Whenwait = 'Username: '
  3817.                  Set Whensend = 'MYUSERID|'
  3818.                  *
  3819.                  WHEN Whenwait Whensend
  3820.             
  3821.             
  3822.             WhenDrop -- Take Action On Carrier Drop            WhenDrop -- Take Action On Carrier Drop
  3823.             
  3824.             WhenDrop specifies  a string  to be sent to the modem when a            WhenDrop                                                    
  3825.             carrier drop is detected. The syntax is:
  3826.             
  3827.                  WHENDROP Ssend
  3828.             
  3829.             Ssend is  the string  to be  sent out  the port to the modem            Ssend                                                       
  3830.             when the carrier drops.
  3831.             
  3832.             WhenDrop is useful for resetting a modem when a carrier drop
  3833.             occurs.  Since Ssend  may contain an Execute PibTerm command                           Ssend                 Execute                
  3834.             function, this allows you to deal with many conditions on  a
  3835.             carrier drop.   This WhenDrop condition can co-exist with an
  3836.             ordinary When condition.                     When           
  3837.             
  3838.             Example:
  3839.             
  3840.                  WhenDrop "@G@/WEDIED^M/"
  3841.             
  3842.             
  3843.             This says  that when  the carrier drop occurs, PibTerm is to
  3844.             execute the script "WEDIED.SCR". (@G --> <ALT>G, @/WEDIED^M/
  3845.             -->  WEDIED   followed  by  CHR(CR),  so  script  WEDIED  is
  3846.             executed.)
  3847.             
  3848.             
  3849.             WhereXY -- Return Current Cursor Position            WhereXY -- Return Current Cursor Position
  3850.             
  3851.             WhereXY returns  the current  row and column position of the            WhereXY                                                     
  3852.             cursor on the screen.  The syntax is:
  3853.             
  3854.                  WhereXY Icolumn Irow
  3855.             
  3856.             Icolumn receives  the column  position and Irow receives the            Icolumn                                    Irow             
  3857.             row position.  Both must be integer variables.
  3858.             
  3859.             
  3860.  
  3861.  
  3862.             PibTerm Script Language Reference Guide              Page 64            PibTerm Script Language Reference Guide              Page 64
  3863.  
  3864.  
  3865.             While -- Execute Statements While Condition True            While -- Execute Statements While Condition True
  3866.             
  3867.             While begins a block of statements to be repeatedly executed            While                                                       
  3868.             as long as the specified condition on the While statement is
  3869.             true. A  While block is terminated by an EndWhile statement.                                                     EndWhile           
  3870.             The form  of  the  condition  for  the  While  statement  is
  3871.             identical to that for the Until and If statements.                                      Until     If            
  3872.             
  3873.             For example, to execute a block of script statements as long
  3874.             as PibTerm is connected to a remote system, write:
  3875.             
  3876.                  While ( Connected ) Do
  3877.                       .
  3878.                       .
  3879.                       .
  3880.                  EndWhile
  3881.             
  3882.             
  3883.             See the  Set statement  for details on Connected, and the If                     Set                           Connected          If
  3884.             statement for details on conditions.
  3885.             
  3886.             
  3887.             Write -- Write Characters To File            Write -- Write Characters To File
  3888.             
  3889.             Write writes  characters to  a file  prepared  by  the  Open            Write                                                   Open
  3890.             command. The syntax is:
  3891.             
  3892.                  WRITE Ifile Sdata
  3893.             
  3894.             where Ifile is the file handle of the file, and Sdata is the                  Ifile                                     Sdata       
  3895.             string of characters to be written.
  3896.             
  3897.             A handle  of 0  refers to the screen.  A missing file handle
  3898.             also refers to the screen.
  3899.             
  3900.             You can  use the  IOResult function to check for errors (see                              IOResult                                  
  3901.             the Set command).                Set          
  3902.             
  3903.             Examples:
  3904.             
  3905.                   Declare handle integer
  3906.                   Declare HiString String
  3907.                  *
  3908.                   Open 1 "bogusco.dat" "O"
  3909.                  *
  3910.                   WRITE 1 'Hi there!'
  3911.                  *
  3912.                   Set HiString = 'Hi there!'
  3913.                   Set handle = 1
  3914.                  *
  3915.                   WRITE handle HiString
  3916.             
  3917.             
  3918.  
  3919.  
  3920.             PibTerm Script Language Reference Guide              Page 65            PibTerm Script Language Reference Guide              Page 65
  3921.  
  3922.  
  3923.             Writeln -- Write Line To File            Writeln -- Write Line To File
  3924.             
  3925.             Writeln writes  a string to a file, terminated by a carriage            Writeln                                                     
  3926.             return and linefeed.  The syntax is:
  3927.             
  3928.                  WRITELN Ifile Sdata
  3929.             
  3930.             Ifile is  the file  handle and  Sdata is  the string  to  be            Ifile                           Sdata                       
  3931.             written.   Ifile may  be either  an integer  or  an  integer                       Ifile                                            
  3932.             constant.   Sdata  may  be  either  a  string  or  a  string                        Sdata                                           
  3933.             constant.   Sdata should NOT have the ^M^J (carriage return-                        Sdata                                           
  3934.             linefeed) specified  as part  of the string; those are added
  3935.             automatically.
  3936.             
  3937.             A file  handle of  0 refers  to the  screen.  A missing file
  3938.             handle also refers to the screen.
  3939.             
  3940.             Examples:
  3941.                  
  3942.                   Declare handle integer
  3943.                   Declare HiString String
  3944.                  *
  3945.                   WRITELN 1 'Hi there!'
  3946.                  *
  3947.                   Set HiString = 'Hi there!'
  3948.                   Set handle = 1
  3949.                  *
  3950.                   WRITELN handle HiString
  3951.                  *
  3952.                   WRITELN 0 'This appears on screen.'
  3953.                   WRITELN 'This also appears on screen.'
  3954.                  
  3955.             
  3956.             WriteLog -- Write String To Log Files            WriteLog -- Write String To Log Files
  3957.             
  3958.             WriteLog writes  the contents  of a  string to  all  of  the            WriteLog                                                    
  3959.             active log  files.   These include  the review  buffer,  the
  3960.             capture file,  the PIBTERM.LOG  log file, and the printer --
  3961.             whichever are  in use  (if any).    The  string  is  written
  3962.             preceded by  the current  date and  time in standard PibTerm
  3963.             logging format.
  3964.             
  3965.             The syntax is:
  3966.             
  3967.                  WRITELOG Slog
  3968.             
  3969.             Slog is  the string  to be  written.   Slog can  be either a            Slog                                   Slog                 
  3970.             string variable or a string constant.
  3971.             
  3972.             
  3973.             Using Script Commands in Command Line Mode            Using Script Commands in Command Line Mode
  3974.             
  3975.             You can  enter a  script command  from the  keyboard.   This
  3976.             allows you to use PibTerm in a command-driven fashion if you
  3977.  
  3978.  
  3979.             PibTerm Script Language Reference Guide              Page 66            PibTerm Script Language Reference Guide              Page 66
  3980.  
  3981.  
  3982.             dislike the  menus.   To do  this you  need to  define a key
  3983.             which will invoke command mode.  This is done at the <ALT>P,
  3984.             O)dds and ends, b) command key definition submenu.  You will
  3985.             be asked  to hit  the key which will be subsequently used to
  3986.             invoke command  mode.    This  key  must  be  one  of  those
  3987.             available for definition at <ALT>K.
  3988.             
  3989.             There is  NO DEFAULT  value for  the command line key, i.e.,
  3990.             PibTerm does not provide command line mode by default.
  3991.             
  3992.             Hitting the command key causes the status line (usually line
  3993.             25) of  the display to show 'Command: '.  You may then enter
  3994.             a script command which will be immediately executed.
  3995.             
  3996.             For example, you might enter the command
  3997.             
  3998.                  Dial "1"
  3999.             
  4000.             to dial the first number in the dialing directory, or
  4001.             
  4002.                  SetParam "pa" "N"
  4003.             
  4004.             to set no parity.
  4005.             
  4006.             If the  command is  incorrectly entered, an error message is
  4007.             printed on the status line.
  4008.             
  4009.             You may  add  your  own  user-defined  commands.    See  the
  4010.             description of  the  AddCommand  script  command  above  for                                 AddCommand                             
  4011.             details.
  4012.             
  4013.             
  4014.             Script Commands Legal In Command Line Mode            Script Commands Legal In Command Line Mode
  4015.             
  4016.             The following subset of script commands can be used sensibly
  4017.             in command line mode:
  4018.             
  4019.                  Addlf     Alarm     Break     Capture   ChDir     
  4020.                  Clear     ComDrain  ComFlush  CopyFile  Delay     
  4021.                  Dial      Dos       Echo      EditFile  EraseFile 
  4022.                  Execute   Exit      ExitAll   FreeSpace GetDir    
  4023.                  GetParam  Hangup    Host      Input     Key       
  4024.                  KeyDef    KeyFlush  KeySend   Log       Message   
  4025.                  Mute      Param     PrintFile Quit      Receive   
  4026.                  Redial    RInput    ScreenDump          Send      
  4027.                  SetParam  SText     Suspend   Text      Translate 
  4028.                  ViewFile  Wait      WaitCount WaitList  WaitQuiet 
  4029.                  WaitString          WaitTime  When      WhenDrop  
  4030.                  WriteLog
  4031.                  
  4032.             
  4033.             Some of  the other  commands may  be  accepted,  but  aren't
  4034.             probably useful  in command line mode.  Some of the commands
  4035.             (like IF, REPEAT, etc.) will NOT be accepted at all.
  4036.  
  4037.  
  4038.             PibTerm Script Language Reference Guide              Page 67            PibTerm Script Language Reference Guide              Page 67
  4039.  
  4040.  
  4041.             
  4042.             
  4043.             Sample Scripts            Sample Scripts
  4044.             
  4045.             The script  language in  PibTerm is  complicated enough that
  4046.             some extended examples are useful in showing how scripts can
  4047.             be constructed  for common  login sequences.   You  can also
  4048.             find some  script examples  in the "Guide to Using PibTerm."
  4049.             There are  also a  number of sample scripts (including those
  4050.             shown  here)   provided  as  part  of  the  PibTerm  release
  4051.             materials (look for the files ending in ".SCR").
  4052.             
  4053.             Notice how similar all of the login scripts are.  You should
  4054.             be able  to modify  one of  these  (or  one  of  the  others
  4055.             provided as  part of  the  PibTerm  release  materials)  for
  4056.             nearly any type of mainframe, mini, or remote bulletin board
  4057.             system you wish to access.
  4058.             
  4059.             
  4060.             CDC/NOS login script            CDC/NOS login script
  4061.             
  4062.             Here is a script for automatically logging on to the CDC NOS
  4063.             mainframe system  at ACNS.   Other  CDC sites will generally
  4064.             require a different sequence:
  4065.             
  4066.             
  4067.             ***************************************************************************
  4068.             *       N O S . S C R --- Script for connecting to Cyber NOS system       *
  4069.             ***************************************************************************
  4070.             *                                                                         *
  4071.             *    Script:  Nos.Scr                                                     *
  4072.             *                                                                         *
  4073.             *    Purpose: Connects to Cyber NOS system.  Designed for use as          *
  4074.             *             attached script in dialing directory.                       *
  4075.             *                                                                         *
  4076.             *    Invocation:                                                          *
  4077.             *                                                                         *
  4078.             *       Execute "Nos"                                                     *
  4079.             *                                                                         *
  4080.             *    Remarks:                                                             *
  4081.             *                                                                         *
  4082.             *       Change the values of "username" and "password" to those of        *
  4083.             *       your own NOS account.                                             *
  4084.             *                                                                         *
  4085.             ***************************************************************************
  4086.             *
  4087.             *                                  Send CRs to wake up autobaud
  4088.              Repeat
  4089.             *
  4090.                 SText "|"
  4091.             *                                  Wait on parity message, indicating
  4092.             *                                  baud rate/parity detected
  4093.                 WaitString "arity" 4
  4094.             *
  4095.  
  4096.  
  4097.             PibTerm Script Language Reference Guide              Page 68            PibTerm Script Language Reference Guide              Page 68
  4098.  
  4099.  
  4100.              Until ( WaitFound OR ( NOT Connected ) )
  4101.             *
  4102.             *                                  If carrier dropped, quit script.
  4103.              If ( NOT Connected ) Then
  4104.                 Exit
  4105.              Endif
  4106.             *                                  Now wait for "operating system" prompt
  4107.              WaitString "ting system"
  4108.             *                                  If carrier dropped, quit script.
  4109.              If ( NOT Connected ) Then
  4110.                 Exit
  4111.              Endif
  4112.             *                                  Indicate to CDCNET that we want
  4113.             *                                  a NOS session.  For NOS/VE, we
  4114.             *                                  would send "CREC VE" instead.
  4115.              WaitQuiet 20
  4116.              SText "crec nos|"
  4117.             *                                  Wait for username prompt
  4118.              WaitString "USER NAME:"
  4119.             *                                  Send user name -- ENTER YOURS HERE.
  4120.              SText "username|"
  4121.             *                                  Wait for password prompt
  4122.              WaitString "PASSWORD:"
  4123.             *                                  Send password -- ENTER YOURS HERE.
  4124.              SText "password|"
  4125.             *                                  Wait for bulletins, etc. to pass.
  4126.              WaitQuiet 30
  4127.             *                                  Set VT100 emulation in PibTerm.
  4128.              SetParam 'VC' '0'
  4129.              SetParam 'AK' '0'
  4130.             *                                  Load NOS function keys.
  4131.              Key 'cdcnos.fnc'
  4132.             *                                  Set backspace if not already set.
  4133.              SetParam 'BS' '^H'
  4134.              SetParam 'DE' ''
  4135.             *                                  Set VT100 emulation on NOS.
  4136.              SText "SETTERM,VT100|"
  4137.             
  4138.             
  4139.             VAX/VMS login script            VAX/VMS login script
  4140.             
  4141.             Here is  a script  to log  on to  a Vax system running under
  4142.             VMS, like the Vax 785 at ACNS:
  4143.             
  4144.             
  4145.             ***************************************************************************
  4146.             *        V A X . S C R --- Script for connecting to Vax VMS system        *
  4147.             ***************************************************************************
  4148.             *                                                                         *
  4149.             *    Script:  Vax.Scr                                                     *
  4150.             *                                                                         *
  4151.             *    Purpose: Connects to Vax VMS system.  Designed for use as            *
  4152.             *             attached script in dialing directory.                       *
  4153.             *                                                                         *
  4154.  
  4155.  
  4156.             PibTerm Script Language Reference Guide              Page 69            PibTerm Script Language Reference Guide              Page 69
  4157.  
  4158.  
  4159.             *    Invocation:                                                          *
  4160.             *                                                                         *
  4161.             *       Execute "Vax"                                                     *
  4162.             *                                                                         *
  4163.             *    Remarks:                                                             *
  4164.             *                                                                         *
  4165.             *       Change the values of "username" and "password" to those of        *
  4166.             *       your own Vax account.                                             *
  4167.             *                                                                         *
  4168.             ***************************************************************************
  4169.             *
  4170.             *                                  Wake up Vax's autobaud.
  4171.              Repeat
  4172.             *
  4173.                 SText "|"
  4174.             *                                  Wait for "Username" prompt.
  4175.                 WaitString "Username:" 2
  4176.             *
  4177.              UNTIL ( WaitFound OR ( NOT Connected ) )
  4178.             *
  4179.             *                                  Quit if carrier dropped.
  4180.              IF ( NOT Connected ) THEN
  4181.                 Exit
  4182.              ENDIF
  4183.             *                                  Send user name -- PUT YOURS HERE.
  4184.              SText "username|"
  4185.             *                                  Wait for password prompt.
  4186.              WaitString "Password:"
  4187.             *                                  Send password -- PUT YOURS HERE.
  4188.              SText "password|"
  4189.             *
  4190.             *                                  Set VT100 emulation
  4191.              SetParam 'VC' '0'
  4192.              SetParam 'AK' '0'
  4193.             *
  4194.              WaitString "$ "
  4195.              SText "SET TERM/VT100|"
  4196.             *                                  Load Vax function keys
  4197.              IF ( EnhKeybd = 1 ) THEN
  4198.                 Key 'decvaxe.fnc'
  4199.              ELSE
  4200.                 Key 'decvax.fnc'
  4201.              ENDIF
  4202.             *                                  Set backspace if not already set.
  4203.              SetParam 'DE' '^H'
  4204.              SetParam 'BS' ''
  4205.             
  4206.             
  4207.             IBM CMS login script            IBM CMS login script
  4208.             
  4209.             Here is a script to log on to an IBM CMS system, through an
  4210.             7171 (or equivalent) front-end:
  4211.             
  4212.             
  4213.  
  4214.  
  4215.             PibTerm Script Language Reference Guide              Page 70            PibTerm Script Language Reference Guide              Page 70
  4216.  
  4217.  
  4218.             ***************************************************************************
  4219.             *       I B M . S C R --- Script for connecting to IBM CMS system         *
  4220.             ***************************************************************************
  4221.             *                                                                         *
  4222.             *    Script:  Ibm.Scr                                                     *
  4223.             *                                                                         *
  4224.             *    Purpose: Connects to IBM CMS system with a 7171 front end.           *
  4225.             *             Designed for use as attached script in dialing directory.   *
  4226.             *                                                                         *
  4227.             *    Invocation:                                                          *
  4228.             *                                                                         *
  4229.             *       Execute "Ibm"                                                     *
  4230.             *                                                                         *
  4231.             *    Remarks:                                                             *
  4232.             *                                                                         *
  4233.             *       Change the values of "username" and "password" to those of        *
  4234.             *       your own Ibm account.                                             *
  4235.             *                                                                         *
  4236.             ***************************************************************************
  4237.             *
  4238.             *                                  Wake up 7171 front-end
  4239.              Repeat
  4240.             *
  4241.                 SText "|"
  4242.             *                                  Wait for "Username" prompt.
  4243.                 WaitString "TYPE:" 2
  4244.             *
  4245.              Until ( WaitFound OR ( NOT Connected ) )
  4246.             *
  4247.             *                                  Quit if carrier dropped.
  4248.              IF ( NOT Connected ) THEN
  4249.                 Exit
  4250.              ENDIF
  4251.             *                                  Send terminal type of VT100
  4252.              SText "vt100|"
  4253.             *                                  Set VT100 emulation in PibTerm
  4254.              SetParam 'VC' '0'
  4255.              SetParam 'AK' '0'
  4256.             *                                  Load CMS function keys
  4257.              IF ( EnhKeybd = 1 ) THEN
  4258.                 Key      'ibmcmse.fnc'
  4259.              ELSE
  4260.                 Key      'ibmcms.fnc'
  4261.              ENDIF
  4262.             *                                  Load backspace if not already done
  4263.              SetParam 'BS' '^[[OD'
  4264.              SetParam 'DE' '^[[OD'
  4265.             *                                  Wait for intro screen to finish.
  4266.              WaitQuiet 30
  4267.             *                                  Issue login -- put your own account
  4268.             *                                  and password here.
  4269.             *
  4270.              SText "|"
  4271.              WaitQuiet 10
  4272.  
  4273.  
  4274.             PibTerm Script Language Reference Guide              Page 71            PibTerm Script Language Reference Guide              Page 71
  4275.  
  4276.  
  4277.             *
  4278.              SText "login username password|"
  4279.             *
  4280.             
  4281.             
  4282.             LUIS login script            LUIS login script
  4283.             
  4284.             Here is  a script  for logging  in to the LUIS system.  LUIS
  4285.             runs under  IBM CMS,  but there  is no  account and password
  4286.             required.
  4287.             
  4288.             
  4289.             ***************************************************************************
  4290.             *       L U I S . S C R --- Script for connecting to Luis system          *
  4291.             ***************************************************************************
  4292.             *                                                                         *
  4293.             *    Script:  Luis.Scr                                                    *
  4294.             *                                                                         *
  4295.             *    Purpose: Connects to Luis system.  Designed for use as               *
  4296.             *             attached script in dialing directory.                       *
  4297.             *                                                                         *
  4298.             *    Invocation:                                                          *
  4299.             *                                                                         *
  4300.             *       Execute "Luis"                                                    *
  4301.             *                                                                         *
  4302.             ***************************************************************************
  4303.             *
  4304.             *                                  Wake up protocol converter.
  4305.              Repeat
  4306.             *
  4307.                 SText "|"
  4308.             *                                  Wait for "Username" prompt.
  4309.                 WaitString "TYPE:" 2
  4310.             *
  4311.              UNTIL ( WaitFound OR ( NOT Connected ) )
  4312.             *
  4313.             *                                  Quit if carrier dropped.
  4314.              IF ( NOT Connected ) THEN
  4315.                 Exit
  4316.              ENDIF
  4317.             *                                  Send terminal type of VT100.
  4318.              SText "vt100|"
  4319.             *                                  Wait until an intro stuff clears.
  4320.              WaitQuiet 20
  4321.             *                                  Send CR to get Luis screen.
  4322.              SText "|"
  4323.             *
  4324.             *                                  Set VT100 emulation
  4325.              SetParam 'VC' '0'
  4326.              SetParam 'AK' '0'
  4327.             *                                  Load CMS function keys
  4328.              SetParam 'BS' '^[[OD'
  4329.              SetParam 'DE' '^[[OD'
  4330.             *
  4331.  
  4332.  
  4333.             PibTerm Script Language Reference Guide              Page 72            PibTerm Script Language Reference Guide              Page 72
  4334.  
  4335.  
  4336.              IF ( EnhKeybd = 1 ) THEN
  4337.                 Key      'ibmcmse.fnc'
  4338.              ELSE
  4339.                 Key      'ibmcms.fnc'
  4340.              ENDIF
  4341.             *
  4342.             
  4343.             
  4344.             OPUS login script            OPUS login script
  4345.             
  4346.             Here is  a script  to log on to an OPUS system.  This is the
  4347.             bulletin   board   software   currently   running   on   the
  4348.             Northwestern IBM PC bulletin board system.
  4349.             
  4350.             
  4351.             ***************************************************************************
  4352.             *        O P U S . S C R --- Script for logging into OPUS BBS system      *
  4353.             ***************************************************************************
  4354.             *                                                                         *
  4355.             *    Script:  Opus.Scr                                                    *
  4356.             *                                                                         *
  4357.             *    Purpose: Connects to OPUS system.  Designed for use as               *
  4358.             *             attached script in dialing directory.                       *
  4359.             *                                                                         *
  4360.             *    Invocation:                                                          *
  4361.             *                                                                         *
  4362.             *       Execute "Opus"                                                    *
  4363.             *                                                                         *
  4364.             *    Remarks:                                                             *
  4365.             *                                                                         *
  4366.             *       Change the values of "firstname", "lastname", and "password"      *
  4367.             *       to those of your own OPUS account.                                *
  4368.             *                                                                         *
  4369.             ***************************************************************************
  4370.             *
  4371.             *                                  Wait for name prompt.
  4372.              Waitstring "Your FIRST name:" 2
  4373.             *                                  Carrier dropped -- quit.
  4374.              If ( NOT Connected ) Then
  4375.                 Exit
  4376.              EndIf
  4377.             *                                  Didn't get "FIRST name" prompt -- quit.
  4378.              If ( NOT WaitFound ) Then
  4379.                 Exit
  4380.              Endif
  4381.             *
  4382.             *                                  Send first name, last name.
  4383.             *                                  PUT YOURS HERE.
  4384.             *
  4385.              SText   "firstname lastname|"
  4386.             *
  4387.             *                                  Reply "y" to validation prompt
  4388.             *
  4389.              Waitstring "Y,n"
  4390.  
  4391.  
  4392.             PibTerm Script Language Reference Guide              Page 73            PibTerm Script Language Reference Guide              Page 73
  4393.  
  4394.  
  4395.              Stext "y|"
  4396.             *
  4397.             *                                 Wait for password prompt and then
  4398.             *                                 send password.
  4399.             *                                 PUT YOURS HERE.
  4400.             *
  4401.              Waitstring "assword:"
  4402.              Stext "password|"
  4403.             
  4404.             
  4405.             RBBS login script            RBBS login script
  4406.             
  4407.             Here is  a script  to log on to an RBBS system.  This script
  4408.             may need  modification for  an individual RBBS system, since
  4409.             there can  be a  great deal  of variation as regards initial
  4410.             welcome messages and so on.
  4411.             
  4412.             
  4413.             ***************************************************************************
  4414.             *        R B B S . S C R --- Script for logging into RBBS BBS system      *
  4415.             ***************************************************************************
  4416.             *                                                                         *
  4417.             *    Script:  Rbbs.Scr                                                    *
  4418.             *                                                                         *
  4419.             *    Purpose: Connects to RBBS system.  Designed for use as               *
  4420.             *             attached script in dialing directory.                       *
  4421.             *                                                                         *
  4422.             *    Invocation:                                                          *
  4423.             *                                                                         *
  4424.             *       Execute "Rbbs"                                                    *
  4425.             *                                                                         *
  4426.             *    Remarks:                                                             *
  4427.             *                                                                         *
  4428.             *       Change the values of "firstname", "lastname", and "password"      *
  4429.             *       to those of your own RBBS account.                                *
  4430.             *                                                                         *
  4431.             ***************************************************************************
  4432.             *
  4433.             *                                  Wait for name prompt.
  4434.              WaitString "ame:"
  4435.             *                                  Send first name, last name, and password.
  4436.             *                                  PUT YOURS HERE.
  4437.             *
  4438.              SText   "firstname;lastname;password|"
  4439.             
  4440.             
  4441.             IBBS login script            IBBS login script
  4442.             
  4443.             Here is  a script  to log  on to  an IBBS  system like  Gene
  4444.             Plantz's system in Chicago:
  4445.             
  4446.             
  4447.             ***************************************************************************
  4448.             *        I B B S . S C R --- Script for logging into IBBS BBS system      *
  4449.  
  4450.  
  4451.             PibTerm Script Language Reference Guide              Page 74            PibTerm Script Language Reference Guide              Page 74
  4452.  
  4453.  
  4454.             ***************************************************************************
  4455.             *                                                                         *
  4456.             *    Script:  Ibbs.Scr                                                    *
  4457.             *                                                                         *
  4458.             *    Purpose: Connects to IBBS system.  Designed for use as               *
  4459.             *             attached script in dialing directory.                       *
  4460.             *                                                                         *
  4461.             *    Invocation:                                                          *
  4462.             *                                                                         *
  4463.             *       Execute "IBBS"                                                    *
  4464.             *                                                                         *
  4465.             *    Remarks:                                                             *
  4466.             *                                                                         *
  4467.             *       Change the values of "IDnnnn" and "password" to your own.         *
  4468.             *                                                                         *
  4469.             ***************************************************************************
  4470.             *
  4471.             *                                  Wait for name request
  4472.             *
  4473.              Waitstring "FIRST Name"
  4474.             *                                  Quit if not connected.
  4475.              If ( NOT Connected ) Then
  4476.                 Exit
  4477.              Endif
  4478.             *                                  Send ID number and password.
  4479.             *                                  Also request message reading from
  4480.             *                                  last previous message.
  4481.             *                                  PUT YOUR ID/PASSWORD HERE.
  4482.             *
  4483.              WaitQuiet 10
  4484.              Stext   "IDnnnn;password;m;r;*|"
  4485.             *
  4486.             
  4487.             
  4488.             CompuServe Login Script            CompuServe Login Script
  4489.             
  4490.             Here is a sample script to log on to CompuServe.
  4491.             
  4492.             
  4493.             ***************************************************************************
  4494.             *        C I S . S C R --- Script for connecting to CompuServe            *
  4495.             ***************************************************************************
  4496.             *                                                                         *
  4497.             *    Script:  Cis.Scr                                                     *
  4498.             *                                                                         *
  4499.             *    Purpose: Connects to CompuServe.                                     *
  4500.             *                                                                         *
  4501.             *    Invocation:                                                          *
  4502.             *                                                                         *
  4503.             *       Execute "Cis"                                                     *
  4504.             *                                                                         *
  4505.             *    Remarks:                                                             *
  4506.             *                                                                         *
  4507.             *       Change the values of "user,id" and "password" to those of         *
  4508.  
  4509.  
  4510.             PibTerm Script Language Reference Guide              Page 75            PibTerm Script Language Reference Guide              Page 75
  4511.  
  4512.  
  4513.             *       your own CIS account.                                             *
  4514.             *                                                                         *
  4515.             ***************************************************************************
  4516.             *
  4517.             *                                  Wait a few seconds for network to activate
  4518.              Suspend 300
  4519.             *                                  Wake up CompuServe
  4520.              SText "^C"
  4521.             *                                  Wait for userid prompt
  4522.              WaitString "User"
  4523.             *                                  Send userid -- PUT YOURS HERE
  4524.              SText "user,id|"
  4525.             *                                  Wait for password prompt
  4526.              WaitString "Password:"
  4527.             *                                  Send password -- PUT YOURS HERE
  4528.              SText "password|"
  4529.             *                                  Wait for main prompt
  4530.              WaitString " !"
  4531.             *                                  Turn on CompuServe B protocol
  4532.              SetParam "BP" "1"
  4533.             *
  4534.             
  4535.             
  4536.             Using A Password File            Using A Password File
  4537.             
  4538.             PibTerm does  not store  the passwords for remote systems in
  4539.             the dialing  directory, for security purposes.  However, you
  4540.             may want  to keep  a file  of passwords  for remote  systems
  4541.             anyway, in  order to  better automate your scripts for those
  4542.             systems.   You can use the script facilities and text editor
  4543.             in PibTerm to maintain a password file.
  4544.             
  4545.             For example, if you regularly dial into a dozen different PC
  4546.             Board systems, you could write separate very similar scripts
  4547.             for  each   system  with   your  unique   ID  and  password.
  4548.             Alternatively, you  could write  one general  script and get
  4549.             the password for a particular system from a password file.
  4550.             
  4551.             Following is  a script  GETPASS.SCR which can be EXECUTEd by                                                             EXECUTE    
  4552.             another script to retrieve passwords from the password file.
  4553.             The initial  comments in  this script detail how to create a
  4554.             password file.
  4555.             
  4556.             
  4557.             ***************************************************************************
  4558.             *       G E T P A S S . S C R  --- Get password for remote system         *
  4559.             ***************************************************************************
  4560.             *
  4561.             *                                  Dialing entry to get password for
  4562.              Import DEntry Integer
  4563.             *                                  Name of dialed system to return to caller
  4564.              Import SysName String
  4565.             *                                  Password to return to calling script
  4566.              Import PassWord String
  4567.  
  4568.  
  4569.             PibTerm Script Language Reference Guide              Page 76            PibTerm Script Language Reference Guide              Page 76
  4570.  
  4571.  
  4572.             *
  4573.             ***************************************************************************
  4574.             *                                                                         *
  4575.             *    Script:  GetPass.Scr                                                 *
  4576.             *                                                                         *
  4577.             *    Purpose: Returns entry in password file corresponding to             *
  4578.             *             given dialing entry.                                        *
  4579.             *                                                                         *
  4580.             *    Invocation:                                                          *
  4581.             *                                                                         *
  4582.             *       Execute 'GetPass'  DialEnt SysName PassWord                       *
  4583.             *                                                                         *
  4584.             *          DialEnt  --- Number of entry to get password for               *
  4585.             *          SysName  --- Name of System for entry 'DialEnt'                *
  4586.             *          PassWord --- Password for entry 'DialEnt'                      *
  4587.             *                                                                         *
  4588.             *    Remarks:                                                             *
  4589.             *                                                                         *
  4590.             *       PibTerm does not store passwords for systems to be dialed in the  *
  4591.             *       dialing directory.  This is for security reasons.  However,       *
  4592.             *       you may find it convenient to maintain a file of passwords for    *
  4593.             *       each system on your own.  You can do this with the built-in       *
  4594.             *       PibTerm editor, for example.                                      *
  4595.             *                                                                         *
  4596.             *       This script provides a mechanism for accessing your password      *
  4597.             *       file from another script invoked as the result of a PibTerm       *
  4598.             *       request.  Your dialing script just needs to invoke this script    *
  4599.             *       as indicated above.                                               *
  4600.             *                                                                         *
  4601.             *       Using a password file allows you to write one script which can    *
  4602.             *       handle the signon sequence for a number of remote systems.  For   *
  4603.             *       example, you can write a generic routine to log into PC Board     *
  4604.             *       systems.  Then you can attach this generic script to the dialing  *
  4605.             *       entries for all the PC Board systems you call.  The major         *
  4606.             *       difference will be the password, and using GETPASS.SCR allows you *
  4607.             *       to handle that difference rather easily.                          *
  4608.             *                                                                         *
  4609.             *       The password file is assumed to be called 'c:\pibterm\mypass.dat' *
  4610.             *       but you can change that to whatever name you like.  The format    *
  4611.             *       of the password file is simple:  for each entry in the dialing    *
  4612.             *       directory, place the system's name, followed by a colon (:),      *
  4613.             *       followed by the system's password on the matching line            *
  4614.             *       number in the password file.  Hence, if your dialing directory    *
  4615.             *       (PIBTERM.FON) has 25 entries, then your password file should also *
  4616.             *       have 25 lines.  Each line has the name and password corresponding *
  4617.             *       to one dialing entry.  For example, the 10th line in the password *
  4618.             *       file should have the name and password for the 10th entry in the  *
  4619.             *       dialing directory                                                 *
  4620.             *                                                                         *
  4621.             *       A non-existent password is returned as a null string.             *
  4622.             *                                                                         *
  4623.             *       While you won't stop a dedicated "hacker" from finding it, you    *
  4624.             *       may want to assign a "hidden" file attribute to your password     *
  4625.             *       file.  The GetPass script will still be able to read it, but      *
  4626.  
  4627.  
  4628.             PibTerm Script Language Reference Guide              Page 77            PibTerm Script Language Reference Guide              Page 77
  4629.  
  4630.  
  4631.             *       casual "perusers" of your hard disk won't find it in a standard   *
  4632.             *       DIR listing.                                                      *
  4633.             *                                                                         *
  4634.             ***************************************************************************
  4635.             *
  4636.             *                                  Current entry in password file
  4637.              Declare IEntry Integer
  4638.             *                                  Return null password in case of error
  4639.              PassWord = ''
  4640.             *                                  Ditto for System Name
  4641.              SysName  = ''
  4642.             *                                  Make sure dialing # is reasonable
  4643.              IF ( DEntry <= 0 ) THEN
  4644.                 EXIT
  4645.              ENDIF
  4646.             *                                  Open password file.
  4647.             *                                  Change name to whatever you want.
  4648.             *
  4649.              Open 1 'c:\pibterm\MyPass.dat' 'Input'
  4650.             *
  4651.             *                                  Check that open went OK -- if not,
  4652.             *                                  return to caller.
  4653.              IF ( IOResult <> 0 ) THEN
  4654.                 EXIT
  4655.              ENDIF
  4656.             *                                  Skip down to correct entry
  4657.             *
  4658.              FOR IEntry = 1 TO ( DEntry - 1 ) DO
  4659.                 Readln 1 SysName
  4660.                 IF ( IOResult <> 0 ) THEN
  4661.                    SysName = ''
  4662.                    CLOSE 1
  4663.                    EXIT
  4664.                 ENDIF
  4665.              ENDFOR
  4666.             *                                 Read correct entry
  4667.              Readln 1 SysName
  4668.             *
  4669.              IF ( IOResult <> 0 ) THEN
  4670.                 SysName = ''
  4671.                 CLOSE 1
  4672.                 EXIT
  4673.              ENDIF
  4674.             *                                  Close password file
  4675.              Close 1
  4676.             *                                  Parse out system name and password
  4677.             *                                   System Name begins line, then a colon (:),
  4678.             *                                   and then the password
  4679.              Set IEntry = Index(':', SysName)
  4680.              If ( IEntry = 0 ) then
  4681.                 SysName = ''
  4682.                 Exit
  4683.              EndIf
  4684.              Set Password = Trim( LTrim( SubStr(SysName, IEntry+1, Length(SysName)-IEntry)))
  4685.  
  4686.  
  4687.             PibTerm Script Language Reference Guide              Page 78            PibTerm Script Language Reference Guide              Page 78
  4688.  
  4689.  
  4690.              Set SysName  = Trim( LTrim( SubStr(SysName, 1, IEntry-1)))
  4691.             *
  4692.             
  4693.             
  4694.             PC Board Login Script Using Password File            PC Board Login Script Using Password File
  4695.             
  4696.             As an  example of how to use the GETPASS.SCR script, here is
  4697.             a generalized  PC Board  login script  written by Richard P.
  4698.             Byrne:
  4699.             
  4700.             
  4701.             *
  4702.                Declare  SysName     String
  4703.                Declare  PassWord    String
  4704.                Declare  DialEnt     Integer
  4705.                Declare  StrIdx      Integer
  4706.                Declare  TimeOut     Integer  10
  4707.                Declare  LoopCount   Integer   0
  4708.                Declare  CaptStatus  String  'OFF'
  4709.             *
  4710.             ******************************************************************************
  4711.             *                                                                            *
  4712.             *   Script:     PCBOARD.SCR                                                  *
  4713.             *                                                                            *
  4714.             *   Purpose:    Automated logon for PCBoard bulletin board systems.          *
  4715.             *                                                                            *
  4716.             *   Invocation: This script is meant to be invoked from the dialing          *
  4717.             *               directory.                                                   *
  4718.             *                                                                            *
  4719.             *   Remarks:    Creates a file called PCB_NEWS.TXT that will contain the     *
  4720.             *               first screenful of News displayed by the system (if any).    *
  4721.             *                                                                            *
  4722.             *               This script calls the GETPASS script to return the name      *
  4723.             *               of the system being accessed plus the password for that      *
  4724.             *               system.                                                      *
  4725.             *                                                                            *
  4726.             ******************************************************************************
  4727.             *
  4728.             *                             Get entry number of system dialed
  4729.                Set DialEnt = Dialed
  4730.             *                             Wait for the "graphics" prompt
  4731.             *
  4732.                WaitString '=no?' TimeOut
  4733.                If (WaitFound) then
  4734.             *                             Use graphics for this call
  4735.                   SText 'Y Q|'
  4736.             
  4737.             *                             Get name of system + password from Mypass.Dat file
  4738.             *
  4739.                   Execute 'getpass' DialEnt SysName PassWord
  4740.             *
  4741.             *                             Format Password for use by combining
  4742.             *                             with logon id (ie. first & last name)
  4743.             *
  4744.  
  4745.  
  4746.             PibTerm Script Language Reference Guide              Page 79            PibTerm Script Language Reference Guide              Page 79
  4747.  
  4748.  
  4749.                   Set PassWord = CONCAT('FirstName LastName ', PassWord)
  4750.                   Set PassWord = CONCAT( PassWord , '|' )
  4751.             *
  4752.             *                             Format System Name for log file entry
  4753.             *
  4754.                   Set SysName  = CONCAT('Captured News Items for ', SysName)
  4755.             *
  4756.             *                             Turn on capture in case there's news
  4757.             *
  4758.                   Capture 'C:\pcbdir\PCB_News.Txt' 'E'
  4759.             *
  4760.             *                             Set capture file status flag to
  4761.             *                             indicate an open log file
  4762.             *
  4763.                   Set CaptStatus = 'ON'
  4764.             *
  4765.             *                             Write system name to log file
  4766.             *
  4767.                   WriteLog '========================================================'
  4768.                   WriteLog SysName
  4769.                   WriteLog '========================================================'
  4770.             
  4771.             *                             Send logon id and password
  4772.                   SText PassWord
  4773.             
  4774.             *                             Set WaitTime to one second
  4775.                   WaitTime 1
  4776.             *                             Loop until we get to main command prompt
  4777.                   Repeat
  4778.                      WaitList StrIdx 'continue?' '=no?' '(NS)?' '=yes?' 'Command?'
  4779.                      Set LoopCount = LoopCount + 1
  4780.                      DoCase StrIdx
  4781.                         Case 1
  4782.             *                             Answer the "Press (Enter) to continue?"
  4783.             *                             prompt
  4784.                            SText '|'
  4785.             *                             And re-initialize our "dead-man"
  4786.             *                             loop counter
  4787.             *
  4788.                            Set LoopCount = 0
  4789.                         EndCase
  4790.                         Case 2
  4791.             *                             Conference "auto-joined" ...
  4792.             *                             Answer the "view others" prompt
  4793.                            SText '|'
  4794.             *                             And re-initialize our "dead-man"
  4795.             *                             loop counter
  4796.             *
  4797.                            Set LoopCount = 0
  4798.                         EndCase
  4799.                         Case 3
  4800.             *                             Answer the "More: (Y), (N), (NS)?"
  4801.             *                             prompt
  4802.                            SText 'N|'
  4803.  
  4804.  
  4805.             PibTerm Script Language Reference Guide              Page 80            PibTerm Script Language Reference Guide              Page 80
  4806.  
  4807.  
  4808.             *                             And re-initialize our "dead-man"
  4809.             *                             loop counter
  4810.             *
  4811.                            Set LoopCount = 0
  4812.                         EndCase
  4813.                         Case 4
  4814.             *                             Turn off capture and scan all
  4815.             *                             message bases for mail
  4816.             *
  4817.                            If ( CaptStatus = 'ON' ) Then
  4818.                               Capture
  4819.                               Set CaptStatus = 'OFF'
  4820.                            EndIf
  4821.                            SText 'A NS|'
  4822.                            Set LoopCount = 0
  4823.                         EndCase
  4824.                      EndDoCase
  4825.                   Until (StrIdx = 5) or (LoopCount = TimeOut)
  4826.             
  4827.                EndIf
  4828.             *
  4829.             *                             If the capture file is still on (?),
  4830.             *                             then turn it off
  4831.             *
  4832.                If ( CaptStatus = 'ON' ) Then
  4833.                   Capture
  4834.                EndIf
  4835.             *                             That's all folks!
  4836.             
  4837.             
  4838.             Reading A New Configuration File            Reading A New Configuration File
  4839.             
  4840.             The PibTerm  script language  doesn't provide a direct means
  4841.             of  reading   in  a   parameter  configuration   file   like
  4842.             PIBTERM.CNF.   Reading in  a new  configuration file  can be
  4843.             very useful  if  you  want  to  change  a  large  number  of
  4844.             parameters at  once.   However, you can use the input/output
  4845.             facilities of PibTerm to read a new configuration file.
  4846.             
  4847.             Here is  a script  which can  be EXECUTEd by another script,                                             EXECUTE                    
  4848.             and which will read and process a configuration file.
  4849.             
  4850.             
  4851.             ***************************************************************************
  4852.             *       R E A D C O N F . S C R --- Read configuration file               *
  4853.             ***************************************************************************
  4854.             *
  4855.             *                                  Name of configuration file to be read
  4856.              Import ConfName String
  4857.             *
  4858.             ***************************************************************************
  4859.             *                                                                         *
  4860.             *    Script:  ReadConf.Scr                                                *
  4861.             *                                                                         *
  4862.  
  4863.  
  4864.             PibTerm Script Language Reference Guide              Page 81            PibTerm Script Language Reference Guide              Page 81
  4865.  
  4866.  
  4867.             *    Purpose: Reads a configuration file and resets PibTerm parameters.   *
  4868.             *                                                                         *
  4869.             *    Invocation:                                                          *
  4870.             *                                                                         *
  4871.             *       Execute "ReadConf" ConfName                                       *
  4872.             *                                                                         *
  4873.             *          ConfName --- Configuration file to read                        *
  4874.             *                                                                         *
  4875.             *          Example:    Execute "ReadConf" "Bogusco.Cnf"                   *
  4876.             *                                                                         *
  4877.             ***************************************************************************
  4878.             *
  4879.             *                                  Configuration line
  4880.              Declare ConfLine String
  4881.             *                                  Configuration parameter name
  4882.              Declare ConfName String
  4883.             *                                  Configuration parameter value
  4884.              Declare ConfValue String
  4885.             *                                  Open configuration file.
  4886.             *
  4887.              Open 1 ConfName "Input"
  4888.             *
  4889.             *                                  Check that open went OK -- if not,
  4890.             *                                  return to caller.
  4891.              IF ( IOResult <> 0 ) THEN
  4892.                 EXIT
  4893.              ENDIF
  4894.             *                                  Begin loop over configuration file.
  4895.              REPEAT
  4896.             *                                  Read line from configuration file.
  4897.                 Readln 1 ConfLine
  4898.             *                                  Parse into parameter name and value.
  4899.             *
  4900.                 ConfName  = Substr( ConfLine, 1, 2 )
  4901.                 ConfValue = Substr( ConfLine, 4, 255 )
  4902.             *
  4903.             *                                  Set parameter value.
  4904.                 SetParam ConfName ConfValue
  4905.             *
  4906.              UNTIL ( EOF( 1 ) )
  4907.             *                                  Close configuration file
  4908.              Close 1
  4909.             
  4910.             
  4911.             Defining Scripts For External Transfer Protocols            Defining Scripts For External Transfer Protocols
  4912.             
  4913.             As indicated  in the  "Guide to  PibTerm", it is possible to
  4914.             hook external  file transfer  protocols into  PibTerm  using
  4915.             either batch  files or  scripts.   The  "Guide  to  PibTerm"
  4916.             describes the procedure for using batch files.  This section
  4917.             discusses  the   use  of   scripts,  which   provides   more
  4918.             flexibility  but   requires  considerably  more  programming
  4919.             expertise.
  4920.             
  4921.  
  4922.  
  4923.             PibTerm Script Language Reference Guide              Page 82            PibTerm Script Language Reference Guide              Page 82
  4924.  
  4925.  
  4926.             This section  presents scripts  for use  with MLINK.COM, the
  4927.             module written  by Paul Meiners that implements the MegaLink
  4928.             protocol.   The discussion on adding external file transfers
  4929.             to PibTerm  in  the  "Guide  to  PibTerm"    also  uses  the
  4930.             MLINK.COM program  as an  example, so  you should  have  the
  4931.             "Guide" handy for comparison.
  4932.             
  4933.             Let's begin by recapitulating the parameters expected by the
  4934.             external protocol  module.   In the  case of  MegaLink,  the
  4935.             MLINK.COM program takes argument of the form:
  4936.             
  4937.                  MLINK PORT n SPEED s RM download_directory
  4938.                  MLINK PORT n SPEED s SM
  4939.             
  4940.             where 'n' is the communications port number, 's' is the baud
  4941.             rate  of  the  connection,  RM  indicates  files  are  being
  4942.             received,  SM   indicates  files   are   being   sent,   and
  4943.             'download_directory' is  the name  of the  PibTerm  download
  4944.             directory.
  4945.             
  4946.             For example,  to receive files at 2400 baud over port 1, the
  4947.             MLINK.COM invocation should be:
  4948.             
  4949.                  MLINK PORT 1 SPEED 2400 RM C:\DOWNLOAD
  4950.             
  4951.             assuming   that    the   PibTerm   download   directory   is
  4952.             'C:\DOWNLOAD', while  to send files over port 2 at 1200 baud
  4953.             the MLINK.COM invocation should be:
  4954.             
  4955.                  MLINK PORT 2 SPEED 1200 SM
  4956.             
  4957.             In general,  a script  to receive  a file  or files contains
  4958.             statements to do the following:
  4959.             
  4960.                  1.   Save the  current drive/directory  using  the  new
  4961.                       GETDIR script command.
  4962.                  
  4963.                  2.   Move to  the select  download directory (parameter
  4964.                       DD= in  terminal mode  or HD=  in host mode) using
  4965.                       the CHDIR  script  command,  unless  the  external
  4966.                       protocol  module  has  a  way  of  specifying  the
  4967.                       download directory name.
  4968.                  
  4969.                  3.   Pick up the file name to be transferred (parameter
  4970.                       FN=) using the GETPARAM script command.
  4971.                  
  4972.                  4.   Pick  up  any  other  information  needed  by  the
  4973.                       external protocol handler, such as the port (PO=),
  4974.                       baud rate  (BA=), etc.,  again using  the GETPARAM
  4975.                       command.
  4976.                  
  4977.                  5.   Construct the  DOS command  to invoke the external
  4978.                       handler module, including the program name and all
  4979.                       of its  parameters.  This will involve a series of
  4980.  
  4981.  
  4982.             PibTerm Script Language Reference Guide              Page 83            PibTerm Script Language Reference Guide              Page 83
  4983.  
  4984.  
  4985.                       SET statements  to CONCAT  the various  parameters
  4986.                       together.
  4987.                  
  4988.                  6.   Execute  the   external  handler   using  the  DOS
  4989.                       command.
  4990.                  
  4991.                  7.   Return to  the original  drive/directory using the
  4992.                       CHDIR command.
  4993.                  
  4994.             A script  to send  files is  similar.  In terminal mode, you
  4995.             don't need  to specify a directory from which to send files.
  4996.             In host  mode, you  should specify  the host  mode  download
  4997.             directory (HD=)  and restrict  files  to  be  sent  to  that
  4998.             subdirectory. The  easiest way  to  do  that  is  to  simply
  4999.             prepend the  host mode  directory to  the file specification
  5000.             provided by  the user  (from  FN=).    If  a  non-super-user
  5001.             requests some  other path,  the script  should strip  it, or
  5002.             just not allow the transfer.
  5003.             
  5004.             When sending  files, or  receiving files  with  a  non-batch
  5005.             protocol, you  need to know the file name(s) of the files to
  5006.             be transferred.  PibTerm will  have already prompted for the
  5007.             name.   You gain  access to  the file specification provided
  5008.             using  the  new  FN=  pseudo-parameter.  FN=  is  a  pseudo-
  5009.             parameter because  it isn't  written to  PIBTERM.CNF (and is
  5010.             ignored if  read from  there), but  it can be accessed using
  5011.             the script  command 'GetParam'  just like  a real parameter.
  5012.             The value  returned by  FN is  the file  specification  last
  5013.             entered to  PibTerm.   You can look at SENDMLIN.SCR (appears
  5014.             below) to see how to use FN=.
  5015.             
  5016.             If you  allow the protocol to execute in host mode, then you
  5017.             also need  to check  within your script whether the protocol
  5018.             has been  invoked from host mode or from terminal mode.  The
  5019.             new pseudo-parameter HP= provides this information:
  5020.             
  5021.                  HP=      -- in terminal mode (HP is a blank)
  5022.                  HP=N     -- in host mode, user is a normal user
  5023.                  HP=S     -- in host mode, user is a super-user
  5024.             
  5025.             Like FN=,  HP= is  not written to PIBTERM.CNF and is ignored
  5026.             if present in that file.
  5027.             
  5028.             NOTE:     For security  reasons in  host  mode,  when  using
  5029.                       external protocols,  make sure  that the  external
  5030.                       driver has either
  5031.             
  5032.                            (1)  a mechanism  for restricting  the  files
  5033.                            sent or received to the current directory, or
  5034.             
  5035.                            (2)  a   mechanism    for   specifying    the
  5036.                            directories from which files are sent or into
  5037.                            which files are received.
  5038.             
  5039.  
  5040.  
  5041.             PibTerm Script Language Reference Guide              Page 84            PibTerm Script Language Reference Guide              Page 84
  5042.  
  5043.  
  5044.                       Otherwise, non-super-users  could use  an external
  5045.                       protocol  to   transfer  files   you  don't   want
  5046.                       transferred, and  which wouldn't be allowed by the
  5047.                       internal PibTerm  transfer facilities  because  of
  5048.                       the XferList  (PIBTERM.XFR) checking.  No XferList                                     PIBTERM.XFR                        
  5049.                       checking is available for external protocols.
  5050.             
  5051.             
  5052.             Example: SENDMLIN.SCR for sending files with MegaLink            Example: SENDMLIN.SCR for sending files with MegaLink
  5053.             
  5054.             Here is the script SENDMLIN.SCR for interfacing MLINK.COM to
  5055.             PibTerm for purposes of sending files to a remote system:
  5056.             
  5057.             
  5058.             ***************************************************************************
  5059.             *    S E N D M L I N . S C R --- Script interfacing MLINK to PibTerm      *
  5060.             ***************************************************************************
  5061.             *                                                                         *
  5062.             *    Script:  SendMLin.Scr                                                *
  5063.             *                                                                         *
  5064.             *    Purpose: Interfaces external Megalink driver program MLINK.COM       *
  5065.             *             to PibTerm for sending files.                               *
  5066.             *                                                                         *
  5067.             *    Invocation:                                                          *
  5068.             *                                                                         *
  5069.             *       Execute "SendMLin"                                                *
  5070.             *                                                                         *
  5071.             *    Remarks:                                                             *
  5072.             *                                                                         *
  5073.             *       This script is designed to be automatically invoked by the        *
  5074.             *       <ALT>S command when MegaLink has been defined as an external      *
  5075.             *       protocol at <ALT>P, F)ile transfer, k) external file transfers.   *
  5076.             *                                                                         *
  5077.             ***************************************************************************
  5078.             *                                                                         *
  5079.             *                                  File spec for files to transfer
  5080.                Declare FileSpec String
  5081.             *                                  Baud rate for transfer
  5082.                Declare BaudRate String
  5083.             *                                  Comm port number
  5084.                Declare Port     String
  5085.             *                                  Build MLink invocation line in this
  5086.                Declare Mlink    String
  5087.             *                                  Host mode flag
  5088.                Declare HostMode String
  5089.             *                                  Upload directory
  5090.                Declare UpDir String
  5091.             *
  5092.             **************************************************************************
  5093.             *       StripPath --- procedure to strip path from file name             *
  5094.             **************************************************************************
  5095.             *
  5096.                PROCEDURE StripPath
  5097.             *
  5098.  
  5099.  
  5100.             PibTerm Script Language Reference Guide              Page 85            PibTerm Script Language Reference Guide              Page 85
  5101.  
  5102.  
  5103.                   Declare I  Integer
  5104.                   Declare L  Integer
  5105.                   Declare Ch String
  5106.             *
  5107.                   IF ( ( INDEX( '\' , FileSpec ) <> 0 ) OR ( INDEX( ':' , FileSpec ) <> 0 ) ) THEN
  5108.             *
  5109.                      L = LENGTH( FileSpec )
  5110.                      I = L
  5111.             *
  5112.                      REPEAT
  5113.                         I  = I - 1
  5114.                         Ch = Substr( FileSpec, I, 1 )
  5115.                      UNTIL ( ( Ch = '\' ) OR ( Ch = ':' ) )
  5116.             *
  5117.                      FileSpec = SUBSTR( FileSpec,  I + 1 , L - I )
  5118.             *
  5119.                   ENDIF
  5120.             *
  5121.                ENDPROC   StripPath
  5122.             *
  5123.             **************************************************************************
  5124.             *                       SendMLin -- Main Routine                         *
  5125.             **************************************************************************
  5126.             *
  5127.             *                                  Find out if we're in host mode
  5128.             *
  5129.                GetParam 'HP' HostMode
  5130.             *                                  Get port number
  5131.                GetParam 'PO' Port
  5132.             *                                  Get baud rate
  5133.                GetParam 'BA' BaudRate
  5134.             *                                  Get file spec
  5135.                GetParam 'FN' FileSpec
  5136.             *                                  Get host mode directory, and
  5137.             *                                  prepend to file spec, after
  5138.             *                                  stripping any other directory spec.
  5139.                IF ( HostMode = 'N' ) THEN
  5140.                   GetParam 'HD' UpDir
  5141.                   Call StripPath
  5142.                   Set FileSpec = CONCAT( UpDir , FileSpec )
  5143.                ENDIF
  5144.             *                                  Build MLink invocation line
  5145.             *
  5146.                Set Mlink = CONCAT( 'MLink port ' , Port )
  5147.                Set Mlink = CONCAT( CONCAT( Mlink , ' speed '  ), BaudRate )
  5148.                Set Mlink = CONCAT( CONCAT( Mlink , ' SM ' ), FileSpec )
  5149.             *
  5150.             *                                  Echo built line to screen
  5151.                Writeln " "
  5152.                Writeln "Invoking MLink as follows:"
  5153.                Writeln Mlink
  5154.                Writeln " "
  5155.             *                                  Echo Mlink line to capture file
  5156.             *
  5157.  
  5158.  
  5159.             PibTerm Script Language Reference Guide              Page 86            PibTerm Script Language Reference Guide              Page 86
  5160.  
  5161.  
  5162.                Writelog "Invoking MLink as follows:"
  5163.                Writelog Mlink
  5164.             *                                  Call MLink
  5165.                Dos Mlink
  5166.             *
  5167.             
  5168.             
  5169.             Example: RECLINK.SCR for receiving files with MegaLink            Example: RECLINK.SCR for receiving files with MegaLink
  5170.             
  5171.             Here is the script RECMLINK.SCR for interfacing MLINK.COM to
  5172.             PibTerm for  purposes  of  receiving  files  from  a  remote
  5173.             system:
  5174.             
  5175.             
  5176.             ***************************************************************************
  5177.             *       R E C M L I N K . S C R --- Script interfacing MLINK to PibTerm   *
  5178.             ***************************************************************************
  5179.             *                                                                         *
  5180.             *    Script:  RecMLink.Scr                                                *
  5181.             *                                                                         *
  5182.             *    Purpose: Interfaces external Megalink driver program MLINK.COM       *
  5183.             *             to PibTerm for receiving files.                             *
  5184.             *                                                                         *
  5185.             *    Invocation:                                                          *
  5186.             *                                                                         *
  5187.             *       Execute "RecMLink"                                                *
  5188.             *                                                                         *
  5189.             *    Remarks:                                                             *
  5190.             *                                                                         *
  5191.             *       This script is designed to be automatically invoked by the        *
  5192.             *       <ALT>R command when MegaLink has been defined as an external      *
  5193.             *       protocol at <ALT>P, F)ile transfer, k) external file transfers.   *
  5194.             *                                                                         *
  5195.             ***************************************************************************
  5196.             *                                                                         *
  5197.             *                                  Baud rate for transfer
  5198.                Declare BaudRate String
  5199.             *                                  Comm port number
  5200.                Declare Port     String
  5201.             *                                  Build Mlink invocation line in this
  5202.                Declare MLink    String
  5203.             *                                  Download directory
  5204.                Declare DownDir  String
  5205.             *                                  Length of download directory
  5206.                Declare L        Integer
  5207.             *                                  Host mode flag
  5208.                Declare HostMode String
  5209.             *                                  Find out if we're in host mode
  5210.             *
  5211.                GetParam 'HP' HostMode
  5212.             *                                  Get download directory.
  5213.             *                                  If in host mode, use host mode upload
  5214.             *                                  directory.
  5215.             *
  5216.  
  5217.  
  5218.             PibTerm Script Language Reference Guide              Page 87            PibTerm Script Language Reference Guide              Page 87
  5219.  
  5220.  
  5221.                IF ( HostMode = ' ' ) THEN
  5222.                   GetParam 'DD' DownDir
  5223.                ELSE
  5224.                   GetParam 'HU' DownDir
  5225.                ENDIF
  5226.             *                                  Get port number
  5227.                GetParam 'PO' Port
  5228.             *                                  Get baud rate
  5229.                GetParam 'BA' BaudRate
  5230.             *                                  Strip final '\' if any from download dir
  5231.                Set L = LENGTH( DownDir )
  5232.             *
  5233.                IF ( Substr( DownDir, L, 1 ) = '\' ) THEN
  5234.                   Set DownDir = Substr( DownDir, 1, L - 1 )
  5235.                ENDIF
  5236.             *                                  Build Mlink invocation line
  5237.             *
  5238.                Set MLink = CONCAT( 'Mlink port ' , Port )
  5239.                Set MLink = CONCAT( CONCAT( MLink , ' speed ' ), BaudRate )
  5240.                Set MLink = CONCAT( CONCAT( MLink , ' rm ') , DownDir )
  5241.             *
  5242.             *                                  Echo MLink line to screen
  5243.                Writeln " "
  5244.                Writeln "Invoking MLink as follows:"
  5245.                Writeln MLink
  5246.                Writeln " "
  5247.             *                                  Echo MLink line to capture file
  5248.             *
  5249.                Writelog "Invoking MLink as follows:"
  5250.                Writelog MLink
  5251.             *                                  Call MLink
  5252.                Dos MLink
  5253.             *
  5254.             
  5255.             
  5256.             Example: SENDZMOD.SCR for sending files with Zmodem            Example: SENDZMOD.SCR for sending files with Zmodem
  5257.             
  5258.             The PibTerm  release materials  already include a definition
  5259.             of Zmodem  as an  external file  transfer protocol using the
  5260.             batch files RECZMOD.BAT and SENDZMOD.BAT to invoke DSZ.COM.                        RECZMOD.BAT     SENDZMOD.BAT                   
  5261.             
  5262.             As an  alternative, the  following presents send and receive
  5263.             scripts for use with DSZ.COM.
  5264.             
  5265.             Here the  script SENDZMOD.SCR  for  interfacing  DSZ.COM  to
  5266.             PibTerm for purposes of sending files to a remote system:
  5267.             
  5268.             
  5269.             ***************************************************************************
  5270.             *       S E N D Z M O D . S C R --- Script interfacing DSZ to PibTerm     *
  5271.             ***************************************************************************
  5272.             *                                                                         *
  5273.             *    Script:  SendZMod.Scr                                                *
  5274.             *                                                                         *
  5275.  
  5276.  
  5277.             PibTerm Script Language Reference Guide              Page 88            PibTerm Script Language Reference Guide              Page 88
  5278.  
  5279.  
  5280.             *    Purpose: Interfaces external Zmodem driver program DSZ.COM           *
  5281.             *             to PibTerm for sending files.                               *
  5282.             *                                                                         *
  5283.             *    Invocation:                                                          *
  5284.             *                                                                         *
  5285.             *       Execute "SendZmod"                                                *
  5286.             *                                                                         *
  5287.             *    Remarks:                                                             *
  5288.             *                                                                         *
  5289.             *       This script is designed to be automatically invoked by the        *
  5290.             *       <ALT>R command when Zmodem has been defined as an external        *
  5291.             *       protocol at <ALT>P, F)ile transfer, k) external file transfers.   *
  5292.             *                                                                         *
  5293.             ***************************************************************************
  5294.             *                                                                         *
  5295.             *                                  File spec for files to transfer
  5296.                Declare  FileSpec String
  5297.             *                                  Baud rate for transfer
  5298.                Declare BaudRate String
  5299.             *                                  Comm port number
  5300.                Declare Port     String
  5301.             *                                  Zmodem block size
  5302.                Declare Block    String
  5303.             *                                  Build DSZ invocation line in this
  5304.                Declare Zmodem   String
  5305.             *                                  'restrict ' for host mode, else null
  5306.                Declare Restrict String
  5307.             *                                  Host mode flag
  5308.                Declare HostMode String
  5309.             *                                  Saves drive/directory we're in now
  5310.                Declare CurDrive String
  5311.                Declare CurDir   String
  5312.             *                                  Host mode download directory =
  5313.             *                                  directory remote callers can download from.
  5314.                Declare UpDir    String
  5315.             *                                  Length of directory name
  5316.                Declare L        Integer
  5317.             *                                  Get port number
  5318.                GetParam 'PO' Port
  5319.             *                                  Get baud rate
  5320.                GetParam 'BA' BaudRate
  5321.             *                                  Get Zmodem block size
  5322.                GetParam 'ZB' Block
  5323.                Set Block = '50'
  5324.             *                                  Get file spec
  5325.                GetParam 'FN' FileSpec
  5326.             *                                  Get host mode flag
  5327.                GetParam 'HP' HostMode
  5328.             *                                  Get directory we're in now
  5329.                GetDir CurDrive CurDir
  5330.             *                                  If host mode, move to host mode
  5331.             *                                  download directory and set restrict.
  5332.                Set Restrict = ''
  5333.             *
  5334.  
  5335.  
  5336.             PibTerm Script Language Reference Guide              Page 89            PibTerm Script Language Reference Guide              Page 89
  5337.  
  5338.  
  5339.                IF ( HostMode <> ' ' ) THEN
  5340.             *
  5341.                   GetParam 'HD' UpDir
  5342.             *                                  Strip final '\' if any from download dir
  5343.                   Set L = LENGTH( UpDir )
  5344.             *
  5345.                   IF ( Substr( UpDir, L, 1 ) = '\' ) THEN
  5346.                      Set UpDir = Substr( UpDir, 1, L - 1 )
  5347.                   ENDIF
  5348.             *                                  Move to download dir
  5349.                   ChDir UpDir
  5350.             *                                  Set restrict if not super-user
  5351.                   IF ( HostMode <> 'S' ) THEN
  5352.                      Set Restrict = 'restrict '
  5353.                   ENDIF
  5354.             *
  5355.                ENDIF
  5356.             *                                  Build DSZ invocation line
  5357.             *
  5358.                Set Zmodem = CONCAT( 'DSZ port ' , Port )
  5359.                Set Zmodem = CONCAT( CONCAT( Zmodem , ' speed '  ), BaudRate )
  5360.                Set Zmodem = CONCAT( CONCAT( Zmodem , ' d z pL' ), Block )
  5361.                Set Zmodem = CONCAT( CONCAT( CONCAT( Zmodem , Restrict ), ' sz ' ), FileSpec )
  5362.             *
  5363.             *                                  Echo built line to screen
  5364.                Writeln " "
  5365.                Writeln "Invoking DSZ as follows:"
  5366.                Writeln Zmodem
  5367.                Writeln " "
  5368.             *                                  Echo Zmodem line to capture file
  5369.             *
  5370.                Writelog "Invoking DSZ as follows:"
  5371.                Writelog Zmodem
  5372.             *                                  Call DSZ
  5373.                Dos Zmodem
  5374.             *                                  Return to original directory if host mode
  5375.                IF ( HostMode <> ' ' ) THEN
  5376.                   Set CurDir = CONCAT( CONCAT( CurDrive , ':\' ), CurDir )
  5377.                   Chdir CurDir
  5378.                ENDIF
  5379.             
  5380.             
  5381.             Example: RECZMOD.SCR for receiving files with Zmodem            Example: RECZMOD.SCR for receiving files with Zmodem
  5382.             
  5383.             Here is  the script  RECZMOD.SCR for  interfacing DSZ.COM to
  5384.             PibTerm for purposes of sending files to a remote system:
  5385.             
  5386.             
  5387.             ***************************************************************************
  5388.             *       R E C Z M O D . S C R --- Script interfacing DSZ to PibTerm       *
  5389.             ***************************************************************************
  5390.             *                                                                         *
  5391.             *    Script:  RecZMod.Scr                                                 *
  5392.             *                                                                         *
  5393.  
  5394.  
  5395.             PibTerm Script Language Reference Guide              Page 90            PibTerm Script Language Reference Guide              Page 90
  5396.  
  5397.  
  5398.             *    Purpose: Interfaces external Zmodem driver program DSZ.COM           *
  5399.             *             to PibTerm for receiving files.                             *
  5400.             *                                                                         *
  5401.             *    Invocation:                                                          *
  5402.             *                                                                         *
  5403.             *       Execute "RecZmod"                                                 *
  5404.             *                                                                         *
  5405.             *    Remarks:                                                             *
  5406.             *                                                                         *
  5407.             *       This script is designed to be automatically invoked by the        *
  5408.             *       <ALT>R command when Zmodem has been defined as an external        *
  5409.             *       protocol at <ALT>P, F)ile transfer, k) external file transfers.   *
  5410.             *                                                                         *
  5411.             ***************************************************************************
  5412.             *                                                                         *
  5413.             *                                  Baud rate for transfer
  5414.                Declare BaudRate String
  5415.             *                                  Comm port number
  5416.                Declare Port     String
  5417.             *                                  Build DSZ invocation line in this
  5418.                Declare Zmodem   String
  5419.             *                                  Saves drive/directory we're in now
  5420.                Declare CurDrive String
  5421.                Declare CurDir   String
  5422.             *                                  Download directory
  5423.                Declare DownDir  String
  5424.             *                                  Length of download directory
  5425.                Declare L        Integer
  5426.             *                                  Host mode flag
  5427.                Declare HostMode String
  5428.             *                                  "Restrict" for host mode, else null
  5429.                Declare Restrict String
  5430.             *                                  Get directory we're in now
  5431.                GetDir CurDrive CurDir
  5432.             *                                  Get port number
  5433.                GetParam 'PO' Port
  5434.             *                                  Get baud rate
  5435.                GetParam 'BA' BaudRate
  5436.             *                                  Find out if we're in host mode
  5437.             *
  5438.                GetParam 'HP' HostMode
  5439.             *                                  Get download directory.
  5440.             *                                  If in host mode, use host mode upload
  5441.             *                                  directory.
  5442.             *
  5443.                Set Restrict = ''
  5444.             *
  5445.                IF ( HostMode = ' ' ) THEN
  5446.                   GetParam 'DD' DownDir
  5447.                ELSE
  5448.                   GetParam 'HU' DownDir
  5449.                   IF ( HostMode = 'N' ) THEN
  5450.                      Set Restrict = 'restrict '
  5451.                   ENDIF
  5452.  
  5453.  
  5454.             PibTerm Script Language Reference Guide              Page 91            PibTerm Script Language Reference Guide              Page 91
  5455.  
  5456.  
  5457.                ENDIF
  5458.             *                                  Strip final '\' if any from download dir
  5459.                Set L = LENGTH( DownDir )
  5460.             *
  5461.                IF ( Substr( DownDir, L, 1 ) = '\' ) THEN
  5462.                   Set DownDir = Substr( DownDir, 1, L - 1 )
  5463.                ENDIF
  5464.             *                                  Move to download directory
  5465.                Chdir     DownDir
  5466.             *                                  Build DSZ invocation line
  5467.             *
  5468.                Set Zmodem = CONCAT( 'DSZ port ' , Port )
  5469.                Set Zmodem = CONCAT( CONCAT( Zmodem , ' speed ' ), BaudRate )
  5470.                Set Zmodem = CONCAT( CONCAT( CONCAT( Zmodem , ' d ' ), Restrict ), 'rz -y')
  5471.             *
  5472.             *                                  Echo Zmodem line to screen
  5473.                Writeln " "
  5474.                Writeln "Invoking DSZ as follows:"
  5475.                Writeln Zmodem
  5476.                Writeln " "
  5477.             *                                  Echo Zmodem line to capture file
  5478.                Writelog "Invoking DSZ as follows:"
  5479.                Writelog Zmodem
  5480.             *                                  Call DSZ
  5481.                Dos Zmodem
  5482.             *                                  Return to original directory
  5483.             *
  5484.                Set CurDir = CONCAT( CONCAT( CurDrive , ':\' ), CurDir )
  5485.             *
  5486.                Chdir CurDir
  5487.