home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / FileMover / Dopus5 / dOPUS5-DMS-RexxScripts.lzx / DMS.dopus5 next >
Encoding:
Text File  |  1995-06-07  |  2.5 KB  |  109 lines

  1. /*
  2.   $VER: DMS.dopus5 1.0 (06.06.95)
  3.   Written by Odia The Ultimate.
  4.   ARexx script for DOpus 5 to create a dms file with progress indication.
  5.   Call as 'REXX:DMS.dopus5 {Qp}'.
  6. */
  7.  
  8. options results
  9.  
  10. lf='0a'x
  11.  
  12. parse arg portname .
  13.  
  14. if portname~=='' then address value portname
  15. else exit
  16.  
  17. lister query source
  18. handle=word(result,1)
  19. lister query handle path
  20. source=result
  21. if source=='RESULT' then do
  22.   dopus request '"No Drive Selected!" _OK'
  23.   exit
  24. end
  25.  
  26. lister query dest
  27. handle=word(result,1)
  28. lister query handle path
  29. dest=result
  30. if dest=='RESULT' then do
  31.   dopus request '"No Destination Directory Selected!" _OK'
  32.   exit
  33. end
  34.  
  35. dopus request '"Please insert disk in drive "'source||lf'_OK|_Cancel'
  36. if rc==0 then exit
  37.  
  38. dopus getstring '"Please enter DMS archive name" 8 "" _OK|_Cancel'
  39. if rc==1 then exit
  40. dmsname=result
  41. dmsname=dmsname||.dms
  42. dmsfile=dest||dmsname
  43.  
  44.  
  45. dopus request '"Select Crunch Mode" _NONE|HEAVY_1|HEAVY_2|_BEST'
  46. cmrc=rc
  47. if cmrc==0 then cmode=BEST
  48. if cmrc==1 then cmode=NONE
  49. if cmrc==2 then cmode=HEAVY1
  50. if cmrc==3 then cmode=HEAVY2
  51. exit
  52.  
  53. lister set handle busy on
  54. lister set handle path dest
  55. lister set handle progress 80 'Creating 'dmsname
  56.  
  57. address command 'Run >NIL: <NIL: DMS <NIL: >PIPE:dmsout READ' dmsfile 'FROM' source 'CMODE' cmode
  58. address command 'Status >T:ProcessNo COMMAND DMS'
  59. call open('temp','T:ProcessNo','r')
  60. process=readln('temp')
  61. close('temp')
  62. address command 'Delete >NIL: T:ProcessNo QUIET'
  63.  
  64. nomessage=1
  65. errorreport=''
  66. buffer=''
  67. call open('dmsout','PIPE:dmsout','r')
  68.  
  69. do until eof('dmsout')
  70.   buffer=buffer||readch('dmsout',25)
  71.   here=verify(buffer,'0a0d'x,'m')
  72.   if here>0 then do
  73.     line=left(buffer,here-1)
  74.     if nomessage&left(line,7)='No Disk' then do
  75.       lister set handle progress name 'Insert disk in' dest
  76.       nomessage=0
  77.     end
  78.     parse var line ' ' line
  79.     buffer=substr(buffer,here+1)
  80.     if pos('ERROR',upper(line))>0 then do
  81.       errorreport=errorreport||lf||line
  82.       say '07'x
  83.     end
  84.     if pos('Packing',line)>0 then do
  85.       track=substr(line,18,2)
  86.       lister set handle progress count track+1
  87.       lister set handle progress name 'Packing Track' track
  88.       lister query handle abort
  89.       if result then do
  90.         address command 'Break' process 'C'
  91.         lister set handle busy off
  92.         lister set handle title 'DMS aborted...'
  93.         lister refresh handle full
  94.         exit
  95.       end
  96.     end
  97.   end
  98. end
  99.  
  100. call close('dmsout')
  101.  
  102. lister set handle busy off
  103. lister read handle dest force
  104. lister set handle title dest
  105. lister refresh handle full
  106.  
  107. if errorreport~=='' then
  108.   dopus request '"DMS Error Report'||lf||errorreport'" OK'
  109.