home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / skeleton.zip / Skeleton.doc < prev    next >
Text File  |  1995-08-03  |  29KB  |  645 lines

  1.  
  2.  
  3.                                     The REXX Skeleton
  4.  
  5.                  A REXX Program Services Provider for You and Your Users
  6.  
  7.                         Author: Bob Rice - CompuServe: 72421,3016
  8.                          Copyright (c) 1995 Empirical Heuristics
  9.  
  10.                           Documentation for Prolog version 1.0
  11.  
  12.           ________
  13.           Abstract
  14.  
  15.           The REXX Skeleton is a code shell that is very easy to use when
  16.           developing a new REXX program, and fairly simple to retrofit into
  17.           your existing programs.  It provides services to the user of your
  18.           programs as well as to you, the developer, during code development
  19.           and testing.  Below is the feature list of services Skeleton performs
  20.           for you.
  21.  
  22.           ________
  23.           Audience
  24.  
  25.           Skeleton is simple enough to use by a beginning REXX programmer and,
  26.           in fact, will likely provide substantial benefit as he or she learns
  27.           the ins and outs of REXX programming.  For the more advanced REXX
  28.           programmer, Skeleton provides the convenience of getting started on
  29.           that next code file quickly and with a degree of standardization
  30.           that will prove useful as more and more code files proliferate.
  31.  
  32.           Designed primarily for those of us who wish to avoid the overhead of
  33.           those GUI REXX development systems, Skeleton provides features and
  34.           services to each of your programs in a standardized manner.
  35.  
  36.           ____________
  37.           Feature List
  38.  
  39.           Skeleton provides these features and services:
  40.  
  41.           *  Display of embedded help code at several levels:
  42.              +  Brief abstract and syntax only
  43.              +  The above with description of syntax and inclusion of usage
  44.                 notes
  45.              +  The above with the addition of technical information
  46.  
  47.           *  Extraction of embedded help code to a file (possibly for later use
  48.              in the construction of a compendium of all your REXX programs).
  49.  
  50.           *  Automatic initialization of several "global" variables with values
  51.              specific to the particular program being run and the environment
  52.              in which it is running.  These may be used by your program to
  53.              simplify your own code.
  54.  
  55.           *  Automatic external function registration.
  56.  
  57.           *  Automatic trapping of REXX execution time events and errors:
  58.              +  Events include error, failure, halt, novalue, and certain
  59.                 syntax errors
  60.              +  Organized display of event information including the:
  61.                 -  name of the program experiencing the event or error
  62.                 -  type of event or error
  63.                 -  REXX interpreter error code
  64.                 -  description of the error code
  65.                 -  name of the dump file generated as a result of the event
  66.                 -  source line responsible for the event or error
  67.                 -  optional elaboration of the error code description
  68.              +  Generation of a dump file showing:
  69.                 -  an optionally sorted list of the names and values of all
  70.                    variables visible to the program at the time of the event
  71.                 -  the contents of the current data queue, and the SESSION
  72.                    queue as well, if they are not the same
  73.              +  Automatic display of the dump file and the program file with:
  74.                 -  Automatic positioning of the editor cursor on the source
  75.                    line causing the error in the program file
  76.                 -  Ability to specify your favorite file editor and file viewer
  77.  
  78.           *  Debug assistance:
  79.              +  Sensitivity to the value of the TRACE environment variable or
  80.                 the /TRACE parameter to provide code tracing without having to
  81.                 edit the program.
  82.              +  Sensitivity to the value of the DEBUG environment variable or
  83.                 the /DEBUG parameter to provide a "global" debug flag which you
  84.                 can use to selectively execute portions of your code.
  85.              +  A handy debug procedure to dump all or selected variables and
  86.                 their values to a file for examination when problems arise.
  87.  
  88.           Full descriptions of these features and services are provided later
  89.           in this document in the FEATURE EXPLANATION section.
  90.  
  91.           ____________
  92.           Requirements
  93.  
  94.           The REXX Skeleton requires only that you have REXX support enabled on
  95.           your OS/2 system, and that the EPM editor that comes with OS/2 is
  96.           available.  Not all Skeleton features listed above will be available,
  97.           however, unless you also have REXXLIB installed on your system.
  98.  
  99.           REXXLIB is a commercial library of external REXX functions available
  100.           from Quercus Systems.  They currently have a demo version of REXXLIB
  101.           available for download as REXXLB.ZIP from library 11 of the PCVENA
  102.           forum on CompuServe, as well as from various other network and BBS
  103.           locations.  Quercus Systems supports their products in section 11 of
  104.           the same forum.  I might add that the while Skeleton uses only a very
  105.           few functions provided by REXXLIB, the package is rich in function
  106.           and is a very good investment for the beginning REXX programmer as
  107.           well as the more advanced programmer.  See the section, REXXLIB
  108.           Availability, below for information on how to contact Quercus
  109.           Systems.
  110.  
  111.           ________________________
  112.           License and Registration
  113.  
  114.           Copyright (c) 1995 Empirical Heuristics.
  115.  
  116.           Permission is granted to any individual or institution to use, copy,
  117.           or redistribute this software so long as all of the original files
  118.           are included, that none of the files are modified, that it is not
  119.           sold for profit, and that this copyright notice is retained.
  120.  
  121.           The REXX Skeleton package is Shareware with a $0 registration fee.
  122.           What, you say?  Why not just call it Freeware?  Because if you
  123.           register the software by sending an e-mail note to CompuServe address
  124.           72421,3016 with your name, company affiliation if any, and your
  125.           e-mail address, assuming you like and use the package of course, you
  126.           will be notified when bug fixes, enhancements, and additional
  127.           packages become available.
  128.  
  129.           Here are answers to some frequently asked questions:
  130.  
  131.           Q.  Can I distribute Skeleton sources and/or executables?
  132.  
  133.           A.  You may redistribute the latest official distributions, so long
  134.           as no modification is made, without even asking for permission.  You
  135.           can charge for the cost of the distribution media and a small copying
  136.           fee.  You must not distribute beta versions.  The latest official
  137.           distributions are available on CompuServe as file SKELETON.ZIP in
  138.           library 11 (Quercus Systems) of the PCVENA forum as well as library 6
  139.           (REXX/Other Language) of the OS2DF1 forum.
  140.  
  141.           Q.  Can I use the Skeleton code in my software?
  142.  
  143.           A.  Yes, so long as you make it clear in the product documentation
  144.           that Skeleton is not being sold, that the source code is freely
  145.           available, and that there are no extra or hidden charges resulting
  146.           from its use by, or inclusion with, the commercial product.  Here is
  147.           an example of a suitable notice:
  148.  
  149.           NOTE:  <Product> is packaged on this diskette using Empirical
  150.           Heuristics' error handling utility.  <Product> uses Skeleton to trap
  151.           and process REXX errors, providing information in dump files useful
  152.           in determining the source of the errors.  Empirical Heuristics'
  153.           Skeleton is free and can be obtained as source code from various
  154.           sources, including on CompuServe as file SKELETON.ZIP in library 11
  155.           (Quercus Systems) of the PCVENA forum as well as library 6
  156.           (REXX/Other Language) of the OS2DF1 forum.
  157.  
  158.           Q.  Can I use the source code of Skeleton in my commercial
  159.           application?
  160.  
  161.           A.  Yes, so long as you include in your product an acknowledgment and
  162.           an offer of the original Skeleton package for free or for a small
  163.           copying fee, and make clear that there are no extra or hidden charges
  164.           resulting from the use of the Skeleton code by your product.  In
  165.           other words, you are allowed to sell only your own work, not ours.
  166.  
  167.           ______________________
  168.           Warranty and Liability
  169.  
  170.           This software is available to you "as is", that is, without any
  171.           warranty whatsoever of any kind.  Empirical Heuristics excludes any
  172.           and all implied warranties, including warranties of merchantability
  173.           and fitness for a particular purpose.  Empirical Heuristics
  174.           specifically excludes any warranty coverage for incidental and
  175.           consequential damages.
  176.  
  177.           _________________________
  178.           Files Included in Package
  179.  
  180.           See the file Skeleton.pkg.
  181.  
  182.           ____________
  183.           Installation
  184.  
  185.           Installation is very simple.  The easiest way is to copy all files to
  186.           a directory listed in the PATH statement in your CONFIG.SYS file.  Be
  187.           sure no files with these names already exist in that directory, or
  188.           the copy command will overwrite them.
  189.  
  190.           Alternatively, create a new directory to contain the files, copy them
  191.           there, add the path and name of the new directory to your PATH
  192.           statement, and then reboot.
  193.  
  194.           You may discard the Skeleton.pkg file, although it might be handy at
  195.           some time in the future to retain it to identify the files belonging
  196.           to the package.
  197.           _____________________________________________________________________
  198.  
  199.  
  200.           __________________
  201.           USING THE SKELETON
  202.  
  203.           ____________
  204.           Getting Help
  205.  
  206.           The first thing to note is that you can obtain help on using each of
  207.           the programs (except SkelTest.cmd) in the package by simply typing
  208.           its name on the command line followed by a space and a question mark.
  209.           For example, typing
  210.  
  211.           Skeleton ?
  212.  
  213.           will provide help regarding the Skeleton.cmd file.  Any program you
  214.           write using Skeleton as its basis, utilizes the prolog in the
  215.           Skeleton to provide this kind of help.  The other programs in this
  216.           package do not make use of the Skeleton, and instead have been
  217.           specifically coded to use TellHelp.cmd to provide help.
  218.  
  219.           The programs will also accept ?? and ??? instead of ? to provide
  220.           additional help.  In addition using ???? will place the help in a
  221.           file which you can then view with your favorite file viewer.
  222.  
  223.           ________________________
  224.           Developing a New Program
  225.  
  226.           To begin work on a new program code file, copy Skeleton.cmd to a new
  227.           file.  For example,
  228.  
  229.           COPY Skeleton.cmd MyPgm.cmd
  230.  
  231.           Now, edit MyPgm.cmd, add help information specific to your new
  232.           program, and develop your own program code immediately after the
  233.           comment box marked START OF PROGRAM.  That's all there is to it!
  234.           Your new program now embraces all the features and services provided
  235.           by Skeleton.
  236.  
  237.           A full explanation of how to use the Skeleton can be found by typing
  238.  
  239.           skeleton ???          to view the information on the screen
  240.  
  241.           or
  242.  
  243.           skeleton ????         to dump the info to a file to view it
  244.  
  245.           ______________________________________
  246.           Adding Skeleton to an Existing Program
  247.  
  248.           The procedure for adding Skeleton to your existing programs is quite
  249.           similar to that described above for a new program, except that
  250.           instead of developing your own code, you simply import your existing
  251.           code immediately after the START OF PROGRAM comment box.
  252.  
  253.           ________________________
  254.           Getting to Know Skeleton
  255.  
  256.           If you want a quick demo of Skeleton to see what it can do for your
  257.           REXX coding efforts, you can do this very easily.  First, take a look
  258.           at the code in the file SkelTest.cmd.  Pay particular attention to
  259.           the comment blocks.  Then, run SkelTest.cmd from the command line.
  260.           Notice how REXX handles the error.  Try it again.  Now let's make use
  261.           of the Skeleton.
  262.  
  263.           Copy the Skeleton to a new file so we can work with it, maybe:
  264.  
  265.           copy Skeleton.cmd SkelDemo.cmd
  266.  
  267.           Now edit SkelDemo.cmd and paste the entire SkelTest.cmd file into it
  268.           just after the START OF PROGRAM comment block.  Save the file and run
  269.           it from the command line.  Notice how Skeleton handles the error.
  270.  
  271.           First of all, the display of the error is quite a bit more organized,
  272.           but essentially it's the same information that REXX provides for the
  273.           error when the Skeleton is not used.  But Skeleton goes the extra
  274.           mile, providing more information to help you debug your program by
  275.           offering, when appropriate, to elaborate on the error description,
  276.           and generating a dump file containing a list of all the variables,
  277.           and their values, that were visible to the program at the point the
  278.           error occurred.
  279.  
  280.           Skeleton also makes it convenient for you to see the dump file by
  281.           offering to open it for you in your favorite file viewer (EPM by
  282.           default).  Skeleton even offers to sort the file for you so the
  283.           variable names are in alphanumerical order.  This is the default
  284.           option if you just press Enter at the prompt.  You may also press v
  285.           to view the file without sorting.  This may be useful when there a
  286.           very large number of variables and the sort process is too slow for
  287.           you.  Or you can press n to skip seeing the file.
  288.  
  289.           NOTE:  Skeleton does not build this dump file if REXXLIB is not
  290.           installed on your system.  Contact Quercus Systems to obtain a copy
  291.           of REXXLIB.  See the end of this document for more information on
  292.           contacting Quercus Systems.
  293.  
  294.           Page down through this dump file.  Notice that the content of the
  295.           REXX data queue has also been captured.  Take a good look at this
  296.           information.  The program places only five lines in the queue.  Why
  297.           are there so many?  Have you ever played around with data queues and
  298.           had a dickens of a time trying to find out what was happening?  Could
  299.           it be that some previous program left some data in the queue?  That's
  300.           what has happened here.  When you ran SkelTest.cmd and hit the
  301.           failure, REXX quit, leaving some data on the queue.
  302.  
  303.           With Skeleton, extra data in the queue will no longer be a problem
  304.           since the queue is flushed of all data when Skeleton processes it.
  305.           To prove it, run SkelDemo.cmd again -- but not just yet because we're
  306.           not finished discussing Skeleton.  You will notice only five lines in
  307.           the queue this time, those put there by the current run.
  308.  
  309.           When you're done viewing the dump file, just close your editor or
  310.           viewer and Skeleton will then ask you whether or not you want to edit
  311.           the command file that failed with the error.  If you respond y, the
  312.           default, it will open the file in your favorite editor (EPM by
  313.           default) and position the cursor on the line in error.
  314.  
  315.           The dump file generated by Skeleton has the name of the failing
  316.           program and a file extent of .DMP, so if you need to, you can bring
  317.           that file into the editor (assuming your editor has the capability to
  318.           edit at least two files at the same time, which EPM does) as you edit
  319.           the command file.
  320.  
  321.           The above is just some of the convenience Skeleton provides your
  322.           programs.  Wouldn't it be nice if your users could send you the .DMP
  323.           file when a problem occurs?  In addition, there is the embedded help
  324.           capability which makes it very easy for users to obtain help
  325.           information specific to your program, the trace and debug facilities,
  326.           the automatic external function registration, and the handy "global"
  327.           variables Skeleton provides, all of which are described in more
  328.           detail later in this document.
  329.  
  330.           __________________
  331.           File Usage Caution
  332.  
  333.           Programs employing Skeleton will generate a dump file when an error
  334.           or event is trapped.  This file will have the name of the program
  335.           experiencing the error or event and a file extent of .DMP and will be
  336.           created in the current directory.  The file is created without
  337.           checking if it will overlay any file by the same name.
  338.  
  339.           Using a parameter of ???? to request embedded help be placed in an
  340.           abstract file will create a file with the name of the program and a
  341.           file extent of .ABS in the current directory.  The file is created
  342.           without checking if it will overlay any file of the same name.
  343.           _____________________________________________________________________
  344.  
  345.  
  346.           ___________________
  347.           FEATURE EXPLANATION
  348.  
  349.           ____________________________________
  350.           Embedded Help Display and Extraction
  351.  
  352.           These features are discussed in the embedded help of the Skeleton.cmd
  353.           and TellHelp.cmd files.  Type
  354.  
  355.           Skeleton ???
  356.  
  357.           and
  358.  
  359.           TellHelp ???
  360.  
  361.           for complete information on these features.
  362.  
  363.           ______________________________________________
  364.           Automatic Initialization of "Global" Variables
  365.  
  366.           Type
  367.  
  368.           Skeleton ???
  369.  
  370.           for a list and explanation of these variables.
  371.  
  372.           ________________________________________
  373.           Automatic External Function Registration
  374.  
  375.           In order for your programs to make use of external REXX function
  376.           libraries, they must be registered with the system so REXX can
  377.           recognize them.  The program FuncReg.cmd is called by the Skeleton to
  378.           perform this function for you.  This is a general purpose routine
  379.           that is not specific to the Skeleton (although it is required by the
  380.           Skeleton).  You may call it at any time from the command line.  As a
  381.           matter of fact, I suggest you call it from your STARTUP.CMD file to
  382.           ensure that the functions are automatically registered at boot time.
  383.  
  384.           ___________________________________________________________
  385.           Automatic Trapping of REXX Execution Time Events and Errors
  386.  
  387.           These features are pretty well summarized in the Feature List above.
  388.           Perhaps the best way to see what this is all about is to create an
  389.           error and see what happens.  To do this, edit Skeleton.cmd and insert
  390.           the line
  391.  
  392.           a = b
  393.  
  394.           just after the START OF PROGRAM comment and before the exit
  395.           statement, then type
  396.  
  397.           Skeleton
  398.  
  399.           on the command line.  What you should see is the Skeleton trapping
  400.           the error (the value of b was never set), displaying it nicely in a
  401.           box on the screen, generating a .DMP file, giving you the opportunity
  402.           to view that file, and then opening your program file in the editor
  403.           with the cursor positioned on the line in error.  Note that unless
  404.           you have REXXLIB installed, the .DMP file will not be generated.
  405.  
  406.           NOTE:  Don't forget to remove that a = b line from Skeleton when
  407.           you're done.
  408.  
  409.           _______________________________________________
  410.           Specifying Your Favorite File Editor and Viewer
  411.  
  412.           Two programs, ErhEdit.cmd and ErhView.cmd, are designed so that you
  413.           can specify your favorite file editor and viewer, respectively.  Edit
  414.           these programs to use your favorites.  The help in these programs
  415.           tell you what parameters will be supplied when they are called by the
  416.           error handler in Skeleton.  As supplied, they use the EPM editor that
  417.           comes with REXX.
  418.  
  419.           ________________
  420.           Debug Assistance
  421.  
  422.  
  423.           Tracing
  424.  
  425.           Tracing can be initiated in one of two ways.  You can set the value
  426.           of the TRACE environment variable to a valid REXX trace instruction
  427.           parameter value.  (See "OS/2 Procedures Language 2/REXX" online help
  428.           for an explanation of the trace instruction.  You can see this
  429.           information by typing START VIEW REXX TRACE on the command line.)
  430.           You can set this value with the OS/2 SET command.  For example, if
  431.           you wanted to set tracing to "?r", you would type
  432.  
  433.           SET TRACE=?r
  434.  
  435.           on the command line.  To turn tracing off, type
  436.  
  437.           SET TRACE=
  438.  
  439.           on the command line.
  440.  
  441.           In addition to the TRACE environment variable, you can also initiate
  442.           tracing by using the /TRACE parameter when invoking your program.
  443.           For example, if your program is called MyPgm.cmd, you would type
  444.  
  445.           MyPgm /TRACE ?r
  446.  
  447.           on the command line if you wanted to use the same trace parameter.
  448.           If your program requires parameters, you would place them after your
  449.           program name and before the /TRACE parameter.
  450.  
  451.  
  452.           Debugging
  453.  
  454.           While no specific debug code is built into the Skeleton, you can use
  455.           the /DEBUG parameter to set the value of EH.debug to 1.  Then you can
  456.           use the this variable in your code to control, for example, the
  457.           display of certain information about your program.  For example,
  458.  
  459.           /*  your code */
  460.           .
  461.           .
  462.           .
  463.           if EH.debug then say 'Debug is turned on.'
  464.           .
  465.           .
  466.           .
  467.  
  468.           Obviously, you can use this variable for other purposes as well, but
  469.           that's up to you.  Its value will always be either 0 or 1.
  470.  
  471.           In a manner similar to the TRACE environment variable, the DEBUG
  472.           environment variable can be set.  However, its only permissible
  473.           values are 0, 1, and null.  If set to 1, then EH.debug will be 1.  If
  474.           set to anything else, EH.debug will be 0.  Also like TRACE, the value
  475.           of the parameter will override the value of the environment variable.
  476.           _____________________________________________________________________
  477.  
  478.  
  479.           _____________________
  480.           TECHNICAL INFORMATION
  481.  
  482.           The calling hierarchy of the various component commands:
  483.  
  484.           Skeleton
  485.           |--ErhTrap
  486.           |  |--AskUser
  487.           |  |  '--TellHelp
  488.           |  |      '--AskUser
  489.           |  |--ErhEdit
  490.           |  |  '--TellHelp
  491.           |  |     '--AskUser
  492.           |  |--ErhView
  493.           |  |  '--TellHelp
  494.           |  |     '--AskUser
  495.           |  |--QueDump
  496.           |  |  |--AskUser
  497.           |  |  |--Exist
  498.           |  |  |  '--TellHelp
  499.           |  |  |      '--AskUser
  500.           |  |  '--TellHelp
  501.           |  |     '--AskUser
  502.           |  '--TellHelp
  503.           |     '--AskUser
  504.           |--FuncReg
  505.           |  '--TellHelp
  506.           |     '--AskUser
  507.           '--TellHelp
  508.              '--AskUser
  509.  
  510.  
  511.           ________________________
  512.           General Purpose Programs
  513.  
  514.           The ErhTrap program is intended solely for the use of the Skeleton.
  515.           You need not worry about it.
  516.  
  517.           See the section Specifying Your Favorite File Editor and Viewer above
  518.           for information on the ErhEdit and ErhView programs.
  519.  
  520.           The remaining programs are of a general nature and can be called by
  521.           you in your own code to make use of the functions they offer.
  522.  
  523.  
  524.           AskUser
  525.  
  526.           Anytime you need to put a one-line query on the screen to ask the
  527.           user a question requiring a single character response, you can use
  528.           this program.
  529.  
  530.  
  531.           Exist
  532.  
  533.           This program is handy for checking for the existence of one or more
  534.           files or directories.  It's easier to use than the SysFileTree
  535.           function of REXXUTIL when all you're trying to determine is if a
  536.           file or directory exists.
  537.  
  538.  
  539.           FuncReg
  540.  
  541.           This is discussed above in the section Automatic External Function
  542.           Registration.
  543.  
  544.  
  545.           QueCmd
  546.  
  547.           Capturing the output of an OS/2 command and placing it in the REXX
  548.           data queue for use by your program is trivial with this program.
  549.  
  550.  
  551.           QueDump
  552.  
  553.           This provides a debugging feature which enables you to dump the
  554.           contents of a data queue to a file so you can see its contents.
  555.           Handy whenever you are having problems with data queues.
  556.  
  557.  
  558.           TellHelp
  559.  
  560.           Displays embedded help text from programs employing such help.
  561.           Optionally places the help text in an abstract file.
  562.           _____________________________________________________________________
  563.  
  564.  
  565.           _______________
  566.           PROGRAM SUPPORT
  567.  
  568.           I am interested primarily in supplying you with quality software.
  569.           While I believe that the software I release is without bugs, I must
  570.           emphasize that it has been tested in a limited environment.  Should
  571.           you discover a problem with this software on your system, I certainly
  572.           would like to know about it.  I will work with you as best I can to
  573.           resolve the problem, and if it requires a change in my software, I
  574.           will make any appropriate changes.
  575.  
  576.           I am also open to your suggestions for additional features or
  577.           enhancement of existing features.
  578.  
  579.           I usually frequent the following CompuServe forum sections,
  580.           especially the last one listed:
  581.  
  582.           Forum         Section
  583.           --------      ------------------------
  584.           OS2BVEN        1 - OS/2 Shareware
  585.           OS2DF1         6 - REXX/Other Language
  586.           OS2SUPPO      10 - REXX/Lang. Quest.
  587.           PCVENA        11 - Quercus Systems
  588.  
  589.           You can also reach me via e-mail on CompuServe:
  590.           Bob Rice - 74241,3016
  591.  
  592.           Empirical Heuristics
  593.           P.O. Box 189
  594.           West Hurley, NY 12491
  595.           _____________________________________________________________________
  596.  
  597.  
  598.           ____________
  599.           FUTURE PLANS
  600.  
  601.           Skeleton is the basis for many of the utilities I write.  I have
  602.           several under development now.
  603.  
  604.           One of the utilities will scan your hard drives and catalog all your
  605.           .CMD files.  Another utility will scan a REXX code file and build a
  606.           cross reference of all function calls.  Still another utility will
  607.           monitor the OS/2 boot process and provide a log of how long the
  608.           system has been running from bootup to shutdown or crash.  There's
  609.           even a utility to read CIS .MSG files and copy certain messages from
  610.           it to another file.  These are still in the development stage and may
  611.           or may not become a reality, but this will give you some idea of my
  612.           plans.
  613.  
  614.           I plan to release another Shareware (but probably not for Zero-cost)
  615.           package of these and other utilities that I have found useful and may
  616.           also be useful to you.
  617.           _____________________________________________________________________
  618.  
  619.  
  620.           ____________________
  621.           REXXLIB Availability
  622.  
  623.           If you wish to obtain REXXLIB, you may contact Quercus Systems at:
  624.  
  625.           Quercus Systems
  626.           P. O. Box 2157
  627.           Saratoga, CA 95070
  628.  
  629.            phones: (408) 867-7399, (800) 440-5944
  630.               fax: (408) 867-7489
  631.               bbs: (408) 867-7488
  632.  
  633.             email: 75300.2450@compuserve.com
  634.           ftp/www: (coming soon)
  635.  
  636.           _____________________________________________________________________
  637.           Document Data:
  638.  
  639.           $Revision:   1.0  $
  640.               $Date:   03 Aug 1995 20:11:32  $
  641.                $Log:   Q:/rxdv/skeleton/vcs/skeleton.do!  $
  642.           
  643.              Rev 1.0   03 Aug 1995 20:11:32
  644.           Initial revision.
  645.