home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD5.iso / workbench / libs / rexmooslib.lha / MOOS / Docs / english / rexx_dos.doc < prev    next >
Encoding:
Text File  |  1997-02-03  |  21.2 KB  |  799 lines

  1.  
  2.  
  3. TABLE OF CONTENTS
  4.  
  5. --background--
  6. rexx_dos.library/AddPart
  7. rexx_dos.library/Delay
  8. rexx_dos.library/DeleteVar
  9. rexx_dos.library/ExAll
  10. rexx_dos.library/Examine
  11. rexx_dos.library/GetVar
  12. rexx_dos.library/Info
  13. rexx_dos.library/MatchPattern
  14. rexx_dos.library/ReadArgs
  15. rexx_dos.library/ReadBlock
  16. rexx_dos.library/SetVar
  17. rexx_dos.library/SplitPath
  18. rexx_dos.library/WriteBlock
  19.  
  20.  
  21. --background--                                                  --background--
  22.  
  23.  $(C): (1996, Rocco Coluccelli, Bologna)
  24.  $VER: rexx_dos.library 37.0 (30.01.97)
  25.  
  26.     rexx_dos.library
  27.  
  28.     This sub-library of the rexxMOOS.library let ARexx programmers
  29.     use some function from the system dos.library
  30.  
  31.         AddPart()
  32.         Delay()
  33.         DeleteVar()
  34.         ExAll()
  35.         Examine()
  36.         GetVar()
  37.         Info()
  38.         MatchPattern()
  39.         ReadArgs()
  40.         ReadBlock()
  41.         SetVar()
  42.         SplitPath()
  43.         WriteBlock()
  44.  
  45.     NOTES
  46.  
  47.         Is part of the MOOS package.
  48.  
  49.     TODO
  50.  
  51.         Support for memory pools.
  52.  
  53.     BUGS
  54.  
  55. rexx_dos.library/AddPart                              rexx_dos.library/AddPart
  56.  
  57.     NAME
  58.  
  59.         AddPart -- Appends a file/dir to the end of a path.
  60.  
  61.     SYNOPSIS
  62.  
  63.         path = AddPart(dirname,filename)
  64.  
  65.     FUNCTION
  66.  
  67.         This function adds a file, directory, or subpath name to a
  68.         directory path name taking into account any required separator
  69.         characters. If filename is a fully-qualified path it will totally
  70.         replace the current value of dirname.
  71.  
  72.     INPUTS
  73.  
  74.         dirname  - the path to add a file/directory name to.
  75.  
  76.         filename - the filename or directory name to add.
  77.  
  78.     RESULT
  79.  
  80.         The path resulting from dirname and filename.
  81.  
  82.     EXAMPLE
  83.  
  84.         SAY AddPart("RAM:foo","bar")
  85.  
  86.     NOTES
  87.  
  88.     BUGS
  89.  
  90.     SEE ALSO
  91.  
  92.         dos.library/AddPart(), rexx_dos.library/SplitPath()
  93.  
  94. rexx_dos.library/Delay                                  rexx_dos.library/Delay
  95.  
  96.     NAME
  97.  
  98.         Delay -- Delay a process for a specified time.
  99.  
  100.     SYNOPSIS
  101.  
  102.         Delay(ticks)
  103.  
  104.     FUNCTION
  105.  
  106.         The argument 'ticks' specifies how many ticks (50 per second)
  107.         to wait before returning control.
  108.  
  109.     INPUTS
  110.  
  111.         ticks - Any positive integer number. A negative value will be
  112.                 converted to zero.
  113.  
  114.     EXAMPLE
  115.  
  116.         CALL Delay(100)     /* wait for 2 seconds */
  117.  
  118.     NOTES
  119.  
  120.     SEE ALSO
  121.  
  122.         rexxsupport.library/Delay(), dos.library/Delay()
  123.  
  124. rexx_dos.library/DeleteVar                          rexx_dos.library/DeleteVar
  125.  
  126.     NAME
  127.  
  128.         DeleteVar -- Delete a local or global variable.
  129.  
  130.     SYNOPSIS
  131.  
  132.         success = DeleteVar(name,options)
  133.  
  134.     FUNCTION
  135.  
  136.         The function try to delete the given environment variable.
  137.  
  138.     INPUTS
  139.  
  140.         name    - The variable name.
  141.  
  142.         options - "Loc=Local/S"
  143.  
  144.             "Local" - Delete a local variable for the current process.
  145.                       (default is to delete a Global variable)
  146.  
  147.     RESULT
  148.  
  149.         success - boolean value (1 mean all done, ok).
  150.  
  151.     EXAMPLE
  152.  
  153.         CALL DeleteVar("language")
  154.  
  155.     NOTES
  156.  
  157.         Since ARexx spawns a new process of each script, even if
  158.         started from Shell, option "Local" may not work as supposed.
  159.  
  160.     SEE ALSO
  161.  
  162.         dos.library/DeleteVar(), rexx_dos.library/SetVar()
  163.  
  164. rexx_dos.library/ExAll                                  rexx_dos.library/ExAll
  165.  
  166.     NAME
  167.  
  168.         ExAll -- Examine an entire directory.
  169.  
  170.     SYNOPSIS
  171.  
  172.         success = ExAll(pattern,options)
  173.  
  174.     FUNCTION
  175.  
  176.         The function examine an entire directory doing a pattern match
  177.         on all file names before writing them into the output stem.
  178.  
  179.     INPUTS
  180.  
  181.         pattern - A valid AmigaDOS pattern string. It can include a
  182.                   specification of the path where is to execute the
  183.                   function. See also MatchPattern() to find more
  184.                   information about an AmigaDOS pattern structure.
  185.  
  186.         options - "OutStem/A,Type/K/N,Fields/K/N,Prot/S"
  187.  
  188.             "OutStem" - The output stem must be specified. It will
  189.                         receive all datas readed from the function
  190.                         for every matched file. The stem variable
  191.                         consists of the following fields:
  192.  
  193.                             <stem.>count
  194.                                 The number of files processed.
  195.  
  196.                             <stem.>n.Name
  197.                                 The file name, without the path.
  198.  
  199.                             <stem.>n.Type
  200.                                 "FILE" or "DIRECTORY".
  201.  
  202.                             <stem.>n.Size
  203.                                 The file size, in bytes.
  204.  
  205.                             <stem.>n.Prot
  206.                                 The protection bits. See Examine()
  207.                                 for more details about them.
  208.  
  209.                             <stem.>n.WDay
  210.                                 The day of the week that the file was
  211.                                 last changed.
  212.  
  213.                             <stem.>n.Date
  214.                                 The date of the last change.
  215.  
  216.                             <stem.>n.Time
  217.                                 The time of the last change.
  218.  
  219.                             <stem.>N.Note
  220.                                 File comment.
  221.  
  222.             "Type"    - Not always is necessary to read all the above
  223.                         information from a set of files. To select which
  224.                         attributes are to read we can use this keyword
  225.                         followed by a number:
  226.  
  227.                             1 - To output only the field "Name"
  228.                             2 - Output also "Type"
  229.                             3 - Output also "Size"
  230.                             4 - Output also "Prot"
  231.                             5 - Output also "Date", "WDay", "Time"
  232.                             6 - Output also "Note"
  233.  
  234.             "Fields"  - Instead of using the "type" we can specify
  235.                         which field we need as output... NOT_YET
  236.  
  237.             "Prot"    - By default the protection bits normally used
  238.                         from any AmigaDOS filesystem are returned in
  239.                         the form "srwed". Using this option they will
  240.                         be returned as the original long value.
  241.  
  242.     RESULT
  243.  
  244.         success - boolean value (1 mean all done, ok).
  245.  
  246.     EXAMPLE
  247.  
  248.         IF ExAll("Devs:#?.device","ex.") THEN
  249.             DO n = 0 FOR ex.count
  250.                 SAY "Name" ex.n.Name
  251.             END
  252.  
  253.     NOTES
  254.  
  255.     SEE ALSO
  256.  
  257.         rexx_dos.library/Examine(), dos.library/ExAll()
  258.  
  259. rexx_dos.library/Examine                              rexx_dos.library/Examine
  260.  
  261.     NAME
  262.  
  263.         Examine -- Examine the FileInfoBlock for a file/dir.
  264.  
  265.     SYNOPSIS
  266.  
  267.         success = Examine(path,options)
  268.  
  269.     FUNCTION
  270.  
  271.         The function examines the given file/directory and returns all
  272.         information stored into its FileInfoBlock structure.
  273.  
  274.     INPUTS
  275.  
  276.         path    - Any existing file or directory.
  277.  
  278.         options - "OutStem/A,Prot/S"
  279.  
  280.             "OutStem" - The output stem must be specified. It will
  281.                         receive all datas readed from the given path.
  282.                         The stem variable has the following fields:
  283.  
  284.                             <stem.>FileName
  285.  
  286.                             <stem.>DiskKey
  287.  
  288.                             <stem.>DirEntryType
  289.                                 "FILE" or "DIRECTORY".
  290.  
  291.                             <stem.>EntryType
  292.  
  293.                             <stem.>Protection
  294.                                 The protection bits. Using the option
  295.                                 switch "Prot/S" the function returns
  296.                                 the original integer value of the
  297.                                 protections bits.
  298.  
  299.                             <stem.>Size
  300.  
  301.                             <stem.>NumBlocks
  302.  
  303.                             <stem.>Comment
  304.  
  305.                             <stem.>WeekDay
  306.  
  307.                             <stem.>Date
  308.  
  309.                             <stem.>Time
  310.  
  311.                             <stem.>OwnerUID
  312.  
  313.                             <stem.>OwnerGID
  314.  
  315.                         Read the include file <dos/dos.h> to find
  316.                         more information about these fields.
  317.  
  318.             "Prot"    - By default the protection bits normally used
  319.                         from any AmigaDOS filesystem are returned in
  320.                         the form "srwed". Using this option they will
  321.                         be returned as the original long value.
  322.  
  323.     RESULT
  324.  
  325.         success - boolean value (1 mean all done, ok).
  326.  
  327.     EXAMPLE
  328.  
  329.         IF Examine("c:List","ex.") THEN DO
  330.             SAY "DiskKey     " ex.DiskKey
  331.             SAY "DirEntryType" ex.DirEntryType
  332.             SAY "FileName    " ex.FileName
  333.             SAY "Protection  " ex.Protection
  334.             SAY "EntryType   " ex.EntryType
  335.             SAY "Size        " ex.Size
  336.             SAY "NumBlocks   " ex.NumBlocks
  337.             SAY "Comment     " ex.Comment
  338.             SAY "WeekDay     " ex.WeekDay
  339.             SAY "Date        " ex.Date
  340.             SAY "Time        " ex.Time
  341.             SAY "OwnerUID    " ex.OwnerUID
  342.             SAY "OwnerGID    " ex.OwnerGID
  343.             END
  344.  
  345.     NOTES
  346.  
  347.     SEE ALSO
  348.  
  349.         rexx_dos.library/ExAll(), dos.library/Examine()
  350.  
  351. rexx_dos.library/GetVar                                rexx_dos.library/GetVar
  352.  
  353.     NAME
  354.  
  355.         GetVar -- Returns the value of a local or global variable.
  356.  
  357.     SYNOPSIS
  358.  
  359.         ret = GetVar(name,options)
  360.  
  361.     FUNCTION
  362.  
  363.         Gets the value of a local or environment variable. It may
  364.         checks only if the specified variable exists. The function
  365.         may also delete the variable after reading its value or after
  366.         verifing its existance.
  367.  
  368.     INPUTS
  369.  
  370.         name    - The variable name.
  371.  
  372.         options - "Loc=Local/S,Del=Delete/S,Exists/S"
  373.  
  374.             "Local"  - By default, the function tries to get a global
  375.                        variable. Using this switch we can force the
  376.                        function to search into the local variable list.
  377.  
  378.             "Delete" - The variable will be deleted after readed.
  379.  
  380.             "Exists" - Check if the variable exists. The function
  381.                        doesn't return its content.
  382.  
  383.     RESULT
  384.  
  385.         The function returns the variable content. Specifing the switch
  386.         "Exists/S" the function returns a boolean value (1 mean "exists").
  387.  
  388.     EXAMPLE
  389.  
  390.         SAY "language =" GetVar("language")
  391.  
  392.     NOTES
  393.  
  394.         Since ARexx spawns a new process of each script, even if
  395.         started from Shell, option "Local" may not work as supposed.
  396.         Read the autodocs for the dos.library and the support of the
  397.         environment variables.
  398.  
  399.     SEE ALSO
  400.  
  401.         rexx_dos.library/SetVar(), dos.library/GetVar()
  402.  
  403. rexx_dos.library/Info                                    rexx_dos.library/Info
  404.  
  405.     NAME
  406.  
  407.         Info -- Returns information about any disk in use.
  408.  
  409.     SYNOPSIS
  410.  
  411.         success = Info(path,options)
  412.  
  413.     FUNCTION
  414.  
  415.         It can be used to find information about any disk in use.
  416.  
  417.     INPUTS
  418.  
  419.         path    - The function returns information about a disk. This
  420.                   argument may be a volume name (DF0:, HD0:, etc), but
  421.                   we can give also the path of any file and the function
  422.                   will find the right disk by itself.
  423.  
  424.         options - "OutStem/A"
  425.  
  426.             "OutStem" - The output stem must be specified. It will
  427.                         receive all datas readed from the indicated
  428.                         disk. These fields are returned:
  429.  
  430.                             <stem.>VolumeName
  431.                                 Volume name of the disk
  432.  
  433.                             <stem.>DateStamp
  434.                                 Volume creation date
  435.  
  436.                             <stem.>NumSoftErrors
  437.                                 Number of soft errors on disk
  438.  
  439.                             <stem.>UnitNumber
  440.                                 Which unit disk is mounted on
  441.  
  442.                             <stem.>DiskState
  443.                                 WRITE_PROTECTED, VALIDATING or VALIDATED
  444.  
  445.                             <stem.>NumBlocks
  446.                                 Number of blocks on disk.                       
  447.  
  448.                             <stem.>NumBlocksUsed
  449.                                 Number of blocks in use
  450.  
  451.                             <stem.>BytesPerBlock
  452.                                 Number of bytes per block
  453.  
  454.                             <stem.>DiskType
  455.                                 Disk type:
  456.  
  457.                                     "NONE" - No disk_present
  458.                                     "BAD0" - Unreadable disk
  459.                                     "DOS0" - DOS disk
  460.                                     "DOS1" - FFS disk
  461.                                     "DOS2" - Inter DOS disk
  462.                                     "DOS3" - Inter FFS disk
  463.                                     "DOS4" - Fastdir DOS disk
  464.                                     "DOS5" - Fastdir FFS disk
  465.                                     "NDOS" - Not really DOS
  466.                                     "KICK" - Kickstart disk
  467.                                     "MSD0" - MsDos disk 
  468.  
  469.                             <stem.>InUse
  470.                                 Boolean, zero if not in use.
  471.  
  472.                         Read the include file <dos/dos.h> to find
  473.                         more information about these fields.
  474.  
  475.     RESULT
  476.  
  477.         success - boolean value (1 mean all done, ok).
  478.  
  479.     EXAMPLE
  480.  
  481.         IF Info("SYS:","ex.") THEN DO
  482.             SAY "VolumeName    " ex.VolumeName
  483.             SAY "DateStamp     " ex.DateStamp
  484.             SAY "NumSoftErrors " ex.NumSoftErrors
  485.             SAY "UnitNumber    " ex.UnitNumber
  486.             SAY "DiskState     " ex.DiskState
  487.             SAY "NumBlocks     " ex.NumBlocks
  488.             SAY "NumBlocksUsed " ex.NumBlocksUsed
  489.             SAY "BytesPerBlock " ex.BytesPerBlock
  490.             SAY "DiskType      " ex.DiskType
  491.             SAY "InUse         " ex.InUse
  492.             END
  493.  
  494.     NOTES
  495.  
  496.     SEE ALSO
  497.  
  498.         rexx_dos.library/ExAll(), dos.library/Info()
  499.  
  500. rexx_dos.library/MatchPattern                    rexx_dos.library/MatchPattern
  501.  
  502.     NAME
  503.  
  504.         MatchPattern -- Pattern matching on a string.
  505.  
  506.     SYNOPSIS
  507.  
  508.         success = MatchPattern(pattern,string,options)
  509.  
  510.     FUNCTION
  511.  
  512.         The function checks for a pattern match with a string.
  513.  
  514.     INPUTS
  515.  
  516.         pattern - The patterns are fairly extensive, and approximate some
  517.                   of the ability of Unix/grep "regular expression"
  518.                   patterns. Here are the available tokens:
  519.  
  520.                     ?       Matches a single character.
  521.                     #       Matches the following expression 0 or
  522.                             more times.
  523.                     (ab|cd) Matches any one of the items seperated by '|'.
  524.                     ~       Negates the following expression. It matches
  525.                             all strings that do not match the expression
  526.                             (aka ~(foo) matches all strings that are not
  527.                             exactly "foo").
  528.                     [abc]   Character class: matches any of the characters
  529.                             in the class.
  530.                     [~bc]   Character class: matches any of the characters
  531.                             not in the class.
  532.                     a-z     Character range (only within character classes). 
  533.                     %       Matches 0 characters always.
  534.                             (useful in "(foo|bar|%)")
  535.  
  536.                   "Expression" in the above table means either a single
  537.                   character (ex: "#?"), or an alternation (ex:
  538.                   "#(ab|cd|ef)"), or a character class (ex: "#[a-zA-Z]").
  539.  
  540.         string  - String to match against given pattern.
  541.  
  542.         options - "Case/S"
  543.  
  544.             "Case" - Do a pattern matching case-sensitive.
  545.                      (default is case-insensitive)
  546.  
  547.     RESULT
  548.  
  549.         success - boolean value (1 mean all done, ok).
  550.  
  551.     EXAMPLE
  552.  
  553.         SAY MatchPattern("Con#?","L:Kingcon-handler")
  554.         SAY MatchPattern("#?Con#?","L:Kingcon-handler")
  555.  
  556.     NOTES
  557.  
  558.     BUGS
  559.  
  560.         The MatchPattern() function doesn't work with string that
  561.         contain any null ('00'x) character. See the dos.library
  562.         documentation for more details.
  563.  
  564.     SEE ALSO
  565.  
  566.         dos.library/MatchPattern(), rexx_stem.library/StemSearch()
  567.  
  568. rexx_dos.library/ReadArgs                            rexx_dos.library/ReadArgs
  569.  
  570.     NAME
  571.  
  572.         ReadArgs -- Parse a string based on a template.
  573.  
  574.     SYNOPSIS
  575.  
  576.         success = ReadArgs(string,template,options)
  577.  
  578.     FUNCTION
  579.  
  580.         This function let's take advantage of the well known ReadArgs()
  581.         contained into the system dos.library. Read its autodocs to
  582.         find more details about templates.
  583.  
  584.     INPUTS
  585.  
  586.         string   - The argument string to be parsed.
  587.  
  588.         template - The template.
  589.  
  590.         options - "OutStem"
  591.  
  592.             "OutStem" - The output stem must be specified. It will
  593.                         receive all datas readed from the function
  594.                         for every matched file:
  595.  
  596.                             <stem.>NOT_YET
  597.  
  598.     RESULT
  599.  
  600.         success - boolean value (1 mean all done, ok).
  601.  
  602.     EXAMPLE
  603.  
  604.     NOTES
  605.  
  606.         For those options, into the template string, prepended by
  607.         an abbreviation (eg: "QUICK=Q/S"), making the output stem
  608.         or writing the relative variable will be used only the first
  609.         entry found, no matter which is the shortest.
  610.  
  611.     BUGS
  612.  
  613.     SEE ALSO
  614.  
  615.         dos.library/ReadArgs()
  616.  
  617. rexx_dos.library/ReadBlock                          rexx_dos.library/ReadBlock
  618.  
  619.     NAME
  620.  
  621.         ReadBlock -- Returns the content of a given file.
  622.  
  623.     SYNOPSIS
  624.  
  625.         string = ReadBlock(file,options)
  626.  
  627.     FUNCTION
  628.  
  629.         The function reads the given file and returns its content.
  630.         If the specified file is longer than 64k the result will be
  631.         truncated to the maximum length of an ARexx variable.
  632.  
  633.     INPUTS
  634.  
  635.         file    - The input file path.
  636.  
  637.         options - "Del=Delete/S"
  638.  
  639.             "Delete" - Delete the file after read.
  640.  
  641.     RESULT
  642.  
  643.         success - boolean value (1 mean all done, ok).
  644.  
  645.     EXAMPLE
  646.  
  647.         SAY "language =" ReadBlock("ENV:language")
  648.  
  649.     NOTES
  650.  
  651.     SEE ALSO
  652.  
  653.         rexx_stem.library/StemRead()
  654.  
  655. rexx_dos.library/SetVar                                rexx_dos.library/SetVar
  656.  
  657.     NAME
  658.  
  659.         SetVar -- Sets the value of a local or global variable.
  660.  
  661.     SYNOPSIS
  662.  
  663.         success = SetVar(name,value,options)
  664.  
  665.     FUNCTION
  666.  
  667.         Sets the "value" of the local or global environment variable
  668.         specified by "name".
  669.  
  670.     INPUTS
  671.  
  672.         name    - The variable name.
  673.  
  674.         value   - The value to assign to the variable. It might be
  675.                   a simple text string, but it also can be a binary
  676.                   block of data.
  677.  
  678.         options - "Loc=Local/S"
  679.  
  680.             "Local" - Sets a local variable to the current process.
  681.                       (default is to set a Global variable)
  682.  
  683.     RESULT
  684.  
  685.         success - boolean value (1 mean all done, ok).
  686.  
  687.     EXAMPLE
  688.  
  689.         CALL SetVar("language","italiano")
  690.  
  691.         value = "Ciao a tutti" || '00'x || "..."
  692.         CALL SetVar("bin",value)
  693.  
  694.     NOTES
  695.  
  696.         Since ARexx spawns a new process of each script, even if
  697.         started from Shell, option "Local" may not work as supposed.
  698.  
  699.     SEE ALSO
  700.  
  701.         dos.library/SetVar(), rexx_dos.library/GetVar()
  702.  
  703. rexx_dos.library/SplitPath                          rexx_dos.library/SplitPath
  704.  
  705.     NAME
  706.  
  707.         SplitPath -- Split given path ==> dir/ file
  708.  
  709.     SYNOPSIS
  710.  
  711.         ret = SplitPath(path,options)
  712.  
  713.     FUNCTION
  714.  
  715.         It may be used as a replacement of FilePart() and PathPart().
  716.         Take the given path and splits it into a file and directory part.
  717.  
  718.     INPUTS
  719.  
  720.         path    - A valid path string.
  721.  
  722.         options - "OutStem,Path/S"
  723.  
  724.             "OutStem" - An output stem, if specified, will receive
  725.                         file and directory part of the given path:
  726.  
  727.                             <stem.>DirPart
  728.  
  729.                             <stem.>FilePart
  730.  
  731.             "Path"    - The function returns the dir part
  732.                         of the given path.
  733.                         (default returns the file part)
  734.  
  735.     RESULT
  736.  
  737.         The function returns either the file part or the directory
  738.         part of a given path. In case of errors an empty string
  739.         will be returned.
  740.  
  741.     EXAMPLE
  742.  
  743.         dir = "DF0:foo/bar/moos-startup"
  744.         SAY SplitPath(dir,"path.")  /* ==> "DF0:foo/bar/" */
  745.         SAY path.DirPart            /* ==> "DF0:foo/bar/" */
  746.         SAY path.FilePart           /* ==> "moos-startup" */
  747.  
  748.     NOTES
  749.  
  750.     SEE ALSO
  751.  
  752.         rexx_dos.library/AddPart(), dos.library/FilePart()
  753.  
  754. rexx_dos.library/WriteBlock                        rexx_dos.library/WriteBlock
  755.  
  756.     NAME
  757.  
  758.         WriteBlock -- Write a string into a file.
  759.  
  760.     SYNOPSIS
  761.  
  762.         success = WriteBlock(file,string,options)
  763.  
  764.     FUNCTION
  765.  
  766.         This function write a given string, or a specified variable
  767.         content, into a file.
  768.  
  769.     INPUTS
  770.  
  771.         file    - The output file path.
  772.  
  773.         string  - The block to be write.
  774.  
  775.         options - "Append/S"
  776.  
  777.             "Append" - The function doesn't overwrite the output file
  778.                        if it exists and appends the given string to it.
  779.  
  780.     RESULT
  781.  
  782.         success - boolean value (1 mean all done, ok).
  783.  
  784.     EXAMPLE
  785.  
  786.         IF WriteBlock("ENV:date",DATE()) THEN
  787.             SAY "Create an environment variable..."
  788.         ELSE SAY "An error was occurred."
  789.  
  790.     NOTES
  791.  
  792.     BUGS
  793.  
  794.     SEE ALSO
  795.  
  796.         rexx_stem.library/StemWrite()
  797.  
  798.  
  799.