home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / emis14p.zip / tausch.cmd < prev    next >
OS/2 REXX Batch file  |  1995-02-24  |  6KB  |  199 lines

  1. /* TAUSCH.CMD -- wö'94
  2. ------------------------------------------------------------------------------
  3. Dieses Script ist Public domain.
  4.  
  5. Syntax: TAUSCH Maus Nummer "User" "Password"
  6.  
  7. Fehlercodes: 0 - Alles OK
  8.              1 - fehlerhafte Syntax
  9.              2 - Modem nicht ansprechbar
  10.              3 - Fehler beim Senden des Infiles
  11.              4 - Fehler beim Empfangen des Outfiles
  12.              10 - Sonstiger Fehler
  13.  
  14. Änderungen:
  15. (24.2.1995) Carsten Härle: rxtimeout auf 2000 gesetzt
  16. (6.1.1995) Carsten Härle, Werner Hunger: Verbesserte Parameterübergabe.
  17. (18.1.1995) Carsten Härle: Sichererer Protokollaufruf und Entfernung von Controllcodes.
  18. (19.1.1995) Carsten Härle: Unterstützung für Porthandle bei externen Protokollen.
  19. (21.1.1995) Carsten Härle: Probleme mit langsamen Modems behoben.
  20. (22.1.1995) Werner Hunger: Vor dem Wählen explizit auflegen.
  21. ------------------------------------------------------------------------------
  22. */
  23.  
  24. /*
  25. Hier können diverse Anpassungen vorgenommen werden.
  26. Muß bei einem externen Protokoll nicht der Portname sondern
  27. der Porthandle übergeben werden, kann stattdessen der
  28. String "<porthandle>" (case-sensitive) geschrieben werden. 
  29. Dieser wird später automatisch ersetzt.
  30. */
  31.  
  32. maustimeout  = 60
  33. mauspause    = 120
  34. portname     = 'COM2'
  35. baud         = 38400
  36. ftpsend      = 'cexyz2 /p<porthandle> /l'baud '/b14400 /sz infile.zip'
  37. ftpreceive   = 'cexyz2 /p<porthandle> /l'baud '/b14400 /rz'
  38. /* ftpsend      = 'p -device' portname '-speed 14400' '-send infile.zip'
  39. ftpreceive  = 'p -device' portname '-speed 14400' '-receive' */
  40.  
  41. data         = 8
  42. parity       = 'N'
  43. stop         = 1
  44. writelim     = 50
  45. readlim      = 50
  46. rxtimeout    = 2000
  47. flags1       = '00001001'
  48. flags2       = '10100000'
  49. flags3       = '11010010'
  50. errchar      = '00'
  51. brkchar      = '00'
  52. xonchar      = '11'
  53. xoffchar     = '13'
  54. enhparms     = '00000010'
  55.  
  56. porthandle   = ''
  57.  
  58. true         = 1
  59. false        = 0
  60.  
  61. regular      = 2
  62. critical     = 3
  63. normallvl    = 0
  64.  
  65. cr           = D2C(13)
  66. crlf         = cr''D2C(10)
  67. ZmodENQUp = '**' || x2c('18') || 'B01'
  68. ZmodENQDown = '**' || x2c('18') || 'B00'
  69.  
  70.  
  71. /* Vorbereitung */
  72. call on error
  73.  
  74. Call ParseArguments arg(1)
  75. if param.0 \= 4 then do
  76.   say 'Fehler: Nur' param.0 'Parameter übergeben'
  77.   say 'Syntax: TAUSCH Maus Nummer User Password'
  78.   say ''
  79.   say 'Also beispielsweise: TAUSCH HD 477275 "Werner Hunger" xyz'
  80.   exit 1
  81. end
  82. mausname = param.1
  83. mausnummer = param.2
  84. maususer = param.3
  85. mauspassword = param.4
  86.  
  87. call rxfuncadd 'rxasyncloadfuncs', 'rxasync', 'rxasyncloadfuncs'
  88. call rxasyncloadfuncs
  89.  
  90. call rxasyncpriority critical, normallvl
  91. call rxasyncopen portname, 'porthandle'
  92. call rxasyncsetlnctrl porthandle, baud, data, parity, stop
  93. call rxasyncsetdcbinfo porthandle, writelim, readlim, flags1, flags2, flags3, errchar, brkchar, xonchar, xoffchar
  94. call rxasyncsetenhparm porthandle, enhparms
  95. if stream('tausch.log', 'c', 'query exists') > '' then 'del tausch.log'
  96.  
  97. /* Ersetze "<porthandle>" in den Strings ftpsend und ftpreceive durch den richtigen porthandle */
  98. parse value ftpsend with a '<porthandle>' b
  99. if b \= "" Then ftpsend = a || porthandle || b
  100. parse value ftpreceive with a '<porthandle>' b
  101. if b \= "" Then ftpreceive = a || porthandle || b
  102.  
  103. /* Modem-Reset */
  104. call sende 'ATZ'||cr
  105. antwort = warteauf('OK')
  106. if antwort = '' then do
  107.   say 'Modem nicht ansprechbar! Oder etwa ausgeschaltet?'
  108.   exit 2
  109. end
  110.  
  111. /* schwierig: wählen ;-) */
  112. verbindung = false
  113. do while verbindung == false
  114.   call sende cr
  115.   call sende 'ATDP'||mausnummer||cr
  116.   say 'Wähle '||mausnummer||', Timeout nach '||maustimeout||' Sekunden ...'
  117.   call warteauf 'ATDP'
  118.  
  119.   call time 'Reset'
  120.  
  121.   do until (time('Elapsed') > maustimeout) | (verbindung == true)
  122.     s = warteauf('')
  123.     if pos('CONNECT', s) > 0 then verbindung = true
  124.     if pos('NO', s) + pos('OUT OF', s) + pos('DELAY', s) + pos('BUSY', s) > 0 then leave
  125.   end
  126.  
  127.   if verbindung == false then do
  128.     say 'Warte '||mauspause||' Sekunden ...'
  129.     call rxasyncsleep mauspause * 1000
  130.   end
  131. end
  132.  
  133.  
  134. /* jetzt geht's los ... */
  135. rxtimeout = 2000
  136.  
  137. do until pos('Benutzer?', warteauf('Benutzer?')) > 0; end
  138. call sende 'MausTausch'||maususer||cr||mauspassword||cr||'z'
  139.  
  140. do until pos(ZmodENQUp, warteauf(ZModENQUp)) > 0 ; end
  141. ' 'ftpsend
  142. if rc <> 0 then exit 3
  143.  
  144. do until pos(ZModENQDown, warteauf(ZModENQDown)) > 0 ; end
  145. ' 'ftpreceive
  146. if rc <> 0 then exit 4
  147.  
  148. call warteauf 'NO CARRIER'
  149.  
  150. /* Aufräumen */
  151. call rxasyncclose porthandle
  152. call rxasyncpriority regular, normallvl
  153. call rxasyncdropfuncs
  154. call stream 'tausch.log' 'c' 'close'
  155. exit 0
  156.  
  157.  
  158. /* interne Funktionen */
  159. sende:
  160. parse arg eingabe
  161.   uebrig = ''
  162.   rc = rxasyncwrite(porthandle, 0, eingabe, 'uebrig')
  163.   if rc <> 0 then say 'Modem nahm 'uebrig' Zeichen nicht an!'
  164. return
  165.  
  166.  
  167. warteauf:
  168. parse arg trigger
  169.   antwort = ''
  170.   do until (code <> 0) | (pos(trigger, antwort) > 0) | (trigger = '')
  171.     code = rxasyncread(porthandle, 0, rxtimeout, 'antwort')
  172.     call charout , antwort
  173.     call charout 'tausch.log', antwort
  174.   end
  175. return antwort
  176.  
  177.  
  178. ParseArguments:
  179. parse arg line
  180. i = 0
  181. do while line  \= ""
  182.     parse value line with par rest
  183.     if pos('"', par) > 0 then parse value line with '"' par '"' rest
  184.     line = rest
  185.     i = i + 1
  186.     param.i = par
  187. End
  188. param.0 = i
  189. return
  190.  
  191.  
  192. /* Für den Fall aller Fälle */
  193. error:
  194.    call rxasyncclose porthandle       /* Verbindung trennen */
  195.    call rxasyncpriority regular, normallvl
  196.    call rxasyncdropfuncs
  197.    call stream 'tausch.log' 'c' 'close'
  198.    exit 10
  199.