home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / imm_110.zip / RXX19.ZIP / rxextras.inf (.txt) < prev    next >
OS/2 Help File  |  1994-02-03  |  98KB  |  3,720 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.9 of RxExtras, released in February, 1994. 
  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.9 
  188.  Release 1.8 
  189.  Release 1.7 
  190.  Release 1.6 
  191.  Release 1.5 
  192.  Release 1.4 
  193.  Release 1.3 
  194.  Release 1.2 
  195.  Previous Releases 
  196.  
  197.  
  198. ΓòÉΓòÉΓòÉ 2.1. About... ΓòÉΓòÉΓòÉ
  199.  
  200. This section has details on what is, or was, in each release of RxExtras. 
  201.  
  202. You can determine the current release level of RxExtras by running the RxExtra 
  203. function when you are first registering RxExtras to REXX. 
  204.  
  205. Double click on any of the releases on the left hand side to see information 
  206. pertaining to a particular release. 
  207.  
  208. The sort of information that is displayed will be a list of functions added, 
  209. and any other miscellaneous work, such as parameter checking, or multiple 
  210. threaded-ness. 
  211.  
  212.  
  213. ΓòÉΓòÉΓòÉ 2.2. Release 1.9 ΓòÉΓòÉΓòÉ
  214.  
  215. The following functions were added in Release 1.9 of RxExtras:- 
  216.  
  217.  o RxKillProcess 
  218.  o RxSetFileHandles 
  219.  o RxAddFileHandles 
  220.  o RxMatchWildCard 
  221.  
  222.  These functions were all provided by Leshek Fiedorowicz, along with an update 
  223.  to the RXEXTRAS.CMD file. The help and VisPro/REXX object were done by dIon. 
  224.  
  225.  All functions that use window handles were improved so that VX-REXX HWnd's 
  226.  could be passed in directly. 
  227.  
  228.  RxSort was improved so that you can sort a stem only on certain columns within 
  229.  that stem. 
  230.  
  231.  VX-REXX Insert Code support was added, in the form of the RxExtras.MTC file. 
  232.  
  233.  
  234. ΓòÉΓòÉΓòÉ 2.3. Release 1.8 ΓòÉΓòÉΓòÉ
  235.  
  236. The following functions were added in Release 1.8 of RxExtras:- 
  237.  
  238.  o RxFileExists 
  239.  o RxWindowQueryText 
  240.  
  241.  A bug with RxStemCopy was fixed. It was unnecessarily using up memory. 
  242.  
  243.  VisPro/REXX v2.0 support was added in the form of an object for the toolbar 
  244.  which held all RxExtras calls and generated code using the VisPro/REXX drag 
  245.  and drop event tree. See VPRxx toolbar object for more details. 
  246.  
  247.  
  248. ΓòÉΓòÉΓòÉ 2.4. Release 1.7 ΓòÉΓòÉΓòÉ
  249.  
  250. The following functions were added in Release 1.7 of RxExtras:- 
  251.  
  252.  o RxWindowSetFocus 
  253.  o RxWindowSetOwner 
  254.  
  255.  Also, more code was added to support VX-REXX, and VX-REXX samples were added 
  256.  to this INF file. 
  257.  
  258.  
  259. ΓòÉΓòÉΓòÉ 2.5. Release 1.6 ΓòÉΓòÉΓòÉ
  260.  
  261. The following functions were added in Release 1.6 of RxExtras:- 
  262.  
  263.  o RxNap 
  264.  o RxEventCreate 
  265.  o RxEventDestroy 
  266.  o RxEventOccured 
  267.  o RxEventWaitFor 
  268.  o RxEventQuery 
  269.  o RxEventReset 
  270.  o RxResourceCreate 
  271.  o RxResourceDestroy 
  272.  o RxResourceQuery 
  273.  o RxResourceRelease 
  274.  o RxResourceRequest 
  275.  
  276.  The tables showing which function were for use with VX-REXX, VisPro/REXX and 
  277.  'plain' REXX (at the top of each API definition) were updated to be correct. 
  278.  
  279.  The introduction was updated to reflect the correct version of RxExtras 
  280.  
  281.  
  282. ΓòÉΓòÉΓòÉ 2.6. Release 1.5 ΓòÉΓòÉΓòÉ
  283.  
  284. The following functions were added in Release 1.5 of RxExtras:- 
  285.  
  286.  o RxListBoxItemHandle 
  287.  o RxQueueList 
  288.  o RxQueueSetDefault 
  289.  o RxQueueJobProperties 
  290.  o RxQueueWriteStem 
  291.  
  292.  
  293. ΓòÉΓòÉΓòÉ 2.7. Release 1.4 ΓòÉΓòÉΓòÉ
  294.  
  295. The following functions were added in Release 1.4 of RxExtras:- 
  296.  
  297.  o RxSetIcon 
  298.  o RxDrawBitmap 
  299.  o RxSetClipboardText 
  300.  o RxQueryClipboardText 
  301.  o RxAppendClipboardText 
  302.  o RxScrollListBox 
  303.  o RxGetEXEName 
  304.  
  305.  The RxSetGlobal function was enhanced to accept valid REXX variable names and 
  306.  support one call setting of global stems. 
  307.  
  308.  The RxGetGlobal function was enhanced to accept valid REXX variable names. 
  309.  
  310.  Note:  You can not get global stems in one call using RxGetGlobal. 
  311.  
  312.  Also, the complete User's Guide you are now reading was included in the 
  313.  package to replace the RxExtras.DOC, and RxExtras.VPR files. Many thanks to 
  314.  Ric Naff for doing a lot of the work. 
  315.  
  316.  
  317. ΓòÉΓòÉΓòÉ 2.8. Release 1.3 ΓòÉΓòÉΓòÉ
  318.  
  319. The following functions were added in release 1.3 of RxExtras:- 
  320.  
  321.  o RxThread 
  322.  o RxKillThread 
  323.  o RxSuspendThread 
  324.  o RxResumeThread 
  325.  o RxChangeThreadPriority 
  326.  o RxSetThreadClass 
  327.  
  328.  
  329. ΓòÉΓòÉΓòÉ 2.9. Release 1.2 ΓòÉΓòÉΓòÉ
  330.  
  331. The following function was added in Release 1.2 of RxExtras:- 
  332.  
  333.  o RxQueryClassName 
  334.  
  335.  Also the following miscellaneous work was completed:- 
  336.  
  337.  o A First cut INF file was included in the ZIP file. 
  338.  o Parameter checking for all functions was enhanced. 
  339.  o RxListBoxFromFile was made multithreaded. 
  340.  o RxVarDump now dumps to a stem, rather than to STDOUT. 
  341.  o RxExtra now returns the version number of RxExtras you have loaded or 
  342.    dropped. 
  343.  o RxVolumeLabel returns an error message if the drive tried is not valid. 
  344.  o RxSwitchTo will match on any part of the string, not just a prefix. 
  345.  o RxQueryDriveType will return "NOTREADY" for CDAUDIO or empty floppy drives. 
  346.  
  347.  
  348. ΓòÉΓòÉΓòÉ 2.10. Previously available (No release numbers) ΓòÉΓòÉΓòÉ
  349.  
  350. The following functions were available in previous releases of RxExtras that 
  351. had no release number :- 
  352.  
  353.  o RxMaximize 
  354.  o RxMinimize 
  355.  o RxRestore 
  356.  o RxBootDrive 
  357.  o RxRead 
  358.  o RxWrite 
  359.  o RxVolumeLabel 
  360.  o RxVarDump 
  361.  o RxStemCopy 
  362.  o RxExtra 
  363.  o RxSort 
  364.  o RxSwitchTo 
  365.  o RxQuerySwitchList 
  366.  o RxQueryDriveType 
  367.  o RxSearchPath 
  368.  o RxSetGlobal 
  369.  o RxGetGlobal 
  370.  o RxLineCount 
  371.  o RxListBoxFromFile 
  372.  o RxListBoxToFile 
  373.  o RxListBoxFromStem 
  374.  o RxListBoxToStem 
  375.  o RxGetListBoxCount 
  376.  o RxGetItemFromListBox 
  377.  o RxGetItemFromListBoxAtIndex 
  378.  o RxAddItemAtIndex 
  379.  o RxSetSpinButtonCharRange 
  380.  o RxSetSpinButtonRangeFromStem 
  381.  o RxSetSpinButtonRangeWithIncrement 
  382.  o RxMorphButtonToIcon 
  383.  o RxSearchItem 
  384.  o RxQueryWindow 
  385.  
  386.  
  387. ΓòÉΓòÉΓòÉ 3. VPRxx - VisPro/REXX toolbar support. ΓòÉΓòÉΓòÉ
  388.  
  389. A new object for the VisPro/REXX toolbar (VPRxx) was uploaded to the HockWare 
  390. section of CompuServe. When installed, it places a new object on the 
  391. VisPro/REXX toolbar that represents RxExtras. 
  392.  
  393. If you place this object on your form, you can use it in the event tree view to 
  394. get prototypes of all the RxExtras functions by dragging the object to the code 
  395. window. This means RxExtras is now easier to use! And the online help for all 
  396. the functions are available using the Help button of the Create Link dialog of 
  397. the RxExtras object. 
  398.  
  399. If you have any suggestions, or are interested in other VisPro/REXX objects, 
  400. contact the author of RxExtras. 
  401.  
  402.  
  403. ΓòÉΓòÉΓòÉ 4. VX-REXX Insert Code... Support ΓòÉΓòÉΓòÉ
  404.  
  405. When coding using Watcom's section editor, you can use a popup menu to insert 
  406. commonly used code into your application. 
  407.  
  408. You can add the RxExtras APIs to the Insert Code dialog if you wish to do so, 
  409. by simply copying the RxExtras.MTC file that comes with RxExtras to the 
  410. \VXREXX\SYSTEM directory. 
  411.  
  412. Once the copy has been done, you can use the Insert Code menu item to get 
  413. prompted (and help assisted) support for coding RxExtras APIs in VX-REXX. 
  414.  
  415. If youn have any suggestions for this feature, please contact the author of 
  416. RxExtras. 
  417.  
  418.  
  419. ΓòÉΓòÉΓòÉ 5. RxExtras APIs ΓòÉΓòÉΓòÉ
  420.  
  421. The listings for RxExtras APIs (functions) will designate which types of REXX 
  422. programs can take advantage of them.  Each API will have a box at the top of 
  423. its description detailing in which environments it may be used: 
  424.  
  425. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  426. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  427. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  428.  
  429. If you see "OS/2 REXX" in the above box for a function, you may use that 
  430. RxExtras function in any *.CMD and/or other REXX-based program.  If you do not 
  431. see "OS/2 REXX", then you cannot use the API in a *.CMD file. 
  432.  
  433. If you see "VisPro/REXX" in the above box for a function, you may use that 
  434. RxExtras function in any VisPro/REXX program. 
  435.  
  436. If you see "VX-REXX" in the above box for a function, you may use that RxExtras 
  437. function in any VX-REXX program. 
  438.  
  439. APIs for VisPro/REXX and/or VX-REXX could possibly be used in other PM 
  440. Rexx-based programs.  Some experimentation may be necessary. 
  441.  
  442.  
  443. ΓòÉΓòÉΓòÉ 5.1. Disc/File ΓòÉΓòÉΓòÉ
  444.  
  445. These APIs deal with accessing information to, from, or about discs and files. 
  446. Some of them are unique in that there are no standard REXX commands that will 
  447. retrieve the information for you; RxExtras must be used in these instances. 
  448.  
  449.  
  450. ΓòÉΓòÉΓòÉ 5.1.1. RxBootDrive ΓòÉΓòÉΓòÉ
  451.  
  452. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  453. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  454. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  455.  
  456. ΓöÇΓöÇΓöÇRXBOOTDRIVE()ΓöÇΓöÇΓöÇ
  457.  
  458.  
  459. Returns the drive from which OS2 was booted in the format 'X'. 
  460.  
  461. If you want a trailing ':' you must append one to the returned drive letter. 
  462.  
  463. Example: 
  464.  
  465.      SAY 'My Boot Drive is' RxBootDrive() || ':'
  466.  
  467. Output: 
  468.  
  469.      My Boot Drive is C:           /* perhaps */
  470.  
  471.  
  472. ΓòÉΓòÉΓòÉ 5.1.2. RxLineCount ΓòÉΓòÉΓòÉ
  473.  
  474. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  475. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  476. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  477.  
  478. ΓöÇΓöÇΓöÇRXLINECOUNT(ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇfilenameΓöÇ)ΓöÇΓöÇΓöÇ
  479.                   ΓööΓöÇdrive:ΓöÇΓöÿ ΓööΓöÇ\ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γöÿ
  480.                                  ΓööΓöÇpath\ΓöÇΓöÿ
  481.  
  482.  
  483. Returns the number of lines in filename.  The lines in filename are assumed to 
  484. be delimited by CR/LF characters. 
  485.  
  486. If filename does not exist, RXLINECOUNT raises an 'Incorrect call to routine' 
  487. condition. 
  488.  
  489. Example: 
  490.  
  491.      SAY 'There are' RxLineCount('C:\CONFIG.SYS') 'lines in Config.Sys.'
  492.  
  493. Output: 
  494.  
  495.      There are 117 lines in Config.Sys.      /* perhaps */
  496.  
  497.  
  498. ΓòÉΓòÉΓòÉ 5.1.3. RxListBoxFromFile ΓòÉΓòÉΓòÉ
  499.  
  500.  
  501. ΓòÉΓòÉΓòÉ 5.1.4. RxListBoxToFile ΓòÉΓòÉΓòÉ
  502.  
  503.  
  504. ΓòÉΓòÉΓòÉ 5.1.5. RxQueryDriveType ΓòÉΓòÉΓòÉ
  505.  
  506. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  507. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  508. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  509.  
  510. ΓöÇΓöÇΓöÇRXQUERYDRIVETYPE(drive:)ΓöÇΓöÇΓöÇ
  511.  
  512.  
  513. Returns 'HPFS', 'FAT' or 'CDFS' for their respective drive types. 
  514.  
  515. Returns 'NOTREADY' for the following conditions: 
  516.  
  517.      o A CD-ROM drive with an Audio CD loaded. 
  518.      o An empty floppy drive. 
  519.      o An invalid drive letter. 
  520.  
  521.  Example: 
  522.  
  523.        SAY 'Drive C: is a' RxQueryDriveType('C:') 'drive.'
  524.  
  525.  Output: 
  526.  
  527.        Drive C: is a HPFS drive.           /* perhaps */
  528.  
  529.  
  530. ΓòÉΓòÉΓòÉ 5.1.6. RxRead ΓòÉΓòÉΓòÉ
  531.  
  532.  
  533. ΓòÉΓòÉΓòÉ 5.1.7. RxSearchPath ΓòÉΓòÉΓòÉ
  534.  
  535. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  536. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  537. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  538.  
  539. 
  540. ΓöÇΓöÇΓöÇRXSEARCHPATH(ΓöÇΓöÇsearchpathΓöÇΓöÇ,ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇfilenameΓöÇ)ΓöÇΓöÇΓöÇ
  541.                                 ΓööΓöÇsubdir\ΓöÇΓöÿ
  542.  
  543.  
  544. Searches for [ subdir\ ]filename in the path(s) defined by searchpath. 
  545.  
  546. The path(s) defined for searchpath will be used for the search.  searchpath may 
  547. be composed of several pathnames, each separated by a semicolon.  Each pathname 
  548. is allowed to have either a drive designator, a directory designator, or both. 
  549.  
  550. Currently, filename must specify a complete filename; no wildcard characters 
  551. are accepted.  If you supply the optional subdir\ qualifier, the effect is as 
  552. if you had modified all the values of searchparh to include the addtional 
  553. subdir\ value.  For example, if searchpath contains 'F:\OS2;G:\USER', and you 
  554. specify 'DLL\' for subdir,, the effect is the same as having specified 
  555. 'F:\OS2\DLL;G:\USER\DLL' for searchpath and no value for subdir\. 
  556.  
  557.  RXSEARCHPATH returns a fully qualified filename if it finds one, otherwise it 
  558. returns NULL. 
  559.  
  560. Example: 
  561.  
  562.      /*  Find COUNTRY.SYS */
  563.      SchPath = 'C:\OS2\SYSTEM;D:\OS2\SYSTEM;E:\OS2\SYSTEM'
  564.      SAY RxSearchPath(SchPath,'COUNTRY.SYS')
  565.  
  566. Output: 
  567.  
  568.      D:\OS2\SYSTEM\COUNTRY.SYS    /* if found in D:\OS2\SYSTEM */
  569.  
  570.  
  571. ΓòÉΓòÉΓòÉ 5.1.8. RxVolumeLabel ΓòÉΓòÉΓòÉ
  572.  
  573. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  574. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  575. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  576.  
  577. ΓöÇΓöÇΓöÇRXVOLUMELABEL(drive)ΓöÇΓöÇΓöÇ
  578.  
  579.  
  580. Returns the volume label for disc drive drive.  If no label exists, it returns 
  581. 'NO LABEL'. 
  582.  
  583. Returns 'Error Querying drive label' for an invalid drive letter. 
  584.  
  585. You may append an optional colon to the letter, but only the drive letter 
  586. itself is required. 
  587.  
  588. Example: 
  589.  
  590.      SAY 'Volume Label of drive C is' RxVolumeLabel('C')
  591.  
  592. Output: 
  593.  
  594.      Volume Label of drive C is MY DRIVE C       /* perhaps */
  595.  
  596.  
  597. ΓòÉΓòÉΓòÉ 5.1.9. RxWrite ΓòÉΓòÉΓòÉ
  598.  
  599.  
  600. ΓòÉΓòÉΓòÉ 5.1.10. RxFileExists ΓòÉΓòÉΓòÉ
  601.  
  602. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  603. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  604. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  605.  
  606. ΓöÇΓöÇΓöÇRXFILEEXISTS(file)ΓöÇΓöÇΓöÇ
  607.  
  608.  
  609. Returns '1' if the file specified exists, '0' otherwise. 
  610.  
  611. RXFILEEXISTS will raise the REXX error condition INCORRECT CALL TO ROUTINE if a 
  612. filename is not passed. 
  613.  
  614. Example: 
  615.  
  616.      If RxFileExists('C:\CONFIG.SYS') Then Say 'I found your CONFIG.SYS!'
  617.  
  618. Output: 
  619.  
  620.      I found your CONFIG.SYS       /* perhaps */
  621.  
  622.  
  623. ΓòÉΓòÉΓòÉ 5.1.11. RxSetFileHandles ΓòÉΓòÉΓòÉ
  624.  
  625. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  626. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  627. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  628.  
  629. ΓöÇΓöÇΓöÇRXSETFILEHANDLES(fileHandles)ΓöÇΓöÇΓöÇ
  630.  
  631.  
  632. Returns an empty string ('') if the number of fileHandles available has been 
  633. raised to the new value. 
  634.  
  635. The function can also return "Not enough memory", or "Invalid parameter" (when 
  636. trying to set the file handles to a value less than it currently is). 
  637.  
  638. RXSETFILEHANDLES will raise the REXX error condition INCORRECT CALL TO ROUTINE 
  639. if fileHandles is not passed, or is not greater than 0. 
  640.  
  641. Example: 
  642.  
  643.      If RxSetFileHandles(100) Then Say '100 file handles are now available'
  644.  
  645. Output: 
  646.  
  647.      100 file handles are now available       /* perhaps */
  648.  
  649.  
  650. ΓòÉΓòÉΓòÉ 5.1.12. RxAddFileHandles ΓòÉΓòÉΓòÉ
  651.  
  652. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  653. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  654. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  655.  
  656. ΓöÇΓöÇΓöÇRXADDFILEHANDLES(fileHandlesToAdd)ΓöÇΓöÇΓöÇ
  657.  
  658.  
  659. RxAddFileHandles returns :- 
  660.  
  661. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  662. ΓöéReturn value             ΓöéReason                                  Γöé
  663. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  664. ΓöéA number                 ΓöéCurrent number of file handles availableΓöé
  665. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  666.  
  667. RXADDFILEHANDLES will raise the REXX error condition INCORRECT CALL TO ROUTINE 
  668. if fileHandles is not passed. 
  669.  
  670. Example: 
  671.  
  672.      rc = RxAddFileHandles(100)
  673.      Say '100 more file handles are now available'
  674.      Say 'There are now 'rc' file handles available'
  675.  
  676. Output: 
  677.  
  678.      100 more file handles are now available
  679.      There are now 121 file handles available
  680.  
  681.  
  682. ΓòÉΓòÉΓòÉ 5.2. REXX Environment ΓòÉΓòÉΓòÉ
  683.  
  684. These APIs deal with accessing information to, from, or about 1 or more REXX 
  685. Sessions.  All of these functions are available only with RxExtras; there are 
  686. no REXX commands which will achieve the same results. 
  687.  
  688.  
  689. ΓòÉΓòÉΓòÉ 5.2.1. RxExtra ΓòÉΓòÉΓòÉ
  690.  
  691. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  692. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  693. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  694.  
  695. ΓöÇΓöÇΓöÇRXEXTRA(ΓöÇΓö¼ΓöÇ'LOAD'ΓöÇΓö¼ΓöÇ)ΓöÇΓöÇΓöÇ
  696.               ΓööΓöÇ'DROP'ΓöÇΓöÿ
  697.  
  698.  
  699. Loads or Drops all functions in this package. 
  700.  
  701. Returns the version number of RxExtras after loading or dropping. 
  702.  
  703. Example: 
  704.  
  705.      rcy = RxFuncAdd('RxExtra', 'RxExtras', 'RxExtra')
  706.      Say 'Using version 'RxExtra("Load")' of RxExtras'
  707.  
  708. Output: 
  709.  
  710.      Using version 1.7 of RxExtras        /* perhaps */
  711.  
  712.  
  713. ΓòÉΓòÉΓòÉ 5.2.2. RxGetGlobal ΓòÉΓòÉΓòÉ
  714.  
  715. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  716. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  717. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  718.  
  719. ΓöÇΓöÇΓöÇRXGETGLOBAL(ΓöÇΓöÇvarnameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  720.  
  721.  
  722. Returns the value for varname, where varname was previously defined via 
  723. RXSETGLOBAL. 
  724.  
  725. If varname was not defined via RXSETGLOBAL, RXGETGLOBAL returns NULL. 
  726.  
  727. Example: 
  728.  
  729.      Call RxSetGlobal 'MyVar','Hello World!'
  730.      Say RxGetGlobal('MyVar')
  731.  
  732. Output: 
  733.  
  734.      Hello World!
  735.  
  736.  
  737. ΓòÉΓòÉΓòÉ 5.2.3. RxSetGlobal ΓòÉΓòÉΓòÉ
  738.  
  739. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  740. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  741. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  742.  
  743. ΓöÇΓöÇΓöÇRXSETGLOBAL(ΓöÇΓöÇvarnameΓöÇ,ΓöÇvarvalueΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  744.  
  745.  
  746. Sets a global variable value for use across all REXX sessions.  A variable thus 
  747. set can be retrieved by any other REXX session via RXGETGLOBAL. 
  748.  
  749. You can set a global stem from a local stem by passing the global stem name 
  750. (which must have a trailing period) for varname and passing the local stem name 
  751. (which also must have a trailing period) for varvalue. 
  752.  
  753. Returns varvalue if successful. 
  754.  
  755. Example: 
  756.  
  757.      SomeVar = 'MyVar'
  758.      Call RxSetGlobal SomeVar,'Hello World!'
  759.      Say RxGetGlobal('MyVar')
  760.  
  761. Output: 
  762.  
  763.      Hello World!
  764.  
  765.  
  766. ΓòÉΓòÉΓòÉ 5.2.4. RxVarDump ΓòÉΓòÉΓòÉ
  767.  
  768. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  769. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  770. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  771.  
  772. ΓöÇΓöÇΓöÇRXVARDUMP(ΓöÇΓöÇ'stemname.'ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  773.  
  774.  
  775. Copies all local variables to stemname for debugging.  The trailing period is 
  776. required; results are unpredictable without it. 
  777.  
  778. RXVARDUMP always returns NULL.  The count of variables retrieved is placed in 
  779. stemname.0.  Each unique variable is placed in a pair of variables, 
  780. stemname.n.name and stemname.n.value and may be displayed in a loop or by other 
  781. means. 
  782.  
  783. Example: 
  784.  
  785.      XYZ = '123'
  786.      MyVar = 'Quick Brown Fox'
  787.      Call RxVarDump 'varlist.'
  788.      Do Count = 1 to varlist.0
  789.         Say varlist.Count.name 'has the value "'varlist.Count.value'"'
  790.      End
  791.  
  792. Output: 
  793.  
  794.      XYZ has the value "123"
  795.      MYVAR has the value "Quick Brown Fox"
  796.  
  797.  
  798. ΓòÉΓòÉΓòÉ 5.3. REXX Stems ΓòÉΓòÉΓòÉ
  799.  
  800. These APIs deal with accessing information to, from, or about REXX Stem 
  801. variables.  Some of them require PM REXX-based programs in order to function. 
  802.  
  803.  
  804. ΓòÉΓòÉΓòÉ 5.3.1. RxListBoxFromStem ΓòÉΓòÉΓòÉ
  805.  
  806.  
  807. ΓòÉΓòÉΓòÉ 5.3.2. RxListBoxToStem ΓòÉΓòÉΓòÉ
  808.  
  809.  
  810. ΓòÉΓòÉΓòÉ 5.3.3. RxQuerySwitchList ΓòÉΓòÉΓòÉ
  811.  
  812.  
  813. ΓòÉΓòÉΓòÉ 5.3.4. RxRead ΓòÉΓòÉΓòÉ
  814.  
  815. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  816. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  817. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  818.  
  819. ΓöÇΓöÇΓöÇRXREAD(ΓöÇΓöÇ'stemname.'ΓöÇ,ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇfilenameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  820.                             ΓööΓöÇdrive:ΓöÇΓöÿ ΓööΓöÇ\ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γöÿ
  821.                                            ΓööΓöÇpath\ΓöÇΓöÿ
  822.  
  823.  
  824. Reads filename into the stem variable stemname..  The trailing period to 
  825. stemname. is required; results are unpredictable if it is not supplied.  RXREAD 
  826. assumes that the contents of filename are ASCII text, with each line terminated 
  827. by a CR/LF. 
  828.  
  829. RXREAD always returns NULL if successful, and the count of lines retrieved is 
  830. placed in stemname.0.  Each unique line of text is place in stemname.n and may 
  831. be displayed in a loop or by other means. If filename cannot be read, RXREAD 
  832. raises an 'Incorrect call to routine' condition. 
  833.  
  834. Example: 
  835.  
  836.      Call RxRead 'textlines.','C:\Config.Sys'
  837.      Do Count = 1 to textlines.0
  838.         Say textlines.Count
  839.      End
  840.  
  841. Output: 
  842.  
  843.      PROTSHELL=C:\OS2\PMSHELL.EXE          /* perhaps */
  844.      SET USER_INI=C:\OS2\OS2.INI           /* perhaps */
  845.      . . .
  846.  
  847.  
  848. ΓòÉΓòÉΓòÉ 5.3.5. RxSetSpinButtonRangeFromStem ΓòÉΓòÉΓòÉ
  849.  
  850.  
  851. ΓòÉΓòÉΓòÉ 5.3.6. RxSort ΓòÉΓòÉΓòÉ
  852.  
  853. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  854. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  855. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  856.  
  857. ΓöÇΓöÇΓöÇRXSORT(ΓöÇΓöÇ'stemname.'ΓöÇΓöÇΓö¼ΓöÇ[ΓöÇ,ΓöÇ'Ascending'ΓöÇ]ΓöÇΓö¼ΓöÇΓöÇ[,ΓöÇΓöÇstartΓöÇΓöÇ,ΓöÇΓöÇendΓöÇΓöÇ])ΓöÇΓöÇΓöÇ
  858.                            ΓööΓöÇ[,ΓöÇ'Descending'ΓöÇ]ΓöÇΓöÿ
  859.  
  860.  
  861. Sorts a stemmed variable stemname. in either Ascending or Descending ASCII 
  862. sequence.  Only the A or D of the sort order is required. Ascending is the 
  863. default if omitted. 
  864.  
  865. start and end default to the start and of the string if either is omitted. 
  866.  
  867. The number of items to sort must be placed in stemname.0.  All values to sort 
  868. must be in stemname.1 through stemname.n, where n is the number placed in 
  869. stemname.0. 
  870.  
  871. RXSORT always returns NULL if invoked properly. 
  872.  
  873. Example: 
  874.  
  875.      Stem.0 = 3
  876.      Stem.1 = 'Now is the time...'
  877.      Stem.2 = 'A stitch in time...'
  878.      Stem.3 = 'Somewhere in time...'
  879.      Call RxSort 'Stem.','A', 1, 3
  880.      Do Count = 1 to Stem.0
  881.         Say Stem.Count
  882.      End
  883.      Say '-----------------'
  884.      Call RxSort 'Stem.','D', 1, ""
  885.      Do Count = 1 to Stem.0
  886.         Say Stem.Count
  887.      End
  888.  
  889. Output: 
  890.  
  891.      A stitch in time...
  892.      Now is the time...
  893.      Somewhere in time...
  894.      -----------------
  895.      Somewhere in time...
  896.      Now is the time...
  897.      A stitch in time...
  898.  
  899.  
  900. ΓòÉΓòÉΓòÉ 5.3.7. RxStemCopy ΓòÉΓòÉΓòÉ
  901.  
  902. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  903. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  904. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  905.  
  906. ΓöÇΓöÇΓöÇRXSTEMCOPY(ΓöÇΓöÇ'sourcestem.'ΓöÇΓöÇ,ΓöÇΓöÇ'targetstem.'ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  907.  
  908.  
  909. Copies the entire contents of sourcestem. to targetstem..  The trailing period 
  910. to sourcestem. and targetstem. are required; results are unpredictable if they 
  911. are not supplied. 
  912.  
  913. RXSTEMCOPY always returns NULL. 
  914.  
  915. Example: 
  916.  
  917.      Source.ABC = 'ABCDEFG'
  918.      Source.123 = '123456789'
  919.      Call RxStemCopy 'Source.','Target.'
  920.      Say Target.ABC
  921.      Say Target.123
  922.  
  923. Output: 
  924.  
  925.      ABCDEFG
  926.      123456789
  927.  
  928.  
  929. ΓòÉΓòÉΓòÉ 5.3.8. RxVarDump ΓòÉΓòÉΓòÉ
  930.  
  931.  
  932. ΓòÉΓòÉΓòÉ 5.3.9. RxWrite ΓòÉΓòÉΓòÉ
  933.  
  934. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  935. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  936. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  937.  
  938. ΓöÇΓöÇΓöÇRXWRITE(ΓöÇΓöÇ'stemname.'ΓöÇ,ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇfilenameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  939.                              ΓööΓöÇdrive:ΓöÇΓöÿ ΓööΓöÇ\ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γöÿ
  940.                                             ΓööΓöÇpath\ΓöÇΓöÿ
  941.  
  942.  
  943. Writes filename from the stem variable stemname..  The trailing period to 
  944. stemname. is required; results are unpredictable if it is not supplied. 
  945. RXWRITE requires that the number of lines to write are designated in 
  946. stemname.0.  It also requires that the lines of text are placed in stemname. 
  947. such that entries are numeric in nature, starting at 1 and continuing up to the 
  948. number defined in stemname..0.  stemname. variables that are not numeric or are 
  949. not within the range 1 to stemname.0 will not be written to filename.  RXWRITE 
  950. writes the text lines in ascending numerical order. 
  951.  
  952. RXWRITE always overlays the contents of a previously-existing file, otherwise 
  953. it creates the file as required. 
  954.  
  955. RXWRITE always returns NULL if successful.  If filename cannot be written, it 
  956. raises an 'Incorrect call to routine' condition. 
  957.  
  958. Example: 
  959.  
  960.      MyStem.0 = 4
  961.      MyStem.4 = 'We''re as happy as can be.'
  962.      MyStem.2 = 'Hi There!'
  963.      MyStem.3 = 'Ho There!'
  964.      MyStem.1 = 'Hey There!'
  965.      Call RxWrite 'MyStem.','C:\Temp.Out'
  966.  
  967. Contents of C:\Temp.Out: 
  968.  
  969.      Hey There!
  970.      Hi There!
  971.      Ho There!
  972.      We're as happy as can be.
  973.  
  974.  
  975. ΓòÉΓòÉΓòÉ 5.3.10. RxQueueList ΓòÉΓòÉΓòÉ
  976.  
  977.  
  978. ΓòÉΓòÉΓòÉ 5.3.11. RxQueueWriteStem ΓòÉΓòÉΓòÉ
  979.  
  980.  
  981. ΓòÉΓòÉΓòÉ 5.4. OS/2 Environment ΓòÉΓòÉΓòÉ
  982.  
  983. These APIs deal with accessing information about or changing characterstics of 
  984. your OS/2 machine. 
  985.  
  986.  
  987. ΓòÉΓòÉΓòÉ 5.4.1. RxChangeThreadPriority ΓòÉΓòÉΓòÉ
  988.  
  989. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  990. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  991. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  992.  
  993. ΓöÇΓöÇΓöÇRXCHANGETHREADPRIORITY(ΓöÇΓöÇthreadidΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ)ΓöÇΓöÇΓöÇ
  994.                                          Γö£ΓöÇ,deltaΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  995.                                          Γö£ΓöÇ,'MINIMUM'ΓöÇΓöÇΓöÇΓöñ
  996.                                          Γö£ΓöÇ,'MAXIMUM'ΓöÇΓöÇΓöÇΓöñ
  997.                                          Γö£ΓöÇ,''ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  998.                                          Γö£ΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  999.  
  1000.  
  1001. Changes the priority of threadid by the delta value specified. If the value is 
  1002. left out, NULL or invalid, it is assumed to be the maximum. 
  1003.  
  1004. Note:  For OS/2 REXX running in an OS/2 Window, use thread id 0 to set the 
  1005. priority of your program. 
  1006.  
  1007. RXCHANGETHREADPRIORITY returns :- 
  1008.  
  1009. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1010. ΓöéReturn value             ΓöéReason                                  Γöé
  1011. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1012. Γöé"Priority changed"       ΓöéPriority was successfully changed       Γöé
  1013. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1014. Γöé"Invalid delta"          ΓöéThe second parameter was not in the     Γöé
  1015. Γöé                         Γöérange -31 to +31, blank, "maximum" or   Γöé
  1016. Γöé                         Γöé"minimum"                               Γöé
  1017. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1018. Γöé"Invalid Thread id"      ΓöéThe first parameter did not specify a   Γöé
  1019. Γöé                         Γöévalid thread id.                        Γöé
  1020. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1021. Γöé"Unknown return code n"  ΓöéDosSetPriority returned an undocumented Γöé
  1022. Γöé                         Γöéreturn code of n                        Γöé
  1023. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1024.  
  1025. Example: 
  1026.  
  1027.      rc = RxChangeThreadPriority(threadId, 5)
  1028.  
  1029. Results: 
  1030.  
  1031.      rc should contain the value "Priority changed"
  1032.  
  1033.  
  1034. ΓòÉΓòÉΓòÉ 5.4.2. RxGetEXEName ΓòÉΓòÉΓòÉ
  1035.  
  1036. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1037. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  1038. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1039.  
  1040. ΓöÇΓöÇΓöÇRXGETEXENAME(ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1041.  
  1042.  
  1043. Returns the name of the executable currently running your REXX Code. 
  1044.  
  1045. Example: 
  1046.  
  1047.      Say "The current running program is "RxGetEXEName()
  1048.  
  1049. Results: 
  1050.  
  1051.      The currnet running program is CMD.EXE     /* possibly */
  1052.  
  1053.  
  1054. ΓòÉΓòÉΓòÉ 5.4.3. RxKillThread ΓòÉΓòÉΓòÉ
  1055.  
  1056. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1057. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  1058. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1059.  
  1060. ΓöÇΓöÇΓöÇRXKILLTHREAD(ΓöÇΓöÇthreadidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1061.  
  1062.  
  1063. Kills thread threadid. 
  1064.  
  1065. RXKILLTHREAD returns :- 
  1066.  
  1067. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1068. ΓöéReturn value             ΓöéReason                                  Γöé
  1069. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1070. Γöé"Killed"                 ΓöéThread was successfully killed          Γöé
  1071. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1072. Γöé"Thread busy"            ΓöéThe thread to be killed was executing 16Γöé
  1073. Γöé                         Γöébit code, or was created by 16 bit code.Γöé
  1074. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1075. Γöé"Invalid Thread id"      ΓöéThe first parameter did not specify a   Γöé
  1076. Γöé                         Γöévalid thread id.                        Γöé
  1077. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1078. Γöé"Unknown return code n"  ΓöéDosKillThread returned an undocumented  Γöé
  1079. Γöé                         Γöéreturn code of n                        Γöé
  1080. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1081.  
  1082. Example: 
  1083.  
  1084.      If RxKillThread(5) = "Killed" Then
  1085.         Say "Printing ceased"
  1086.  
  1087. Results: 
  1088.  
  1089.      Thread number 5 is stopped permanently and
  1090.      rc should have the value "Killed"
  1091.  
  1092. Note:  RxKillThread returns to the caller without waiting for the ending thread 
  1093. to complete its termination processing. 
  1094.  
  1095. Note:  You cannot use this function to end the current thread. If you use 
  1096. RxKillThread to end thread 1, the entire process ends. 
  1097.  
  1098.  
  1099. ΓòÉΓòÉΓòÉ 5.4.4. RxQuerySwitchList ΓòÉΓòÉΓòÉ
  1100.  
  1101. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1102. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  1103. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1104.  
  1105. ΓöÇΓöÇΓöÇRXQUERYSWITCHLIST(ΓöÇΓöÇ'stemname.'ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1106.  
  1107.  
  1108. Retrieves a list of executing sessions into the stemmed variable stemname.. 
  1109.  
  1110. The count of executing sessions, plus 1, is placed in stemname.0, and the title 
  1111. of each session is placed in stemname.2 through stemname.n, where n is the 
  1112. value found in stemname.0. stemname.1 will contain 'Switch to'.  Note that 
  1113. RXQUERYSWITCHLIST will list "hidden" sessions. 
  1114.  
  1115. RXQUERYSWITCHLIST always returns NULL. 
  1116.  
  1117. stemname.n.HWND holds the nth entry's window handle. 
  1118.  
  1119. stemname.n.PID holds the nth entry's process id. 
  1120.  
  1121. Example: 
  1122.  
  1123.      Call RxQuerySwitchList 'temp.'
  1124.      Do Count = 2 to temp.0
  1125.           Say temp.Count
  1126.      End
  1127.  
  1128. Output: 
  1129.  
  1130.      4OS2 Window                   /* perhaps */
  1131.      Tritus SPF                    /* perhaps */
  1132.      System Clock                  /* perhaps */
  1133.      Pulse                         /* perhaps */
  1134.      Desktop                       /* perhaps */
  1135.  
  1136.  
  1137. ΓòÉΓòÉΓòÉ 5.4.5. RxResumeThread ΓòÉΓòÉΓòÉ
  1138.  
  1139. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1140. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  1141. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1142.  
  1143. ΓöÇΓöÇΓöÇRXRESUMETHREAD(ΓöÇΓöÇthreadidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1144.  
  1145.  
  1146. Allows thread threadid to resume execution after being suspended with 
  1147. RXSUSPENDTHREAD. 
  1148.  
  1149. RXRESUMETHREAD returns :- 
  1150.  
  1151. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1152. ΓöéReturn value             ΓöéReason                                  Γöé
  1153. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1154. Γöé"Resumed"                ΓöéThread was successfully resumed         Γöé
  1155. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1156. Γöé"Thread not previously   ΓöéThe thread to be resumed had not been   Γöé
  1157. Γöésuspended"               Γöépreviously suspended                    Γöé
  1158. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1159. Γöé"Invalid Thread id"      ΓöéThe first parameter did not specify a   Γöé
  1160. Γöé                         Γöévalid thread id.                        Γöé
  1161. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1162. Γöé"Unknown return code n"  ΓöéDosResumeThread returned an undocumentedΓöé
  1163. Γöé                         Γöéreturn code of n                        Γöé
  1164. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1165.  
  1166. Example: 
  1167.  
  1168.      If RxResumeThread(5) = 'Resumed' Then
  1169.         Say 'Suspended Printing Continues...'
  1170.  
  1171. Results: 
  1172.  
  1173.      Thread number 6 continues processing      /* hopefully */
  1174.  
  1175.  
  1176. ΓòÉΓòÉΓòÉ 5.4.6. RxSetThreadClass ΓòÉΓòÉΓòÉ
  1177.  
  1178. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1179. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  1180. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1181.  
  1182. ΓöÇΓöÇΓöÇRXSETTHREADCLASS(ΓöÇΓöÇthreadid ΓöÇΓöÇ,ΓöÇΓö¼ΓöÇ'REGULAR'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1183.                                      Γö£ΓöÇ'IDLE'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1184.                                      Γö£ΓöÇ'TIMECRITICAL'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1185.                                      ΓööΓöÇ'FOREGROUNDSERVER'ΓöÇΓöÿ
  1186.  
  1187.  
  1188. Sets the class type of thread threadid to one of REGULAR, IDLE, TIMECRITICAL, 
  1189. or FOREGROUNDSERVER.  Only the R, I, T or F of the class type is required. 
  1190.  
  1191. Note:  For OS/2 REXX running in an OS/2 Window, use thread id 0 to set the 
  1192. priority class of your program. 
  1193.  
  1194. RXSETTHREADCLASS returns :- 
  1195.  
  1196. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1197. ΓöéReturn value             ΓöéReason                                  Γöé
  1198. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1199. Γöé"Class set"              ΓöéThe class of the thread was successfullyΓöé
  1200. Γöé                         Γöéset                                     Γöé
  1201. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1202. Γöé"Invalid class"          ΓöéThe class pthread to be killed was      Γöé
  1203. Γöé                         Γöéexecuting 16 bit code, or was created byΓöé
  1204. Γöé                         Γöé16 bit code.                            Γöé
  1205. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1206. Γöé"Invalid Thread id"      ΓöéThe first parameter did not specify a   Γöé
  1207. Γöé                         Γöévalid thread id.                        Γöé
  1208. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1209. Γöé"Unknown return code n"  ΓöéDosKillThread returned an undocumented  Γöé
  1210. Γöé                         Γöéreturn code of n                        Γöé
  1211. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1212.  
  1213. Example: 
  1214.  
  1215.      If RxSetThreadClass(id, 'F') = 'Class set' Then
  1216.         Say 'Printing sped up to foreground priority'
  1217.  
  1218. Results: 
  1219.  
  1220.      The thread should perform better than previously
  1221.  
  1222.  
  1223. ΓòÉΓòÉΓòÉ 5.4.7. RxSuspendThread ΓòÉΓòÉΓòÉ
  1224.  
  1225. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1226. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  1227. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1228.  
  1229. ΓöÇΓöÇΓöÇRXSUSPENDTHREAD(ΓöÇΓöÇthreadidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1230.  
  1231.  
  1232. Causes thread threadid to halt execution until it is killed with RXKILLTHREAD, 
  1233. restarted with RXRESUMETHREAD, or the parent session is closed. 
  1234.  
  1235. RXSUSPENDTHREAD returns :- 
  1236.  
  1237. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1238. ΓöéReturn value             ΓöéReason                                  Γöé
  1239. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1240. Γöé"Suspended"              ΓöéThe class of the thread was successfullyΓöé
  1241. Γöé                         Γöéset                                     Γöé
  1242. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1243. Γöé"Invalid Thread id"      ΓöéThe first parameter did not specify a   Γöé
  1244. Γöé                         Γöévalid thread id.                        Γöé
  1245. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1246. Γöé"Unknown return code n"  ΓöéDosSuspendThread returned an            Γöé
  1247. Γöé                         Γöéundocumented return code of n           Γöé
  1248. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1249.  
  1250. Example: 
  1251.  
  1252.       Call RxSuspendThread id
  1253.       If (result = 'Suspended') Then
  1254.         Say 'Thread 'id' is temporarily suspended'
  1255.  
  1256. Results: 
  1257.  
  1258.      The thread number contained in the variable id is suspended.
  1259.  
  1260.  
  1261. ΓòÉΓòÉΓòÉ 5.4.8. RxSwitchTo ΓòÉΓòÉΓòÉ
  1262.  
  1263. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1264. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  1265. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1266.  
  1267. ΓöÇΓöÇΓöÇRXSWITCHTO(ΓöÇΓöÇ'session'ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1268.  
  1269.  
  1270. Switches the forground session to the the session named by session. 
  1271.  
  1272. RXSWITCHTO will attempt to locate a session, by name, that matches in any part 
  1273. of its name to the contiguous characters defined by session  For example, if 
  1274. session contains 'stem C', RXSWITCHTO will switch to the System Clock session, 
  1275. if it is active.  If you desire to specifiy a complete name, use 
  1276. RXQUERYSWITCHLIST to obtain the full names of all executing sessions. 
  1277.  
  1278. RXSWITCHTO returns 'Switch Entry not found' if it cannot find a session name to 
  1279. match session. 
  1280.  
  1281. Example: 
  1282.  
  1283.      Call RxSwitchTo '2.0'       /* try "OS/2 2.0 Desktop" */
  1284.      If  Result \= '' Then       /* probably 2.1 */
  1285.           Call RxSwitchTo 'Desktop'
  1286.  
  1287. Results: 
  1288.  
  1289.      The system switches to your OS/2 desktop, making it the active
  1290.      forground session.  Your REXX program continues to execute in
  1291.      the background.
  1292.  
  1293.  
  1294. ΓòÉΓòÉΓòÉ 5.4.9. RxThread ΓòÉΓòÉΓòÉ
  1295.  
  1296. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1297. Γöé.........ΓöéVisPro/REXXΓöé.......Γöé
  1298. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1299.  
  1300. ΓöÇΓöÇΓöÇRXTHREAD(ΓöÇΓöÇ'ProcName'ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1301.                              ΓöéΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉΓöé
  1302.                              Γöé         ΓöéΓöé
  1303.                              ΓööΓö┤, argΓöÇΓöÇΓöÇΓöÇΓö┤Γöÿ
  1304.  
  1305. Causes the SubProc called ProcName to start execution in its own separate 
  1306. thread. 
  1307.  
  1308. As many arguments as REXX allows (up to 16 currently) can be passed to the 
  1309. SubProc by specifying them after the SubProc name. 
  1310.  
  1311. The new thread runs asynchronously until it is suspended (RXSUSPENDTHREAD), is 
  1312. killed (RXKILLTHREAD), terminates of its own accord, or the parent session is 
  1313. closed. 
  1314.  
  1315. RXTHREAD returns the thread id if successful, otherwise it returns :- 
  1316.  
  1317. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1318. ΓöéReturn value             ΓöéReason                                  Γöé
  1319. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1320. Γöé"Out of memory"          ΓöéThere was not enough memory to start theΓöé
  1321. Γöé                         Γöéthread                                  Γöé
  1322. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1323. Γöé"Interrupt"              ΓöéThe system was interrupted during threadΓöé
  1324. Γöé                         Γöécreation and the thread was aborted     Γöé
  1325. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1326. Γöé"Protection violation"   ΓöéThe system encountered a protection     Γöé
  1327. Γöé                         Γöéviolation (accessing inaccesible memory Γöé
  1328. Γöé                         Γöéusually) while starting the thread. The Γöé
  1329. Γöé                         Γöéthread is aborted                       Γöé
  1330. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1331. Γöé"Too many threads"       ΓöéThe system could not create any more    Γöé
  1332. Γöé                         Γöéthreads. Check your THREADS= line in theΓöé
  1333. Γöé                         ΓöéCONFIG.SYS. It may be too low.          Γöé
  1334. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1335. Γöé"Unknown return code n"  ΓöéDosCreateThread returned an undocumentedΓöé
  1336. Γöé                         Γöéreturn code n                           Γöé
  1337. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1338.  
  1339. Note:  The value returned is the threadid required for use with other RxExtras 
  1340. thread functions. 
  1341.  
  1342. Note:  SubProcs started using RxThread CANNOT call other SubProcs or use global 
  1343. variables defined in VisPro/REXX. 
  1344.  
  1345. Note:  Global Variables such as those created by RxSetGlobal can be used. 
  1346.  
  1347. Note:  The author is working on removing these restrictions. 
  1348.  
  1349. Example: 
  1350.  
  1351.      tid = RxThread('SEARCH', window, listboxid, text)
  1352.  
  1353. Results: 
  1354.  
  1355.      tid will hold the thread id that was returned when the
  1356.      SubProc SEARCH was executed in parallel.
  1357.  
  1358.  
  1359. ΓòÉΓòÉΓòÉ 5.4.10. RxNap ΓòÉΓòÉΓòÉ
  1360.  
  1361. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1362. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  1363. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1364.  
  1365. ΓöÇΓöÇΓöÇRXNAP(ΓöÇΓöÇtimeΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1366.  
  1367.  
  1368. Puts a REXX program to sleep for a certain amount of time. 
  1369.  
  1370. The SysSleep function that comes with OS/2 will only put your program to sleep 
  1371. for whole seconds. 
  1372.  
  1373. If the time specified (in milliseconds) is invalid, or is not passed to the 
  1374. function, an INCORRECT CALL TO ROUTINE condition is raised from within REXX. 
  1375.  
  1376. Example: 
  1377.  
  1378.      Call RxNap 50       /* sleep for 1/20 of a second */
  1379.  
  1380. Results: 
  1381.  
  1382.      The REXX program will stop execution for 1/20 of a second
  1383.  
  1384.  
  1385. ΓòÉΓòÉΓòÉ 5.4.11. RxKillProcess ΓòÉΓòÉΓòÉ
  1386.  
  1387. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1388. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  1389. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1390.  
  1391. ΓöÇΓöÇΓöÇRXKILLPROCESS(ΓöÇΓöÇprocidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1392.  
  1393.  
  1394. Kills process procid. 
  1395.  
  1396. RXKILLPROCESS returns :- 
  1397.  
  1398. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1399. ΓöéReturn value             ΓöéReason                                  Γöé
  1400. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1401. Γöé"Killed"                 ΓöéProcess was successfully killed         Γöé
  1402. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1403. Γöé"Invalid data"           ΓöéAn internal error occurred - contact theΓöé
  1404. Γöé                         ΓöéRxExtras author.                        Γöé
  1405. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1406. Γöé"Invalid process id"     ΓöéThe parameter did not specify a valid   Γöé
  1407. Γöé                         Γöéprocess id.                             Γöé
  1408. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1409. Γöé"Zombie process"         ΓöéOS/2 considers the process unkillable.  Γöé
  1410. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1411. Γöé"Not a descendant        ΓöéWhen killing a tree of processes (not   Γöé
  1412. Γöéprocess"                 Γöéyet implemented), the process specified Γöé
  1413. Γöé                         Γöéwas not a descendant of the calling     Γöé
  1414. Γöé                         Γöéprocess.                                Γöé
  1415. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1416.  
  1417. Example: 
  1418.  
  1419.      If RxKillProcess(5) = "Killed" Then
  1420.         Say "Printing ceased"
  1421.  
  1422. Results: 
  1423.  
  1424.      Process number 5 is stopped permanently and
  1425.      rc should have the value "Killed"
  1426.  
  1427. Note:  See also RxKillThread. 
  1428.  
  1429.  
  1430. ΓòÉΓòÉΓòÉ 5.4.12. RxMatchWildCard ΓòÉΓòÉΓòÉ
  1431.  
  1432. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1433. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  1434. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1435.  
  1436. ΓöÇΓöÇΓöÇRXMATCHWILDCARD(ΓöÇΓöÇsourceΓöÇΓöÇ, ΓöÇΓöÇwildCardΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1437.  
  1438.  
  1439. RxMatchWildCard is used to search for and edit names of files and 
  1440. subdirectories.  Typically, it is used in conjunction with functions which do 
  1441. not permit the use of global file-name characters, to perform repetitive 
  1442. operations on files. 
  1443.  
  1444. An example of an editing operation is:- 
  1445.  
  1446.  source = "foo.bar"
  1447.  wildCard = "*.baz"
  1448.  Call RxMatchWildCard source, wildCard
  1449.  /* result = "FOO.BAZ" */
  1450.  
  1451. In the editing process, the string is changed to uppercase. 
  1452.  
  1453. Global file-name characters (?, *, .) have two uses:- searching and editing. 
  1454. If they are specified in source, they are interpreted as search characters; in 
  1455. wildCard, they are interpreted as editing characters. This difference can be 
  1456. illustrated with an example using the COPY utility.  The user types the 
  1457. following:- 
  1458.  
  1459.  copy *.old *.new
  1460.  
  1461. In the source, "*" acts as a search character and determines which files to 
  1462. return to the user. In the target, "*" functions as an editing character by 
  1463. constructing new names for the matched files. 
  1464.  
  1465. When used as search characters in source, global file-name characters simply 
  1466. match files and behave like any other search characters.  They have the 
  1467. following meanings:- 
  1468.  
  1469.  .         The period (.) has no special meaning itself, but "?"
  1470.            gives it one.
  1471.  
  1472.  *         The asterisk will form a match with any character,
  1473.            including a blank, or with the absence of a character.
  1474.            The matching operation does not cross the null
  1475.            character or the backslash (\), which means that only
  1476.            the file name is matched, not an entire path.
  1477.  
  1478.  ?         The question mark matches 1 character, unless what
  1479.            it would match is a "." or the terminating null
  1480.            characters, in which case it matches 0 characters.  It
  1481.            also does not cross "\".
  1482.  
  1483. Any character other than * and ? matches itself, including ".". 
  1484.  
  1485. Searching is not case-sensitive. 
  1486.  
  1487. If a file name does not have a period (.), an implicit one is automatically 
  1488. appended to the end during searching operations. For example, searching for 
  1489. "foo." would return "foo". 
  1490.  
  1491. When used in wildCard, global file-name characters have the following 
  1492. meanings:- 
  1493.  
  1494.  .         The period (.) in the target synchronizes pointers. It
  1495.            causes the source pointer to match a corresponding
  1496.            pointer to the period in the target.  Counting starts
  1497.            from the left of the pointers.
  1498.  
  1499.  ?         The question mark copies one character, unless what
  1500.            it would copy is a period (.), in which case it copies
  1501.            no characters. It also copies no characters when the
  1502.            end of the source string is reached.
  1503.  
  1504.  *         The asterisk copies characters from the source to the
  1505.            target until it finds a source character that matches
  1506.            the character following it in the target.
  1507.  
  1508. Editing is case-insensitive and case-preserving.  If conflicts arise between 
  1509. the case of the source and that of the editing string, the case of the editing 
  1510. string is used, for example:- 
  1511.  
  1512.  source string:      "file.txt"
  1513.  editing string:     "*E.TMP"
  1514.  result string: "filE.TMP"
  1515.  
  1516.  copy file.txt  *E.tmp  ->  filE.tmp
  1517.  
  1518. RXMATCHWILDCARD returns :- 
  1519.  
  1520. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1521. ΓöéReturn value             ΓöéReason                                  Γöé
  1522. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1523. Γöétext                     ΓöéThe result of editing the source and    Γöé
  1524. Γöé                         Γöéwildcard                                Γöé
  1525. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1526. Γöé"Invalid parameter"      ΓöéAn internal error occurred - contact theΓöé
  1527. Γöé                         ΓöéRxExtras author.                        Γöé
  1528. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1529. Γöé"Invalid name"           ΓöéEither the source or wildCard parameter Γöé
  1530. Γöé                         Γöédid not specify a valid string for      Γöé
  1531. Γöé                         Γöéediting.                                Γöé
  1532. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1533. Γöé"Unknown retured code x  ΓöéAn unknown return code was encountered. Γöé
  1534. Γöé                         ΓöéContact the author of RxExtras with the Γöé
  1535. Γöé                         Γöéreturn code info.                       Γöé
  1536. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1537.  
  1538. Example: 
  1539.  
  1540.      value = RxMatchWildCard('CONFIG.SYS', '*.BAK')
  1541.      Say "Creating a backup of your CONFIG.SYS in "value
  1542.  
  1543. Results: 
  1544.  
  1545.      Creating a backup of your CONFIG.SYS in CONFIG.BAK
  1546.  
  1547.  
  1548. ΓòÉΓòÉΓòÉ <hidden> RxChangeThreadPriority (threadID, delta) ΓòÉΓòÉΓòÉ
  1549.  
  1550. Changes the priority of the thread id specified by the delta amount specified. 
  1551.  
  1552. The delta value must be in the range -31 to +31. 
  1553.  
  1554.  
  1555. ΓòÉΓòÉΓòÉ <hidden> RxChangeThreadPriority (threadID, 'Minimum') ΓòÉΓòÉΓòÉ
  1556.  
  1557. Lowers the priority of the thread id specified by the most possible (-31).
  1558.  
  1559. Only the first two characters of the second parameter are significant. 
  1560.  
  1561.  
  1562. ΓòÉΓòÉΓòÉ <hidden> RxChangeThreadPriority (threadID, 'Maximum') ΓòÉΓòÉΓòÉ
  1563.  
  1564. Raises the priority of the thread id specified by the most possible (+31).
  1565.  
  1566. Only the first two characters of the second parameter are significant. 
  1567.  
  1568.  
  1569. ΓòÉΓòÉΓòÉ <hidden> RxChangeThreadPriority (threadID, '') ΓòÉΓòÉΓòÉ
  1570.  
  1571. Raises the priority of the thread id specified by the most possible (+31). 
  1572.  
  1573.  
  1574. ΓòÉΓòÉΓòÉ <hidden> RxSetThreadClass (threadID, 'REGULAR') ΓòÉΓòÉΓòÉ
  1575.  
  1576. Sets the class of the specified thread id to REGULAR. This is the class of 
  1577. applications running in the background. The application with focus runs at 
  1578. FOREGROUNDSERVER 
  1579.  
  1580.  
  1581. ΓòÉΓòÉΓòÉ <hidden> RxSetThreadClass (threadID, 'IDLE') ΓòÉΓòÉΓòÉ
  1582.  
  1583. Sets the class of the specified thread id to IDLE. This is one step less 
  1584. important than a normal application. 
  1585.  
  1586.  
  1587. ΓòÉΓòÉΓòÉ <hidden> RxSetThreadClass (threadID, 'FOREGROUNDSERVER') ΓòÉΓòÉΓòÉ
  1588.  
  1589. Sets the class of the specified thread id to FOREGROUNDSERVER. This is the 
  1590. class of the applications that currently has focus, or a server thread needing 
  1591. higher than normal CPU. 
  1592.  
  1593.  
  1594. ΓòÉΓòÉΓòÉ <hidden> RxSetThreadClass (threadID, 'TIMECRITICAL') ΓòÉΓòÉΓòÉ
  1595.  
  1596. Sets the class of the specified thread id to TIMECRITICAL. This should be used 
  1597. very sparingly as it can make the foreground applcation unresponsive, since a 
  1598. TIMECRITICAL thread gets more of the CPU than any FOREGROUNDSERVER thread. 
  1599.  
  1600.  
  1601. ΓòÉΓòÉΓòÉ 5.5. ListBox Objects ΓòÉΓòÉΓòÉ
  1602.  
  1603. These APIs deal with PM ListBox Objects.  They require a PM REXX-based program 
  1604. in order to function. 
  1605.  
  1606.  
  1607. ΓòÉΓòÉΓòÉ 5.5.1. RxAddItemAtIndex ΓòÉΓòÉΓòÉ
  1608.  
  1609. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1610. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1611. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1612.  
  1613. ΓöÇΓöÇΓöÇRXADDITEMATINDEX(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇ[lbid]ΓöÇΓöÇ,ΓöÇΓöÇrowΓöÇΓöÇ,ΓöÇΓöÇvalueΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1614.  
  1615.  
  1616. Inserts the entry value at line row into ListBox lbid of Window winid. 
  1617.  
  1618. If either winid or lbid are invalid, the rexx error condition INCORRECT CALL TO 
  1619. ROUTINE is raised. 
  1620.  
  1621. RXADDITEMATINDEX returns the index that the item was inserted at if successful, 
  1622. otherwise it returns :- 
  1623.  
  1624. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1625. ΓöéReturn    ΓöéReason                                  Γöé
  1626. Γöévalue     Γöé                                        Γöé
  1627. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1628. Γöé-1        ΓöéThere was not enough memory to insert   Γöé
  1629. Γöé          Γöéthe item into the list box              Γöé
  1630. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1631. Γöé-2        ΓöéAn error occurred inserting the item    Γöé
  1632. Γöé          Γöéinto the listbox                        Γöé
  1633. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1634.  
  1635. Example: 
  1636.  
  1637.      Call RxAddtItemAtIndex window, 1000, 4, 'This is the fourth line'
  1638.  
  1639. Results: 
  1640.  
  1641.      The ListBox with ID=1000 in window window receives a new row 4,
  1642.      the contents of which are 'This is the fourth line'.  Rows 5 and
  1643.      higher are shifted down 1 row.
  1644.      The REXX special variable result contains 4.
  1645.  
  1646.  
  1647. ΓòÉΓòÉΓòÉ 5.5.2. RxGetItemFromListBox ΓòÉΓòÉΓòÉ
  1648.  
  1649. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1650. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1651. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1652.  
  1653. ΓöÇΓöÇΓöÇRXGETITEMFROMLISTBOX(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1654.  
  1655.  
  1656. Retrieves the first selected item from ListBox lbid of Window winid. 
  1657.  
  1658. If either winid or lbid are invalid, the REXX error condition INCORRECT CALL TO 
  1659. ROUTINE is raised. 
  1660.  
  1661. If no items are selected, RXGETITEMFROMLISTBOX returns an empty string ("").
  1662.  
  1663. If winid and/or lbid are invalid, RXGETITEMFROMLISTBOX raises an INCORRECT CALL 
  1664. TO ROUTINE error from within REXX. Otherwise, RXGETITEMFROMLISTBOX returns the 
  1665. selected item. 
  1666.  
  1667. Note:  The VisPro/Rexx API VpGetItemValue will only return up to 256 characters 
  1668. for the retrieved item.  RxGetItemFromListBox will exactly what is in the 
  1669. listbox. 
  1670.  
  1671. Example: 
  1672.  
  1673.      row = RxGetItemFromListBox(window, 1000)
  1674.  
  1675. Results: 
  1676.  
  1677.      The first selected item in ListBox 1000 of window window is
  1678.      retrieved and placed in the variable row.
  1679.  
  1680.  
  1681. ΓòÉΓòÉΓòÉ 5.5.3. RxGetItemFromListBoxAtIndex ΓòÉΓòÉΓòÉ
  1682.  
  1683. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1684. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1685. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1686.  
  1687. ΓöÇΓöÇΓöÇRXGETITEMFROMLISTBOXATINDEX(ΓöÇΓöÇwindowΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ,ΓöÇΓöÇrowΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1688.  
  1689.  
  1690. Retrieves the line row from ListBox lbid of Window window. 
  1691.  
  1692. If no item exists at line row in window and/or lbid are invalid, 
  1693. RXGETITEMFROMLISTBOXATINDEX raises an INCORRECT CALL TO ROUTINE error from 
  1694. within REXX. 
  1695.  
  1696. Otherwise, RXGETITEMFROMLISTBOXATINDEX returns the item of choice. 
  1697.  
  1698. Note:  The VisPro/Rexx API VpGetItemValueAtIndex will only return up to 256 
  1699. characters for the retrieved item.  RxGetItemFromListBoxAtIndex will return 
  1700. whatever is in the listbox, with no limitations. 
  1701.  
  1702. Example: 
  1703.  
  1704.      row = RxGetItemFromListBoxAtIndex(window, 1000, 4)
  1705.  
  1706. Results: 
  1707.  
  1708.      If it exists, the item at line 4 in ListBox 1000 of window window
  1709.      is retrieved and placed in the variable row.
  1710.  
  1711.  
  1712. ΓòÉΓòÉΓòÉ 5.5.4. RxGetListBoxCount ΓòÉΓòÉΓòÉ
  1713.  
  1714. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1715. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1716. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1717.  
  1718. ΓöÇΓöÇΓöÇRXGETLISTBOXCOUNT(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1719.  
  1720.  
  1721. Retrieves the number of rows available in ListBox lbid of Window winid. 
  1722.  
  1723. If winid and/or lbid are invalid, RXGETLISTBOXCOUNT raises the INCORRECT CALL 
  1724. TO ROUTINE error condition from within REXX. Otherwise, RXGETLISTBOXCOUNT 
  1725. returns the number of available rows. 
  1726.  
  1727. Example: 
  1728.  
  1729.      items = RxGetListBoxCount(window, 1000)
  1730.  
  1731. Results: 
  1732.  
  1733.      The number of rows in ListBox 1000 of window window are placed
  1734.      in the variable items.
  1735.  
  1736.  
  1737. ΓòÉΓòÉΓòÉ 5.5.5. RxListBoxFromFile ΓòÉΓòÉΓòÉ
  1738.  
  1739. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1740. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1741. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1742.  
  1743. ΓöÇΓöÇΓöÇRXLISTBOXFROMFILE(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ,ΓöÇΓöÇfilenameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1744.                                    ΓööΓöÇlbidΓöÇΓöÿ
  1745.  
  1746. Places the contents of file filename into ListBox lbid of Window winid. 
  1747.  
  1748. If lbid is omitted, winid is assumed to be the handle of a list box. 
  1749.  
  1750. If winid and/or filename are invalid/inaccessible, RXLISTBOXFROMFILE raises an 
  1751. INCORRECT CALL TO ROUTINE condition from within REXX. Otherwise, 
  1752. RXLISTBOXFROMFILE returns a null string. 
  1753.  
  1754. Note:  For VisPro/Rexx, winid is passed to all events. 
  1755.  
  1756. Note:  This API appends to the end of any existing contents already in ListBox 
  1757. lbid. 
  1758.  
  1759. VisPro/REXX Example: 
  1760.  
  1761.      Call RxListBoxFromFile window, 1000, 'C:\Config.Sys'
  1762.  
  1763. VX-REXX Example: 
  1764.  
  1765.      window = VRGet("LB_1", "HWnd")
  1766.      Call RxListBoxFromFile window,, 'C:\Config.Sys'
  1767.  
  1768. Results: 
  1769.  
  1770.      The contents of C:\Config.Sys are placed into ListBox 1000 of
  1771.      window window (or listbox "LB_1" for VX-REXX).
  1772.  
  1773.  
  1774. ΓòÉΓòÉΓòÉ 5.5.6. RxListBoxFromStem ΓòÉΓòÉΓòÉ
  1775.  
  1776. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1777. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1778. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1779.  
  1780. ΓöÇΓöÇΓöÇRXLISTBOXFROMSTEM(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ,ΓöÇΓöÇstemname.ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1781.  
  1782.  
  1783. Places the contents of stem stemname into ListBox lbid of Window winid.  The 
  1784. trailing period to stemname. is required; results are unpredictable if not 
  1785. supplied. 
  1786.  
  1787. stemname.0 must contain the count of items to be placed into ListBox lbid.  All 
  1788. other occurrences for stemname must be numeric, from 1 to n, where n is the 
  1789. number contained in stemname.0. 
  1790.  
  1791. If winid and/or lbid are invalid, RXLISTBOXFROMSTEM raises an INCORRECT CALL TO 
  1792. ROUTINE from within REXX. Otherwise, RXLISTBOXFROMSTEM returns an empty string 
  1793. (""). 
  1794.  
  1795. Note:  This API appends to the end of any existing contents already in ListBox 
  1796. lbid. 
  1797.  
  1798. Example: 
  1799.  
  1800.      MyStem.0 = 2
  1801.      MyStem.1 = 'This will be the 1st line added'
  1802.      MyStem.2 = 'This will be the 2nd line added'
  1803.      Call RxListBoxFromStem window, 1000, 'MyStem.'
  1804.  
  1805. Results: 
  1806.  
  1807.      The contents of ListBox 1000 of window window will have 2 new
  1808.      rows.  The rows will be:
  1809.  
  1810.           This will be the 1st line added
  1811.           This will be the 2nd line added
  1812.  
  1813.  
  1814. ΓòÉΓòÉΓòÉ 5.5.7. RxListBoxItemHandle ΓòÉΓòÉΓòÉ
  1815.  
  1816. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1817. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1818. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1819.  
  1820. ΓöÇΓöÇΓöÇRXLISTBOXITEMHANDLE(ΓöÇΓöÇwindowΓöÇΓöÇ,ΓöÇ[ΓöÇΓöÇlistboxidΓöÇΓöÇ]ΓöÇ,ΓöÇΓöÇindexΓöÇΓöÇ[,ΓöÇΓöÇvalueΓöÇΓöÇ])ΓöÇΓöÇΓöÇ
  1821.  
  1822.  
  1823. This call either sets or queries some text associated with a ListBox item. It 
  1824. does not change the text of the item or affect it in any other way. 
  1825.  
  1826. If winid and/or index are invalid, RXLISTBOXFROMSTEM raises an INCORRECT CALL 
  1827. TO ROUTINE from within REXX. 
  1828.  
  1829. If the value parameter is omittted, RXLISTBOXITEMHANDLE returns the text 
  1830. associated with that list box item (it's handle). 
  1831.  
  1832. If the value parameter is specified, RXLISTBOXITEMHANDLE sets the text 
  1833. associated with that list box item to the value. 
  1834.  
  1835. If the listboxid  parameter is omitted, window is assumed to be the window 
  1836. handle of a listbox. 
  1837.  
  1838. VisPro/REXX Example: 
  1839.  
  1840.      Call RxListBoxItemHandle window, 1000, 1, 'Line 1 must not be deleted'
  1841.  
  1842. VX-REXX Example: 
  1843.  
  1844.      window = VRGet("LB_1", "HWnd")
  1845.      Call RxListBoxItemHandle window,, 1, 'Line 1 must not be deleted'
  1846.  
  1847. Results: 
  1848.  
  1849.      The first item (index 1) with have the text
  1850.      'Line 1 must not be deleted' associated with it.
  1851.  
  1852.      This text can be queried using RxListBoxItemHandle
  1853.      by omitting the value parameter.
  1854.  
  1855.  
  1856. ΓòÉΓòÉΓòÉ 5.5.8. RxListBoxToFile ΓòÉΓòÉΓòÉ
  1857.  
  1858. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1859. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1860. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1861.  
  1862. ΓöÇΓöÇΓöÇRXLISTBOXTOFILE(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇ[ΓöÇΓöÇlbidΓöÇΓöÇ]ΓöÇ,ΓöÇΓöÇfilenameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1863.  
  1864.  
  1865. Places the contents ListBox lbid of Window winid into file filename. 
  1866.  
  1867. If winid and/or filename are invalid/inaccessible, RXLISTBOXTOFILE raises the 
  1868. REXX INCORRECT CALL TO ROUTINE error condition. Otherwise, RXLISTBOXTOFILE 
  1869. returns an empty string (""). 
  1870.  
  1871. If lbid is omitted, winid is assumed to be the window handle of a listbox. 
  1872.  
  1873. Note:  This API erases all contents of file filename before writing to it. 
  1874.  
  1875. VisPro/REXX Example: 
  1876.  
  1877.      Call RxListBoxToFile window, 1000, 'C:\MyData.Dat'
  1878.  
  1879. VX-REXX Example: 
  1880.  
  1881.      window = VRGet("LB_1", "HWnd")
  1882.      Call RxListBoxToFile window,, 'C:\MyData.Dat'
  1883.  
  1884. Results: 
  1885.  
  1886.      The contents of ListBox 1000 of window window
  1887.      (or listbox "LB_1" for VX-REXX) are written to
  1888.      file C:\MyData.Dat.
  1889.  
  1890.  
  1891. ΓòÉΓòÉΓòÉ 5.5.9. RxListBoxToStem ΓòÉΓòÉΓòÉ
  1892.  
  1893. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1894. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1895. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1896.  
  1897. ΓöÇΓöÇΓöÇRXLISTBOXTOSTEM(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ,ΓöÇΓöÇstemname.ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1898.  
  1899.  
  1900. Places the contents of ListBox lbid of Window winid into stem stemname.  The 
  1901. trailing period to stemname. is required; results are unpredictable if not 
  1902. supplied. 
  1903.  
  1904. stemname.0 will contain the count of items to placed into it from ListBox lbid. 
  1905. All other occurrences for stemname will be numeric, from 1 to n, where n is the 
  1906. number contained in stemname.0. 
  1907.  
  1908. If winid and/or lbid are invalid, RXLISTBOXTOSTEM raises the REXX error 
  1909. condition INCORRECT CALL TO ROUTINE. Otherwise, RXLISTBOXTOSTEM returns an 
  1910. empty string (""). 
  1911.  
  1912. Note:  This API destroyes any existing contents already in stem stemname. 
  1913.  
  1914. Example: 
  1915.  
  1916.      Call RxListBoxToStem window, 1000, 'MyStem.'
  1917.  
  1918. Results: 
  1919.  
  1920.      The contents of ListBox 1000 of window window will be copied
  1921.      to stem MyStem.  Assuming there are 2 rows in ListBox 1000,
  1922.      MyStem.0 will contain 2, and occurrences will exist for MyStem.1
  1923.      and MyStem.2.
  1924.  
  1925.  
  1926. ΓòÉΓòÉΓòÉ 5.5.10. RxScrollListBox ΓòÉΓòÉΓòÉ
  1927.  
  1928. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1929. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1930. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1931.  
  1932. ΓöÇΓöÇΓöÇRXSCROLLISTBOX(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇ[ΓöÇΓöÇlbidΓöÇΓöÇ]ΓöÇ,ΓöÇΓöÇnumLinesToScroll.ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1933.  
  1934.  
  1935. Scrolls the ListBox lbid of Window winid by numLinesToScroll lines. A negative 
  1936. value should be used to scroll up, a positive value to scroll the listbox down. 
  1937.  
  1938. If winid and/or lbid are invalid, RXSCROLLLISTBOX raises the REXX error 
  1939. condition INCORRECT CALL TO ROUTINE. 
  1940.  
  1941. If lbid is omitted, winid is assumed to be the window handle of a listbox. 
  1942.  
  1943. if numLinesToScroll is not numeric, the listbox is simply not scrolled. 
  1944.  
  1945. Otherwise, RXSCROLLLISTBOX returns an empty string (""). 
  1946.  
  1947. VisPro/REXX Example: 
  1948.  
  1949.      Call RxScrollListBox window, 1000, -3
  1950.  
  1951. VX-REXX Example: 
  1952.  
  1953.      window = VRGet("LB_1", "HWnd")
  1954.      Call RxScrollListBox window,, -3
  1955.  
  1956. Results: 
  1957.  
  1958.      The contents of ListBox 1000 (or the listbox called
  1959.      "LB_1" for VX-REXX) of window window
  1960.      will be scrolled up 3 lines
  1961.  
  1962.  
  1963. ΓòÉΓòÉΓòÉ 5.5.11. RxSearchItem ΓòÉΓòÉΓòÉ
  1964.  
  1965. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1966. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  1967. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1968.  
  1969. Searches a listbox for text. Doesn't have to be an entire line, it can be text 
  1970. contained within one line of a listbox. 
  1971.  
  1972. RxSearchItem returns the line in the listbox that holds the text. 
  1973.  
  1974. ΓöÇΓöÇΓöÇRXSEARCHITEM(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇlbidΓöÇΓöÇ,ΓöÇΓö¼ΓöÇ''ΓöÇΓöÇΓöÇΓö¼ΓöÇ,ΓöÇΓöÇrowΓöÇΓöÇ,ΓöÇΓö¼ΓöÇ'F'ΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  1975.                                       ΓööΓöÇmaskΓöÇΓöÿ           ΓööΓöÇ'B'ΓöÇΓöÿ
  1976.  
  1977.  
  1978. Searches ListBox lbid of Window winid, starting at line row, for a line 
  1979. containing the characters mask.  The search will procede forward or backward, 
  1980. depending on the use of 'F' or 'B', respectively. 
  1981.  
  1982. If winid and/or lbid are invalid, RXSEARCHITEM raises the REXX error condition 
  1983. INCORRECT CALL TO ROUTINE. Otherwise, RXSEARCHITEM returns the index number of 
  1984. the first matching line, or 0 if no lines were found to match mask. 0 is used 
  1985. to indicate no match. 
  1986.  
  1987. Note:  If NULL (i.e., '') is used for mask, the first item tested will match. 
  1988. RXSEARCHITEM can therefore be used to retrieve the index of the last item in 
  1989. ListBox lbid. 
  1990.  
  1991. Example: 
  1992.  
  1993.      JohnIsAt = RxSearchItem(window, 1000, 'John Smith', 1, 'F')
  1994.  
  1995. Results: 
  1996.  
  1997.      The contents of ListBox 1000 of window window will be searched,
  1998.      starting at row 1 and proceding in a forward direction, looking
  1999.      for any row that contains the characters 'John Smith'.  If found,
  2000.      variable JohnIsAt will contain the index (row number) of the
  2001.      matching entry.  Otherwise, JohnIsAt will contain 0.
  2002.  
  2003.  
  2004. ΓòÉΓòÉΓòÉ 5.6. PushButton Objects ΓòÉΓòÉΓòÉ
  2005.  
  2006. These APIs deal with PM PushButton Objects.  They require a PM REXX-based 
  2007. program in order to function. 
  2008.  
  2009.  
  2010. ΓòÉΓòÉΓòÉ 5.6.1. RxMorphButtonToIcon ΓòÉΓòÉΓòÉ
  2011.  
  2012. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2013. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2014. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2015.  
  2016. ΓöÇΓöÇΓöÇRXMORPHBUTTONTOICON(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ,ΓöÇΓöÇΓö¼ΓöÇVpLoadPictureHandleΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2017.                                       ΓööΓöÇpbidΓöÇΓöÿ ΓööΓöÇDLLnameΓöÇΓöÇ,ΓöÇΓöÇresourceΓöÇΓöÿ
  2018.  
  2019.  
  2020. Converts a standard PushButton object pbid of window winid into a "Toolbox" 
  2021. button. 
  2022.  
  2023. If any arguments are invalid or inaccessible, RXMORPHBUTTONTOICON raises the 
  2024. REXX error condition INCORRECT CALL TO ROUTINE. Otherwise, RXMORPHBUTTONTOICON 
  2025. returns an empty string (""). 
  2026.  
  2027. If pbid is ommitted, winid is assumed to be the window handle of a pushbutton. 
  2028.  
  2029. Note:  The use of VpLoadPictureHandle requires VisPro/Rexx.  You must call 
  2030. VpLoadPicture and obtain the handle. 
  2031.  
  2032. Note:  The use of DLLName, resource can be used by any PM REXX-based program, 
  2033. and retrieves the requested icon.  If DLLname is in your LIBPATH, do not 
  2034. specify an extension of '.DLL'. 
  2035.  
  2036. Note:  In order to make the window appear to start-up with your required icons, 
  2037. you should call RXMORPHBUTTONTOICON immediately at entry to your program, when 
  2038. the window is being opened.  Otherwise, the user will see the buttons change 
  2039. appearance. 
  2040.  
  2041. VisPro/REXX Example: 
  2042.  
  2043.      value = VpLoadPicture('FILE','C:\TEMP\OS2CMD.ICO')
  2044.      Call RxMorphButtonToIcon window, 2000, value
  2045.  
  2046. Note:  VX-REXX can only use the DLLname and resource form of this API. 
  2047.  
  2048. VX-REXX Example: 
  2049.  
  2050.      window = VRGet("PB_1", "HWnd")
  2051.      Call RxMorphButtonToIcon window,, 'PMWP', 13
  2052.  
  2053. Results: 
  2054.  
  2055.      The PushButton with ID=2000 in window 'window'
  2056.      (or specified by window for VX-REXX) is changed to an
  2057.      OS/2 Command-Prompt icon (stored previously in
  2058.      C:\TEMP\OS2CMD.ICO, or as ICON number 13 in PMWP.DLL)
  2059.  
  2060.  
  2061. ΓòÉΓòÉΓòÉ 5.7. SpinButton Objects ΓòÉΓòÉΓòÉ
  2062.  
  2063. These APIs deal with PM SpinButton Objects.  They require a PM REXX-based 
  2064. program in order to function. 
  2065.  
  2066.  
  2067. ΓòÉΓòÉΓòÉ 5.7.1. RxSetSpinButtonCharRange ΓòÉΓòÉΓòÉ
  2068.  
  2069. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2070. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2071. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2072.  
  2073. ΓöÇΓöÇΓöÇRXSETSPINBUTTONCHARRANGE(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇ[sbid]ΓöÇΓöÇ,ΓöÇΓöÇlowΓöÇΓöÇ,ΓöÇΓöÇhighΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2074.  
  2075.  
  2076. Sets the SpinButton sbid of Window winid to include the ASCII character range 
  2077. low through high. Only the first character of low and high are used. 
  2078.  
  2079. If winid is invalid, RXSETSPINBUTTONCHARRANGE raises the REXX error condition 
  2080. INCORRECT CALL TO ROUTINE. 
  2081.  
  2082. If sbid is omitted, winid should be the PM window handle (HWnd) of a 
  2083. spinbutton. 
  2084.  
  2085. Otherwise, RXSETSPINBUTTONCHARRANGE returns an empty string (""). 
  2086.  
  2087. VisPro/REXX Example: 
  2088.  
  2089.      Call RxSetSpinButtonCharRange Hwindow, 4000, 'a', 'z'
  2090.  
  2091. VX-REXX Example: 
  2092.  
  2093.      Call RxSetSpinButtonCharRange VRGet("SPIN_1", "Hwnd),, 'a', 'z'
  2094.  
  2095. Results: 
  2096.  
  2097.      The SpinButton (with ID=4000 for VisPro/REXX and called SPIN_1
  2098.      in VX-REXX) now contains the selection character set
  2099.      'a' through 'z', inclusive.
  2100.  
  2101.  
  2102. ΓòÉΓòÉΓòÉ 5.7.2. RxSetSpinButtonRangeFromStem ΓòÉΓòÉΓòÉ
  2103.  
  2104. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2105. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2106. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2107.  
  2108. ΓöÇΓöÇΓöÇRXSETSPINBUTTONRANGEFROMSTEM(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇ[sbid]ΓöÇΓöÇ,ΓöÇΓöÇstemname.ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2109.  
  2110.  
  2111. Sets the SpinButton sbid of Window winid to include the values found in stem 
  2112. stemname.  The trailing period to stemname. is required; results are 
  2113. unpredictable if not supplied. 
  2114.  
  2115. stemname.0 must contain the number of values to assign to SpinButton sbid. All 
  2116. other occurences of stemname should contain the values desired for sbid, and be 
  2117. in the range 1 to n, where n is the value contained in stemname.0. 
  2118.  
  2119. If winid is invalid, RXSETSPINBUTTONRANGEFROMSTEM raises the REXX error 
  2120. condition INCORRECT CALL TO ROUTINE. 
  2121.  
  2122. If sbid is omitted, winid should be the PM window handle (HWnd) of a 
  2123. spinbutton. 
  2124.  
  2125. Otherwise, RXSETSPINBUTTONRANGEFROMSTEM returns an empty string (""). 
  2126.  
  2127. VisPro/REXX Example: 
  2128.  
  2129.      days.0 =     7;   days.1 = 'Sun';   days.2 = 'Mon';   days.3 = 'Tue';
  2130.      days.4 = 'Wed';   days.5 = 'Thu';   days.6 = 'Fri';   days.7 = 'Sat';
  2131.      Call RxSetSpinButtonRangeFromStem Hwindow, 4000, 'days.'
  2132.  
  2133. VX-REXX Example: 
  2134.  
  2135.      days.0 =     7;   days.1 = 'Sun';   days.2 = 'Mon';   days.3 = 'Tue';
  2136.      days.4 = 'Wed';   days.5 = 'Thu';   days.6 = 'Fri';   days.7 = 'Sat';
  2137.      Call RxSetSpinButtonRangeFromStem VRGet("SPIN_1", "HWnd"),, 'days.'
  2138.  
  2139. Results: 
  2140.  
  2141.      The SpinButton (with ID=4000 in VisPro/REXX and called SPIN_1
  2142.      in VX-REXX) now contains the  selection character set
  2143.      'Sun', 'Mon', 'Tue', 'Wed' etc.
  2144.  
  2145.  
  2146. ΓòÉΓòÉΓòÉ 5.7.3. RxSetSpinButtonRangeWithIncrement ΓòÉΓòÉΓòÉ
  2147.  
  2148. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2149. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2150. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2151.  
  2152. ΓöÇΓöÇΓöÇRXSETSPINBUTTONRANGEWITHINCREMENT(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇ[sbid]ΓöÇΓöÇ,ΓöÇΓöÇlowΓöÇΓöÇ,ΓöÇΓöÇhighΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇ
  2153.  
  2154.  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇincrementΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ)ΓöÇΓöÇ
  2155.  
  2156.  
  2157. Sets the SpinButton sbid of Window winid to the numeric range of low to high, 
  2158. in incriments of incriment. 
  2159.  
  2160. If winid is invalid, RXSETSPINBUTTONRANGEWITHINCRIMENT raises the REXX error 
  2161. condition INCORRECT CALL TO ROUTINE. 
  2162.  
  2163. If sbid is omitted, winid should be the PM window handle (HWnd) of a 
  2164. spinbutton. 
  2165.  
  2166. Otherwise, RXSETSPINBUTTONRANGEWITHINCRIMENT returns an empty string (""). 
  2167.  
  2168. VisPro/REXX Example: 
  2169.  
  2170.      Call RxSetSpinButtonRangeWithIncrment window, 4000, 0, 10000, 2000
  2171.  
  2172. VX-REXX Example 
  2173.  
  2174.      Call RxSetSpinButtonRangeWithIncrement VRGet("SPIN_1", "HWnd"),,0,10000,2000
  2175.  
  2176. Results: 
  2177.  
  2178.      The SpinButton (with ID=4000 or called SPIN_1) now contains the
  2179.      selection numeric set 0, 2000, 4000, 6000, 8000, and 10000.
  2180.  
  2181. Note:  The maximum number of discrete values that this function can store in a 
  2182. spin button is 4096. 
  2183.  
  2184.  
  2185. ΓòÉΓòÉΓòÉ 5.8. Window Objects ΓòÉΓòÉΓòÉ
  2186.  
  2187. These APIs deal with OS/2 Windows and PM window types & hierarchies.  They 
  2188. require a window handle, therefore, a PM REXX-based program in order to 
  2189. function. 
  2190.  
  2191.  
  2192. ΓòÉΓòÉΓòÉ 5.8.1. RxMaximize ΓòÉΓòÉΓòÉ
  2193.  
  2194. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2195. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2196. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2197.  
  2198. ΓöÇΓöÇΓöÇRXMAXIMIZE(ΓöÇΓöÇwinidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2199.  
  2200.  
  2201. Causes window winid to become maximized. 
  2202.  
  2203. If winid is invalid, RXMAXIMIZE raises the REXX error condition INCORRECT CALL 
  2204. TO ROUTINE. 
  2205.  
  2206. If an error occurs, RXMAXIMIZE returns "Error occured trying to maximize", 
  2207. otherwise, RXMAXIMIZE returns an empty string (""). 
  2208.  
  2209. VisPro/REXX Example: 
  2210.  
  2211.      Call RxMaximize window
  2212.  
  2213. VX-REXX Example: 
  2214.  
  2215.      HWnd = VRGet("MyWindow", "HWnd")
  2216.      Call RxMaximize HWnd
  2217.  
  2218. Results: 
  2219.  
  2220.      The window 'window' is maximized.
  2221.  
  2222.  
  2223. ΓòÉΓòÉΓòÉ 5.8.2. RxMinimize ΓòÉΓòÉΓòÉ
  2224.  
  2225. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2226. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2227. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2228.  
  2229. ΓöÇΓöÇΓöÇRXMINIMIZE(ΓöÇΓöÇwinidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2230.  
  2231.  
  2232. Causes window winid to become minimized. 
  2233.  
  2234. If winid is invalid, RXMINIMIZE raises the REXX error condition INCORRECT CALL 
  2235. TO ROUTINE. 
  2236.  
  2237. If RXMINIMIZE encounters an error, it returns "Error trying to minimize", 
  2238. otherwise, RXMINIMIZE returns an empty string (""). 
  2239.  
  2240. VisPro/REXX Example: 
  2241.  
  2242.      Call RxMinimize window
  2243.  
  2244. VX-REXX Example: 
  2245.  
  2246.      HWnd = VRGet("MyWindow", "HWnd")
  2247.      Call RxMinimize HWnd
  2248.  
  2249. Results: 
  2250.  
  2251.      The window 'window' is minimized.
  2252.  
  2253.  
  2254. ΓòÉΓòÉΓòÉ 5.8.3. RxQueryClassName ΓòÉΓòÉΓòÉ
  2255.  
  2256. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2257. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2258. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2259.  
  2260. ΓöÇΓöÇΓöÇRXQUERYCLASSNAME(ΓöÇΓöÇwinidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2261.  
  2262.  
  2263. Returns the Class Name for window winid. 
  2264.  
  2265. If winid is invalid, RXQUERYCLASSNAME raises the REXX error condition INCORRECT 
  2266. CALL TO ROUTINE. 
  2267.  
  2268. If an error occurs, RXQUERYCLASSNAME returns "Error trying to query classs 
  2269. name", otherwise, RXQUERYCLASSNAME returns the PM Class Name for the window. 
  2270.  
  2271. VisPro/REXX Example: 
  2272.  
  2273.      WinClass =  RxQueryClassName(window)
  2274.  
  2275. VX-REXX Example: 
  2276.  
  2277.      HWnd = VRGet("MyWindow", "HWnd")
  2278.      WinClass = RxQueryClassName(HWnd)
  2279.  
  2280. Results: 
  2281.  
  2282.      The Class Name of window 'window' is placed in the variable WinClass.
  2283.  
  2284.  
  2285. ΓòÉΓòÉΓòÉ 5.8.4. RxQueryWindow ΓòÉΓòÉΓòÉ
  2286.  
  2287. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2288. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2289. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2290.  
  2291. ΓöÇΓöÇΓöÇRXQUERYWINDOW(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓö¼ΓöÇ'Owner'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ)ΓöÇΓöÇΓöÇ
  2292.                               Γö£ΓöÇ'Parent'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2293.                               Γö£ΓöÇ'Next'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2294.                               Γö£ΓöÇ'Prev'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2295.                               Γö£ΓöÇ'Top'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2296.                               Γö£ΓöÇ'Bottom'ΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2297.                               Γö£ΓöÇ'NextTop'ΓöÇΓöÇΓöÇΓöÇΓöñ
  2298.                               Γö£ΓöÇ'PrevTop'ΓöÇΓöÇΓöÇΓöÇΓöñ
  2299.                               ΓööΓöÇ'FrameOwner'ΓöÇΓöÿ
  2300.  
  2301.  
  2302. Returns the window handle for the requested related window to winid. 
  2303.  
  2304. Double-click on each window relation above for further information. 
  2305.  
  2306. If winid is invalid, RXQUERYWINDOW raises the REXX error condition INCORRECT 
  2307. CALL TO ROUTINE. Otherwise, RXQUERYWINDOW returns the requested PM window 
  2308. handle, in decimal. 
  2309.  
  2310. VisPro/REXX Example: 
  2311.  
  2312.      WinParent =  RxQueryWindow(window, 'Parent')
  2313.  
  2314. VX-REXX Example: 
  2315.  
  2316.      HWnd = VRGet("MyWindow", "HWnd")
  2317.      WinParent =  RxQueryWindow(HWnd, 'Parent')
  2318.  
  2319. Results: 
  2320.  
  2321.      The parent window handle, in decimal, for window 'window'
  2322.      is placed in the variable WinParent.
  2323.  
  2324.  
  2325. ΓòÉΓòÉΓòÉ 5.8.5. RxRestore ΓòÉΓòÉΓòÉ
  2326.  
  2327. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2328. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2329. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2330.  
  2331. ΓöÇΓöÇΓöÇRXRESTORE(ΓöÇΓöÇwinidΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2332.  
  2333. Restores window winid to its normal state after being maximized or minimized. 
  2334.  
  2335. If winid is invalid, RXRESTORE raises the REXX error condition INCORRECT CALL 
  2336. TO ROUTINE. 
  2337.  
  2338. If an error occurs, RXRESTORE returns "Error trying to restore", otherwise, 
  2339. RXRESTORE restores the requested PM window, and returns an empty string (""). 
  2340.  
  2341. VisPro/REXX Example: 
  2342.  
  2343.      Call RxRestore window
  2344.  
  2345. VX-REXX Example: 
  2346.  
  2347.      HWnd = VRGet("MyWindow", "HWnd")
  2348.      Call RxRestore HWnd
  2349.  
  2350. Results: 
  2351.  
  2352.      Restores the window 'window' from a minimised state.
  2353.  
  2354.  
  2355. ΓòÉΓòÉΓòÉ 5.8.6. RxSetIcon ΓòÉΓòÉΓòÉ
  2356.  
  2357. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2358. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2359. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2360.  
  2361. ΓöÇΓöÇΓöÇRXSETICON(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓöÇΓö¼ΓöÇVpLoadPictureHandleΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2362.                            ΓööΓöÇDLLnameΓöÇΓöÇ,ΓöÇΓöÇresourceΓöÇΓöÿ
  2363.  
  2364.  
  2365. Sets the icon for a window. 
  2366.  
  2367. This icon is the one used when a window is minimized. 
  2368.  
  2369. If winid is invalid, RXSETICON raises the REXX error condition INCORRECT CALL 
  2370. TO ROUTINE. 
  2371.  
  2372. If an error occurs loading the icon from a DLL, RXSETICON returns "Error 
  2373. loading icon from DLL". 
  2374.  
  2375. If an error occurs setting the icon, RXSETICON returns "Error setting icon". 
  2376.  
  2377. Otherwise RXSETICON returns an empty string (""). 
  2378.  
  2379. Note:  There are many icons held within the Work Place Shell DLL's. An 
  2380. ICONS.CMD file, which is part of the REXXUTIL information that IBM supplies on 
  2381. CIS or BBS's, can show you most of these. If you would like this file, please 
  2382. contact the author of RxExtras. 
  2383.  
  2384. VisPro/REXX Example: 
  2385.  
  2386.      value = VpLoadPicture('FILE', 'C:\TEMP.ICO');
  2387.      FrameWindow = RxQueryWindow(RxQueryWindow(window, 'parent'), 'parent')
  2388.      Call RxSetIcon FrameWindow, value
  2389.  
  2390. Note:  VX-REXX programs can only use the DLL and resource number form of this 
  2391. API. 
  2392.  
  2393. VX-REXX Example: 
  2394.  
  2395.      HWnd = VRGet("MyWindow", "HWnd")
  2396.      FrameWindow = RxQueryWindow(HWnd, 'parent')
  2397.      Call RxSetIcon FrameWindow, 'PMWP', 13
  2398.  
  2399. Results: 
  2400.  
  2401.      Loads an icon from C:\TEMP.ICO (or PMWP.DLL icon number 13).
  2402.      Calculates the Frame Window (the one that the user interacts with)
  2403.         from the window passed to a VisPro/REXX event (or VX-REXX object).
  2404.      Sets the minimized icon for the window passed.
  2405.  
  2406.  
  2407. ΓòÉΓòÉΓòÉ 5.8.7. RxWindowSetFocus ΓòÉΓòÉΓòÉ
  2408.  
  2409. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2410. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2411. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2412.  
  2413. ΓöÇΓöÇΓöÇRXWINDOWSETFOCUS(ΓöÇΓöÇwindowΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2414.  
  2415. Switches focus to window window. 
  2416.  
  2417. If window is an invalid string, RXWINDOWSETFOCUS raises the REXX error 
  2418. condition INCORRECT CALL TO ROUTINE. 
  2419.  
  2420. If an error occurs, RXWINDOWSETFOCUS returns "Error setting focus", otherwise, 
  2421. RXWINDOWSETFOCUS sets the focus to the window requested and returns an empty 
  2422. string (""). 
  2423.  
  2424. You can use this call to bring a VisPro/REXX form to the foreground when 
  2425. necessary. window can be the variable passed to as an argument to all 
  2426. VisPro/REXX events, or it could be the value returned from a VpOpenForm call. 
  2427.  
  2428. VisPro/REXX Example: 
  2429.  
  2430.      Call  RxWindowSetFocus window
  2431.  
  2432. VX-REXX Example: 
  2433.  
  2434.      HWnd = VRGet("MyWindow", "HWnd")
  2435.      Call  RxWindowSetFocus HWnd
  2436.  
  2437. Results: 
  2438.  
  2439.      Switches focus to the window 'window'.
  2440.  
  2441.  
  2442. ΓòÉΓòÉΓòÉ 5.8.8. RxWindowSetOwner ΓòÉΓòÉΓòÉ
  2443.  
  2444. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2445. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2446. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2447.  
  2448. ΓöÇΓöÇΓöÇRXWINDOWSETOWNER(ΓöÇΓöÇwindowΓöÇΓöÇ,ΓöÇΓöÇowningWindowΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2449.  
  2450. Sets the owner of window to be owningWindow. This has the effect of making 
  2451. window always 'stay on top' of owningWindow. 
  2452.  
  2453. If window and/or owningWindow is an invalid string, RXWINDOWSETFOCUS raises the 
  2454. REXX error condition INCORRECT CALL TO ROUTINE. 
  2455.  
  2456. If an error occurs, RXWINDOWSETOWNER returns "Error setting owner", otherwise, 
  2457. RXWINDOWSETOWNER sets the owner of the first window to the second window passed 
  2458. and returns an empty string (""). 
  2459.  
  2460. You can use this call to make a window stay on top of another window, even when 
  2461. the other window is explicitly given focus by the user. 
  2462.  
  2463. VisPro/REXX Example: 
  2464.  
  2465.      value = VpOpenForm(window, 257, 'topic of secondary form')
  2466.      Call  RxWindowSetFocus window, value
  2467.  
  2468. VX-REXX Example: 
  2469.  
  2470.      window = VRGet("MyWindow", "HWnd")
  2471.      value = VRGet("MySecondWindow", "HWnd")
  2472.      Call  RxWindowSetOwner window, value
  2473.  
  2474. Results: 
  2475.  
  2476.      Makes the window whose handle is in the variable 'value', stay
  2477.      on top of the window whose handle is in the variable 'window'.'
  2478.  
  2479.  
  2480. ΓòÉΓòÉΓòÉ 5.8.9. RxWindowQueryText ΓòÉΓòÉΓòÉ
  2481.  
  2482. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2483. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2484. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2485.  
  2486. ΓöÇΓöÇΓöÇRXWINDOWQUERYTEXT(ΓöÇΓöÇwindowΓöÇΓöÇ[,ΓöÇΓöÇidΓöÇΓöÇ]ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2487.  
  2488. Returns the text of the window identified by either the window alone, or by the 
  2489. window and an id This will give you the text of an entry field or MLE, or 
  2490. static text. 
  2491.  
  2492. If window is an invalid string, RXWINDOWQUERYTEXT raises the REXX error 
  2493. condition INCORRECT CALL TO ROUTINE. 
  2494.  
  2495. This function was written specifically to correct bugs with MLE's in 
  2496. VisPro/REXX V1.1. 
  2497.  
  2498. VisPro/REXX Example: 
  2499.  
  2500.      value = RxWindowQueryText(window, 1001)
  2501.      /* id 1001 is an MLE */
  2502.  
  2503. VX-REXX Example: 
  2504.  
  2505.      HWnd = VRGet("MLE_1", "HWnd")
  2506.      value = RxWindowQueryText(HWnd)
  2507.  
  2508. Results: 
  2509.  
  2510.     Places the text of the window into the variable value.
  2511.  
  2512.  
  2513. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'Owner') ΓòÉΓòÉΓòÉ
  2514.  
  2515. Requests the Owner window handle of winid.  The Owner window is the one which 
  2516. window winid is dependent upon.  Quite frequently, this is the same as 
  2517. 'Parent'. 
  2518.  
  2519.  
  2520. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'Parent') ΓòÉΓòÉΓòÉ
  2521.  
  2522. Requests the Parent window handle of winid.  The Parent window is the one that 
  2523. causes window winid to be initialized. 
  2524.  
  2525.  
  2526. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'Next') ΓòÉΓòÉΓòÉ
  2527.  
  2528. Requests the Next window handle, in z-order, of winid.  This is the next window 
  2529. at the same "level" as window winid. 
  2530.  
  2531.  
  2532. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'Prev') ΓòÉΓòÉΓòÉ
  2533.  
  2534. Requests the Previous window handle, in z-order, of winid.  This is the 
  2535. previous window at the same "level" as window winid. 
  2536.  
  2537.  
  2538. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'Top') ΓòÉΓòÉΓòÉ
  2539.  
  2540. Requests the Topmost (first) "child" window handle of winid.  This is the first 
  2541. window that window winid caused to be initialized. 
  2542.  
  2543.  
  2544. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'Bottom') ΓòÉΓòÉΓòÉ
  2545.  
  2546. Requests the Bottommost (last) "child" window handle of winid.  This is the 
  2547. last window that window winid caused to be initialized. 
  2548.  
  2549.  
  2550. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'NextTop') ΓòÉΓòÉΓòÉ
  2551.  
  2552. Requests the next window, in z-order, of the owner window hierarchy for winid. 
  2553. See 'Owner'. 
  2554.  
  2555.  
  2556. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'PrevTop') ΓòÉΓòÉΓòÉ
  2557.  
  2558. Requests the previous window, in enumeration order defined by NextTop, of the 
  2559. owner window hierarchy for winid.  See 'Owner'. 
  2560.  
  2561.  
  2562. ΓòÉΓòÉΓòÉ <hidden> RxQueryWindow (winid,'FrameOwner') ΓòÉΓòÉΓòÉ
  2563.  
  2564. Requests the owner of winid, normalized so that it shares the same window as 
  2565. its Parent. 
  2566.  
  2567.  
  2568. ΓòÉΓòÉΓòÉ 5.9. Free Form window Objects ΓòÉΓòÉΓòÉ
  2569.  
  2570. These APIs deal with VisPro/REXX Free Form Window Objects.  They require a PM 
  2571. REXX-based program in order to function. 
  2572.  
  2573.  
  2574. ΓòÉΓòÉΓòÉ 5.9.1. RxDrawBitmap ΓòÉΓòÉΓòÉ
  2575.  
  2576. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2577. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2578. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2579.  
  2580. ΓöÇΓöÇΓöÇRXDRAWBITMAP(ΓöÇΓöÇwinidΓöÇΓöÇ,ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ,ΓöÇΓöÇΓö¼ΓöÇVpLoadPictureHandleΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2581.                               ΓööΓöÇpbidΓöÇΓöÿ ΓööΓöÇDLLnameΓöÇΓöÇ,ΓöÇΓöÇresourceΓöÇΓöÿ
  2582.  
  2583.  
  2584. Draws a bitmap in a free form window of id ffid in window winid. 
  2585.  
  2586. RXDRAWBITMAP will stretch the bitmap to take up the entire size of the free 
  2587. form window. 
  2588.  
  2589. If any arguments are invalid or inaccessible, RXDRAWBITMAP raises the REXX 
  2590. error condition INCORRECT CALL TO ROUTINE. 
  2591.  
  2592. If there is an error loading the bitmap from a DLL, RXDRAWBITMAP will return 
  2593. "Error loading bitmap from DLL". 
  2594.  
  2595. Otherwise, RXDRAWBITAMP returns an empty string (""). 
  2596.  
  2597. If pbid is ommitted, winid is assumed to be a valid window handle. 
  2598.  
  2599. Note:  The use of VpLoadPictureHandle requires VisPro/Rexx.  You must call 
  2600. VpLoadPicture and obtain the handle. 
  2601.  
  2602. Note:  The use of DLLName, resource can be used by any PM REXX-based program, 
  2603. and retrieves the requested bitmap.  If DLLname is in your LIBPATH, do not 
  2604. specify an extension of '.DLL'. 
  2605.  
  2606. VisPro/REXX Example: 
  2607.  
  2608.      value = VpLoadPicture('FILE','C:\OS2\BITMAP\OS2LOGO.BMP')
  2609.      Call RxDrawBitmap window, 2000, value
  2610.  
  2611. VX-REXX Example: 
  2612.  
  2613.      window = VRGet("MyWindow", "HWnd")
  2614.      Call RxDrawBitmap window,, 'MYDLL', 3
  2615.  
  2616. Results: 
  2617.  
  2618.      The Free Form window with ID=2000 in the window 'window'
  2619.      has the OS2LOGO bitmap drawn inside it. (For the VX-REXX
  2620.      example, the bitmap with number 3 in MYDLL.DLL is drawn in window
  2621.      'MyWindow'.)
  2622.  
  2623. Note:  This API may work with other window types, it just has not been tested 
  2624. with them. 
  2625.  
  2626.  
  2627. ΓòÉΓòÉΓòÉ 5.10. Clipboard Objects ΓòÉΓòÉΓòÉ
  2628.  
  2629. These APIs deal with the OS/2 Presentation Manager clipboard.  They require a 
  2630. PM REXX-based program in order to function. 
  2631.  
  2632.  
  2633. ΓòÉΓòÉΓòÉ 5.10.1. RxAppendClipboardText ΓòÉΓòÉΓòÉ
  2634.  
  2635. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2636. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2637. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2638.  
  2639. ΓöÇΓöÇΓöÇRXAPPENDCLIPBOARDTEXT(ΓöÇΓöÇTextΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2640.  
  2641.  
  2642. This function appends the text passed to the current contents of the clipboard. 
  2643.  
  2644. RXAPPENDCLIPBOARDTEXT returns the text previously in the clipboard if 
  2645. successful. 
  2646.  
  2647. If there is an error opening the clipboard, RXAPPENDCLIPBOARDTEXT returns 
  2648. "Error opening the clipboard". 
  2649.  
  2650. If there is no textual data in the clipboard, RXAPPENDCLIPBOARDTEXT sets the 
  2651. clipboard to contain the text passed. 
  2652.  
  2653. If there is an error setting the clipboard data, RXAPPENDCLIPBOARDTEXT returns 
  2654. "Error setting clipboard data". 
  2655.  
  2656. If there is not one valid string as the argument to RXAPPENDCLIPBOARDTEXT, the 
  2657. REXX error condition INCORRECT CALL TO ROUTINE is raised. 
  2658.  
  2659. Example: 
  2660.  
  2661.      PrevText = RxAppendClipboardText("Stuff to add")
  2662.      Say 'The contents of the clipboard were "'PrevText'", and are now "'RxQueryClipboardText()'".'
  2663.  
  2664. Results: 
  2665.  
  2666.      The contents of the clipboard were "ABCD", and are now "ABCDStuff to add".
  2667.  
  2668. Note:  To get multiple lines into the clipboard, you should use a carriage 
  2669. return and linefeed combination at the end of the string. This can be achieved 
  2670. by the following code sample :- 
  2671.  
  2672.      CrLfString = OldString || d2c(13) || d2c(10)
  2673.  
  2674.  
  2675. ΓòÉΓòÉΓòÉ 5.10.2. RxQueryClipboardText ΓòÉΓòÉΓòÉ
  2676.  
  2677. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2678. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2679. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2680.  
  2681. ΓöÇΓöÇΓöÇRXQUERYCLIPBOARDTEXT()ΓöÇΓöÇΓöÇ
  2682.  
  2683.  
  2684. This function queries the current content of the clipboard. 
  2685.  
  2686. RXQUERYCLIPBOARDTEXT returns the text currently in the clipboard if successful. 
  2687.  
  2688. If there is an error opening the clipboard, RXQUERYCLIPBOARDTEXT returns "Error 
  2689. opening the clipboard". 
  2690.  
  2691. If there is no textual data in the clipboard, RXQUERYCLIPBOARD returns an empty 
  2692. string (""). 
  2693.  
  2694. Example: 
  2695.  
  2696.      Text = RxQueryClipboardText()
  2697.      Say 'The contents of the clipboard are "'Text'".'
  2698.  
  2699. Results: 
  2700.  
  2701.      The contents of the clipboard are "This is in the clipboard".
  2702.  
  2703.  
  2704. ΓòÉΓòÉΓòÉ 5.10.3. RxSetClipboardText ΓòÉΓòÉΓòÉ
  2705.  
  2706. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2707. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2708. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2709.  
  2710. ΓöÇΓöÇΓöÇRXSETCLIPBOARDTEXT(ΓöÇΓöÇTextΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2711.  
  2712.  
  2713. This function sets the current content of the clipboard. 
  2714.  
  2715. RXSETCLIPBOARDTEXT returns "Clipboard set" if successful. 
  2716.  
  2717. If there is an error opening the clipboard, RXSETCLIPBOARDTEXT returns "Error 
  2718. opening the clipboard". 
  2719.  
  2720. If there is an error putting the data into the clipboard, RXSETCLIPBOARDTEXT 
  2721. returns "Error setting clipboard data". 
  2722.  
  2723. If there is not one valid string as the argument to RXSETCLIPBOARDTEXT, the 
  2724. REXX error condition INCORRECT CALL TO ROUTINE is raised. 
  2725.  
  2726. Example: 
  2727.  
  2728.      Say RxSetClipboardText("New text for the clipboard")
  2729.      Say 'The contents of the clipboard are now "'RxQueryClipboardText()'".'
  2730.  
  2731. Results: 
  2732.  
  2733.      Clipboard Set
  2734.      The contents of the clipboard are now "New text for the clipboard".
  2735.  
  2736.  
  2737. ΓòÉΓòÉΓòÉ 5.11. Printing ΓòÉΓòÉΓòÉ
  2738.  
  2739. These APIs deal with accessing information to, from, or about printer queues. 
  2740.  
  2741.  
  2742. ΓòÉΓòÉΓòÉ 5.11.1. RxQueueList ΓòÉΓòÉΓòÉ
  2743.  
  2744. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2745. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  2746. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2747.  
  2748. ΓöÇΓöÇΓöÇRXQUEUELIST(ΓöÇΓöÇstemΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2749.  
  2750.  
  2751. Returns a list of print queues available for the workstation. 
  2752.  
  2753. If stem is not a valid string, or is omitted, RXQUEUELIST raises an INVALID 
  2754. CALL TO ROUTINE condition from within REXX. 
  2755.  
  2756. RXQUEUELIST fills the stem passed with the Print Queues available. stem.0 
  2757. contains the number of queues available. stem.1 contains the first queue found, 
  2758. stem.2 contains the second queue, up to stem.n contain ing the nth queue, where 
  2759. n = stem.0. 
  2760.  
  2761. stem.n.DRIVERNAME holds the print driver associated with the nth queue. This 
  2762. will be needed for other printer API calls, as the Queue Name may not be 
  2763. unique. 
  2764.  
  2765. stem.default returns the index of the default queue (from 1 to stem.0). 
  2766.  
  2767. Example: 
  2768.  
  2769.      Call RxQueueList 'queues.'
  2770.      Do i = 1 to queues.0
  2771.        Say 'Queue 'i' is 'queues.i
  2772.      End
  2773.      def = queues.default
  2774.      Say 'The default print queue is 'queues.def
  2775.      Say 'The driver for this queue is 'queues.i.drivername
  2776.  
  2777. Output: 
  2778.  
  2779.      Queue 1 is Printer
  2780.      Queue 2 is Apple LaserWriter Plus on COM2
  2781.      Queue 3 is Epson LQ-580
  2782.      The default print queue is Apple LaserWriter Plus on COM2
  2783.      The driver for this queue is PSCRIPT.Apple LaserWriter
  2784.  
  2785.  
  2786. ΓòÉΓòÉΓòÉ 5.11.2. RxQueueSetDefault ΓòÉΓòÉΓòÉ
  2787.  
  2788. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2789. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  2790. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2791.  
  2792. ΓöÇΓöÇΓöÇRXQUEUESETDEFAULT(ΓöÇΓöÇqueueAndDriverNameΓöÇ)ΓöÇΓöÇΓöÇ
  2793.  
  2794. Sets the default print queue for a workstation. 
  2795.  
  2796. The parameter passed is the queue name concatenated to the driver name with a 
  2797. period. To produce this name from the stem returned by RxQueueList using the 
  2798. following code :- 
  2799.  
  2800.      queueAndDriverName = queues.1 || '.' || queues.1.drivername
  2801.  
  2802. If queueAndDriverName does not exist, RXQUEUESETDEFAULT raises an 'Incorrect 
  2803. call to routine' condition. 
  2804.  
  2805. See also RxQueueList for the correct way of obtaining queue and driver names. 
  2806.  
  2807. Example: 
  2808.  
  2809.      Call RxQueueSetDefault 'Apple LaserWriter Plus on COM2.PSCRIPT.Apple LaserWriter'
  2810.  
  2811. Output: 
  2812.  
  2813.      The default queue will be changed to the Apple Laser Writer queue.
  2814.  
  2815.  
  2816. ΓòÉΓòÉΓòÉ 5.11.3. RxQueueJobProperties ΓòÉΓòÉΓòÉ
  2817.  
  2818. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2819. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2820. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2821.  
  2822. ΓöÇΓöÇΓöÇRXQUEUEJOBPROPERTIES(ΓöÇΓöÇqueueAndDriverNameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2823.  
  2824.  
  2825. Asks the queue specified to display a 'Job Properties' dialog for the user, so 
  2826. that they can tailor options for an imminent print job. 
  2827.  
  2828. The parameter passed is the queue name concatenated to the driver name with a 
  2829. period. To produce this name from the stem returned by RxQueueList using the 
  2830. following code :- 
  2831.  
  2832.      queueAndDriverName = queues.1 || '.' || queues.1.drivername
  2833.  
  2834. If queueAndDriverName does not exist, RXQUEUEJOBPROPERTIES raises an 'Incorrect 
  2835. call to routine' condition. 
  2836.  
  2837. See also RxQueueList for the correct way of obtaining queue names and driver 
  2838. names. 
  2839.  
  2840. This function requires a Presentation Manager program to work correctly. 
  2841.  
  2842. Example: 
  2843.  
  2844.      Call RxQueueJobProperties 'Apple LaserWriter Plus on COM2.PSCRIPT.Apple LaserWriter'
  2845.  
  2846. Output: 
  2847.  
  2848.      A job properties dialogue is displayed.
  2849.  
  2850.  
  2851. ΓòÉΓòÉΓòÉ 5.11.4. RxQueueWriteStem ΓòÉΓòÉΓòÉ
  2852.  
  2853. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2854. Γöé.........ΓöéVisPro/REXXΓöéVX-REXXΓöé
  2855. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2856.  
  2857. ΓöÇΓöÇΓöÇRXQUEUEWRITESTEM(ΓöÇΓöÇqueueAndDriverName, stemΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2858.  
  2859.  
  2860. Writes the entries stem.1, stem.2, stem.3 to stem.n where n = stem.0, to the 
  2861. Queue identified by queueAndDriverName. 
  2862.  
  2863. The first parameter passed is the queue name concatenated to the driver name 
  2864. with a period. To produce this name from the stem returned by RxQueueList using 
  2865. the following code :- 
  2866.  
  2867.      queueAndDriverName = queues.1 || '.' || queues.1.drivername
  2868.  
  2869. If queueAndDriverName does not exist, or a stem is not specified, 
  2870. RXQUEUEWRITESTEM raises an 'Incorrect call to routine' condition. 
  2871.  
  2872. stem.jobname specifies the name that is to appear in the printer queue for this 
  2873. print job. 
  2874.  
  2875. stem.priority specifies the priority (1 to 99) that is to be given to this 
  2876. print job. 
  2877.  
  2878. stem.copies specifies the number of copies of this print image to be printed. 
  2879.  
  2880. See also RxQueueList for the correct way of obtaining queue names and driver 
  2881. names. 
  2882.  
  2883. This function requires a Presentation Manager program to work correctly. 
  2884.  
  2885. Example: 
  2886.  
  2887.      temp.0 = 3
  2888.      temp.1 = 'A line of print'
  2889.      temp.2 = 'may not be worth the paper it is printed on....'
  2890.      temp.3 = '                         Beware'
  2891.      temp.priority = 50
  2892.      temp.jobname = 'My Quote'
  2893.      temp.copies = 1000
  2894.      Call RxQueueWriteStem 'Apple LaserWriter Plus on COM2.PSCRIPT.Apple LaserWriter', 'temp.'
  2895.  
  2896. Output: 
  2897.  
  2898.      One THOUSAND COPIES of the 3 line quote are produced on an
  2899.      Apple LaserWriter Plus printer.
  2900.      All text longer than one line is wrapped, and if the text is
  2901.      more than one page, multiple pages are written out.
  2902.  
  2903.  
  2904. ΓòÉΓòÉΓòÉ 5.12. Event synchronisation and Resource Serialisation ΓòÉΓòÉΓòÉ
  2905.  
  2906. These APIs deal with synchronising threads and processes using events and 
  2907. serialising access to resources. 
  2908.  
  2909. The APIs are implemented using OS/2's semaphore support. 
  2910.  
  2911. An event corresponds to an Event Semaphore and a resource corresponds to a 
  2912. Mutex Semaphore. 
  2913.  
  2914.  
  2915. ΓòÉΓòÉΓòÉ 5.12.1. RxEventCreate ΓòÉΓòÉΓòÉ
  2916.  
  2917. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2918. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  2919. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2920.  
  2921. ΓöÇΓöÇΓöÇRXEVENTCREATE(ΓöÇΓöÇnameΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2922.                            ΓööΓöÇΓöÇ,statusΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2923.  
  2924.  
  2925. Creates an event used for process or thread synchronisation. 
  2926.  
  2927. If the name or status (if passed) are invalid strings, RXEVENTCREATE raises an 
  2928. INCORRECT CALL TO ROUTINE from within REXX. 
  2929.  
  2930. RXEVENTCREATE returns a handle which uniquely identifies the event if 
  2931. successful, or "Error creating event" if unsuccessful. 
  2932.  
  2933. The handle returned is for use with RxEventDestroy. 
  2934.  
  2935. Example: 
  2936.  
  2937.      hEvent = RxEventCreate('FileLoad')
  2938.  
  2939. Output: 
  2940.  
  2941.      An event called 'FileLoad' is created and
  2942.      a handle to it is returned in hEvent.
  2943.  
  2944.  
  2945. ΓòÉΓòÉΓòÉ 5.12.2. RxEventDestroy ΓòÉΓòÉΓòÉ
  2946.  
  2947. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2948. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  2949. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2950.  
  2951. ΓöÇΓöÇΓöÇRXEVENTDESTROY(ΓöÇΓöÇhandleΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2952.  
  2953.  
  2954. Destroys the event used for process or thread synchronisation. 
  2955.  
  2956. If the handle is not passed, RXEVENTDESTROY raises an INCORRECT CALL TO ROUTINE 
  2957. from within REXX. 
  2958.  
  2959. RXEVENTDESTROY returns "" if successful. 
  2960.  
  2961. A valid handle is obtained when the event is created, using RxEventCreate. 
  2962.  
  2963. Example: 
  2964.  
  2965.      Call RxEventDestroy hEvent
  2966.  
  2967. Output: 
  2968.  
  2969.      An event called 'FileLoad' which was previously
  2970.      created, and whose hand is stored in hEvent is
  2971.      destroyed and a NULL string is returned.
  2972.  
  2973.  
  2974. ΓòÉΓòÉΓòÉ 5.12.3. RxEventWaitFor ΓòÉΓòÉΓòÉ
  2975.  
  2976. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2977. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  2978. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2979.  
  2980. ΓöÇΓöÇΓöÇRXEVENTWAITFOR(ΓöÇΓöÇnameΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  2981.                             ΓööΓöÇΓöÇ,timeoutΓöÇΓöÇΓöÇΓöÇΓöÿ
  2982.  
  2983.  
  2984. Waits for the event name used for process or thread synchronisation to occur. 
  2985. The REXX program that calls this function is blocked until either the event 
  2986. occurs, or the timeout period expires. 
  2987.  
  2988. If the name is not passed, RXEVENTDESTROY raises an INCORRECT CALL TO ROUTINE 
  2989. from within REXX. 
  2990.  
  2991. RXEVENTWAITFOR returns "Event occurred" if successful, "Timeout waiting for 
  2992. event", "Interrupted waiting for event", "Error waiting for event" if there is 
  2993. an error during waiting,  or "Error finding event" if the event name is 
  2994. incorrect. 
  2995.  
  2996. Example: 
  2997.  
  2998.      Call RxEventWaitFor 'FileLoad', 500
  2999.      Say result
  3000.  
  3001. Output: 
  3002.  
  3003.      An event called 'FileLoad' which was previously
  3004.      created is waited on for 1/2 a second.
  3005.      The REXX special variable result holds the value returned
  3006.      by the function call.
  3007.  
  3008.  
  3009. ΓòÉΓòÉΓòÉ 5.12.4. RxEventOccurred ΓòÉΓòÉΓòÉ
  3010.  
  3011. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3012. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  3013. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3014.  
  3015. ΓöÇΓöÇΓöÇRXEVENTOCCURRED(ΓöÇΓöÇnameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  3016.  
  3017.  
  3018. Notifies any waiting programs that the event name has occurred. This tells all 
  3019. waiting programs to continue execution. Programs wait for an event by calling 
  3020. RxEventWaitFor. 
  3021.  
  3022. If the name is not passed, RXEVENTOCCURRED raises an INCORRECT CALL TO ROUTINE 
  3023. from within REXX. 
  3024.  
  3025. RXEVENTOCCURRED returns "" if successful, "Error finding event" if the event 
  3026. name is incorrect, or "Event already in 'occurred' state" if the event named 
  3027. has already occurred without being reset by RxEventReset. 
  3028.  
  3029. Example: 
  3030.  
  3031.      Call RxEventOccurred 'FileLoad'
  3032.  
  3033. Output: 
  3034.  
  3035.      An event called 'FileLoad' which was previously
  3036.      created is marked as 'occurred' and a NULL string is returned.
  3037.      All programs waiting on this event with RxEventWaitFor continue
  3038.      execution.
  3039.  
  3040.  
  3041. ΓòÉΓòÉΓòÉ 5.12.5. RxEventQuery ΓòÉΓòÉΓòÉ
  3042.  
  3043. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3044. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  3045. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3046.  
  3047. ΓöÇΓöÇΓöÇRXEVENTQUERY(ΓöÇΓöÇnameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  3048.  
  3049.  
  3050. Returns the number of times an event has occurred since being reset. Programs 
  3051. reset an event by calling RxEventReset. 
  3052.  
  3053. If the name is not passed, RXEVENTQUERY raises an INCORRECT CALL TO ROUTINE 
  3054. from within REXX. 
  3055.  
  3056. RXEVENTQUERY returns a number if successful, "Error finding event" if the event 
  3057. name is incorrect, or "Error querying event" if some other error occurs. 
  3058.  
  3059. Example: 
  3060.  
  3061.      numTimes = RxEventOccurred('FileLoad')
  3062.      Say 'The file was loaded' numTimes' times.'
  3063.  
  3064. Output: 
  3065.  
  3066.      The file was loaded 5 times.
  3067.  
  3068.  
  3069. ΓòÉΓòÉΓòÉ 5.12.6. RxEventReset ΓòÉΓòÉΓòÉ
  3070.  
  3071. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3072. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  3073. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3074.  
  3075. ΓöÇΓöÇΓöÇRXEVENTRESET(ΓöÇΓöÇnameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  3076.  
  3077.  
  3078. Resets an event so that it is in a 'Waiting' state and sets the count of event 
  3079. occurrences back to zero. 
  3080.  
  3081. If the name is not passed, RXEVENTRESET raises an INCORRECT CALL TO ROUTINE 
  3082. from within REXX. 
  3083.  
  3084. RXEVENTRESET returns "Event occurred n times since last reset" if successful (n 
  3085. is a number), "Error finding event" if the event name is incorrect, or "Event 
  3086. already in 'reset' state" if the event named has already been reset. 
  3087.  
  3088. Example: 
  3089.  
  3090.      Say RxEventReset('FileLoad')
  3091.  
  3092. Output: 
  3093.  
  3094.      Event occurred 5 times since last reset
  3095.  
  3096.  
  3097. ΓòÉΓòÉΓòÉ 5.12.7. RxResourceCreate ΓòÉΓòÉΓòÉ
  3098.  
  3099. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3100. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  3101. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3102.  
  3103. ΓöÇΓöÇΓöÇRXRESOURCECREATE(ΓöÇΓöÇnameΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  3104.                               ΓööΓöÇΓöÇ,statusΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3105.  
  3106.  
  3107. Creates a resource used for process or thread serialisation. 
  3108.  
  3109. If the name or status (if passed) are invalid strings, RXRESOURCECREATE raises 
  3110. an INCORRECT CALL TO ROUTINE from within REXX. 
  3111.  
  3112. RXRESOURCECREATE returns a handle which uniquely identifies the event if 
  3113. successful, or "Error creating resource" if unsuccessful. 
  3114.  
  3115. The handle returned is for use with RxResourceDestroy. 
  3116.  
  3117. Example: 
  3118.  
  3119.      hRes = RxResourceCreate('FileWrite')
  3120.  
  3121. Output: 
  3122.  
  3123.      A resource called 'FileWrite' is created and
  3124.      a handle to it is returned in hRes.
  3125.  
  3126.  
  3127. ΓòÉΓòÉΓòÉ 5.12.8. RxResourceDestroy ΓòÉΓòÉΓòÉ
  3128.  
  3129. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3130. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  3131. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3132.  
  3133. ΓöÇΓöÇΓöÇRXRESOURCEDESTROY(ΓöÇΓöÇhandleΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  3134.  
  3135.  
  3136. Destroys the resource used for process or thread serialisation. 
  3137.  
  3138. If the handle is not passed, RXRESOURCEDESTROY raises an INCORRECT CALL TO 
  3139. ROUTINE from within REXX. 
  3140.  
  3141. RXRESOURCEDESTROY returns "" if successful. 
  3142.  
  3143. A valid handle is obtained when the event is created, using RxResourceCreate. 
  3144.  
  3145. Example: 
  3146.  
  3147.      Call RxResourceDestroy hResource
  3148.  
  3149. Output: 
  3150.  
  3151.      A resource called 'FileWrite' which was previously
  3152.      created, and whose handle is stored in hResource is
  3153.      destroyed and a NULL string is returned.
  3154.  
  3155.  
  3156. ΓòÉΓòÉΓòÉ 5.12.9. RxResourceRequest ΓòÉΓòÉΓòÉ
  3157.  
  3158. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3159. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  3160. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3161.  
  3162. ΓöÇΓöÇΓöÇRXRESOURCEREQUEST(ΓöÇΓöÇnameΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  3163.                                ΓööΓöÇΓöÇ,timeoutΓöÇΓöÇΓöÇΓöÇΓöÿ
  3164.  
  3165.  
  3166. Waits for the resource name used for process or thread serialisation to become 
  3167. available. The REXX program that calls this function is blocked until either 
  3168. the resource becomes available, or the timeout period expires. 
  3169.  
  3170. If the name is not passed, RXRESOURCEREQUEST raises an INCORRECT CALL TO 
  3171. ROUTINE from within REXX. 
  3172.  
  3173. RXRESOURCEREQUEST returns "Resource available" when the resource becomes 
  3174. available, "Error finding event" if the event name is incorrect, or "Timeout 
  3175. waiting for resource" if the timeout period expires, "Interrupted waiting for 
  3176. resource" if OS/2 interrupts the request, or "Error waiting for resource" if 
  3177. there is an error during the request. 
  3178.  
  3179. Example: 
  3180.  
  3181.      Say RxResourceRequest 'FileWrite'
  3182.  
  3183. Output: 
  3184.  
  3185.      Resource Available
  3186.  
  3187.      The REXX program is suspended until the resource 'FileWrite'
  3188.      is available.
  3189.  
  3190.  
  3191. ΓòÉΓòÉΓòÉ 5.12.10. RxResourceRelease ΓòÉΓòÉΓòÉ
  3192.  
  3193. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3194. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  3195. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3196.  
  3197. ΓöÇΓöÇΓöÇRXRESOURCERELEASE(ΓöÇΓöÇnameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  3198.  
  3199.  
  3200. Releases the named resource so that the next waiting program can obtain access 
  3201. to the resource. 
  3202.  
  3203. If the name is not passed, RXRESOURCERELEASE raises an INCORRECT CALL TO 
  3204. ROUTINE from within REXX. 
  3205.  
  3206. RXRESOURCERELEASE returns "" if successful, "Error finding resource" if the 
  3207. resource name is incorrect. 
  3208.  
  3209. Example: 
  3210.  
  3211.      Call RxResourceRelease 'FileWrite'
  3212.  
  3213. Output: 
  3214.  
  3215.      The resource called 'FileWrite' which was previously
  3216.      created is released so that other programs or threads can
  3217.      access it.
  3218.      Only one thread can obtain the resource at any point in time.
  3219.  
  3220.  
  3221. ΓòÉΓòÉΓòÉ 5.12.11. RxResourceQuery ΓòÉΓòÉΓòÉ
  3222.  
  3223. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3224. ΓöéOS/2 REXXΓöéVisPro/REXXΓöéVX-REXXΓöé
  3225. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3226.  
  3227. ΓöÇΓöÇΓöÇRXRESOURCEQUERY(ΓöÇΓöÇnameΓöÇΓöÇ)ΓöÇΓöÇΓöÇ
  3228.  
  3229.  
  3230. Returns the number of threads that are waiting for a resource. 
  3231.  
  3232. If the name is not passed, RXRESOURCEQUERY raises an INCORRECT CALL TO ROUTINE 
  3233. from within REXX. 
  3234.  
  3235. RXRESOURCEQUERY returns a number if successful, "Error finding resource" if the 
  3236. resource name is incorrect, or "Error querying resource" if some other error 
  3237. occurs. 
  3238.  
  3239. Example: 
  3240.  
  3241.      numWaiters = RxResourceQuery('FileWrite')
  3242.      Say 'There are' numWaiters' threads waiting to write to the file.'
  3243.  
  3244. Output: 
  3245.  
  3246.      There are 5 threads waiting to write to the file.
  3247.  
  3248.  
  3249. ΓòÉΓòÉΓòÉ <hidden> RxEventCreate name, status ΓòÉΓòÉΓòÉ
  3250.  
  3251. The status parameter should be either 'Occurred' or 'Waiting'. Only the first 
  3252. character is significant, and defaults to 'Waiting'. 
  3253.  
  3254.  
  3255. ΓòÉΓòÉΓòÉ <hidden> RxEventWaitFor name, timeout ΓòÉΓòÉΓòÉ
  3256.  
  3257. The timeout parameter should be either a time specified in milliseconds or 
  3258. 'Forever'. Only the first character of 'Forever' is significant. 
  3259.  
  3260. 'Forever' is the default. 
  3261.  
  3262.  
  3263. ΓòÉΓòÉΓòÉ <hidden> RxResourceCreate name, status ΓòÉΓòÉΓòÉ
  3264.  
  3265. The status parameter should be either 'Owned' or 'Unowned'. Only the first 
  3266. character is significant, and defaults to 'Unowned'. 
  3267.  
  3268.  
  3269. ΓòÉΓòÉΓòÉ <hidden> RxResourceRequest name, timeout ΓòÉΓòÉΓòÉ
  3270.  
  3271. The timeout parameter should be either a time specified in milliseconds or 
  3272. 'Forever'. Only the first character of 'Forever' is significant. 
  3273.  
  3274. 'Forever' is the default. 
  3275.  
  3276.  
  3277. ΓòÉΓòÉΓòÉ 6. RxExtras.LIB ΓòÉΓòÉΓòÉ
  3278.  
  3279. RxExtras.LIB is a library file for use in C programming. 
  3280.  
  3281. If you want to use some of the functions in RxExtras in your own C code, you 
  3282. need to link with RxExtras.LIB when you are building your application. 
  3283.  
  3284. All functions exported from RxExtras.LIB are callable from REXX and therefore 
  3285. have the following function prototype :- 
  3286.  
  3287.    ULONG Name(PSZ pszFnName,
  3288.               ULONG ulArgc,
  3289.               RXSTRING rxArgv[],
  3290.               PSZ pszQName,
  3291.               PRXSTRING prxReturn)
  3292.  
  3293. The following is a list of all functions exported in RxExtras.LIB 
  3294.  
  3295.  o RxRead 
  3296.  
  3297.  o RxWrite 
  3298.  
  3299.  o RxBootDrive 
  3300.  
  3301.  o RxVolumeLabel 
  3302.  
  3303.  o RxVarDump 
  3304.  
  3305.  o RxStemCopy 
  3306.  
  3307.  o RxExtra 
  3308.  
  3309.  o RxSort 
  3310.  
  3311.  o RxSwitchTo 
  3312.  
  3313.  o RxQuerySwitchlist 
  3314.  
  3315.  o RxListBoxFromFile 
  3316.  
  3317.  o RxListBoxFromStem 
  3318.  
  3319.  o RxQueryDriveType 
  3320.  
  3321.  o RxSearchPath 
  3322.  
  3323.  o RxGetItemFromListBox 
  3324.  
  3325.  o RxSetSpinButtonRangeWithIncrement 
  3326.  
  3327.  o RxSetSpinButtonCharRange 
  3328.  
  3329.  o RxSetSpinButtonRangeFromStem 
  3330.  
  3331.  o RxGetItemFromListBoxAtIndex 
  3332.  
  3333.  o RxSetGlobal 
  3334.  
  3335.  o RxGetGlobal 
  3336.  
  3337.  o RxGetListBoxCount 
  3338.  
  3339.  o RxListBoxToFile 
  3340.  
  3341.  o RxListBoxToStem 
  3342.  
  3343.  o RxAddItemAtIndex 
  3344.  
  3345.  o RxMorphButtonToIcon 
  3346.  
  3347.  o RxSearchItem 
  3348.  
  3349.  o RxSetAccelTable 
  3350.  
  3351.  o RxQueryAccelTable 
  3352.  
  3353.  o RxQueryWindow 
  3354.  
  3355.  o RxQueryClassName 
  3356.  
  3357.  o RxQueryFonts 
  3358.  
  3359.  o RxLineCount 
  3360.  
  3361.  o RxMaximize 
  3362.  
  3363.  o RxMinimize 
  3364.  
  3365.  o RxRestore 
  3366.  
  3367.  o RxThread 
  3368.  
  3369.  o RxKillThread 
  3370.  
  3371.  o RxSuspendThread 
  3372.  
  3373.  o RxResumeThread 
  3374.  
  3375.  o RxSetThreadClass 
  3376.  
  3377.  o RxChangeThreadPriority 
  3378.  
  3379.  o RxSetIcon 
  3380.  
  3381.  o RxDrawBitmap 
  3382.  
  3383.  
  3384. ΓòÉΓòÉΓòÉ 7. RxExtras.CMD ΓòÉΓòÉΓòÉ
  3385.  
  3386. RxExtras.CMD is a command file that will test all parts of RxExtras that can be 
  3387. run from the command line. 
  3388.  
  3389. A copy of this file is included here in case you delete it. You can easily copy 
  3390. the file from the Services->Copy menu item on the action bar and then paste it 
  3391. back into your favourite editor. 
  3392.  
  3393.  
  3394. ΓòÉΓòÉΓòÉ 7.1. RxExtras.CMD - Source ΓòÉΓòÉΓòÉ
  3395.  
  3396. /* RxExtras - test for all functions in RxExtras.DLL */
  3397. Address CMD
  3398. /* rcy =  RxFuncDrop('RxExtra') */
  3399.  
  3400. If RxFuncQuery('RxExtra') <> 0 Then
  3401.     rcy = RxFuncAdd('RxExtra', 'RxExtras', 'RxExtra')
  3402.  
  3403. Call RxExtra "Drop" /* Drop everything */
  3404. rcy = RxFuncAdd('RxExtra', 'RxExtras', 'RxExtra')
  3405. Say 'Using version 'RxExtra("Load")' of RxExtras'
  3406.  
  3407. Say
  3408. Say "Testing RxBootDrive and RxRead..."
  3409. Call RxRead 'stem.', RxBootDrive()":"'\CONFIG.SYS'
  3410. Say "Your Config.Sys file should now appear"
  3411. "@PAUSE"
  3412. Do i = 1 to stem.0
  3413.    Say stem.i
  3414. end /* do */
  3415. "@PAUSE"
  3416.  
  3417. Say
  3418. Say "Testing RxBootDrive by itself"
  3419. Say 'Your bootdrive is 'RxBootDrive()":"
  3420. "@PAUSE"
  3421.  
  3422. temp.0 = 5
  3423. temp.1 = "This is a test file"
  3424. temp.2 = "With this ring, I thee bed"
  3425. temp.3 = "The worlds smallest handcuff"
  3426. temp.4 = "How to win fiends and affluent people"
  3427. temp.5 = "### The last line ###"
  3428.  
  3429. Say
  3430. Say "Testing RxWrite by writing 5 lines to \TEMP.DAT"
  3431. Call RxWrite "temp.", "\temp.dat"
  3432. Say "Here is \TEMP.DAT"
  3433. "@type \temp.dat | more"
  3434. "@PAUSE"
  3435. "@DEL \temp.dat"
  3436.  
  3437. Say
  3438. Say "Testing RxVolumeLabel"
  3439. Say "Label of C is "RxVolumeLabel("C")
  3440. "@PAUSE"
  3441.  
  3442. Say
  3443. Drop stem.
  3444. Drop temp.
  3445. temp.1 = 1
  3446. temp.testing = "Testing is on"
  3447. temp.2 = 3
  3448. temp.testing.1 = "Life be in it"
  3449. Say "Testing RxVarDump - dumping all 'local' variables"
  3450. Call RxVarDump 'vars.'
  3451. Do i = 1 to vars.0
  3452.   Say 'Variable Name:"'vars.i.name'" has the value: "'vars.i.value'"'
  3453. End
  3454. Drop vars.
  3455. "@PAUSE"
  3456.  
  3457. Say
  3458. Say "Testing RxStemCopy"
  3459. Say "Copy all variables from temp. to temp2."
  3460. Say "See RxVarDump above for temp. variables"
  3461.  
  3462. Call RxStemCopy "temp.", "temp2."
  3463.  
  3464. Say "Now we have..."
  3465. Call RxVarDump 'vars.'
  3466. Do i = 1 to vars.0
  3467.   Say 'Variable Name:"'vars.i.name'" has the value: "'vars.i.value'"'
  3468. End
  3469. Drop vars.
  3470. "@PAUSE"
  3471.  
  3472. Say
  3473. Say "Testing RxSort"
  3474. temp.0 = 16
  3475. temp.1 = "This is a list"
  3476. temp.2 = "a List should be sorted"
  3477. temp.3 = "upper and Lowercase"
  3478. temp.4 = "$trange"
  3479. temp.5 = "#unny"
  3480. temp.6 = "@nd unusual"
  3481. temp.7 = "12345"
  3482. temp.8 = "123456"
  3483. temp.9 = "One isthe 9"
  3484. temp.10 = "Ten green bottles 10"
  3485. temp.11 = "Legs 11"
  3486. temp.12 = "And then some 12"
  3487. temp.13 = "Hollow weeing 13"
  3488. temp.14 = "Only 14"
  3489. temp.15 = "15"
  3490. temp.16 = "The last line!"
  3491. Say
  3492. Say "The unsorted list is..."
  3493. Say Copies('-', 50)
  3494. Do i = 1 to temp.0
  3495.     Say temp.i
  3496. end /* do */
  3497. Say Copies('-', 50)
  3498. "@PAUSE"
  3499. Say
  3500. Say "Sorting in descending order gives..."
  3501. Call RxSort 'temp.', 'Descending'
  3502. Say Copies('-', 50)
  3503. Do i = 1 to temp.0
  3504.     Say temp.i
  3505. end /* do */
  3506. Say Copies('-', 50)
  3507. "@PAUSE"
  3508. Say
  3509. Say "Sorting in ascending order gives..."
  3510. Call RxSort 'temp.', 'Asc'
  3511. Say Copies('-', 50)
  3512. Do i = 1 to temp.0
  3513.     Say temp.i
  3514. end /* do */
  3515. Say Copies('-', 50)
  3516. "@PAUSE"
  3517.  
  3518. Say
  3519. Say "Testing RxSwitchTo"
  3520. Say "Switching to the desktop, hit Ctrl-Alt-Shift-O to see developers"
  3521. /* RxSwitchTo works by matching as much of the string as you give it
  3522.  * to the first session.
  3523.  * i.e. Call RxSwitchTo "System C"
  3524.  * Will switch to the system clock.
  3525.  */
  3526. Call RxSwitchTo "OS"
  3527. If POS("Switch", result) <> 0 Then Do /* probably 2.1 */
  3528.   Call RxSwitchTo "Desktop"
  3529. End
  3530. "@PAUSE"
  3531.  
  3532. Say
  3533. Say "Testing RxQuerySwitchListo"
  3534. Say "The programs running should now appear."
  3535. Call RxQuerySwitchList "temp."
  3536. Do i = 1 to temp.0
  3537.    Say "Title: "temp.i ", Hwnd: "temp.i.hwnd", Process Id: "temp.i.pid
  3538. End /* do */
  3539. "@PAUSE"
  3540.  
  3541. Say
  3542. Say "Testing RxQueryDriveType for Drive C:"
  3543. Say RxQueryDriveType("C:")
  3544. "@PAUSE"
  3545.  
  3546. BD = RxBootDrive()
  3547. PathToSearch = BD":\OS2;"BD":\OS2\INSTALL"
  3548. Say
  3549. Say "Testing RxSearchPath looking for DATABASE.TXT in \OS2 and \OS2\INSTALL"
  3550. Say RxSearchPath(PathToSearch, 'DATABASE.TXT')
  3551. "@PAUSE"
  3552.  
  3553. Say
  3554. Say "Testing Global variables"
  3555. Call RxSetGlobal "SETTINGS.TX1", "This is shared memory!"
  3556. Say "The text 'This is shared memory!' should now appear..."
  3557. Say RxGetGlobal('settings.tx1')
  3558. "@PAUSE"
  3559.  
  3560. Say
  3561. Say "Testing RxLineCount"
  3562. LC = RxLineCount(RxBootDrive()':\config.sys')
  3563. Say 'There are 'LC' lines in the your CONFIG.SYS file'
  3564. "@PAUSE"
  3565.  
  3566. Say
  3567. Say "Testing RxGetEXEName"
  3568. Say "The command line for this program was '"RxGetEXEName()"'"
  3569. "@PAUSE"
  3570.  
  3571. Say
  3572. Say "Testing RxNap"
  3573. Say "This program should appear to sleep for half a second"
  3574. Call RxNap 500
  3575. "@PAUSE"
  3576.  
  3577. Say
  3578. Say "Testing RxFileExists"
  3579. If (RxFileExists(RxBootDrive()":\CONFIG.SYS")) Then
  3580.     Say "I found your CONFIG.SYS!"
  3581. "@PAUSE"
  3582.  
  3583. Say
  3584. Say "Testing RxKillProcess"
  3585. Say "Please note the following output for processes to kill"
  3586. Say "(and remember to convert the process from hex to decimal)"
  3587. "@PSTAT /C | MORE"
  3588. Call Charout ,"Enter a process id to be killed ?"
  3589. Parse Pull id
  3590. Say "Kill process returned: "RxKillProcess(id)
  3591. "@PAUSE"
  3592.  
  3593. Say
  3594. Say "Testing RxAddFileHandles"
  3595. Say "There are currently "RxAddFileHandles(0)" handles available."
  3596. Say "Now adding 25 more. Now "RxAddFileHandles(25)" handles available."
  3597. "@PAUSE"
  3598.  
  3599. Say
  3600. Say "Testing RxSetFileHandles"
  3601. Say "There are currently "RxAddFileHandles(0)" handles available"
  3602. Say "Now setting this to 100."
  3603. Call RxSetFileHandles 100
  3604. Say "Now "RxAddFileHandles(0)" handles available."
  3605. "@PAUSE"
  3606.  
  3607. Say
  3608. Say "Testing RxMatchWildCard"
  3609. MF = 'MYFILE.cmd'
  3610. WC = '*.cmd'
  3611. Result = RxMatchWildCard(MF, WC)
  3612. If Result = MF Then
  3613.     Say '   'MF' matches Wildcard 'WC' (Edited name is:'Result')'
  3614. Else
  3615.     Say '   'MF' does not match Wildcard 'WC' (Edited name is:'Result')'
  3616. MF = 'MYFILE.cmd'
  3617. WC = '*.bbb'
  3618. Result = RxMatchWildCard(MF, WC)
  3619. If Result = MF Then
  3620.     Say '   'MF' matches Wildcard 'WC' (Edited name is:'Result')'
  3621. Else
  3622.     Say '   'MF' does not match Wildcard 'WC' (Edited name is:'Result')'
  3623.  
  3624. Say
  3625. Say "All testing is now over..."
  3626. "@PAUSE"
  3627.  
  3628. Call RxExtra "Drop"
  3629.  
  3630.  
  3631. ΓòÉΓòÉΓòÉ 8. Registration/Support ΓòÉΓòÉΓòÉ
  3632.  
  3633.  Registration 
  3634.  Support 
  3635.  Future Enhancements 
  3636.  Trademarks 
  3637.  
  3638.  
  3639. ΓòÉΓòÉΓòÉ 8.1. Registration ΓòÉΓòÉΓòÉ
  3640.  
  3641. This software package is distributed as Shareware.  Non-corporate users are 
  3642. granted the right to use and evaluate the usefulness of RxExtras, and to 
  3643. distribute the package, intact, by any medium. 
  3644.  
  3645. Continued use of RxExtras requires formal registration of the software. 
  3646.  
  3647. Distribution of any software which requires RxExtras APIs by persons who have 
  3648. not paid their registration fee is illegal. Users acquiring a software package 
  3649. which requires RxExtras may freely use RxExtras with that package without being 
  3650. required to submit payment for RxExtras.  However, such Users are required to 
  3651. pay for RxExtras if the User creates his/her own programs which utilize the 
  3652. RxExtras APIs. 
  3653.  
  3654. If you find this package useful and use it, register for $25 Australian ($18 US 
  3655. approx) at the address below by faxing, emailing or calling with your credit 
  3656. card details, or by sending a money order for the US dollar amount to the 
  3657. address below. 
  3658.  
  3659. Use of this package in any commercial product is illegal without registration 
  3660. and licensing. 
  3661.  
  3662. License arrangements can be made via: 
  3663.  
  3664.      o Compuserve (100026,470) 
  3665.      o Internet (10026.470@compuserve.com) 
  3666.      o Voice Telephone (61-2-904-1988) 
  3667.      o FAX Telephone (61-2-953-9401) 
  3668.      o Mail: 
  3669.                Dion Gillard 
  3670.                162 Ben Boyd Rd, 
  3671.                Neutral Bay, NSW, 2089 
  3672.                Australia 
  3673.  
  3674.  
  3675. ΓòÉΓòÉΓòÉ 8.2. Support ΓòÉΓòÉΓòÉ
  3676.  
  3677. If you have any questions or would like some other functions added, please 
  3678. contact me on Compu$erve (100026,470) or via Internet at 
  3679. 100026.470@compuserve.com 
  3680.  
  3681.  
  3682. ΓòÉΓòÉΓòÉ 8.3. Future Enhancements ΓòÉΓòÉΓòÉ
  3683.  
  3684. If you have any ideas for future improvement of RxExtras, please contact me 
  3685. with your suggestions.  Some of the ideas I am considering in future releases 
  3686. are: 
  3687.  
  3688.                Function          Description 
  3689.  
  3690.                VX-REXX insert code Insert code function for VX-REXX 
  3691.  
  3692.                WORDX             A version of REXX's WORD function that uses 
  3693.                                  any delimiter specified (e.g. commas), rather 
  3694.                                  than just a space. 
  3695.  
  3696.                REPLACE           Replace a string within another string 
  3697.  
  3698.                RxReplace         Replace a given string of text with another in 
  3699.                                  a file. 
  3700.  
  3701.                RxFind            Find file(s) which have a given string of text 
  3702.                                  within them. 
  3703.  
  3704.                RxRun             Start a thread of execution within the current 
  3705.                                  session. 
  3706.  
  3707.                RxKillDir         Delete a subdirectory, all of its files, and 
  3708.                                  all of its subdirectories. 
  3709.  
  3710.  
  3711. ΓòÉΓòÉΓòÉ 8.4. Trademarks ΓòÉΓòÉΓòÉ
  3712.  
  3713.                VisPro/Rexx is a registered trademark of HockWare, Inc. 
  3714.  
  3715.                VX-Rexx is a registered trademark of Watcom, Inc. 
  3716.  
  3717.                RxExtras is copyrighted Dion Gillard, 1992 1993. 
  3718.  
  3719.                CompuServe is a registered trademark of CompuServe, Inc. 
  3720.