home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / animpg14.zip / AnimPage.cmd < prev    next >
OS/2 REXX Batch file  |  1996-07-13  |  19KB  |  448 lines

  1. /******************  Animation Page Creator v1.3 ***************/
  2.  
  3. '@ECHO OFF'
  4. say ' *****************  Animation Page Creator v1.3 ***************'
  5. say ' ************ by Sallie Krebs (skrebs@inwave.com) ********'
  6.  
  7. /***************** User Variables ************************/
  8. /* IMPORTANT!!!!! If you are running an older version of WebExplorer */
  9. /* which does not support Tables, then set the AnimTables variable to 0 */
  10. AnimTables=1
  11. AnimPath=''
  12. /*  AnimPath is the base directory for your animation files. Each
  13.     separate animation must be located in its own subdirectory
  14.     beneath the base directory. Also, there should be NO directories
  15.     other than animations beneath the base directory. If this variable
  16.     is blank, then the current directory will be used for the AnimPath
  17.     variable. (This assumes that animpage.cmd is run from the base
  18.     directory.)
  19.     Example:    Animpath='c:\inet\animate'                   */
  20. AnimBackground='bkgdos2.gif'    /* Background graphic */
  21. AnimHeader='header.gif'         /* Header graphic for top of page */
  22. AnimArc='animarc.gif'           /* 'Animation Archive' header graphic- near */
  23.                                 /* the bottom of the page. */
  24.                                 /* Under the Animation Archive graphic will */
  25.                                 /* be a list of up to 5 sites you can link */
  26.                                 /* to. Enter the link and title info below. */
  27.                                 /* Leave blank (ie: '') otherwise. */
  28. AnimArcHRef1='http://www.os2forum.or.at/TeamOS2/English/Special/Animations/'
  29. AnimArcTitle1='OS/2 Information Center - Animations'
  30. AnimArcHRef2='http://www.kuwait.net/~morpheus/web-anim.html'
  31. AnimArcTitle2='WebExplorer Animations Archive'
  32. AnimArcHRef3='http://eev11.e-technik.uni-erlangen.de/animationen.html'
  33. AnimArcTitle3='Animation HomePage'
  34. AnimArcHRef4=''
  35. AnimArcTitle4=''
  36. AnimArcHRef5=''
  37. AnimArcTitle5=''
  38. AnimRdButton='rd_pin.gif'       /* Graphic for the AnimArcHRef lines */
  39. AnimDivider='divider.gif'       /* Divider graphic. For link to top of page */
  40. AnimLogo='merlin.gif'           /* Building for Merlin logo graphic for bottom of page */
  41. AnimLogoHRef='http://www.in.net/~mcdonajp/bfos2m.htm'
  42. AnimRibbon='blueribn.gif'       /* Blue Ribbon Logo graphic for bottom of page */
  43. AnimRibbonHRef='http://www.eff.org/blueribbon.html'
  44.                                 /* Blue Ribbon Logo HREF for Blue Ribbon logo */
  45. AnimOnward='everonwd.gif'       /* Ever Onward Logo graphic for bottom of page */
  46. AnimOnwardHRef='http://www.aescon.com/innoval/everos2/'
  47. /* the above graphics files should be located in the AnimPath directory.
  48.    You can substitute your own graphics for the above by copying your
  49.    files to the 'AnimPath' directory. You can then either delete the files
  50.    included with AnimPage.cmd and rename your files as above, or edit the
  51.    above variables to correspond to the filenames of your graphics. */
  52. /************** End of User Variables ********************/
  53.  
  54. signal on error name DIE
  55. signal on failure name DIE
  56. signal on halt name DIE
  57. signal on syntax name DIE
  58.  
  59. /****** required REXXUTIL initialization ******/
  60. rc = RxFuncAdd(SysLoadFuncs, REXXUTIL, SysLoadFuncs)
  61. if rc \= 0 then do
  62.     say 'Could not load RexxUtil functions. Exiting.'
  63.     exit
  64. end
  65. call SysLoadFuncs
  66.  
  67. say '********************* NOTE ******************************'
  68. say '*** You must edit the user variables at the start of  ***'
  69. say '*** this file before running this program.            ***'
  70. say ''
  71.  
  72. address CMD
  73.  
  74. /*  I wanted to use the following statement, but for some reason it no
  75.     longer works?!?!?! Yet another Fixpack 17 bug, er... feature?!?!? */
  76. /* if RxMessageBox('Run AnimPage Now?',, 'YESNO', 'QUERY') = 7 */
  77.  
  78. /* I'll have to settle for: */
  79. 'pause Press Ctrl-C to abort now, or any other key to continue'
  80. say ''
  81.  
  82. fspec = AnimPath
  83. if fspec == '' then
  84.     fspec = directory()||'\'
  85. if (lastpos('\', fspec) \= length(fspec)) then
  86.     fspec = fspec||'\'
  87. AnimPath = fspec
  88.  
  89. /* Make AnimPage.BAK file */
  90. found. = 0
  91. AnimFspec = fspec||AnimPage.htm
  92. rc = SysFileTree(AnimFspec, 'found', 'F')
  93. if found.0 \= 0 then do
  94.     ofspec = left(AnimFspec, length(AnimFspec) - 3) || 'BAK'
  95.     say 'Copying AnimPage.htm to AnimPage.bak'
  96.     'copy 'AnimFspec' 'ofspec
  97.     say ''
  98.     say 'Deleting old AnimPage.htm'
  99.     'del 'AnimFspec
  100.     say ''
  101. end
  102.  
  103. /* find subdirectories */
  104. AnimDirs. = 0
  105. rc = SysFileTree(fspec, 'AnimDirs', 'SDO')
  106. if (rc \= 0)|(AnimDirs.0 == 0) then do
  107.     say 'Error reading animation subdirectories. Exiting.'
  108.     call SysDropFuncs
  109.     exit
  110. end
  111.  
  112. do x = 1 to AnimDirs.0     /* check each subdirectory: */
  113.     AnimFiles. = 0
  114.     fspec = AnimDirs.x||'\*.gif'
  115.     rc = SysFileTree(fspec, 'AnimFiles', 'FO')
  116.     if AnimFiles.0 == 0 then do
  117.         fspec = AnimDirs.x||'\*.jpg'
  118.         rc = SysFileTree(fspec, 'AnimFiles', 'FO')
  119.         if AnimFiles.0 == 0 then do
  120.             fspec = AnimDirs.x||'\*.bmp'
  121.             rc = SysFileTree(fspec, 'AnimFiles', 'FO')
  122.             if AnimFiles.0 == 0 then do
  123.                 say 'Could not locate any animations. Exiting.'
  124.                 call SysDropFuncs
  125.                 exit
  126.             end
  127.         end
  128.     end
  129. end
  130.  
  131. /* do html header */
  132. call stream AnimFspec, 'c', 'open write'
  133.  
  134. top = '<IMG src="file:///'||AnimPath||AnimHeader'" alt="[AnimPage]">'
  135.  
  136. call lineout AnimFspec, '<HTML>'
  137. call lineout AnimFspec, ''
  138. call lineout AnimFspec, '<HEAD>'
  139. call lineout AnimFspec, '<TITLE>WebExplorer Animations</TITLE>'
  140. call lineout AnimFspec, '<body background="file:///'||AnimPath||AnimBackground'">'
  141. call lineout AnimFspec, '</HEAD>'
  142. call lineout AnimFspec, ''
  143.  
  144. call lineout AnimFspec, '<CENTER>'
  145. call lineout AnimFspec, '<A NAME="top"><B>WebExplorer Animations</B></A>'
  146. call lineout AnimFspec, '</CENTER><P>'
  147. call lineout AnimFspec, '<CENTER>'
  148. call lineout AnimFspec, top
  149. call lineout AnimFspec, '</CENTER><P>'
  150. call lineout AnimFspec, ''
  151. call lineout AnimFspec, '<BODY>'
  152. call lineout AnimFspec, ''
  153. if (AnimTables) then do
  154.     call lineout AnimFspec, '<CENTER>'
  155.     call lineout AnimFspec, '<TABLE BORDER=3>'
  156.     call lineout AnimFspec, '<TR>'
  157.     call lineout AnimFspec, '<TH ALIGN="center" VALIGN="middle" NOWRAP>Picture</TH><TH ALIGN="center" VALIGN="middle" NOWRAP>Title</TH><TH ALIGN="center" VALIGN="middle" NOWRAP>Author</TH><TH ALIGN="center" VALIGN="middle" NOWRAP>Size</TH>'
  158.     call lineout AnimFspec, '</TR>'
  159. end
  160. else
  161.     call lineout AnimFspec, '<ul>'
  162.  
  163. /* get animation subdirectories info: */
  164. ADir. = 0
  165. do x = 1 to AnimDirs.0
  166.     ai = 0
  167.     ad = x
  168.     ADir.0 = x              /* number of animation subdirectories */
  169.     ADir.ad.ai = 0          /* init number of anim files in subdir */
  170.     AnimFiles. = 0
  171.     fspec = AnimDirs.x||'\*.gif'
  172.     afext = '.gif'                  /* anim file extension */
  173.     rc = SysFileTree(fspec, 'AnimFiles', 'FO')
  174.     if AnimFiles.0 == 0 then do
  175.         fspec = AnimDirs.x||'\*.jpg'
  176.         afext = '.jpg'          /* anim file extension */
  177.         rc = SysFileTree(fspec, 'AnimFiles', 'FO')
  178.         if AnimFiles.0 == 0 then do
  179.             fspec = AnimDirs.x||'\*.bmp'
  180.             afext = '.bmp'  /* anim file extension */
  181.             rc = SysFileTree(fspec, 'AnimFiles', 'FO')
  182.         end
  183.     end
  184.  
  185.     ADir.ad.ai = AnimFiles.0
  186.     do f = 1 to AnimFiles.0
  187.         Adir.ad.f = AnimFiles.f
  188.     end
  189.  
  190.     ADir.ad.icon = AnimFiles.1  /* icon for main page is first anim file */
  191.     attl = AnimFiles.1          /* get just the subdirectory name ... */
  192.     apath = filespec('P', attl) /* to use for other variables */
  193.     attl = substr(apath, 1, (length(apath) - 1))
  194.     epos = lastpos('\', attl) + 1
  195.     attl = substr(attl, epos)
  196.     ADir.ad.title = attl
  197.     fname = attl||'.htm'        /* append .htm for loader filename */
  198.     ADir.ad.ahtm = fname        /* name for individual anim loader files */
  199.     ADir.ad.aname = attl        /* subdir name only for NAME tag and ...*/
  200.     alitxt = attl               /* default text for animation list items */
  201.     attl = '<TITLE>'||attl||'</TITLE>'  /* default title for loader file */
  202.  
  203.     /* locate/process original animation loader file(s) */
  204.     fspec = AnimDirs.x||'\*.htm'
  205.     ADir.ad.ahref = 1
  206.     ADir.ad.ahref.1 = 'Source unknown'/* default source for loader file */
  207.     ADir.ad.ahref.1.hrtxt = 'Source unknown'/* default source for loader file */
  208.     rc = SysFileTree(fspec, 'found', 'FSO') /* find original loader- if any */
  209.     if found.0 == 0 then do
  210.         fspec = AnimDirs.x||'\*.html'
  211.         rc = SysFileTree(fspec, 'found', 'FSO')
  212.     end
  213.     if found.0 \= 0 then do
  214.         fspec = found.1
  215.         rc = SysFileSearch('<TITLE>', fspec, 'found.')  /* look for title */
  216.         if ((rc == 0)&(found.0 \= 0)) then do
  217.             attlsave = attl /* <TITLE>...</TITLE> */
  218.             attl = found.1
  219.             alitxt = attl
  220.             epos = lastpos('<', alitxt) - 1
  221.             if epos > 0 then do
  222.                 alitxt = substr(alitxt, 1, epos)
  223.                 alitxt = strip(alitxt)
  224.                 epos = lastpos('>', alitxt) + 1
  225.                 alitxt = strip(substr(alitxt, epos))
  226.                 if (pos('WEBEXPLORER ANIMATION', translate(alitxt)) \= 0) then do
  227.                     alitxt = strip(substr(alitxt, 22))
  228.                     epos = pos('-', alitxt) + 1
  229.                     if epos \= 0 then
  230.                         alitxt = strip(substr(alitxt, epos))
  231.                 end
  232.             end
  233.             else do
  234.                 attl = attlsave
  235.                 alitxt = attlsave
  236.             end
  237.         end
  238.         rc = SysFileSearch('<A HREF', fspec, 'found.') /* look for href */
  239.         if ((rc == 0)&(found.0 \= 0)) then do
  240.             ADir.ad.ahref = found.0
  241.             do r = 1 to found.0     /* save each found href line */
  242.                 ADir.ad.ahref.r = found.r
  243.             end
  244.  
  245.             ahtmp = ADir.ad.ahref.1     /* just look at first href found */
  246.             epos = lastpos('</A>', translate(ahtmp)) - 1 /* strip the </A> */
  247.             if epos >= 1 then                            /* if it's there */
  248.                 ahtmp = strip(substr(ahtmp, 1, epos))
  249.             epos = pos('<A HREF', translate(ahtmp))  /* get the href position */
  250.             if epos >= 1 then
  251.                 ahtmp = strip(substr(ahtmp, epos))   /* get href to EOL */
  252.             epos = pos('</H', translate(ahtmp)) - 1 /* strip end header tag, if present */
  253.             if epos >= 1 then do
  254.                 ahtmp = strip(substr(ahtmp, 1, epos))
  255.             end
  256.             ADir.ad.ahref.1.hrtxt = ahtmp
  257.         end
  258.     end
  259.     ADir.ad.atitle = attl
  260.     animhref = Adir.ad.ahtm
  261.     epos = lastpos('\', animhref) + 1
  262.     animhref = substr(animhref, epos)
  263.     if (AnimTables) then do
  264.         call lineout AnimFspec, '<TR>'
  265.         call lineout AnimFspec, '<TD ALIGN="center" VALIGN="middle"><A HREF="'||animhref||'" NAME="'ADir.ad.aname'"><IMG src="file:///'||ADir.ad.icon||'" ALIGN="middle" alt="[Load Animation]"></A></td>'
  266.         call lineout AnimFspec, '<TD ALIGN="center" VALIGN="middle">'||alitxt||'</td>'
  267.         call lineout AnimFspec, '<TD ALIGN="center" VALIGN="middle">'||ADir.ad.ahref.1.hrtxt||'</td>'
  268.         call lineout AnimFspec, '<TD ALIGN="center" VALIGN="middle">'||ADir.ad.ai||' frames</td>'
  269.         call lineout AnimFspec, '</TR>'
  270.     end
  271.     else do
  272.         aListItem = '<A HREF="'animhref'" NAME="'ADir.ad.aname'"><IMG src="file:///'ADir.ad.icon'" ALIGN="middle" alt="['ADir.ad.aname']">'alitxt'</A>     Frames: 'ADir.ad.ai
  273.         call lineout AnimFspec, aListItem||'<BR>'   /* done- output the anim line */
  274.     end
  275. end
  276.  
  277. /* done with all animation lines- do main page footer */
  278. bar = '<A HREF="#top"><IMG src="'||AnimDivider||'" ALIGN="middle" alt="[To Top of Page]"></A><BR>'
  279. hdr = '<IMG src="file:///'||AnimPath||AnimArc'" ALIGN="middle" alt="[Animation Archive Sites]"><BR>'
  280. if AnimArcTitle1 \= '' then
  281.     asite1 = '<IMG src="file:///'||AnimPath||AnimRdButton'" ALIGN="middle" alt="[ ]"><A HREF="'||AnimArcHRef1||'">'AnimArcTitle1'</A><BR>'
  282. else
  283.     asite1 = '<IMG src="file:///'||AnimPath||AnimRdButton'" ALIGN="middle" alt="[ ]"><A HREF="'||AnimArcHRef1||'">Animation link #1</A><BR>'
  284. if AnimArcTitle2 \= '' then
  285.     asite2 = '<IMG src="file:///'||AnimPath||AnimRdButton'" ALIGN="middle" alt="[ ]"><A HREF="'||AnimArcHRef2||'">'AnimArcTitle2'</A><BR>'
  286. else
  287.     asite2 = '<IMG src="file:///'||AnimPath||AnimRdButton'" ALIGN="middle" alt="[ ]"><A HREF="'||AnimArcHRef2||'">Animation link #2</A><BR>'
  288. if AnimArcTitle3 \= '' then
  289.     asite3 = '<IMG src="file:///'||AnimPath||AnimRdButton'" ALIGN="middle" alt="[ ]"><A HREF="'||AnimArcHRef3||'">'AnimArcTitle3'</A><BR>'
  290. else
  291.     asite3 = '<IMG src="file:///'||AnimPath||AnimRdButton'" ALIGN="middle" alt="[ ]"><A HREF="'||AnimArcHRef3||'">Animation link #3</A><BR>'
  292. if AnimArcTitle4 \= '' then
  293.     asite4 = '<IMG src="file:///'||AnimPath||AnimRdButton'" ALIGN="middle" alt="[ ]"><A HREF="'||AnimArcHRef4||'">'AnimArcTitle4'</A><BR>'
  294. else
  295.     asite4 = '<IMG src="file:///'||AnimPath||AnimRdButton'" ALIGN="middle" alt="[ ]"><A HREF="'||AnimArcHRef4||'">Animation link #4</A><BR>'
  296. if AnimArcTitle5 \= '' then
  297.     asite5 = '<IMG src="file:///'||AnimPath||AnimRdButton'" ALIGN="middle" alt="[ ]"><A HREF="'||AnimArcHRef5||'">'AnimArcTitle5'</A><BR>'
  298. else
  299.     asite5 = '<IMG src="file:///'||AnimPath||AnimRdButton'" ALIGN="middle" alt="[ ]"><A HREF="'||AnimArcHRef5||'">Animation link #5</A><BR>'
  300.  
  301.     if (AnimTables) then do
  302.         call lineout AnimFspec, '</TABLE>'
  303.         call lineout AnimFspec, '</CENTER>'
  304.     end
  305.     else
  306.         call lineout AnimFspec, '</UL>'
  307. call lineout AnimFspec, ''
  308. call lineout AnimFspec, '<CENTER>'
  309. call lineout AnimFspec, bar
  310. call lineout AnimFspec, '</CENTER><P>'
  311. call lineout AnimFspec, ''
  312. call lineout AnimFspec, '<CENTER>'
  313. call lineout AnimFspec, hdr
  314. call lineout AnimFspec, '</CENTER><P>'
  315. if AnimArcHRef1 \= '' then
  316.     call lineout AnimFspec, asite1
  317. if AnimArcHRef2 \= '' then
  318.     call lineout AnimFspec, asite2
  319. if AnimArcHRef3 \= '' then
  320.     call lineout AnimFspec, asite3
  321. if AnimArcHRef4 \= '' then
  322.     call lineout AnimFspec, asite4
  323. if AnimArcHRef5 \= '' then
  324.     call lineout AnimFspec, asite5
  325. call lineout AnimFspec, ''
  326. call lineout AnimFspec, '<HR>'
  327.  
  328. /* only do Building for Merlin logo if user has it defined */
  329. if ((AnimLogo \= '')&(AnimLogoHRef \= '')) then
  330.     do
  331.         call lineout AnimFspec, ''
  332.         line = '<A HREF="'||AnimLogoHRef||'"><IMG src="file:///'||AnimPath||AnimLogo'" ALIGN="middle" alt="[Building for Merlin]">Building for Merlin</A><BR>'
  333.         call lineout AnimFspec, line
  334.         call lineout AnimFspec, ''
  335.     end
  336.  
  337. /* only do Ever Onward logo if user has it defined */
  338. if ((AnimOnward \= '')&(AnimOnwardHRef \= '')) then
  339.     do
  340.         call lineout AnimFspec, ''
  341.         line = '<A HREF="'||AnimOnwardHRef||'"><IMG src="file:///'||AnimPath||AnimOnward'" ALIGN="middle" alt="[Ever OS/2]">Ever Onward OS/2 Campaign</A><BR>'
  342.         call lineout AnimFspec, line
  343.         call lineout AnimFspec, ''
  344.     end
  345.  
  346. /* only do blue ribbon logo if user has it defined */
  347. if ((AnimRibbon \= '')&(AnimRibbonHRef \= '')) then
  348.     do
  349.         call lineout AnimFspec, ''
  350.         line = '<A HREF="'||AnimRibbonHRef||'"><IMG src="file:///'||AnimPath||AnimRibbon'" ALIGN="middle" alt="[Stop Censorship]"><STRONG>Stop censorship on the Internet!</STRONG></A><BR>'
  351.         call lineout AnimFspec, line
  352.         call lineout AnimFspec, ''
  353.     end
  354.  
  355. call lineout AnimFspec, '<HR>'
  356. call lineout AnimFspec, '<ADDRESS>'
  357. line = 'Page designed by <A HREF="mailto:skrebs@inwave.com">Sallie Krebs.</A><BR>'
  358. call lineout AnimFspec, line
  359. line = '<BR>'
  360. call lineout AnimFspec, line
  361. line = 'Many thanks to <A HREF="mailto:ingo@ibm.net">Ingo Guenther</A> for the <STRONG>beautiful</STRONG> top AnimPage graphic.<BR>'
  362. call lineout AnimFspec, line
  363. line = '<BR>'
  364. call lineout AnimFspec, line
  365. line = 'Other graphics borrowed from miscellaneous sources.<BR>'
  366. call lineout AnimFspec, line
  367. call lineout AnimFspec, ''
  368. call lineout AnimFspec, '</ADDRESS>'
  369. call lineout AnimFspec, '</BODY>'
  370. call lineout AnimFspec, '</HTML>'
  371.  
  372. call stream AnimFspec, 'c', 'close'
  373. /* done with the AnimPage.htm file */
  374.  
  375. /* Create individual animation loader files */
  376. /* check each subdirectory: */
  377. do x = 1 to ADir.0
  378.     /* from animation htm, need this link to get back: */
  379.     artn = '<H4><A HREF="file:///'||AnimFspec||'#'||ADir.x.aname||'">Return to AnimPage</A></H4>'
  380.     fspec = AnimDirs.x||'.htm'
  381.     /* if file exists, just delete it */
  382.     rc = SysFileTree(fspec, 'found', 'F')
  383.     if found.0 \= 0 then
  384.         do
  385.             say ''
  386.             say 'Deleting old animation html file'
  387.             'del 'fspec
  388.             say ''
  389.         end
  390.  
  391.     call stream fspec, 'c', 'open write'
  392.  
  393.     call lineout fspec, '<HTML>'
  394.     call lineout fspec, '<HEAD>'
  395.     call lineout fspec, ADir.x.atitle   /* ex: <title>Blox Animation</title> */
  396.     call lineout fspec, '</HEAD>'
  397.     call lineout fspec, '<BODY>'
  398.     call lineout fspec, '<CENTER>'
  399.     ah1 = ADir.x.atitle                 /* strip title tags */
  400.     epos = lastpos('<', ah1) - 1
  401.     ah1 = strip(substr(ah1, 1, epos))
  402.     epos = lastpos('>', ah1) + 1
  403.     ah1 = strip(substr(ah1, epos))
  404.     ah1 = '<H1>'ah1'</H1>'
  405.     call lineout fspec, ah1     /*ex: <h1>Blox Animation</h1> */
  406.     call lineout fspec, '<HR>'
  407.     call lineout fspec, '<H3>Loading Animation...Please Wait.</H3>'
  408.     call lineout fspec, '<ANIMATE>'
  409.  
  410.     do y = 1 to adir.x.0
  411.         afspec = 'file:///'Adir.x.y
  412.         line = '<frame src="'||afspec||'">'
  413.         call lineout fspec, line
  414.     end
  415.  
  416.     call lineout fspec, '</ANIMATE>'
  417.     call lineout fspec, '<HR>'
  418.     call lineout fspec, '<H3>Your animation should now have changed.</H3>'
  419.     call lineout fspec, '</CENTER>'
  420.     call lineout fspec, '<HR>'
  421.  
  422.     do n = 1 to Adir.x.ahref    /* write source info to loader file */
  423.         call lineout fspec, ADir.x.ahref.n
  424.     end
  425.  
  426.     call lineout fspec, '<BR>'
  427.     call lineout fspec, ''
  428.     call lineout fspec, artn    /* return link to AnimPage.htm */
  429.     call lineout fspec, ''
  430.  
  431.     call stream spec, 'c', 'close'
  432. end
  433. /* done creating individual animation loader files */
  434.  
  435. call SysDropFuncs
  436. exit
  437.  
  438. DIE:
  439. cname=condition('C')
  440. say 'A 'cname' error occurred at line number 'sigl'.'
  441. say 'Sourceline = 'sourceline(sigl)'.'
  442. say 'Error 'rc': 'errortext(rc)'.'
  443. call SysDropFuncs
  444. call stream AnimFspec, 'c', 'close'
  445. call stream fspec, 'c', 'close'
  446. exit
  447.  
  448.