home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / comm / bbbbs-7.2.lha / BBBBS / BBBBS72.lha / rexx / ArcAlpha.rexx < prev    next >
OS/2 REXX Batch file  |  1994-02-12  |  7KB  |  287 lines

  1. /*          $VER: ArcAlpha.rexx 6.7 (12.2.94)
  2. archives user defined alphafilelist into file in users email
  3.  receives its arguments from rexxDoors/Make_BrowseList.rexx
  4.    © 1990-94 Richard Lee Stockton - FREELY DISTRIBUTABLE
  5. */
  6.  
  7. CALL TIME('R')
  8. SIGNAL ON ERROR
  9. SIGNAL ON SYNTAX
  10. OPTIONS FAILAT 999999
  11.  
  12. PARSE ARG name lastbrowse alphaflag libflag numlist
  13. lastbrowse=STRIP(lastbrowse)
  14.  
  15. CALL CLOSE(STDOUT)
  16. CALL OPEN(STDOUT,'RAM:ArcAlpha.STDOUT','W')
  17. SAY STRIP(SUBSTR(SOURCELINE(1),3))
  18. SAY
  19.  
  20. IF ~DATATYPE(lastbrowse,'N') | name='' | numlist='' THEN
  21.   CALL GETOUT(20)
  22.  
  23. figarg='s:CONFIG.BBS'
  24. IF ~EXISTS(figarg) THEN figarg='BBS:BBS_TEXT/CONFIG.BBS'
  25. x=OPEN(f,figarg,'R')
  26. IF x=0 THEN
  27.   DO
  28.     SAY 's:CONFIG.BBS and BBS:BBS/CONFIG.BBS are both missing!'
  29.     CALL GETOUT(21)
  30.   END
  31. lynes.=''
  32. DO i=1 TO 33
  33.   lynes.i=READLN(f)
  34. END
  35. CALL CLOSE(f)
  36.  
  37. compos=POS('/*',lynes.1)
  38. IF compos>0 THEN lynes.1=LEFT(lynes.1,compos-1)
  39. bbsname = STRIP(lynes.1)
  40.  
  41. sysop   = WORD(lynes.2,1)
  42.  
  43. bbspath = WORD(lynes.6,1)
  44. IF ~EXISTS(bbspath) THEN
  45.   DO
  46.     SAY bbspath 'does not exist!'
  47.     CALL SETCLIP('BBS_ALPHA')
  48.     CALL GETOUT(22)
  49.   END
  50. testchar=RIGHT(bbspath,1)
  51. IF testchar~='/' & testchar~=':' THEN bbspath=bbspath'/'
  52.  
  53. DO i=1
  54.   IF GETCLIP('BBS_ALPHA'i)='' THEN  /* info clip for external STOP */
  55.     DO
  56.       CALL SETCLIP('BBS_ALPHA'i,name)
  57.       clipnum=i
  58.       LEAVE i
  59.     END
  60. END
  61. CALL PRAGMA('P',-3)         /* lower the priority of this task */
  62.  
  63. extension=WORD(lynes.32,1)
  64. arccom=lynes.33
  65. compos=POS('/*',lynes.33)
  66. IF compos>0 THEN lynes.33=LEFT(lynes.33,compos-1)
  67. arccom=STRIP(lynes.33)
  68. IF LEFT(extension,1)~='.' THEN
  69.   DO
  70.     extension='.lzh'
  71.     arccom='lharc -m m'
  72.   END
  73.  
  74. filepath=bbspath'EmailFiles/'name
  75. CALL MAKEDIR(filepath)
  76. x=OPEN(f,bbspath'Numbers/LastMail','R')
  77. IF x~=0 THEN lastm=READLN(f)+1
  78. CALL CLOSE(f)
  79. ADDRESS COMMAND 'ECHO >'bbspath'Numbers/LastMail 'lastm
  80. alphaname=filepath'/BBBBS_'lastm
  81.  
  82. filelist.=''
  83. filelist.0=0
  84. IF alphaflag='D' THEN
  85.   DO
  86.     x=OPEN(f,bbspath'Lists/Files','R')
  87.     IF x=0 THEN CALL GETOUT(24)
  88.     DO i=1
  89.       line=READLN(f)
  90.       IF EOF(f) THEN LEAVE i
  91.       num=WORD(line,1)
  92.       IF ~DATATYPE(num,'W') THEN ITERATE i
  93.       filelist.num=WORD(line,3)
  94.       IF num>filelist.0 THEN filelist.0=num
  95.     END
  96.     CALL CLOSE(f)
  97.   END
  98.  
  99. alphalist.=''
  100. x=OPEN(f,bbspath'Lists/Files.ALPHA','R')
  101. IF x=0 THEN CALL GETOUT(24)
  102. DO i=1
  103.   line=READLN(f)
  104.   IF EOF(f) THEN LEAVE i
  105.   alphalist.i=line
  106.   IF alphaflag='D' THEN
  107.     DO
  108.       num=WORD(line,3)
  109.       filelist.num.0=i
  110.     END
  111. END
  112. CALL CLOSE(f)
  113. alphalist.0=i-1
  114. numba=alphalist.0
  115.  
  116. x=OPEN(a,alphaname,'W')
  117. IF x=0 THEN CALL GETOUT(25)
  118. title='=' bbsname
  119. IF alphaflag='A' THEN title=title 'alphabetical'
  120. ELSE title=title 'newest to oldest'
  121. title=title', single-line file descriptions'
  122. CALL WRITELN(a,title)
  123. CALL WRITELN(a,'= Custom archived for' name'  'DATE() TIME('C'))
  124. IF libflag='A' THEN
  125.   DO
  126.     CALL WRITELN(a,'')
  127.     CALL WRITELN(a,'Filename          Bytes File# Library         KeyWords')
  128.     CALL WRITELN(a,LEFT('=',77,'='))
  129.   END
  130. CALL CLOSE(a)
  131.  
  132. x=OPEN(f,bbspath'Email/'name'/BBBBS.'lastm,'W')
  133. IF x=0 THEN CALL GETOUT(28)
  134. CALL WRITELN(f,' Mail: 'lastm'   FILE: BBBBS_'lastm)
  135. CALL WRITELN(f,' From: BBBBS')
  136. CALL WRITELN(f,'   To: 'name)
  137. CALL WRITELN(f,' Subj: AlphaList')
  138. CALL WRITELN(f,' Date: 'DATE('W') DATE() TIME('C'))
  139. CALL WRITELN(f,LEFT('=',75,'='))
  140. CALL WRITELN(f,'Here are the single line file descriptions you requested.')
  141. CALL WRITELN(f,'The collection process was interrupted.')
  142. CALL CLOSE(f)
  143.  
  144. IF alphaflag='A' THEN
  145.   DO
  146.     IF libflag='L' THEN
  147.       DO i=1 TO WORDS(numlist)
  148.         CALL write_alist(WORD(numlist,i))
  149.       END
  150.     ELSE CALL write_alist(numlist)
  151.   END
  152. ELSE
  153.   DO
  154.     IF libflag='L' THEN
  155.       DO i=1 TO WORDS(numlist)
  156.         CALL write_dlist(WORD(numlist,i))
  157.       END
  158.     ELSE CALL write_dlist(numlist)
  159.   END
  160.  
  161. IF WORD(STATEF(alphaname),2)<40 THEN CALL GETOUT(26)
  162. CALL PRAGMA('P',0)         /* normal priority */
  163. ADDRESS COMMAND arccom alphaname||extension alphaname
  164. IF ~EXISTS(alphaname||extension) THEN CALL GETOUT(27)
  165. CALL PRAGMA('P',-3)
  166. x=OPEN(f,bbspath'Email/'name'/BBBBS.'lastm,'W')
  167. IF x=0 THEN CALL GETOUT(28)
  168. CALL WRITELN(f,' Mail: 'lastm'   FILE: BBBBS_'lastm||extension)
  169. CALL WRITELN(f,' From: BBBBS')
  170. CALL WRITELN(f,'   To: 'name)
  171. CALL WRITELN(f,' Subj: AlphaList')
  172. CALL WRITELN(f,' Date: 'DATE('W') DATE() TIME('C'))
  173. CALL WRITELN(f,LEFT('=',75,'='))
  174. CALL WRITELN(f,'Here are the single line file descriptions you requested.')
  175. t=(.5+TIME('E'))%1
  176. min=t%60
  177. hrs=min%60
  178. min=min//60
  179. sec=t//60
  180. temp='It took'
  181. IF hrs>1 THEN temp=temp hrs 'hours'
  182. ELSE IF hrs=1 THEN temp=temp '1 hour'
  183. IF min>1 THEN temp=temp min 'minutes'
  184. ELSE IF min=1 THEN temp=temp '1 minute'
  185. IF sec=1 THEN temp=temp '1 second'
  186. ELSE IF sec>0 THEN temp=temp sec 'seconds'
  187. temp=temp 'to compile this list.'
  188. CALL WRITELN(f,temp)
  189. CALL CLOSE(f)
  190.  
  191. newmess='Your archived alphabetical filelist is waiting in Email.'
  192. IF GETCLIP('BBS_level')~='' & WORD(GETCLIP('BBS_lastcaller'),1)=name THEN
  193.   DO
  194.     oldmess=GETCLIP('BBS_MESSAGE')
  195.     IF oldmess~='' THEN oldmess=oldmess||'0D0A'x
  196.     CALL SETCLIP('BBS_MESSAGE',oldmess||newmess)
  197.   END
  198. IF GETCLIP('BBS_LOCAL')=name THEN CALL SETCLIP('BBS_LOCAL_MSG',newmess)
  199. CALL GETOUT(0)
  200. EXIT
  201.  
  202.  
  203. write_alist:
  204. ARG nlist
  205. nlist=STRIP(nlist)
  206. x=OPEN(a,alphaname,'A')
  207. IF x=0 THEN RETURN
  208. IF libflag='L' THEN
  209.   DO
  210.     CALL WRITELN(a,'')
  211.     CALL WRITELN(a,'File Library' nlist)
  212.     CALL WRITELN(a,'Filename          Bytes File# Library         KeyWords')
  213.     CALL WRITELN(a,LEFT('=',77,'='))
  214.   END
  215. count=0
  216. DO j=1 TO alphalist.0
  217.   IF j//5=0 THEN
  218.     DO
  219.       t=GETCLIP('BBS_STOP_ALPHA'clipnum)
  220.       IF t~='' THEN CALL cleanup(t)
  221.     END
  222.   IF WORD(alphalist.j,3)<=lastbrowse THEN ITERATE j
  223.   IF FIND(nlist,WORD(alphalist.j,4))=0 THEN ITERATE j
  224.   CALL WRITELN(a,alphalist.j)
  225.   count=count+1
  226. END
  227. CALL WRITELN(a,' 'count' files.')
  228. CALL WRITELN(a,'')
  229. CALL CLOSE(a)
  230. RETURN
  231.  
  232.  
  233. write_dlist:
  234. ARG nlist
  235. nlist=STRIP(nlist)
  236. x=OPEN(a,alphaname,'A')
  237. IF x=0 THEN RETURN
  238. IF libflag='L' THEN
  239.   DO
  240.     CALL WRITELN(a,'')
  241.     CALL WRITELN(a,'File Library' nlist)
  242.     CALL WRITELN(a,'Filename          Bytes File# Library         KeyWords')
  243.     CALL WRITELN(a,LEFT('=',77,'='))
  244.   END
  245. count=0
  246. DO k=filelist.0 TO 1 BY -1
  247.   IF filelist.k='' THEN ITERATE k
  248.   IF k//5=0 THEN
  249.     DO
  250.       t=GETCLIP('BBS_STOP_ALPHA'clipnum)
  251.       IF t~='' THEN CALL cleanup(t)
  252.     END
  253.   IF k<=lastbrowse THEN LEAVE k
  254.   j=filelist.k.0
  255.   IF ~DATATYPE(j,'W') THEN ITERATE k
  256.   IF FIND(nlist,WORD(alphalist.j,4))=0 THEN ITERATE k
  257.   CALL WRITELN(a,alphalist.j)
  258.   count=count+1
  259. END
  260. CALL WRITELN(a,' 'count' files.')
  261. CALL WRITELN(a,'')
  262. CALL CLOSE(a)
  263. RETURN
  264.  
  265.  
  266. cleanup:
  267. ARG t2 .
  268. CALL CLOSE(a)
  269. SAY 'User aborted!'
  270. IF t2='DELETE' THEN ADDRESS COMMAND 'c:delete' alphaname
  271. CALL GETOUT(0)
  272. RETURN
  273.  
  274.  
  275. ERROR:
  276. SYNTAX:
  277. GETOUT:
  278. ARG errorout 
  279. CALL SETCLIP('BBS_BROWSE')
  280. CALL SETCLIP('BBS_ALPHA'clipnum)
  281. CALL SETCLIP('BBS_STOP_ALPHA'clipnum)
  282. IF errorout>0 THEN SAY 'ArcAlpha error' errorout'!'
  283. EXIT(errorout)
  284.  
  285.  
  286. /* ArcAlpha.rexx */
  287.