home *** CD-ROM | disk | FTP | other *** search
/ Mega Top 1 / os2_top1.zip / os2_top1 / APPS / PROG / REXX / REXXTRA / RXEXTRAS.INF (.txt) < prev    next >
OS/2 Help File  |  1993-10-02  |  68KB  |  2,469 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Introduction ΓòÉΓòÉΓòÉ
  3.  
  4. About... 
  5. Installation 
  6. REXX Registration 
  7. REXX Deregistration 
  8. REXX Registration Tips 
  9.  
  10.  
  11. ΓòÉΓòÉΓòÉ 1.1. About... ΓòÉΓòÉΓòÉ
  12.  
  13. This is version 1.3 of RxExtras, released in September, 1993. 
  14.  
  15. RxExtras is a set of functions to enhance OS/2's REXX programming language, and 
  16. is accompanied by additional functions to be used by other PM Rexx-based 
  17. software (VisPro/Rexx and VX-Rexx, among others).  Some of the functions 
  18. provided by RxExtras can be accomplished by various other means using "pure" 
  19. OS/2 REXX code, but RxExtras provides an easier interface and more efficient 
  20. processing. 
  21.  
  22. Take the RxSort() function as an example.  You can certainly write REXX code to 
  23. write a stem to a file, run the external SORT program, and read the sorted data 
  24. back into a stem.  The RxSort() function of RxExtras saves a lot of disk I/O; 
  25.  
  26.       1. writing the stem to disk. 
  27.       2. the SORT program reading the file from disk. 
  28.       3. the SORT program writing the file back to disk. 
  29.       4. reading the sorted file back into a stem. 
  30.  
  31.  Plus, with RxSort(), you only need 1 line of code to accomplish the entire 
  32.  task! 
  33.  
  34.  Once RxExtras is registered to your REXX interpreter, you can take advantage 
  35.  of any RxExtras functions in your existing and future REXX-based programs. 
  36.  
  37.  
  38. ΓòÉΓòÉΓòÉ 1.2. Installation ΓòÉΓòÉΓòÉ
  39.  
  40. To install RxExtras, place the RxExtras.DLL file in any subdirectory which is 
  41. part of your LIBPATH statement (LIBPATH is found in your CONFIG.SYS file). 
  42.  
  43. For example, you could place RxExtras.DLL in your x:\OS2\DLL subdirectory (by 
  44. default, x:\OS2\DLL is part of your LIBPATH when you install OS/2). However, it 
  45. is recommended that you place RxExtras.DLL in some other subdirectory.  The 
  46. reason for this is that should you have to reinstall OS/2, RxExtras.DLL will 
  47. not automatically be reinstalled with OS/2. All REXX-based programs that 
  48. require RxExtras.DLL will fail until such time as you manually copy 
  49. RxExtras.DLL to your x:\OS2\DLL subdirectory. 
  50.  
  51. A better, more flexible approach is to make a subdirectory (preferably on a 
  52. drive other than where OS/2 is installed) for all your add-on *.DLL files, 
  53. which includes RxExtras.DLL. For example, make a subdirectory called 
  54. y:\USER\DLL and place RxExtras.DLL in there. Then, edit your CONFIG.SYS file, 
  55. and add ";y:\USER\DLL" to the end of your LIBPATH. Save CONFIG.SYS and reboot 
  56. (you must reboot in order for this last change to take effect). Once you've 
  57. done this, you will never have to modify CONFIG.SYS again, no matter what *.DLL 
  58. file you add to your system.  Just place your new *.DLL file in y:\USER\DLL, 
  59. and the system will automatically find it when needed. 
  60.  
  61. After installing RxExtras, you must register the APIs in order to use them. 
  62.  
  63.  
  64. ΓòÉΓòÉΓòÉ 1.3. Registering RxExtras ΓòÉΓòÉΓòÉ
  65.  
  66. In order to use any REXX features of OS/2, you must have installed the REXX 
  67. Interpreter.  When you installed OS/2, you may have chosen to not install REXX. 
  68. If this is the case, open your Selective Install icon and install REXX before 
  69. continuing. 
  70.  
  71. In order to take advantage of RxExtras' REXX APIs found in RxExtras.DLL, you 
  72. must first "register" the APIs with OS/2's REXX Interpreter.  This is true of 
  73. any and all REXX-based *.DLL files.  The process is rather simple.  In your 
  74. *.CMD file (or within your PM REXX-Based program), simply code these 2 lines: 
  75.  
  76.      Call RxFuncAdd 'RxExtra', 'RxExtras', 'RxExtra'
  77.      Call RxExtra 'Load'
  78.  
  79. Note:  You must code these 2 lines so that they execute before any RxExtras 
  80. APIs are referenced elsewhere in your program. 
  81.  
  82. Once you have done this, your REXX program can take full advantage of RxExtras' 
  83. APIs (functions).  Additionally, all future sessions of REXX-based programs 
  84. will likewise have access to the RxExtras APIs.  In other words, once these 
  85. APIs are registered, they have a global effect across your entire system; all 
  86. OS/2 REXX sessions will be able to use them.  They stay registered until you 
  87. reboot or intentionally deregister them. 
  88.  
  89. Double-click here for some tips and advice on REXX API registration techniques. 
  90.  
  91.  
  92. ΓòÉΓòÉΓòÉ 1.4. Deregistering RxExtras ΓòÉΓòÉΓòÉ
  93.  
  94. When you are through with the RxExtras APIs, it is possible to deregister them 
  95. from your system.  The advantage to doing this is that the shared memory they 
  96. occupied will be released for other programs to use. The disadvantage is that 
  97. if you wish to use the APIs once more, they must be registered once more.  This 
  98. requires some disk I/O activity to locate the RxExtras.DLL file and load its 
  99. contents into memory. 
  100.  
  101. Warning:  If you chose to deregister the RxExtras APIs the affect is global 
  102. across your entire system.  No other REXX-based programs will have access to 
  103. the APIs and they will in all likelihood fail miserably! 
  104.  
  105. To deregister the RxExtras APIs, simply code this line anywhere in any *.CMD 
  106. file or any other REXX-based program: 
  107.  
  108.      Call RxExtra 'Drop'
  109.  
  110. Upon execution of the above line, the APIs will be flushed from memory when the 
  111. system finds it convenient so to do. 
  112.  
  113. Double-click here for some tips and advice on REXX API registration techniques. 
  114.  
  115.  
  116. ΓòÉΓòÉΓòÉ 1.5. Registration Tips ΓòÉΓòÉΓòÉ
  117.  
  118. A good technique for registering any and all REXX API packages (including 
  119. RxExtras) is as follows: 
  120.  
  121.  o Define a STARTUP.CMD file in the root directory of your OS/2 boot drive. 
  122.  o Register, within STARTUP.CMD, any and all REXX API packages that you 
  123.    frequently use. 
  124.  o In each  *.CMD file or REXX-based program that requires the API: 
  125.  
  126.      1. Test for the pre-registration of the API package and save the results 
  127.         in a REXX variable. 
  128.      2. If the test indicates that the API is not yet registered with REXX, 
  129.         then register it according to the API package's instructions. 
  130.      3. Just before exiting your program, if the status variable shows that the 
  131.         API was not pre-registered, then deregister it. 
  132.  
  133.  This method ensures that: 
  134.  
  135.   1. Your *.CMD or REXX-based program has access to the APIs it requires. 
  136.   2. Your REXX environment, in terms of the pre-registered APIs, is restored to 
  137.      its native state before your program exits.  This makes for a very well 
  138.      behaved, tolerant program. 
  139.  
  140.  Specifically, for RxExtras: 
  141.  
  142.  In your x:\STARTUP.CMD file, place: 
  143.  
  144.        Call RxFuncAdd 'RxExtra', 'RxExtras', 'RxExtra'
  145.        Call RxExtra 'Load'
  146.  
  147.  In all of your *.CMD and other REXX-based programs that require the RxExtras 
  148.  APIs, place: 
  149.  
  150.        RxExtraAPI = RxFuncQuery('RxExtra')
  151.        If RxExtraAPI \= 0 Then
  152.        Do
  153.            Call RxFuncAdd 'RxExtra', 'RxExtras', 'RxExtra'
  154.            Call RxExtra 'Load'
  155.        End
  156.  
  157.  before any other references to RxExtras APIs, and then just before your 
  158.  program exits, use: 
  159.  
  160.        If RxExtraAPI \= 0 Then
  161.            Call RxExtra 'Drop'
  162.  
  163.  Notice that registering your RxExtras APIs in the STARTUP.CMD file makes the 
  164.  need for the per-program test of pre-registration superfluous. However, it is 
  165.  a good programming practice to code these lines anyway. 
  166.  
  167.  One reason is that if you give a copy of your program to someone else to use, 
  168.  they might not have registered the APIs in their STARTUP.CMD file. 
  169.  
  170.  Another reason is that since registration in STARTUP.CMD puts these APIs in 
  171.  memory and leaves them there, you may decide (in the interest of saving 
  172.  memory) to remove the pre-registration from STARTUP.CMD. If you do, and you 
  173.  did not code the above tests (or you got a program from someone else and they 
  174.  did not code the above tests), your programs will no longer execute. 
  175.  
  176.   CAUTION:
  177.  Never blindly assume you can deregister any API functions when your program 
  178.  exits.  A program that always deregisters the APIs when it quits only causes 
  179.  problems for everyone that uses it.  If you are going to include code that 
  180.  deregisters an API (RxExtras or otherwise), you should do so only if you're 
  181.  certain it was not pre-registered when the program started! 
  182.  
  183.  
  184. ΓòÉΓòÉΓòÉ 2. RxExtras Release Information ΓòÉΓòÉΓòÉ
  185.  
  186.  About... 
  187.  Release 1.4 
  188.  Release 1.3 
  189.  Release 1.2 
  190.  Previous Releases 
  191.  
  192.  
  193. ΓòÉΓòÉΓòÉ 2.1. About... ΓòÉΓòÉΓòÉ
  194.  
  195. This section has details on what is, or was, in each release of RxExtras. 
  196.  
  197. You can determine the current release level of RxExtras by running the RxExtra 
  198. function when you are first registering RxExtras to REXX. 
  199.  
  200. Double click on any of the releases on the left hand side to see information 
  201. pertaining to a particular release. 
  202.  
  203. The sort of information that is displayed will be a list of functions added, 
  204. and any other miscellaneous work, such as parameter checking, or multiple 
  205. threaded-ness. 
  206.  
  207.  
  208. ΓòÉΓòÉΓòÉ 2.2. Release 1.4 ΓòÉΓòÉΓòÉ
  209.  
  210. The following functions were added in Release 1.4 of RxExtras:- 
  211.  
  212.  o RxSetIcon 
  213.  o RxDrawBitmap 
  214.  o RxSetClipboardText 
  215.  o RxQueryClipboardText 
  216.  o RxAppendClipboardText 
  217.  o RxScrollListBox 
  218.  o RxGetEXEName 
  219.  
  220.  The RxSetGlobal function was enhanced to accept valid REXX variable names and 
  221.  support one call setting of global stems. 
  222.  
  223.  The RxGetGlobal function was enhanced to accept valid REXX variable names. 
  224.  
  225.  Note:  You can not get global stems in one call using RxGetGlobal. 
  226.  
  227.  Also, the complete User's Guide you are now reading was included in the 
  228.  package to replace the RxExtras.DOC, and RxExtras.VPR files. Many thanks to 
  229.  Ric Naff for doing a lot of the work. 
  230.  
  231.  
  232. ΓòÉΓòÉΓòÉ 2.3. Release 1.3 ΓòÉΓòÉΓòÉ
  233.  
  234. The following functions were added in release 1.3 of RxExtras:- 
  235.  
  236.  o RxThread 
  237.  o RxKillThread 
  238.  o RxSuspendThread 
  239.  o RxResumeThread 
  240.  o RxChangeThreadPriority 
  241.  o RxSetThreadClass 
  242.  
  243.  
  244. ΓòÉΓòÉΓòÉ 2.4. Release 1.2 ΓòÉΓòÉΓòÉ
  245.  
  246. The following function was added in Release 1.2 of RxExtras:- 
  247.  
  248.  o RxQueryClassName 
  249.  
  250.  Also the following miscellaneous work was completed:- 
  251.  
  252.  o A First cut INF file was included in the ZIP file. 
  253.  o Parameter checking for all functions was enhanced. 
  254.  o RxListBoxFromFile was made multithreaded. 
  255.  o RxVarDump now dumps to a stem, rather than to STDOUT. 
  256.  o RxExtra now returns the version number of RxExtras you have loaded or 
  257.    dropped. 
  258.  o RxVolumeLabel returns an error message if the drive tried is not valid. 
  259.  o RxSwitchTo will match on any part of the string, not just a prefix. 
  260.  o RxQueryDriveType will return "NOTREADY" for CDAUDIO or empty floppy drives. 
  261.  
  262.  
  263. ΓòÉΓòÉΓòÉ 2.5. Previously available (No release numbers) ΓòÉΓòÉΓòÉ
  264.  
  265. The following functions were available in previous releases of RxExtras that 
  266. had no release number :- 
  267.  
  268.  o RxMaximize 
  269.  o RxMinimize 
  270.  o RxRestore 
  271.  o RxBootDrive 
  272.  o RxRead 
  273.  o RxWrite 
  274.  o RxVolumeLabel 
  275.  o RxVarDump 
  276.  o RxStemCopy 
  277.  o RxExtra 
  278.  o RxSort 
  279.  o RxSwitchTo 
  280.  o RxQuerySwitchList 
  281.  o RxQueryDriveType 
  282.  o RxSearchPath 
  283.  o RxSetGlobal 
  284.  o RxGetGlobal 
  285.  o RxLineCount 
  286.  o RxListBoxFromFile 
  287.  o RxListBoxToFile 
  288.  o RxListBoxFromStem 
  289.  o RxListBoxToStem 
  290.  o RxGetListBoxCount 
  291.  o RxGetItemFromListBox 
  292.  o RxGetItemFromListBoxAtIndex 
  293.  o RxAddItemAtIndex 
  294.  o RxSetSpinButtonCharRange 
  295.  o RxSetSpinButtonRangeFromStem 
  296.  o RxSetSpinButtonRangeWithIncrement 
  297.  o RxMorphButtonToIcon 
  298.  o RxSearchItem 
  299.  o RxQueryWindow 
  300.  
  301.  
  302. ΓòÉΓòÉΓòÉ 3. RxExtras APIs ΓòÉΓòÉΓòÉ
  303.  
  304. The listings for RxExtras APIs (functions) will designate which types of REXX 
  305. programs can take advantage of them.  Each API will have a box at the top of 
  306. its description detailing in which environments it may be used: 
  307.  
  308. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  309. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  310. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  311.  
  312. If you see "OS/2 REXX" in the above box for a function, you may use that 
  313. RxExtras function in any *.CMD and/or other REXX-based program.  If you do not 
  314. see "OS/2 REXX", then you cannot use the API in a *.CMD file. 
  315.  
  316. If you see "VisPro/REXX" in the above box for a function, you may use that 
  317. RxExtras function in any VisPro/REXX program. 
  318.  
  319. If you see "VX-REXX" in the above box for a function, you may use that RxExtras 
  320. function in any VX-REXX program. 
  321.  
  322. APIs for VisPro/REXX and/or VX-REXX could possibly be used in other PM 
  323. Rexx-based programs.  Some experimentation may be necessary. 
  324.  
  325.  
  326. ΓòÉΓòÉΓòÉ 3.1. Disc/File ΓòÉΓòÉΓòÉ
  327.  
  328. These APIs deal with accessing information to, from, or about discs and files. 
  329. Some of them are unique in that there are no standard REXX commands that will 
  330. retrieve the information for you; RxExtras must be used in these instances. 
  331.  
  332.  
  333. ΓòÉΓòÉΓòÉ 3.1.1. RxBootDrive ΓòÉΓòÉΓòÉ
  334.  
  335. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  336. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  337. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  338.  
  339. ΓöÇΓöÇΓöÇRXBOOTDRIVE()ΓöÇΓöÇΓöÇ
  340.  
  341.  
  342. Returns the drive from which OS2 was booted in the format 'X'. 
  343.  
  344. If you want a trailing ':' you must append one to the returned drive letter. 
  345.  
  346. Example: 
  347.  
  348.      SAY 'My Boot Drive is' RxBootDrive() || ':'
  349.  
  350. Output: 
  351.  
  352.      My Boot Drive is C:           /* perhaps */
  353.  
  354.  
  355. ΓòÉΓòÉΓòÉ 3.1.2. RxLineCount ΓòÉΓòÉΓòÉ
  356.  
  357. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  358. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  359. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  360.  
  361. ΓöÇΓöÇΓöÇRXLINECOUNT(ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇfilenameΓöÇ)ΓöÇΓöÇΓöÇ
  362.                   ΓööΓöÇdrive:ΓöÇΓöÿ ΓööΓöÇ\ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γöÿ
  363.                                  ΓööΓöÇpath\ΓöÇΓöÿ
  364.  
  365.  
  366. Returns the number of lines in filename.  The lines in filename are assumed to 
  367. be delimited by CR/LF characters. 
  368.  
  369. If filename does not exist, RXLINECOUNT raises an 'Incorrect call to routine' 
  370. condition. 
  371.  
  372. Example: 
  373.  
  374.      SAY 'There are' RxLineCount('C:\CONFIG.SYS') 'lines in Config.Sys.'
  375.  
  376. Output: 
  377.  
  378.      There are 117 lines in Config.Sys.      /* perhaps */
  379.  
  380.  
  381. ΓòÉΓòÉΓòÉ 3.1.3. RxListBoxFromFile ΓòÉΓòÉΓòÉ
  382.  
  383.  
  384. ΓòÉΓòÉΓòÉ 3.1.4. RxListBoxToFile ΓòÉΓòÉΓòÉ
  385.  
  386.  
  387. ΓòÉΓòÉΓòÉ 3.1.5. RxQueryDriveType ΓòÉΓòÉΓòÉ
  388.  
  389. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  390. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  391. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  392.  
  393. ΓöÇΓöÇΓöÇRXQUERYDRIVETYPE(drive:)ΓöÇΓöÇΓöÇ
  394.  
  395.  
  396. Returns 'HPFS', 'FAT' or 'CDFS' for their respective drive types. 
  397.  
  398. Returns 'NOTREADY' for the following conditions: 
  399.  
  400.      o A CD-ROM drive with an Audio CD loaded. 
  401.      o An empty floppy drive. 
  402.      o An invalid drive letter. 
  403.  
  404.  Example: 
  405.  
  406.        SAY 'Drive C: is a' RxQueryDriveType('C:') 'drive.'
  407.  
  408.  Output: 
  409.  
  410.        Drive C: is a HPFS drive.           /* perhaps */
  411.  
  412.  
  413. ΓòÉΓòÉΓòÉ 3.1.6. RxRead ΓòÉΓòÉΓòÉ
  414.  
  415.  
  416. ΓòÉΓòÉΓòÉ 3.1.7. RxSearchPath ΓòÉΓòÉΓòÉ
  417.  
  418. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  419. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  420. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  421.  
  422. ΓöÇΓöÇΓöÇRXSEARCHPATH(ΓöÇΓö¼ΓöÇ''ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ,ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇfilenameΓöÇ)ΓöÇΓöÇΓöÇ
  423.                    ΓööΓöÇsearchpathΓöÇΓöÿ   ΓööΓöÇsubdir\ΓöÇΓöÿ
  424.  
  425.  
  426. Searches for [ subdir\ ]filename in the path(s) defined by searchpath. 
  427.  
  428. If the first arument is NULL (i.e., ''), the current default path is searched. 
  429. Otherwise the path(s) defined for searchpath will be used for the search. 
  430. searchpath may be composed of several pathnames, each separated by a semicolon. 
  431. Each pathname is allowed to have either a drive designator, a directory 
  432. designator, or both. 
  433.  
  434. Currently, filename must specify a complete filename; no wildcard characters 
  435. are accepted.  If you supply the optional subdir\ qualifier, the effect is as 
  436. if you had modified all the values of searchparh to include the addtional 
  437. subdir\ value.  For example, if searchpath contains 'F:\OS2;G:\USER', and you 
  438. specify 'DLL\' for subdir,, the effect is the same as having specified 
  439. 'F:\OS2\DLL;G:\USER\DLL' for searchpath and no value for subdir\. 
  440.  
  441.  RXSEARCHPATH returns a fully qualified filename if it finds one, otherwise it 
  442. returns NULL. 
  443.  
  444. Example: 
  445.  
  446.      /*  Find COUNTRY.SYS */
  447.      SchPath = 'C:\OS2\SYSTEM;D:\OS2\SYSTEM;E:\OS2\SYSTEM'
  448.      SAY RxSearchPath(SchPath,'COUNTRY.SYS')
  449.  
  450.      /*  Test for presence of a temporary file in current directory */
  451.      Status = RxSearchPath('',MYFILE.TMP')
  452.      If Status \= ''
  453.         SAY 'MYFILE.TMP exists in current directory!'
  454.      Else
  455.         SAY 'MYFILE.TMP does not exist.'
  456.  
  457. Output: 
  458.  
  459.      D:\OS2\SYSTEM\COUNTRY.SYS    /* if found in D:\OS2\SYSTEM */
  460.      MYFILE.TMP does not exist.   /* perhaps                   */
  461.  
  462.  
  463. ΓòÉΓòÉΓòÉ 3.1.8. RxVolumeLabel ΓòÉΓòÉΓòÉ
  464.  
  465. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  466. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  467. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  468.  
  469. ΓöÇΓöÇΓöÇRXVOLUMELABEL(drive)ΓöÇΓöÇΓöÇ
  470.  
  471.  
  472. Returns the volume label for disc drive drive.  If no label exists, it returns 
  473. 'NO LABEL'. 
  474.  
  475. Returns 'Error Querying drive label' for an invalid drive letter. 
  476.  
  477. You may append an optional colon to the letter, but only the drive letter 
  478. itself is required. 
  479.  
  480. Example: 
  481.  
  482.      SAY 'Volume Label of drive C is' RxVolumeLabel('C')
  483.  
  484. Output: 
  485.  
  486.      Volume Label of drive C is MY DRIVE C       /* perhaps */
  487.  
  488.  
  489. ΓòÉΓòÉΓòÉ 3.1.9. RxWrite ΓòÉΓòÉΓòÉ
  490.  
  491.  
  492. ΓòÉΓòÉΓòÉ 3.2. REXX Environment ΓòÉΓòÉΓòÉ
  493.  
  494. These APIs deal with accessing information to, from, or about 1 or more REXX 
  495. Sessions.  All of these functions are available only with RxExtras; there are 
  496. no REXX commands which will achieve the same results. 
  497.  
  498.  
  499. ΓòÉΓòÉΓòÉ 3.2.1. RxExtra ΓòÉΓòÉΓòÉ
  500.  
  501. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  502. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  503. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  504.  
  505. ΓöÇΓöÇΓöÇRXEXTRA(ΓöÇΓö¼ΓöÇ'LOAD'ΓöÇΓö¼ΓöÇ)ΓöÇΓöÇΓöÇ
  506.               ΓööΓöÇ'DROP'ΓöÇΓöÿ
  507.  
  508.  
  509. Loads or Drops all functions in this package. 
  510.  
  511. Returns the version number of RxExtras after loading or dropping. 
  512.  
  513. Example: 
  514.  
  515.      rcy = RxFuncAdd('RxExtra', 'RxExtras', 'RxExtra')
  516.      Say 'Using version 'RxExtra("Load")' of RxExtras'
  517.  
  518. Output: 
  519.  
  520.      Using version 1.3 of RxExtras        /* perhaps */
  521.  
  522.  
  523. ΓòÉΓòÉΓòÉ 3.2.2. RxGetGlobal ΓòÉΓòÉΓòÉ
  524.  
  525. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  526. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  527. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  528.  
  529. ΓöÇΓöÇΓöÇRXGETGLOBAL(ΓöÇΓöÇvarnameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  530.  
  531.  
  532. Returns the value for varname, where varname was previously defined via 
  533. RXSETGLOBAL. 
  534.  
  535. If varname was not defined via RXSETGLOBAL, RXGETGLOBAL returns NULL. 
  536.  
  537. Example: 
  538.  
  539.      Call RxSetGlobal('MyVar','Hello World!')
  540.      Say RxGetGlobal('MyVar')
  541.  
  542. Output: 
  543.  
  544.      Hello World!
  545.  
  546.  
  547. ΓòÉΓòÉΓòÉ 3.2.3. RxSetGlobal ΓòÉΓòÉΓòÉ
  548.  
  549. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  550. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  551. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  552.  
  553. ΓöÇΓöÇΓöÇRXSETGLOBAL(ΓöÇΓöÇvarnameΓöÇ,ΓöÇvarvalueΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  554.  
  555.  
  556. Sets a global variable value for use across all REXX sessions.  A variable thus 
  557. set can be retrieved by any other REXX session via RXGETGLOBAL. 
  558.  
  559. You can set a global stem from a local stem by passing the global stem name 
  560. (which must have a trailing period) for varname and passing the local stem name 
  561. (which also must have a trailing period) for varvalue. 
  562.  
  563. Returns varvalue if successful. 
  564.  
  565. Example: 
  566.  
  567.      SomeVar = 'MyVar'
  568.      Call RxSetGlobal(SomeVar,'Hello World!')
  569.      Say RxGetGlobal('MyVar')
  570.  
  571. Output: 
  572.  
  573.      Hello World!
  574.  
  575.  
  576. ΓòÉΓòÉΓòÉ 3.2.4. RxVarDump ΓòÉΓòÉΓòÉ
  577.  
  578. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  579. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  580. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  581.  
  582. ΓöÇΓöÇΓöÇRXVARDUMP(ΓöÇΓöÇ'stemname.'ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  583.  
  584.  
  585. Copies all local variables to stemname for debugging.  The trailing period is 
  586. required; results are unpredictable without it. 
  587.  
  588. RXVARDUMP always returns NULL.  The count of variables retrieved is placed in 
  589. stemname.0.  Each unique variable is placed in a pair of variables, 
  590. stemname.n.name and stemname.n.value and may be displayed in a loop or by other 
  591. means. 
  592.  
  593. Example: 
  594.  
  595.      XYZ = '123'
  596.      MyVar = 'Quick Brown Fox'
  597.      Call RxVarDump('varlist.')
  598.      Do Count = 1 to varlist.0
  599.         Say varlist.Count.name 'has the value "'varlist.Count.value'"'
  600.      End
  601.  
  602. Output: 
  603.  
  604.      XYZ has the value "123"
  605.      MYVAR has the value "Quick Brown Fox"
  606.  
  607.  
  608. ΓòÉΓòÉΓòÉ 3.3. REXX Stems ΓòÉΓòÉΓòÉ
  609.  
  610. These APIs deal with accessing information to, from, or about REXX Stem 
  611. variables.  Some of them require PM REXX-based programs in order to function. 
  612.  
  613.  
  614. ΓòÉΓòÉΓòÉ 3.3.1. RxListBoxFromStem ΓòÉΓòÉΓòÉ
  615.  
  616.  
  617. ΓòÉΓòÉΓòÉ 3.3.2. RxListBoxToStem ΓòÉΓòÉΓòÉ
  618.  
  619.  
  620. ΓòÉΓòÉΓòÉ 3.3.3. RxQuerySwitchList ΓòÉΓòÉΓòÉ
  621.  
  622.  
  623. ΓòÉΓòÉΓòÉ 3.3.4. RxRead ΓòÉΓòÉΓòÉ
  624.  
  625. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  626. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  627. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  628.  
  629. ΓöÇΓöÇΓöÇRXREAD(ΓöÇΓöÇ'stemname.'ΓöÇ,ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇfilenameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  630.                             ΓööΓöÇdrive:ΓöÇΓöÿ ΓööΓöÇ\ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γöÿ
  631.                                            ΓööΓöÇpath\ΓöÇΓöÿ
  632.  
  633.  
  634. Reads filename into the stem variable stemname..  The trailing period to 
  635. stemname. is required; results are unpredictable if it is not supplied.  RXREAD 
  636. assumes that the contents of filename are ASCII text, with each line terminated 
  637. by a CR/LF. 
  638.  
  639. RXREAD always returns NULL if successful, and the count of lines retrieved is 
  640. placed in stemname.0.  Each unique line of text is place in stemname.n and may 
  641. be displayed in a loop or by other means. If filename cannot be read, RXREAD 
  642. raises an 'Incorrect call to routine' condition. 
  643.  
  644. Example: 
  645.  
  646.      Call RxRead('textlines.','C:\Config.Sys')
  647.      Do Count = 1 to textlines.0
  648.         Say textlines.Count
  649.      End
  650.  
  651. Output: 
  652.  
  653.      PROTSHELL=C:\OS2\PMSHELL.EXE          /* perhaps */
  654.      SET USER_INI=C:\OS2\OS2.INI           /* perhaps */
  655.      . . .
  656.  
  657.  
  658. ΓòÉΓòÉΓòÉ 3.3.5. RxSetSpinButtonRangeFromStem ΓòÉΓòÉΓòÉ
  659.  
  660.  
  661. ΓòÉΓòÉΓòÉ 3.3.6. RxSort ΓòÉΓòÉΓòÉ
  662.  
  663. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  664. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  665. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  666.  
  667. ΓöÇΓöÇΓöÇRXSORT(ΓöÇΓöÇ'stemname.'ΓöÇΓöÇ,ΓöÇΓö¼ΓöÇ'Ascending'ΓöÇΓöÇΓö¼ΓöÇ)ΓöÇΓöÇΓöÇ
  668.                              ΓööΓöÇ'Descending'ΓöÇΓöÿ
  669.  
  670.  
  671. Sorts a stemmed variable stemname. in either Ascending or Descending ASCII 
  672. sequence.  Only the A or D of the sort order is required. 
  673.  
  674. The number of items to sort must be placed in stemname.0.  All values to sort 
  675. must be in stemname.1 through stemname.n, where n is the number placed in 
  676. stemname.0. 
  677.  
  678. RXSORT always returns NULL if invoked properly. 
  679.  
  680. Example: 
  681.  
  682.      Stem.0 = 3
  683.      Stem.1 = 'Now is the time...'
  684.      Stem.2 = 'A stitch in time...'
  685.      Stem.3 = 'Somewhere in time...'
  686.      Call RxSort('Stem.','A')
  687.      Do Count = 1 to Stem.0
  688.         Say Stem.Count
  689.      End
  690.      Say '-----------------'
  691.      Call RxSort('Stem.','D')
  692.      Do Count = 1 to Stem.0
  693.         Say Stem.Count
  694.      End
  695.  
  696. Output: 
  697.  
  698.      A stitch in time...
  699.      Now is the time...
  700.      Somewhere in time...
  701.      -----------------
  702.      Somewhere in time...
  703.      Now is the time...
  704.      A stitch in time...
  705.  
  706.  
  707. ΓòÉΓòÉΓòÉ 3.3.7. RxStemCopy ΓòÉΓòÉΓòÉ
  708.  
  709. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  710. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  711. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  712.  
  713. ΓöÇΓöÇΓöÇRXSTEMCOPY(ΓöÇΓöÇ'sourcestem.'ΓöÇΓöÇ,ΓöÇΓöÇ'targetstem.'ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  714.  
  715.  
  716. Copies the entire contents of sourcestem. to targetstem..  The trailing period 
  717. to sourcestem. and targetstem. are required; results are unpredictable if they 
  718. are not supplied. 
  719.  
  720. RXSTEMCOPY always returns NULL. 
  721.  
  722. Example: 
  723.  
  724.      Source.ABC = 'ABCDEFG'
  725.      Source.123 = '123456789'
  726.      Call RxStemCopy('Source.','Target.')
  727.      Say Target.ABC
  728.      Say Target.123
  729.  
  730. Output: 
  731.  
  732.      ABCDEFG
  733.      123456789
  734.  
  735.  
  736. ΓòÉΓòÉΓòÉ 3.3.8. RxVarDump ΓòÉΓòÉΓòÉ
  737.  
  738.  
  739. ΓòÉΓòÉΓòÉ 3.3.9. RxWrite ΓòÉΓòÉΓòÉ
  740.  
  741. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  742. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  743. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  744.  
  745. ΓöÇΓöÇΓöÇRXWRITE(ΓöÇΓöÇ'stemname.'ΓöÇ,ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇfilenameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  746.                              ΓööΓöÇdrive:ΓöÇΓöÿ ΓööΓöÇ\ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γöÿ
  747.                                             ΓööΓöÇpath\ΓöÇΓöÿ
  748.  
  749.  
  750. Writes filename from the stem variable stemname..  The trailing period to 
  751. stemname. is required; results are unpredictable if it is not supplied. 
  752. RXWRITE requires that the number of lines to write are designated in 
  753. stemname.0.  It also requires that the lines of text are placed in stemname. 
  754. such that entries are numeric in nature, starting at 1 and continuing up to the 
  755. number defined in stemname..0.  stemname. variables that are not numeric or are 
  756. not within the range 1 to stemname.0 will not be written to filename.  RXWRITE 
  757. writes the text lines in ascending numerical order. 
  758.  
  759. RXWRITE always overlays the contents of a previously-existing file, otherwise 
  760. it creates the file as required. 
  761.  
  762. RXWRITE always returns NULL if successful.  If filename cannot be written, it 
  763. raises an 'Incorrect call to routine' condition. 
  764.  
  765. Example: 
  766.  
  767.      MyStem.0 = 4
  768.      MyStem.4 = 'We''re as happy as can be.'
  769.      MyStem.2 = 'Hi There!'
  770.      MyStem.3 = 'Ho There!'
  771.      MyStem.1 = 'Hey There!'
  772.      Call RxWrite('MyStem.','C:\Temp.Out')
  773.  
  774. Contents of C:\Temp.Out: 
  775.  
  776.      Hey There!
  777.      Hi There!
  778.      Ho There!
  779.      We're as happy as can be.
  780.  
  781.  
  782. ΓòÉΓòÉΓòÉ 3.4. OS/2 Environment ΓòÉΓòÉΓòÉ
  783.  
  784. These APIs deal with accessing information about or changing characterstics of 
  785. your OS/2 machine. 
  786.  
  787.  
  788. ΓòÉΓòÉΓòÉ 3.4.1. RxChangeThreadPriority ΓòÉΓòÉΓòÉ
  789.  
  790. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  791. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  792. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  793.  
  794. ΓöÇΓöÇΓöÇRXCHANGETHREADPRIORITY(ΓöÇΓöÇthreadidΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ)ΓöÇΓöÇΓöÇ
  795.                                          Γö£ΓöÇ,deltaΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  796.                                          Γö£ΓöÇ,'MINIMUM'ΓöÇΓöÇΓöÇΓöñ
  797.                                          Γö£ΓöÇ,'MAXIMUM'ΓöÇΓöÇΓöÇΓöñ
  798.                                          Γö£ΓöÇ,''ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  799.                                          Γö£ΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  800.  
  801.  
  802. Changes the priority of threadid by the delta value specified. If the value is 
  803. left out, NULL or invalid, it is assumed to be the maximum. 
  804.  
  805. RXCHANGETHREADPRIORITY returns :- 
  806.  
  807. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  808. ΓöéReturn value             ΓöéReason                                  Γöé
  809. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  810. Γöé"Priority changed"       ΓöéPriority was successfully changed       Γöé
  811. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  812. Γöé"Invalid delta"          ΓöéThe second parameter was not in the     Γöé
  813. Γöé                         Γöérange -31 to +31, blank, "maximum" or   Γöé
  814. Γöé                         Γöé"minimum"                               Γöé
  815. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  816. Γöé"Invalid Thread id"      ΓöéThe first parameter did not specify a   Γöé
  817. Γöé                         Γöévalid thread id.                        Γöé
  818. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  819. Γöé"Unknown return code n"  ΓöéDosSetPriority returned an undocumented Γöé
  820. Γöé                         Γöéreturn code of n                        Γöé
  821. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  822.  
  823. Example: 
  824.  
  825.      rc = RxChangeThreadPriority(threadId, 5)
  826.  
  827. Results: 
  828.  
  829.      rc should contain the value "Priority changed"
  830.  
  831.  
  832. ΓòÉΓòÉΓòÉ 3.4.2. RxGetEXEName ΓòÉΓòÉΓòÉ
  833.  
  834. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  835. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  836. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  837.  
  838. ΓöÇΓöÇΓöÇRXGETEXENAME(ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  839.  
  840.  
  841. Returns the name of the executable currently running your REXX Code. 
  842.  
  843. Example: 
  844.  
  845.      Say "The current running program is "RxGetEXEName()
  846.  
  847. Results: 
  848.  
  849.      The currnet running program is CMD.EXE     /* possibly */
  850.  
  851.  
  852. ΓòÉΓòÉΓòÉ 3.4.3. RxKillThread ΓòÉΓòÉΓòÉ
  853.  
  854. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  855. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  856. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  857.  
  858. ΓöÇΓöÇΓöÇRXKILLTHREAD(ΓöÇΓöÇthreadidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  859.  
  860.  
  861. Kills thread threadid. 
  862.  
  863. RXKILLTHREAD returns :- 
  864.  
  865. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  866. ΓöéReturn value             ΓöéReason                                  Γöé
  867. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  868. Γöé"Killed"                 ΓöéThread was successfully killed          Γöé
  869. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  870. Γöé"Thread busy"            ΓöéThe thread to be killed was executing 16Γöé
  871. Γöé                         Γöébit code, or was created by 16 bit code.Γöé
  872. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  873. Γöé"Invalid Thread id"      ΓöéThe first parameter did not specify a   Γöé
  874. Γöé                         Γöévalid thread id.                        Γöé
  875. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  876. Γöé"Unknown return code n"  ΓöéDosKillThread returned an undocumented  Γöé
  877. Γöé                         Γöéreturn code of n                        Γöé
  878. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  879.  
  880. Example: 
  881.  
  882.      If RxKillThread(5) = "Killed" Then
  883.         Say "Printing ceased"
  884.  
  885. Results: 
  886.  
  887.      Thread number 5 is stopped permanently and
  888.      rc should have the value "Killed"
  889.  
  890. Note:  RxKillThread returns to the caller without waiting for the ending thread 
  891. to complete its termination processing. 
  892.  
  893. Note:  You cannot use this function to end the current thread. If you use 
  894. RxKillThread to end thread 1, the entire process ends. 
  895.  
  896.  
  897. ΓòÉΓòÉΓòÉ 3.4.4. RxQuerySwitchList ΓòÉΓòÉΓòÉ
  898.  
  899. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  900. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  901. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  902.  
  903. ΓöÇΓöÇΓöÇRXQUERYSWITCHLIST(ΓöÇΓöÇ'stemname.'ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  904.  
  905.  
  906. Retrieves a list of executing sessions into the stemmed variable stemname.. 
  907.  
  908. The count of executing sessions, plus 1, is placed in stemname.0, and the title 
  909. of each session is placed in stemname.2 through stemname.n, where n is the 
  910. value found in stemname.0. stemname.1 will contain 'Switch to'.  Note that 
  911. RXQUERYSWITCHLIST will list "hidden" sessions. 
  912.  
  913. RXQUERYSWITCHLIST always returns NULL. 
  914.  
  915. Example: 
  916.  
  917.      Call RxQuerySwitchList 'temp.'
  918.      Do Count = 2 to temp.0
  919.           Say temp.Count
  920.      End
  921.  
  922. Output: 
  923.  
  924.      4OS2 Window                   /* perhaps */
  925.      Tritus SPF                    /* perhaps */
  926.      System Clock                  /* perhaps */
  927.      Pulse                         /* perhaps */
  928.      Desktop                       /* perhaps */
  929.  
  930.  
  931. ΓòÉΓòÉΓòÉ 3.4.5. RxResumeThread ΓòÉΓòÉΓòÉ
  932.  
  933. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  934. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  935. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  936.  
  937. ΓöÇΓöÇΓöÇRXRESUMETHREAD(ΓöÇΓöÇthreadidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  938.  
  939.  
  940. Allows thread threadid to resume execution after being suspended with 
  941. RXSUSPENDTHREAD. 
  942.  
  943. RXRESUMETHREAD returns :- 
  944.  
  945. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  946. ΓöéReturn value             ΓöéReason                                  Γöé
  947. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  948. Γöé"Resumed"                ΓöéThread was successfully resumed         Γöé
  949. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  950. Γöé"Thread not previously   ΓöéThe thread to be resumed had not been   Γöé
  951. Γöésuspended"               Γöépreviously suspended                    Γöé
  952. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  953. Γöé"Invalid Thread id"      ΓöéThe first parameter did not specify a   Γöé
  954. Γöé                         Γöévalid thread id.                        Γöé
  955. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  956. Γöé"Unknown return code n"  ΓöéDosResumeThread returned an undocumentedΓöé
  957. Γöé                         Γöéreturn code of n                        Γöé
  958. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  959.  
  960. Example: 
  961.  
  962.      If RxResumeThread(5) = 'Resumed' Then
  963.         Say 'Suspended Printing Continues...'
  964.  
  965. Results: 
  966.  
  967.      Thread number 6 continues processing      /* hopefully */
  968.  
  969.  
  970. ΓòÉΓòÉΓòÉ 3.4.6. RxSetThreadClass ΓòÉΓòÉΓòÉ
  971.  
  972. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  973. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  974. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  975.  
  976. ΓöÇΓöÇΓöÇRXSETTHREADCLASS(ΓöÇΓöÇthreadid ΓöÇΓöÇ,ΓöÇΓö¼ΓöÇ'REGULAR'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  977.                                      Γö£ΓöÇ'IDLE'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  978.                                      Γö£ΓöÇ'TIMECRITICAL'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  979.                                      ΓööΓöÇ'FOREGROUNDSERVER'ΓöÇΓöÿ
  980.  
  981.  
  982. Sets the class type of thread threadid to one of REGULAR, IDLE, TIMECRITICAL, 
  983. or FOREGROUNDSERVER.  Only the R, I, T or F of the class type is required. 
  984.  
  985. RXSETTHREADCLASS returns :- 
  986.  
  987. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  988. ΓöéReturn value             ΓöéReason                                  Γöé
  989. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  990. Γöé"Class set"              ΓöéThe class of the thread was successfullyΓöé
  991. Γöé                         Γöéset                                     Γöé
  992. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  993. Γöé"Invalid class"          ΓöéThe class pthread to be killed was      Γöé
  994. Γöé                         Γöéexecuting 16 bit code, or was created byΓöé
  995. Γöé                         Γöé16 bit code.                            Γöé
  996. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  997. Γöé"Invalid Thread id"      ΓöéThe first parameter did not specify a   Γöé
  998. Γöé                         Γöévalid thread id.                        Γöé
  999. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1000. Γöé"Unknown return code n"  ΓöéDosKillThread returned an undocumented  Γöé
  1001. Γöé                         Γöéreturn code of n                        Γöé
  1002. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1003.  
  1004. Example: 
  1005.  
  1006.      If RxSetThreadClass(id, 'F') = 'Class set' Then
  1007.         Say 'Printing sped up to foreground priority'
  1008.  
  1009. Results: 
  1010.  
  1011.      The thread should perform better than previously
  1012.  
  1013.  
  1014. ΓòÉΓòÉΓòÉ 3.4.7. RxSuspendThread ΓòÉΓòÉΓòÉ
  1015.  
  1016. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1017. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  1018. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1019.  
  1020. ΓöÇΓöÇΓöÇRXSUSPENDTHREAD(ΓöÇΓöÇthreadidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1021.  
  1022.  
  1023. Causes thread threadid to halt execution until it is killed with RXKILLTHREAD, 
  1024. restarted with RXRESUMETHREAD, or the parent session is closed. 
  1025.  
  1026. RXSUSPENDTHREAD returns :- 
  1027.  
  1028. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1029. ΓöéReturn value             ΓöéReason                                  Γöé
  1030. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1031. Γöé"Suspended"              ΓöéThe class of the thread was successfullyΓöé
  1032. Γöé                         Γöéset                                     Γöé
  1033. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1034. Γöé"Invalid Thread id"      ΓöéThe first parameter did not specify a   Γöé
  1035. Γöé                         Γöévalid thread id.                        Γöé
  1036. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1037. Γöé"Unknown return code n"  ΓöéDosSuspendThread returned an            Γöé
  1038. Γöé                         Γöéundocumented return code of n           Γöé
  1039. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1040.  
  1041. Example: 
  1042.  
  1043.       Call RxSuspendThread(id)
  1044.       If (result = 'Suspended') Then
  1045.         Say 'Thread 'id' is temporarily suspended'
  1046.  
  1047. Results: 
  1048.  
  1049.      The thread number contained in the variable id is suspended.
  1050.  
  1051.  
  1052. ΓòÉΓòÉΓòÉ 3.4.8. RxSwitchTo ΓòÉΓòÉΓòÉ
  1053.  
  1054. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1055. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  1056. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1057.  
  1058. ΓöÇΓöÇΓöÇRXSWITCHTO(ΓöÇΓöÇ'session'ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1059.  
  1060.  
  1061. Switches the forground session to the the session named by session. 
  1062.  
  1063. RXSWITCHTO will attempt to locate a session, by name, that matches in any part 
  1064. of its name to the contiguous characters defined by session  For example, if 
  1065. session contains 'stem C', RXSWITCHTO will switch to the System Clock session, 
  1066. if it is active.  If you desire to specifiy a complete name, use 
  1067. RXQUERYSWITCHLIST to obtain the full names of all executing sessions. 
  1068.  
  1069. RXSWITCHTO returns 'Switch Entry not found' if it cannot find a session name to 
  1070. match session. 
  1071.  
  1072. Example: 
  1073.  
  1074.      Call RxSwitchTo '2.0'       /* try "OS/2 2.0 Desktop" */
  1075.      If  Result \= '' Then       /* probably 2.1 */
  1076.           Call RxSwitchTo 'Desktop'
  1077.  
  1078. Results: 
  1079.  
  1080.      The system switches to your OS/2 desktop, making it the active
  1081.      forground session.  Your REXX program continues to execute in
  1082.      the background.
  1083.  
  1084.  
  1085. ΓòÉΓòÉΓòÉ 3.4.9. RxThread ΓòÉΓòÉΓòÉ
  1086.  
  1087. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1088. Γöé.........ΓöéVisPro/REXXΓöé.......Γöé
  1089. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1090.  
  1091. ΓöÇΓöÇΓöÇRXTHREAD(ΓöÇΓöÇ'ProcName'ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1092.                              ΓöéΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉΓöé
  1093.                              Γöé         ΓöéΓöé
  1094.                              ΓööΓö┤, argΓöÇΓöÇΓöÇΓöÇΓö┤Γöÿ
  1095.  
  1096. Causes the SubProc called ProcName to start execution in its own separate 
  1097. thread. 
  1098.  
  1099. As many arguments as REXX allows (up to 16 currently) can be passed to the 
  1100. SubProc by specifying them after the SubProc name. 
  1101.  
  1102. The new thread runs asynchronously until it is suspended (RXSUSPENDTHREAD), is 
  1103. killed (RXKILLTHREAD), terminates of its own accord, or the parent session is 
  1104. closed. 
  1105.  
  1106. RXTHREAD returns the thread id if successful, otherwise it returns :- 
  1107.  
  1108. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1109. ΓöéReturn value             ΓöéReason                                  Γöé
  1110. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1111. Γöé"Out of memory"          ΓöéThere was not enough memory to start theΓöé
  1112. Γöé                         Γöéthread                                  Γöé
  1113. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1114. Γöé"Interrupt"              ΓöéThe system was interrupted during threadΓöé
  1115. Γöé                         Γöécreation and the thread was aborted     Γöé
  1116. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1117. Γöé"Protection violation"   ΓöéThe system encountered a protection     Γöé
  1118. Γöé                         Γöéviolation (accessing inaccesible memory Γöé
  1119. Γöé                         Γöéusually) while starting the thread. The Γöé
  1120. Γöé                         Γöéthread is aborted                       Γöé
  1121. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1122. Γöé"Too many threads"       ΓöéThe system could not create any more    Γöé
  1123. Γöé                         Γöéthreads. Check your THREADS= line in theΓöé
  1124. Γöé                         ΓöéCONFIG.SYS. It may be too low.          Γöé
  1125. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1126. Γöé"Unknown return code n"  ΓöéDosCreateThread returned an undocumentedΓöé
  1127. Γöé                         Γöéreturn code n                           Γöé
  1128. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1129.  
  1130. Note:  The value returned is the threadid required for use with other RxExtras 
  1131. thread functions. 
  1132.  
  1133. Note:  SubProcs started using RxThread CANNOT call other SubProcs or use global 
  1134. variables defined in VisPro/REXX. 
  1135.  
  1136. Note:  Global Variables such as those created by RxSetGlobal can be used. 
  1137.  
  1138. Note:  The author is working on removing these restrictions. 
  1139.  
  1140. Example: 
  1141.  
  1142.      tid = RxThread('SEARCH', window, listboxid, text)
  1143.  
  1144. Results: 
  1145.  
  1146.      tid will hold the thread id that was returned when the
  1147.      SubProc SEARCH was executed in parallel.
  1148.  
  1149.  
  1150. ΓòÉΓòÉΓòÉ <hidden> RxChangeThreadPriority (threadID, delta) ΓòÉΓòÉΓòÉ
  1151.  
  1152. Changes the priority of the thread id specified by the delta amount specified. 
  1153.  
  1154. The delta value must be in the range -31 to +31. 
  1155.  
  1156.  
  1157. ΓòÉΓòÉΓòÉ <hidden> RxChangeThreadPriority (threadID, 'Minimum') ΓòÉΓòÉΓòÉ
  1158.  
  1159. Lowers the priority of the thread id specified by the most possible (-31).
  1160.  
  1161. Only the first two characters of the second parameter are significant. 
  1162.  
  1163.  
  1164. ΓòÉΓòÉΓòÉ <hidden> RxChangeThreadPriority (threadID, 'Maximum') ΓòÉΓòÉΓòÉ
  1165.  
  1166. Raises the priority of the thread id specified by the most possible (+31).
  1167.  
  1168. Only the first two characters of the second parameter are significant. 
  1169.  
  1170.  
  1171. ΓòÉΓòÉΓòÉ <hidden> RxChangeThreadPriority (threadID, '') ΓòÉΓòÉΓòÉ
  1172.  
  1173. Raises the priority of the thread id specified by the most possible (+31). 
  1174.  
  1175.  
  1176. ΓòÉΓòÉΓòÉ <hidden> RxSetThreadClass (threadID, 'REGULAR') ΓòÉΓòÉΓòÉ
  1177.  
  1178. Sets the class of the specified thread id to REGULAR. This is the class of 
  1179. applications running in the background. The application with focus runs at 
  1180. FOREGROUNDSERVER 
  1181.  
  1182.  
  1183. ΓòÉΓòÉΓòÉ <hidden> RxSetThreadClass (threadID, 'IDLE') ΓòÉΓòÉΓòÉ
  1184.  
  1185. Sets the class of the specified thread id to IDLE. This is one step less 
  1186. important than a normal application. 
  1187.  
  1188.  
  1189. ΓòÉΓòÉΓòÉ <hidden> RxSetThreadClass (threadID, 'FOREGROUNDSERVER') ΓòÉΓòÉΓòÉ
  1190.  
  1191. Sets the class of the specified thread id to FOREGROUNDSERVER. This is the 
  1192. class of the applications that currently has focus, or a server thread needing 
  1193. higher than normal CPU. 
  1194.  
  1195.  
  1196. ΓòÉΓòÉΓòÉ <hidden> RxSetThreadClass (threadID, 'TIMECRITICAL') ΓòÉΓòÉΓòÉ
  1197.  
  1198. Sets the class of the specified thread id to TIMECRITICAL. This should be used 
  1199. very sparingly as it can make the foreground applcation unresponsive, since a 
  1200. TIMECRITICAL thread gets more of the CPU than any FOREGROUNDSERVER thread. 
  1201.  
  1202.  
  1203. ΓòÉΓòÉΓòÉ 3.5. ListBox Objects ΓòÉΓòÉΓòÉ
  1204.  
  1205. These APIs deal with PM ListBox Objects.  They require a PM REXX-based program 
  1206. in order to function. 
  1207.  
  1208.  
  1209. ΓòÉΓòÉΓòÉ 3.5.1. RxAddItemAtIndex ΓòÉΓòÉΓòÉ
  1210.  
  1211. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1212. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1213. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1214.  
  1215. ΓöÇΓöÇΓöÇRXADDITEMATINDEX(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ,ΓöÇΓöÇrowΓöÇΓöÇ,ΓöÇΓöÇvalueΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1216.  
  1217.  
  1218. Inserts the entry value at line row into ListBox lbid of Window winid. 
  1219.  
  1220. If either winid or lbid are invalid, the rexx error condition INCORRECT CALL TO 
  1221. ROUTINE is raised. 
  1222.  
  1223. RXADDITEMATINDEX returns the index that the item was inserted at if successful, 
  1224. otherwise it returns :- 
  1225.  
  1226. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1227. ΓöéReturn    ΓöéReason                                  Γöé
  1228. Γöévalue     Γöé                                        Γöé
  1229. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1230. Γöé-1        ΓöéThere was not enough memory to insert   Γöé
  1231. Γöé          Γöéthe item into the list box              Γöé
  1232. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1233. Γöé-2        ΓöéAn error occurred inserting the item    Γöé
  1234. Γöé          Γöéinto the listbox                        Γöé
  1235. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1236.  
  1237. Example: 
  1238.  
  1239.      Call RxAddtItemAtIndex window, 1000, 4, 'This is the fourth line'
  1240.  
  1241. Results: 
  1242.  
  1243.      The ListBox with ID=1000 in window window receives a new row 4,
  1244.      the contents of which are 'This is the fourth line'.  Rows 5 and
  1245.      higher are shifted down 1 row.
  1246.      The REXX special variable result contains 4.
  1247.  
  1248.  
  1249. ΓòÉΓòÉΓòÉ 3.5.2. RxGetItemFromListBox ΓòÉΓòÉΓòÉ
  1250.  
  1251. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1252. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1253. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1254.  
  1255. ΓöÇΓöÇΓöÇRXGETITEMFROMLISTBOX(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1256.  
  1257.  
  1258. Retrieves the first selected item from ListBox lbid of Window winid. 
  1259.  
  1260. If either winid or lbid are invalid, the REXX error condition INCORRECT CALL TO 
  1261. ROUTINE is raised. 
  1262.  
  1263. If no items are selected, RXGETITEMFROMLISTBOX returns an empty string ("").
  1264.  
  1265. If winid and/or lbid are invalid, RXGETITEMFROMLISTBOX raises an INCORRECT CALL 
  1266. TO ROUTINE error from within REXX. Otherwise, RXGETITEMFROMLISTBOX returns the 
  1267. selected item. 
  1268.  
  1269. Note:  The VisPro/Rexx API VpGetItemValue will only return up to 256 characters 
  1270. for the retrieved item.  RxGetItemFromListBox will exactly what is in the 
  1271. listbox. 
  1272.  
  1273. Example: 
  1274.  
  1275.      row = RxGetItemFromListBox(window, 1000)
  1276.  
  1277. Results: 
  1278.  
  1279.      The first selected item in ListBox 1000 of window window is
  1280.      retrieved and placed in the variable row.
  1281.  
  1282.  
  1283. ΓòÉΓòÉΓòÉ 3.5.3. RxGetItemFromListBoxAtIndex ΓòÉΓòÉΓòÉ
  1284.  
  1285. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1286. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1287. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1288.  
  1289. ΓöÇΓöÇΓöÇRXGETITEMFROMLISTBOXATINDEX(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ,ΓöÇΓöÇrowΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1290.  
  1291.  
  1292. Retrieves the line row from ListBox lbid of Window winid. 
  1293.  
  1294. If no item exists at line row, or winid or lbid are invalid, 
  1295. RXGETITEMFROMLISTBOXATINDEX returns an empty string ("").  If winid and/or lbid 
  1296. are invalid, RXGETITEMFROMLISTBOXATINDEX raises an INCORRECT CALL TO ROUTINE 
  1297. error from within REXX. Otherwise, RXGETITEMFROMLISTBOXATINDEX returns the item 
  1298. of choice. 
  1299.  
  1300. Note:  The VisPro/Rexx API VpGetItemValueAtIndex will only return up to 256 
  1301. characters for the retrieved item.  RxGetItemFromListBoxAtIndex will return 
  1302. whatever is in the listbox, with no limitations. 
  1303.  
  1304. Example: 
  1305.  
  1306.      row = RxGetItemFromListBoxAtIndex(window, 1000, 4)
  1307.  
  1308. Results: 
  1309.  
  1310.      If it exists, the item at line 4 in ListBox 1000 of window window
  1311.      is retrieved and placed in the variable row.
  1312.  
  1313.  
  1314. ΓòÉΓòÉΓòÉ 3.5.4. RxGetListBoxCount ΓòÉΓòÉΓòÉ
  1315.  
  1316. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1317. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1318. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1319.  
  1320. ΓöÇΓöÇΓöÇRXGETLISTBOXCOUNT(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1321.  
  1322.  
  1323. Retrieves the number of rows available in ListBox lbid of Window winid. 
  1324.  
  1325. If winid and/or lbid are invalid, RXGETLISTBOXCOUNT raises the INCORRECT CALL 
  1326. TO ROUTINE error condition from within REXX. Otherwise, RXGETLISTBOXCOUNT 
  1327. returns the number of available rows. 
  1328.  
  1329. Example: 
  1330.  
  1331.      items = RxListBoxCount(window, 1000)
  1332.  
  1333. Results: 
  1334.  
  1335.      The number of rows in ListBox 1000 of window window are placed
  1336.      in the variable items.
  1337.  
  1338.  
  1339. ΓòÉΓòÉΓòÉ 3.5.5. RxListBoxFromFile ΓòÉΓòÉΓòÉ
  1340.  
  1341. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1342. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1343. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1344.  
  1345. ΓöÇΓöÇΓöÇRXLISTBOXFROMFILE(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ,ΓöÇΓöÇfilenameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1346.  
  1347.  
  1348. Places the contents of file filename into ListBox lbid of Window winid. 
  1349.  
  1350. If winid and/or lbid and/or filename are invalid/inaccessible, 
  1351. RXLISTBOXFROMFILE raises an INCORRECT CALL TO ROUTINE condition from within 
  1352. REXX. Otherwise, RXLISTBOXFROMFILE returns a null string. 
  1353.  
  1354. Note:  This API is mutlithreaded.  The ListBox continues to have items added to 
  1355. it after control is returned to your program.  This makes this API faster than 
  1356. those suplied with VisPro/REXX or VX-REXX. 
  1357.  
  1358. Note:  For VisPro/Rexx, winid is passed to all events. 
  1359.  
  1360. Note:  This API appends to the end of any existing contents already in ListBox 
  1361. lbid. 
  1362.  
  1363. Example: 
  1364.  
  1365.      Call RxListBoxFromFile window, 1000, 'C:\Config.Sys'
  1366.  
  1367. Results: 
  1368.  
  1369.      The contents of C:\Config.Sys are placed into ListBox 1000 of
  1370.      window window.  The ListBox is populated while your program
  1371.      continues with other chores.
  1372.  
  1373.  
  1374. ΓòÉΓòÉΓòÉ 3.5.6. RxListBoxFromStem ΓòÉΓòÉΓòÉ
  1375.  
  1376. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1377. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1378. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1379.  
  1380. ΓöÇΓöÇΓöÇRXLISTBOXFROMSTEM(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ,ΓöÇΓöÇstemname.ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1381.  
  1382.  
  1383. Places the contents of stem stemname into ListBox lbid of Window winid.  The 
  1384. trailing period to stemname. is required; results are unpredictable if not 
  1385. supplied. 
  1386.  
  1387. stemname.0 must contain the count of items to be placed into ListBox lbid.  All 
  1388. other occurrences for stemname must be numeric, from 1 to n, where n is the 
  1389. number contained in stemname.0. 
  1390.  
  1391. If winid and/or lbid are invalid, RXLISTBOXFROMSTEM raises an INCORRECT CALL TO 
  1392. ROUTINE from within REXX. Otherwise, RXLISTBOXFROMSTEM returns an empty string 
  1393. (""). 
  1394.  
  1395. Note:  This API appends to the end of any existing contents already in ListBox 
  1396. lbid. 
  1397.  
  1398. Example: 
  1399.  
  1400.      MyStem.0 = 2
  1401.      MyStem.1 = 'This will be the 1st line added'
  1402.      MyStem.2 = 'This will be the 2nd line added'
  1403.      Call RxListBoxFromStem window, 1000, 'MyStem.'
  1404.  
  1405. Results: 
  1406.  
  1407.      The contents of ListBox 1000 of window window will have 2 new
  1408.      rows.  The rows will be:
  1409.  
  1410.           This will be the 1st line added
  1411.           This will be the 2nd line added
  1412.  
  1413.  
  1414. ΓòÉΓòÉΓòÉ 3.5.7. RxListBoxToFile ΓòÉΓòÉΓòÉ
  1415.  
  1416. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1417. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1418. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1419.  
  1420. ΓöÇΓöÇΓöÇRXLISTBOXTOFILE(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ,ΓöÇΓöÇfilenameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1421.  
  1422.  
  1423. Places the contents ListBox lbid of Window winid into file filename. 
  1424.  
  1425. If winid and/or lbid and/or filename are invalid/inaccessible, RXLISTBOXTOFILE 
  1426. raises the REXX INCORRECT CALL TO ROUTINE error condition. Otherwise, 
  1427. RXLISTBOXTOFILE returns an empty string (""). 
  1428.  
  1429. Note:  This API erases all contents of file filename before writing to it. 
  1430.  
  1431. Example: 
  1432.  
  1433.      Call RxListBoxToFile window, 1000, 'C:\MyData.Dat'
  1434.  
  1435. Results: 
  1436.  
  1437.      The contents of ListBox 1000 of window window are written to
  1438.      file C:\MyData.Dat.
  1439.  
  1440.  
  1441. ΓòÉΓòÉΓòÉ 3.5.8. RxListBoxToStem ΓòÉΓòÉΓòÉ
  1442.  
  1443. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1444. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1445. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1446.  
  1447. ΓöÇΓöÇΓöÇRXLISTBOXTOSTEM(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ,ΓöÇΓöÇstemname.ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1448.  
  1449.  
  1450. Places the contents of ListBox lbid of Window winid into stem stemname.  The 
  1451. trailing period to stemname. is required; results are unpredictable if not 
  1452. supplied. 
  1453.  
  1454. stemname.0 will contain the count of items to placed into it from ListBox lbid. 
  1455. All other occurrences for stemname will be numeric, from 1 to n, where n is the 
  1456. number contained in stemname.0. 
  1457.  
  1458. If winid and/or lbid are invalid, RXLISTBOXTOSTEM raises the REXX error 
  1459. condition INCORRECT CALL TO ROUTINE. Otherwise, RXLISTBOXTOSTEM returns an 
  1460. empty string (""). 
  1461.  
  1462. Note:  This API destroyes any existing contents already in stem stemname. 
  1463.  
  1464. Example: 
  1465.  
  1466.      Call RxListBoxToStem window, 1000, 'MyStem.'
  1467.  
  1468. Results: 
  1469.  
  1470.      The contents of ListBox 1000 of window window will be copied
  1471.      to stem MyStem.  Assuming there are 2 rows in ListBox 1000,
  1472.      MyStem.0 will contain 2, and occurrences will exist for MyStem.1
  1473.      and MyStem.2.
  1474.  
  1475.  
  1476. ΓòÉΓòÉΓòÉ 3.5.9. RxScrollListBox ΓòÉΓòÉΓòÉ
  1477.  
  1478. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1479. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1480. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1481.  
  1482. ΓöÇΓöÇΓöÇRXSCROLLISTBOX(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ,ΓöÇΓöÇnumLinesToScroll.ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1483.  
  1484.  
  1485. Scrolls the ListBox lbid of Window winid by numLinesToScroll lines. A negative 
  1486. value should be used to scroll up, a positive value to scroll the listbox down. 
  1487.  
  1488. If winid and/or lbid are invalid, RXSCROLLLISTBOX raises the REXX error 
  1489. condition INCORRECT CALL TO ROUTINE. 
  1490.  
  1491. if numLinesToScroll is not numeric, the listbox is simply not scrolled. 
  1492.  
  1493. Otherwise, RXSCROLLLISTBOX returns an empty string (""). 
  1494.  
  1495. Example: 
  1496.  
  1497.      Call RxScrollListBox window, 1000, -3
  1498.  
  1499. Results: 
  1500.  
  1501.      The contents of ListBox 1000 of window window will be scrolled
  1502.      up 3 lines
  1503.  
  1504.  
  1505. ΓòÉΓòÉΓòÉ 3.5.10. RxSearchItem ΓòÉΓòÉΓòÉ
  1506.  
  1507. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1508. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1509. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1510.  
  1511. Searches a listbox for text. Doesn't have to be an entire line, it can be text 
  1512. contained within one line of a listbox. 
  1513.  
  1514. RxSearchItem returns the line in the listbox that holds the text. 
  1515.  
  1516. ΓöÇΓöÇΓöÇRXSEARCHITEM(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ,ΓöÇΓö¼ΓöÇ''ΓöÇΓöÇΓöÇΓö¼ΓöÇ,ΓöÇΓöÇrowΓöÇΓöÇ,ΓöÇΓö¼ΓöÇ'F'ΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1517.                                       ΓööΓöÇmaskΓöÇΓöÿ           ΓööΓöÇ'B'ΓöÇΓöÿ
  1518.  
  1519.  
  1520. Searches ListBox lbid of Window winid, starting at line row, for a line 
  1521. containing the characters mask.  The search will procede forward or backward, 
  1522. depending on the use of 'F' or 'B', respectively. 
  1523.  
  1524. If winid and/or lbid are invalid, RXSEARCHITEM raises the REXX error condition 
  1525. INCORRECT CALL TO ROUTINE. Otherwise, RXSEARCHITEM returns the index number of 
  1526. the first matching line, or 0 if no lines were found to match mask. 0 is used 
  1527. to indicate no match. 
  1528.  
  1529. Note:  If NULL (i.e., '') is used for mask, the first item tested will match. 
  1530. RXSEARCHITEM can therefore be used to retrieve the index of the last item in 
  1531. ListBox lbid. 
  1532.  
  1533. Example: 
  1534.  
  1535.      JohnIsAt = RxSearchItem window, 1000, 'John Smith', 1, 'F'
  1536.  
  1537. Results: 
  1538.  
  1539.      The contents of ListBox 1000 of window window will be searched,
  1540.      starting at row 1 and proceding in a forward direction, looking
  1541.      for any row that contains the characters 'John Smith'.  If found,
  1542.      variable JohnIsAt will contain the index (row number) of the
  1543.      matching entry.  Otherwise, JohnIsAt will contain 0.
  1544.  
  1545.  
  1546. ΓòÉΓòÉΓòÉ 3.6. PushButton Objects ΓòÉΓòÉΓòÉ
  1547.  
  1548. These APIs deal with PM PushButton Objects.  They require a PM REXX-based 
  1549. program in order to function. 
  1550.  
  1551.  
  1552. ΓòÉΓòÉΓòÉ 3.6.1. RxMorphButtonToIcon ΓòÉΓòÉΓòÉ
  1553.  
  1554. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1555. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1556. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1557.  
  1558. ΓöÇΓöÇΓöÇRXMORPHBUTTONTOICON(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇpbidΓöÇΓöÇ,ΓöÇΓöÇΓö¼ΓöÇVpLoadPictureHandleΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1559.                                               ΓööΓöÇDLLnameΓöÇΓöÇ,ΓöÇΓöÇresourceΓöÇΓöÿ
  1560.  
  1561.  
  1562. Converts a standard PushButton object pbid of window winid into a "Toolbox" 
  1563. button. 
  1564.  
  1565. If any arguments are invalid or inaccessible, RXMORPHBUTTONTOICON raises the 
  1566. REXX error condition INCORRECT CALL TO ROUTINE. Otherwise, RXMORPHBUTTONTOICON 
  1567. returns an empty string (""). 
  1568.  
  1569. Note:  The use of VpLoadPictureHandle requires VisPro/Rexx.  You must call 
  1570. VpLoadPicture and obtain the handle. 
  1571.  
  1572. Note:  The use of DLLName, resource can be used by any PM REXX-based program, 
  1573. and retrieves the requested icon.  If DLLname is in your LIBPATH, do not 
  1574. specify an extension of '.DLL'. 
  1575.  
  1576. Note:  In order to make the window appear to start-up with your required icons, 
  1577. you should call RXMORPHBUTTONTOICON immediately at entry to your program, when 
  1578. the window is being opened.  Otherwise, the user will see the buttons change 
  1579. appearance. 
  1580.  
  1581. Example: 
  1582.  
  1583.      value = VpLoadPicture('FILE','C:\TEMP\OS2CMD.ICO')
  1584.      Call RxMorphButtonToIcon Hwindow, 2000, value
  1585.  
  1586. Results: 
  1587.  
  1588.      The PushButton with ID=2000 in window Hwindow is changed to an
  1589.      OS/2 Command-Prompt icon (stored previously in C:\TEMP\OS2CMD.ICO).
  1590.  
  1591.  
  1592. ΓòÉΓòÉΓòÉ 3.7. SpinButton Objects ΓòÉΓòÉΓòÉ
  1593.  
  1594. These APIs deal with PM SpinButton Objects.  They require a PM REXX-based 
  1595. program in order to function. 
  1596.  
  1597.  
  1598. ΓòÉΓòÉΓòÉ 3.7.1. RxSetSpinButtonCharRange ΓòÉΓòÉΓòÉ
  1599.  
  1600. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1601. Γöé.........ΓöéVisPro/REXXΓöé.......Γöé
  1602. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1603.  
  1604. ΓöÇΓöÇΓöÇRXSETSPINBUTTONCHARRANGE(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇsbidΓöÇΓöÇ,ΓöÇΓöÇlowΓöÇΓöÇ,ΓöÇΓöÇhighΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1605.  
  1606.  
  1607. Sets the SpinButton sbid of Window winid to include the ASCII character range 
  1608. low through high. Only the first character of low and high are used. 
  1609.  
  1610. If winid and/or sbid are invalid, RXSETSPINBUTTONCHARRANGE raises the REXX 
  1611. error condition INCORRECT CALL TO ROUTINE. Otherwise, RXSETSPINBUTTONCHARRANGE 
  1612. returns an empty string (""). 
  1613.  
  1614. Example: 
  1615.  
  1616.      Call RxSetSpinButtonCharRange Hwindow, 4000, 'a', 'z'
  1617.  
  1618. Results: 
  1619.  
  1620.      The SpinButton with ID=4000 in window Hwindow now contains the
  1621.      selection character set 'a' through 'z', inclusive.
  1622.  
  1623.  
  1624. ΓòÉΓòÉΓòÉ 3.7.2. RxSetSpinButtonRangeFromStem ΓòÉΓòÉΓòÉ
  1625.  
  1626. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1627. Γöé.........ΓöéVisPro/REXXΓöé.......Γöé
  1628. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1629.  
  1630. ΓöÇΓöÇΓöÇRXSETSPINBUTTONRANGEFROMSTEM(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇsbidΓöÇΓöÇ,ΓöÇΓöÇstemname.ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1631.  
  1632.  
  1633. Sets the SpinButton sbid of Window winid to include the values found in stem 
  1634. stemname.  The trailing period to stemname. is required; results are 
  1635. unpredictable if not supplied. 
  1636.  
  1637. stemname.0 must contain the number of values to assign to SpinButton sbid. All 
  1638. other occurences of stemname should contain the values desired for sbid, and be 
  1639. in the range 1 to n, where n is the value contained in stemname.0. 
  1640.  
  1641. If winid and/or sbid are invalid, RXSETSPINBUTTONRANGEFROMSTEM raises the REXX 
  1642. error condition INCORRECT CALL TO ROUTINE. Otherwise, 
  1643. RXSETSPINBUTTONRANGEFROMSTEM returns an empty string (""). 
  1644.  
  1645. Example: 
  1646.  
  1647.      days.0 =     7;   days.1 = 'Sun';   days.2 = 'Mon';   days.3 = 'Tue';
  1648.      days.4 = 'Wed';   days.5 = 'Thu';   days.6 = 'Fri';   days.7 = 'Sat';
  1649.      Call RxSetSpinButtonRangeFromStem Hwindow, 4000, 'days.'
  1650.  
  1651. Results: 
  1652.  
  1653.      The SpinButton with ID=4000 in window Hwindow now contains the
  1654.      selection character set 'Sun', 'Mon', 'Tue', ...
  1655.  
  1656.  
  1657. ΓòÉΓòÉΓòÉ 3.7.3. RxSetSpinButtonRangeWithIncrement ΓòÉΓòÉΓòÉ
  1658.  
  1659. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1660. Γöé.........ΓöéVisPro/REXXΓöé.......Γöé
  1661. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1662.  
  1663. ΓöÇΓöÇΓöÇRXSETSPINBUTTONRANGEWITHINCREMENT(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇsbidΓöÇΓöÇ,ΓöÇΓöÇlowΓöÇΓöÇ,ΓöÇΓöÇhighΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇ
  1664.  
  1665.  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇincrementΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ)ΓöÇΓöÇ
  1666.  
  1667.  
  1668. Sets the SpinButton sbid of Window winid to the numeric range of low to high, 
  1669. in incriments of incriment. 
  1670.  
  1671. If winid and/or sbid are invalid, RXSETSPINBUTTONRANGEWITHINCRIMENT raises the 
  1672. REXX error condition INCORRECT CALL TO ROUTINE. Otherwise, 
  1673. RXSETSPINBUTTONRANGEWITHINCRIMENT returns an empty string (""). 
  1674.  
  1675. Example: 
  1676.  
  1677.      Call RxSetSpinButtonRangeWithIncrment Hwindow, 4000, 0, 10000, 2000
  1678.  
  1679. Results: 
  1680.  
  1681.      The SpinButton with ID=4000 in window Hwindow now contains the
  1682.      selection numeric set 0, 2000, 4000, 6000, 8000, and 10000.
  1683.  
  1684. Note:  The maximum number of discrete values that this function can store in a 
  1685. spin button is 4096. 
  1686.  
  1687.  
  1688. ΓòÉΓòÉΓòÉ 3.8. Window Objects ΓòÉΓòÉΓòÉ
  1689.  
  1690. These APIs deal with OS/2 Windows and PM window types & hierarchies.  They 
  1691. require a window handle, therefore, a PM REXX-based program in order to 
  1692. function. 
  1693.  
  1694.  
  1695. ΓòÉΓòÉΓòÉ 3.8.1. RxMaximize ΓòÉΓòÉΓòÉ
  1696.  
  1697. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1698. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1699. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1700.  
  1701. ΓöÇΓöÇΓöÇRXMAXIMIZE(ΓöÇΓöÇwinidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1702.  
  1703.  
  1704. Causes window winid to become maximized. 
  1705.  
  1706. If winid is invalid, RXMAXIMIZE raises the REXX error condition INCORRECT CALL 
  1707. TO ROUTINE. 
  1708.  
  1709. If an error occurs, RXMAXIMIZE returns "Error occured trying to maximize", 
  1710. otherwise, RXMAXIMIZE returns an empty string (""). 
  1711.  
  1712. Example: 
  1713.  
  1714.      Call RxMaximize Hwindow
  1715.  
  1716. Results: 
  1717.  
  1718.      The window Hwindow is maximized.
  1719.  
  1720.  
  1721. ΓòÉΓòÉΓòÉ 3.8.2. RxMinimize ΓòÉΓòÉΓòÉ
  1722.  
  1723. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1724. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1725. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1726.  
  1727. ΓöÇΓöÇΓöÇRXMINIMIZE(ΓöÇΓöÇwinidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1728.  
  1729.  
  1730. Causes window winid to become minimized. 
  1731.  
  1732. If winid is invalid, RXMINIMIZE raises the REXX error condition INCORRECT CALL 
  1733. TO ROUTINE. 
  1734.  
  1735. If RXMINIMIZE encounters an error, it returns "Error trying to minimize", 
  1736. otherwise, RXMINIMIZE returns an empty string (""). 
  1737.  
  1738. Example: 
  1739.  
  1740.      Call RxMinimize Hwindow
  1741.  
  1742. Results: 
  1743.  
  1744.      The window Hwindow is minimized.
  1745.  
  1746.  
  1747. ΓòÉΓòÉΓòÉ 3.8.3. RxQueryClassName ΓòÉΓòÉΓòÉ
  1748.  
  1749. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1750. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1751. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1752.  
  1753. ΓöÇΓöÇΓöÇRXQUERYCLASSNAME(ΓöÇΓöÇwinidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1754.  
  1755.  
  1756. Returns the Class Name for window winid. 
  1757.  
  1758. If winid is invalid, RXQUERYCLASSNAME raises the REXX error condition INCORRECT 
  1759. CALL TO ROUTINE. 
  1760.  
  1761. If an error occurs, RXQUERYCLASSNAME returns "Error trying to query classs 
  1762. name", otherwise, RXQUERYCLASSNAME returns the PM Class Name for the window. 
  1763.  
  1764. Example: 
  1765.  
  1766.      WinClass =  RxQueryClassName(Hwindow)
  1767.  
  1768. Results: 
  1769.  
  1770.      The Class Name of window Hwindow is placed in the variable WinClass.
  1771.  
  1772.  
  1773. ΓòÉΓòÉΓòÉ 3.8.4. RxQueryWindow ΓòÉΓòÉΓòÉ
  1774.  
  1775. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1776. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1777. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1778.  
  1779. ΓöÇΓöÇΓöÇRXQUERYWINDOW(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓö¼ΓöÇ'Owner'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ)ΓöÇΓöÇΓöÇ
  1780.                               Γö£ΓöÇ'Parent'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1781.                               Γö£ΓöÇ'Next'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1782.                               Γö£ΓöÇ'Prev'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1783.                               Γö£ΓöÇ'Top'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1784.                               Γö£ΓöÇ'Bottom'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1785.                               Γö£ΓöÇ'NextTop'ΓöÇΓöÇΓöÇΓöÇΓöñ
  1786.                               Γö£ΓöÇ'PrevTop'ΓöÇΓöÇΓöÇΓöÇΓöñ
  1787.                               ΓööΓöÇ'FrameOwner'ΓöÇΓöÿ
  1788.  
  1789.  
  1790. Returns the window handle for the requested related window to winid. 
  1791.  
  1792. Double-click on each window relation above for further information. 
  1793.  
  1794. If winid is invalid, RXQUERYWINDOW raises the REXX error condition INCORRECT 
  1795. CALL TO ROUTINE. Otherwise, RXQUERYWINDOW returns the requested PM window 
  1796. handle, in decimal. 
  1797.  
  1798. Example: 
  1799.  
  1800.      WinParent =  RxQueryWindow(Hwindow, 'Parent')
  1801.  
  1802. Results: 
  1803.  
  1804.      The parent window handle, in decimal, for window Hwindow
  1805.      is placed in the variable WinParent.
  1806.  
  1807.  
  1808. ΓòÉΓòÉΓòÉ 3.8.5. RxRestore ΓòÉΓòÉΓòÉ
  1809.  
  1810. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1811. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1812. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1813.  
  1814. ΓöÇΓöÇΓöÇRXRESTORE(ΓöÇΓöÇwinidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1815.  
  1816. Restores window winid to its normal state after being maximized or minimized. 
  1817.  
  1818. If winid is invalid, RXRESTORE raises the REXX error condition INCORRECT CALL 
  1819. TO ROUTINE. 
  1820.  
  1821. If an error occurs, RXRESTORE returns "Error trying to restore", otherwise, 
  1822. RXRESTORE restores the requested PM window, and returns an empty string (""). 
  1823.  
  1824. Example: 
  1825.  
  1826.      Call  RxRestore(Hwindow)
  1827.  
  1828. Results: 
  1829.  
  1830.      Restores the window Hwindow.
  1831.  
  1832.  
  1833. ΓòÉΓòÉΓòÉ 3.8.6. RxSetIcon ΓòÉΓòÉΓòÉ
  1834.  
  1835. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1836. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1837. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1838.  
  1839. ΓöÇΓöÇΓöÇRXSETICON(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇΓö¼ΓöÇVpLoadPictureHandleΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1840.                            ΓööΓöÇDLLnameΓöÇΓöÇ,ΓöÇΓöÇresourceΓöÇΓöÿ
  1841.  
  1842.  
  1843. Sets the icon for a window. 
  1844.  
  1845. This icon is the one used when a window is minimized. 
  1846.  
  1847. If winid is invalid, RXSETICON raises the REXX error condition INCORRECT CALL 
  1848. TO ROUTINE. 
  1849.  
  1850. If an error occurs loading the icon from a DLL, RXSETICON returns "Error 
  1851. loading icon from DLL". 
  1852.  
  1853. If an error occurs setting the icon, RXSETICON returns "Error setting icon". 
  1854.  
  1855. Otherwise RXSETICON returns an empty string (""). 
  1856.  
  1857. Example: 
  1858.  
  1859.      value = VpLoadPicture('FILE', 'C:\TEMP.ICO');
  1860.      FrameWindow = RxQueryWindow(RxQueryWindow(window, 'parent'), 'parent')
  1861.      Call  RxSetIcon(FrameWindow, value)
  1862.  
  1863. Results: 
  1864.  
  1865.      Loads an icon from C:\TEMP.ICO
  1866.      Calculates the Frame Window (the one that the user interacts with)
  1867.         from the window passed to a VisPro/REXX event
  1868.      Sets the minimized icon for the window passed.
  1869.  
  1870.  
  1871. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'Owner') ΓòÉΓòÉΓòÉ
  1872.  
  1873. Requests the Owner window handle of winid.  The Owner window is the one which 
  1874. window winid is dependent upon.  Quite frequently, this is the same as 
  1875. 'Parent'. 
  1876.  
  1877.  
  1878. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'Parent') ΓòÉΓòÉΓòÉ
  1879.  
  1880. Requests the Parent window handle of winid.  The Parent window is the one that 
  1881. causes window winid to be initialized. 
  1882.  
  1883.  
  1884. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'Next') ΓòÉΓòÉΓòÉ
  1885.  
  1886. Requests the Next window handle, in z-order, of winid.  This is the next window 
  1887. at the same "level" as window winid. 
  1888.  
  1889.  
  1890. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'Prev') ΓòÉΓòÉΓòÉ
  1891.  
  1892. Requests the Previous window handle, in z-order, of winid.  This is the 
  1893. previous window at the same "level" as window winid. 
  1894.  
  1895.  
  1896. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'Top') ΓòÉΓòÉΓòÉ
  1897.  
  1898. Requests the Topmost (first) "child" window handle of winid.  This is the first 
  1899. window that window winid caused to be initialized. 
  1900.  
  1901.  
  1902. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'Bottom') ΓòÉΓòÉΓòÉ
  1903.  
  1904. Requests the Bottommost (last) "child" window handle of winid.  This is the 
  1905. last window that window winid caused to be initialized. 
  1906.  
  1907.  
  1908. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'NextTop') ΓòÉΓòÉΓòÉ
  1909.  
  1910. Requests the next window, in z-order, of the owner window hierarchy for winid. 
  1911. See 'Owner'. 
  1912.  
  1913.  
  1914. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'PrevTop') ΓòÉΓòÉΓòÉ
  1915.  
  1916. Requests the previous window, in enumeration order defined by NextTop, of the 
  1917. owner window hierarchy for winid.  See 'Owner'. 
  1918.  
  1919.  
  1920. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'FrameOwner') ΓòÉΓòÉΓòÉ
  1921.  
  1922. Requests the owner of winid, normalized so that it shares the same window as 
  1923. its Parent. 
  1924.  
  1925.  
  1926. ΓòÉΓòÉΓòÉ 3.9. Free Form window Objects ΓòÉΓòÉΓòÉ
  1927.  
  1928. These APIs deal with VisPro/REXX Free Form Window Objects.  They require a PM 
  1929. REXX-based program in order to function. 
  1930.  
  1931.  
  1932. ΓòÉΓòÉΓòÉ 3.9.1. RxDrawBitmap ΓòÉΓòÉΓòÉ
  1933.  
  1934. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1935. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1936. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1937.  
  1938. ΓöÇΓöÇΓöÇRXDRAWBITMAP(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇffidΓöÇΓöÇ,ΓöÇΓöÇΓö¼ΓöÇVpLoadPictureHandleΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1939.                                        ΓööΓöÇDLLnameΓöÇΓöÇ,ΓöÇΓöÇresourceΓöÇΓöÿ
  1940.  
  1941.  
  1942. Draws a bitmap in a free form window of id ffid in window winid. 
  1943.  
  1944. RXDRAWBITMAP will stretch the bitmap to take up the entire size of the free 
  1945. form window. 
  1946.  
  1947. If any arguments are invalid or inaccessible, RXDRAWBITMAP raises the REXX 
  1948. error condition INCORRECT CALL TO ROUTINE. 
  1949.  
  1950. If there is an error loading the bitmap from a DLL, RXDRAWBITMAP will return 
  1951. "Error loading bitmap from DLL". 
  1952.  
  1953. Otherwise, RXDRAWBITAMP returns an empty string (""). 
  1954.  
  1955. Note:  The use of VpLoadPictureHandle requires VisPro/Rexx.  You must call 
  1956. VpLoadPicture and obtain the handle. 
  1957.  
  1958. Note:  The use of DLLName, resource can be used by any PM REXX-based program, 
  1959. and retrieves the requested bitmap.  If DLLname is in your LIBPATH, do not 
  1960. specify an extension of '.DLL'. 
  1961.  
  1962. Example: 
  1963.  
  1964.      value = VpLoadPicture('FILE','C:\OS2\BITMAP\OS2LOGO.BMP')
  1965.      Call RxDrawBitmap window, 2000, value
  1966.  
  1967. Results: 
  1968.  
  1969.      The Free From window with ID=2000 in window window has the OS2LOGO bitmap drawn inside it.
  1970.  
  1971. Note:  This API may work with other window types, it just has not been tested 
  1972. with them. 
  1973.  
  1974.  
  1975. ΓòÉΓòÉΓòÉ 3.10. Clipboard Objects ΓòÉΓòÉΓòÉ
  1976.  
  1977. These APIs deal with the OS/2 Presentation Manager clipboard.  They require a 
  1978. PM REXX-based program in order to function. 
  1979.  
  1980.  
  1981. ΓòÉΓòÉΓòÉ 3.10.1. RxAppendClipboardText ΓòÉΓòÉΓòÉ
  1982.  
  1983. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1984. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1985. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1986.  
  1987. ΓöÇΓöÇΓöÇRXAPPENDCLIPBOARDTEXT(ΓöÇΓöÇTextΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1988.  
  1989.  
  1990. This function appends the text passed to the current contents of the clipboard. 
  1991.  
  1992. RXAPPENDCLIPBOARDTEXT returns the text previously in the clipboard if 
  1993. successful. 
  1994.  
  1995. If there is an error opening the clipboard, RXAPPENDCLIPBOARDTEXT returns 
  1996. "Error opening the clipboard". 
  1997.  
  1998. If there is no textual data in the clipboard, RXAPPENDCLIPBOARDTEXT sets the 
  1999. clipboard to contain the text passed. 
  2000.  
  2001. If there is an error setting the clipboard data, RXAPPENDCLIPBOARDTEXT returns 
  2002. "Error setting clipboard data". 
  2003.  
  2004. If there is not one valid string as the argument to RXAPPENDCLIPBOARDTEXT, the 
  2005. REXX error condition INCORRECT CALL TO ROUTINE is raised. 
  2006.  
  2007. Example: 
  2008.  
  2009.      PrevText = RxAppendClipboardText("Stuff to add")
  2010.      Say 'The contents of the clipboard were "'PrevText'", and are now "'RxQueryClipboardText()'".'
  2011.  
  2012. Results: 
  2013.  
  2014.      The contents of the clipboard were "ABCD", and are now "ABCDStuff to add".
  2015.  
  2016. Note:  To get multiple lines into the clipboard, you should use a carriage 
  2017. return and linefeed combination at the end of the string. This can be achieved 
  2018. by the following code sample :- 
  2019.  
  2020.      CrLfString = OldString || d2c(13) || d2c(10)
  2021.  
  2022.  
  2023. ΓòÉΓòÉΓòÉ 3.10.2. RxQueryClipboardText ΓòÉΓòÉΓòÉ
  2024.  
  2025. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2026. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2027. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2028.  
  2029. ΓöÇΓöÇΓöÇRXQUERYCLIPBOARDTEXT()ΓöÇΓöÇΓöÇ
  2030.  
  2031.  
  2032. This function queries the current content of the clipboard. 
  2033.  
  2034. RXQUERYCLIPBOARDTEXT returns the text currently in the clipboard if successful. 
  2035.  
  2036. If there is an error opening the clipboard, RXQUERYCLIPBOARDTEXT returns "Error 
  2037. opening the clipboard". 
  2038.  
  2039. If there is no textual data in the clipboard, RXQUERYCLIPBOARD returns an empty 
  2040. string (""). 
  2041.  
  2042. Example: 
  2043.  
  2044.      Text = RxQueryClipboardText()
  2045.      Say 'The contents of the clipboard are "'Text'".'
  2046.  
  2047. Results: 
  2048.  
  2049.      The contents of the clipboard are "This is in the clipboard".
  2050.  
  2051.  
  2052. ΓòÉΓòÉΓòÉ 3.10.3. RxSetClipboardText ΓòÉΓòÉΓòÉ
  2053.  
  2054. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2055. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2056. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2057.  
  2058. ΓöÇΓöÇΓöÇRXSETCLIPBOARDTEXT(ΓöÇΓöÇTextΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2059.  
  2060.  
  2061. This function sets the current content of the clipboard. 
  2062.  
  2063. RXSETCLIPBOARDTEXT returns "Clipboard set" if successful. 
  2064.  
  2065. If there is an error opening the clipboard, RXSETCLIPBOARDTEXT returns "Error 
  2066. opening the clipboard". 
  2067.  
  2068. If there is an error putting the data into the clipboard, RXSETCLIPBOARDTEXT 
  2069. returns "Error setting clipboard data". 
  2070.  
  2071. If there is not one valid string as the argument to RXSETCLIPBOARDTEXT, the 
  2072. REXX error condition INCORRECT CALL TO ROUTINE is raised. 
  2073.  
  2074. Example: 
  2075.  
  2076.      Say RxSetClipboardText("New text for the clipboard")
  2077.      Say 'The contents of the clipboard are now "'RxQueryClipboardText()'".'
  2078.  
  2079. Results: 
  2080.  
  2081.      Clipboard Set
  2082.      The contents of the clipboard are now "New text for the clipboard".
  2083.  
  2084.  
  2085. ΓòÉΓòÉΓòÉ 4. RxExtras.LIB ΓòÉΓòÉΓòÉ
  2086.  
  2087. RxExtras.LIB is a library file for use in C programming. 
  2088.  
  2089. If you want to use some of the functions in RxExtras in your own C code, you 
  2090. need to link with RxExtras.LIB when you are building your application. 
  2091.  
  2092. All functions exported from RxExtras.LIB are callable from REXX and therefore 
  2093. have the following function prototype :- 
  2094.  
  2095.    ULONG Name(PSZ pszFnName,
  2096.               ULONG ulArgc,
  2097.               RXSTRING rxArgv[],
  2098.               PSZ pszQName,
  2099.               PRXSTRING prxReturn)
  2100.  
  2101. The following is a list of all functions exported in RxExtras.LIB 
  2102.  
  2103.  o RxRead 
  2104.  
  2105.  o RxWrite 
  2106.  
  2107.  o RxBootDrive 
  2108.  
  2109.  o RxVolumeLabel 
  2110.  
  2111.  o RxVarDump 
  2112.  
  2113.  o RxStemCopy 
  2114.  
  2115.  o RxExtra 
  2116.  
  2117.  o RxSort 
  2118.  
  2119.  o RxSwitchTo 
  2120.  
  2121.  o RxQuerySwitchlist 
  2122.  
  2123.  o RxListBoxFromFile 
  2124.  
  2125.  o RxListBoxFromStem 
  2126.  
  2127.  o RxQueryDriveType 
  2128.  
  2129.  o RxSearchPath 
  2130.  
  2131.  o RxGetItemFromListBox 
  2132.  
  2133.  o RxSetSpinButtonRangeWithIncrement 
  2134.  
  2135.  o RxSetSpinButtonCharRange 
  2136.  
  2137.  o RxSetSpinButtonRangeFromStem 
  2138.  
  2139.  o RxGetItemFromListBoxAtIndex 
  2140.  
  2141.  o RxSetGlobal 
  2142.  
  2143.  o RxGetGlobal 
  2144.  
  2145.  o RxGetListBoxCount 
  2146.  
  2147.  o RxListBoxToFile 
  2148.  
  2149.  o RxListBoxToStem 
  2150.  
  2151.  o RxAddItemAtIndex 
  2152.  
  2153.  o RxMorphButtonToIcon 
  2154.  
  2155.  o RxSearchItem 
  2156.  
  2157.  o RxSetAccelTable 
  2158.  
  2159.  o RxQueryAccelTable 
  2160.  
  2161.  o RxQueryWindow 
  2162.  
  2163.  o RxQueryClassName 
  2164.  
  2165.  o RxQueryFonts 
  2166.  
  2167.  o RxLineCount 
  2168.  
  2169.  o RxMaximize 
  2170.  
  2171.  o RxMinimize 
  2172.  
  2173.  o RxRestore 
  2174.  
  2175.  o RxThread 
  2176.  
  2177.  o RxKillThread 
  2178.  
  2179.  o RxSuspendThread 
  2180.  
  2181.  o RxResumeThread 
  2182.  
  2183.  o RxSetThreadClass 
  2184.  
  2185.  o RxChangeThreadPriority 
  2186.  
  2187.  o RxSetIcon 
  2188.  
  2189.  o RxDrawBitmap 
  2190.  
  2191.  
  2192. ΓòÉΓòÉΓòÉ 5. RxExtras.CMD ΓòÉΓòÉΓòÉ
  2193.  
  2194. RxExtras.CMD is a command file that will test all parts of RxExtras that can be 
  2195. run from the command line. 
  2196.  
  2197. A copy of this file is included here in case you delete it. You can easily copy 
  2198. the file from the Services->Copy menu item on the action bar and then paste it 
  2199. back into your favourite editor. 
  2200.  
  2201.  
  2202. ΓòÉΓòÉΓòÉ 5.1. RxExtras.CMD - Source ΓòÉΓòÉΓòÉ
  2203.  
  2204. /* RxExtras - test for all functions in RxExtras.DLL */
  2205. Address CMD
  2206. /* rcy =  RxFuncDrop('RxExtra') */
  2207.  
  2208. If RxFuncQuery('RxExtra') <> 0 Then
  2209.     rcy = RxFuncAdd('RxExtra', 'RxExtras', 'RxExtra')
  2210.  
  2211. Call RxExtra "Drop" /* Drop everything */
  2212. rcy = RxFuncAdd('RxExtra', 'RxExtras', 'RxExtra')
  2213. Say 'Using version 'RxExtra("Load")' of RxExtras'
  2214.  
  2215. Say
  2216. Say "Testing RxBootDrive and RxRead..."
  2217. Call RxRead 'stem.', RxBootDrive()":"'\CONFIG.SYS'
  2218. Say "Your Config.Sys file should now appear"
  2219. "@PAUSE"
  2220. Do i = 1 to stem.0
  2221.    Say stem.i
  2222. end /* do */
  2223. "@PAUSE"
  2224.  
  2225. Say
  2226. Say "Testing RxBootDrive by itself"
  2227. Say 'Your bootdrive is 'RxBootDrive()":"
  2228. "@PAUSE"
  2229.  
  2230. temp.0 = 5
  2231. temp.1 = "This is a test file"
  2232. temp.2 = "With this ring, I thee bed"
  2233. temp.3 = "The worlds smallest handcuff"
  2234. temp.4 = "How to win fiends and affluent people"
  2235. temp.5 = "### The last line ###"
  2236.  
  2237. Say
  2238. Say "Testing RxWrite by writing 5 lines to \TEMP.DAT"
  2239. Call RxWrite "temp.", "\temp.dat"
  2240. Say "Here is \TEMP.DAT"
  2241. "@type \temp.dat | more"
  2242. "@PAUSE"
  2243. "@DEL \temp.dat"
  2244.  
  2245. Say
  2246. Say "Testing RxVolumeLabel"
  2247. Say "Label of C is "RxVolumeLabel("C")
  2248. "@PAUSE"
  2249.  
  2250. Say
  2251. Drop stem.
  2252. Drop temp.
  2253. temp.1 = 1
  2254. temp.testing = "Testing is on"
  2255. temp.2 = 3
  2256. temp.testing.1 = "Life be in it"
  2257. Say "Testing RxVarDump - dumping all 'local' variables"
  2258. Call RxVarDump 'vars.'
  2259. Do i = 1 to vars.0
  2260.   Say 'Variable Name:"'vars.i.name'" has the value: "'vars.i.value'"'
  2261. End
  2262. Drop vars.
  2263. "@PAUSE"
  2264.  
  2265. Say
  2266. Say "Testing RxStemCopy"
  2267. Say "Copy all variables from temp. to temp2."
  2268. Say "See RxVarDump above for temp. variables"
  2269.  
  2270. Call RxStemCopy "temp.", "temp2."
  2271.  
  2272. Say "Now we have..."
  2273. Call RxVarDump 'vars.'
  2274. Do i = 1 to vars.0
  2275.   Say 'Variable Name:"'vars.i.name'" has the value: "'vars.i.value'"'
  2276. End
  2277. Drop vars.
  2278. "@PAUSE"
  2279.  
  2280. Say
  2281. Say "Testing RxSort"
  2282. temp.0 = 16
  2283. temp.1 = "This is a list"
  2284. temp.2 = "a List should be sorted"
  2285. temp.3 = "upper and Lowercase"
  2286. temp.4 = "$trange"
  2287. temp.5 = "#unny"
  2288. temp.6 = "@nd unusual"
  2289. temp.7 = "12345"
  2290. temp.8 = "123456"
  2291. temp.9 = "One isthe 9"
  2292. temp.10 = "Ten green bottles 10"
  2293. temp.11 = "Legs 11"
  2294. temp.12 = "And then some 12"
  2295. temp.13 = "Hollow weeing 13"
  2296. temp.14 = "Only 14"
  2297. temp.15 = "15"
  2298. temp.16 = "The last line!"
  2299. Say
  2300. Say "The unsorted list is..."
  2301. Say Copies('-', 50)
  2302. Do i = 1 to temp.0
  2303.     Say temp.i
  2304. end /* do */
  2305. Say Copies('-', 50)
  2306. "@PAUSE"
  2307. Say
  2308. Say "Sorting in descending order gives..."
  2309. Call RxSort 'temp.', 'Descending'
  2310. Say Copies('-', 50)
  2311. Do i = 1 to temp.0
  2312.     Say temp.i
  2313. end /* do */
  2314. Say Copies('-', 50)
  2315. "@PAUSE"
  2316. Say
  2317. Say "Sorting in ascending order gives..."
  2318. Call RxSort 'temp.', 'Asc'
  2319. Say Copies('-', 50)
  2320. Do i = 1 to temp.0
  2321.     Say temp.i
  2322. end /* do */
  2323. Say Copies('-', 50)
  2324. "@PAUSE"
  2325.  
  2326. Say
  2327. Say "Testing RxSwitchTo"
  2328. Say "Switching to the desktop, hit Ctrl-Alt-Shift-O to see developers"
  2329. /* RxSwitchTo works by matching as much of the string as you give it
  2330.  * to the first session.
  2331.  * i.e. Call RxSwitchTo "System C"
  2332.  * Will switch to the system clock.
  2333.  */
  2334. Call RxSwitchTo "OS"
  2335. If POS("Switch", result) <> 0 Then Do /* probably 2.1 */
  2336.   Call RxSwitchTo "Desktop"
  2337. End
  2338. "@PAUSE"
  2339.  
  2340. Say
  2341. Say "Testing RxQuerySwitchListo"
  2342. Say "The programs running should now appear."
  2343. Call RxQuerySwitchList "temp."
  2344. Do i = 1 to temp.0
  2345.    Say temp.i
  2346. End /* do */
  2347. "@PAUSE"
  2348.  
  2349. Say
  2350. Say "Testing RxQueryDriveType for Drive C:"
  2351. Say RxQueryDriveType("C:")
  2352.  
  2353. BD = RxBootDrive()
  2354. PathToSearch = BD":\OS2;"BD":\OS2\INSTALL"
  2355. Say
  2356. Say "Testing RxSearchPath looking for DATABASE.TXT in \OS2 and \OS2\INSTALL"
  2357. Say RxSearchPath(PathToSearch, 'DATABASE.TXT')
  2358. "@PAUSE"
  2359.  
  2360. Say
  2361. Say "Testing Global variables"
  2362. Call RxSetGlobal "TX1", "This is shared memory!"
  2363. Say "The text 'This is shared memory' should now appear..."
  2364. Say RxGetGlobal('tx1')
  2365. /* Limitations - variable names must adhere to the 8.3 file naming standard and are 4096 chars max */
  2366. "@PAUSE"
  2367.  
  2368. Say
  2369. Say "Testing RxLineCount"
  2370. LC = RxLineCount(RxBootDrive()':\config.sys')
  2371. Say 'There are 'LC' lines in the your CONFIG.SYS file'
  2372. "@PAUSE"
  2373.  
  2374. Say "All testing is now over..."
  2375. "@PAUSE"
  2376.  
  2377. Call RxExtra "Drop"
  2378.  
  2379.  
  2380. ΓòÉΓòÉΓòÉ 6. Registration/Support ΓòÉΓòÉΓòÉ
  2381.  
  2382.  Registration 
  2383.  Support 
  2384.  Future Enhancements 
  2385.  Trademarks 
  2386.  
  2387.  
  2388. ΓòÉΓòÉΓòÉ 6.1. Registration ΓòÉΓòÉΓòÉ
  2389.  
  2390. This software package is distributed as Shareware.  Non-corporate users are 
  2391. granted the right to use and evaluate the usefulness of RxExtras, and to 
  2392. distribute the package, intact, by any medium. 
  2393.  
  2394. Continued use of RxExtras requires formal registration of the software. 
  2395.  
  2396. Distribution of any software which requires RxExtras APIs by persons who have 
  2397. not paid their registration fee is illegal. Users acquiring a software package 
  2398. which requires RxExtras may freely use RxExtras with that package without being 
  2399. required to submit payment for RxExtras.  However, such Users are required to 
  2400. pay for RxExtras if the User creates his/her own programs which utilize the 
  2401. RxExtras APIs. 
  2402.  
  2403. If you find this package useful and use it, register for $25 Australian ($18 
  2404. US) at the address below. 
  2405.  
  2406. Use of this package in any commercial product is illegal without registration 
  2407. and licensing. 
  2408.  
  2409. License arrangements can be made via: 
  2410.  
  2411.      o Compuserve (100026,470) 
  2412.      o Internet (10026.470@compuserve.com) 
  2413.      o Voice Telephone (61-2-413-2281) 
  2414.      o FAX Telephone (61-2-415-2754) 
  2415.      o Mail: 
  2416.                Dion Gillard 
  2417.                5 Lobelia St, 
  2418.                Chatswood, NSW, 2067 
  2419.                Australia 
  2420.  
  2421.  
  2422. ΓòÉΓòÉΓòÉ 6.2. Support ΓòÉΓòÉΓòÉ
  2423.  
  2424. If you have any questions or would like some other functions added, please 
  2425. contact me on Compu$erve (100026,470) or via Internet at 
  2426. 100026.470@compuserve.com 
  2427.  
  2428.  
  2429. ΓòÉΓòÉΓòÉ 6.3. Future Enhancements ΓòÉΓòÉΓòÉ
  2430.  
  2431. If you have any ideas for future improvement of RxExtras, please contact me 
  2432. with your suggestions.  Some of the ideas I am considering in future releases 
  2433. are: 
  2434.  
  2435.                Function          Description 
  2436.  
  2437.                RxReplace         Replace a given string of text with another in 
  2438.                                  a file. 
  2439.  
  2440.                RxFind            Find file(s) which have a given string of text 
  2441.                                  within them. 
  2442.  
  2443.                RxRun             Start a thread of execution within the current 
  2444.                                  session. 
  2445.  
  2446.                RxKillDir         Delete a subdirectory, all of its files, and 
  2447.                                  all of its subdirectories. 
  2448.  
  2449.                RxClipCut         Cut a string of text from a file and place it 
  2450.                                  in the OS/2 clipboard. 
  2451.  
  2452.                RxClipCopy        Copy a string of text from a file and place it 
  2453.                                  in the OS/2 clipboard. 
  2454.  
  2455.                RxClipPaste       Paste a string of text from the OS/2 clipboard 
  2456.                                  into a file. 
  2457.  
  2458.                RxClipAppend      Paste a string of text from the OS/2 clipboard 
  2459.                                  at the end of a file. 
  2460.  
  2461.  
  2462. ΓòÉΓòÉΓòÉ 6.4. Trademarks ΓòÉΓòÉΓòÉ
  2463.  
  2464.                VisPro/Rexx is a registered trademark of HockWare, Inc. 
  2465.  
  2466.                VX-Rexx is a registered trademark of Watcom, Inc. 
  2467.  
  2468.                RxExtras is copyrighted Dion Gillard, 1992 1993. 
  2469.