home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / cdcr206a.zip / CDCAR.CMD < prev    next >
OS/2 REXX Batch file  |  1995-10-29  |  40KB  |  91 lines

  1. /*                         by Bill Esposito                                */
  2. /*                              v2.06a                                     */  
  3. /*                       The Cereal Port BBS                               */
  4. /*                            1:132/152                                    */
  5. /*                          (603)899-3335                                  */
  6. /*                                                                         */
  7. /*                         Magic name 'CDCAR'                              */
  8. /*                         for latest version                              */
  9. /*                                                                         */
  10. /* *********************************************************************** */
  11. /* DISCLAIMER:  This software is provided "AS IS" without any warranty of  */
  12. /* any kind, either expressed or implied.  USE IT AT YOUR OWN RISK.        */
  13. /*                                                                         */
  14. /* Copyright 1993, 1994, 1995 by Bill Esposito.  This program is SHAREWARE.*/
  15. /* Please read the file SHAREWRE.TXT included in this archive.             */
  16. /*                                                                         */
  17. /* CD Carousel and it's support programs are not to be modified or         */
  18. /* distributed in modified form without the express written permission of  */
  19. /* The author, Bill Esposito.                                              */
  20. /* *********************************************************************** */
  21. /*                      *****  CDCAR.CMD  *****                            */
  22. /* The CD Carousel Door program.                                           */
  23. /*                                                                         */
  24. /***************************************************************************/
  25. /*signal on HALT NAME menu*/
  26. /* call on HALT */;Arg configdir task ansi me baud user;ver='v2.06a';if key = '' then key = '%';if baud='0' then baud='19200';'@echo off';config=configdir''cdcar''task'.cfg';f=1;do until lines(config)=0;  param.f=linein(config);  f=f+1;end;ok=stream(config,c,'close');parse var param.1 disk junk;parse var param.2 menutype junk;parse var param.3 homedir junk;parse var param.4 maxdir junk;parse var param.5 download junk;parse var param.6 fnum junk;parse var param.7 type junk
  27. parse var param.8 marea junk;parse var param.9 tnode junk;parse var param.10 fnode junk;parse var param.11 sysopfirst sysoplast nextname nextname2 junk;parse var param.12 stype junk;parse var param.13 smarea junk;parse var param.15 pl junk;parse var param.17 standalone junk;parse var param.18 all junk;parse var param.19 eyes junk;parse var param.21 days junk;;configcd=configdir''cdcar||task'.cfg';f=1;do until lines(configcd)=0;  if f > 24 then default.f=linein(configcd);  else scrap=linein(configcd);  f=f+1;end;cdes=f-24
  28. if cdes = 1 then cdes = 2;ok=stream(config,c,'close');sys=configdir''cdcar||task'.sys';f=1;do until lines(sys)=0;  sysparam.f=linein(sys);  f=f+1;end;ok=stream(sys,c,'close');parse var sysparam.1 priv;parse var sysparam.2 key1;parse var sysparam.3 key2;parse var sysparam.4 key3;parse var sysparam.5 key4;parse var sysparam.6 key5;parse var sysparam.7 key6;parse var sysparam.8 key7;parse var sysparam.9 key8;if key='' then key='%';reqflag='0'
  29. if ansi=2 then ansi = 0;if left(sysoplast,1)=';' then sysoplast='' ;if nextname <>'NEXTNAME' then if left(nextname,1)<>';' then sysoplast=sysoplast nextname;if left(nextname,1)<>';' then if nextname2 <>'NEXTNAME2' then if left(nextname2,1)<>'' then sysoplast=sysoplast nextname2;parse var user first2 mid2 last2 last3;incr=1;nmi='NO';alias='NO';;if last3<>'' then last2=last2 last3;;if last2='' then do; nmi='YES'; first=first2; last=mid2; mid='';end;if mid2='' then do; alias='YES'; first=first2
  30.  last=''; mid='';end;if nmi='NO' then do; first=first2; mid=mid2; last=last2;end  ;;if last3<>'' then nmi='NO4';;;grn='';yel='';red='';blu='';cyan='';brt='';gry=')';lo=''
  31. if ansi=1 then do;        grn='';        yel='';        red='';        blu='';        cyan='';        brt='';        gry='';        lo='';end;deltag=0;o=1;eye=20 ;maxver=0                  ;tc=1;incrd=1;incrr=1;reqflg=0;call RxFuncAdd 'SysloadFuncs','RexxUtil','Sysloadfuncs';call sysloadfuncs
  32. file=homedir'disk.lst';;newqq = rxqueue('create');oqq = rxqueue('set',newqq);wait:;call sysfiletree homedir'disk'task'.bsy', 'wait.', 'F';if wait.0<>0 then call syssleep 1;if wait.0<>0 then signal wait;call lineout homedir'disk'task'.bsy', 'busy';do until lines(file)=0; quein=linein(file); queue quein;end;count=queued();close=stream(file,c,'close');close=stream(homedir'disk'task'.bsy',c,'close');'@del 'homedir'disk'task'.bsy >nul';do until count=0;parse pull data;parse upper value data with level loc disks diskdesc 
  33. parse upper var disk disku ;if disks=disku then signal done;count=queued();end;done:;call rxqueue 'delete',newqq;call rxqueue 'set',oqq ;;call sysfiletree homedir'*.d'task, 'hmmm.', 'F';if hmmm.0 <> 0 then '@del 'homedir'*.d'task '>nul';menu:;/*signal on HALT NAME menu */; if ansi=1 then if menutype=0 then do;say'HOS/2OS/2OS/2OS/2OS/2';say'1HOS/2OS/2OS/2OS/2OS/2OS/2OS';say'7H/2OS/2OS/2OS/2OS/2OS/2OS/2OS';say'5H/2OS/2HS   0HOH/H'  ;say'0HCD Carousel Door0HSH25H'ver'0H/';say'HO0HBy Bill Esposito0H2HS9H**' ;say'2HUNREGISTERED5H**0HOH/1H'
  34. say'1H 4H    9H                    0HSH2';say'1HThe Selected CD is: 'disk'     0H/HO';say'9H                 0H21HS3H ';say'11H                   Change CD40H  80HO';say'1H/80HS1H228H  File Area Selec';say'45Ht       80H/1HO80H21HS';say'28H  Search by Filename/Text80HO1H/80HS';say'1H228H  Bulletins               65H  ';say'80H/1HO80H21HS26H ';say'27H   ?Help            63H  80HO';say'1H/80HS1H230HQuit back to BBS';say'80H/1HO55HUser: 'user '80H21HS';say'28H              62HNode 'task'80HO1H/2OS/2O';say'8HS/2OS/2OS/2OS/2OS/2OS/2OS/2';say'35HOS/2OS/2OS/2OS/2OS/2OS/2';say'59HOS/2OS/2OS/2OS/2OS/2OS';say'1H';; end;  
  35.   if ansi='0' then if menutype=0 then do;        '@cls';        say 'OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2';        say                                                            ;        say '                             CD Carousel Door ';        say '                                  'ver       ;        say '                             By Bill Esposito';        say '                             * UnRegistered *';        say ;        say '  The Currently Selected CD is: 'disk;        say ;        say '                             C)hange Disk';        say                               ;        say '                             F)ile Area   ' ;        say ;        say '                             S)earch by Filename/Text';        say ;        say '                             B)ulletins ';        say;        say '                             ?)Help' 
  36.         say                             ;        say '                             Q)uit Back to BBS          User: 'user;        say '                                                              Node 'task;        say 'OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2OS/2';;;  end   ;;if menutype=1 then do;  say;  say brt||yel'  CD Carousel Door: 'red||disk;  say;  say brt||yel||'C'gry'hange disk          'brt||yel'F'gry'ile area Select    'brt||yel'S'gry'earch by Filename/Text'    ;  say brt||yel'B'gry'ulletins            'brt||yel'Q'gry'uit to main        'brt||yel'?'gry'Help' ;end;pull sel;restart:;if sel = 'B' then call bull;if sel = '?' then call help;if sel='C' then call change_disk
  37. if sel='C' then call menu;if sel ='F'  then call filearealst;if reqflag=1 then do;  if sel = 'Q' then call quit;end;  if def=1 then if sel = 'Q' then call quit;  if sel = 'Q' then call quit1;  if sel ='S'  then call find;signal menu;;/* file area list */;filearealst:;close=stream(file,c,'close');more = 1;file=homedir''disk'\names.lst';'@cls';;/* Read */;read: ;x=1
  38. y='1';tc=1;call rxqueue 'delete',newqq;call rxqueue 'set',oqq ;tl=length(file);bsy=left(file,(tl-3))||'bsy';wait1:;call sysfiletree bsy, 'wait.', 'F';if wait.0<>0 then call syssleep 1;if wait.0<>0 then signal wait1;call lineout bsy, 'busy';open=stream(file,c,'open');linein(file,1,0) ;newqq = rxqueue('create');oqq = rxqueue('set',newqq);do until lines(file)=0; quein=linein(file); queue quein;end;count=queued()
  39. close=stream(file,c,'close');close=stream(bsy,c,'close');'@del 'bsy '>nul';loop2:;count=queued();if more <> 3 then '@cls';name.=0   ;eye=20                   ;if sel <> 'F' then if sel <> '?' then if sel <> 'B' then eye=10;if sel = 'S' then eye=10;if eyes=1 then eye=20;if sel = 'C' then eye=10;;do i=1 to eye;  xx=right(x,2);  if sel='F' then do;    count=queued();    if count = 0 then signal more ;    parse pull data ;      parse value data with name5 fuldir dirdesc
  40.  /*   parse value linein(file) with name5 fuldir dirdesc */;    dirdesc=strip(dirdesc);    name.i=xx'.  'left(name5,10) dirdesc;    fulldir.i=fuldir;  end  ;  if sel<>'F' then if sel <>'B' then if sel <>'?' then if sel <> 'C' then do;    count=queued();    if count = 0 then signal more ;    parse pull data ;     parse value data with disks diskdesc;     name.i= xx'.  'disks' 'strip(diskdesc);       end    ;  else if sel<>'F' then if sel <>'B' then if sel <>'?' then do;    count=queued();    if count = 0 then signal more ;    parse pull data ;    count=queued();     parse value data with level loc disks diskdesc ;   /*  parse value linein(file) with level loc disks diskdesc */;     if me=1 then key = '%'
  41.      if me=1 then loc = '%';     if me=1 then priv = 10;     if pl=1 then key = '%';     if pl=1 then loc = '%';     if pl=1 then priv = 10;     if priv < level  then name.i= level loc xx'.  CDROM Not Available at your access level.';     if loc <> key1  then name.i= level loc xx'.  CDROM Not Available at your access level.';     if loc <> key2  then name.i= level loc xx'.  CDROM Not Available at your access level.';     if loc <> key3  then name.i= level loc xx'.  CDROM Not Available at your access level.';     if loc <> key4  then name.i= level loc xx'.  CDROM Not Available at your access level.';     if loc <> key5  then name.i= level loc xx'.  CDROM Not Available at your access level.';     if loc <> key6  then name.i= level loc xx'.  CDROM Not Available at your access level.';     if loc <> key7  then name.i= level loc xx'.  CDROM Not Available at your access level.';     if loc <> key8  then name.i= level loc xx'.  CDROM Not Available at your access level.';     if priv >= level then if loc = key1 then name.i= level loc xx'.  'disks' 'strip(diskdesc);     if priv >= level then if loc = key2 then name.i= level loc xx'.  'disks' 'strip(diskdesc);     if priv >= level then if loc = key3 then name.i= level loc xx'.  'disks' 'strip(diskdesc);     if priv >= level then if loc = key4 then name.i= level loc xx'.  'disks' 'strip(diskdesc);     if priv >= level then if loc = key5 then name.i= level loc xx'.  'disks' 'strip(diskdesc);     if priv >= level then if loc = key6 then name.i= level loc xx'.  'disks' 'strip(diskdesc)
  42.      if priv >= level then if loc = key7 then name.i= level loc xx'.  'disks' 'strip(diskdesc);     if priv >= level then if loc = key8 then name.i= level loc xx'.  'disks' 'strip(diskdesc);     if priv >= level then if loc = '%' then name.i= level loc xx'.  'disks' 'strip(diskdesc);  end;  if sel = 'B' then do;    count=queued();    if count = 0 then signal more ;    parse pull data ;    count=queued();  end ;  se=0;  if more=3 then do;  parse var name.i level loc number nam diskdesc;  name.i = level loc right(number,3) nam diskdesc;end  ;    if sel='F' then do;      parse var name.i num name5 dirdesc;    dirdesc=strip(dirdesc);      say brt||yel||right(num,3)||grn||left(name5,10) cyan||dirdesc;    end
  43.     if sel <>'F' then if sel <> 'B' then if sel <> '?' then if sel <> 'C' then do;   parse var name.i num fn sz dt dc; replay.tc=name.i;    pp=45;    ptp=46;    ppp=1;    do until ppp=0;     if substr(dc,pp,1) <>" " then if substr(dc,ptp,1) <>" " then pp=pp-1;     if substr(dc,pp,1) =" " then ppp=0;     if substr(dc,ptp,1) =" " then ppp=0;     if substr(dc,ptp,1) =" " then pp=pp+1;    end;    diskdesc2=substr(dc,pp+1,pp+75);    name2.i='   'diskdesc2;    name2.i=left(name2.i,79);;;;      say brt||red||right(num,3)||yel||left(fn,13)||red||right(sz,8)||grn||right(dt,9)'  'cyan||strip(left(dc,pp));      if eyes<>1 then say lo||cyan||left(name2.i,79)
  44.       end    ;          if sel = 'C' then do;       ast='  ';       name.i=left(name.i,79);       parse var name.i level loc num disk6 diskdesc;   u=1;   paramno=24;   do until u = cdes;       paramno=paramno+1;       parse upper var default.paramno dcd3 junk;       parse upper var disk6 curcd1 junk;       if dcd3=curcd1 then ast=' *';       u=u+1;   end    ;  say brt||red||right(num,3)||yel||left(disk6,10)||grn||ast||cyan||strip(diskdesc);    end; ;   if sel = 'B' then say brt||cyan||data;  if more=0 then if count=0 then signal more;  if more=1 then if count=0 then signal more
  45.   if more=2 then if count=0 then signal more;    if more=3 then do;      if count=0 then call more;      if count=0 then return;    end;  if count=0 then signal qdel;  x=x+y;end;more:;  x=1;   say ;   ;   if more=1 then do;     if count > 0 then say 'More? Select file area: ('red'['yel'Y'cyan'es'red']'cyan','yel'N'cyan'o,'yel'area#'cyan','yel'?'cyan'help)';     if count=0 then say  'Select file area: ('red'['yel'N'cyan'o'red']'cyan','yel'area#'cyan','yel'?'cyan'help)';   end  ;   ;   if more=0 then do;     say 'More? (Y,n)';   end
  46.    ;   if more=2 then do;     if count>1 then say 'More? ('red'['yel'Y'cyan'es'red']'cyan','yel'N'cyan'o,'yel'file#'cyan','yel'I'cyan'nfo,'yel'L'cyan'ist-tagged,'yel'?'cyan'help)';     else say  'File#: ('red'['yel'N'cyan'o'red']'cyan','yel'file#'cyan','yel'I'cyan'nfo,'yel'L'cyan'ist-tagged,'yel'?'cyan'help)';   end;     ;   if more=3 then do;     if count >0 then say 'More? Select Disk: ('red'['yel'Y'cyan'es'red']'cyan','yel'N'cyan'o,'yel'disk#'cyan','yel'?'cyan'help)';     if count=0 then say  'Select Disk? ('red'['yel'N'cyan'o'red']'cyan','yel'Q'cyan'uit,'yel'disk#'cyan','yel'?'cyan'help)';   end;    yn=linein();      dt=datatype(yn);   if dt<>'NUM' then do;    if more=2 then if yn='I' then yn='i';    if more=2 then if yn='i' then call info;    if more=2 then if yn='L' then yn='l';    if more=2 then if yn='l' then call list;    if more=1 then if yn='?' then call help4;    if more=2 then if yn='?' then call help2;    if more=3 then if yn='?' then call help3
  47.     if count=0 then yn='N';    if more=3 then if count =0 then yn='N';   end; /*   if more=2 then if yn='?' then call help2;    if more=2 then if yn='I' then call info;    if more=2 then if yn='i' then call info;    if more=3 then if yn='?' then call help3*/;    if yn='N' then signal qdel;    if yn='n' then signal qdel;    if yn='Q' then signal qdel;    if yn='q' then signal qdel;    if more=2 then do;      if yn='' then  if count = 1 then signal qdel;      if yn='' then  if count = 0 then signal qdel;      if yn='Y' then  if count = 0 then signal qdel;      if yn='y' then  if count = 0 then signal qdel;      if yn='Y' then  if count = 1 then signal qdel;      if yn='y' then  if count = 1 then signal qdel;      dt=datatype(yn);      if dt='NUM' then call tagger
  48.       if count=0 then if yn<>'' then yn='N';    end;    if yn='Y' then if fs=1 then return ;    if yn='y' then if fs=1 then return ;    if yn='Y' then if fs <>1 then signal loop2;    if yn='y' then if fs <>1 then signal loop2;       if yn='' then do ;      if count=0 then signal qdel;      signal loop2;    end;    dt= datatype(yn);    if dt='NUM' then if yn > i then yn=1;    if more=1 then if dt='NUM' then call areasel;    if more=3 then do;      if dt<>'NUM' then yn=1;      if dt='NUM' then do;      call rxqueue 'delete',newqq;      call rxqueue 'set',oqq ;      end;      if dt='NUM' then return
  49.     end  ;    if count=0 then return;if fs=1 then return;signal loop2;qdel:;call rxqueue 'delete',newqq;call rxqueue 'set',oqq ;close=stream(file,c,'close');signal menu;;more1:;say 'more? (Y,n)';    yn=linein();;if yn="N" then signal menu;if yn="n" then signal menu;count = 0;return;;tagger:
  50. tag=yn;name3=name.tag;parse var name3 num filename date time desc;if filename <>'' then do;   call sysfiletree homedir'*.r'task, 'file.', 'F';   if file.0=0 then firstime=1;   u=1;   paramno=24;   do while u < cdes;       paramno=paramno+1;       parse upper var default.paramno dcd2 junk;       parse upper var disk curcd;       if dcd2=curcd then dcd=curcd;       u=u+1;   end    ;     if dcd=curcd then do;start=i-eye;cls;    do repeat=start to i-1;   parse var name.start num fn sz dt dc
  51.     pp=45;    ptp=46;    ppp=1;    do until ppp=0;     if substr(dc,pp,1) <>" " then if substr(dc,ptp,1) <>" " then pp=pp-1;     if substr(dc,pp,1) =" " then ppp=0;     if substr(dc,ptp,1) =" " then ppp=0;     if substr(dc,ptp,1) =" " then pp=pp+1;    end;    diskdesc2=substr(dc,pp+1,pp+75);    name2.start='   'diskdesc2;    name2.start=left(name2.start,79);    if name.start <>0 then do;      say brt||red||right(num,3)||yel||left(fn,13)||red||right(sz,8)||grn||right(dt,9)'  'cyan||strip(left(dc,pp));      if eyes<> 1 then say lo||cyan||left(name2.start,79);;    end  ;    start=start+1;    end;       if pl=0 then do
  52.        defaultd.incrd = disk nmi alias user level loc fulldirectory filename date time left(desc,44);       incrd=incrd+1;       end;       if pl=1 then do;       defaultd.incrd = disk nmi alias user level loc fulldirectory filename date time strip(left(desc,240));       incrd=incrd+1;       end;;       if maxver=1 then mecca.incr='P'download||filename;       if maxver=0 then mecca.incr='J'download||filename;       incr=incr+1;       say grn||filename brt||red'has been Tagged'cyan;       ok=stream(homedir''disk'.d'task,c,'close');       def=1;     end;   else do;       if pl=0 then do;       defaultr.incrr = disk nmi alias user level loc fulldirectory filename date time left(desc,44);       incrr=incrr+1;       end
  53.        if pl=1 then do;       defaultr.incrr = disk nmi alias user level loc fulldirectory filename date time strip(left(desc,240));       incrr=incrr+1;       end;start1:;start=i-eye;if start <1 then start=1;;cls;    do repeat=start to i-1;   parse var name.start num fn sz dt dc;    pp=45;    ptp=46;    ppp=1;    do until ppp=0;     if substr(dc,pp,1) <>" " then if substr(dc,ptp,1) <>" " then pp=pp-1;     if substr(dc,pp,1) =" " then ppp=0;     if substr(dc,ptp,1) =" " then ppp=0;     if substr(dc,ptp,1) =" " then pp=pp+1;    end
  54.     diskdesc2=substr(dc,pp+1,pp+75);    name2.start='   'diskdesc2;    name2.start=left(name2.start,79);    if name.start <>0 then do;      if help2 <> 2 then say brt||red||right(num,3)||yel||left(fn,13)||red||right(sz,8)||grn||right(dt,9)'  'cyan||strip(left(dc,pp));      if help2 = 2 then say brt||yel||right(num,3)||grn||left(fn,13) cyan||strip(sz dt dc);      if eyes<> 1 then say lo||cyan||left(name2.start,79);    end;    start=start+1;    end;if help1=1 then signal skip;    say grn||filename brt||red'has beed Tagged'cyan;     ok=stream(homedir''disk'.r'task,c,'close');    reqflag=1;   end ;end   ;skip:;if help1=1 then help1=0;if help2=2 then help2=0;call more
  55. return;;areasel:;name2=name.yn;fulldirectory=fulldir.yn;parse var name2 num areaname1 rest;areaname=strip(areaname1);file=homedir''disk'\'areaname'.bbs';more=2;sel='';call read;return;;change_disk:;;file=homedir'disk.lst';more=3;call dmenu;call read;name4=name.yn
  56. parse var name4 level loc num disk1 cdrom;disk=strip(disk1);if disk = 'CDROM' then do;say 'You do not have access to that disk, please select another';say 'Press <ENTER> to continue';   ghgh=linein();end;if disk = 'CDROM' then signal change_disk;return;;bull:;more=0;file=homedir'cdbull.txt';call read;return;;help:;more=0;file=homedir'cdhelp.txt';sel = 'B'
  57. call read;return;;dmenu:;  if ansi=0 then do;        '@cls';        say;        say;        say;        say             ;        say '                             CD Carousel Door';        say '                                  'ver;        say '                             By Bill Esposito';        say;        say ;        say 'The Currently Selected CD is: 'disk;        say ;        say 'Note: CD'"'"'s marked with an * are on-line.';        say;  end
  58.   ;  if ansi=1 then do;        '@cls';        say;        say;        say;        say;        say '                             CD Carousel Door';        say '                                  'ver;        say '                             by Bill Esposito';        say;        say '  ';        say 'The Currently Selected CD is: 'disk;        say '';        say red'Note:'cyan' CD'"'"'s marked with an 'grn'*'cyan' are on-line.';        say;  end;return;find:;if sel = 'S' then eye=10
  59. if eyes=1 then eye=20;notfound=0;more=4;count=0;i=0;'@cls';say;say;say;say;;if ansi=1 then say 'Enter Filename or search string? (any text or numbers, no wildcards)';if ansi=0 then say 'Enter Filename or search string? (any text or numbers, NO WILDCARDS)';say;what=linein();/*if what='' then '@del 'homedir||disk'.bsy >nul'*/;if what='' then signal menu;file=homedir''disk'\names.lst';loop3:;more=4
  60. fs=1;z=1;ok=stream(file,c,'open read');newqq = rxqueue('create');oqq = rxqueue('set',newqq);do until lines(file)=0; quein=linein(file); queue quein;end;count=queued();ok=stream(file,c,'close');;do until z=40;/*linein(file,1,0)*/ ;zz=1;return1:;do until count=1;/*if yn='i'| sel = 'S' then count=count-i*/;count=queued() ;if yn='i' then if sel = 'S' then do
  61.   d=1;  say;  say brt||cyan'Directory: 'blu||drr||cyan||dirdesc1;;  do until d=zz;   say temp.d;   d=d+1;  end;end;if yn='i' then if sel = 'S' then call tag;  parse pull data;  parse value data with drr fulldirectory dirdesc;  drrr=homedir''disk'\'drr'.bbs';  if dirdesc <>'' then dirdesc1='-'dirdesc;     else dirdesc1='';;  file.='';areaname=drr;say brt||cyan'Directory: 'blu||drr||cyan||dirdesc1;    ok=sysfilesearch(what, drrr, 'file.')
  62. read1: ;x=1;y='1';zz=1;name.0=0;  do i=1 to file.0 ;  if file.i<>'' then do;  xx=right(x,2);  name.i= xx'.  'file.i;  if left(file.i,5) <>'FILE.' then do;   parse var name.i num fn sz dt dc;    pp=45;    ptp=46;    ppp=1;    do until ppp=0;     if substr(dc,pp,1) <>" " then if substr(dc,ptp,1) <>" " then pp=pp-1;     if substr(dc,pp,1) =" " then ppp=0;     if substr(dc,ptp,1) =" " then ppp=0;     if substr(dc,ptp,1) =" " then pp=pp+1;    end
  63.     diskdesc2=substr(dc,pp+1,pp+75);    name2.i='   'diskdesc2;    name2.i=left(name2.i,79);;;;      say brt||red||right(num,3)||yel||left(fn,13)||red||right(sz,8)||grn||right(dt,9)'  'cyan||strip(left(dc,pp));      if eyes<> 1 then say lo||cyan||name2.i;      temp.zz=brt||red||right(num,3)||yel||left(fn,13)||red||right(sz,8)||grn||right(dt,9)'  'cyan||strip(left(dc,pp));      zz=zz+1;      if eyes<> 1 then temp.zz=lo||cyan||name2.i;      if eyes<> 1 then zz=zz+1;;;  end;  if left(file.i,5) <>'FILE.' then notfound=1;/* */;  if datatype(i/eye,'W')=1 then call tag;end;x=x+y
  64. end;if file.0 <>0 then call tag;z=z+y;end;skip2:;if count<>1 then call loop3;ok=stream(file,c,'close');call rxqueue 'delete',newqq;call rxqueue 'set',oqq;if notfound=0 then do;  say ' Sorry, unable to find 'WHAT;  say ' Press <ENTER> to continue';  ent=linein();end  ;if notfound=1 then do;  say ' Press <ENTER> to continue';  ent=linein();end  ;call rxqueue 'delete',newqq;call rxqueue 'set',oqq
  65. ;/*'@del 'homedir||disk'.bsy >nul*/;;signal menu;;quit:;do jj=1 to incrd-1; if right(defaultd.JJ,9) <> '-DELETED-' then do;parse var defaultd.jj disk info; call lineout homedir''disk'.d'task,info;reqflg=1;end;end;ok=stream(homedir''disk'.d'task,c,'close');;do jj=1 to incrr-1;if right(defaultr.JJ,9) <> '-DELETED-' then do;parse var defaultr.jj disk info;call lineout homedir''disk'.r'task,info;reqflg=1
  66. end;ok=stream(homedir''disk'.r'task,c,'close');end;;if reqflg<> 1 then signal theend ;;;file=homedir'disk.lst';  if ansi=0 then do;        '@cls';        say '                             CD Carousel Door';        say '                                  'ver;        say '                             By Bill Esposito';        say;  end;  ;  if ansi = 1 then do;        '@cls' ;        say '                             CD Carousel Door';        say '                                  'ver
  67.         say '                             by Bill Esposito';        say '' ;  end;if reqflag=1 then do;say First',';say '     You have requested the following files.  You will receive a';say 'message for each sucessfully filled file request.  Please K)ill';say 'these messages upon receipt.  When posted, your files can be found';say 'for download in File Area 'fnum'.';say;   ok=stream(file,c,'close');do until lines(file)=0;   parse value linein(file) with priv lock disk1 diskdesc;   disk=homedir''disk1'.r'task;   ok=stream(disk,c,'close');   x=8;   request=yes;   dsk=no;      do until lines(disk)=0;         request=no
  68.          if nmi='NO' then if alias='NO' then do;             parse value linein(disk) with nmi1 alias1 first1 mid1 last1 priv lock directory filename sz dt desc;         end;         if nmi='NO4' then if alias='NO' then do;             parse value linein(disk) with nmi1 alias1 first1 mid1 last1 last2 priv lock directory filename sz dt desc;             last1=last1 last2;         end;         if nmi='YES' then if alias='NO' then do;             parse value linein(disk) with nmi1 alias1 first1 last1 priv lock directory filename sz dt desc;             mid1=mid;         end    ;         if alias='YES' then do;             parse value linein(disk) with nmi1 alias1 first1 priv lock directory filename sz dt desc;             mid1=mid;             last1='';         end    ;         ;         if x=20 then say;         if x=20 then say 'Press <ENTER> to continue';         if x=20 then  ak=linein()         
  69.          if x=20 then x=8;         if first1=first then if mid1=mid then if last1=last then do;             if dsk=no then say;             if dsk=no then say 'CD: 'disk1'';             dsk=yes;             say left(filename,12) left(desc,66);             request=yes;             req=yes;         end    ;         x=x+1;       end;   end;ok=stream(file,c,'close');say;if def = 1 then say 'The files you selected from the On-Line CD'"'"'s (*) are available 'brt||red'now.';if def=1 then say ;if def=1 then say cyan'If you have problems downloading them, they will be waiting for you';if def = 1 then say 'in 'red'File Area 'fnum||cyan'.';end;if reqflag <> 1 then if def = 1 then do
  70. h=1;;say first',';say;say 'The files you selected from the On-Line CD'"'"'s (*) are available 'brt||red'now.'    ;say                                                                                          ;say cyan'If you have problems downloading them, they will be waiting for you'                ;say 'in 'red'File Area 'fnum||cyan'.';if junk <> 0 then do;say;say 'These files will remain online for 'red||days||cyan' days.'                                                              ;end;end;say;say 'Press <ENTER> to continue';ak=linein();call msg;quit1:;'@cls';file=homedir'disk.lst'
  71. ok=stream(homedir'disk.lst',c,'close');do until lines(file)=0;   parse value linein(file) with disk1 diskdesc;   ok=stream(homedir''strip(disk1)'\names.lst',c,'close');end ;ok=stream(file,c,'close');;if def=1 then do;  siz=length(homedir);  homedi=left(homedir,siz-1);  drive=left(homedir,2);  drive;do gggg=1 to incr-1;call lineout maxdir'cdload'task'.bbs',mecca.gggg;end;if maxver=0 then call lineout maxdir'cdload'task'.bbs','r∙';if maxver=1 then call lineout maxdir'cdload'task'.bbs','r∙garbage';'@del' maxdir'cddel'task'.bbs';call lineout maxdir'cddel'task'.bbs','D'maxdir'cdload'task'.bbs';
  72. ok=stream(maxdir'cddel'task'.bbs',c,'close');ok=stream(maxdir'cdload'task'.bbs',c,'close');;  '@cd' homedi;  ;  say cyan'Please wait, copying files............';  call cdmaint.cmd task 0 1;end;theend:;if me=1 then call cdmenu.cmd task;exit;;;tag:      ;     if count<>0 then say 'More, File# ? (Y,n,#,i)';     if count=0 then say  'File# ? (N,#,i)';    yn=linein();    ;    if yn='N' then do;      signal qdel
  73.     end  ;    if yn='n' then do;       signal qdel;    end   ;if yn='I' then yn='i';if yn='i' then call info;    dt=datatype(yn);    if dt='NUM' then do;        tag=yn;        name3=name.tag;        parse var name3 num filename date time desc;        if filename <>'' then do;        call sysfiletree homedir'*.r'task, 'file.', 'F';        if file.0=0 then firstime=1;;   u=1;   paramno=24;   do while u < cdes;       paramno=paramno+1;       parse upper var default.paramno dcd2 junk
  74.        parse upper var disk curcd;       if dcd2=curcd then dcd=curcd;       u=u+1;   end    ;     if dcd=curcd then do;       if pl=0 then do;       defaultd.incrd = disk nmi alias user level loc fulldirectory filename date time left(desc,44);       incrd=incrd+1;       end;       if pl=1 then do;       defaultd.incrd = disk nmi alias user level loc fulldirectory filename date time strip(left(desc,240));       incrd=incrd+1;       end;         def=1;       if maxver=1 then mecca.incr='P'download||filename;       if maxver=0 then mecca.incr='J'download||filename;       /*mecca.incr='J'fulldirectory'\'filename */;       incr=incr+1;     end;       else do
  75.        if pl=0 then do;       defaultr.incrr = disk nmi alias user level loc fulldirectory filename date time left(desc,44);       incrr=incrr+1;       end;       if pl=1 then do;       defaultr.incrr = disk nmi alias user level loc fulldirectory filename date time strip(left(desc,240));       incrr=incrr+1;       end;        ok=stream(homedir''disk'.r'task,c,'close');        reqflag=1;       end ;    say grn||filename brt||red'has beed Tagged'cyan;     end;    end   ;    if yn='' then do ;      if count=0 then signal qdel;        return;      end;    if yn='Y' then do ;      if count=0 then signal qdel
  76.         return;     end;    if yn='y' then do ;      if count=0 then signal qdel;        return;     end;call tag;        ok=stream(homedir''disk'.d'task,c,'close');        ok=stream(homedir''disk'.r'task,c,'close');return;msg:;if standalone = 1 then return;if all <> 0 then if req='YES' then if firstime <> 1 then if def = 1 then return;if def=1 then if req<>'YES' then return;  /* MSGAPI */;if all=0 then cduser=user;else cduser='A User';address CMD 'rxsubcom drop msgapi';address CMD 'rxsubcom register MSGAPI rxmsgapi RXMSGAPI';address CMD 'rxsubcom load MSGAPI RXMSGAPI'
  77. address MSGAPI;'OPEN_API 3 0';'OPEN_AREA MSG 'smarea' MSGAREA_NORMAL 'STYPE;'LOCK MSG';'OPEN_MSG MSGH MSG MOPEN_CREATE 0';cr = '0d'x;text = 'Hello 'SYSOPFIRST',' cr cr cduser' has requested a file from an off-line CD.' cr cr 'Please run CDMenu at your earliest convenience.' cr cr '  Thank you,' cr '    CD Carousel' cr cr cr '--- This File was brought to you by CD Carousel'cr      ;controla = '01'x;control = controla || 'PID RXMSGAPI';xmsg.attr = 1;xmsg.from = CD Carousel;xmsg.to = SYSOPFIRST SYSOPLAST;xmsg.subj = 'File Request';xmsg.orig = tnode;xmsg.dest = fnode;hour=time('N');date2=date('S');year=left(date2,4);month=substr(date2,5,2);day=right(date2,2)
  78. date1=year'/'month'/'day':'hour;xmsg.date_written = date1;xmsg.date_arrived = date1;xmsg.utc_ofs = 60;xmsg.replyto = 0;xmsg.replies.1 = 0;xmsg.replies.2 = 0;xmsg.replies.3 = 0;xmsg.replies.4 = 0;xmsg.replies.5 = 0;xmsg.replies.6 = 0;xmsg.replies.7 = 0;xmsg.replies.8 = 0;xmsg.replies.9 = 0;xmsg.replies.10 = 0;xmsg.ftsc_date = date('N') time('N');'WRITE_MSG MSGH 0 XMSG. TEXT' length(text) length(text) length(control) 'CONTROL';'CLOSE_MSG MSGH';'UNLOCK MSG';'CLOSE_AREA MSG'
  79. 'CLOSE_API';address CMD 'rxsubcom drop msgapi';call syssleep 3;return;help2:;help1=1;cls;say brt||yel'                              CD Carousel 'ver;say;say cyan'"Y"'grn' = Yes, show the next page. If a response option is enclosed in brackets 'cyan'[]'grn',';say '      then that is the default action, hitting 'cyan'<enter>'grn' will select that option.';say cyan'"n"'grn' = No, quit to main menu.';say cyan'"#"'grn' = Enter the file number of the file you wish to tag. (ex. 3)';say cyan'"i"'grn' = Info; selecting this will prompt you for a file number.  Entering';say '      the number will display the unabbreviated file description.';say cyan'"L"'grn' = List tagged files on current disk.  You may delete files from this list';say cyan'"?"'grn' = Help'      ;say;say yel'If you enter a file number, you will get a response stating that the file has';say 'been tagged.'
  80. say;say grn'If the file is located on a CD which is currently 'cyan'online'grn' (denoted by an asteric';say '"*" in front of the disk description in the disk list) then that file(s) will';say 'be copied to File Area 'cyan||fnum||grn' after exiting CD Carousel, where you can ';say 'download it.';say;say yel'If the disk is 'cyan'offline'yel', then you will be notified by a message when the files';say 'have been put online for you to download.  These files will also be available';say 'in File Area 'cyan||fnum||yel'.';say;say grn'Press any key to continue';ak=linein();signal start1;return;help3:;help1=1;cls;say;say brt||yel'                              CD Carousel 'ver;say
  81. say brt||grn'Enter either the'cyan' disk number'grn' of the CD you want to browse, 'cyan'"y"'grn' to display the';say 'next page, or'cyan' "n"'grn' to quit back to the CD Carousel Main Menu.';say;say cyan'"Y"'grn' = Yes, show the next page. If a response option is enclosed in brackets 'cyan'[]'grn',';say '      then that is the default action, hitting 'cyan'<enter>'grn' will select that option.';say;say grn'If the CD is currently 'cyan'online'grn' (denoted by an asteric "*" in front of the disk';say 'description in the disk list) then the file(s) you select from that CD will be';say 'copied to File Area 'cyan||fnum||grn;say 'After exiting CD Carousel, you can download the file from that Area.';say;say yel'If the disk is 'cyan'offline'yel', then you will be notified by a message when the files';say 'have been put online for you to download.  These files will also be available';say 'in File Area 'cyan||fnum||yel'.';say;say grn'Press any key to continue';ak=linein();      more=3;      signal restart;return
  82. help4:;help1=1;help2=2;cls;say brt||yel'                              CD Carousel 'ver;say;say cyan'"Y"'grn' = Yes, show the next page. If a response option is enclosed in brackets 'cyan'[]'grn',';say '      then that is the default action, hitting 'cyan'<enter>'grn' will select that option.';say cyan'"n"'grn' = No, quit to main menu.';say cyan'"#"'grn' = Enter the number of the File Directory you wish to go to. (ex. 3)';say cyan'"?"'grn' = Help'      ;say;say;say grn'Press any key to continue';ak=linein();signal start1;return;info:;say 'Enter the number of the file you wish to see the complete description for:';fff=linein()
  83. help1=1;cls;call wrapper;say;say grn'Press any key to continue';ak=linein();if yn='I' then if sel = 'S' then signal return1 ;if yn='i' then if sel = 'S' then signal return1;  signal start1;  wrapper:;  colwrap=79;  line=name.fff;  ft=1;  say brt||cyan'                      Complete File Description';    do until length(line)<colwrap;  newline =left(line,colwrap);  lastspace = lastpos(' ',newline);  sendline = left(line,lastspace);  line = substr(line,(lastspace+1));  if ft<>1 then say sendline
  84.   if ft=1 then do;  parse var sendline num fn sz dt dc;  say brt||yel||left(fn,13)||red||right(sz,8)||grn||right(dt,9)'  'lo||cyan||strip(dc);  ft=0;  end;  end;  say line;  return;halt:;cls;say;say;say 'You hit CTRL-C and forced CD Carousel to terminate.';exit;list:;jj=1;ak='';   paramno=24;   yup=0;   uuu=1
  85.    do until uuu = cdes;       paramno=paramno+1;       parse upper var default.paramno dcd3 junk;       parse upper var disk curcd1 junk;       if dcd3=curcd1 then yup=1;       uuu=uuu+1;   end   ;if yup=1 then signal list2;help1=1;cls;say brt||cyan' The following files were REQUESTED';say brt||blu' ----------------------------------'; if defaultr.jj='DEFAULTR.1' then do; say red'No files are tagged on this disk'; say; say cyan'Press any key to continue'; ak=linein(); signal start1; end;do jj=1 to incrr-1
  86.  parse var defaultr.jj minusone one two three four five six seven eight nine ten eleven ; if right(eleven,9) <>'-DELETED-' then say red||jj'.'brt||yel||left(eight,13)||red||right(nine,8)||grn||right(ten,9); else say red||jj'.'brt||yel||left(eight,13)||red||right(nine,8)||grn||right(ten,9)'   'red||right(eleven,9);end;say;deltag=0;say;say brt||cyan'Enter the file # you wish to 'brt||blu'Delete'cyan' or'brt||blu' Undelete'cyan' or hit 'yel'Q'cyan' to quit to file list';say 'Select ('yel'file#'cyan','yel'Q'cyan'uit):' ;ak=linein();ak=left(ak,1);if ak <> 'Q'|ak<>'q' then do;    dt=datatype(ak);    if dt='NUM' then do; parse var defaultr.ak minusone one two three four five six seven eight nine ten eleven;if right(eleven,9)<>'-DELETED-'then do;    defaultr.ak=defaultr.ak' -DELETED-';    deltag=1;    reqflg='0';    if ent<>'Q' then if ent<>'q' then signal list
  87. end;if right(eleven,9)='-DELETED-'then do;    rev=substr(reverse(defaultr.ak),10);    defaultr.ak=reverse(rev);    if ent<>'Q' then if ent<>'q' then signal list;   end;end;signal start1;list2:;jj=1;help1=1;cls;list2:;help1=1;cls;say brt||cyan' The following files were REQUESTED';say brt||blu' ----------------------------------'; if defaultd.jj='DEFAULTD.1' then do; say red'No files are tagged on this disk'; say
  88.  say cyan'Press any key to continue'; ak=linein(); signal start1; end;do jj=1 to incrd-1; parse var defaultd.jj minusone one two three four five six seven eight nine ten eleven ; if right(eleven,9) <>'-DELETED-' then do;     dltime= (nine/baud)/60;     dltime=format(dltime,,2);     parse var dltime hours'.'min1;     min=left((min1*60),2);     dltime=hours':'min;;     end; if right(eleven,9) <>'-DELETED-' then say red||jj'.'brt||yel||left(eight,13)||red||right(nine,8)||grn||right(ten,9)||cyan'   Download time is Approx 'red||dltime||cyan 'min.'; else say red||jj'.'brt||yel||left(eight,13)||red||right(nine,8)||grn||right(ten,9)'   'red||right(eleven,9);end;say;/*if deltag=1 then say red||gone||cyan' has been deleted from Request list'*/;deltag=0
  89. say;say brt||cyan'Enter the file # you wish to 'brt||blu'Delete'cyan' or'brt||blu' Undelete'cyan' or hit 'yel'Q'cyan' to quit to file list';say 'Select ('yel'file#'cyan','yel'Q'cyan'uit):' ;ak=linein();ak=left(ak,1);if ak <> 'Q'|ak<>'q' then do;    dt=datatype(ak);    if dt='NUM' then do; parse var defaultd.ak minusone one two three four five six seven eight nine ten eleven;if right(eleven,9)<>'-DELETED-'then do;    defaultd.ak=defaultd.ak' -DELETED-';    deltag=1;    reqflg='0';    if ent<>'Q' then if ent<>'q' then signal list;end;if right(eleven,9)='-DELETED-'then do;    rev=substr(reverse(defaultd.ak),10);    defaultd.ak=reverse(rev);    if ent<>'Q' then if ent<>'q' then signal list;   end
  90. end;signal start1;;;IN.1310;IN.1311;IN.1312;IN.1313;IN.1314;IN.1315;IN.1316;IN.1317;IN.1318;IN.1319;IN.1320;IN.1321;IN.1322;IN.1323;IN.1324;IN.1325
  91.