home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 January / PCO0197.ISO / filesbbs / os2 / isdnpm27.arj / LOGIN2.FNC < prev    next >
Encoding:
Text File  |  1996-06-02  |  3.5 KB  |  112 lines

  1. /***************************************************************************/
  2. call RxFuncAdd 'SysSleep','RexxUtil','SysSleep'
  3.  
  4. ARG Channel LocalIp HostIp Netmask DefaultIp
  5.  
  6. cr   = '0d'x
  7. crlf = '0d0a'x
  8. remain_buffer  = ''
  9. waitfor_buffer = ''
  10.  
  11. say 'Line       ' Channel
  12. say 'LocalIp    ' LocalIp
  13. say 'HostIp     ' HostIp
  14. say 'Netmask    ' Netmask
  15. say 'DefaultIp  ' HostIp
  16.  
  17.  
  18. rc = ISDNWRITE(Channel,cr)
  19. call waitfor ">" , 5
  20. rc = ISDNWRITE(Channel,'login'||cr)
  21. call waitfor  "id" , 5
  22. rc = ISDNWRITE(Channel,'username'||cr)
  23. call waitfor  "ord" , 5
  24. rc = ISDNWRITE(Channel,'password'||cr)
  25. call waitfor ">" , 5
  26. rc = ISDNWRITE(Channel,'slip'||cr)
  27.  
  28. call flush_receive "echo"
  29. call flush_receive "echo"
  30.  
  31. /* must not be changed ! */
  32.  
  33. say 'REXX DATAMODE'
  34. rc = ISDNDATAMODE(Channel)
  35. say 'REXX DATAMODE END '
  36.  
  37.  
  38. exit 0
  39.  
  40. /*----------------------------------------------------------------------*/
  41. /*  waitfor( waitforstring , [timeout] )                                */
  42. /*......................................................................*/
  43. /*                                                                      */
  44. /*                                                                      */
  45. /*                                                                      */
  46. /*----------------------------------------------------------------------*/
  47.  
  48. waitfor:
  49.  
  50.     parse arg waitstring , timeout
  51.     if timeout = '' then
  52.         timeout = 20        /* wait 20 sec */
  53.     waitfor_buffer = '' ; done = -1 ; curpos = 1
  54.     do while (( done = -1) & (timeout > 0))
  55.         if (remain_buffer \= '') then do
  56.             line = remain_buffer
  57.             remain_buffer = ''
  58.         end
  59.         else do
  60.             line = ISDNREAD(Channel)
  61.             if Substr(line,1,1)<>'00'x then do
  62.               say 'ISDNREAD-Fehler'
  63.               signal failure
  64.             end
  65.             line=Substr(line,2)
  66.         end
  67.         waitfor_buffer = waitfor_buffer || line
  68.         index = pos(waitstring,waitfor_buffer)
  69.         if (index > 0 ) then do
  70.             remain_buffer = substr(waitfor_buffer,index+length(waitstring))
  71.             waitfor_buffer = delstr(waitfor_buffer,index+length(waitstring))
  72.             done = 0
  73.         end
  74.         call charout,substr(waitfor_buffer,curpos)
  75.         curpos = length(waitfor_buffer)+1
  76.         timeout = timeout - 1
  77.         call SysSleep 1
  78.     end
  79.     if (timeout = 0 ) then do
  80.         say 'WAITFOR : timed out '
  81.     end
  82.     RC = done
  83. return RC
  84. /*----------------------------------------------------------------------*/
  85. /*  flush_receive()                                                     */
  86. /*......................................................................*/
  87. /*                                                                      */
  88. /*                                                                      */
  89. /*                                                                      */
  90. /*----------------------------------------------------------------------*/
  91. flush_receive:
  92.  
  93.     parse arg echo
  94.     /* if echoing the flush - take care of waitfor remainig buffer */
  95.     if( echo \= '' ) && (length(remain_buffer) > 0 ) then do
  96.         call charout, remain_buffer
  97.     end
  98.     cx = 20
  99.     line = ''
  100.     do while (line \= '') & (cx > 0 )
  101.         line = ISDNREAD(Channel)
  102.         if Substr(line,1,1)<>'00'x then do
  103.           say 'ISDNREAD-Fehler'
  104.           signal failure
  105.         end
  106.         line=Substr(line,2)
  107.         if echo \= '' then
  108.             call charout,line
  109.         cx = cx - 1
  110.     end
  111.     return
  112.