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