home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 339.lha / SerMod / rexx / cis.rexx < prev    next >
OS/2 REXX Batch file  |  1990-02-08  |  3KB  |  134 lines

  1.  /* cis.rexx - call Compuserve and log on. */
  2. options results
  3.  
  4. CTRLC = '03'x
  5. BELL = '07'x
  6. CLS = '0c'x
  7. cmdtimes = 0
  8. exiting = 0
  9. id = '7nnnn-nnnn'
  10. password = 'pass-word'
  11. serial = 'ROBBS_ser'
  12. display = 'ROBBS_disp'
  13. keepgoing = TRUE
  14. dialstring = 'ATDT 737-2452'
  15.  
  16. ports = showlist('p')
  17. if pos(serial, ports) = 0 then    address command 'run SerMod'
  18. if pos(display, ports) = 0 then    address command 'run DispMod'
  19.  
  20. if(checkport(serial)) = 0 then    call dumpout
  21. if(checkport(display)) = 0 then    call dumpout
  22.  
  23. address 'ROBBS_ser'
  24.   match 0 'CONNECT 2400'
  25.   match 1 'ID'
  26.   match 2 'Password'
  27.     match 3 'NO CARRIER'
  28.     match 4 'BUSY'
  29.     match 5 'NO DIALTONE'
  30.   scan on
  31.  
  32.   connect 'ROBBS_disp TEXT'
  33.   call openport('ROBBS_ctrl')
  34.  
  35. address 'ROBBS_disp'
  36.   title 'Compuserve'
  37.   connect 'ROBBS_ser SEND'
  38.  
  39. address 'ROBBS_ser'
  40.     lsend dialstring
  41.  
  42. do while keepgoing = TRUE
  43.   packet = getpkt('ROBBS_ctrl')
  44.   do while packet = '00000000'x
  45.     call waitpkt('ROBBS_ctrl')
  46.     packet = getpkt('ROBBS_ctrl')
  47.   end
  48.   arg0 = getarg(packet)
  49.   arg1 = getarg(packet,1)
  50.   call reply(packet,0)
  51.   select
  52.     when arg0 = 'MATCH' then call matchit(arg1)
  53.     when arg0 = 'FKEY' then call fkey(arg1+1)
  54.     when arg0 = 'HELP' then call dumpout
  55.     otherwise nop
  56.   end
  57. end
  58.  
  59. exit 0
  60.  
  61. dumpout:
  62. call delay(50)
  63. if checkport(display) = 1 then address 'ROBBS_disp' die
  64. if checkport(serial) = 1 then address 'ROBBS_ser' die
  65. say
  66. do while pos(display, ports) || pos(serial, ports) > 0
  67.  call delay(5)
  68.  ports = showlist('p')
  69. end
  70. say 'All Done.'
  71. exit(0)
  72.  
  73. checkport: procedure   expose serial display
  74.   parse arg port
  75.   do i = 1 to 10
  76.     ports = showlist('p')
  77.     if pos(port, ports) > 0 then return 1
  78.     else call delay(20)
  79.   end
  80.   return(0)
  81.  
  82. fkey: procedure expose exiting keepgoing
  83.   parse arg num
  84.   address 'ROBBS_ser'
  85.   select
  86.     when num = 1 then lsend '-larry'
  87.     when num = 2 then lsend '/ex' || '0a'x || 's'
  88.     when num = 3 then lsend 'ust'
  89.     when num = 4 then nop
  90.     when num = 5 then nop
  91.     when num = 6 then lsend '/ust co'
  92.     when num = 7 then lsend '/ust'
  93.     when num = 8 then lsend '/ust all'
  94.     when num = 9 then lsend '/sta'
  95.     when num = 10 then do
  96.       exiting = exiting + 1
  97.       if exiting > 3 then keepgoing = FALSE
  98.       end
  99.     end
  100.   return(0)
  101.  
  102. matchit: procedure expose CTRLC CLS BELL id password dialstring
  103.   address 'ROBBS_ser'
  104.   parse arg matchnum
  105.   now = time()
  106.   select
  107.     when matchnum = 0 then do
  108.         address 'ROBBS_disp' text BELL
  109.         address 'ROBBS_ser'
  110.         delay(50)
  111.       send CTRLC
  112.       match 0
  113.       match 3
  114.       match 4
  115.       end
  116.     when matchnum = 1 then do
  117.       lsend id
  118.       match 1
  119.       end
  120.     when matchnum = 2 then do
  121.       lsend password
  122.       match 2
  123.       end
  124.     when matchnum = 3 | matchnum = 4 | matchnum = 5 then do
  125.             delay(50 * 10)
  126.             address 'ROBBS_disp' text CLS
  127.             address 'ROBBS_ser' lsend dialstring
  128.             end
  129.         otherwise
  130.             nop
  131.     end
  132.   return(0)
  133.  
  134.