home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / rexxlb.zip / RLDEMO.INF (.txt) < prev    next >
OS/2 Help File  |  1995-08-09  |  118KB  |  4,407 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. General information ΓòÉΓòÉΓòÉ
  3.  
  4. REXXLIB is a large collection of functions designed to extend the REXX language 
  5. in OS/2. 
  6.  
  7. This file contains full descriptions of all REXXLIB functions except those that 
  8. are part of the RXWINDOW package. For complete information on REXXLIB, 
  9. including installation, general calling conventions, and specialized 
  10. information on such topics as regular expressions and interprocess 
  11. communication facilities, please refer to the REXXLIB User's Guide. 
  12.  
  13. REXXLIB software and documentation is Copyright (c) 1993-5 by Quercus Systems. 
  14. All rights reserved. 
  15.  
  16. REXXLIB is commercial software, not Shareware. Except when included with the 
  17. REXXLIB demo package, every copy must be appropriately licensed from Quercus 
  18. Systems. Please do not copy without a license. 
  19.  
  20. THE CODE IN THIS DEMONSTRATION PACKAGE MAY BE USED FOR A TOTAL OF 30 DAYS. THE 
  21. TIME NEED NOT BE CONSECUTIVE - YOU MAY CONTINUE USING IT UNTIL IT HAS BEEN USED 
  22. 30 DIFFERENT DAYS. AT THAT TIME THE CODE WILL CEASE TO FUNCTION, AND YOU MUST 
  23. GET A REGISTERED COPY IN ORDER TO CONTINUE USING REXXLIB. 
  24.  
  25. Permission is granted to distribute the executable portions (only) of REXXLIB 
  26. together with application software upon payment of a registration fee, and 
  27. subject to certain conditions of our redistribution policy. 
  28.  
  29. For more information contact: 
  30.  
  31.    Quercus Systems
  32.    P. O. Box 2157
  33.    Saratoga, CA 95070
  34.  
  35.    Phone: (408) 867-7399, (800) 440-5944
  36.    Fax:  (408) 867-7489
  37.    BBS:  (408) 867-7488
  38.  
  39.    For up-to-date information on the latest releases of REXXLIB and
  40.    our other products, check our Web page, http://www.quercus-sys.com/
  41.  
  42.    Online support is available on CompuServe (GO QUERCUS)
  43.    Internet: 75300.2450@compuserve.com
  44.  
  45.  
  46. ΓòÉΓòÉΓòÉ 2. Read me! ΓòÉΓòÉΓòÉ
  47.  
  48.  
  49. ΓòÉΓòÉΓòÉ 2.1. About this package... ΓòÉΓòÉΓòÉ
  50.  
  51. REXXLIB is a collection of over 150 functions designed to extend the 
  52. capabilities of REXX in OS/2. It covers five principal areas: compound variable 
  53. handling, interprocess communication, mathematical functions, OS/2 system 
  54. services, and text-mode user interfacing. 
  55.  
  56. Here is a sample of what you can do with REXXLIB functions: 
  57.  
  58. o convert between different REXX date formats and do date arithmetic 
  59.  
  60. o copy, sort, or merge REXX "arrays" and compound variable collections, and 
  61.   read or write them from/to disk 
  62.  
  63. o make a list of all "tails" of a given compound variable 
  64.  
  65. o do "regular expression" searches in strings, files, and compound variable 
  66.   values 
  67.  
  68. o compute CRC values for files 
  69.  
  70. o change a file date/time stamp 
  71.  
  72. o add commonly-used REXX routines to "macro spaces" for shared use by other 
  73.   REXX programs and protection from end-user tampering 
  74.  
  75. o create and access local or remote OS/2 named pipes 
  76.  
  77. o evaluate standard transcendental math functions 
  78.  
  79. REXXLIB is commercial software, and continued use or inclusion with any other 
  80. product for redistribution requires registration with Quercus Systems. The 
  81. files in this package are distributed for demonstration only. However, all code 
  82. is fully functional. 
  83.  
  84. THE CODE IN THIS DEMONSTRATION PACKAGE MAY BE USED FOR A TOTAL OF 30 DAYS. THE 
  85. TIME NEED NOT BE CONSECUTIVE - YOU MAY CONTINUE USING IT UNTIL IT HAS BEEN USED 
  86. 30 DIFFERENT DAYS. AT THAT TIME THE CODE WILL CEASE TO FUNCTION, AND YOU MUST 
  87. GET A REGISTERED COPY IN ORDER TO CONTINUE USING REXXLIB. 
  88.  
  89. Registration of REXXLIB entitles you to a printed manual and support. The basic 
  90. level of support is available electronically through CompuServe and the Quercus 
  91. Systems BBS. Hotline telephone support is also available for an extra charge. 
  92.  
  93. See below for information on how to register REXXLIB. 
  94.  
  95.  
  96. ΓòÉΓòÉΓòÉ 2.2. Installing REXXLIB ΓòÉΓòÉΓòÉ
  97.  
  98. To install REXXLIB you need only copy the .DLL files (REXXLIB.DLL and 
  99. RXWIN30.DLL) to a directory named in your system LIBPATH. Alternatively, you 
  100. can copy all files on the distribution disk to a new directory on your hard 
  101. disk, and add that directory to your LIBPATH. 
  102.  
  103. There are also online documentation files (.INF) that you can read with the 
  104. VIEW command, and a number of sample programs. We recommend that you keep all 
  105. of these online for easy reference while you are learning to use REXXLIB. 
  106.  
  107. Before you can run any REXX programs that use REXXLIB, you must register the 
  108. functions with the operating system. The following statements placed in a REXX 
  109. program will do this: 
  110.  
  111.     call rxfuncadd 'rexxlibregister', 'rexxlib', 'rexxlibregister'
  112.     call rexxlibregister
  113.     call rxfuncadd 'w_register', 'rxwin30', 'rxwindow'
  114.     call w_register
  115.  
  116. NOTE!!! The third argument of RXFUNCADD is case sensitive. You must enter it in 
  117. lower case exactly as shown. 
  118.  
  119. Instead of placing these statements in every program that uses REXXLIB, we 
  120. recommend that you execute these from a REXX program that is run only once when 
  121. the system is loaded. The easiest way to do this is with a STARTUP.CMD file. If 
  122. you do not already have one, simply place the above lines in a file called 
  123. STARTUP.CMD. Provide a REXX comment (/* ... */) as the first line of the file. 
  124. And place the file in the root directory of your system boot drive. STARTUP.CMD 
  125. will then run every time the system is loaded, and all of the REXXLIB functions 
  126. will be registered. 
  127.  
  128.  
  129. ΓòÉΓòÉΓòÉ 2.3. Online documentation ΓòÉΓòÉΓòÉ
  130.  
  131. Online documentation for REXXLIB consists of two .INF files. These can be read 
  132. with the VIEW command, like most other online OS/2 documentation. RLDEMO.INF 
  133. contains complete descriptions of all REXXLIB functions except for RXWINDOW 
  134. functions. RXWINDOW.INF contains the documentation for RXWINDOW functions. 
  135.  
  136. We have an 87-page printed manual that contains the same descriptive 
  137. information on REXXLIB functions as the online document. It also contains an 
  138. overview of each of the different function groups, as well as more detailed 
  139. information on certain topics, such as semaphores, named pipes, common function 
  140. calling conventions, and regular expressions. You need to register REXXLIB, as 
  141. described below, in order to get the printed manual. 
  142.  
  143. If you would like a hardcopy reference summary of all REXXLIB functions, we 
  144. highly recommend the REXX Reference Summary Handbook written by Dick Goran of 
  145. CFS Nevada. This is a summary only, and is not a substitute for the REXXLIB 
  146. manual, but it does cover all REXX language statements, functions, and 
  147. REXX-related WorkPlace Shell usage information. The Handbook may be ordered 
  148. directly from Quercus Systems. 
  149.  
  150.  
  151. ΓòÉΓòÉΓòÉ 2.4. Sample programs ΓòÉΓòÉΓòÉ
  152.  
  153. The SAMPLES directory contains a number of sample programs that illustrate 
  154. REXXLIB usage. Read the file SAMPLES.DOC in the SAMPLES directory for an 
  155. overview of the purpose of each file. 
  156.  
  157. One of the sample programs, called FL.CMD, is a text mode file manager program. 
  158. It is fairly lengthy and provides a very good illustration of the use of 
  159. RXWINDOW functions. 
  160.  
  161. Note that the sample programs assume that REXXLIB functions have already been 
  162. registered. The samples will not run unless you have called the REXXLIBREGISTER 
  163. function as discussed above. 
  164.  
  165. If you would like to contribute any programs that illustrate useful REXXLIB 
  166. techniques, please feel welcome to upload them to our bulletin board or 
  167. CompuServe. 
  168.  
  169.  
  170. ΓòÉΓòÉΓòÉ 2.5. Other Quercus Systems products ΓòÉΓòÉΓòÉ
  171.  
  172. Our primary emphasis is the development of REXX-related software and tools. In 
  173. addition to REXXLIB, we have Personal REXX, which is a full implementation of 
  174. the REXX language for DOS, OS/2, and Windows. Personal REXX for OS/2 includes 
  175. all of the functions in REXXLIB, and a number of additional utilities and 
  176. enhancements, such as global variables and better support for external data 
  177. queues. It comes with complete printed documentation, and for many applications 
  178. is significantly faster than IBM's REXX. 
  179.  
  180. We also have REXXTERM, which is a full-featured asynchronous communication 
  181. package for DOS and OS/2. REXXTERM scripts can be written in REXX. REXXTERM 
  182. provides a set of commands and functions that can be used to develop 
  183. communications applications in REXX. 
  184.  
  185. Please contact us by any of the means listed below if you would like a copy of 
  186. our newsletter or information on any of these products. 
  187.  
  188. You may also obtain further information by visiting our Web pages: 
  189.  
  190.   http://www.quercus-sys.com
  191.  
  192.  
  193. ΓòÉΓòÉΓòÉ 2.6. Disclaimers ΓòÉΓòÉΓòÉ
  194.  
  195. Quercus Systems excludes any and all implied warranties, including warranties 
  196. of merchantability and fitness for a particular purpose, and limits your 
  197. remedies to return of the software and manual to the location of original 
  198. retail sale for replacement or refund. Quercus Systems specifically excludes 
  199. any warranty coverage for incidental and consequential damages. 
  200.  
  201. We have provided this demonstration version of REXXLIB so that you can test the 
  202. product thoroughly before any personal or commercial use. It is entirely your 
  203. responsibility to ensure, when REXXLIB is used in conjunction with software you 
  204. supply, that the combined product functions acceptably and does not cause 
  205. undesirable side effects such as loss of data. In no case will Quercus Systems 
  206. be responsible for damages alleged to be caused by your software in conjunction 
  207. with REXXLIB. 
  208.  
  209.  
  210. ΓòÉΓòÉΓòÉ 2.7. Registering REXXLIB ΓòÉΓòÉΓòÉ
  211.  
  212. Two types of single-user registration are available: 
  213.  
  214.  1. Basic registration: includes an 87-page printed manual and electronic 
  215.     technical support through CompuServe and our bulletin board. The price is 
  216.     $20. 
  217.  
  218.  2. Full registration: includes hotline telephone and fax support, and priority 
  219.     service electronically, as well as the printed manual. This also includes 
  220.     the rights to redistribute REXXLIB as part of an application. The price is 
  221.     $50. 
  222.  
  223. A $3 shipping and handling fee (for U. S. customers) and any applicable sales 
  224. taxes will be added to all orders. For special handling or customers outside 
  225. the U. S., please contact us for the exact fee. 
  226.  
  227. A basic registration can be upgraded at any time to a full registration by 
  228. payment of the difference in price current at the time of upgrade. 
  229.  
  230. Multiple copy discounts and site licensing terms are available by arrangement 
  231. with Quercus Systems. 
  232.  
  233. You may place orders by credit card (Master Card, VISA, or Amex) using any of 
  234. the following: 
  235.  
  236.  1. Telephone: (408) 867-7399 
  237.  
  238.  2. Fax: (408) 867-7489 
  239.  
  240.  3. Quercus Systems Bulletin Board: (408) 867-7488 (Send a message to "SYSOP".) 
  241.  
  242.  4. CompuServe: send mail to 75300,2450 
  243.  
  244.  5. Internet: send mail to 75300.2450@compuserve.com 
  245.  
  246.  6. MCI Mail: send mail to 394-6200 
  247.  
  248. Please include your phone number, credit card number, and expiration date with 
  249. any credit card order. 
  250.  
  251. For company POs please contact Quercus Systems for approval. 
  252.  
  253. Orders with payment by credit card or check (U. S. funds only, drawn on a U. S. 
  254. bank) may also be sent to: 
  255.  
  256.   Quercus Systems
  257.   P. O. Box 2157
  258.   Saratoga, CA 95070
  259.  
  260.  
  261. ΓòÉΓòÉΓòÉ 2.8. Redistribution policy ΓòÉΓòÉΓòÉ
  262.  
  263. This REXXLIB demo package may be freely redistributed as long as all files are 
  264. included and nothing is modified in any way. You may not include the demo 
  265. package as a whole as part of another product, except for products, such as 
  266. CD-ROMs, which consist entirely of demonstration software, shareware, or the 
  267. like. If you distribute the demo package by itself you may not charge more than 
  268. a reasonable amount as a copying fee. For a disk containing only REXXLIB, this 
  269. would be at most $5. Please contact Quercus Systems for permission in other 
  270. cases, such as inclusion with books. 
  271.  
  272. The executable portions (only) of REXXLIB may be included with commercial, 
  273. "shareware", or "freeware" application software or applications distributed "in 
  274. house" as long as you pay for one full registration and agree to the following 
  275. terms and conditions: 
  276.  
  277.  1. Only executable .EXE and .DLL files may be included. No other copyrighted 
  278.     files of Quercus Systems (including all or any portion of the online 
  279.     documentation) may be included with the product. 
  280.  
  281.  2. Included files must not be modified in any way. In particular, embedded 
  282.     copyright notices must be left intact. 
  283.  
  284.  3. Your documentation should explicitly state that REXXLIB is copyrighted 
  285.     software belonging to Quercus Systems and is included with your software by 
  286.     permission of Quercus Systems. 
  287.  
  288.  4. Users of your product are not permitted to use REXXLIB except in 
  289.     conjunction with your product. Any further use by an end user (except for 
  290.     evaluation) requires purchase of at least a basic registration. 
  291.  
  292.  5. No part of REXXLIB may be included with other collections of tools or 
  293.     libraries intended primarily for use by programmers. 
  294.  
  295.  
  296. ΓòÉΓòÉΓòÉ 3. Alphabetical list of functions ΓòÉΓòÉΓòÉ
  297.  
  298.  
  299. ΓòÉΓòÉΓòÉ 3.1. ACOS ΓòÉΓòÉΓòÉ
  300.  
  301. ACOS(x)
  302.  
  303. Summary:   ACOS computes the arc cosine function.
  304.  
  305. Arguments:  x:  A real number in the range -1<=x<1
  306.  
  307. Returns:   The arc cosine of x, expressed in radians, in the range 0
  308.       to pi. For illegal values of x it returns "NAN".
  309.  
  310. See also:  ASIN, ATAN, ATAN2, COS, SIN, TAN
  311.  
  312.  
  313. ΓòÉΓòÉΓòÉ 3.2. ARRAYCOPY ΓòÉΓòÉΓòÉ
  314.  
  315. ARRAYCOPY(fromstem,tostem,[from],[to],[count])
  316.  
  317. Summary:   ARRAYCOPY copies all or part of a REXX "array", overlaying
  318.       elements in a target array.
  319.  
  320. Arguments:  fromstem:  The stem of the array that is the source of the
  321.             copy.
  322.       tostem:   The stem of the array that is the target of the
  323.             copy.
  324.       from:    The position in the first array at which the copy
  325.             begins. The default is 1.
  326.       to:     The position in the second array at which the
  327.             copy begins. The default is 1.
  328.       count:    The number of items to copy. The default is all
  329.             elements to the end of the array.
  330.  
  331. Returns:   1 if the operation is successful, otherwise 0 (for instance,
  332.       if the source or target of the copy is not a valid "array").
  333.  
  334. Notes:    For the purposes of this function a valid array is an
  335.       integrally-indexed REXX compound variable whose first index
  336.       is 1 and whose total length is held in the item with
  337.       subscript 0.
  338.  
  339.       This function overlays existing values in the target array
  340.       with values from the source array.
  341.  
  342.       Any elements in the source array which are uninitialized will
  343.       also be uninitialized at the corresponding place in the
  344.       target array.
  345.  
  346.       It is possible to use ARRAYCOPY to set all elements of a
  347.       portion of an array to the same value. For instance, to set
  348.       all elements of X. to 0, first set X.0 to 1 and X.1 to 0.
  349.       Then call ARRAYCOPY with "X" as both the source stem and
  350.       the target stem, the from value as 1, the to value as 2, and
  351.       the count value as one less than the total number of values
  352.       that are to be set to 0.
  353.  
  354. See also:  ARRAYDELETE, ARRAYINSERT, CVCOPY
  355.  
  356.  
  357. ΓòÉΓòÉΓòÉ 3.3. ARRAYDELETE ΓòÉΓòÉΓòÉ
  358.  
  359. ARRAYDELETE(stem,from,[count])
  360.  
  361. Summary:   ARRAYDELETE deletes one or more elements of a REXX "array"
  362.       and shifts remaining elements down.
  363.  
  364. Arguments:  stem:  The stem name of the array from which elements are
  365.           to be deleted.
  366.       from:  The position in the array at which deletion begins.
  367.       count:  The number of elements to be deleted. The default
  368.           is 1.
  369.  
  370. Returns:   1 if the operation is successful, otherwise 0 (for instance,
  371.       if the stem is not a valid "array").
  372.  
  373. Notes:    For the purposes of this function a valid array is an
  374.       integrally-indexed REXX compound variable whose first index
  375.       is 1 and whose total length is held in the item with
  376.       subscript 0.
  377.  
  378.       Any elements in the array which are uninitialized will
  379.       also be uninitialized after being shifted to their new
  380.       position.
  381.  
  382. See also:  ARRAYCOPY, ARRAYINSERT
  383.  
  384.  
  385. ΓòÉΓòÉΓòÉ 3.4. ARRAYINSERT ΓòÉΓòÉΓòÉ
  386.  
  387. ARRAYINSERT(fromstem,tostem,[from],[to],[count])
  388.  
  389. Summary:   ARRAYINSERT copies all or part of a REXX "array", inserting
  390.       the elements into a target array.
  391.  
  392. Arguments:  fromstem:  The stem of the array that is the source of the
  393.             copy.
  394.       tostem:   The stem of the array that is the target of the
  395.             copy.
  396.       from:    The position in the first array at which the copy
  397.             begins. The default is 1.
  398.       to:     The position in the second array before which the
  399.             copied values are inserted. The default is the end
  400.             of the second array (after the last item).
  401.       count:    The number of items to copy. The default is all
  402.             elements to the end of the array.
  403.                        +
  404. Returns:   1 if the operation is successful, otherwise 0 (for instance,
  405.       if the source or target of the copy is not a valid "array").
  406.  
  407. Notes:    For the purposes of this function a valid array is an
  408.       integrally-indexed REXX compound variable whose first index
  409.       is 1 and whose total length is held in the item with
  410.       subscript 0.
  411.  
  412.       This function shifts existing values in the target array up
  413.       by the number of new values inserted.
  414.  
  415.       Any elements in the source or target array which are
  416.       uninitialized will also be uninitialized after being copied
  417.       to their new position.
  418.  
  419. See also:  ARRAYCOPY, ARRAYDELETE
  420.  
  421.  
  422. ΓòÉΓòÉΓòÉ 3.5. ARRAYSEARCH ΓòÉΓòÉΓòÉ
  423.  
  424. ARRAYSEARCH(searchstem,resultstem,pattern,[options],[from],[count])
  425.  
  426. Summary:   ARRAYSEARCH places the indexes of a REXX array into a new
  427.       array for each index where the corresponding variable
  428.       value matches a pattern.
  429.  
  430. Arguments:  searchstem: Stem name of a REXX array to search.
  431.       resultstem: A stem name that identifies the output array.
  432.       pattern:   A regular expression that is used to select tails.
  433.       options:   Changes the type of search performed from the
  434.             default, which is a case-insesitive search using
  435.             a regular expression pattern. The value can be
  436.             a string consisting of one or more of the
  437.             following:
  438.  
  439.             'A' - avoid: select only items that do not
  440.                satisfy the search conditions
  441.             'C' - search should be case sensitive
  442.             'F' - exact match required between pattern and
  443.                first substring of target, except possibly
  444.                for case, no regular expressions
  445.             'S' - simple search that does not use regular
  446.                expressions
  447.             'X' - exact match required between pattern and
  448.                target, except possibly for case, no regular
  449.                expressions
  450.  
  451.       from:    The position in the first array at which the search
  452.             begins. The default is 1.
  453.       count:    The number of items to search. The default is all
  454.             items to the end of the array.
  455.  
  456. Returns:   The number of tails found.
  457.  
  458. Notes:    Element 0 of the output array is set to the number of tails
  459.       found.
  460.  
  461.       The input and output compound variables must be different.
  462.  
  463.       ARRAYSEARCH is usually faster than CVSEARCH when the compound
  464.       variable to be searched has only positive integral
  465.       "subscripts", as is the case, for instance, with the result
  466.       of FILEREAD.
  467.  
  468.       You should avoid using a regular expression search by
  469.       specifying 'S' in the options string if the pattern may contain
  470.       any of the characters that have special meaning in regular
  471.       expressions ("\", "^", "$", ".", ":", "*", "+", "?", "[", and
  472.       "]"), unless the characters are escaped by being preceded with
  473.       "\". This is especially likely to be a problem if the pattern
  474.       is entered as user input at run time or consists of a file name.
  475.  
  476. See also:  CVSEARCH, CVTAILS
  477.  
  478.  
  479. ΓòÉΓòÉΓòÉ 3.6. ARRAYSORT ΓòÉΓòÉΓòÉ
  480.  
  481. ARRAYSORT(stem,[first],[n],[start],[length],[order],[type],...)
  482.  
  483. Summary:   ARRAYSORT sorts an integrally-indexed REXX compound variable
  484.       based on one or more fields in the array values.
  485.  
  486. Arguments:  stem:  The stem of the compound variable to be sorted.
  487.       first:  The index of the first array element to be sorted
  488.           (default is 1).
  489.       n:    The number of array elements to be sorted. (The
  490.           default is to the end of the array.)
  491.       start:  The position in the value of the beginning of a
  492.           sort field (default is 1).
  493.       length: The length of a sort field. The default is 100.
  494.       order:  'A' for ascending sort (default), 'D' for descending
  495.           sort.
  496.       type:  'C' for case-sensitive character sort (default), 'I'
  497.           for case-insensitive character sort, 'N' for numeric
  498.           sort.
  499.  
  500. Returns:   1 if no error occurred, or 0 if some error occurred, such as
  501.       insufficient memory or a non-numeric value was encountered
  502.       during a numeric sort.
  503.  
  504. Notes:    Up to 10 separate fields can be specified, by repeating the
  505.       start, length, order, and type arguments. The first
  506.       specified field is the primary sort field. Secondary fields
  507.       are considered only if all preceding fields compare equal.
  508.  
  509.       A character sort is defined by the standard ASCII collating
  510.       sequence. Normally this is case-sensitive. The 'I' sort type
  511.       can be used to request a case-insensitive sort. A numeric sort
  512.       is defined by standard REXX comparison of numeric values.
  513.  
  514.       The order of elements in the original compound variable is
  515.       changed based on the sort specification.
  516.  
  517.       As with any array, the number of elements in the array is
  518.       expected to be found in the item with subscript 0. If the
  519.       number of elements to be sorted is not specified, this count
  520.       is used to identify the end of the array.
  521.  
  522.  
  523. ΓòÉΓòÉΓòÉ 3.7. ASIN ΓòÉΓòÉΓòÉ
  524.  
  525. ASIN(x)
  526.  
  527. Summary:   ASIN computes the arc sine function.
  528.  
  529. Arguments:  x:  A real number in the range -1<=x<1
  530.  
  531. Returns:   The arc sine of x, expressed in radians, in the range -pi/2
  532.       to pi/2. For illegal values of x it returns "NAN".
  533.  
  534. See also:  ACOS, ATAN, ATAN2, COS, SIN, TAN
  535.  
  536.  
  537. ΓòÉΓòÉΓòÉ 3.8. ATAN ΓòÉΓòÉΓòÉ
  538.  
  539. ATAN(x)
  540.  
  541. Summary:   ATAN computes the arc tangent function.
  542.  
  543. Arguments:  x:  A real number.
  544.  
  545. Returns:   The arc tangent of x, expressed in radians, in the range
  546.       -pi/2 to pi/2. For illegal values of x it returns "NAN".
  547.  
  548. See also:  ACOS, ASIN, ATAN2, COS, SIN, TAN
  549.  
  550.  
  551. ΓòÉΓòÉΓòÉ 3.9. ATAN2 ΓòÉΓòÉΓòÉ
  552.  
  553. ATAN2(x,y)
  554.  
  555. Summary:   ATAN2 computes the arc tangent function.
  556.  
  557. Arguments:  x:  A real number.
  558.       y:  A real number.
  559.  
  560. Returns:   The arc cosine of x/y, expressed in radians, in the range
  561.       -pi/2 to pi/2. If both x and y are 0 it returns "NAN".
  562.  
  563. See also:  ACOS, ASIN, ATAN, COS, SIN, TAN
  564.  
  565.  
  566. ΓòÉΓòÉΓòÉ 3.10. CHARSIZE ΓòÉΓòÉΓòÉ
  567.  
  568. CHARSIZE()
  569.  
  570. Summary:   CHARSIZE returns the height of the text mode character box.
  571.  
  572. Returns:   The height of the text mode character box in scan lines for
  573.       the current screen mode.
  574.  
  575. Notes:    CHARSIZE can be used to provide appropriate values for the
  576.       CURSORTYPE function.
  577.  
  578. See also:  CURSORTYPE
  579.  
  580.  
  581. ΓòÉΓòÉΓòÉ 3.11. COS ΓòÉΓòÉΓòÉ
  582.  
  583. COS(x)
  584.  
  585. Summary:   COS computes the cosine function.
  586.  
  587. Arguments:  x:  A real number (radians).
  588.  
  589. Returns:   The cosine of x.
  590.  
  591. See also:  ACOS, ASIN, ATAN, ATAN2, SIN, TAN
  592.  
  593.  
  594. ΓòÉΓòÉΓòÉ 3.12. COSH ΓòÉΓòÉΓòÉ
  595.  
  596. COSH(x)
  597.  
  598. Summary:   COSH computes the hyperbolic cosine function.
  599.  
  600. Arguments:  x:  A real number.
  601.  
  602. Returns:   The hyperbolic cosine of x.
  603.  
  604. See also:  SINH, TANH
  605.  
  606.  
  607. ΓòÉΓòÉΓòÉ 3.13. CURSOR ΓòÉΓòÉΓòÉ
  608.  
  609. CURSOR([row],[col])
  610.  
  611. Summary:   CURSOR moves the cursor to a specified position.
  612.  
  613. Arguments:  row:   Row number on which to position the cursor.
  614.       col:   Column number on which to position the cursor.
  615.  
  616. Returns:   Two numbers, separated by a blank, which give the cursor
  617.       location before any move.
  618.  
  619. Notes:    Row numbers start with 1 at the top of the screen or window.
  620.       Column numbers start with 1 at the left hand side.
  621.  
  622.       If either the row or column number is omitted, the default
  623.       is the current row or column.
  624.  
  625. See also:  CURSORTYPE
  626.  
  627.  
  628. ΓòÉΓòÉΓòÉ 3.14. CURSORTYPE ΓòÉΓòÉΓòÉ
  629.  
  630. CURSORTYPE([start],[end],[visible])
  631.  
  632. Summary:   CURSORTYPE returns the current cursor type, and possibly sets
  633.       new values for the cursor type.
  634.  
  635. Arguments:  start:    The line of the character box representing the top of
  636.             the cursor.
  637.       end:     The line of the character box representing the bottom
  638.             of the cursor.
  639.       visible:   A flag which is 1 if the cursor is visible and 0
  640.             if not.
  641.  
  642. Returns:   Three numbers, separated by blanks, which give the initial top
  643.       and bottom lines of the cursor, and the visibility flag.
  644.  
  645. Notes:    The top line of the character cell is line 0.
  646.  
  647.       The CHARSIZE function can be used to get the height of the
  648.       character box for the current video mode.
  649.  
  650.       If the visible argument is not specified, the visibility
  651.       status of the cursor is not changed.
  652.  
  653. See also:  CHARSIZE, CURSOR
  654.  
  655.  
  656. ΓòÉΓòÉΓòÉ 3.15. CVCOPY ΓòÉΓòÉΓòÉ
  657.  
  658. CVCOPY([fromstem],tostem)
  659.  
  660. Summary:   CVCOPY copies all values of a given REXX compound variable
  661.       from one stem to another.
  662.  
  663. Arguments:  fromstem:  A stem name for a REXX compound variable whose
  664.             values are to be copied.
  665.       tostem:   A stem name for a REXX compound variable that
  666.             is the target of the copy.
  667.  
  668. Returns:   1 if the operation is successful, otherwise 0.
  669.  
  670. Notes:    The source and target of the copy can be arbitrary REXX
  671.       compound variables. They do not need to be integrally
  672.       subscripted arrays.
  673.  
  674.       Any existing values in the target compound variable are
  675.       dropped before the operation begins, so that the source and
  676.       target contain identical values at the end.
  677.  
  678.       If the source variable is not specified, any existing values
  679.       in the target are simply dropped.
  680.  
  681. See also:  ARRAYCOPY, CVREAD, CVWRITE
  682.  
  683.  
  684. ΓòÉΓòÉΓòÉ 3.16. CVREAD ΓòÉΓòÉΓòÉ
  685.  
  686. CVREAD(filename,tostem)
  687.  
  688. Summary:   CVREAD reads all values of a given REXX compound variable
  689.       that have been saved in a disk file.
  690.  
  691. Arguments:  filename:  The fully qualified name of a file that contains
  692.             compound variable values which have been written
  693.             by the CVWRITE function.
  694.       tostem:   A stem name for a REXX compound variable that
  695.             receives the values read.
  696.  
  697. Returns:   1 if the operation is successful, otherwise 0.
  698.  
  699. Notes:    The variable into which values are read can be an arbitrary
  700.       REXX compound variable. It does not need to be an integrally
  701.       subscripted array.
  702.  
  703.       Only a file which has been created with CVWRITE can be read
  704.       with this function, since it must be in a special format.
  705.  
  706.       Any existing values in the target compound variable are
  707.       dropped before the operation begins, so that the target
  708.       variable contains at the end exactly the same values as the
  709.       variable which was originally written to the file with
  710.       CVWRITE.
  711.  
  712. See also:  CVCOPY, CVWRITE, VARREAD
  713.  
  714.  
  715. ΓòÉΓòÉΓòÉ 3.17. CVSEARCH ΓòÉΓòÉΓòÉ
  716.  
  717. CVSEARCH(stem,tailstem,pattern,[options])
  718.  
  719. Summary:   CVSEARCH places the "tails" of a compound variable into a
  720.       REXX array for all tails where the corresponding variable
  721.       value matches a pattern.
  722.  
  723. Arguments:  stem:    Stem name of a compound variable to search.
  724.       tailstem:  A stem name that identifies the output array.
  725.       pattern:   A regular expression that is used to select tails.
  726.       options:   Changes the type of search performed from the
  727.             default, which is a case-insesitive search using
  728.             a regular expression pattern. The value can be
  729.             a string consisting of one or more of the
  730.             following:
  731.  
  732.             'A' - avoid: select only items that do not
  733.                satisfy the search conditions
  734.             'C' - search should be case sensitive
  735.             'F' - exact match required between pattern and
  736.                first substring of target, except possibly
  737.                for case, no regular expressions
  738.             'S' - simple search that does not use regular
  739.                expressions
  740.             'X' - exact match required between pattern and
  741.                target, except possibly for case, no regular
  742.                expressions
  743.  
  744.  
  745. Returns:   The number of tails found.
  746.  
  747. Notes:    Element 0 of the output array is set to the number of tails
  748.       found.
  749.  
  750.       The input and output compound variables must be different.
  751.  
  752.       You should avoid using a regular expression search by
  753.       specifying 'S' in the options string if the pattern may contain
  754.       any of the characters that have special meaning in regular
  755.       expressions ("\", "^", "$", ".", ":", "*", "+", "?", "[", and
  756.       "]"), unless the characters are escaped by being preceded with
  757.       "\". This is especially likely to be a problem if the pattern
  758.       is entered as user input at run time or consists of a file name.
  759.  
  760. See also:  ARRAYSEARCH, CVTAILS
  761.  
  762.  
  763. ΓòÉΓòÉΓòÉ 3.18. CVTAILS ΓòÉΓòÉΓòÉ
  764.  
  765. CVTAILS(stem,tailstem,[pattern],[options])
  766.  
  767. Summary:   CVTAILS places the "tails" of one compound variable into a
  768.       REXX array, optionally using a pattern to select tails.
  769.  
  770. Arguments:  stem:    A stem name whose tails are to be found.
  771.       tailstem:  A stem name that identifies the output array.
  772.       pattern:   A regular expression that is used to select tails.
  773.       options:   Changes the type of search performed from the
  774.             default, which is a case-insesitive search using
  775.             a regular expression pattern. The value can be
  776.             a string consisting of one or more of the
  777.             following:
  778.  
  779.             'A' - avoid: select only items that do not
  780.                satisfy the search conditions
  781.             'C' - search should be case sensitive
  782.             'F' - exact match required between pattern and
  783.                first substring of target, except possibly
  784.                for case, no regular expressions
  785.             'S' - simple search that does not use regular
  786.                expressions
  787.             'X' - exact match required between pattern and
  788.                target, except possibly for case, no regular
  789.                expressions
  790.  
  791.  
  792. Returns:   The number of tails found.
  793.  
  794. Notes:    The tail of a compound variable is the character string
  795.       following the first "." in the fully resolved variable name.
  796.       Such character strings can contain any arbitrary combination
  797.       of characters, including blanks, and can even be a null
  798.       string. The TAILS function finds all such tails associated
  799.       with a given stem and assigns them to successive elements of
  800.       another compound variable so that one can easily iterate
  801.       through the list.
  802.  
  803.       If a pattern is used to select tails, only the tail part of
  804.       the compound variable (following the first period) is
  805.       considered for matching.
  806.  
  807.       Element 0 of the output array is set to the number of tails
  808.       found.
  809.  
  810.       The input and output compound variables must be different.
  811.  
  812.       You should avoid using a regular expression search by
  813.       specifying 'S' in the options string if the pattern may contain
  814.       any of the characters that have special meaning in regular
  815.       expressions ("\", "^", "$", ".", ":", "*", "+", "?", "[", and
  816.       "]"), unless the characters are escaped by being preceded with
  817.       "\". This is especially likely to be a problem if the pattern
  818.       is entered as user input at run time or consists of a file name.
  819.  
  820. See also:  CVSEARCH
  821.  
  822.  
  823. ΓòÉΓòÉΓòÉ 3.19. CVWRITE ΓòÉΓòÉΓòÉ
  824.  
  825. CVWRITE(filename,fromstem)
  826.  
  827. Summary:   CVWRITE writes all values of a given REXX compound variable
  828.       to a disk file.
  829.  
  830. Arguments:  filename:  The fully qualified name of a file into which
  831.             compound variable values are to be written.
  832.       fromstem:  A stem name for a REXX compound variable that
  833.             contains the values to be written.
  834.  
  835. Returns:   1 if the operation is successful, otherwise 0.
  836.  
  837. Notes:    The variable from which values are taken can be an arbitrary
  838.       REXX compound variable. It does not need to be an integrally
  839.       subscripted array.
  840.  
  841.       Only the tails of the source variable are saved in the file.
  842.       The stem name is not saved, since a new name will be supplied
  843.       when the file is read with CVREAD.
  844.  
  845.       If the file to be written already exists it is set to 0
  846.       length before the operation begins, so that its original
  847.       contents are lost.
  848.  
  849. See also:  CVCOPY, CVREAD, VARWRITE
  850.  
  851.  
  852. ΓòÉΓòÉΓòÉ 3.20. DATECONV ΓòÉΓòÉΓòÉ
  853.  
  854. DATECONV(date,input,[output])
  855.  
  856. Summary: DATECONV converts a date string from one format to another.
  857.  
  858. Arguments:  date:  A string representing a valid date.
  859.       input:  'B', 'C', 'D', 'E', 'J', 'N', 'O', 'S', or 'U'.
  860.       output: 'B', 'C', 'D', 'E', 'J', 'M', 'N', 'O', 'S', 'U',
  861.           or 'W'.
  862.  
  863. Returns:   The date represented in the specified output format. A null
  864.       string is returned if the date is not in the format specified
  865.       by the input argument.
  866.  
  867. Notes:    The input and output formats are the same as those used for
  868.       the DATE built-in function.
  869.  
  870.       The default output format is 'N'.
  871.  
  872.       If you need to do arithmetic on dates (e. g. to find the date
  873.       60 days from now), the best way is to first convert to the
  874.       "base date" format ('B'), do the arithmetic, then convert back.
  875.  
  876.  
  877. ΓòÉΓòÉΓòÉ 3.21. DELAY ΓòÉΓòÉΓòÉ
  878.  
  879. DELAY(duration)
  880.  
  881. Summary:   DELAY suspends program execution for a specified duration.
  882.  
  883. Arguments:  duration:  Length of time in seconds to suspend execution.
  884.  
  885. Returns:   Always returns 1.
  886.  
  887. Notes:    The delay period can be specified as a fractional number.
  888.       DELAY is accurate to within about a tenth of a second.
  889.  
  890.  
  891. ΓòÉΓòÉΓòÉ 3.22. DETAB ΓòÉΓòÉΓòÉ
  892.  
  893. DETAB(string,[spaces])
  894.  
  895. Summary:   DETAB removes tab characters from a string and replaces
  896.       them with an appropriate number of spaces.
  897.  
  898. Arguments:  string: The string from which tabs are to be removed.
  899.       spaces: The number of spaces between each tab stop. The
  900.           default is 8.
  901.  
  902. Returns:   The input string with tab characters removed.
  903.  
  904. Notes:    A tab character is ASCII '09'x. Tab characters are often
  905.       inserted in ASCII data files by text editors and are also
  906.       common in files transferred from Unix systems. Unlike Unix,
  907.       however, OS/2 does not ordinarily equate tabs to spaces, so
  908.       it may be necessary to remove them with DETAB.
  909.  
  910. See also:  ENTAB
  911.  
  912.  
  913. ΓòÉΓòÉΓòÉ 3.23. DOSAPPTYPE ΓòÉΓòÉΓòÉ
  914.  
  915. DOSAPPTYPE(filename)
  916.  
  917. Summary:   DOSAPPTYPE indicates whether a given executable file is an
  918.       OS/2 fullscreen, windowable, or PM application, and whether
  919.       or not it is a 32-bit program.
  920.  
  921. Arguments:  filename:  The name of an executable file.
  922.  
  923. Returns:   Three numbers, separated by blanks.
  924.  
  925.       The first number is interpreted as follows:
  926.  
  927.       0 - application type not specified in file
  928.       1 - program is OS/2 full-screen only
  929.       2 - program can execute in PM text-mode window
  930.       3 - application is a PM program
  931.       16 - program is a DLL
  932.       32 - program is DOS-only
  933.  
  934.  
  935.       The second number is 1 if the program has been "bound" so
  936.       that it can execute in DOS mode, otherwise 0.
  937.  
  938.       The third number is 1 if the application is a 32-bit
  939.       program, otherwise 0.
  940.  
  941. Notes:    "0 0 0" will be returned for a non-executable file.
  942.  
  943.  
  944. ΓòÉΓòÉΓòÉ 3.24. DOSBOOTDRIVE ΓòÉΓòÉΓòÉ
  945.  
  946. DOSBOOTDRIVE()
  947.  
  948. Summary:   DOSBOOTDRIVE returns the disk letter of the system boot
  949.       drive.
  950.  
  951. Arguments:  none
  952.  
  953. Returns:   The disk letter in upper case of the system boot drive
  954.       (without trailing ':').
  955.  
  956.  
  957. ΓòÉΓòÉΓòÉ 3.25. DOSCD ΓòÉΓòÉΓòÉ
  958.  
  959. DOSCD([drive])
  960.  
  961. Summary:   DOSCD returns the current directory on a specified drive.
  962.  
  963. Arguments:  drive:  Letter that designates the drive of interest.
  964.           (Default is the current drive.)
  965.  
  966. Returns:   The name of the current directory on the specified (or
  967.       current) drive.
  968.  
  969. Notes:    DOSCD returns a null string if the specified drive is invalid
  970.       or not ready. This is one way to test whether a floppy drive
  971.       has a disk in it.
  972.  
  973. See also:  DOSCHDIR, DOSVOLUME
  974.  
  975.  
  976. ΓòÉΓòÉΓòÉ 3.26. DOSCHDIR ΓòÉΓòÉΓòÉ
  977.  
  978. DOSCHDIR(pathname)
  979.  
  980. Summary:   DOSCHDIR sets the current directory on a particular drive.
  981.  
  982. Arguments:  pathname:  The name of a directory path to be made the
  983.             current directory.
  984.  
  985. Returns:   1 if the operation was successful, otherwise 0.
  986.  
  987. Notes:    If a drive letter followed by a colon is included in the path
  988.       name, the current directory on the designated drive is
  989.       changed. Otherwise, the change applies to the current drive.
  990.  
  991. See also:  DOSCD, DOSDRIVE
  992.  
  993.  
  994. ΓòÉΓòÉΓòÉ 3.27. DOSCHMOD ΓòÉΓòÉΓòÉ
  995.  
  996. DOSCHMOD(filename,[turnon],[turnoff])
  997.  
  998. Summary:   DOSCHMOD changes a file's attribute bits.
  999.  
  1000. Arguments:  filename:  The fully qualified name of a file whose
  1001.             attributes are to be changed.
  1002.       turnon:   One or more of 'H', 'S', 'R', or 'A', indicating
  1003.             attributes to be added.
  1004.       turnoff:   One or more of 'H', 'S', 'R', or 'A', indicating
  1005.             attributes to be removed.
  1006.  
  1007. Returns:   1 of the operation was successful, otherwise 0.
  1008.  
  1009. Notes:    The attributes affected by DOSCHMOD are Hidden ('H'),
  1010.       System ('S'), Read-only ('R'), and Archive ('A').
  1011.  
  1012.       The file name cannot contain wildcard characters.
  1013.  
  1014.  
  1015. ΓòÉΓòÉΓòÉ 3.28. DOSCOMMANDFIND ΓòÉΓòÉΓòÉ
  1016.  
  1017. DOSCOMMANDFIND(commandname)
  1018.  
  1019. Summary:   DOSCOMMANDFIND searches the current directory and the system
  1020.       path to locate a particular command.
  1021.  
  1022. Arguments:  commandname:   A command name.
  1023.  
  1024. Returns:   The fully qualified name of the command file if it is found,
  1025.       otherwise a null string.
  1026.  
  1027. Notes:    If a disk letter or directory is included in the command
  1028.       name, only the specified disk and directory will be searched.
  1029.       Otherwise the current directory is searched, followed by each
  1030.       directory listed in the path.
  1031.  
  1032.       If a specific extension is included in the command name, only
  1033.       that extension will be searched for. Otherwise DOSCOMMANDFIND
  1034.       searches for files with an extension of COM, EXE, or CMD.
  1035.  
  1036.       The search stops as soon as a directory is found that contains
  1037.       a matching file. If no extension was specified, and the
  1038.       directory contains more than one file with an appropriate
  1039.       extension, the name is determined by the order in which the
  1040.       system handles commands, where COM has highest priority,
  1041.       followed by EXE, followed by CMD.
  1042.  
  1043.       Wildcard characters cannot be specified in the command name.
  1044.       The command name cannot contain a period unless it is used
  1045.       to indicate the presence of an extension.
  1046.  
  1047. See also:  DOSPATHFIND
  1048.  
  1049.  
  1050. ΓòÉΓòÉΓòÉ 3.29. DOSCOPY ΓòÉΓòÉΓòÉ
  1051.  
  1052. DOSCOPY(sourcename,[targetname],[mode],[options])
  1053.  
  1054. Summary:   DOSCOPY copies a file.
  1055.  
  1056. Arguments:  sourcename: The name of the file to be copied.
  1057.       targetname: The name of the target of the copy operation.
  1058.       mode:    A letter ('R', 'A', or 'N') which indicates
  1059.             whether the target file (if it already exists)
  1060.             should be replaced, appended, or left unchanged.
  1061.       options:   A string consisting of one or more of the
  1062.             following:
  1063.  
  1064.             'V' - Verify the data after copying and indicate
  1065.                an error if the copied data does not match.
  1066.  
  1067.  
  1068. Returns:   0 if the operation is successful, otherwise an error code.
  1069.       Possible error codes include:
  1070.  
  1071.       2 - source file not found
  1072.       3 - source or target path not found
  1073.       5 - target file exists but 'A' or 'R' mode not specified
  1074.       32 - sharing violation for source or target file
  1075.       108 - source or target drive locked
  1076.       112 - disk full
  1077.       206 - invalid source or target file name
  1078.       267 - source name is a directory
  1079.       282 - extended attributes not supported for target
  1080.  
  1081.  
  1082. Notes:    If the target of the copy operation is not specified, it
  1083.       is a file in the current directory having the same name as
  1084.       the source of the copy.
  1085.  
  1086.       Wildcard characters ('*' and '?') are not allowed in the
  1087.       source or target names.
  1088.  
  1089.       By default, a copy fails if the target already exists. This
  1090.       is a mode of 'N'. If the mode is 'A', and the target exists,
  1091.       the data from the source is appended to the target. If the
  1092.       mode is 'R' and the target exists, it is replaced. If the
  1093.       target is read-only, the copy fails regardless of mode.
  1094.       Attributes of the source (last modification date, etc.) are
  1095.       copied to the target unless the target already exists and is
  1096.       being appended.
  1097.  
  1098.       Extended attributes are copied from the source to the target
  1099.       unless the target already exists and is being appended. If
  1100.       the volume that holds the target does not support extended
  1101.       attributes data will be copied without extended attributes.
  1102.  
  1103.       It may be faster to use the DOSCOPY function instead of the
  1104.       system COPY command if the default execution environment is
  1105.       not CMD.EXE, since the need to start a new process can be
  1106.       avoided. It is also safer, since unlike the COPY command,
  1107.       DOSCOPY does not replace an existing target unless explicitly
  1108.       requested to do so.
  1109.  
  1110.       If an error occurs during copying, the target file is deleted,
  1111.       unless it was being appended, in which case it is restored to
  1112.       its original size.
  1113.  
  1114.  
  1115. ΓòÉΓòÉΓòÉ 3.30. DOSCREAT ΓòÉΓòÉΓòÉ
  1116.  
  1117. DOSCREAT(filename)
  1118.  
  1119. Summary:   DOSCREAT creates a new file or sets an existing file to 0
  1120.       length.
  1121.  
  1122. Arguments:  filename:  The fully qualified name of a file to be
  1123.             created.
  1124.  
  1125. Returns:   1 if the operation was successful, otherwise 0.
  1126.  
  1127. Notes:    If the specified file does not exist, it is created as an
  1128.       empty file (0 bytes in length). If it already exists, it is
  1129.       truncated to 0 bytes in length, and its existing contents
  1130.       are lost.
  1131.  
  1132. See also:  DOSDEL, DOSFSIZE
  1133.  
  1134.  
  1135. ΓòÉΓòÉΓòÉ 3.31. DOSDEL ΓòÉΓòÉΓòÉ
  1136.  
  1137. DOSDEL(filename)
  1138.  
  1139. Summary:   DOSDEL deletes a file.
  1140.  
  1141. Arguments:  filename:  The fully qualified name of a file to be
  1142.             deleted.
  1143.  
  1144. Returns:   1 if the operation was successful, otherwise 0.
  1145.  
  1146. Notes:    The file name cannot contain wildcard characters.
  1147.  
  1148. See also:  DOSCREAT
  1149.  
  1150.  
  1151. ΓòÉΓòÉΓòÉ 3.32. DOSDIR ΓòÉΓòÉΓòÉ
  1152.  
  1153. DOSDIR([filespec],[output],[search],[mask],[position])
  1154.  
  1155. Summary: DOSDIR returns directory information.
  1156.  
  1157. Arguments:  filespec:  A file specification, which may contain a drive
  1158.             letter and path information and wildcard
  1159.             characters in the file name.
  1160.       output:   A string consisting of one or more of 'N', 'S',
  1161.             'D', 'T', and 'A'.
  1162.       search:   A string consisting of one or more of 'H', 'S',
  1163.             and 'D'.
  1164.       mask:    A string consisting of one or more of 'H', 'S',
  1165.             'D', 'R', and 'A'.
  1166.       position:  Directory position information returned by
  1167.             DOSDIRPOS.
  1168.  
  1169. Returns:   A string that contains requested directory information about
  1170.       a file. If no file can be found that matches the filespec, a
  1171.       null string is returned.
  1172.  
  1173. Notes:    If the filespec contains drive or path information, the
  1174.       specified drive or directory is searched. Otherwise, the
  1175.       current directory of the current drive is searched.
  1176.  
  1177.       The filespec may contain wildcard characters in the name or
  1178.       extension, in which case the first matching file is located.
  1179.  
  1180.       If the filespec is omitted, it is assumed that a previous
  1181.       call was made to DOSDIR specifying a filespec with wildcard
  1182.       characters, and the next matching file is located.
  1183.  
  1184.       The output argument is used to specify the contents and order
  1185.       of the directory information returned, as follows:
  1186.  
  1187.       'N' - the name and extension of the file, in the form
  1188.          name.ext
  1189.       'S' - the size of the file in bytes
  1190.       'D' - the date of the last update of the file, in the form
  1191.          mm/dd/yy
  1192.       'T' - the time of the last update of the file, in the form
  1193.          hh:mm:ss
  1194.       'A' - a string of characters indicating the file's attributes:
  1195.  
  1196.         'R' for a read-only file
  1197.         'H' for a hidden file
  1198.         'S' for a system file
  1199.         'D' if the file is a directory
  1200.         'A' if the file's archive bit is set
  1201.         '-' if the file has none of the above attributes
  1202.  
  1203.  
  1204.  
  1205.       If the output argument is omitted or is null, all of the
  1206.       above information is returned by DOSDIR, in the above order.
  1207.       Otherwise, the order in which the characters appear
  1208.       determines the order in which the information is returned.
  1209.  
  1210.       If the search argument is omitted or is null, DOSDIR
  1211.       searches only for "normal" files: hidden files, system
  1212.       files, and directory files are ignored. If specified, the
  1213.       search argument is a string of characters that can be used
  1214.       to extend the search to special files:
  1215.  
  1216.       'H' -  hidden files
  1217.       'S' -  system files
  1218.       'D' -  directory files
  1219.  
  1220.  
  1221.       If a filespec is not supplied and DOSDIR is searching for
  1222.       the next match of a previously-specified pattern, the search
  1223.       argument is ignored.
  1224.  
  1225.       If specified, the mask argument is a set of characters that
  1226.       can be used to restrict the search to files with particular
  1227.       attribute bits set:
  1228.  
  1229.       'R' - read-only files
  1230.       'H' - hidden files
  1231.       'S' - system files
  1232.       'D' - directory files
  1233.       'A' - files with the archive bit set
  1234.  
  1235.  
  1236.       If a filespec is not supplied, DOSDIR searches for the next
  1237.       file matching the pattern that was last used. The position
  1238.       argument can be used to cause a search for the next file
  1239.       matching a previously used pattern, allowing intervening
  1240.       calls to DOSDIR using other patterns. The position argument
  1241.       is a string returned by the DOSDIRPOS function that
  1242.       represents the current position in a directory search.
  1243.  
  1244. See also:  DOSDIRCLOSE, DOSDIRPOS, DOSFILEINFO
  1245.  
  1246.  
  1247. ΓòÉΓòÉΓòÉ 3.33. DOSDIRCLOSE ΓòÉΓòÉΓòÉ
  1248.  
  1249. DOSDIRCLOSE(position)
  1250.  
  1251. Summary:   DOSDIRCLOSE is used to tell the system that a DOSDIR search
  1252.       for files is completed.
  1253.  
  1254. Arguments:  position:  Directory position information returned by
  1255.             DOSDIRPOS.
  1256.  
  1257. Returns:   0 if the operation was successful, otherwise 1.
  1258.  
  1259. Notes:    Directory searches under OS/2 require the use of a directory
  1260.       handle, which must be allocated when a directory search
  1261.       begins and freed when a directory search has finished.
  1262.  
  1263.       DOSDIR will normally obtain and free directory handles as
  1264.       necessary, but in one special case it cannot be determined
  1265.       that you are finished with a directory handle, so you must
  1266.       use DOSDIRCLOSE to tell the system to free up the handle.
  1267.       This happens when your program uses DOSDIRPOS to save the
  1268.       handle of a directory search. If you do not later reuse the
  1269.       handle to continue the search to completion (that is until
  1270.       DOSDIR indicates that there are no more matching files), you
  1271.       should use DOSDIRCLOSE to tell the system that you are
  1272.       finished with the directory handle and that it can be freed.
  1273.  
  1274. See also:  DOSDIR, DOSDIRPOS
  1275.  
  1276.  
  1277. ΓòÉΓòÉΓòÉ 3.34. DOSDIRPOS ΓòÉΓòÉΓòÉ
  1278.  
  1279. DOSDIRPOS()
  1280.  
  1281. Summary:   DOSDIRPOS returns a string representing the current
  1282.       DOSDIR directory position status.
  1283.  
  1284. Returns:   A string that represents the current position in a DOSDIR
  1285.       search.
  1286.  
  1287. Notes:    DOSDIRPOS is provided to allow "nested" directory searches
  1288.       using DOSDIR. That is, if you want to use a new file spec
  1289.       with DOSDIR during a search but later resume the original
  1290.       search, you can save your position by calling DOSDIRPOS and
  1291.       later passing the returned position as an argument to
  1292.       DOSDIR when you want to resume the search.
  1293.  
  1294.       If you use DOSDIRPOS and subsequently do not call DOSDIR
  1295.       until it returns a null string (which indicates no more
  1296.       files were found), you should call DOSDIRCLOSE to indicate
  1297.       to the system that the search is completed.
  1298.  
  1299. See also:  DOSDIR, DOSDIRCLOSE
  1300.  
  1301.  
  1302. ΓòÉΓòÉΓòÉ 3.35. DOSDISK ΓòÉΓòÉΓòÉ
  1303.  
  1304. DOSDISK(option,[drive])
  1305.  
  1306. Summary:   DOSDISK returns information about the specified disk.
  1307.  
  1308. Arguments:  option:   One of 'A', 'B', 'C', 'F', 'S', 'T', or 'U'.
  1309.       drive:  Letter that designates the drive of interest.
  1310.           (Default is the current drive.)
  1311.  
  1312. Returns:   Depends on the selected option:
  1313.  
  1314.       A - the number of available clusters on the disk.
  1315.       B - the number of bytes per disk sector.
  1316.       C - the number of clusters on the disk.
  1317.       F - the number of free (unused) bytes on the disk.
  1318.       S - the number of sectors per disk cluster.
  1319.       T - the total number of bytes on the disk.
  1320.       U - the total number of bytes in use on the disk.
  1321.  
  1322.  
  1323.       -1 is returned if the drive is invalid or not ready.
  1324.  
  1325. See also:  PCDISK
  1326.  
  1327.  
  1328. ΓòÉΓòÉΓòÉ 3.36. DOSDRIVE ΓòÉΓòÉΓòÉ
  1329.  
  1330. DOSDRIVE([newdrive])
  1331.  
  1332. Summary:   DOSDRIVE returns the current drive letter and optionally
  1333.       changes the current drive.
  1334.  
  1335. Arguments:  newdrive:  Letter that identifies the new default drive.
  1336.  
  1337. Returns:   The letter of the current default drive.
  1338.  
  1339. Notes:    If a new drive is not specified, DOSDRIVE simply returns
  1340.       the current drive letter.
  1341.  
  1342. See also:  DOSCHDIR
  1343.  
  1344.  
  1345. ΓòÉΓòÉΓòÉ 3.37. DOSEALIST ΓòÉΓòÉΓòÉ
  1346.  
  1347. DOSEALIST(filename,[namestem],[valuestem],[flagstem])
  1348.  
  1349. Summary:   DOSEALIST places information about the extended attributes
  1350.       of a file into one or more compound variables.
  1351.  
  1352. Arguments:  filename:  The fully qualified name of a file.
  1353.       namestem:  A stem name for the compound variable that
  1354.             receives the name of an extended attribute.
  1355.       valuestem:  A stem name for the compound variable that
  1356.             receives the value of an extended attribute.
  1357.       flagstem:  A stem name for the compound variable that
  1358.             receives an extended attribute flag.
  1359.  
  1360. Returns:   The number of extended attributes that exist for the
  1361.       specified file. -1 will be returned if the file does not
  1362.       exist or a problem occurs retrieving the extended
  1363.       attributes.
  1364.  
  1365. Notes:    Element 0 of each compound variable array is set to the
  1366.       number of elements in the array.
  1367.  
  1368.       The extended attribute flag is a 1-byte value defined by
  1369.       the operating system.
  1370.  
  1371. See also:  DOSEASIZE
  1372.  
  1373.  
  1374. ΓòÉΓòÉΓòÉ 3.38. DOSEASIZE ΓòÉΓòÉΓòÉ
  1375.  
  1376. DOSEASIZE(filename)
  1377.  
  1378. Summary:   DOSEASIZE returns the total size of a file's extended
  1379.       attributes.
  1380.  
  1381. Arguments:  filename:  The fully qualified name of a file.
  1382.  
  1383. Returns:   The total size of a file's extended attributes. -1 will be
  1384.       returned if the file does not exist or a problem occurs
  1385.       retrieving the extended attributes.
  1386.  
  1387. Notes:    DOSEASIZE returns the same number that is reported by the
  1388.       /n option of the DIR command.
  1389.  
  1390. See also:  DOSEALIST
  1391.  
  1392.  
  1393. ΓòÉΓòÉΓòÉ 3.39. DOSEDITNAME ΓòÉΓòÉΓòÉ
  1394.  
  1395. DOSEDITNAME(source,pattern)
  1396.  
  1397. Summary:   DOSEDITNAME is used primarily to construct new file names
  1398.       based on an input file name and a pattern.
  1399.  
  1400. Arguments:  source:   A character string.
  1401.       pattern:   A character string in which "*", "?", and "."
  1402.             play special roles.
  1403.  
  1404. Returns:   A new character string based on the source string and the
  1405.       pattern.
  1406.  
  1407. Notes:    Characters are copied one at a time from the pattern to the
  1408.       result. Every time a character (other than "*", "?", or ".")
  1409.       is copied from the pattern, a pointer advances in the
  1410.       source string. The operation stops when the end of the
  1411.       pattern is reached.
  1412.  
  1413.       If "?" is found in the pattern, the character in the
  1414.       source string indicated by the pointer is copied to the
  1415.       result, and the pointer is advanced. However, if a period
  1416.       or the end of the source string is reached, nothing is
  1417.       copied.
  1418.  
  1419.       If "*" is found in the pattern, characters of the source
  1420.       string are copied to the result until the character
  1421.       following "*" (if any) in the pattern is found in the
  1422.       source (irrespective of case).
  1423.  
  1424.       If "." is found in the pattern, the pointer in the source
  1425.       string is advanced to the character after the next ".".
  1426.  
  1427.       Examples:
  1428.  
  1429.         DOSEDITNAME("foo.bar", "*.bak") -> foo.bak
  1430.         DOSEDITNAME("abcd.efg", "A*D.xyz") -> AbcD.xyz
  1431.         DOSEDITNAME("abcd.efg", "123.*") -> 123.efg
  1432.         DOSEDITNAME("abcd.efg", "1*2.*") -> 1bcd.efg2.
  1433.  
  1434.  
  1435. See also:  DOSTEMPNAME
  1436.  
  1437.  
  1438. ΓòÉΓòÉΓòÉ 3.40. DOSENV ΓòÉΓòÉΓòÉ
  1439.  
  1440. DOSENV(string)
  1441.  
  1442. Summary:   DOSENV returns the value of the specified environment
  1443.       variable.
  1444.  
  1445. Arguments:  string: Name of the environment variable of interest.
  1446.  
  1447. Returns:   The value of the specified environment variable.
  1448.  
  1449. See also:  DOSENVLIST, DOSENVSIZE
  1450.  
  1451.  
  1452. ΓòÉΓòÉΓòÉ 3.41. DOSENVLIST ΓòÉΓòÉΓòÉ
  1453.  
  1454. DOSENVLIST(liststem)
  1455.  
  1456. Summary:   DOSENVLIST places the list of current environment variable
  1457.       names in a specified REXX compound variable.
  1458.  
  1459. Arguments:  liststem:  A stem name for the compound variable that
  1460.             receives the list of system environment
  1461.             variables.
  1462.  
  1463. Returns:   The number of environment variables found.
  1464.  
  1465. Notes:    Element 0 of the compound variable array is set to the
  1466.       number of elements in the array.
  1467.  
  1468.       Either the DOSENV function or the VALUE function can be
  1469.       used to retrieve the value of any environment variable.
  1470.  
  1471. See also:  DOSENV
  1472.  
  1473.  
  1474. ΓòÉΓòÉΓòÉ 3.42. DOSENVSIZE ΓòÉΓòÉΓòÉ
  1475.  
  1476. DOSENVSIZE()
  1477.  
  1478. Summary:   DOSENVSIZE returns the total size of the current
  1479.       environment area and the amount of free space remaining.
  1480.  
  1481. Returns:   Two numbers, separated by blanks. The first number is the
  1482.       current size of the environment area and the second is the
  1483.       amount of free space. Both values are in bytes.
  1484.  
  1485. Notes:    Unless no more system memory is available, the environment
  1486.       area will usually grow if new variables are added.
  1487.  
  1488. See also:  DOSENV, DOSENVLIST
  1489.  
  1490.  
  1491. ΓòÉΓòÉΓòÉ 3.43. DOSFDATE ΓòÉΓòÉΓòÉ
  1492.  
  1493. DOSFDATE(filename,[newdate],[newtime])
  1494.  
  1495. Summary:   DOSFDATE changes the date and time recorded as the date/time
  1496.       of the last modification to a file.
  1497.  
  1498. Arguments:  filename:  The fully qualified name of a file whose last
  1499.             modification date is to be changed.
  1500.       newdate:   The new date.
  1501.       newtime:   The new time.
  1502.  
  1503. Returns:   1 if the operation was successful, otherwise 0.
  1504.  
  1505. Notes:    The new date is specified in the "standard" date format as
  1506.       returned by the DATE function: <yyyymmdd>. For instance,
  1507.       19930131 is January 31, 1993. The date must be on or after
  1508.       January 1, 1980.
  1509.  
  1510.       The new time is specified as <hhmmss> (24-hour format, but
  1511.       no punctuation). The appropriate number of digits must be
  1512.       specified for each field. For instance, 1:01AM is 010100.
  1513.  
  1514.       If neither a newdate nor a newtime is specified, the current
  1515.       date and time are used. This implies that DOSFDATE should not
  1516.       be used simply to determine the time stamp of a file, since
  1517.       it will be changed. Use DOSDIR or DOSFILEINFO to get the time
  1518.       stamp without changing it.
  1519.  
  1520. See also:  DOSDIR, DOSFILEINFO
  1521.  
  1522.  
  1523. ΓòÉΓòÉΓòÉ 3.44. DOSFILEHANDLES ΓòÉΓòÉΓòÉ
  1524.  
  1525. DOSFILEHANDLES([handles])
  1526.  
  1527. Summary:   DOSFILEHANDLES reports the maximum number of system file
  1528.       handles that may be opened in a given process and optionally
  1529.       changes the number.
  1530.  
  1531. Arguments:  handles:   The new maximum number of open file handles.
  1532.  
  1533. Returns:   The current maximum number of open file handles.
  1534.  
  1535. Notes:    File handles are used every time a file is accessed with
  1536.       REXX I/O functions such as CHARIN/CHAROUT, LINEIN/LINEOUT,
  1537.       CHARS, LINES, and STREAM. Other services invoked indirectly
  1538.       from REXX may also create open file handles. At least 3
  1539.       handles are usually in use for the the standard input stream,
  1540.       standard output stream, and standard error stream.
  1541.  
  1542.       Many difficult to diagnose program errors can occur if the
  1543.       maximum number of file handles is too low. DOSFILEHANDLES
  1544.       may be used to protect against such problems. A value like
  1545.       50 or 100 is not unreasonable. However, many problems can
  1546.       be solved simply by closing REXX files as soon as a program
  1547.       is done with them.
  1548.  
  1549.  
  1550. ΓòÉΓòÉΓòÉ 3.45. DOSFILEINFO ΓòÉΓòÉΓòÉ
  1551.  
  1552. DOSFILEINFO(filename,option)
  1553.  
  1554. Summary:   DOSFILEINFO returns certain information about a specified
  1555.       file.
  1556.  
  1557. Arguments:  filename:  The fully qualified name of a file.
  1558.       option:   'A', 'C', 'S', or 'W'
  1559.  
  1560. Returns:   Depends on the selected option:
  1561.  
  1562.       'A' - The date and time the file was last accessed.
  1563.       'C' - The date and time the file was created.
  1564.       'S' - The allocated size of the file.
  1565.       'W' - The date and time the file was last written.
  1566.  
  1567.  
  1568. Notes:    The date and time the file was created or last accessed is
  1569.       available only for files on HPFS disks. The information is
  1570.       returned in the form "mm/dd/yy hh:mm:ss".
  1571.  
  1572.       The date and time the file was last written is the same
  1573.       value as returned by DOSFDATE.
  1574.  
  1575.       The allocated size of the file reflects the total number of
  1576.       complete file allocation units, so will generally be larger
  1577.       that the current file size as reported by the DIR command or
  1578.       the DOSDIR function.
  1579.  
  1580. See also:  DOSDIR, DOSFDATE
  1581.  
  1582.  
  1583. ΓòÉΓòÉΓòÉ 3.46. DOSFILESYS ΓòÉΓòÉΓòÉ
  1584.  
  1585. DOSFILESYS([drive])
  1586.  
  1587. Summary:   DOSFILESYS returns the type of file system on a specified
  1588.       drive.
  1589.  
  1590. Arguments:  drive:  A valid disk drive letter. The default is the current
  1591.           drive.
  1592.  
  1593. Returns:   The name of the file system as reported by the installable
  1594.       file system driver.
  1595.  
  1596. Notes:    Possible names include "FAT", "HPFS", "CDFS", and "HPOFS".
  1597.       This call can be used, for example, to identify a CD-ROM
  1598.       drive ("CDFS") if a disk is loaded in the drive.
  1599.  
  1600. See also:  DOSVOLINFO
  1601.  
  1602.  
  1603. ΓòÉΓòÉΓòÉ 3.47. DOSFNAME ΓòÉΓòÉΓòÉ
  1604.  
  1605. DOSFNAME(filename)
  1606.  
  1607. Summary:   DOSFNAME returns the fully qualified name of the specified
  1608.       file, including a drive specifier, path specification, name,
  1609.       and extension.
  1610.  
  1611. Arguments:  filename:  A partially qualified file name.
  1612.  
  1613. Returns:   The fully qualified name of the file, or a null string if
  1614.       there is a syntax error in the name.
  1615.  
  1616. Notes:    DOSFNAME is useful because it fills in any missing
  1617.       drive or path information, and it converts relative paths
  1618.       to absolute paths that start at the root directory.
  1619.  
  1620.       Neither the specified file name nor any path components need
  1621.       actually exist, but a null string is returned if there is a
  1622.       syntax error in the name.
  1623.  
  1624.       For example, if the current drive is the C: drive and the current
  1625.       directory is %PROGRAMS,
  1626.  
  1627.       DOSFNAME('abc.def') -> c:%programs%abc.def
  1628.       DOSFNAME('c:object%xyz.obj') -> c:%programs%object%xyz.obj
  1629.       DOSFNAME('..%autoexec.bat') -> c:%autoexec.bat
  1630.  
  1631.  
  1632. See also:  PARSEFN, VALIDNAME
  1633.  
  1634.  
  1635. ΓòÉΓòÉΓòÉ 3.48. DOSFSIZE ΓòÉΓòÉΓòÉ
  1636.  
  1637. DOSFSIZE(filename,[newsize])
  1638.  
  1639. Summary:   DOSFSIZE returns the actual size of a file and may
  1640.       optionally change the size.
  1641.  
  1642. Arguments:  filename:  The fully qualified name of a file.
  1643.       newsize:   New size of the file.
  1644.  
  1645. Returns:   Original size of the file, or 0 if the file did not exist
  1646.       but was created, or -1 if there was an error obtaining the
  1647.       original size.
  1648.  
  1649. Notes:    If the file does not exist but a new size is specified, the
  1650.       file is created.
  1651.  
  1652.       No error indication is provided if additional space for the
  1653.       file cannot be allocated. You can check for successful
  1654.       reallocation by calling DOSFSIZE again.
  1655.  
  1656. See also:  DOSDIR, DOSFILEINFO
  1657.  
  1658.  
  1659. ΓòÉΓòÉΓòÉ 3.49. DOSISDEV ΓòÉΓòÉΓòÉ
  1660.  
  1661. DOSISDEV(filename)
  1662.  
  1663. Summary:   DOSISDEV indicates whether the specified name represents a
  1664.       device.
  1665.  
  1666. Arguments:  filename:  A fully qualified file system identifier.
  1667.  
  1668. Returns:   1 if the specified name is a device, such as CON, PRN, LPT1,
  1669.       NUL, etc., otherwise 0.
  1670.  
  1671. Notes:    DOSISDEV is useful for validating file names supplied to
  1672.       programs. DOSISDEV returns 1 for names such as "\XYZ\PRN",
  1673.       which is considered to refer to the PRN device rather than a
  1674.       file.
  1675.  
  1676. See also:  DOSISFILE, DOSISPIPE
  1677.  
  1678.  
  1679. ΓòÉΓòÉΓòÉ 3.50. DOSISDIR ΓòÉΓòÉΓòÉ
  1680.  
  1681. DOSISDIR(filename)
  1682.  
  1683. Summary:   DOSISDIR indicates whether the specified name is a directory.
  1684.  
  1685. Arguments:  filename:  A fully qualified file system identifier.
  1686.  
  1687. Returns:   1 if the specified name is a directory, otherwise 0.
  1688.  
  1689. Notes:    The file name should not include a trailing "%".
  1690.  
  1691.  
  1692. ΓòÉΓòÉΓòÉ 3.51. DOSISFILE ΓòÉΓòÉΓòÉ
  1693.  
  1694. DOSISFILE(filename)
  1695.  
  1696. Summary:   DOSISFILE indicates whether the specified name represents
  1697.       a disk file.
  1698.  
  1699. Arguments:  filename:  A fully qualified file system identifier.
  1700.  
  1701. Returns:   1 if the identifier represents an existing file or 0 if the
  1702.       file does not exist, is a device, or is a named pipe.
  1703.  
  1704. See also:  DOSISDEV, DOSISPIPE
  1705.  
  1706.  
  1707. ΓòÉΓòÉΓòÉ 3.52. DOSISPIPE ΓòÉΓòÉΓòÉ
  1708.  
  1709. DOSISPIPE(filename)
  1710.  
  1711. Summary:   DOSISPIPE indicates whether the specified name represents
  1712.       a named pipe.
  1713.  
  1714. Arguments:  filename:  A fully qualified file system identifier.
  1715.  
  1716. Returns:   1 if the identifier represents a named pipe, or 0
  1717.       otherwise.
  1718.  
  1719. See also:  DOSISDEV, DOSISFILE
  1720.  
  1721.  
  1722. ΓòÉΓòÉΓòÉ 3.53. DOSKILLPROCESS ΓòÉΓòÉΓòÉ
  1723.  
  1724. DOSKILLPROCESS(pid,[option])
  1725.  
  1726. Summary:   DOSKILLPROCESS issues a termination request for a specified
  1727.       process.
  1728.  
  1729. Arguments:  pid:   The numeric process identifier of the process to be
  1730.           terminated (in decimal).
  1731.       option: 'P' or 'T'
  1732.  
  1733. Returns:   1 if the system successfully flagged the process for
  1734.       termination, otherwise 0.
  1735.  
  1736. Notes:    The 'P' option, which is the default, means there is no
  1737.       restriction on the process to be terminated. However, only
  1738.       the indicated process is terminated, and not any of its
  1739.       descendants.
  1740.  
  1741.       The 'T' option means the process must be the current process
  1742.       or one of its descendants. All descendants of the indicated
  1743.       process are terminated.
  1744.  
  1745.       Even if the return code is 1 the process may not actually be
  1746.       terminated by the system. Any process can intercept the
  1747.       termination request and refuse to terminate, or the system
  1748.       may be unable to terminate it for other reasons.
  1749.  
  1750.       DOSKILLPROCESS can be used to stop sessions using the PID
  1751.       that is returned by DOSSWITCHLIST. However, child processes
  1752.       are not terminated when a parent is. (Unless the 'T' option
  1753.       was selected.) For example, a program executing from an OS/2
  1754.       windowed command session is not terminated when the command
  1755.       session (usually CMD.EXE) itself is.
  1756.  
  1757. See also:  DOSPID, DOSPIDLIST, DOSPROCINFO, DOSSWITCHLIST
  1758.  
  1759.  
  1760. ΓòÉΓòÉΓòÉ 3.54. DOSMAKEDIR ΓòÉΓòÉΓòÉ
  1761.  
  1762. DOSMAKEDIR(pathname)
  1763.  
  1764. Summary:   DOSMAKEDIR creates one or more new directories.
  1765.  
  1766. Arguments:  pathname:  The fully qualified name of the directory to
  1767.             create.
  1768.  
  1769. Returns:   1 if the operation is successful, otherwise 0.
  1770.  
  1771. Notes:    Unlike DOSMKDIR, DOSMAKEDIR will create any intermediate
  1772.       subdirectories which are required.
  1773.  
  1774.       DOSMAKEDIR will return 1 as long as the requested directory
  1775.       structure exists at the end, even if it already existed.
  1776.  
  1777. See also:  DOSMKDIR, DOSRMDIR
  1778.  
  1779.  
  1780. ΓòÉΓòÉΓòÉ 3.55. DOSMAXPATH ΓòÉΓòÉΓòÉ
  1781.  
  1782. DOSMAXPATH()
  1783.  
  1784. Summary:   DOSMAXPATH returns the maximum acceptable length of a fully
  1785.       qualified path name.
  1786.  
  1787. Arguments:  none
  1788.  
  1789. Returns:   The maximum acceptable length of a fully qualified path
  1790.       name.
  1791.  
  1792. Notes:    The value returned is a system-wide constant. An actual file
  1793.       system (e. g. FAT) may have a lower limit.
  1794.  
  1795.  
  1796. ΓòÉΓòÉΓòÉ 3.56. DOSMKDIR ΓòÉΓòÉΓòÉ
  1797.  
  1798. DOSMKDIR(pathname)
  1799.  
  1800. Summary:   DOSMKDIR creates a new directory.
  1801.  
  1802. Arguments:  pathname:  The fully qualified name of the directory to
  1803.             create.
  1804.  
  1805. Returns:   1 if the operation was successful, otherwise 0.
  1806.  
  1807. Notes:    Unlike DOSMAKEDIR, DOSMKDIR will fail if any intermediate
  1808.       component of the directory path does not exist.
  1809.  
  1810.       DOSMKDIR will return 0 if the requested directory
  1811.       structure already exists.
  1812.  
  1813. See also:  DOSMAKEDIR, DOSRMDIR
  1814.  
  1815.  
  1816. ΓòÉΓòÉΓòÉ 3.57. DOSPATHFIND ΓòÉΓòÉΓòÉ
  1817.  
  1818. DOSPATHFIND(filename,[envvar])
  1819.  
  1820. Summary:   DOSPATHFIND searches a list of directories for a specified
  1821.       file.
  1822.  
  1823. Arguments:  filename:  The name of a file to search for.
  1824.       envvar:   The name of an environment variable containing
  1825.             a list of directories. The default is 'PATH'.
  1826.  
  1827. Returns:   The fully qualified name of the file, if found, otherwise
  1828.       a null string.
  1829.  
  1830. Notes:    The search process is similar to the process carried out
  1831.       when searching for an executable file. If the fileid
  1832.       contains a drive or path specification, DOSPATHFIND looks
  1833.       only there. Otherwise, DOSPATHFIND looks for the file in the
  1834.       current directory and then in each of the directories
  1835.       specified in the list.
  1836.  
  1837.       The envvar argument lets you specify the name of another
  1838.       environment variable, other than the default of PATH, to use
  1839.       to determine the list of directories to search.
  1840.  
  1841. See also:  DOSCOMMANDFIND
  1842.  
  1843.  
  1844. ΓòÉΓòÉΓòÉ 3.58. DOSPID ΓòÉΓòÉΓòÉ
  1845.  
  1846. DOSPID()
  1847.  
  1848. Summary:   DOSPID returns the process id (PID).
  1849.  
  1850. Returns:   The process id (PID) of the current process. This is a number
  1851.       which uniquely identifies the process within the system.
  1852.  
  1853. See also:  DOSPIDLIST, DOSPROCINFO
  1854.  
  1855.  
  1856. ΓòÉΓòÉΓòÉ 3.59. DOSPIDLIST ΓòÉΓòÉΓòÉ
  1857.  
  1858. DOSPIDLIST(pidstem,[namestem],[parentstem],[sesssionstem])
  1859.  
  1860. Summary:   DOSPIDLIST places information about currently active
  1861.       processes into one or more compound variables.
  1862.  
  1863. Arguments:  pidstem:   A stem name for the compound variable that
  1864.             receives the list of process identifiers.
  1865.       namestem:  A stem name for the compound variable that
  1866.             receives the list of process names.
  1867.       parentstem: A stem name for the compound variable that
  1868.             receives the list of parent process identifiers.
  1869.       sessionstem: A stem name for the compound variable that
  1870.             receives the list of session identifiers.
  1871.  
  1872. Returns:   The number of processes found.
  1873.  
  1874. Notes:    A process identifier is a decimal number which uniquely
  1875.       represents each process in the system. The parent process is
  1876.       the process which created a given process. The session
  1877.       identifier is a decimal number which represents a group of
  1878.       related processes. (A session usually consists of the family
  1879.       of processes created by an instance of CMD.EXE.) The process
  1880.       name is the fully qualified name of the program associated
  1881.       with the process.
  1882.  
  1883.       Element 0 of each compound variable array is set to the
  1884.       number of elements in the array.
  1885.  
  1886. See also:  DOSKILLPROCESS, DOSPID, DOSPROCINFO, DOSSWITCHLIST
  1887.  
  1888.  
  1889. ΓòÉΓòÉΓòÉ 3.60. DOSPRIORITY ΓòÉΓòÉΓòÉ
  1890.  
  1891. DOSPRIORITY([delta],[class],[pid])
  1892.  
  1893. Summary:   DOSPRIORITY returns the current priority level and priority
  1894.       class of a specified process.
  1895.  
  1896. Arguments:  delta:  A signed number from -31 to +31 that indicates a
  1897.           requested change to the priority level (default 0).
  1898.       class:  A number from 0 to 4 that indicates the requested
  1899.           priority class (default 0).
  1900.       pid:   The numeric identifier of the process for which
  1901.           priority is to be returned or changed.
  1902.  
  1903. Returns:   Two numbers indicating the priority level and priority
  1904.       class of thread 1 of the specified process before any change
  1905.       is applied.
  1906.  
  1907. Notes:    A priority level has a minimum value of 0 and a maximum of
  1908.       31.
  1909.  
  1910.       In order of increasing priority, the valid priority
  1911.       classes are:
  1912.  
  1913.       1 - "idle-time"
  1914.       2 - "regular"
  1915.       3 - "time critical"
  1916.       4 - "server"
  1917.  
  1918.       Specifying a class of 0 indicates no change.
  1919.  
  1920.       The target process must be a descendant of the requesting
  1921.       process if a change is made, but the priority of any
  1922.       process can be queried.
  1923.  
  1924. See also:  DOSPID, DOSPIDLIST, DOSPROCINFO
  1925.  
  1926.  
  1927. ΓòÉΓòÉΓòÉ 3.61. DOSPROCINFO ΓòÉΓòÉΓòÉ
  1928.  
  1929. DOSPROCINFO(option,[pid])
  1930.  
  1931. Summary:   DOSPROCINFO returns information about a specified process.
  1932.  
  1933. Arguments:  option: 'N', 'P', or 'S'
  1934.       pid:   The numeric identifier of the process for which
  1935.           information is requested in decimal (default is the
  1936.           current process).
  1937.  
  1938.  
  1939. Returns:   Depends on the selected option:
  1940.  
  1941.       'N' - The fully qualified name of the program associated
  1942.          with the process.
  1943.       'P' - The process identifier of the parent of the process.
  1944.       'S' - The session identifier of the process.
  1945.  
  1946.  
  1947. Notes:    A process identifier is a decimal number which uniquely
  1948.       represents each process in the system. The parent process is
  1949.       the process which created a given process. The session
  1950.       identifier is a decimal number which represents a group of
  1951.       related processes. (A session usually consists of the family
  1952.       of processes created by an instance of CMD.EXE.) The process
  1953.       name is the fully qualified name of the program associated
  1954.       with the process.
  1955.  
  1956. See also:  DOSPID, DOSPIDLIST
  1957.  
  1958.  
  1959. ΓòÉΓòÉΓòÉ 3.62. DOSRENAME ΓòÉΓòÉΓòÉ
  1960.  
  1961. DOSRENAME(filename1,filename2)
  1962.  
  1963. Summary:   DOSRENAME renames a file or directory.
  1964.  
  1965. Arguments:  filename1:  The name of the file or directory to rename.
  1966.       filename2:  The new name of the file or directory.
  1967.  
  1968. Returns:   1 if the operation was successful, otherwise 0.
  1969.  
  1970. Notes:    The names should contain any necessary drive and path
  1971.       information, but should not contain wildcard characters.
  1972.  
  1973.       DOSRENAME allows a file to be "moved" from one directory to
  1974.       another on the same drive.
  1975.  
  1976.  
  1977. ΓòÉΓòÉΓòÉ 3.63. DOSRMDIR ΓòÉΓòÉΓòÉ
  1978.  
  1979. DOSRMDIR(directory)
  1980.  
  1981. Summary:   DOSRMDIR deletes the specified directory.
  1982.  
  1983. Arguments:  directory:  The name of the directory to be removed.
  1984.  
  1985. Returns:   1 if the operation was successful, otherwise 0.
  1986.  
  1987. Notes:    The specified directory cannot be removed unless it contains
  1988.       no files or subdirectories. It must also not be the current
  1989.       directory of any process in the system.
  1990.  
  1991. See also:  DOSMKDIR
  1992.  
  1993.  
  1994. ΓòÉΓòÉΓòÉ 3.64. DOSSESSIONTYPE ΓòÉΓòÉΓòÉ
  1995.  
  1996. DOSSESSIONTYPE()
  1997.  
  1998. Summary:   DOSSESSIONTYPE returns the type of the current session.
  1999.  
  2000. Arguments:  none.
  2001.  
  2002. Returns:   A number indicating type of session, which can be:
  2003.  
  2004.       0 - full-screen
  2005.       2 - VIO window
  2006.       3 - PM session
  2007.       4 - detached session
  2008.  
  2009.  
  2010. ΓòÉΓòÉΓòÉ 3.65. DOSSWITCHLIST ΓòÉΓòÉΓòÉ
  2011.  
  2012. DOSSWITCHLIST(titlestem,[pidstem],[sessionstem],[handlestem],[typestem],
  2013.        [visibilitystem])
  2014.  
  2015. Summary:   DOSSWITCHLIST places information about sessions in the
  2016.       system "switch list" into one or more compound variables.
  2017.  
  2018. Arguments:  titlestem:    A stem name for the compound variable that
  2019.               receives the title of the session.
  2020.       pidstem:     A stem name for the compound variable that
  2021.               receives the list of process identifiers.
  2022.       session stem:  A stem name for the compound variable that
  2023.               receives the list of session identifiers.
  2024.       handle stem:   A stem name for the compound variable that
  2025.               receives the list of window handles.
  2026.       typestem:    A stem name for the compound variable that
  2027.               receives the list of program types.
  2028.       visibilitystem: A stem name for the compound variable that
  2029.               receives the list of visibility flags.
  2030.  
  2031. Returns:   The number of switch list entries found.
  2032.  
  2033. Notes:    Not all processes listed by DOSPIDLIST will be returned by
  2034.       DOSSWITCHLIST. Only those processes which are included in
  2035.       the switch list are returned. Conversely, not all processes
  2036.       listed by DOSSWITCHLIST will be returned by DOSPIDLIST. For
  2037.       instance, processes corresponding to DOS or Windows sessions
  2038.       are not shown by DOSPIDLIST.
  2039.  
  2040.       The session title is the string that occurs in the title bar
  2041.       of the session's window and in the switch list. All "white
  2042.       space" characters between words in the title are removed,
  2043.       except for a single blank.
  2044.  
  2045.       Element 0 of each compound variable array is set to the
  2046.       number of elements in the array.
  2047.  
  2048.       The program type is a number which indicates the type of
  2049.       the session. It may be:
  2050.  
  2051.       0 - OS/2 full screen
  2052.       2 - OS/2 window
  2053.       3 - PM application
  2054.       4 - DOS or Windows full screen
  2055.       7 - DOS or Windows window
  2056.  
  2057.  
  2058.       The visibility flag is a number that indicates whether the
  2059.       item is actually visible in the switch list. It may be:
  2060.  
  2061.       1 - invisible
  2062.       2 - grayed
  2063.       4 - fully visible
  2064.  
  2065.  
  2066. See also:  DOSKILLPROCESS, DOSPIDLIST
  2067.  
  2068.  
  2069. ΓòÉΓòÉΓòÉ 3.66. DOSTEMPNAME ΓòÉΓòÉΓòÉ
  2070.  
  2071. DOSTEMPNAME(namepattern)
  2072.  
  2073. Summary:   DOSTEMPNAME constructs a temporary file name for a new file
  2074.       from a given pattern.
  2075.  
  2076. Arguments:  namepattern:   A character string consisting of valid file
  2077.               name characters and "?".
  2078.  
  2079. Returns:   A valid file name that is guaranteed not to exist on the
  2080.       default or specified drive.
  2081.  
  2082. Notes:    Temporary names are constructed by replacing all "?"
  2083.       characters in the name pattern with the digits of a number
  2084.       that starts at 1 and is incremented by 1 until a name is
  2085.       created that does not correspond to an existing file on the
  2086.       default or specified drive. The replacement process is
  2087.       performed from right to left on both the number and the
  2088.       pattern. For instance, if namepattern is "this??.tmp", the
  2089.       first name to be tried is "this01.tmp", followed by
  2090.       "this02.tmp", and so on.
  2091.  
  2092.       If no unused name can be found, the function returns a null
  2093.       string.
  2094.  
  2095. See also:  DOSEDITNAME
  2096.  
  2097.  
  2098. ΓòÉΓòÉΓòÉ 3.67. DOSTID ΓòÉΓòÉΓòÉ
  2099.  
  2100. DOSTID()
  2101.  
  2102. Summary:   DOSTID returns the thread id (TID).
  2103.  
  2104. Returns:   The thread id (TID) of the current thread. This is a number
  2105.       which uniquely identifies the thread within the current
  2106.       process.
  2107.  
  2108. See also:  DOSPID
  2109.  
  2110.  
  2111. ΓòÉΓòÉΓòÉ 3.68. DOSVOLINFO ΓòÉΓòÉΓòÉ
  2112.  
  2113. DOSVOLINFO([disk],[option])
  2114.  
  2115. Summary:   DOSVOLINFO returns information about a specified disk volume.
  2116.  
  2117. Arguments:  disk:  The letter that identifies the disk for which
  2118.           information is requested. Default is the current disk.
  2119.       option: A letter that indicates the type of information, which
  2120.           can be:
  2121.  
  2122.           'F' - File system type (e. g. FAT, HPFS, CDFS)
  2123.           'L' - The volume label
  2124.           'S' - The volume serial number (default)
  2125.  
  2126.  
  2127. Returns:   The requested information.
  2128.  
  2129. Notes:    The volume serial number is a unique identifier created
  2130.       when the volume is formatted. It is returned in the form
  2131.       xxxx-xxxx, where x is a hex digit.
  2132.  
  2133.       The volume label is the user-specified identifier associated
  2134.       with the volume by the FORMAT or LABEL command. This is the
  2135.       same information returned by DOSVOLUME.
  2136.  
  2137.       The file system type is the same information returned by
  2138.       DOSFILESYS.
  2139.  
  2140. See also:  DOSDISK, DOSFILESYS, DOSVOLUME
  2141.  
  2142.  
  2143. ΓòÉΓòÉΓòÉ 3.69. DOSVOLUME ΓòÉΓòÉΓòÉ
  2144.  
  2145. DOSVOLUME([drive])
  2146.  
  2147. Summary:   DOSVOLUME returns the volume label of a specified drive.
  2148.  
  2149. Arguments:  drive:  Letter that designates the drive of interest.
  2150.           (Default is the current drive.)
  2151.  
  2152. Returns:   The volume label of the specified drive, or a null string if
  2153.       the label cannot be located (for example, the disk has no
  2154.       label, the drive is not ready).
  2155.  
  2156. See also:  DOSCD, DOSVOLINFO
  2157.  
  2158.  
  2159. ΓòÉΓòÉΓòÉ 3.70. ENTAB ΓòÉΓòÉΓòÉ
  2160.  
  2161. ENTAB(string,[spaces])
  2162.  
  2163. Summary:   ENTAB replaces consecutive blanks in a string with tab
  2164.       characters.
  2165.  
  2166. Arguments:  string: The string into which tabs are to be inserted.
  2167.       spaces: The number of spaces between each tab stop. The
  2168.           default is 8.
  2169.  
  2170. Returns:   The input string with tab characters inserted.
  2171.  
  2172. Notes:    Replacing blanks with tabs can make some strings considerably
  2173.       shorter. This may be significant when creating large ASCII
  2174.       TEXT files.
  2175.  
  2176.       Any tabs that are present in the string to begin with are
  2177.       first replaced by the appropriate number of spaces. The
  2178.       string is then rescanned to replace consecutive blanks with
  2179.       tabs where possible.
  2180.  
  2181. See also:  DETAB
  2182.  
  2183.  
  2184. ΓòÉΓòÉΓòÉ 3.71. ERF ΓòÉΓòÉΓòÉ
  2185.  
  2186. ERF(x)
  2187.  
  2188. Summary:   ERF computes the error function
  2189.       (2pi^{-1/2}\int_0^x e^{-t^2}\, dt).
  2190.  
  2191. Arguments:  x:  A real number.
  2192.  
  2193. Returns:   The value of the error function.
  2194.  
  2195. See also:  ERFC
  2196.  
  2197.  
  2198. ΓòÉΓòÉΓòÉ 3.72. ERFC ΓòÉΓòÉΓòÉ
  2199.  
  2200. ERFC(x)
  2201.  
  2202. Summary:   ERFC computes the complement of the error function.
  2203.  
  2204. Arguments:  x:  A real number.
  2205.  
  2206. Returns:   The value of the complement of the error function (1 -
  2207.       erf(x)).
  2208.  
  2209. See also:  ERF
  2210.  
  2211.  
  2212. ΓòÉΓòÉΓòÉ 3.73. EVENTSEM_CLOSE ΓòÉΓòÉΓòÉ
  2213.  
  2214. EVENTSEM_CLOSE(name)
  2215.  
  2216. Summary:   EVENTSEM_CLOSE closes an event semaphore.
  2217.  
  2218. Arguments:  name:  The name of an event semaphore.
  2219.  
  2220. Returns:   0 if the operation was successful, otherwise a return code
  2221.       that identifies the type of error. Possible error codes
  2222.       include:
  2223.  
  2224.       123 - name is invalid (must begin with "\sem32\")
  2225.       187 - semaphore does not exist
  2226.  
  2227.  
  2228. Notes:    EVENTSEM_CLOSE should be used when you are done with an
  2229.       event semaphore to release associated system resources.
  2230.  
  2231. See also:  EVENTSEM_CREATE, EVENTSEM_POST, EVENTSEM_QUERY, EVENTSEM_RESET,
  2232.       EVENTSEM_WAIT
  2233.  
  2234.  
  2235. ΓòÉΓòÉΓòÉ 3.74. EVENTSEM_CREATE ΓòÉΓòÉΓòÉ
  2236.  
  2237. EVENTSEM_CREATE(name,[options])
  2238.  
  2239. Summary:   EVENTSEM_CREATE creates an event semaphore.
  2240.  
  2241. Arguments:  name:    The name of an event semaphore.
  2242.       options:   'P' if the semaphore should be created in a
  2243.             "posted" state. The default is unposted.
  2244.  
  2245. Returns:   0 if the operation was successful, otherwise a return code
  2246.       that identifies the type of error. Possible error codes
  2247.       include:
  2248.  
  2249.       123 - name is invalid (must begin with "\sem32\")
  2250.       285 - named semaphore already exists
  2251.  
  2252.  
  2253. Notes:    EVENTSEM_CREATE must be done once and only once to define
  2254.       the event semaphore to the system.
  2255.  
  2256.       When an event semaphore is in the posted state, the event
  2257.       it represents is considered to have occurred, and EVENTSEM_WAIT
  2258.       will not wait.
  2259.  
  2260. See also:  EVENTSEM_CLOSE, EVENTSEM_POST, EVENTSEM_QUERY, EVENTSEM_RESET,
  2261.       EVENTSEM_WAIT
  2262.  
  2263.  
  2264. ΓòÉΓòÉΓòÉ 3.75. EVENTSEM_POST ΓòÉΓòÉΓòÉ
  2265.  
  2266. EVENTSEM_POST(name)
  2267.  
  2268. Summary:   EVENTSEM_POST posts an event semaphore.
  2269.  
  2270. Arguments:  name:  The name of an event semaphore.
  2271.  
  2272. Returns:   0 if the operation was successful, otherwise a return code
  2273.       that identifies the type of error. Possible error codes
  2274.       include:
  2275.  
  2276.       123 - name is invalid (must begin with "\sem32\")
  2277.       187 - semaphore does not exist
  2278.       298 - too many posts
  2279.       299 - semaphore already posted
  2280.  
  2281.  
  2282. Notes:    When an event semaphore is in the posted state, the event
  2283.       it represents is considered to have occurred, and EVENTSEM_WAIT
  2284.       will not wait.
  2285.  
  2286. See also:  EVENTSEM_CLOSE, EVENTSEM_CREATE, EVENTSEM_QUERY, EVENTSEM_RESET,
  2287.       EVENTSEM_WAIT
  2288.  
  2289.  
  2290. ΓòÉΓòÉΓòÉ 3.76. EVENTSEM_QUERY ΓòÉΓòÉΓòÉ
  2291.  
  2292. EVENTSEM_QUERY(name)
  2293.  
  2294. Summary:   EVENTSEM_QUERY returns information about an event semaphore.
  2295.  
  2296. Arguments:  name:  The name of an event semaphore.
  2297.  
  2298. Returns:   The number of times the event semaphore has been posted since
  2299.       it was last reset. If an error occurs, a negative number is
  2300.       returned that identifies the type of error. Possible error
  2301.       codes include:
  2302.  
  2303.       -123 - name is invalid (must begin with "\sem32\")
  2304.       -187 - semaphore does not exist
  2305.  
  2306.  
  2307. See also:  EVENTSEM_CREATE, EVENTSEM_CLOSE, EVENTSEM_POST, EVENTSEM_RESET,
  2308.       EVENTSEM_WAIT
  2309.  
  2310.  
  2311. ΓòÉΓòÉΓòÉ 3.77. EVENTSEM_RESET ΓòÉΓòÉΓòÉ
  2312.  
  2313. EVENTSEM_RESET(name)
  2314.  
  2315. Summary:   EVENTSEM_RESET resets an event semaphore.
  2316.  
  2317. Arguments:  name:  The name of an event semaphore.
  2318.  
  2319. Returns:   The number of times the semaphore has been posted since it was
  2320.       last reset if the operation was successful, otherwise a
  2321.       negative number is returned that identifies the type of error.
  2322.       Possible error codes include:
  2323.  
  2324.       -123 - name is invalid (must begin with "\sem32\")
  2325.       -187 - semaphore does not exist
  2326.       -300 - semaphore already reset
  2327.  
  2328.  
  2329. Notes:    When an event semaphore is reset the event it represents is
  2330.       considered not to have occurred, and EVENTSEM_WAIT will wait.
  2331.  
  2332. See also:  EVENTSEM_CLOSE, EVENTSEM_CREATE, EVENTSEM_POST, EVENTSEM_QUERY,
  2333.       EVENTSEM_WAIT
  2334.  
  2335.  
  2336. ΓòÉΓòÉΓòÉ 3.78. EVENTSEM_WAIT ΓòÉΓòÉΓòÉ
  2337.  
  2338. EVENTSEM_WAIT(name,[timeout])
  2339.  
  2340. Summary:   EVENTSEM_WAIT waits for an event semaphore to be posted.
  2341.  
  2342. Arguments:  name:    The name of an event semaphore.
  2343.       timeout:   The maximum length of time to wait, in
  2344.             milliseconds. The default is -1, which means
  2345.             an indefinite wait.
  2346.  
  2347. Returns:   0 if the operation was successful, otherwise a return code
  2348.       that identifies the type of error. Possible error codes
  2349.       include:
  2350.  
  2351.       95 - interrupt occured
  2352.       123 - name is invalid (must begin with "\sem32\")
  2353.       187 - semaphore does not exist
  2354.       640 - timeout occurred
  2355.  
  2356.  
  2357. Notes:    A call to EVENTSEM_WAIT waits until the semaphore has been
  2358.       posted at least once since the last time it was reset.
  2359.  
  2360. See also:  EVENTSEM_CLOSE, EVENTSEM_CREATE, EVENTSEM_POST, EVENTSEM_QUERY,
  2361.       EVENTSEM_RESET
  2362.  
  2363.  
  2364. ΓòÉΓòÉΓòÉ 3.79. EXP ΓòÉΓòÉΓòÉ
  2365.  
  2366. EXP(x)
  2367.  
  2368. Summary:   EXP computes the exponential function.
  2369.  
  2370. Arguments:  x:  A real number.
  2371.  
  2372. Returns:   The value of e**x (e=2.718281828...)
  2373.  
  2374. See also:  LOG, LOG10
  2375.  
  2376.  
  2377. ΓòÉΓòÉΓòÉ 3.80. FILECRC ΓòÉΓòÉΓòÉ
  2378.  
  2379. FILECRC(filename)
  2380.  
  2381. Summary:   FILECRC computes the 32-bit CRC of a file.
  2382.  
  2383. Arguments:  filename:  The fully qualified name of the file whose CRC
  2384.             is to be computed.
  2385.  
  2386. Returns:   The 32-bit CRC of the file as an 8-digit hexadecimal number.
  2387.       A null string is returned if there is an error reading the
  2388.       file.
  2389.  
  2390. Notes:    A CRC (Cyclic Redundancy Check) is a number computed by
  2391.       performing a calculation involving every byte of a file. The
  2392.       calculation is designed to minimize the probability that two
  2393.       files which differ by even one byte can have the same CRC.
  2394.       This means a CRC can be used as a quick test to determine
  2395.       whether two versions of a file are identical. If the CRC
  2396.       values are different, the files are certainly different. If
  2397.       the values are the same, there is a very small probability
  2398.       that the files are different. An exact file comparison must
  2399.       be done if it is necessary to know with certainty that the
  2400.       files are the same.
  2401.  
  2402.       CRC values can be used for file version control and file
  2403.       integrity testing. Since FILECRC reads the whole file, it
  2404.       is a good way to check that a given file is readable.
  2405.  
  2406. See also:  STRINGCRC
  2407.  
  2408.  
  2409. ΓòÉΓòÉΓòÉ 3.81. FILEREAD ΓòÉΓòÉΓòÉ
  2410.  
  2411. FILEREAD(filename,stem,[count],[options],[lineend],[startpos],[rba])
  2412.  
  2413. Summary:   FILEREAD reads an ASCII text file into a REXX array.
  2414.  
  2415. Arguments:  filename:  The fully qualified name of the file to read.
  2416.       stem:    The stem of the array to read into.
  2417.       count:    The number of lines to read. The default is
  2418.             the whole file.
  2419.       options:   A string consisting of one or more of the
  2420.             following:
  2421.  
  2422.             'E' - Stop reading the file when an end-of-file
  2423.                character ('1A'x) is found. The default
  2424.                is to ignore end-of-file characters.
  2425.  
  2426.       lineend:   One of the following strings, which determine
  2427.             what sequences are used to identify the end of a
  2428.             line:
  2429.  
  2430.             'LFONLY'  - Only linefeeds and carriage return-
  2431.                   linefeed pairs (default).
  2432.             'CRONLY'  - Only carriage returns and carriage
  2433.                   return-linefeed pairs.
  2434.             'CRORLF'  - Linefeeds, carriage returns, or
  2435.                   carriage return-linefeed pairs.
  2436.             'CRANDLF' - Only carriage return-linefeed pairs.
  2437.  
  2438.       startpos:  The relative position in the file at which to
  2439.             begin reading. (The first byte of the file is 1.)
  2440.       rba:     The stem of an array which will be loaded with the
  2441.             relative byte addresses of the start of each line
  2442.             read. (The first byte is 1.)
  2443.  
  2444. Returns:   The number of lines read.
  2445.  
  2446. Notes:    Element 0 of the compound variable array is set to the
  2447.       number of lines read.
  2448.  
  2449.       There is no particular limit on the length of any line
  2450.       which may be read.
  2451.  
  2452.       A negative return code indicates an error reading the file
  2453.       (e. g. invalid name, file not found).
  2454.  
  2455. See also:  FILESEARCH, FILEWRITE
  2456.  
  2457.  
  2458. ΓòÉΓòÉΓòÉ 3.82. FILESEARCH ΓòÉΓòÉΓòÉ
  2459.  
  2460. FILESEARCH(filename,pattern,stem,[options],[zone1],[zone2],[count],
  2461.       [lineend],[startpos],[rba])
  2462.  
  2463. Summary:   FILESEARCH searches an ASCII text file for a pattern and
  2464.       places selected lines into a REXX array.
  2465.  
  2466. Arguments:  filename:  The fully qualified name of the file to read.
  2467.       pattern:   A regular expression pattern that describes
  2468.             the string to be searched for.
  2469.       stem:    The stem of the array to store selected lines.
  2470.       options:   A string consisting of one or more of the
  2471.             following:
  2472.  
  2473.             'A' - avoid: select only items that do not
  2474.                satisfy the search conditions
  2475.             'C' - case sensitive matching. The default is
  2476.                to ignore case sensitivity.
  2477.             'E' - stop reading the file when an end-of-file
  2478.                character ('1A'x) is found. The default
  2479.                is to ignore end-of-file characters.
  2480.             'F' - exact match required between pattern and
  2481.                first substring of target, except possibly
  2482.                for case, no regular expressions
  2483.             'N' - precede each line with its relative line
  2484.                number.
  2485.             'S' - simple search that does not use regular
  2486.                expressions
  2487.             'X' - exact match required between pattern and
  2488.                target, except possibly for case, no regular
  2489.                expressions
  2490.  
  2491.       zone1:    Starting column of each line which is to be
  2492.             considered in the search. The default is 1.
  2493.       zone2:    Ending column of each line which is to be
  2494.             considered in the search. The default is the
  2495.             end of the line.
  2496.       count:    The number of lines to search. The default is
  2497.             the whole file.
  2498.       lineend:   One of the following strings, which determine
  2499.             what sequences are used to identify the end of a
  2500.             line:
  2501.  
  2502.             'LFONLY'  - Only linefeeds and carriage return-
  2503.                   linefeed pairs (default).
  2504.             'CRONLY'  - Only carriage returns and carriage
  2505.                   return-linefeed pairs.
  2506.             'CRORLF'  - Linefeeds, carriage returns, or
  2507.                   carriage return-linefeed pairs.
  2508.             'CRANDLF' - Only carriage return-linefeed pairs.
  2509.  
  2510.       startpos:  The relative position in the file at which to
  2511.             begin reading. (The first byte of the file is 1.)
  2512.       rba:     The stem of an array which will be loaded with the
  2513.             relative byte addresses of the start of each line
  2514.             found (The first byte is 1.)
  2515.  
  2516. Returns:   The number of lines selected, or 0 if none met the criteria.
  2517.  
  2518. Notes:    Element 0 of the compound variable array is set to the
  2519.       number of lines selected.
  2520.  
  2521.       A negative return code indicates an error reading the file
  2522.       (e. g. invalid name, file not found).
  2523.  
  2524.       You should avoid using a regular expression search by
  2525.       specifying 'S' in the options string if the pattern may contain
  2526.       any of the characters that have special meaning in regular
  2527.       expressions ("\", "^", "$", ".", ":", "*", "+", "?", "[", and
  2528.       "]"), unless the characters are escaped by being preceded with
  2529.       "\". This is especially likely to be a problem if the pattern
  2530.       is entered as user input at run time or consists of a file name.
  2531.  
  2532. See also:  FILEREAD, FILEWRITE
  2533.  
  2534.  
  2535. ΓòÉΓòÉΓòÉ 3.83. FILEWRITE ΓòÉΓòÉΓòÉ
  2536.  
  2537. FILEWRITE(filename,stem,[option],[count],[start])
  2538.  
  2539. Summary:   FILEWRITE writes an ASCII text file from a REXX array.
  2540.  
  2541. Arguments:  filename:  The fully qualified name of the file to write.
  2542.       stem:    The stem of the array to write from.
  2543.       option:   One of the following:
  2544.  
  2545.             'A' - append the file if it exists.
  2546.             'R' - replace the file if it exists. This is
  2547.               the default.
  2548.             'N' - do nothing if the file exists.
  2549.  
  2550.       count:    The number of lines to write. The default is
  2551.             the number of elements in the array from the
  2552.             starting one to the end.
  2553.       start:    The starting element number of the array.
  2554.  
  2555. Returns:   1 if the operation was successful, otherwise 0.
  2556.  
  2557. Notes:    The file is closed after each call.
  2558.  
  2559. See also:  FILEREAD, FILESEARCH
  2560.  
  2561.  
  2562. ΓòÉΓòÉΓòÉ 3.84. GAMMA ΓòÉΓòÉΓòÉ
  2563.  
  2564. GAMMA(x)
  2565.  
  2566. Summary:   GAMMA computes the gamma function.
  2567.  
  2568. Arguments:  x:  A positive real number.
  2569.  
  2570. Returns:   The value of the gamma function for x>0, or a null string
  2571.       for x<=0.
  2572.  
  2573.  
  2574. ΓòÉΓòÉΓòÉ 3.85. GREP ΓòÉΓòÉΓòÉ
  2575.  
  2576. GREP(pattern,string,[options])
  2577.  
  2578. Summary:   GREP attempts to match a regular expression pattern in a
  2579.       given string.
  2580.  
  2581. Arguments:  pattern:   A regular expression pattern.
  2582.       string:   The string to be searched.
  2583.       options:   Changes the type of search performed from the
  2584.             default, which is a case-insesitive search using
  2585.             a regular expression pattern. The value can be
  2586.             a string consisting of one or more of the
  2587.             following:
  2588.  
  2589.             'C' - search should be case sensitive
  2590.             'F' - exact match required between pattern and
  2591.                first substring of target, except possibly
  2592.                for case, no regular expressions
  2593.             'S' - simple search that does not use regular
  2594.                expressions
  2595.             'X' - exact match required between pattern and
  2596.                target, except possibly for case, no regular
  2597.                expressions
  2598.  
  2599.  
  2600. Returns:   A string consisting of two numbers separated by a blank. The
  2601.       first is the position in the string at which the pattern
  2602.       matched. The second is the length of the substring matched
  2603.       by the pattern. "0 0" is returned if the match fails.
  2604.  
  2605. Notes:    You should avoid using a regular expression search by
  2606.       specifying 'S' in the options string if the pattern may contain
  2607.       any of the characters that have special meaning in regular
  2608.       expressions ("\", "^", "$", ".", ":", "*", "+", "?", "[", and
  2609.       "]"), unless the characters are escaped by being preceded with
  2610.       "\". This is especially likely to be a problem if the pattern
  2611.       is entered as user input at run time or consists of a file name.
  2612.  
  2613. See also:  CVSEARCH, CVTAILS, FILESEARCH
  2614.  
  2615.  
  2616. ΓòÉΓòÉΓòÉ 3.86. INKEY ΓòÉΓòÉΓòÉ
  2617.  
  2618. INKEY([wait-option],[keyboard-option])
  2619.  
  2620. Summary:   INKEY reads in a character directly from the keyboard (without
  2621.       echoing it to the display).
  2622.  
  2623. Arguments:  wait-option: 'W' or 'N'.
  2624.       keyboard-option: 'E' or 'F'.
  2625.  
  2626. Returns:   An encoded string that represents the key which was pressed.
  2627.       For "ordinary" keys such as letters, digits, and punctuation,
  2628.       the string is just the ASCII encoding of the corresponding
  2629.       character. For "special" keys such as function keys and
  2630.       cursor keys, the string is the 2-byte "scan code" of the key.
  2631.  
  2632. Notes:    Keyboard scan codes are documented in many places, such as
  2633.       the IBM BIOS Technical Reference. The unshifted function
  2634.       keys F1 through F10, for example, have scan codes in the range
  2635.       '003B'x through '0044'x.
  2636.  
  2637.       The wait-option argument specifies whether or not INKEY should
  2638.       wait for a key to be pressed. 'W' means wait (the default) and
  2639.       'N' means no wait. If 'N' is selected and no character is
  2640.       available, INKEY returns a null string immediately.
  2641.  
  2642.       The keyboard-option argument specifies whether or not the
  2643.       representations of certain keys which occur more than once
  2644.       in the keyboard should be "folded". If this option is 'F',
  2645.       the default, analogous keys on the numeric and dedicated
  2646.       keypads, such as the cursor keys, have the same representation.
  2647.       If this option is 'E', all keys are assigned distinguishable
  2648.       representations.
  2649.  
  2650.  
  2651. ΓòÉΓòÉΓòÉ 3.87. LOG ΓòÉΓòÉΓòÉ
  2652.  
  2653. LOG(x)
  2654.  
  2655. Summary:   LOG computes the natural logarithm function.
  2656.  
  2657. Arguments:  x:  A positive real number.
  2658.  
  2659. Returns:   The natural logarithm of x for x>0, "INFINITY" if x=0,
  2660.       and "NAN" if x<0.
  2661.  
  2662. See also:  EXP, LOG10
  2663.  
  2664.  
  2665. ΓòÉΓòÉΓòÉ 3.88. LOG10 ΓòÉΓòÉΓòÉ
  2666.  
  2667. LOG10(x)
  2668.  
  2669. Summary:   LOG10 computes the logarithm (base 10) function.
  2670.  
  2671. Arguments:  x:  A positive real number.
  2672.  
  2673. Returns:   The logarithm (base 10) of x for x>0, "INFINITY" if x=0,
  2674.       and "NAN" if x<0.
  2675.  
  2676. See also:  EXP, LOG
  2677.  
  2678.  
  2679. ΓòÉΓòÉΓòÉ 3.89. LOWER ΓòÉΓòÉΓòÉ
  2680.  
  2681. LOWER(string)
  2682.  
  2683. Summary:   LOWER lowercases the specified string.
  2684.  
  2685. Arguments:  string: A string to be converted to lower case.
  2686.  
  2687. Returns:   The input string with all upper case characters converted
  2688.       to lower case.
  2689.  
  2690. See also:  UPPER
  2691.  
  2692.  
  2693. ΓòÉΓòÉΓòÉ 3.90. MACROADD ΓòÉΓòÉΓòÉ
  2694.  
  2695. MACROADD(function,filename,[position])
  2696.  
  2697. Summary:   MACROADD loads a REXX procedure into the macrospace.
  2698.  
  2699. Arguments:  function:  The name of the function to be added to the
  2700.             macrospace.
  2701.       filename:  The fully qualified name of the REXX program file.
  2702.       position:  'B' if the function is to be found before
  2703.             searching external function packages or disk files,
  2704.             or 'A' if it is to be found afterwards.
  2705.  
  2706. Returns:   1 if the operation is successful, otherwise 0.
  2707.  
  2708. Notes:    If a function of the same name already exists in the macrospace,
  2709.       it is replaced.
  2710.  
  2711.       If a function's position is 'B', REXX will find it in the
  2712.       process of searching before it looks in the list of registered
  2713.       functions or functions on disk. If its position is 'A', REXX
  2714.       will find it only after looking in the list of registered
  2715.       functions and functions on disk.
  2716.  
  2717.       REXX use of the function name is not case sensitive.
  2718.  
  2719. See also:  MACROCLEAR, MACRODROP, MACROLOAD, MACROQUERY, MACROREORDER,
  2720.       MACROSAVE
  2721.  
  2722.  
  2723. ΓòÉΓòÉΓòÉ 3.91. MACROCLEAR ΓòÉΓòÉΓòÉ
  2724.  
  2725. MACROCLEAR()
  2726.  
  2727. Summary:   MACROCLEAR removes all loaded REXX procedures from the
  2728.       macrospace.
  2729.  
  2730. Returns:   1 if the operation is successful, otherwise 0.
  2731.  
  2732. See also:  MACROADD, MACRODROP, MACROLOAD, MACROQUERY, MACROREORDER,
  2733.       MACROSAVE
  2734.  
  2735.  
  2736. ΓòÉΓòÉΓòÉ 3.92. MACRODROP ΓòÉΓòÉΓòÉ
  2737.  
  2738. MACRODROP(function)
  2739.  
  2740. Summary:   MACRODROP removes a REXX procedure from the macrospace.
  2741.  
  2742. Arguments:  function:  The name of the function to be removed from the
  2743.             macrospace.
  2744.  
  2745. Returns:   1 if the operation is successful, otherwise 0.
  2746.  
  2747. See also:  MACROADD, MACROCLEAR, MACROLOAD, MACROQUERY, MACROREORDER,
  2748.       MACROSAVE
  2749.  
  2750.  
  2751. ΓòÉΓòÉΓòÉ 3.93. MACROLOAD ΓòÉΓòÉΓòÉ
  2752.  
  2753. MACROLOAD(filename,[namestem])
  2754.  
  2755. Summary:   MACROLOAD loads some or all of the REXX procedures from a
  2756.       saved macrospace file.
  2757.  
  2758. Arguments:  filename:  The name of the saved macrospace file.
  2759.       namestem:  A stem name for the compound variable that
  2760.             contains a list of function names to be loaded.
  2761.  
  2762. Returns:   1 if the operation is successful, otherwise 0.
  2763.  
  2764. Notes:    The list of functions to be loaded is passed in a REXX array.
  2765.       Element 0 of the array must be set to the number of names
  2766.       in the array.
  2767.  
  2768.       If a list of functions to be loaded is not supplied, all
  2769.       functions in the file will be loaded into the macrospace.
  2770.  
  2771.       If any of the functions to be loaded has a name that
  2772.       duplicates that of a function already in the macrospace,
  2773.       nothing is loaded from the file.
  2774.  
  2775. See also:  MACROADD, MACROCLEAR, MACRODROP, MACROQUERY, MACROREORDER,
  2776.       MACROSAVE
  2777.  
  2778.  
  2779. ΓòÉΓòÉΓòÉ 3.94. MACROQUERY ΓòÉΓòÉΓòÉ
  2780.  
  2781. MACROQUERY(function)
  2782.  
  2783. Summary:   MACROQUERY returns the position of a REXX procedure in the
  2784.       macrospace.
  2785.  
  2786. Arguments:  function:  The name of the function whose position is to be
  2787.             queried.
  2788.  
  2789. Returns:   'B' if the function search position in the macrospace is
  2790.       before external functions or 'A' if its search position is
  2791.       after external functions. A null string is returned if the
  2792.       function is not found in the macrospace.
  2793.  
  2794. Notes:    If a function's position is 'B', REXX will find it in the
  2795.       process of searching before it looks in the list of registered
  2796.       functions or functions on disk. If its position is 'A', REXX
  2797.       will find it only after looking in the list of registered
  2798.       functions and functions on disk.
  2799.  
  2800. See also:  MACROADD, MACROCLEAR, MACRODROP, MACROLOAD, MACROREORDER,
  2801.       MACROSAVE
  2802.  
  2803.  
  2804. ΓòÉΓòÉΓòÉ 3.95. MACROREORDER ΓòÉΓòÉΓòÉ
  2805.  
  2806. MACROREORDER(function,position)
  2807.  
  2808. Summary:   MACROREORDER changes the search order position of a REXX
  2809.       procedure in the macrospace.
  2810.  
  2811. Arguments:  function:  The name of the function whose position is to be
  2812.             changed.
  2813.       position:  'B' if the function is to be found before
  2814.             searching external function packages or disk files,
  2815.             or 'A' if it is to be found afterwards.
  2816.  
  2817. Returns:   1 if the operation is successful, otherwise 0.
  2818.  
  2819. Notes:    If a function's position is 'B', REXX will find it in the
  2820.       process of searching before it looks in the list of registered
  2821.       functions or functions on disk. If its position is 'A', REXX
  2822.       will find it only after looking in the list of registered
  2823.       functions and functions on disk.
  2824.  
  2825. See also:  MACROADD, MACROCLEAR, MACRODROP, MACROLOAD, MACROQUERY,
  2826.       MACROSAVE
  2827.  
  2828.  
  2829. ΓòÉΓòÉΓòÉ 3.96. MACROSAVE ΓòÉΓòÉΓòÉ
  2830.  
  2831. MACROSAVE(filename,[namestem])
  2832.  
  2833. Summary:   MACROSAVE saves some or all of the REXX procedures in the
  2834.       macrospace to a file.
  2835.  
  2836. Arguments:  filename:  The name of the saved macrospace file.
  2837.       namestem:  A stem name for the compound variable that
  2838.             contains a list of function names to be saved.
  2839.  
  2840. Returns:   1 if the operation is successful, otherwise 0.
  2841.  
  2842. Notes:    The list of functions to be saved is passed in a REXX array.
  2843.       Element 0 of the array must be set to the number of names
  2844.       in the array.
  2845.  
  2846.       If a list of functions to be saved is not supplied, all
  2847.       functions in the macrospace will be saved in the file.
  2848.  
  2849.       If the file already exists it will be replaced.
  2850.  
  2851. See also:  MACROADD, MACROCLEAR, MACRODROP, MACROLOAD, MACROQUERY,
  2852.       MACROREORDER
  2853.  
  2854.  
  2855. ΓòÉΓòÉΓòÉ 3.97. MUTEXSEM_CLOSE ΓòÉΓòÉΓòÉ
  2856.  
  2857. MUTEXSEM_CLOSE(name)
  2858.  
  2859. Summary:   MUTEXSEM_CLOSE closes a mutual exclusion semaphore.
  2860.  
  2861. Arguments:  name:  The name of a mutual exclusion semaphore.
  2862.  
  2863. Returns:   0 if the operation was successful, otherwise a return code
  2864.       that identifies the type of error. Possible error codes
  2865.       include:
  2866.  
  2867.       123 - name is invalid (must begin with "\sem32\")
  2868.       187 - semaphore does not exist
  2869.  
  2870.  
  2871. Notes:    MUTEXSEM_CLOSE should be used when you are done with a
  2872.       mutual exclusion semaphore to release associated system
  2873.       resources.
  2874.  
  2875. See also:  MUTEXSEM_CREATE, MUTEXSEM_QUERY,
  2876.       MUTEXSEM_RELEASE, MUTEXSEM_REQUEST
  2877.  
  2878.  
  2879. ΓòÉΓòÉΓòÉ 3.98. MUTEXSEM_CREATE ΓòÉΓòÉΓòÉ
  2880.  
  2881. MUTEXSEM_CREATE(name,[options])
  2882.  
  2883. Summary:   MUTEXSEM_CREATE creates a mutual exclusion semaphore.
  2884.  
  2885. Arguments:  name:    The name of a mutual exclusion semaphore.
  2886.       options:   'O' if the semaphore should be created in an
  2887.             owned state. The default is an unowned state.
  2888.  
  2889. Returns:   0 if the operation was successful, otherwise a return code
  2890.       that identifies the type of error. Possible error codes
  2891.       include:
  2892.  
  2893.       123 - name is invalid (must begin with "\sem32\")
  2894.       285 - named semaphore already exists
  2895.  
  2896.  
  2897. Notes:    MUTEXSEM_CREATE must be done once and only once to define
  2898.       the mutual exclusion semaphore to the system.
  2899.  
  2900.       When a mutual exclusion semaphore is in the owned state,
  2901.       the resource it represents is considered busy, and
  2902.       other threads that call MUTEXSEM_REQUEST will wait.
  2903.  
  2904. See also:  MUTEXSEM_CLOSE, MUTEXSEM_QUERY,
  2905.       MUTEXSEM_RELEASE, MUTEXSEM_REQUEST
  2906.  
  2907.  
  2908. ΓòÉΓòÉΓòÉ 3.99. MUTEXSEM_QUERY ΓòÉΓòÉΓòÉ
  2909.  
  2910. MUTEXSEM_QUERY(name)
  2911.  
  2912. Summary:   MUTEXSEM_QUERY returns information about a mutual exclusion
  2913.       semaphore.
  2914.  
  2915. Arguments:  name:  The name of a mutual exclusion semaphore.
  2916.  
  2917. Returns:   If the operation is successful a string of three numbers is
  2918.       returned. The first is the number of times the semaphore has
  2919.       been requested by its owner minus the number of times it has
  2920.       been released. The second is the process id of the owner.
  2921.       The third is the thread id of the thread that owns the
  2922.       semaphore.
  2923.  
  2924.       If an error occurs, a negative number is returned that
  2925.       identifies the type of error. Possible error codes
  2926.       include:
  2927.  
  2928.       -105 - semaphore owner died
  2929.       -123 - name is invalid (must begin with "\sem32\")
  2930.       -187 - semaphore does not exist
  2931.  
  2932.  
  2933. Notes:    If the semaphore is not currently owned, all three numbers
  2934.       returned will be 0.
  2935.  
  2936. See also:  MUTEXSEM_CLOSE, MUTEXSEM_CREATE,
  2937.       MUTEXSEM_RELEASE, MUTEXSEM_REQUEST
  2938.  
  2939.  
  2940. ΓòÉΓòÉΓòÉ 3.100. MUTEXSEM_RELEASE ΓòÉΓòÉΓòÉ
  2941.  
  2942. MUTEXSEM_RELEASE(name)
  2943.  
  2944. Summary:   MUTEXSEM_RELEASE releases ownership of a mutual exclusion
  2945.       semaphore.
  2946.  
  2947. Arguments:  name:  The name of a mutual exclusion semaphore.
  2948.  
  2949. Returns:   0 if the operation was successful, otherwise a return code
  2950.       that identifies the type of error. Possible error codes
  2951.       include:
  2952.  
  2953.       123 - name is invalid (must begin with "\sem32\")
  2954.       187 - semaphore does not exist
  2955.       288 - semaphore not owned by requester
  2956.  
  2957.  
  2958. Notes:    When the event semaphore has been released by its owner
  2959.       as many times as it has been requested, the resource it
  2960.       represents is not considered to be in use, and MUTEXSEM_REQUEST
  2961.       will not wait.
  2962.  
  2963. See also:  MUTEXSEM_CLOSE, MUTEXSEM_CREATE,
  2964.       MUTEXSEM_QUERY, MUTEXSEM_REQUEST
  2965.  
  2966.  
  2967. ΓòÉΓòÉΓòÉ 3.101. MUTEXSEM_REQUEST ΓòÉΓòÉΓòÉ
  2968.  
  2969. MUTEXSEM_REQUEST(name,[timeout])
  2970.  
  2971. Summary:   MUTEXSEM_REQUEST requests ownership of a mutual exclusion
  2972.       semaphore.
  2973.  
  2974. Arguments:  name:    The name of a mutual exclusion semaphore.
  2975.       timeout:   The maximum length of time to wait, in
  2976.             milliseconds. The default is -1, which means
  2977.             an indefinite wait.
  2978.  
  2979. Returns:   0 if the operation was successful, otherwise a return code
  2980.       that identifies the type of error. Possible error codes
  2981.       include:
  2982.  
  2983.       95 - interrupt occurred
  2984.       103 - too many semaphore requests outstanding
  2985.       105 - semaphore owner died
  2986.       123 - name is invalid (must begin with "\sem32\")
  2987.       187 - semaphore does not exist
  2988.       640 - timeout occurred
  2989.  
  2990.  
  2991. Notes:    When a mutual exclusion semaphore has been successfully
  2992.       requested, the resource it represents is considered to be in
  2993.       use, and other threads that call MUTEXSEM_REQUEST will wait.
  2994.  
  2995. See also:  MUTEXSEM_CLOSE, MUTEXSEM_CREATE,
  2996.       MUTEXSEM_QUERY, MUTEXSEM_RELEASE
  2997.  
  2998.  
  2999. ΓòÉΓòÉΓòÉ 3.102. NMPIPE_CALL ΓòÉΓòÉΓòÉ
  3000.  
  3001. NMPIPE_CALL(name,message,[max],[timeout])
  3002.  
  3003. Summary:   NMPIPE_CALL is used by a client to perform a complete named
  3004.       pipe transaction without needing an explicit pipe open.
  3005.  
  3006. Arguments:  name:    The pipe name.
  3007.       message:   Data to be sent to initiate a transaction.
  3008.       max:     Maximum length of reply expected. The default is
  3009.             4096 bytes.
  3010.       timeout:   Length of time in milliseconds to wait for a
  3011.             pipe to become available.
  3012.  
  3013. Returns:   Data sent by the server in reply to the message. A null
  3014.       string is returned if there is an error.
  3015.  
  3016. Notes:    NMPIPE_CALL is intended for simple message/response
  3017.       transactions.
  3018.  
  3019. See also:  NMPIPE_CLOSE, NMPIPE_CONNECT, NMPIPE_CREATE,
  3020.       NMPIPE_DISCONNECT, NMPIPE_OPEN, NMPIPE_READ,
  3021.       NMPIPE_TRANSACT, NMPIPE_WRITE
  3022.  
  3023.  
  3024. ΓòÉΓòÉΓòÉ 3.103. NMPIPE_CLOSE ΓòÉΓòÉΓòÉ
  3025.  
  3026. NMPIPE_CLOSE(name)
  3027.  
  3028. Summary:   NMPIPE_CLOSE closes a named pipe.
  3029.  
  3030. Arguments:  name:  The pipe name.
  3031.  
  3032. Returns:   0 if successful, otherwise an error code. Possible error
  3033.       codes include:
  3034.  
  3035.       2 - pipe not found
  3036.  
  3037.  
  3038. Notes:    NMPIPE_CLOSE is used by the server to destroy a named pipe.
  3039.  
  3040. See also:  NMPIPE_CALL, NMPIPE_CONNECT, NMPIPE_CREATE,
  3041.       NMPIPE_DISCONNECT, NMPIPE_OPEN, NMPIPE_READ,
  3042.       NMPIPE_TRANSACT, NMPIPE_WRITE
  3043.  
  3044.  
  3045. ΓòÉΓòÉΓòÉ 3.104. NMPIPE_CONNECT ΓòÉΓòÉΓòÉ
  3046.  
  3047. NMPIPE_CONNECT(name)
  3048.  
  3049. Summary:   NMPIPE_CONNECT is used by a server to establish a
  3050.       communication session.
  3051.  
  3052. Arguments:  name:  The pipe name.
  3053.  
  3054. Returns:   0 if successful, otherwise an error code. Possible error
  3055.       codes include:
  3056.  
  3057.       2 - pipe not found
  3058.       95 - interrupt occurred
  3059.       109 - pipe broken
  3060.       230 - invalid pipe
  3061.       233 - pipe not connected
  3062.  
  3063.  
  3064. Notes:    NMPIPE_CONNECT must be called by the server before a pipe
  3065.       is available for use by a client.
  3066.  
  3067. See also:  NMPIPE_CALL, NMPIPE_CLOSE, NMPIPE_CREATE,
  3068.       NMPIPE_DISCONNECT, NMPIPE_OPEN, NMPIPE_READ,
  3069.       NMPIPE_TRANSACT, NMPIPE_WRITE
  3070.  
  3071.  
  3072. ΓòÉΓòÉΓòÉ 3.105. NMPIPE_CREATE ΓòÉΓòÉΓòÉ
  3073.  
  3074. NMPIPE_CREATE(name,[type],[mode],[wait],[out],[in])
  3075.  
  3076. Summary:   NMPIPE_CREATE is used by a server to create a named pipe.
  3077.  
  3078. Arguments:  name:    The pipe name.
  3079.       type:    'B' for a byte stream pipe (the default), 'M'
  3080.             for a message pipe.
  3081.       readmode:  If pipe is a message pipe, 'B' if the read mode
  3082.             is byte (the default), or 'M' if the read mode
  3083.             is message.
  3084.       wait:    'W' if reads should block waiting for data (the
  3085.             default), or 'N' if reads should not block.
  3086.       out:     Size in bytes of the output buffer.
  3087.       in:     Size in bytes of the input buffer.
  3088.  
  3089. Returns:   A positive number (the pipe handle) if successful. A negative
  3090.       number is an error code. Possible error codes include:
  3091.  
  3092.       -3 - invalid name
  3093.       -4 - too many open handles
  3094.       -231 - pipe busy
  3095.  
  3096.  
  3097. Notes:    NMPIPE_CREATE specifies various default characteristics of a
  3098.       named pipe.
  3099.  
  3100.       Different readmode and wait options can be chosen by a client
  3101.       if NMPIPE_OPEN is used.
  3102.  
  3103.       NMPIPE_CREATE can fail if there are too many files and/or pipes
  3104.       already open. Use the DOSFILEHANDLES function to increase the
  3105.       number of handles allowed.
  3106.  
  3107. See also:  NMPIPE_CALL, NMPIPE_CLOSE, NMPIPE_CONNECT,
  3108.       NMPIPE_DISCONNECT, NMPIPE_OPEN, NMPIPE_READ,
  3109.       NMPIPE_TRANSACT, NMPIPE_WRITE
  3110.  
  3111.  
  3112. ΓòÉΓòÉΓòÉ 3.106. NMPIPE_DISCONNECT ΓòÉΓòÉΓòÉ
  3113.  
  3114. NMPIPE_DISCONNECT(name)
  3115.  
  3116. Summary:   NMPIPE_DISCONNECT is used by a server to terminate a
  3117.       communication session.
  3118.  
  3119. Arguments:  name:  The pipe name.
  3120.  
  3121. Returns:   0 if successful, otherwise an error code. Possible error
  3122.       codes include:
  3123.  
  3124.       2 - pipe not found
  3125.       109 - pipe broken
  3126.       233 - pipe not connected
  3127.  
  3128.  
  3129. Notes:    NMPIPE_DISCONNECT must be called by the server to acknowledge
  3130.       that a client has terminated a session.
  3131.  
  3132. See also:  NMPIPE_CALL, NMPIPE_CLOSE, NMPIPE_CONNECT,
  3133.       NMPIPE_CREATE, NMPIPE_OPEN, NMPIPE_READ,
  3134.       NMPIPE_TRANSACT, NMPIPE_WRITE
  3135.  
  3136.  
  3137. ΓòÉΓòÉΓòÉ 3.107. NMPIPE_OPEN ΓòÉΓòÉΓòÉ
  3138.  
  3139. NMPIPE_OPEN(name,[readmode],[wait],[in])
  3140.  
  3141. Summary:   NMPIPE_OPEN is used by a client to begin a communication
  3142.       session with a server.
  3143.  
  3144. Arguments:  name:  The pipe name.
  3145.       readmode:  If pipe is a message pipe, 'B' if the read mode
  3146.             is byte (the default), or 'M' if the read mode
  3147.             is message.
  3148.       wait:    'W' if reads should block waiting for data (the
  3149.             default), or 'N' if reads should not block.
  3150.       in:     Default size in bytes of the input buffer. 4096
  3151.             bytes if not specified.
  3152.  
  3153. Returns:   0 if successful, otherwise an error code. Possible error
  3154.       codes include:
  3155.  
  3156.       2 - pipe not found
  3157.       4 - too many open handles
  3158.  
  3159.  
  3160. Notes:    NMPIPE_OPEN must be called by a client before using any of
  3161.       the REXXLIB named pipe client functions except NMPIPE_CALL.
  3162.       It is not required when using ordinary I/O functions such
  3163.       as CHARIN and CHAROUT.
  3164.  
  3165.       NMPIPE_OPEN can fail if there are too many files and/or pipes
  3166.       already open. Use the DOSFILEHANDLES function to increase the
  3167.       number of handles allowed.
  3168.  
  3169. See also:  NMPIPE_CALL, NMPIPE_CLOSE, NMPIPE_CONNECT,
  3170.       NMPIPE_CREATE, NMPIPE_DISCONNECT, NMPIPE_READ,
  3171.       NMPIPE_TRANSACT, NMPIPE_WRITE
  3172.  
  3173.  
  3174. ΓòÉΓòÉΓòÉ 3.108. NMPIPE_READ ΓòÉΓòÉΓòÉ
  3175.  
  3176. NMPIPE_READ(name,[count],[retcode])
  3177.  
  3178. Summary:   NMPIPE_READ reads data from a named pipe.
  3179.  
  3180. Arguments:  name:    The pipe name.
  3181.       count:    Number of bytes to read. The default is the pipe
  3182.             input buffer size.
  3183.       retcode:   Return code from system call to read the pipe.
  3184.             See the description of NMPIPE_CONNECT for a list
  3185.             of possible return codes.
  3186.  
  3187. Returns:   Data read from the pipe. A null string is returned if an
  3188.       error occurs.
  3189.  
  3190. Notes:    NMPIPE_READ can be used by either the server or the client.
  3191.       A client may alternatively use CHARIN or LINEIN functions.
  3192.  
  3193.       A client must call NMPIPE_OPEN before calling NMPIPE_READ.
  3194.  
  3195. See also:  NMPIPE_CALL, NMPIPE_CLOSE, NMPIPE_CONNECT,
  3196.       NMPIPE_CREATE, NMPIPE_DISCONNECT, NMPIPE_OPEN,
  3197.       NMPIPE_TRANSACT, NMPIPE_WRITE
  3198.  
  3199.  
  3200. ΓòÉΓòÉΓòÉ 3.109. NMPIPE_TRANSACT ΓòÉΓòÉΓòÉ
  3201.  
  3202. NMPIPE_TRANSACT(name,message,[max],[retcode])
  3203.  
  3204. Summary:   NMPIPE_TRANSACT is used by a client to perform a complete named
  3205.       pipe transaction.
  3206.  
  3207. Arguments:  name:    The pipe name.
  3208.       message:   Data to be sent to initiate a transaction.
  3209.       max:     Maximum length of reply expected. The default is
  3210.             4096 bytes.
  3211.       retcode:   Return code from system call to read the pipe.
  3212.             See the description of NMPIPE_CONNECT for a list
  3213.             of possible return codes.
  3214.  
  3215. Returns:   Data sent by the server in reply to the message. A null string
  3216.       is returned if an error occurs.
  3217.  
  3218. Notes:    NMPIPE_TRANSACT is intended for use in a series of simple
  3219.       message/response transactions. The client must explicitly open
  3220.       and close the pipe.
  3221.  
  3222. See also:  NMPIPE_CALL, NMPIPE_CLOSE, NMPIPE_CONNECT,
  3223.       NMPIPE_CREATE, NMPIPE_DISCONNECT, NMPIPE_OPEN,
  3224.       NMPIPE_READ, NMPIPE_WRITE
  3225.  
  3226.  
  3227. ΓòÉΓòÉΓòÉ 3.110. NMPIPE_WRITE ΓòÉΓòÉΓòÉ
  3228.  
  3229. NMPIPE_WRITE(name,data)
  3230.  
  3231. Summary:   NMPIPE_WRITE writes data to a named pipe.
  3232.  
  3233. Arguments:  name:  The pipe name.
  3234.       data:  Data to be written.
  3235.  
  3236. Returns:   Number of characters not written. A negative number is an
  3237.       error code. Possible error codes include:
  3238.  
  3239.       2 - pipe not found
  3240.  
  3241.  
  3242. Notes:    NMPIPE_WRITE can be used by either the server or the client.
  3243.       A client may alternatively use CHAROUT or LINEOUT functions.
  3244.  
  3245.       A client must call NMPIPE_OPEN before calling NMPIPE_WRITE.
  3246.  
  3247. See also:  NMPIPE_CALL, NMPIPE_CLOSE, NMPIPE_CONNECT,
  3248.       NMPIPE_CREATE, NMPIPE_DISCONNECT, NMPIPE_OPEN,
  3249.       NMPIPE_READ, NMPIPE_TRANSACT
  3250.  
  3251.  
  3252. ΓòÉΓòÉΓòÉ 3.111. PARSEFN ΓòÉΓòÉΓòÉ
  3253.  
  3254. PARSEFN(filename)
  3255.  
  3256. Summary:   PARSEFN parses a filename into drive, path, file name, and
  3257.       file extension components.
  3258.  
  3259. Arguments:  filename:  The file name to be parsed.
  3260.  
  3261. Returns:   A string consisting of four upper case words:
  3262.  
  3263.         drive specifier (without a colon)
  3264.         path specifier
  3265.         file name
  3266.         file extension
  3267.  
  3268.  
  3269. Notes:    Components not present in the file name are returned as a
  3270.       dash ("-").
  3271.  
  3272.       A null string is returned if the file name is not
  3273.       syntactically valid, for example if it contains invalid
  3274.       characters or invalid components
  3275.  
  3276.       The checking is purely syntactic, so that the file name may
  3277.       refer to a file, drive, or directory that does not exist.
  3278.  
  3279. See also:  DOSFNAME, VALIDNAME
  3280.  
  3281.  
  3282. ΓòÉΓòÉΓòÉ 3.112. PCCOPROCESSOR ΓòÉΓòÉΓòÉ
  3283.  
  3284. PCCOPROCESSOR()
  3285.  
  3286. Summary:   PCCOPROCESSOR indicates whether a hardware math coprocessor
  3287.       is installed.
  3288.  
  3289. Arguments:  none.
  3290.  
  3291. Returns:   1 if a hardware math coprocessor is installed, otherwise 0.
  3292.  
  3293.  
  3294. ΓòÉΓòÉΓòÉ 3.113. PCDISK ΓòÉΓòÉΓòÉ
  3295.  
  3296. PCDISK(option,[drive])
  3297.  
  3298. Summary:   PCDISK returns information about the installed fixed and floppy
  3299.       disks.
  3300.  
  3301. Arguments:  option: 'N', 'H', 'C', or 'S'
  3302.       drive:  Letter that designates the drive of interest.
  3303.           (Default is the current drive.)
  3304.  
  3305. Returns:   Depends on the selected option:
  3306.  
  3307.       'N' - Total number of fixed and floppy disks.
  3308.       'H' - Number of read-write heads (surfaces) on the specified
  3309.          drive (that is, the number of tracks per cylinder).
  3310.       'C' - Number of disk cylinders.
  3311.       'S' - Number of sectors per track.
  3312.  
  3313.  
  3314. Notes:    A drive letter can be specified only for the 'H', 'C', and
  3315.       'S' subfunctions.
  3316.  
  3317.       The 'H', 'C', and 'S' subfunctions apply only to hard disks,
  3318.  
  3319. See also:  DOSDISK
  3320.  
  3321.  
  3322. ΓòÉΓòÉΓòÉ 3.114. PCFLOPPY ΓòÉΓòÉΓòÉ
  3323.  
  3324. PCFLOPPY()
  3325.  
  3326. Summary:   PCFLOPPY returns the number of floppy disks installed.
  3327.  
  3328. Returns:   The number of floppy disks installed.
  3329.  
  3330.  
  3331. ΓòÉΓòÉΓòÉ 3.115. PCMODEL ΓòÉΓòÉΓòÉ
  3332.  
  3333. PCMODEL()
  3334.  
  3335. Summary:   PCMODEL returns the system-defined model number.
  3336.  
  3337. Arguments:  none.
  3338.  
  3339. Returns:   The system (BIOS) defined model number.
  3340.  
  3341. See also:  PCSUBMODEL, PCTYPE
  3342.  
  3343.  
  3344. ΓòÉΓòÉΓòÉ 3.116. PCPARALLEL ΓòÉΓòÉΓòÉ
  3345.  
  3346. PCPARALLEL()
  3347.  
  3348. Summary:   PCPARALLEL returns the number of parallel ports installed.
  3349.  
  3350. Returns:   The number of parallel ports installed.
  3351.  
  3352.  
  3353. ΓòÉΓòÉΓòÉ 3.117. PCRAM ΓòÉΓòÉΓòÉ
  3354.  
  3355. PCRAM()
  3356.  
  3357. Summary:   PCRAM returns the amount of system memory installed in units of
  3358.       1024 bytes.
  3359.  
  3360. Returns:   The amount of system memory installed in units of 1024 bytes.
  3361.  
  3362.  
  3363. ΓòÉΓòÉΓòÉ 3.118. PCSERIAL ΓòÉΓòÉΓòÉ
  3364.  
  3365. PCSERIAL()
  3366.  
  3367. Summary:   PCSERIAL returns the number of serial ports installed.
  3368.  
  3369. Returns:   The number of serial ports installed.
  3370.  
  3371.  
  3372. ΓòÉΓòÉΓòÉ 3.119. PCSUBMODEL ΓòÉΓòÉΓòÉ
  3373.  
  3374. PCSUBMODEL()
  3375.  
  3376. Summary:   PCMODEL returns the system-defined submodel number.
  3377.  
  3378. Arguments:  none.
  3379.  
  3380. Returns:   The system (BIOS) defined submodel number.
  3381.  
  3382. See also:  PCMODEL, PCTYPE
  3383.  
  3384.  
  3385. ΓòÉΓòÉΓòÉ 3.120. PCVIDEOMODE ΓòÉΓòÉΓòÉ
  3386.  
  3387. PCVIDEOMODE()
  3388.  
  3389. Summary:   PCVIDEOMODE returns information about the current screen mode.
  3390.  
  3391. Arguments:  none.
  3392.  
  3393. Returns:   Four numbers, separated by blanks
  3394.  
  3395.       The first number is -1 if there is an error, otherwise it is 1.
  3396.  
  3397.       The second number is the number of bits of color information
  3398.       which can be displayed for each pixel. For instance, this value
  3399.       is 4 if 16 distinct colors can be displayed.
  3400.  
  3401.       The third and fourth numbers are the horizontal and vertical
  3402.       resolutions of the display in pixels.
  3403.  
  3404.  
  3405. ΓòÉΓòÉΓòÉ 3.121. PMPRINTF ΓòÉΓòÉΓòÉ
  3406.  
  3407. PMPRINTF(string)
  3408.  
  3409. Summary:   PMPRINTF uses the external PMPRINTF program to display
  3410.       debugging and diagnostic output in a separate window.
  3411.  
  3412. Arguments:  string: A string of text to be displayed.
  3413.  
  3414. Returns:   Always returns 1.
  3415.  
  3416. Notes:    You must have the PMPRINTF program to use this function.
  3417.       The PMPRINTF program is IBM EWS (Employee Written Software)
  3418.       that is available from many OS/2 Bulletin Boards and
  3419.       information services. The program is started in a separate
  3420.       window just like any other OS/2 application.
  3421.  
  3422.       Data strings written by the PMPRINTF function appear in the
  3423.       PMPRINTF program window. No substitution is performed on
  3424.       contents of the string, and an ending linefeed is not required.
  3425.  
  3426.       PMPRINTF is one of the easiest ways of producing diagnostic
  3427.       output from a REXX program, especially one that has its own
  3428.       graphical user interface, since the output appears in a
  3429.       completely separate window.
  3430.  
  3431.  
  3432. ΓòÉΓòÉΓòÉ 3.122. POW ΓòÉΓòÉΓòÉ
  3433.  
  3434. POW(x,y)
  3435.  
  3436. Summary:   POW computes the power function (x**y).
  3437.  
  3438. Arguments:  x:  A real number.
  3439.       y:  A real number.
  3440.  
  3441. Returns:   The value of x**y if x is non-negative or if y is an
  3442.       integer, otherwise "NAN".
  3443.  
  3444. See also:  EXP, LOG, LOG10
  3445.  
  3446.  
  3447. ΓòÉΓòÉΓòÉ 3.123. REXXLIBDEREGISTER ΓòÉΓòÉΓòÉ
  3448.  
  3449. REXXLIBDEREGISTER()
  3450.  
  3451. Summary:   REXXLIBDEREGISTER removes the definitions of all REXXLIB
  3452.       functions from the operating system.
  3453.  
  3454. Arguments:  none.
  3455.  
  3456. Returns:   Always returns 1.
  3457.  
  3458. See also:  REXXLIBREGISTER
  3459.  
  3460.  
  3461. ΓòÉΓòÉΓòÉ 3.124. REXXLIBREGISTER ΓòÉΓòÉΓòÉ
  3462.  
  3463. REXXLIBREGISTER()
  3464.  
  3465. Summary:   REXXLIBREGISTER defines all REXXLIB functions to the
  3466.       operating system.
  3467.  
  3468. Arguments:  none.
  3469.  
  3470. Returns:   Always returns 1.
  3471.  
  3472. See also:  REXXLIBDEREGISTER
  3473.  
  3474.  
  3475. ΓòÉΓòÉΓòÉ 3.125. REXXLIBVER ΓòÉΓòÉΓòÉ
  3476.  
  3477. REXXLIBVER()
  3478.  
  3479. Summary:   REXXLIBVER returns the current REXXLIB version number.
  3480.  
  3481. Arguments:  none.
  3482.  
  3483. Returns:   The current REXXLIB version number.
  3484.  
  3485.  
  3486. ΓòÉΓòÉΓòÉ 3.126. REXXRUN ΓòÉΓòÉΓòÉ
  3487.  
  3488. REXXRUN(type,source,[result],[arg-1],...,[arg-n])
  3489.  
  3490. Summary:   REXXRUN runs an external REXX program from a file, the
  3491.       REXX macro space, a source code string, or a tokenized
  3492.       source code string.
  3493.  
  3494. Arguments:  type:  The type of source code, which can be:
  3495.  
  3496.           'F' - Source code is in a file.
  3497.           'S' - Source code is in a string.
  3498.           'T' - Source code is in a tokenized string.
  3499.           'M' - Source code is in the macro space.
  3500.  
  3501.       source: Depends on the value of type: the name of a
  3502.           file (type 'F'), the actual program code (type 'S'),
  3503.           tokenized source code (type 'T'), or the name of a
  3504.           function in the macro space (type 'M').
  3505.       result: The name of a REXX variable to receive the value
  3506.           returned (if any) by the program.
  3507.       arg-i:  Arguments to be passed to the program.
  3508.  
  3509. Returns:   The return code from the REXX interpreter. This will be 0 if
  3510.       the program ran to completion. A positive number indicates a
  3511.       problem starting the interpreter. A negative number is a
  3512.       program execution error (the negative of the REXX error code).
  3513.  
  3514. Notes:    Source code may be supplied in a REXX string (type 'S').
  3515.       This should be in a form just as if the program were read from
  3516.       a file, with lines separated by carriage returns and linefeeds,
  3517.       and statements on the same line separated by semicolons.
  3518.  
  3519.       Tokenized code is created as the ouput of the TOKENIZEFILE or
  3520.       TOKENIZESTRING functions.
  3521.  
  3522.       Programs are loaded into the macro space with the MACROADD or
  3523.       MACROLOAD functions.
  3524.  
  3525.       A variable name may be specified to receive the value
  3526.       returned by the external program. If no value is returned,
  3527.       the variable will be dropped. Avoid using a variable named
  3528.       RESULT, since this variable is set by REXX itself after a
  3529.       CALL statement.
  3530.  
  3531.       There are several other ways to invoke external REXX
  3532.       programs, but all have disadvantages that are avoided by
  3533.       using REXXRUN.
  3534.  
  3535.       One way is to use the system CALL command. This has the
  3536.       disadvantage that it requires the system command handler
  3537.       (CMD.EXE), which means the new program must run in a
  3538.       separate process if the calling program wasn't started by
  3539.       CMD.EXE. There is an additional disadvantage that only
  3540.       one argument string can be passed this way.
  3541.  
  3542.       Another way is to use the REXX CALL statement. This has
  3543.       the disadvantage that it cannot take a variable file name
  3544.       (without using INTERPRET). In addition, if the called
  3545.       program fails because of a REXX error, a SYNTAX condition
  3546.       will be raised in the calling program.
  3547.  
  3548.       A final way is to use the REXX macro space. One possible
  3549.       disadvantage of this is that the macro space is global to
  3550.       the system, raising possibilities of name conflicts.
  3551.  
  3552. See also:  MACROADD, MACROLOAD, REXXTHREAD, TOKENIZEFILE,
  3553.       TOKENIZESTRING
  3554.  
  3555.  
  3556. ΓòÉΓòÉΓòÉ 3.127. REXXTHREAD ΓòÉΓòÉΓòÉ
  3557.  
  3558. REXXTHREAD(type,source,[arg-1],...,[arg-n])
  3559.  
  3560. Summary:   REXXTHREAD starts a new thread and runs an external REXX
  3561.       program from a file, the REXX macro space, a source code
  3562.       string, or a tokenized source code string.
  3563.  
  3564. Arguments:  type:  The type of source code, which can be:
  3565.  
  3566.           'F' - Source code is in a file.
  3567.           'S' - Source code is in a string.
  3568.           'T' - Source code is in a tokenized string.
  3569.           'M' - Source code is in the macro space.
  3570.  
  3571.       source: Depends on the value of type: the name of a
  3572.           file (type 'F'), the actual program code (type 'S'),
  3573.           tokenized source code (type 'T'), or the name of a
  3574.           function in the macro space (type 'M').
  3575.       arg-i:  Arguments to be passed to the program.
  3576.  
  3577. Returns:   The thread id of the newly created thread, or 0 if the
  3578.       thread could not be started.
  3579.  
  3580. Notes:    Source code may be supplied in a REXX string (type 'S').
  3581.       This should be in a form just as if the program were read from
  3582.       a file, with lines separated by carriage returns and linefeeds,
  3583.       and statements on the same line separated by semicolons.
  3584.  
  3585.       Tokenized code is created as the ouput of the TOKENIZEFILE or
  3586.       TOKENIZESTRING functions.
  3587.  
  3588.       Programs are loaded into the macro space with the MACROADD or
  3589.       MACROLOAD functions.
  3590.  
  3591.       Because the new program is run on a different thread, there
  3592.       is no direct way to access a value returned by the program.
  3593.       Any exchange of data between threads must use some form of
  3594.       interprogram communication such as REXX external data
  3595.       queues or named pipes.
  3596.  
  3597. See also:  MACROADD, MACROLOAD, REXXRUN, TOKENIZEFILE, TOKENIZESTRING
  3598.  
  3599.  
  3600. ΓòÉΓòÉΓòÉ 3.128. SCRBLINK ΓòÉΓòÉΓòÉ
  3601.  
  3602. SCRBLINK([state])
  3603.  
  3604. Summary:   SCRBLINK returns the current state of video attribute handling
  3605.       and optionally changes it.
  3606.  
  3607. Arguments:  state:  A value of 1 or 0 that indicates whether certain
  3608.           text-mode video attributes produce blinking characters
  3609.           or bright background colors.
  3610.  
  3611. Returns:   The value of the "blink" flag before any changes.
  3612.  
  3613. Notes:    Video attributes are listed in connection with the SCRWRITE
  3614.       function. Attribute values of 128 and above can
  3615.       alternatively be used to product blinking characters or
  3616.       high-intensity background colors, depending on the setting
  3617.       of the blink flag.
  3618.  
  3619.       SCRBLINK does not work in a PM text window and always returns
  3620.       0 in that case.
  3621.  
  3622.  
  3623. ΓòÉΓòÉΓòÉ 3.129. SCRBORDER ΓòÉΓòÉΓòÉ
  3624.  
  3625. SCRBORDER([color])
  3626.  
  3627. Summary:   SCRBORDER sets the screen border attributes.
  3628.  
  3629. Arguments:  color:  The color attribute number for the screen border.
  3630.           The number must be in the range 0 to 255.
  3631.  
  3632. Returns:   The original color attribute number.
  3633.  
  3634. Notes:    Attribute numbers 0 through 7 are usually as follows:
  3635.  
  3636.       0 - black
  3637.       1 - blue
  3638.       2 - green
  3639.       3 - cyan
  3640.       4 - red
  3641.       5 - magenta
  3642.       6 - brown
  3643.       7 - white
  3644.  
  3645.  
  3646.       The meaning of other values is dependent on the display
  3647.       hardware and the current setting of the display palette
  3648.       registers.
  3649.  
  3650.       If SCRBORDER is used in a PM window it will return -1 and
  3651.       have no effect on the screen.
  3652.  
  3653.  
  3654. ΓòÉΓòÉΓòÉ 3.130. SCRCLEAR ΓòÉΓòÉΓòÉ
  3655.  
  3656. SCRCLEAR([attr],[char],[row],[col],[height],[width])
  3657.  
  3658. Summary:   SCRCLEAR clears the screen, or any rectangular region of the
  3659.       screen.
  3660.  
  3661. Arguments:  attr:  The display attribute to use in the cleared area. The
  3662.           default is 7.
  3663.       char:  The character to use to fill the cleared area. The
  3664.           default is a blank.
  3665.       row:   The top row of the area to be cleared. The default is 1.
  3666.       col:   The leftmost column of the area to be cleared. The
  3667.           default is 1.
  3668.       height: The number of rows in the rectangle to be cleared. The
  3669.           default is to the bottom of the screen.
  3670.       width:  The number of columns in the rectangle to be cleared.
  3671.           The default is to the right edge of the screen.
  3672.  
  3673. Returns:   Always returns 0.
  3674.  
  3675. Notes:    Calling SCRCLEAR with no arguments will clear the screen by
  3676.       filling it with blanks using the default attribute of 7
  3677.       (white on black).
  3678.  
  3679.       Row numbers start with 1 at the top of the screen or window.
  3680.       Column numbers start with 1 at the left hand side.
  3681.  
  3682.       Video attributes are listed in connection with the SCRWRITE
  3683.       function.
  3684.  
  3685. See also:  SCRPUT, SCRWRITE
  3686.  
  3687.  
  3688. ΓòÉΓòÉΓòÉ 3.131. SCROLLDOWN ΓòÉΓòÉΓòÉ
  3689.  
  3690. SCROLLDOWN(n,[pad],[attr],[top],[left],[bottom],[right])
  3691.  
  3692. Summary:   SCROLLDOWN scrolls text down in a rectangular region of the
  3693.       screen.
  3694.  
  3695. Arguments:  n:    Number of lines to scroll down.
  3696.       pad:   Character to be inserted into lines at the top of
  3697.           the rectangular region after scrolling (default is
  3698.           blank).
  3699.       attr:  Attribute to be used for displaying the pad
  3700.           character (default is white on black).
  3701.       top:   Top line of the rectangular region (default is top
  3702.           line of the screen).
  3703.       left:  Left edge of the rectangular region (default is left
  3704.           edge of the screen).
  3705.       bottom: Bottom line of the rectangular region (default is
  3706.           bottom line of the screen).
  3707.       right:  Right edge of the rectangular region (default is
  3708.           right edge of the screen).
  3709.  
  3710. Returns:   Always returns 1.
  3711.  
  3712. Notes:    An attribute value is the sum of a number in the range 0 to 15
  3713.       indicating the foreground color and 16 times another number
  3714.       from 0 to 15 indicating the foreground color. Numbers above
  3715.       127 may indicate either high intensity foreground or blinking
  3716.       depending on the status of the "blink bit". See the
  3717.       description of SCRWRITE for a complete table of values.
  3718.  
  3719.       If the limits of the rectangle are outside the boundaries of
  3720.       the screen, the rectangle will be clipped to the screen
  3721.       limits.
  3722.  
  3723. See also:  SCRBLINK, SCRWRITE
  3724.  
  3725.  
  3726. ΓòÉΓòÉΓòÉ 3.132. SCROLLLEFT ΓòÉΓòÉΓòÉ
  3727.  
  3728. SCROLLLEFT(n,[pad],[attr],[top],[left],[bottom],[right])
  3729.  
  3730. Summary:   SCROLLLEFT scrolls text left in a rectangular region of the
  3731.       screen.
  3732.  
  3733. Arguments:  n:    Number of columns to scroll left.
  3734.       pad:   Character to be inserted into columns at the right
  3735.           of the rectangular region after scrolling (default
  3736.           is blank).
  3737.       attr:  Attribute to be used for displaying the pad
  3738.           character (default is white on black).
  3739.       top:   Top line of the rectangular region (default is top
  3740.           line of the screen).
  3741.       left:  Left edge of the rectangular region (default is left
  3742.           edge of the screen).
  3743.       bottom: Bottom line of the rectangular region (default is
  3744.           bottom line of the screen).
  3745.       right:  Right edge of the rectangular region (default is
  3746.           right edge of the screen).
  3747.  
  3748. Returns:   Always returns 1.
  3749.  
  3750. Notes:    An attribute value is the sum of a number in the range 0 to 15
  3751.       indicating the foreground color and 16 times another number
  3752.       from 0 to 15 indicating the foreground color. Numbers above
  3753.       127 may indicate either high intensity foreground or blinking
  3754.       depending on the status of the "blink bit". See the
  3755.       description of SCRWRITE for a complete table of values.
  3756.  
  3757.       If the limits of the rectangle are outside the boundaries of
  3758.       the screen, the rectangle will be clipped to the screen
  3759.       limits.
  3760.  
  3761. See also:  SCRBLINK, SCRWRITE
  3762.  
  3763.  
  3764. ΓòÉΓòÉΓòÉ 3.133. SCROLLRIGHT ΓòÉΓòÉΓòÉ
  3765.  
  3766. SCROLLRIGHT(n,[pad],[attr],[top],[left],[bottom],[right])
  3767.  
  3768. Summary:   SCROLLRIGHT scrolls text right in a rectangular region of
  3769.       the screen.
  3770.  
  3771. Arguments:  n:    Number of columns to scroll right.
  3772.       pad:   Character to be inserted into columns at the left of
  3773.           the rectangular region after scrolling (default is
  3774.           blank).
  3775.       attr:  Attribute to be used for displaying the pad
  3776.           character (default is white on black).
  3777.       top:   Top line of the rectangular region (default is top
  3778.           line of the screen).
  3779.       left:  Left edge of the rectangular region (default is left
  3780.           edge of the screen).
  3781.       bottom: Bottom line of the rectangular region (default is
  3782.           bottom line of the screen).
  3783.       right:  Right edge of the rectangular region (default is
  3784.           right edge of the screen).
  3785.  
  3786. Returns:   Always returns 1.
  3787.  
  3788. Notes:    An attribute value is the sum of a number in the range 0 to 15
  3789.       indicating the foreground color and 16 times another number
  3790.       from 0 to 15 indicating the foreground color. Numbers above
  3791.       127 may indicate either high intensity foreground or blinking
  3792.       depending on the status of the "blink bit". See the
  3793.       description of SCRWRITE for a complete table of values.
  3794.  
  3795.       If the limits of the rectangle are outside the boundaries of
  3796.       the screen, the rectangle will be clipped to the screen
  3797.       limits.
  3798.  
  3799. See also:  SCRBLINK, SCRWRITE
  3800.  
  3801.  
  3802. ΓòÉΓòÉΓòÉ 3.134. SCROLLUP ΓòÉΓòÉΓòÉ
  3803.  
  3804. SCROLLUP(n,[pad],[attr],[top],[left],[bottom],[right])
  3805.  
  3806. Summary:   SCROLLUP scrolls text up in a rectangular region of the
  3807.       screen.
  3808.  
  3809. Arguments:  n:    Number of lines to scroll up.
  3810.       pad:   Character to be inserted into lines at the bottom of
  3811.           the rectangular region after scrolling (default is
  3812.           blank).
  3813.       attr:  Attribute to be used for displaying the pad
  3814.           character (default is 7, white on black).
  3815.       top:   Top line of the rectangular region (default is top
  3816.           line of the screen).
  3817.       left:  Left edge of the rectangular region (default is left
  3818.           edge of the screen).
  3819.       bottom: Bottom line of the rectangular region (default is
  3820.           bottom line of the screen).
  3821.       right:  Right edge of the rectangular region (default is
  3822.           right edge of the screen).
  3823.  
  3824. Returns:   Always returns 1.
  3825.  
  3826. Notes:    An attribute value is the sum of a number in the range 0 to 15
  3827.       indicating the foreground color and 16 times another number
  3828.       from 0 to 15 indicating the foreground color. Numbers above
  3829.       127 may indicate either high intensity foreground or blinking
  3830.       depending on the status of the "blink bit". See the
  3831.       description of SCRWRITE for a complete table of values.
  3832.  
  3833.       If the limits of the rectangle are outside the boundaries of
  3834.       the screen, the rectangle will be clipped to the screen
  3835.       limits.
  3836.  
  3837. See also:  SCRBLINK, SCRWRITE
  3838.  
  3839.  
  3840. ΓòÉΓòÉΓòÉ 3.135. SCRPUT ΓòÉΓòÉΓòÉ
  3841.  
  3842. SCRPUT(row,col,string,[option])
  3843.  
  3844. Summary:   SCRPUT writes a string to the screen at a specified position.
  3845.  
  3846. Arguments:  row:   The row at which to begin writing.
  3847.       col:   The column at which to begin writing.
  3848.       string: The string to be displayed.
  3849.       option: 'T', 'A', or 'B'.
  3850.  
  3851. Returns:   Always returns a null string.
  3852.  
  3853. Notes:    The option argument specifies the contents of the string.
  3854.       'T', the default, means that the string consists only of text
  3855.       characters to be written. Existing attributes on the screen
  3856.       are not changed. 'A' means that the string consists only of
  3857.       attribute bytes. Existing text on the screen is not changed.
  3858.       'B' means that the string consists of character-attribute
  3859.       pairs (with chars preceding their corresponding attribute).
  3860.       In this case, the length of the string must be even, and
  3861.       LENGTH(string)/2 screen position are written.
  3862.  
  3863.       Row numbers start with 1 at the top of the screen or window.
  3864.       Column numbers start with 1 at the left hand side.
  3865.  
  3866.       Video attributes are listed in connection with the SCRWRITE
  3867.       function.
  3868.  
  3869. See also:  SCRCLEAR, SCRWRITE
  3870.  
  3871.  
  3872. ΓòÉΓòÉΓòÉ 3.136. SCRREAD ΓòÉΓòÉΓòÉ
  3873.  
  3874. SCRREAD(row,col,length,[option])
  3875.  
  3876. Summary: SCRREAD reads a string from the screen at a specified position.
  3877.  
  3878. Arguments:  row:   The row at which to begin reading.
  3879.       col:   The column at which to begin reading.
  3880.       length: The number of character positions to read.
  3881.       option: 'T', 'A', or 'B'.
  3882.  
  3883. Returns:   A string read from the screen consisting of text ('T'),
  3884.       attributes ('A'), or both ('B')
  3885.  
  3886. Notes:    The option argument specifies the contents of the string.
  3887.       'T', the default, means that the string consists only of
  3888.       text characters read from the screen. 'A' means that the
  3889.       string consists only of attribute bytes. 'B' means that the
  3890.       string consists of character-attribute pairs (with chars
  3891.       preceding their corresponding attribute). In this case, the
  3892.       length of the string will be twice the number of character
  3893.       positions read.
  3894.  
  3895.       Row numbers start with 1 at the top of the screen or window.
  3896.       Column numbers start with 1 at the left hand side.
  3897.  
  3898.       Video attributes are listed in connection with the SCRWRITE
  3899.       function.
  3900.  
  3901. See also:  SCRPUT
  3902.  
  3903.  
  3904. ΓòÉΓòÉΓòÉ 3.137. SCRSIZE ΓòÉΓòÉΓòÉ
  3905.  
  3906. SCRSIZE()
  3907.  
  3908. Summary:   SCRSIZE returns the number of rows and columns on the screen.
  3909.  
  3910. Returns:   Two numbers, separated by a blank. The first is the number
  3911.       of rows on the screen (or window), and the second is the
  3912.       number of columns.
  3913.  
  3914.  
  3915. ΓòÉΓòÉΓòÉ 3.138. SCRWRITE ΓòÉΓòÉΓòÉ
  3916.  
  3917. SCRWRITE([row],[col],[string],[length],[pad],[attr])
  3918.  
  3919. Summary:   SCRWRITE writes a string with specified attributes to the screen
  3920.       at a specified position.
  3921.  
  3922. Arguments:  row:   The row at which to begin writing. The default is the
  3923.           current cursor position.
  3924.       col:   The column at which to begin writing. The default is
  3925.           the current cursor position.
  3926.       string: The string to be displayed. The default is a null
  3927.           string.
  3928.       length: The number of character positions to be written. The
  3929.           default is the length of the string.
  3930.       pad:   A pad character. The default is a blank.
  3931.       attr:  Display attribute to be used. The default is 7.
  3932.  
  3933. Returns:   Always returns 0.
  3934.  
  3935. Notes:    SCRWRITE does not affect the current cursor position,
  3936.  
  3937.       Attribute values are computed by adding the number that
  3938.       represents a foreground color to the number that represents
  3939.       a background color:
  3940.  
  3941.       Foreground Colors:
  3942.  
  3943.       0 - black
  3944.       1 - blue
  3945.       2 - green
  3946.       3 - cyan
  3947.       4 - red
  3948.       5 - magenta
  3949.       6 - brown
  3950.       7 - white
  3951.       8 - gray
  3952.       9 - light blue
  3953.       10 - light green
  3954.       11 - light cyan
  3955.       12 - light red
  3956.       13 - light magenta
  3957.       14 - yellow
  3958.       15 - high intensity white
  3959.  
  3960.  
  3961.       Background Colors:
  3962.  
  3963.          0 - black
  3964.          16 - blue
  3965.          32 - green
  3966.          48 - cyan
  3967.          64 - red
  3968.          80 - magenta
  3969.          96 - brown
  3970.          112 - white
  3971.  
  3972.  
  3973.       If blinking attributes are enabled, as they are by default,
  3974.       adding 128 will produce blinking text. If blinking
  3975.       attributes are disabled with the SCRBLINK function, adding
  3976.       128 will produce text with bright background colors.
  3977.  
  3978. See also:  SCRBLINK, SCRPUT
  3979.  
  3980.  
  3981. ΓòÉΓòÉΓòÉ 3.139. SHIFTSTATE ΓòÉΓòÉΓòÉ
  3982.  
  3983. SHIFTSTATE(key,[state])
  3984.  
  3985. Summary:   SHIFTSTATE returns the current shift state of the NumLock,
  3986.       CapsLock, and ScrollLock keys.
  3987.  
  3988. Arguments:  key:   'C' (for CapsLock), 'N' (for NumLock), or 'S' (for
  3989.           ScrollLock).
  3990.       state:  0 to for unshifted, 1 for shifted.
  3991.  
  3992. Returns:   The shift state of the specified key before changes.
  3993.  
  3994. Notes:    SHIFTSTATE cannot be used to change the state of shift keys
  3995.       in a PM window session, but it does correctly return the
  3996.       current shift state of the key.
  3997.  
  3998.  
  3999. ΓòÉΓòÉΓòÉ 3.140. SIN ΓòÉΓòÉΓòÉ
  4000.  
  4001. SIN(x)
  4002.  
  4003. Summary:   SIN computes the sine function.
  4004.  
  4005. Arguments:  x:  A real number (radians).
  4006.  
  4007. Returns:   The sine of x.
  4008.  
  4009. See also:  ACOS, ASIN, ATAN, ATAN2, COS, TAN
  4010.  
  4011.  
  4012. ΓòÉΓòÉΓòÉ 3.141. SINH ΓòÉΓòÉΓòÉ
  4013.  
  4014. SINH(x)
  4015.  
  4016. Summary:   SINH computes the hyperbolic sine function.
  4017.  
  4018. Arguments:  x:  A real number.
  4019.  
  4020. Returns:   The hyperbolic sine of x.
  4021.  
  4022. See also:  COSH, TANH
  4023.  
  4024.  
  4025. ΓòÉΓòÉΓòÉ 3.142. SOUND ΓòÉΓòÉΓòÉ
  4026.  
  4027. SOUND([freq],[duration])
  4028.  
  4029. Summary: SOUND sounds the PC's speaker.
  4030.  
  4031. Arguments:  freq:    A frequency in cycles per second. Default is 880.
  4032.       duration:  Length of time in seconds. Default is .2.
  4033.  
  4034. Returns:   Always returns 1.
  4035.  
  4036. Notes:    The duration can be specified as a fractional number and is
  4037.       accurate to within about a tenth of a second.
  4038.  
  4039.  
  4040. ΓòÉΓòÉΓòÉ 3.143. SQRT ΓòÉΓòÉΓòÉ
  4041.  
  4042. SQRT(x)
  4043.  
  4044. Summary:   SQRT computes the square root function.
  4045.  
  4046. Arguments:  x:  A non-negative real number.
  4047.  
  4048. Returns:   The square root of x if x>=0, otherwise "NAN".
  4049.  
  4050. See also:  POWER
  4051.  
  4052.  
  4053. ΓòÉΓòÉΓòÉ 3.144. STRINGCRC ΓòÉΓòÉΓòÉ
  4054.  
  4055. STRINGCRC(string)
  4056.  
  4057. Summary:   STRINGCRC computes the 32-bit CRC of a string.
  4058.  
  4059. Arguments:  string: The string whose CRC is to be computed.
  4060.  
  4061. Returns:   The 32-bit CRC of the string as an 8-digit hexadecimal number.
  4062.  
  4063. Notes:    A CRC (Cyclic Redundancy Check) is a number computed by
  4064.       performing a calculation involving every byte of a string. The
  4065.       calculation is designed to minimize the probability that two
  4066.       strings which differ by even one byte can have the same CRC.
  4067.  
  4068. See also:  FILECRC
  4069.  
  4070.  
  4071. ΓòÉΓòÉΓòÉ 3.145. STRINGIN ΓòÉΓòÉΓòÉ
  4072.  
  4073. STRINGIN([row],[column],[string],[length],[pad],[attr])
  4074.  
  4075. Summary:   STRINGIN reads in a string from the keyboard with cursor
  4076.       key controls.
  4077.  
  4078. Arguments:  row:   Screen row number of the input field (default is
  4079.           row containing cursor).
  4080.       column: Screen column number of the start of the input
  4081.           field (default is column containing cursor).
  4082.       string: String used as initial contents of input field
  4083.           (default is blanks).
  4084.       length: Length of string (default is to the right edge of
  4085.           the screen).
  4086.       pad:   Character that fills out the input field beyond the
  4087.           end of data entered (default is blank).
  4088.       attr:  Attribute to be used for displaying characters
  4089.           entered in the field (default is 7, white on black).
  4090.  
  4091. Returns:   The string entered in the input field, up to but not
  4092.       including the first pad character.
  4093.  
  4094. Notes:    Various keys may be used to perform editing operations:
  4095.  
  4096.       Backspace - delete character to left of cursor
  4097.       Del - delete character under cursor
  4098.       Right - move cursor right 1 column
  4099.       Left - move cursor left 1 column
  4100.       Ctrl-right - move cursor right one word
  4101.       Ctrl-left - move cursor left one word
  4102.       Insert - toggle insert/overtype mode
  4103.       Home - move cursor to start of field
  4104.       End - move cursor to end of data entered
  4105.       Ctrl-home - clear input field and position cursor at start
  4106.       Ctrl-end - clear input field from cursor position to end
  4107.       Tab - move cursor right 4 columns
  4108.       Shift-tab - move cursor left 4 columns
  4109.  
  4110.  
  4111.       The input operation is ended by pressing the Enter key. It
  4112.       can also be ended by pressing the Esc key, in which case the
  4113.       function returns a null string.
  4114.  
  4115.       An attribute value is the sum of a number in the range 0 to
  4116.       15 indicating the foreground color and 16 times another
  4117.       number from 0 to 7 indicating the background color. Numbers
  4118.       above 127 may indicate either high intensity foreground or
  4119.       blinking depending on the status of the "blink bit". See the
  4120.       description of SCRWRITE for a complete table of values.
  4121.  
  4122. See also:  SCRBLINK, SCRWRITE
  4123.  
  4124.  
  4125. ΓòÉΓòÉΓòÉ 3.146. TAN ΓòÉΓòÉΓòÉ
  4126.  
  4127. TAN(x)
  4128.  
  4129. Summary:   TAN computes the tangent function.
  4130.  
  4131. Arguments:  x:  A real number (radians).
  4132.  
  4133. Returns:   The tangent of x.
  4134.  
  4135. See also:  ACOS, ASIN, ATAN, ATAN2, COS, SIN
  4136.  
  4137.  
  4138. ΓòÉΓòÉΓòÉ 3.147. TANH ΓòÉΓòÉΓòÉ
  4139.  
  4140. TANH(x)
  4141.  
  4142. Summary:   TANH computes the hyperbolic tangent function.
  4143.  
  4144. Arguments:  x:  A real number.
  4145.  
  4146. Returns:   The hyperbolic tangent of x.
  4147.  
  4148. See also:  COSH, SINH
  4149.  
  4150.  
  4151. ΓòÉΓòÉΓòÉ 3.148. TOKENIZEFILE ΓòÉΓòÉΓòÉ
  4152.  
  4153. TOKENIZEFILE(filename,output)
  4154.  
  4155. Summary:   TOKENIZEFILE uses the REXX language processor to produce
  4156.       a tokenized program string.
  4157.  
  4158. Arguments:  filename:  The name of the REXX program file.
  4159.       output:   The name of a REXX variable that receives the
  4160.             tokenized result.
  4161.  
  4162. Returns:   1 if the function is successful, otherwise 0.
  4163.  
  4164. Notes:    A tokenized program string can be used by the REXXRUN
  4165.       and REXXTHREAD functions to execute a program without the
  4166.       overhead of processing the source code for each call.
  4167.  
  4168.       Tokenized code is language processor dependent. Code
  4169.       tokenized by Personal REXX cannot be used by IBM REXX
  4170.       and vice versa.
  4171.  
  4172. See also:  REXXRUN, REXXTHREAD, TOKENIZESTRING
  4173.  
  4174.  
  4175. ΓòÉΓòÉΓòÉ 3.149. TOKENIZESTRING ΓòÉΓòÉΓòÉ
  4176.  
  4177. TOKENIZESTRING(source,output)
  4178.  
  4179. Summary:   TOKENIZESTRING uses the REXX language processor to produce
  4180.       a tokenized program string.
  4181.  
  4182. Arguments:  source:   A REXX string containing program source code.
  4183.       output:   The name of a REXX variable that receives the
  4184.             tokenized result.
  4185.  
  4186. Returns:   1 if the function is successful, otherwise 0.
  4187.  
  4188. Notes:    A tokenized program string can be used by the REXXRUN
  4189.       and REXXTHREAD functions to execute a program without the
  4190.       overhead of processing the source code for each call.
  4191.  
  4192.       Tokenized code is language processor dependent. Code
  4193.       tokenized by Personal REXX cannot be used by IBM REXX
  4194.       and vice versa.
  4195.  
  4196.       The source string should be in a form just as if the program
  4197.       were read from a file, with lines separated by carriage
  4198.       returns and linefeeds, and statements on the same line
  4199.       separated by semicolons.
  4200.  
  4201. See also:  REXXRUN, REXXTHREAD, TOKENIZEFILE
  4202.  
  4203.  
  4204. ΓòÉΓòÉΓòÉ 3.150. TYPEMATIC ΓòÉΓòÉΓòÉ
  4205.  
  4206. TYPEMATIC(rate,delay)
  4207.  
  4208. Summary:   TYPEMATIC sets the keyboard typematic repeat rate and
  4209.       initial delay.
  4210.  
  4211. Arguments:  rate:  The rate in characters per second at which a key
  4212.           which is held down should repeat.
  4213.       delay:  The length of time in milliseconds after a key is
  4214.           first pressed that it begins to repeat.
  4215.  
  4216. Returns:   1 if the function is successful, otherwise 0.
  4217.  
  4218. Notes:    The values of rate and delay that can actually be set are
  4219.       limited by the operating system. Typically, rate will not
  4220.       be greater than 30 and delay will not be greater than 1000.
  4221.  
  4222.       If TYPEMATIC is used in a PM window it will return 0 and
  4223.       have no effect on the keyboard typematic rate. However, if
  4224.       the typematic rate is set in a full-screen session, it
  4225.       applies to all active sessions, including the PM session.
  4226.  
  4227.  
  4228. ΓòÉΓòÉΓòÉ 3.151. UPPER ΓòÉΓòÉΓòÉ
  4229.  
  4230. UPPER(string)
  4231.  
  4232. Summary:   UPPER uppercases the specified string.
  4233.  
  4234. Arguments:  string: A string to be converted to lower case.
  4235.  
  4236. Returns:   The input string with all lower case characters converted
  4237.       to upper case.
  4238.  
  4239. Notes:    UPPER(string) is equivalent to TRANSLATE(string), but easier
  4240.       to type and remember.
  4241.  
  4242. See also:  LOWER
  4243.  
  4244.  
  4245. ΓòÉΓòÉΓòÉ 3.152. VALIDNAME ΓòÉΓòÉΓòÉ
  4246.  
  4247. VALIDNAME(filename,[wildcard])
  4248.  
  4249. Summary:   VALIDNAME indicates whether a name is a syntactically valid
  4250.       file name.
  4251.  
  4252. Arguments:  filename:  The name to be tested for validity.
  4253.       wildcard:  1 or 0 to indicate whether or no wildcard
  4254.             characters are to be allowed as valid in a name.
  4255.  
  4256. Returns:   1 if the name is a valid file name, otherwise 0.
  4257.  
  4258. Notes:    If the file name includes a drive letter, it must be a valid
  4259.       drive, and the name syntax is checked according to the rules
  4260.       of the file system on the specified drive. Otherwise the
  4261.       syntax is checked according to the rules of the file system
  4262.       on the current drive.
  4263.  
  4264.       Names are tested to verify that all parts of the name do not
  4265.       exceed allowed lengths and that characters not allowed in
  4266.       names are not present. Directory names included in the
  4267.       fileid do not need to exist.
  4268.  
  4269.       If the wildcard flag is 1 then "?" and "*" are allowed in
  4270.       file names (but not paths). If it is 0 (the default) then
  4271.       "?" and "*" cannot be used anywhere.
  4272.  
  4273. See also:  DOSFNAME, PARSEFN
  4274.  
  4275.  
  4276. ΓòÉΓòÉΓòÉ 3.153. VARDUMP ΓòÉΓòÉΓòÉ
  4277.  
  4278. VARDUMP([filename],[include],[var1],...)
  4279.  
  4280. Summary:   VARDUMP writes the names and values of selected variables to
  4281.       a specified file.
  4282.  
  4283. Arguments:  filename:  The fully qualified name of a file to which
  4284.             variable names and values are to be written. The
  4285.             default is the standard output stream.
  4286.       include:   The letter 'I' if the following list of variables
  4287.             specifies names which are to be included, or the
  4288.             letter 'E' if the list specifies names which are
  4289.             to be excluded. 'I' is the default.
  4290.       var1:    The name of a variable or a stem which is to be
  4291.             included or excluded from the names and values
  4292.             to be dumped. As many additional names as
  4293.             required may be specified in subsequent
  4294.             arguments. If a stem (ending in '.') is specified,
  4295.             all variables with that stem will be dumped.
  4296.  
  4297. Returns:   1 if the operation is successful, otherwise 0.
  4298.  
  4299. Notes:    When the include option is in effect and no variable or stem
  4300.       names are specified, all currently visible variables and
  4301.       stems in the program are dumped.
  4302.  
  4303.       The format of the information written to the file is:
  4304.  
  4305.         Name=..., Value=...
  4306.  
  4307.       which is intended to be used primarily for program debugging.
  4308.  
  4309.       If the specified file exists, new data is appended to the
  4310.       end of it.
  4311.  
  4312.       The maximum length of a value which will be dumped is 1000
  4313.       characters. Values in excess of this will be truncated.
  4314.  
  4315.       The order in which variable values are dumped is not
  4316.       predictable.
  4317.  
  4318. See also:  VARREAD, VARWRITE
  4319.  
  4320.  
  4321. ΓòÉΓòÉΓòÉ 3.154. VARREAD ΓòÉΓòÉΓòÉ
  4322.  
  4323. VARREAD(filename,[include],[var1],...)
  4324.  
  4325. Summary:   VARREAD reads the names and values of selected variables from
  4326.       a specified file.
  4327.  
  4328. Arguments:  filename:  The fully qualified name of a file from which
  4329.             variable names and values are to be read.
  4330.       include:   The letter 'I' if the following list of variables
  4331.             specifies names which are to be included, or the
  4332.             letter 'E' if the list specifies names which are
  4333.             to be excluded. 'I' is the default.
  4334.       var1:    The name of a variable or a stem which is to be
  4335.             included or excluded from the names and values
  4336.             to be read. As many additional names as required
  4337.             may be specified in subsequent arguments. If a
  4338.             stem (ending in '.') is specified, all variables
  4339.             with that stem will be read (if they are
  4340.             contained in the file).
  4341.  
  4342. Returns:   1 if the operation is successful, otherwise 0.
  4343.  
  4344. Notes:    When the include option is in effect and no variable or stem
  4345.       names are specified, all variables contained in the file will
  4346.       be read.
  4347.  
  4348.       The specified file must have been created by VARWRITE. The
  4349.       file contains the full name of each variable, and existing
  4350.       variables in the program will be updated with values read
  4351.       from the file.
  4352.  
  4353.       For a compound variable whose stem is included, only values
  4354.       corresponding to tails which have been stored in the file
  4355.       will be updated. Any other values will be unaffected.
  4356.  
  4357.       VARREAD is intended to be used with VARWRITE as a general
  4358.       way for a program to save current state information. The
  4359.       file can be used like an "INI" file to save program
  4360.       configuration data. It can also be used to treat a
  4361.       collection of REXX variables as a general-purpose database.
  4362.  
  4363. See also:  VARDUMP, VARWRITE
  4364.  
  4365.  
  4366. ΓòÉΓòÉΓòÉ 3.155. VARWRITE ΓòÉΓòÉΓòÉ
  4367.  
  4368. VARWRITE(filename,[include],[var1],...)
  4369.  
  4370. Summary:   VARWRITE writes the names and values of selected variables to
  4371.       a specified file.
  4372.  
  4373. Arguments:  filename:  The fully qualified name of a file to which
  4374.             variable names and values are to be written.
  4375.       include:   The letter 'I' if the following list of variables
  4376.             specifies names which are to be included, or the
  4377.             letter 'E' if the list specifies names which are
  4378.             to be excluded. 'I' is the default.
  4379.       var1:    The name of a variable or a stem which is to be
  4380.             included or excluded from the names and values
  4381.             to be written. As many additional names as
  4382.             required may be specified in subsequent
  4383.             arguments. If a stem (ending in '.') is specified,
  4384.             all variables with that stem will be written.
  4385.  
  4386. Returns:   1 if the operation is successful, otherwise 0.
  4387.  
  4388. Notes:    When the include option is in effect and no variable or stem
  4389.       names are specified, all currently visible variables and
  4390.       stems in the program are written.
  4391.  
  4392.       The file written by VARWRITE is intended to be used later by
  4393.       VARREAD, so its exact format should not be depended on. The
  4394.       full name of each variable, including the stem if appropriate,
  4395.       is written to the file.
  4396.  
  4397.       If the specified file exists, it must have been created by
  4398.       VARWRITE, and new data is appended to the end of it.
  4399.  
  4400.       VARWRITE is intended to be used with VARREAD as a general
  4401.       way for a program to save current state information. The
  4402.       file can be used like an "INI" file to save program
  4403.       configuration data. It can also be used to treat a
  4404.       collection of REXX variables as a general-purpose database.
  4405.  
  4406. See also:  VARDUMP, VARREAD
  4407.