home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 30 fixes_v / 30-fixes_v.zip / vxrx101.zip / README.INF (.txt) < prev    next >
OS/2 Help File  |  1993-09-17  |  72KB  |  2,174 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Introduction ΓòÉΓòÉΓòÉ
  3.  
  4.  
  5. ΓòÉΓòÉΓòÉ 1.1. Package contents ΓòÉΓòÉΓòÉ
  6.  
  7. We are pleased to forward the enclosed WATCOM VXΓêÖREXX for OS/2 (version 2.0 or 
  8. higher). The package contains the components detailed in the following 
  9. subsections. We recommend that you take time now to identify each of the 
  10. components described. 
  11.  
  12.  
  13. ΓòÉΓòÉΓòÉ 1.1.1. Documentation ΓòÉΓòÉΓòÉ
  14.  
  15. o Read Me First (this document) 
  16.  
  17.   The Read Me First contains the system requirements, installation 
  18.   instructions, notes on the sample programs included with VX-REXX, release 
  19.   information, a new feature summary, and corrections for the printed version 
  20.   of the manual. 
  21.  
  22. o WATCOM VXΓêÖREXX for OS/2 Programmer's Guide and Reference 
  23.  
  24. After reading this Read Me First, you should proceed to the WATCOM VXΓêÖREXX 
  25. Programmer's Guide and Reference. It describes all of the components of the 
  26. VXΓêÖREXX development system and includes a brief tutorial that introduces the 
  27. steps in creating a VXΓêÖREXX program. 
  28.  
  29. The Read Me First and the WATCOM VXΓêÖREXX Programmer's Guide and Reference are 
  30. also supplied as online books. We strongly recommend that you use the online 
  31. books because, in addition to being very convenient, the online books contain 
  32. the most up to date information. The features new in version 1.01 are only 
  33. documented in the online books. 
  34.  
  35.  
  36. ΓòÉΓòÉΓòÉ 1.1.2. Diskettes ΓòÉΓòÉΓòÉ
  37.  
  38. o The package contains two 3.5" diskettes (1.44M). 
  39.  
  40. In addition to the WATCOM VXΓêÖREXX development system, sample programs are 
  41. included which demonstrate some of the features of VXΓêÖREXX. These programs are 
  42. added to the WATCOM VXΓêÖREXX folder when the software is installed. The sample 
  43. programs are described later in this document. 
  44.  
  45.  
  46. ΓòÉΓòÉΓòÉ 1.2. Send in Your Registration Card ΓòÉΓòÉΓòÉ
  47.  
  48. You should fill out and mail your registration card as soon as possible to 
  49. ensure you are informed of future upgrades and other special offers to 
  50. registered users. You must write the product registration number on this card 
  51. in the appropriate box. Your registration number is printed on the label of the 
  52. diskette. Your registration number will be required when you contact WATCOM 
  53. Technical Support. 
  54.  
  55. Note:  Registered users of version 1.01 will be eligible for a free upgrade to 
  56. version 1.02 when it becomes available. Version 1.02 will include four 
  57. additional objects: Container, Notebook, Slider, and ValueSet. 
  58.  
  59.  
  60. ΓòÉΓòÉΓòÉ 1.3. System requirements ΓòÉΓòÉΓòÉ
  61.  
  62. The minimum recommended configuration for WATCOM VXΓêÖREXX is a 20 megahertz 386 
  63. personal computer with 8 megabytes of memory. About 5 megabytes of hard disk 
  64. space are required to install the software. 
  65.  
  66. IBM OS/2 version 2.0 with the OS/2 Service Pak or higher must be installed 
  67. prior to installing VXΓêÖREXX. If you are running OS/2 2.0 without the OS/2 
  68. Service Pak, you must obtain it from IBM and install it to make sure that all 
  69. features of VXΓêÖREXX work correctly. The Service Pak required is IBM number 
  70. XR06055. You can obtain it from the IBM OS/2 BBS, from CompuServe, or directly 
  71. from IBM. Contact your IBM representative for more information. 
  72.  
  73. The OS/2 REXX interpreter and the REXX information must also be installed prior 
  74. to installing VXΓêÖREXX. If you do not have OS/2 REXX installed, you can add it 
  75. now by using the OS/2 Selective Install utility as described in the next 
  76. section. (If REXX is installed on your system your \OS2\DLL directory will 
  77. contain four REXX files: REXX.DLL, REXXAPI.DLL, REXXUTIL.DLL, and REXXINIT.DLL. 
  78. Also your Information folder should contain a REXX Information icon.) 
  79.  
  80.  In addition to using the OS/2 REXX interpreter, VXΓêÖREXX is configured to make 
  81. use of the OS/2 Enhanced Editor. Although it is not required, you may wish to 
  82. install the Enhanced Editor to make sure that you have access to all of 
  83. VXΓêÖREXX's features. Instructions for installing the Enhanced Editor are 
  84. included in the next section. 
  85.  
  86.  
  87. ΓòÉΓòÉΓòÉ 1.3.1. Installing OS/2 system components ΓòÉΓòÉΓòÉ
  88.  
  89. If you do not have the OS/2 REXX interpreter installed on your system, or you 
  90. wish to install the REXX online information or the OS/2 Enhanced Editor, you 
  91. must install them using the Selective Install utility before installing 
  92. VXΓêÖREXX. You will need the OS/2 installation diskettes to complete the 
  93. following procedure. 
  94.  
  95.  1. Open the OS/2 System folder. 
  96.  
  97.  2. Open the System Setup folder. 
  98.  
  99.  3. Open the Selective Install program. 
  100.  
  101.  4. Click on OK in the System Configuration window. 
  102.  
  103.  5. If you need to install the OS/2 REXX interpreter, click on the REXX 
  104.     checkbox. 
  105.  
  106.  6. If you wish to install the REXX online information,  click on the 
  107.     Documentation checkbox. Then click on the corresponding More button to open 
  108.     the Documentation window. Make sure REXX Information is checked, then click 
  109.     on OK. If other check boxes are checked, you can uncheck them by clicking 
  110.     on their respective check boxes. 
  111.  
  112.  7. If you wish to install the OS/2 Enhanced Editor, click on the Tools and 
  113.     Games check box. Then click on the corresponding More button to open the 
  114.     Tools and Games window. Make sure that the Enhanced Editor check box is 
  115.     checked, then click on OK. If other check boxes are checked, you can 
  116.     uncheck them by clicking on their respective check boxes. 
  117.  
  118.  8. Click on Install to start the installation. You will be instructed by the 
  119.     Selective Install program after this point. 
  120.  
  121.  
  122. ΓòÉΓòÉΓòÉ 2. Installation ΓòÉΓòÉΓòÉ
  123.  
  124.  
  125. ΓòÉΓòÉΓòÉ 2.1. Installation procedure for WATCOM VXΓêÖREXX ΓòÉΓòÉΓòÉ
  126.  
  127. The software installation procedure creates a working copy of the WATCOM 
  128. VXΓêÖREXX software on your hard disk. There is a setup program on the first 
  129. diskette that makes the installation easy and straightforward. The installation 
  130. program will create a directory on the hard disk and copy and decompress the 
  131. software from the diskettes to the destination disk. Depending on the speed of 
  132. your computer, the installation procedure can take up to 6 minutes. 
  133.  
  134.  
  135. ΓòÉΓòÉΓòÉ 2.2. Running the installation program ΓòÉΓòÉΓòÉ
  136.  
  137. The first VXΓêÖREXX diskette contains a program called SETUP.EXE which installs 
  138. the software. 
  139.  
  140. By default, the software will be installed from the A diskette drive into the 
  141. directory \VXREXX on the hard disk with the OS/2 system installed, but you can 
  142. change these values. Note that the rest of this document assumes that the 
  143. VXΓêÖREXX directory is C:\VXREXX. If you choose another drive or directory, then 
  144. substitute your chosen install location for C:\VXREXX in the instructions that 
  145. follow. 
  146.  
  147. The software takes up approximately 5 megabytes of disk space. The installation 
  148. program will ensure that there is enough free disk space before starting the 
  149. actual installation. If there is insufficient free space, you will have to 
  150. delete some files from your disk and restart the installation. 
  151.  
  152. If you already have a version of VX-REXX installed on your machine you must 
  153. ensure that it is not in use before installing the new version. You must ensure 
  154. that you are running neither VX-REXX nor a VX-REXX program or macro. 
  155.  
  156. If you are upgrading VX-REXX we strongly recommend that you install the new 
  157. version of VX-REXX in the same directory as the previous version. The 
  158. installation will upgrade all the VX-REXX files but will leave the Projects 
  159. directory and any projects it contains intact. 
  160.  
  161. Note:  Only one version of VX-REXX can be running at one time. This includes 
  162. either VX-REXX itself or any VX-REXX program or macro. However, all VX-REXX 
  163. programs and macros created with earlier versions of VX-REXX will run with the 
  164. current version without change. It is not necessary to regenerate either EXE or 
  165. macro files. 
  166.  
  167. To install VX-REXX: 
  168.  
  169.  1. Open the OS/2 System folder. 
  170.  
  171.  2. Open the Command Prompts folder. 
  172.  
  173.  3. Open an OS/2 Window. 
  174.  
  175.  4. Insert the first WATCOM VXΓêÖREXX diskette in a diskette drive (e.g. the A 
  176.     drive). 
  177.  
  178.  5. From the OS/2 command line, type: a:\setup. 
  179.  
  180. You will be asked for the drive and directory in which you want to install 
  181. VXΓêÖREXX. You can change the default values to any valid drive and directory. 
  182. The directory will be created when the software is installed. You will also be 
  183. prompted for the location of the install diskettes. The default value will be 
  184. the diskette from which you started the install. Normally you should just 
  185. accept the default. 
  186.  
  187. After you have completed these dialogs, the setup program will decompress the 
  188. software and copy it to the hard disk. Part way through the installation, you 
  189. will be asked to insert disk two. Remove the first diskette from the drive, and 
  190. insert the second VXΓêÖREXX diskette. Select OK on the prompt dialog to continue 
  191. the installation. When the files have been copied, you will be asked if you 
  192. want your CONFIG.SYS updated. If you select this option, your CONFIG.SYS file 
  193. will be copied to CONFIG.BAK and then it will be updated so that the PATH, 
  194. LIBPATH, HELP and BOOKSHELF variables include the VXΓêÖREXX directory. It will 
  195. also create a VXREXX variable set to the VXΓêÖREXX directory. Note that you must 
  196. shutdown and restart OS/2 for changes to your CONFIG.SYS file to take effect. 
  197.  
  198. VXΓêÖREXX will not function properly unless you update your CONFIG.SYS. You must 
  199. update your CONFIG.SYS yourself if you do not let the install program do it. 
  200. Adding the VXΓêÖREXX directory to the PATH allows you to start VXΓêÖREXX from an 
  201. OS/2 command line. The LIBPATH must be updated to run the executable and macro 
  202. files generated by VXΓêÖREXX. The HELP and BOOKSHELF variables must be updated to 
  203. access the VXΓêÖREXX context sensitive help. 
  204.  
  205. When the installation is complete, you will be asked if you want to view the 
  206. Read Me First information. The information displayed is the information from 
  207. this Read Me First booklet, plus any information added after this booklet was 
  208. printed. (Any extra information will be in a chapter entitled Latest Updates). 
  209.  
  210. You will then be returned to the OS/2 command line. Type exit to close the OS/2 
  211. window. 
  212.  
  213. A WATCOM VXΓêÖREXX icon will be displayed on your desktop. Open the folder to 
  214. view the VXΓêÖREXX components. 
  215.  
  216.  
  217. ΓòÉΓòÉΓòÉ 2.3. WATCOM VXΓêÖREXX folder contents ΓòÉΓòÉΓòÉ
  218.  
  219. After WATCOM VXΓêÖREXX has been successfully installed on a hard disk, the 
  220. VXΓêÖREXX folder will contain several icons. This section describes each of the 
  221. icons. 
  222.  
  223. Note that the WATCOM VXΓêÖREXX folder on your desktop only contains objects that 
  224. reference files in the VXΓêÖREXX directory. Deleting or moving this folder does 
  225. not delete or move the VXΓêÖREXX directory. If you accidentally delete the WATCOM 
  226. VXΓêÖREXX folder, you can rebuild it with the BUILDVRX command which is described 
  227. later. 
  228.  
  229.  
  230. ΓòÉΓòÉΓòÉ 2.3.1. VXΓêÖREXX ΓòÉΓòÉΓòÉ
  231.  
  232. You can use the VXΓêÖREXX icon to open the VXΓêÖREXX development environment, 
  233. although usually you will open VXΓêÖREXX by opening a VXΓêÖREXX Project object. See 
  234. the section on  the Projects folder for more information. 
  235.  
  236.  
  237. ΓòÉΓòÉΓòÉ 2.3.2. Read Me First ΓòÉΓòÉΓòÉ
  238.  
  239. Read Me First is an online version of this Read Me First booklet, with four 
  240. additional sections: Tips, Restrictions, Fixes in version 1.01, and Latest 
  241. updates. The Latest updates section will contain any information released too 
  242. late to be put in this document. 
  243.  
  244.  
  245. ΓòÉΓòÉΓòÉ 2.3.3. Programmer's Guide ΓòÉΓòÉΓòÉ
  246.  
  247. Programmer's Guide is an online copy of the Programmer's Guide section of the 
  248. WATCOM VXΓêÖREXX for OS/2 Programmer's Guide and Reference. You can read this 
  249. documentation to learn how to use VXΓêÖREXX and create VXΓêÖREXX applications. You 
  250. can also use the chapter A simple program as an online tutorial, actually 
  251. building the program in the VXΓêÖREXX development environment as you read through 
  252. the chapter. 
  253.  
  254. You should work through the tutorial before trying to create your own project. 
  255. It shows you how to examine the code and how to run a VXΓêÖREXX program. If you 
  256. need more information, the techniques outlined in the tutorial are expanded in 
  257. the first four chapters of the Programmer's Guide. 
  258.  
  259. The online Programmer's Guide contains new information for version 1.01. The 
  260. chapter A simple program has been updated to use drag and drop programming. 
  261. The chapter Using objects includes a section on using the new SpinButton 
  262. control. 
  263.  
  264.  
  265. ΓòÉΓòÉΓòÉ 2.3.4. Reference ΓòÉΓòÉΓòÉ
  266.  
  267. Reference is an online copy of the Reference section of the WATCOM VXΓêÖREXX for 
  268. OS/2 Programmer's Guide and Reference. Use this documentation to get detailed 
  269. information on any component  of the VXΓêÖREXX development system. 
  270.  
  271. The online Reference contains new information for version 1.01. It includes the 
  272. new SpinButton control, as well as up to date information for all of the new 
  273. version 1.01 features. 
  274.  
  275.  
  276. ΓòÉΓòÉΓòÉ 2.3.5. REXX Information ΓòÉΓòÉΓòÉ
  277.  
  278. REXX Information points to the online REXX language documentation which is 
  279. contained in the OS/2 Information folder. You can browse this information to 
  280. learn about the REXX language and the OS/2 REXX interpreter. 
  281.  
  282.  
  283. ΓòÉΓòÉΓòÉ 2.3.6. Samples ΓòÉΓòÉΓòÉ
  284.  
  285. This folder contains icons for the VXΓêÖREXX sample programs: Button, Calc, 
  286. HintHelp, MindGame, Movies, MMW, SampleDB, Scan, Threads, and WinCtrl. These 
  287. icons are shadows of directories in the VXΓêÖREXX directory. 
  288.  
  289. Each of the samples is a folder which contain the source files for the project, 
  290. as well as an icon to run the program, and a folder called BIN. This folder 
  291. contains the executable and macro versions (if any) of the program. 
  292.  
  293. To run these sample programs, the LIBPATH and HELP environment variables must 
  294. include the VXΓêÖREXX directory. 
  295.  
  296. The sample programs are described in the next chapter. 
  297.  
  298.  
  299. ΓòÉΓòÉΓòÉ 2.3.7. Projects ΓòÉΓòÉΓòÉ
  300.  
  301. The Projects folder contains the VXΓêÖREXX Project template. You use this 
  302. template to create new VXΓêÖREXX projects. Simply drag the template to the folder 
  303. in which you want to store the new project files. Open the VXΓêÖREXX Project 
  304. folder that is created, and open the  Project.VRP file to start VXΓêÖREXX with 
  305. the new project. 
  306.  
  307. The Projects folder is a shadow of the directory of the same name in the 
  308. VXΓêÖREXX directory. You can use this folder to safely store your projects as 
  309. they will remain intact even if the WATCOM VXΓêÖREXX folder is accidentally 
  310. deleted. 
  311.  
  312.  
  313. ΓòÉΓòÉΓòÉ 2.3.8. Macros ΓòÉΓòÉΓòÉ
  314.  
  315. The Macros folder contains sample VX-REXX design-time macros, and information 
  316. on developing you own macros. VX-REXX design-time macros allow you to customize 
  317. the design environment by adding new commands to the VX-REXX pop-up menu. 
  318.  
  319. Four sample macros are provided: SetTabs (set the tab order), SetProps (another 
  320. way to set properties), Resize (force objects to the same size), and ObjList 
  321. (list all objects on a window). The source for these macros is included so you 
  322. can modify and adapt them to suit your own needs. 
  323.  
  324. Information on the sample macros and the installation instructions is included 
  325. in the Profile.VRM file located in the Macros folder. Details on writing your 
  326. own macros are contained in the Macros.TXT file also located in the Macros 
  327. folder. 
  328.  
  329. The Macros folder is a shadow of the directory of the same name in the VXΓêÖREXX 
  330. directory. You can use this folder to safely store your macros as they will 
  331. remain intact even if the WATCOM VXΓêÖREXX folder is accidentally deleted. 
  332.  
  333.  
  334. ΓòÉΓòÉΓòÉ 2.3.9. Color Palette ΓòÉΓòÉΓòÉ
  335.  
  336. The VXΓêÖREXX installation program creates a color palette Workplace Shell object 
  337. in the VXΓêÖREXX folder. You can use the palette to drag and drop colors onto 
  338. VXΓêÖREXX objects as an alternative to setting colors using a property notebook. 
  339.  
  340.  
  341. ΓòÉΓòÉΓòÉ 2.3.10. Font Palette ΓòÉΓòÉΓòÉ
  342.  
  343. The VXΓêÖREXX installation program creates a font palette Workplace Shell object 
  344. in the VXΓêÖREXX folder. You can use the palette to drag and drop fonts onto 
  345. VXΓêÖREXX objects as an alternative to setting fonts using a property notebook. 
  346.  
  347.  
  348. ΓòÉΓòÉΓòÉ 2.4. WATCOM VXΓêÖREXX directory contents ΓòÉΓòÉΓòÉ
  349.  
  350. In addition to the files and directories comprising the VX-REXX design 
  351. environment, the VXΓêÖREXX directory contains the following files. 
  352.  
  353.  
  354. ΓòÉΓòÉΓòÉ 2.4.1. BUILDVRX.CMD ΓòÉΓòÉΓòÉ
  355.  
  356. This REXX script rebuilds the Workplace Shell objects for VXΓêÖREXX. If you 
  357. accidentally delete your WATCOM VXΓêÖREXX folder, or if your desktop becomes 
  358. corrupted, you can run this command file from an OS/2 Window. 
  359.  
  360.  
  361. ΓòÉΓòÉΓòÉ 2.4.2. BPATCH.EXE ΓòÉΓòÉΓòÉ
  362.  
  363. The WATCOM Patch Utility can be used to apply patches or bug fixes to VXΓêÖREXX. 
  364. As problems are reported and fixed, registered users of VXΓêÖREXX will be 
  365. notified of patches that they can apply to resolve these problems. 
  366.  
  367.  
  368. ΓòÉΓòÉΓòÉ 2.5. Run time library ΓòÉΓòÉΓòÉ
  369.  
  370. The executable (EXE) and macro files built with VXΓêÖREXX require the run time 
  371. library VROBJ.DLL to run. The OS/2 LIBPATH variable must include the directory 
  372. that contains VROBJ.DLL. The LIBPATH variable is defined in the OS/2 CONFIG.SYS 
  373. file. Note that you must reboot OS/2 before any changes to the LIBPATH will 
  374. take effect. 
  375.  
  376.  
  377. ΓòÉΓòÉΓòÉ 2.5.1. Additional redistribution rights ΓòÉΓòÉΓòÉ
  378.  
  379. Subject to the terms and conditions of the WATCOM Software License Agreement, 
  380. in addition to any Redistribution Rights granted therein, you are hereby 
  381. granted a non-exclusive, royalty-free right to reproduce and distribute the 
  382. file VROBJ.DLL located in the VXΓêÖREXX directory provided that (a) it is 
  383. distributed as part of and only with your software product; (b) you not 
  384. suppress, alter or remove proprietary rights notices contained therein; and (c) 
  385. you indemnify, hold harmless and defend WATCOM and its suppliers from and 
  386. against any claims or lawsuits, including attorney's fees, that arise or result 
  387. from the use or distribution of your software product. 
  388.  
  389.  
  390. ΓòÉΓòÉΓòÉ 3. Sample programs ΓòÉΓòÉΓòÉ
  391.  
  392. Each of the following sections describes one of the sample programs included 
  393. with VXΓêÖREXX. The files for these programs are located in the Samples 
  394. directory, which is in the VXΓêÖREXX directory. The WATCOM VXΓêÖREXX folder 
  395. contains a shadow of the Samples directory. 
  396.  
  397.  
  398. ΓòÉΓòÉΓòÉ 3.1. Button ΓòÉΓòÉΓòÉ
  399.  
  400. The Button program displays four push buttons with the  caption "Push Me!". 
  401. When you run this program and click on any of the buttons, the button's color 
  402. and caption changes to Red. When it is clicked again, the color and caption 
  403. changes to Yellow. If you continue to click on a button, it will alternate 
  404. between red and yellow. 
  405.  
  406. The program is similar to the one developed in the tutorial chapter A Simple 
  407. Program in the Programmer's Guide. It demonstrates the two VXΓêÖREXX functions 
  408. that you use to access object properties at run time. 
  409.  
  410. To run the program, double click on the Button icon. To edit the project, 
  411. double click on the Button.VRP icon. 
  412.  
  413.  
  414. ΓòÉΓòÉΓòÉ 3.2. Calc ΓòÉΓòÉΓòÉ
  415.  
  416. Calc is a simple calculator program. It does addition, subtraction, 
  417. multiplication, division, and percentages. The buttons CE and C clear the 
  418. current entry and the current calculation, respectively. Memory buttons are 
  419. provided to save (M+ and M-), recall (MR) and clear (MC) calculations. 
  420.  
  421. The program illustrates using general routines for code that is used by many 
  422. objects and shows how to pass arguments to a REXX routine. 
  423.  
  424. The calculator sample also demonstrates the use of the KeyPress event and 
  425. KeyString property. Instead of using the mouse to click on the calculator 
  426. buttons you can just type the calculator operations on the keyboard. The C 
  427. button is accessed using the letter C on the keyboard, the CE button through 
  428. the letter E on the keyboard, and the memory functions by pressing F5-F8 on the 
  429. keyboard for M+, M-, MR, and MC  respectively. 
  430.  
  431. To run this program, double click on the Calculator icon in the Calc folder. To 
  432. edit the project, double click on the Calc.VRP icon. 
  433.  
  434.  
  435. ΓòÉΓòÉΓòÉ 3.3. HintHelp ΓòÉΓòÉΓòÉ
  436.  
  437. The HintHelp sample program demonstrates the use of hints and context sensitive 
  438. help in VXΓêÖREXX projects. When the program is running, move the pointer over 
  439. each of the objects in the window to view the hints for each. The hints appear 
  440. in the status area in the bottom of the window. Press the F1 key to open a help 
  441. window. 
  442.  
  443. To run this program, double click on the Hint and Help icon in the HintHelp 
  444. folder. To edit the project, double click on the HintHelp.VRP icon. 
  445.  
  446.  
  447. ΓòÉΓòÉΓòÉ 3.4. MindGame ΓòÉΓòÉΓòÉ
  448.  
  449. MindGame is a game in which you must guess the colors of four buttons in ten 
  450. guesses or less. When it is run, the buttons for the first guess are located 
  451. above the horizontal bar at the bottom left hand corner of the window. To 
  452. begin, choose a color from the color palette at the top right hand corner of 
  453. the window. The currently selected color is shown in the large colored button 
  454. to the right the color palette. When you have chosen a color, click on the 
  455. button to which you want to assign the color. When you have chosen colors for 
  456. all four  buttons, click on Guess. An X is displayed for each button for which 
  457. the color is correct. An O indicates that a correct color is chosen but it is 
  458. not assigned to the correct button. You continue guessing until you guess 
  459. correctly or complete ten tries. The New item in the Game menu starts a new 
  460. game. The Peek item lets you see the correct solution. The About item in the 
  461. Help menu shows copyright information. 
  462.  
  463. This program shows how to add a dialog to a program (the About dialog) and how 
  464. to use VXΓêÖREXX predefined functions (VRMessage). It also illustrates using 
  465. general routines for code that is used by many objects and shows how to pass 
  466. arguments to a REXX routine. It shows some of the features of the REXX language 
  467. such as program control statements (do and if) and how to use REXX stem 
  468. variables as arrays to simplify programming. MindGame also demonstrates the use 
  469. of menus. 
  470.  
  471. To run this program, double click on the Mind Game icon in the MindGame folder. 
  472. To edit the project, double click on the MindGame.VRP icon. 
  473.  
  474.  
  475. ΓòÉΓòÉΓòÉ 3.5. MMW ΓòÉΓòÉΓòÉ
  476.  
  477. The MMW sample program demonstrates the difference between modal and modeless 
  478. windows. It allows you to open both modeless and modal windows, and explains at 
  479. each step how you should proceed. 
  480.  
  481. To run this program, double click on the MMW icon in the MMW folder. To edit 
  482. the project, double click on the MMW.VRP icon. 
  483.  
  484.  
  485. ΓòÉΓòÉΓòÉ 3.6. Movies ΓòÉΓòÉΓòÉ
  486.  
  487. The Movies sample program demonstrates the use of VXΓêÖREXX with the multimedia 
  488. extensions to OS/2. You will require the IBM Multimedia Presentation Manager/2 
  489. software to run this sample. This software is included in OS/2 2.1 but is 
  490. installed separately. 
  491.  
  492. This sample allows you to play movies, either in the main thread, or as part of 
  493. a separate thread, allowing you to continue working in  the current thread. 
  494.  
  495. To run this program, double click on the Multimedia icon in the Movies folder. 
  496. To edit the project, double click on the Movies.VRP icon. 
  497.  
  498.  
  499. ΓòÉΓòÉΓòÉ 3.7. Scan ΓòÉΓòÉΓòÉ
  500.  
  501. In this sample, VXΓêÖREXX is used to create a REXX macro that can be run with the 
  502. OS/2 Enhanced Editor (EPM). When run from EPM, the Scan macro searches the 
  503. current file for all REXX labels (with format labelname:) and displays the 
  504. labels in a list box. If you double click on a label in the list box, that 
  505. label becomes the current line in the editor. 
  506.  
  507. The sample program was created with VXΓêÖREXX. The macro was created using Make 
  508. macro from the VXΓêÖREXX Project menu. 
  509.  
  510. To start the macro, open the EPM with Scan object in the Scan folder. 
  511. Alternatively, you can run the macro from within EPM by doing the following: 
  512.  
  513.  1. Press Ctrl+I or choose Command dialog from the Command menu. 
  514.  
  515.  2. Type the following in the entry field: 
  516.  
  517.    rx c:\vxrexx\samples\scan\bin\scan 
  518.  
  519. The Scan folder also includes a Profile.ERX file that will add a menu to EPM 
  520. which can be used to run the macro. To use the profile: 
  521.  
  522.  1. Open EPM. 
  523.  
  524.  2. Select Command dialog from the Command menu. 
  525.  
  526.  3. Enter Profile on and select OK in the Command dialog. 
  527.  
  528.  4. Select Save options from the Options menu. 
  529.  
  530.  5. Close EPM. 
  531.  
  532. Now when you double click on the EPM with Scan icon and select a label, EPM 
  533. should include a Labels menu. Selecting Find from this menu will run the sample 
  534. macro. 
  535.  
  536. To edit the project, double click on the Scan.VRP icon. 
  537.  
  538.  
  539. ΓòÉΓòÉΓòÉ 3.8. SampleDB ΓòÉΓòÉΓòÉ
  540.  
  541. The SampleDB application demonstrates the use of VXΓêÖREXX with either Database 2 
  542. OS/2 (DB2/2) or Extended Services for OS/2 Database Manager. SampleDB accesses 
  543. the Database Manager sample database using the Database Manager REXX API 
  544. (Application Programming Interface). You are provided with a simple interface 
  545. to view the records in this sample database. Click on the Search button to 
  546. display the first record, and then click on Next to view each subsequent 
  547. record. 
  548.  
  549. Clicking on Clear closes the database. You can quit the program at any time by 
  550. clicking on the Exit button. 
  551.  
  552. For more information about this sample program, and about using VXΓêÖREXX with 
  553. the Database Manager, refer to the chapter entitled Database Manager with 
  554. VXΓêÖREXX in the Programmer's Guide. 
  555.  
  556. Running this sample program requires that you have either Database 2 OS/2 or 
  557. the older Extended Services for OS/2. These are a separate products, and are 
  558. not included with either VXΓêÖREXX or the OS/2 system. If you do have either of 
  559. these database packages, make sure that you have installed the sample database 
  560. provided with the Database Manager. 
  561.  
  562. To run this program, double click on the Sample Database icon in the SampleDB 
  563. folder. To edit the project, double click on the SampleDB.VRP icon. 
  564.  
  565.  
  566. ΓòÉΓòÉΓòÉ 3.9. Threads ΓòÉΓòÉΓòÉ
  567.  
  568. The Threads sample program demonstrates VXΓêÖREXX's ability to create 
  569. multithreaded applications. This feature allows you to write applications which 
  570. perform lengthy operations in the background. For example, an application could 
  571. allow the user to continue to work in the main window while saving files in the 
  572. background. The main window would be one thread, and the part of the program 
  573. saving the files would be another thread. 
  574.  
  575. This sample allows you to create threads by clicking on the Spawn New Thread 
  576. button. A new window is opened into which you can enter text. Clicking on the 
  577. Send to parent button then sends the text to the main window, where it is 
  578. displayed in a list box. 
  579.  
  580. You can also stop the new threads that you create by selecting a thread number, 
  581. then clicking on the Halt Selected Thread button. 
  582.  
  583. To run this program, double click on the Threads icon in the Threads folder. To 
  584. edit the project, double click on the Threads.VRP icon. 
  585.  
  586.  
  587. ΓòÉΓòÉΓòÉ 3.10. WinCtrl ΓòÉΓòÉΓòÉ
  588.  
  589. The WinCtrl demo illustrates the use of the ListWindows method and PM window 
  590. handles. The program lists all of the top level frame windows that are 
  591. currently visible on the desktop. After selecting windows in the program's list 
  592. box, you can then minimize, restore, or shake them. 
  593.  
  594.  
  595. ΓòÉΓòÉΓòÉ 4. Release information ΓòÉΓòÉΓòÉ
  596.  
  597.  
  598. ΓòÉΓòÉΓòÉ 4.1. Online information ΓòÉΓòÉΓòÉ
  599.  
  600. The most up-to-date information on VXΓêÖREXX is available online. Both this Read 
  601. Me First and the Programmer's Guide and Reference are available online. The 
  602. most recent information is in the Latest Updates section of the online Read Me 
  603. First. The online Programmer's Guide and Reference contains all of the changes 
  604. noted in this document. 
  605.  
  606. In addition to online books, full context sensitive help is available within 
  607. the VXΓêÖREXX development environment. Simply activate the VXΓêÖREXX window by 
  608. clicking on it, and press the F1 key. A help window will appear, with general 
  609. information about the VXΓêÖREXX development environment. You can also access help 
  610. for VXΓêÖREXX from its Help menu. For more specific help  on any of VXΓêÖREXX's 
  611. menu choices use the cursor keys to choose a menu item, or hold down mouse 
  612. button 1 on the menu item, and press F1. 
  613.  
  614. In addition, the context help is linked to the full text of the Programmer's 
  615. Guide and Reference. To access help on an object, for example, click on the 
  616. object in the tool palette and press F1. A help window will open with a short 
  617. description of the object. Within the description the object name will appear 
  618. with special highlighting. Double click on this field to see the complete 
  619. reference entry for that object. 
  620.  
  621. Similarly, the reference entry for any event, function, method, object, 
  622. predefined routine or property can be quickly obtained by using the help index. 
  623. Open a VXΓêÖREXX help window by clicking on a VXΓêÖREXX window and pressing F1. 
  624. Open the help index by clicking on the Index button within the help window. 
  625. Select the appropriate topic from the beginning of the index list, for example 
  626. A list of functions. This will bring you to a list of items, each of which has 
  627. special highlighting. Double click on the item of interest to see its reference 
  628. entry. 
  629.  
  630.  
  631. ΓòÉΓòÉΓòÉ 4.2. Workplace Shell integration ΓòÉΓòÉΓòÉ
  632.  
  633. VXΓêÖREXX has been integrated into the Workplace Shell to allow you to take full 
  634. advantage of the OS/2 environment. The following highlights some of the 
  635. features related to the Workplace Shell. 
  636.  
  637. o Create new projects by dragging and dropping a project template 
  638.  
  639.   The Projects folder in the WATCOM VXΓêÖREXX folder contains a VXΓêÖREXX Project 
  640.   template. Drag and drop this template to create a new project folder. Open 
  641.   the folder and double click on the Project.VRP icon to edit the project. You 
  642.   can also open projects by dropping the project (VRP) file on the VXΓêÖREXX icon 
  643.   contained in the WATCOM VXΓêÖREXX folder. 
  644.  
  645.   See Creating and running projects in the Programmer's Guide. 
  646.  
  647. o Edit VXΓêÖREXX objects using Workplace Shell techniques 
  648.  
  649.    - Use mouse button 1 to select and resize objects. Both marquee and swipe 
  650.      selection are supported. 
  651.  
  652.    - Use mouse button 2 to move objects and to open their pop-up menus. 
  653.  
  654.    - Directly modify objects using their property notebooks. You can open a 
  655.      property notebook either by using an object's pop-up menu or by double 
  656.      clicking on the object. 
  657.  
  658.    - Drag and drop fonts and colors from the Workplace Shell font and color 
  659.      palettes. You can drag fonts and colors from these palettes onto VXΓêÖREXX 
  660.      objects to set their font and color properties. 
  661.  
  662.      Note that to set the foreground color on an object, press and hold the 
  663.      Ctrl key while dragging and dropping the color,  otherwise the background 
  664.      color will be set. 
  665.  
  666.      See Adding objects to a window and Changing object properties in the 
  667.      Programmer's Guide. 
  668.  
  669. o Write code using drag and drop programming 
  670.  
  671.   Using the VX-REXX drag and drop programming feature entire programs can be 
  672.   written without typing a line of code. For example, to create code to get the 
  673.   value of an entry field you simply drag the entry field and drop it on the 
  674.   editor where the code is to be inserted. Then you select the Value property 
  675.   from a list, click OK, and the code is inserted, complete with the name of 
  676.   the entry field. 
  677.  
  678.   You can also insert code directly using the Insert code item in the section 
  679.   editor's Edit menu, and you can configure VX-REXX to copy the generated code 
  680.   to the OS/2 clipboard so you can use this feature with external editors. 
  681.  
  682.   See the next section, New features in version 1.01. 
  683.  
  684. o Assign icons to your programs. 
  685.  
  686.   Icons can be assigned to VXΓêÖREXX executables (EXE) programs using the General 
  687.   page of the program's Settings notebook. You can also set the icon by placing 
  688.   an icon (ICO) file with the same name as the program in the same directory as 
  689.   the program. 
  690.  
  691.   Once assigned, a program's icon is used within the Workplace Shell to 
  692.   represent the program. It is also used when the program is running as the 
  693.   title bar icon, and as the icon used to represent a minimized window. 
  694.  
  695. o Provide context sensitive help and status information. 
  696.  
  697.   VXΓêÖREXX objects include properties that you can use to provide help and 
  698.   status information (hints) to your users. The help, either a simple text 
  699.   window or an OS/2 Information Presentation Facility help panel, is 
  700.   automatically displayed when your user presses F1. Hints are automatically 
  701.   displayed in the status area whenever an object has the focus or the pointer 
  702.   is moved over an object. 
  703.  
  704.   See Adding help to a program in the Programmer's Guide. 
  705.  
  706. o Create programs with multiple threads. 
  707.  
  708.   Every VXΓêÖREXX program contains multiple threads. This means your program will 
  709.   not freeze the system while it performs long calculations. You can also 
  710.   create and control threads within your own program so you can optimize your 
  711.   use of the computer. 
  712.  
  713.   See StartThread method in the online Reference. 
  714.  
  715. o Respond to Window List and ShutDown messages. 
  716.  
  717.   Your users can halt your programs using the OS/2 Window List or by shutting 
  718.   down OS/2 -- even when your program is performing long calculations. You can 
  719.   provide code to ensure your application shuts down gracefully when 
  720.   interrupted, so for example, you can give your users a chance to save or 
  721.   discard their data when OS/2 is shut down. 
  722.  
  723.   See Halt section in the online Reference. 
  724.  
  725. o List, control, and send keys to PM windows. 
  726.  
  727.   You can write programs that list and control windows on the OS/2 desktop. You 
  728.   can get and set their caption, position and size, and z-order, as well as 
  729.   enable, disable, minimize, maximize, and restore them. 
  730.  
  731.   See ListWindows method and HWnd property in the Reference. 
  732.  
  733.  
  734. ΓòÉΓòÉΓòÉ 5. New features in version 1.01 ΓòÉΓòÉΓòÉ
  735.  
  736. For more information on the following features refer to the online 
  737. documentation. 
  738.  
  739.  
  740. ΓòÉΓòÉΓòÉ 5.1. Improved Development Environment ΓòÉΓòÉΓòÉ
  741.  
  742.  
  743. ΓòÉΓòÉΓòÉ 5.1.1. Drag and drop programming ΓòÉΓòÉΓòÉ
  744.  
  745. VXΓêÖREXX has a new facility to make programming faster and easier. All REXX 
  746. functions, all of VXΓêÖREXX's built in functions, as well as all object methods 
  747. and properties can be used without having to write a single line of code. All 
  748. you have to do to start the process is drag an object onto a section editor 
  749. window. 
  750.  
  751. Suppose you have a window with a list box and a push button. You want to add a 
  752. string to the list every time the push button is clicked. 
  753.  
  754.  1. Open a VXΓêÖREXX section editor for the push button's Click event. 
  755.  
  756.  2. Position the insertion cursor in the section editor window at the point 
  757.     where you want the code to be inserted. 
  758.  
  759.  3. Drag the list box onto the section editor window. 
  760.  
  761.     When the pointer is over an editor window, VXΓêÖREXX draws a line linking the 
  762.     object to the window to indicate that it will generate code, instead of 
  763.     moving the object. When you release the mouse button, VXΓêÖREXX displays a 
  764.     list of actions you can perform on the list box. 
  765.  
  766.  4. Select Add a string from the list 
  767.  
  768.     VXΓêÖREXX will prompt you for the parameters to the AddString method. 
  769.  
  770.  5. Type the text you want to add to the list in the String entry field. 
  771.  
  772.  6. Click OK. 
  773.  
  774. VXΓêÖREXX will add a line at the insertion point similar to the following: 
  775.  
  776. position = VRMethod( "LB_1", "AddString", "Pressed" )
  777.  
  778.  
  779. Inserting code without drag and drop 
  780.  
  781. You can also use this facility directly from the Insert code menu item in the 
  782. section editor's Edit menu.  This allows you to generate code for an object 
  783. without dragging and dropping it, and to generate non-object specific code such 
  784. as calls to standard REXX functions. 
  785.  
  786. To insert code in a section editor: 
  787.  
  788.  1. Open a section editor. 
  789.  
  790.  2. Position the insertion cursor in the section editor window at the point 
  791.     where you want the code to be inserted. 
  792.  
  793.  3. Select Insert code from either the Edit menu or the (new) pop-up menu 
  794.     (click on the section editor window with mouse button 2). 
  795.  
  796.     VXΓêÖREXX will show a list of objects and tasks for which it can generate 
  797.     REXX code. 
  798.  
  799.  4. Pick an action, then fill in the dialog as described above to generate the 
  800.     code. 
  801.  
  802.  
  803. Inserting code into external editors 
  804.  
  805. Drag and drop code generation does not work for editors other than the VXΓêÖREXX 
  806. section editor. However you can configure VX-REXX so you can insert code into 
  807. the OS/2 clipboard from where it can be pasted into any editor. The macros 
  808. GenCodeO.VRM and GenCodeG.VRM in the Macros folder are used to enable this 
  809. feature. Their use is explained in the Profile.VRM file, also contained in the 
  810. Macro folder. 
  811.  
  812. It is also possible to directly invoke the insert code dialogs from a 
  813. PM-hosted, REXX-aware editor. The files in the EPMProto directory in the Macros 
  814. folder are provided to show how an insert code command can be added to the OS/2 
  815. Enhanced Editor (EPM). See the file EPMProto.TXT in the EPMProto directory for 
  816. more information. 
  817.  
  818.  
  819. ΓòÉΓòÉΓòÉ 5.1.2. Macros in the development environment ΓòÉΓòÉΓòÉ
  820.  
  821. You can now tailor the VXΓêÖREXX development environment by creating custom 
  822. commands as VXΓêÖREXX macros. This allows you to add new features to VXΓêÖREXX! 
  823.  
  824. You create the macros using VXΓêÖREXX, just as you would for any other PM-hosted, 
  825. REXX-aware application. You create a project, then choose Make macro from the 
  826. Project menu. You add the macro to the development environment by adding a line 
  827. to the Profile.VRM file located in the Macros folder. Macro commands added to 
  828. VXΓêÖREXX appear as extra menu items in the VXΓêÖREXX pop-up menu -- either on all 
  829. objects or only on selected objects. 
  830.  
  831. The following macros, along with their source projects, are included with 
  832. VXΓêÖREXX: 
  833.  
  834. o Tab editor macro 
  835.  
  836.   The tab editor macro provides a fast and easy way to set the tab order for 
  837.   all of the objects on a window. 
  838.  
  839. o Set properties macro 
  840.  
  841.   The set properties macro can be used instead of property notebooks to view or 
  842.   set an object's properties. It makes it easier to edit all of the properties 
  843.   of a single object, or to set the same property on a number of objects. 
  844.  
  845. o Resize macro 
  846.  
  847.   The resize macro forces a number of objects to the same size. A typical use 
  848.   is to force a number of push buttons to the same size. 
  849.  
  850. o Object list macro 
  851.  
  852.   This macro lists all objects on a window. You can select objects from the 
  853.   list and open their property notebooks. This makes it possible to find 
  854.   objects that are behind other objects or beyond the border of the window. 
  855.  
  856. Details on how to create and install macros are provided in the Profile.VRM and 
  857. the Macros.TXT files in the Macros directory. 
  858.  
  859.  
  860. ΓòÉΓòÉΓòÉ 5.1.3. Swipe selection now supported ΓòÉΓòÉΓòÉ
  861.  
  862. If you press mouse button 1 while the pointer is not over an object, you get a 
  863. marquee selection with a bounding rectangle. All selection in version 1.00 was 
  864. done this way. 
  865.  
  866. If you press mouse button 1 while over an object, you start a swipe selection. 
  867. As long as you hold mouse button 1 down, you will select any object the pointer 
  868. passes over. 
  869.  
  870.  
  871. ΓòÉΓòÉΓòÉ 5.1.4. New status line ΓòÉΓòÉΓòÉ
  872.  
  873. A status bar has been added to VXΓêÖREXX to give the name and class of the object 
  874. that is currently under the pointer. You can disable the feature by unchecking 
  875. the Show Hints menu item in the Options menu. 
  876.  
  877.  
  878. ΓòÉΓòÉΓòÉ 5.1.5. Resizable tool palette ΓòÉΓòÉΓòÉ
  879.  
  880. You can now resize the tool palette. Its size and position is saved along with 
  881. the size and position of the other VXΓêÖREXX windows when you save a project. 
  882.  
  883.  
  884. ΓòÉΓòÉΓòÉ 5.1.6. Quicker access to event routines ΓòÉΓòÉΓòÉ
  885.  
  886. There is a new item in the VXΓêÖREXX object popup menu which lists all of the 
  887. events for the object. This is a short cut for opening the object's property 
  888. notebook, selecting the Events page, and clicking on the event. 
  889.  
  890.  
  891. ΓòÉΓòÉΓòÉ 5.1.7. New popup menu in code section editor ΓòÉΓòÉΓòÉ
  892.  
  893. Clicking on a code section editor with mouse button 2 now displays a popup 
  894. version of the Edit menu. This speeds up access to common commands such as cut, 
  895. copy, and paste. 
  896.  
  897.  
  898. ΓòÉΓòÉΓòÉ 5.1.8. Set the default editor to an external editor ΓòÉΓòÉΓòÉ
  899.  
  900. You can now configure VXΓêÖREXX to use an external editor as the default editor. 
  901. To do this, set the check box in the external editor configuration dialog. 
  902.  
  903.  
  904. ΓòÉΓòÉΓòÉ 5.2. New run time features ΓòÉΓòÉΓòÉ
  905.  
  906.  
  907. ΓòÉΓòÉΓòÉ 5.2.1. New SpinButton object ΓòÉΓòÉΓòÉ
  908.  
  909. An additional object, the spin button, has been added. A spin button allows a 
  910. user to enter a value or select a value from a list. Only a single value from 
  911. the list is displayed; the user can change the displayed value by clicking on 
  912. up and down buttons. 
  913.  
  914. You can set the list in a spin button either at design time or run time, and 
  915. you can specify the list as either an enumerated set of values or as a range of 
  916. values with a specified increment. 
  917.  
  918. See the Using objects in the online Programmer's Guide and SpinButton object in 
  919. the online Reference for more information. 
  920.  
  921.  
  922. ΓòÉΓòÉΓòÉ 5.2.2. Enhanced keyboard support ΓòÉΓòÉΓòÉ
  923.  
  924. o Accelerators 
  925.  
  926.   VXΓêÖREXX menus can now have accelerator or short-cut keys. Accelerator keys 
  927.   allow your users to execute menu commands without opening a menu. See the 
  928.   online Reference under the Accelerator property or InstallAccelerator method 
  929.   for a full description. 
  930.  
  931. o Mnemonics 
  932.  
  933.   Mnemonics are now supported for all options with captions. Mnemonics allow 
  934.   your users to activate objects without using a mouse. See the Caption 
  935.   property in the online Reference for more information. 
  936.  
  937. o Keystroke trapping 
  938.  
  939.   Programs can now trap and modify keystrokes. This allows you to change the 
  940.   behavior of objects, for example convert text in an entry field to uppercase 
  941.   as it is entered. See the KeyPress event or KeyString property in the online 
  942.   Reference documentation  for a full description of this new feature. 
  943.  
  944.  
  945. ΓòÉΓòÉΓòÉ 5.2.3. Manipulate windows belonging to other applications ΓòÉΓòÉΓòÉ
  946.  
  947. Using the new ListWindows method you can list all of the top level windows in 
  948. the system. Then you can use the VRGet, VRSet, and VRMethod functions to 
  949. interact with these windows. The windows appear to the program as VX-REXX 
  950. objects which support a limited number of properties and methods. 
  951.  
  952. You can also post or send keystrokes to PM windows using the new PostKeyString 
  953. and SendKeyString methods. 
  954.  
  955. See the ListWindows method, HWnd property, PostKeyString method, and 
  956. SendKeyString method in the online Reference for complete information. 
  957.  
  958.  
  959. ΓòÉΓòÉΓòÉ 5.2.4. Clipboard support ΓòÉΓòÉΓòÉ
  960.  
  961. You can use two new methods on the Application object to read and write text 
  962. from/to the OS/2 clipboard. See the PutClipboard and GetClipboard methods in 
  963. the online documentation for more information. 
  964.  
  965.  
  966. ΓòÉΓòÉΓòÉ 5.2.5. Improved control over STDIO redirection ΓòÉΓòÉΓòÉ
  967.  
  968. The VRRedirectSTDIO function now lets you enable and disable standard I/O 
  969. redirection and logging under program control. 
  970.  
  971.  
  972. ΓòÉΓòÉΓòÉ 5.2.6. Source code encoding in EXE files ΓòÉΓòÉΓòÉ
  973.  
  974. VXΓêÖREXX now encodes your REXX source code when it makes EXE files. This means 
  975. that you can distribute your programs and keep your source secure. 
  976.  
  977.  
  978. ΓòÉΓòÉΓòÉ 5.2.7. Improved error handling in VXΓêÖREXX generated macros ΓòÉΓòÉΓòÉ
  979.  
  980. When you make macros, VXΓêÖREXX now automatically generates code to trap syntax 
  981. errors. The code displays an error message, then exits the macro. If you have 
  982. your own syntax error handler, it will override the automatically generated 
  983. one. 
  984.  
  985.  
  986. ΓòÉΓòÉΓòÉ 5.2.8. File menu removed from the debugger ΓòÉΓòÉΓòÉ
  987.  
  988. The debugger section list window no longer contains a File menu with a single 
  989. Quit item. It was removed to improve the conformance of VX-REXX to the CUA '91 
  990. object model. Now just close the section list window to quit the debugger and 
  991. return to the design environment. 
  992.  
  993.  
  994. ΓòÉΓòÉΓòÉ 5.2.9. Support for Personal REXX version 3.0a ΓòÉΓòÉΓòÉ
  995.  
  996. VXΓêÖREXX now works with Quercus System's Personal REXX version 3.0a. 
  997.  
  998.  
  999. ΓòÉΓòÉΓòÉ 5.3. Other new or improved properties, events, and methods ΓòÉΓòÉΓòÉ
  1000.  
  1001. Refer to the online Reference for complete information on the following. 
  1002.  
  1003.  
  1004. ΓòÉΓòÉΓòÉ 5.3.1. AddStringList method ΓòÉΓòÉΓòÉ
  1005.  
  1006. This method now disables list box repainting while adding strings to the list, 
  1007. speeding up the operation. 
  1008.  
  1009.  
  1010. ΓòÉΓòÉΓòÉ 5.3.2. AdjustHeight property ΓòÉΓòÉΓòÉ
  1011.  
  1012. This ListBox property forces the list box to adjust its height to an integral 
  1013. number of lines. 
  1014.  
  1015.  
  1016. ΓòÉΓòÉΓòÉ 5.3.3. Change event ΓòÉΓòÉΓòÉ
  1017.  
  1018. Objects containing an entry field now support a Change event which is triggered 
  1019. whenever the contents of the field have changed. 
  1020.  
  1021.  
  1022. ΓòÉΓòÉΓòÉ 5.3.4. ExtendedSelect property ΓòÉΓòÉΓòÉ
  1023.  
  1024. List boxes now support two styles of multiple selection, extended (items are 
  1025. selected in ranges) and non-extended (items are selected one at a time). 
  1026.  
  1027.  
  1028. ΓòÉΓòÉΓòÉ 5.3.5. HWnd property ΓòÉΓòÉΓòÉ
  1029.  
  1030. All visible objects now have an HWnd property which gives the value of the PM 
  1031. handle to the outer window of the object. 
  1032.  
  1033.  
  1034. ΓòÉΓòÉΓòÉ 5.3.6. Justification property ΓòÉΓòÉΓòÉ
  1035.  
  1036. DescriptiveText and EntryField objects have a new Justification property, which 
  1037. can be Left, Right, or Center. 
  1038.  
  1039.  
  1040. ΓòÉΓòÉΓòÉ 5.3.7. LayoutStyle property ΓòÉΓòÉΓòÉ
  1041.  
  1042. The layout style controls how a window arranges the objects it contains. You 
  1043. can use this property to make windows that automatically resize their children. 
  1044.  
  1045.  
  1046. ΓòÉΓòÉΓòÉ 5.3.8. ListChildren method ΓòÉΓòÉΓòÉ
  1047.  
  1048. This method lists the children of a given object. 
  1049.  
  1050.  
  1051. ΓòÉΓòÉΓòÉ 5.3.9. ListClasses method ΓòÉΓòÉΓòÉ
  1052.  
  1053. Use this method to list the classes of objects in a DLL or in the current 
  1054. program. 
  1055.  
  1056.  
  1057. ΓòÉΓòÉΓòÉ 5.3.10. Maximize method ΓòÉΓòÉΓòÉ
  1058.  
  1059. This new window method causes a window to be maximized. 
  1060.  
  1061.  
  1062. ΓòÉΓòÉΓòÉ 5.3.11. Minimize method ΓòÉΓòÉΓòÉ
  1063.  
  1064. This new window method minimizes a window. 
  1065.  
  1066.  
  1067. ΓòÉΓòÉΓòÉ 5.3.12. MultiLineEntryField object ΓòÉΓòÉΓòÉ
  1068.  
  1069. Multiline entry fields now support the DoubleClick event. 
  1070.  
  1071.  
  1072. ΓòÉΓòÉΓòÉ 5.3.13. Painting property ΓòÉΓòÉΓòÉ
  1073.  
  1074. This new property has been added to all visible objects and can be used to 
  1075. suppress painting of an object or group of objects during an update. 
  1076.  
  1077.  
  1078. ΓòÉΓòÉΓòÉ 5.3.14. Pointer property ΓòÉΓòÉΓòÉ
  1079.  
  1080. Use this property to set the pointer to an hourglass or other shape during long 
  1081. calculations. 
  1082.  
  1083.  
  1084. ΓòÉΓòÉΓòÉ 5.3.15. PostQueue method ΓòÉΓòÉΓòÉ
  1085.  
  1086. This method is the same as the Post method except that it allows you to specify 
  1087. which window queue (i.e. which primary window) should receive the posted event. 
  1088. This ensures that the event is not simply delivered to the currently active 
  1089. window. 
  1090.  
  1091.  
  1092. ΓòÉΓòÉΓòÉ 5.3.16. Restore method ΓòÉΓòÉΓòÉ
  1093.  
  1094. This window method restores a minimized or maximized window to its previous 
  1095. size and position. 
  1096.  
  1097.  
  1098. ΓòÉΓòÉΓòÉ 5.3.17. StatusArea ΓòÉΓòÉΓòÉ
  1099.  
  1100. The status area on windows now has a sporty 3D look. 
  1101.  
  1102.  
  1103. ΓòÉΓòÉΓòÉ 5.3.18. SupportsMethod method ΓòÉΓòÉΓòÉ
  1104.  
  1105. This method determines if a given method is available for a specified object or 
  1106. type of object. 
  1107.  
  1108.  
  1109. ΓòÉΓòÉΓòÉ 5.3.19. SupportsProperty methods ΓòÉΓòÉΓòÉ
  1110.  
  1111. This method determines if a given property is available for a specified object 
  1112. or type of object. 
  1113.  
  1114.  
  1115. ΓòÉΓòÉΓòÉ 5.3.20. TabGroup property ΓòÉΓòÉΓòÉ
  1116.  
  1117. This property has been added to all objects with the TabStop property. This 
  1118. property is used to group objects into tab groups without using group boxes. 
  1119. The user can move from object to object within a tab group by using either the 
  1120. tab or cursor keys, but can only switch between tab groups by using the tab 
  1121. key. 
  1122.  
  1123.  
  1124. ΓòÉΓòÉΓòÉ 5.3.21. VertJustification property ΓòÉΓòÉΓòÉ
  1125.  
  1126. DescriptiveText objects have a new VertJustification property, which can be 
  1127. Top, Bottom, or Center. You must set this property at design time; it is read 
  1128. only at run time. For a full description, see the online documentation. 
  1129.  
  1130.  
  1131. ΓòÉΓòÉΓòÉ 6. Tips ΓòÉΓòÉΓòÉ
  1132.  
  1133.  
  1134. ΓòÉΓòÉΓòÉ 6.1. Using VXΓêÖREXX ΓòÉΓòÉΓòÉ
  1135.  
  1136.  
  1137. ΓòÉΓòÉΓòÉ 6.1.1. Running VXΓêÖREXX ΓòÉΓòÉΓòÉ
  1138.  
  1139. o VXΓêÖREXX can be started from an OS/2 command prompt. The command line syntax 
  1140.   is: 
  1141.  
  1142.       vrxedit [project] 
  1143.  
  1144.   where project is the name of a project (VRP) file. 
  1145.  
  1146. o Before executing a pull instruction, be sure to execute a say instruction in 
  1147.   order to open the standard I/O console. If you execute pull when the console 
  1148.   is not visible your program may appear frozen. Your program has not crashed; 
  1149.   it is just waiting for input. 
  1150.  
  1151.   You can force the console to become visible by selecting Show for the VXΓêÖREXX 
  1152.   console in the OS/2 window list. Alternatively, you can exit your program by 
  1153.   selecting Close from the program's pop-up menu in the OS/2 window list. 
  1154.  
  1155.  
  1156. ΓòÉΓòÉΓòÉ 6.1.2. Using the debugger ΓòÉΓòÉΓòÉ
  1157.  
  1158. o To stop the debugging session at any time simply close the debugger section 
  1159.   list window. 
  1160.  
  1161. o You can enter REXX statements for immediate execution in the Results window. 
  1162.   For example you can enter say statements to see the value of variables and 
  1163.   simple expressions. 
  1164.  
  1165.  
  1166. ΓòÉΓòÉΓòÉ 6.1.3. Interrupting a VXΓêÖREXX program ΓòÉΓòÉΓòÉ
  1167.  
  1168. You can use the Close command from the OS/2 Window List Window (Ctrl+Esc) to 
  1169. interrupt a VXΓêÖREXX program. 
  1170.  
  1171.  
  1172. ΓòÉΓòÉΓòÉ 6.2. Using VXΓêÖREXX objects ΓòÉΓòÉΓòÉ
  1173.  
  1174.  
  1175. ΓòÉΓòÉΓòÉ 6.2.1. Using property notebooks ΓòÉΓòÉΓòÉ
  1176.  
  1177. The property notebook for a Window has more page tabs than are displayed at the 
  1178. default size. To see additional page tabs, make the notebook larger or use the 
  1179. double up and down arrows above and below the page tabs. 
  1180.  
  1181.  
  1182. ΓòÉΓòÉΓòÉ 6.2.2. Window files versus multiple windows ΓòÉΓòÉΓòÉ
  1183.  
  1184. We strongly recommend that you place modal windows in separate window files. 
  1185. Window files are created and managed using the File list in VXΓêÖREXX. You should 
  1186. use secondary windows, and the VXΓêÖREXX Window list only for modeless windows. 
  1187. See the MMW sample program for an example of modal versus modeless windows. 
  1188.  
  1189.  
  1190. ΓòÉΓòÉΓòÉ 6.2.3. Using DropDownComboBoxes ΓòÉΓòÉΓòÉ
  1191.  
  1192. The height set for drop-down combo boxes in the design environment is the 
  1193. dropped-down height (the height of the entry field is fixed and depends only on 
  1194. the font). If you set the size too small the drop-down list will not drop down 
  1195. at run time. 
  1196.  
  1197.  
  1198. ΓòÉΓòÉΓòÉ 6.2.4. Using GroupBoxes ΓòÉΓòÉΓòÉ
  1199.  
  1200. GroupBoxes must contain objects within their borders; you cannot simply place a 
  1201. GroupBox on top of existing objects. Objects are contained in a GroupBox if 
  1202. they are created in the GroupBox or if they are pasted into the group box. Use 
  1203. Cut and Paste to move existing objects into a GroupBox. 
  1204.  
  1205.  
  1206. ΓòÉΓòÉΓòÉ 6.2.5. Changing tab behavior with multiline entry fields ΓòÉΓòÉΓòÉ
  1207.  
  1208. By default, pressing Tab in a multiline entry field (MLE) inserts a tab 
  1209. character into the MLE, rather than moving the focus to the next object in the 
  1210. tab order. While the user can always press Ctrl+Tab to move to the next object, 
  1211. you can use the KeyPress event to do this automatically when the user presses 
  1212. Tab. 
  1213.  
  1214. Add a KeyPress event for the MLE as follows: 
  1215.  
  1216. MLE_1_KeyPress:
  1217.     keystring = VRGet( "MLE_1", "KeyString" )
  1218.     if keystring = "{Tab}" then do
  1219.         ok = VRSet( "MLE_1", "KeyString", "{Ctrl}{Tab}" )
  1220.     end
  1221. return
  1222.  
  1223. For more information about the KeyPress event or the KeyString property, see 
  1224. the online reference. 
  1225.  
  1226.  
  1227. ΓòÉΓòÉΓòÉ 6.2.6. Generating timer events ΓòÉΓòÉΓòÉ
  1228.  
  1229. You can generate timer events by using the multithreading capability of 
  1230. VXΓêÖREXX: 
  1231.  
  1232.  1. Create a separate code-only file with the following code: 
  1233.  
  1234.         Main:
  1235.             call RXFuncAdd "SysLoadFuncs", "REXXUTIL", "SysLoadFuncs"
  1236.             call SysLoadFuncs
  1237.  
  1238.             do forever
  1239.                 call SysSleep 1    /* wait 1 second */
  1240.                 call VRMethod "Application",,
  1241.                               "PostQueue", 0, 1, "call TimerEvent"
  1242.             end
  1243.         return
  1244.  
  1245.  2. In the Init section of the main window file, start the timer thread using 
  1246.     the StartThread method: 
  1247.  
  1248.         call VRMethod "Application", "StartThread", "File1"
  1249.  
  1250.     You should replace File1 with the actual name of the code-only file you 
  1251.     created in step 1. 
  1252.  
  1253.  3. From the section list, add a new section called "TimerEvent" to the main 
  1254.     window file. 
  1255.  
  1256. When you run your program, the TimerEvent routine will be called every second. 
  1257.  
  1258. For longer timeouts add a second loop in the timer thread code to count seconds 
  1259. rather than increase the time spent in the SysSleep function. This will ensure 
  1260. that your application can be shutdown, as it will not be blocked in SysSleep 
  1261. for long periods of time. 
  1262.  
  1263. You can also pass and use internal object names between threads. For example 
  1264. you could pass the internal name of a descriptive text field to a timer thread 
  1265. which could then use VRSet to modify the text directly -- without posting an 
  1266. event. This would ensure that the text was updated even when the window it was 
  1267. on was not responding to events. 
  1268.  
  1269.  
  1270. ΓòÉΓòÉΓòÉ 6.3. Launching programs from REXX ΓòÉΓòÉΓòÉ
  1271.  
  1272.  
  1273. ΓòÉΓòÉΓòÉ 6.3.1. Running commands that require OS/2 session "VIO" support ΓòÉΓòÉΓòÉ
  1274.  
  1275. Since VXΓêÖREXX projects are Presentation Manager programs, you cannot directly 
  1276. execute OS/2 commands which require "VIO" support. The OS/2 PSTAT command uses 
  1277. VIO support. If you try to run it from REXX, you will get a "SYS0436: An 
  1278. invalid VIO handle was found" error. 
  1279.  
  1280. Use the OS/2 start command to run this program. The following instructions will 
  1281. run PSTAT in its own OS/2 window. 
  1282.  
  1283. address cmd "start /win pstat <con >con"
  1284.  
  1285. To get help for the OS/2 start command, type help start from an OS/2 command 
  1286. window. The use of the redirection symbols < and > is explained below. 
  1287.  
  1288.  
  1289. ΓòÉΓòÉΓòÉ 6.3.2. Redirecting standard input, output and error ΓòÉΓòÉΓòÉ
  1290.  
  1291. By default, VXΓêÖREXX redirects the standard input, output, and error streams to 
  1292. its console window. If you launch a program or execute an OS/2 command, the 
  1293. output is sent to the console and input is taken from the console. 
  1294.  
  1295. For example, the following instruction sends a directory listing to the 
  1296. console: 
  1297.  
  1298. address cmd "dir"
  1299.  
  1300. When you run non-PM programs, the output is sent to the console unless you 
  1301. explicitly redirect it. The following instruction will run PSTAT in its own 
  1302. window, and the results will be displayed in the window. 
  1303.  
  1304. address cmd "start /win pstat <con >con"
  1305.  
  1306. If the program you are running writes to standard error, you should add 2>con 
  1307. to redirect standard error, as follows: 
  1308.  
  1309. address cmd "start /win pstat <con >con 2>con"
  1310.  
  1311.  
  1312. ΓòÉΓòÉΓòÉ 6.4. Writing REXX programs ΓòÉΓòÉΓòÉ
  1313.  
  1314.  
  1315. ΓòÉΓòÉΓòÉ 6.4.1. Returning multiple values ΓòÉΓòÉΓòÉ
  1316.  
  1317. Multiple values can be returned from a function by concatenating them into a 
  1318. single string, returning the string, then using parse to break the return 
  1319. string into separate values. 
  1320.  
  1321.  
  1322. ΓòÉΓòÉΓòÉ 6.4.2. Using Files ΓòÉΓòÉΓòÉ
  1323.  
  1324. Explicit open and close commands are not required to read and write files using 
  1325. REXX, but you must be aware that once you access a file it is left open unless 
  1326. you explicitly close it. You cannot delete files that are open and you may be 
  1327. unable to open new files if all available file handles have been used. 
  1328.  
  1329. To avoid such problems, be sure your REXX program closes any files it opens as 
  1330. soon as it is done with them. For example, the following code opens a file 
  1331. called baker, writes to it, and closes it: 
  1332.  
  1333. call stream "baker", "c", "open write"
  1334. call lineout "baker", "Skip to the loo"
  1335. call stream "baker", "c", "close"
  1336.  
  1337. For more information about the stream instruction, see the online REXX 
  1338. Information. 
  1339.  
  1340.  
  1341. ΓòÉΓòÉΓòÉ 6.4.3. Common REXX coding errors ΓòÉΓòÉΓòÉ
  1342.  
  1343. Blank space where it does not belong 
  1344.  
  1345. In REXX expressions, blank space is interpreted as an implicit concatenation 
  1346. operator (the terms are concatenated with a blank in between). As a result, 
  1347. REXX will interpret many mistyped statements as an expression involving the 
  1348. blank concatenation operator. 
  1349.  
  1350. For example, inserting a blank after a function name in a function call changes 
  1351. the meaning of the expression: 
  1352.  
  1353. textUpper = translate ( text )
  1354.  
  1355. to: 
  1356.  
  1357. textUpper = "TRANSLATE" || " " || text
  1358.  
  1359. Blank space also plays a special role in the parse instruction. Compare the 
  1360. following: 
  1361.  
  1362. parse arg a b c
  1363. parse arg a, b, c
  1364.  
  1365. The first line parses the first argument passed to the routine into three 
  1366. parts, the second line sets the three variables to the value of the first three 
  1367. arguments passed to the routine. 
  1368.  
  1369. Function calls versus the CALL statement 
  1370.  
  1371. When you call a routine that returns a result, you must enclose the parameters 
  1372. in parentheses: 
  1373.  
  1374. text = VRGet( "EF_1", "Value" )
  1375.  
  1376. If you are calling a routine that does not return a value, you should use the 
  1377. call instruction: 
  1378.  
  1379. call VRSet "EF_1", "BackColor", "Blue"
  1380.  
  1381. Note that there is no comma between the name of the routine and the first 
  1382. parameter. 
  1383.  
  1384. Ignoring return values of functions 
  1385.  
  1386. When using a function as a procedure, you must not ignore the return value. If 
  1387. the return value is not handled it will be passed to the default host 
  1388. environment as a command. This will normally result in a failure trace message. 
  1389. Either assign the returned value to a variable or use the call instruction to 
  1390. call the function as a procedure. 
  1391.  
  1392. Line continuation 
  1393.  
  1394. In REXX, the comma is the line continuation character. It is required when 
  1395. extending one clause over several lines. For example, 
  1396.  
  1397. call foo a, b, c
  1398.  
  1399. can also be written as 
  1400.  
  1401. call foo a, ,
  1402.          b, ,
  1403.          c
  1404.  
  1405. It is easy to forget the second comma if you are breaking a line in the middle 
  1406. of a parameter list. 
  1407.  
  1408. Omitted arguments 
  1409.  
  1410. REXX allows arguments to be omitted. Be careful not to omit arguments by 
  1411. accident. 
  1412.  
  1413. The following calls foo with four arguments (the first one is omitted). 
  1414.  
  1415. call foo, a, b, c
  1416.  
  1417. Undefined variables 
  1418.  
  1419. It is not a syntax error to use undefined variables in REXX. Undefined 
  1420. variables are defined to have their own name translated to uppercase as their 
  1421. value. As a result it is often difficult to find programming errors that are a 
  1422. result of using undefined variables. 
  1423.  
  1424.    o Add a "SIGNAL ON NOVALUE" statement to the main section of your programs. 
  1425.      This will cause the system to issue a syntax error if you use an undefined 
  1426.      variable. 
  1427.  
  1428.    o Be careful to include the period when referring to stems. The variables A 
  1429.      and A. are unrelated. 
  1430.  
  1431.    o Misspelled commands will often be interpreted as undefined variables. The 
  1432.      line 
  1433.  
  1434.           sy 'hello'
  1435.  
  1436.      (which should be "say 'hello'") will be interpreted as 
  1437.  
  1438.           "SY" || " " || 'hello'
  1439.  
  1440.      Thus the string "SY hello" will be sent to OS/2 for execution, resulting 
  1441.      in a command failure error. 
  1442.  
  1443. Using expressions in the tail of a compound symbol 
  1444.  
  1445. The tail of a compound symbol can only be a simple variable, as in: 
  1446.  
  1447. ok = A.I
  1448.  
  1449. Literals are not allowed. The following is interpreted as a concatenation 
  1450. between A. and "name" 
  1451.  
  1452. bad = A."name"
  1453.  
  1454. Expressions are not allowed. The following is interpreted as "bad = (A.I) - 1". 
  1455.  
  1456. bad = A.I-1
  1457.  
  1458. Assign the literal or expression to a simple variable and use that to form the 
  1459. compound variable: 
  1460.  
  1461. J = I - 1
  1462. ok = A.J
  1463.  
  1464.  
  1465. ΓòÉΓòÉΓòÉ 7. Restrictions ΓòÉΓòÉΓòÉ
  1466.  
  1467.  
  1468. ΓòÉΓòÉΓòÉ 7.1. Installation ΓòÉΓòÉΓòÉ
  1469.  
  1470. The installation program requires a minimum of 1M free space on the OS/2 boot 
  1471. drive to start the install. 
  1472.  
  1473.  
  1474. ΓòÉΓòÉΓòÉ 7.2. Development environment ΓòÉΓòÉΓòÉ
  1475.  
  1476.  
  1477. ΓòÉΓòÉΓòÉ 7.2.1. Missing windows ΓòÉΓòÉΓòÉ
  1478.  
  1479. On some occasions a project's window positions may not be saved correctly. It 
  1480. may appear that one or more of the windows in your project has disappeared, but 
  1481. they are actually just off the screen. Move the VXΓêÖREXX window around your 
  1482. screen, as this may cause the windows to reappear. Once you can see any part of 
  1483. the window click on it and press Atl+F7 to move it, or double click on it and 
  1484. set the Top and Left properties to 0. 
  1485.  
  1486. If the windows do not reappear, save the file as text, and manually change the 
  1487. Top and Left properties of the hidden windows to 0, which will be certain to be 
  1488. on the screen when you reload the file. 
  1489.  
  1490.  
  1491. ΓòÉΓòÉΓòÉ 7.2.2. Tab order ΓòÉΓòÉΓòÉ
  1492.  
  1493. Objects pasted into a window are not placed at the end of the tab order. They 
  1494. keep their current tab index; the tab indices of other objects on the window 
  1495. are adjusted accordingly. You should create and edit your windows without 
  1496. regard to the tab order, then set the tab order in the final version. 
  1497.  
  1498.  
  1499. ΓòÉΓòÉΓòÉ 7.2.3. Updating property notebooks ΓòÉΓòÉΓòÉ
  1500.  
  1501. Open property notebooks are not updated while open to show the results of drag 
  1502. and drop fonts and colors. To refresh the values on a page, turn to another 
  1503. page, then turn back to the first page. Closing and reopening a notebook also 
  1504. refreshes the values. 
  1505.  
  1506.  
  1507. ΓòÉΓòÉΓòÉ 7.2.4. Loading files saved as text ΓòÉΓòÉΓòÉ
  1508.  
  1509. Not all syntax errors in text-format (VRT) window files are reported. In these 
  1510. cases the file will load successfully, but the window will not appear. If this 
  1511. happens, fix the syntax errors in the text file and reload it. 
  1512.  
  1513.  
  1514. ΓòÉΓòÉΓòÉ 7.2.5. HPFS file names ΓòÉΓòÉΓòÉ
  1515.  
  1516. File names containing multiple periods (e.g. a.b.c) are not accepted by 
  1517. VXΓêÖREXX. Avoid these names when saving project and source files. 
  1518.  
  1519.  
  1520. ΓòÉΓòÉΓòÉ 7.2.6. Debugger ΓòÉΓòÉΓòÉ
  1521.  
  1522. o Because of the way the debugger handles breakpoints, it is impossible to 
  1523.   break a program on the first instruction in a file. 
  1524.  
  1525. o The current version of the interactive debugger supports only the main thread 
  1526.   of a program. Use the standard REXX trace instruction with the VXΓêÖREXX 
  1527.   console to debug multithreaded projects. 
  1528.  
  1529.  
  1530. ΓòÉΓòÉΓòÉ 7.3. Using VXΓêÖREXX objects ΓòÉΓòÉΓòÉ
  1531.  
  1532.  
  1533. ΓòÉΓòÉΓòÉ 7.3.1. Overlapping objects ΓòÉΓòÉΓòÉ
  1534.  
  1535. VXΓêÖREXX does not support overlapping objects (nor in general does OS/2). 
  1536. Overlapping objects will not paint correctly. 
  1537.  
  1538.  
  1539. ΓòÉΓòÉΓòÉ 7.3.2. Sending key strings to OS/2 and DOS sessions ΓòÉΓòÉΓòÉ
  1540.  
  1541. You cannot use PostKeyString or SendKeyString to send key strings to OS/2 and 
  1542. DOS sessions (windowed or full screen). 
  1543.  
  1544.  
  1545. ΓòÉΓòÉΓòÉ 7.4. Running VXΓêÖREXX programs ΓòÉΓòÉΓòÉ
  1546.  
  1547.  
  1548. ΓòÉΓòÉΓòÉ 7.4.1. Running VXΓêÖREXX macros from an OS/2 window ΓòÉΓòÉΓòÉ
  1549.  
  1550. VXΓêÖREXX macros created with the Make macro command cannot be run from an OS/2 
  1551. command prompt. They must be run from within a Presentation Manager session. 
  1552. The VRX command can be used to run VXΓêÖREXX macros: 
  1553.  
  1554.     vrx macro-name 
  1555.  
  1556. You should use the Make EXE file command in the Project menu to make standalone 
  1557. programs. Use the Make macro command to make macros to use with other PM 
  1558. applications such as the Enhanced Editor. 
  1559.  
  1560.  
  1561. ΓòÉΓòÉΓòÉ 7.4.2. Starting OS/2 commands from multiple threads ΓòÉΓòÉΓòÉ
  1562.  
  1563. The OS/2 command host will only run one program at a time. I.e. if you start a 
  1564. program on one thread, you will be unable to start a program on any other 
  1565. thread until the first program returns. To run multiple programs at the same 
  1566. time use the OS/2 start command. Enter help start at an OS/2 command prompt for 
  1567. more information. 
  1568.  
  1569.  
  1570. ΓòÉΓòÉΓòÉ 7.4.3. Syntax errors with Quercus System's Personal REXX ΓòÉΓòÉΓòÉ
  1571.  
  1572. When running under Personal REXX version 3.0a syntax errors are either reported 
  1573. only within the VXΓêÖREXX console or both within the VXΓêÖREXX console and the 
  1574. standard VXΓêÖREXX error dialog. 
  1575.  
  1576.  
  1577. ΓòÉΓòÉΓòÉ 8. Fixes in version 1.01 ΓòÉΓòÉΓòÉ
  1578.  
  1579.  
  1580. ΓòÉΓòÉΓòÉ 8.1. Installation ΓòÉΓòÉΓòÉ
  1581.  
  1582. o Improved installation check for free disk space. 
  1583.  
  1584. o CONVERT.EXE has been removed from the VXΓêÖREXX directory. 
  1585.  
  1586. o The install setup program is deleted from the root of the OS/2 boot drive. 
  1587.  
  1588.  
  1589. ΓòÉΓòÉΓòÉ 8.2. Design environment ΓòÉΓòÉΓòÉ
  1590.  
  1591.  
  1592. ΓòÉΓòÉΓòÉ 8.2.1. General ΓòÉΓòÉΓòÉ
  1593.  
  1594. o Improved error handling if VXΓêÖREXX is unable to load a window. 
  1595.  
  1596. o VXΓêÖREXX now correctly handles filenames which contain blanks or apostrophes. 
  1597.  
  1598. o Save as text now works correctly for code only files. 
  1599.  
  1600. o You can no longer drag objects off of a window or group box at design time. 
  1601.  
  1602. o REXX syntax errors are now handled more gracefully when running and debugging 
  1603.   a project. 
  1604.  
  1605. o Fixed occasional problems in updating the file and window lists. 
  1606.  
  1607. o Pressing F1 now opens the general help for VXΓêÖREXX when an edit window is 
  1608.   active. 
  1609.  
  1610. o Fixed problem in VXΓêÖREXX that generated a REXX error if OS/2 was shutdown or 
  1611.   a work area was closed while VXΓêÖREXX was running. 
  1612.  
  1613. o VXΓêÖREXX now confirms the creation of an EXE or macro. 
  1614.  
  1615. o VXΓêÖREXX now shows the full path of a file in the dialog that warns you about 
  1616.   overwriting existing files. 
  1617.  
  1618. o Disabled items have been removed from popup menus. 
  1619.  
  1620. o Fixed a problem with "ghost menus" appearing on some OS/2 2.1 systems when 
  1621.   mouse button 2 was pressed. 
  1622.  
  1623. o Fixed painting of edit handles on multiwindow objects. 
  1624.  
  1625. o Z-order of windows is now preserved when changing property values. 
  1626.  
  1627. o Better handling of long tokens in REXX programs. 
  1628.  
  1629.  
  1630. ΓòÉΓòÉΓòÉ 8.2.2. Property notebooks ΓòÉΓòÉΓòÉ
  1631.  
  1632. o Notebooks are now updated automatically while they are open if the object's 
  1633.   size, position, or tab order is changed. You can also refresh the values on a 
  1634.   page by flipping to another page, then flipping back. 
  1635.  
  1636. o Notebook pages no longer flash when they are selected for the first time. 
  1637.  
  1638. o The act of opening a section editor by selecting an event no longer marks the 
  1639.   object as being changed. 
  1640.  
  1641. o Deleted events are no longer shown in bold on the events page. 
  1642.  
  1643. o The font selection dialog now recognizes italics and bold attributes. 
  1644.   Previously, they were ignored. 
  1645.  
  1646. o The font and file dialogs are now centered over the notebook, rather than 
  1647.   being centered on the screen. 
  1648.  
  1649. o Pressing F1 when a notebook is active now opens the general help for VXΓêÖREXX. 
  1650.  
  1651. o The value of the InitialList property can now be deleted without freezing the 
  1652.   notebook window. 
  1653.  
  1654. o Changing a property on the "Style" page for a secondary window now marks the 
  1655.   project as changed. Previously it did not. 
  1656.  
  1657. o Previously, if more than one property notebook was open, changing the Name 
  1658.   property in one notebook incorrectly changed the title of the other notebook. 
  1659.  
  1660. o Notebooks are now displayed as an icon when minimized. Previously, they were 
  1661.   shown as the lower left corner of the full sized window. 
  1662.  
  1663. o Previously the tab order could have been changed when setting certain 
  1664.   properties. This problem has been fixed. 
  1665.  
  1666. o In version 1.0, if you restored a minimized property notebook by double 
  1667.   clicking on its icon in the Minimized Window Viewer, OS/2 would crash. This 
  1668.   problem is fixed. 
  1669.  
  1670. o Previously, opening more than one property notebook at a time would cause the 
  1671.   notebooks to flash when they opened. This has been fixed. 
  1672.  
  1673. o Property notebooks now show the object type in the title bar. 
  1674.  
  1675. o Property notebooks now appear in the OS/2 window list. 
  1676.  
  1677. o Deleting a section with a name of the same form as an event section no longer 
  1678.   causes an error. 
  1679.  
  1680. o Fixed a problem that left a secondary window disabled when a system menu was 
  1681.   added or removed from it. 
  1682.  
  1683.  
  1684. ΓòÉΓòÉΓòÉ 8.2.3. Code section editor ΓòÉΓòÉΓòÉ
  1685.  
  1686. o When you open a section, you are placed automatically in insert mode. 
  1687.  
  1688. o Fixed problem with spurious characters appended to imported text data in the 
  1689.   section editor. 
  1690.  
  1691. o Deleting a section now closes the editor window for that section. 
  1692.  
  1693. o In some rare instances, activating a section editor window could cause the 
  1694.   project windows to change their Z-order. This has been fixed. 
  1695.  
  1696.  
  1697. ΓòÉΓòÉΓòÉ 8.2.4. Debugger ΓòÉΓòÉΓòÉ
  1698.  
  1699. o The debugger now gracefully terminates if the REXX program contains a syntax 
  1700.   error. 
  1701.  
  1702. o The REXX RESULT variable is no longer reset by the debugger. 
  1703.  
  1704. o Previously, the first character of some lines in the results window was 
  1705.   inadvertently converted to a blank. This problem has been fixed. 
  1706.  
  1707. o The "Clear" item in the "Breakpoints" menu is now disabled if no breakpoints 
  1708.   are set. 
  1709.  
  1710. o The "Set" item in the "Breakpoints" menu is now enabled all the time. 
  1711.  
  1712. o REXX errors resulting from statements typed in the Results window are now 
  1713.   printed in the Results window. Previously, they were displayed in the Errors 
  1714.   window for the project. 
  1715.  
  1716. o All debugger windows except Results now appear in the OS/2 window list. 
  1717.  
  1718.  
  1719. ΓòÉΓòÉΓòÉ 8.3. Objects, properties, events, and methods ΓòÉΓòÉΓòÉ
  1720.  
  1721. AddString method 
  1722.  
  1723.    o This method now returns the position at which the string was inserted. 
  1724.      Previously, the method returned 0 or 1. 
  1725.  
  1726. AddStringList method 
  1727.  
  1728.    o This method now disables list box repainting while adding strings from a 
  1729.      list, speeding up the operation. 
  1730.  
  1731. Autosize property 
  1732.  
  1733.    o A minimum size is now enforced on all objects. This means that if you set 
  1734.      Autosize on an object with no caption, the object is no longer sized down 
  1735.      to a height and width of zero. 
  1736.  
  1737.    o If you drag and drop a font onto an object with autosize enabled, the 
  1738.      object resizes itself immediately. Previously, you had to turn off 
  1739.      autosize, then turn it on again after dropping the font for the object to 
  1740.      resize itself. 
  1741.  
  1742. ComboBox object 
  1743.  
  1744.    o Combo boxes now resize correctly when the font is changed. 
  1745.  
  1746.    o Drag and drop colors and fonts now work correctly. 
  1747.  
  1748.    o You can now set the Value property at design time. 
  1749.  
  1750.    o The Value property is now updated as soon as an item in the list is 
  1751.      clicked. This means that in the Click event, the Value property will be 
  1752.      the new selection. Previously, it was the old selection. 
  1753.  
  1754. DeleteList method 
  1755.  
  1756.    o This method now disables list box repainting while removing strings from 
  1757.      the list, speeding up the operation. 
  1758.  
  1759. DescriptiveText object 
  1760.  
  1761.    o The TabStop property has been removed. 
  1762.  
  1763.    o The SetFocus method has been removed. 
  1764.  
  1765.    o Autosize no longer causes the last word in the caption to disappear. 
  1766.  
  1767. DropDownComboBox object 
  1768.  
  1769.    o Drop down combo boxes that are in group boxes are now painted correctly. 
  1770.  
  1771.    o The list area of a drop down combo box is now repainted correctly when you 
  1772.      move the object. 
  1773.  
  1774.    o Drop down combo boxes now resize correctly when the font is changed. 
  1775.  
  1776.    o Drag and drop colors and fonts now work correctly. Previously, they were 
  1777.      ignored. 
  1778.  
  1779.    o You can now set the Value property at run time. Previously, this would not 
  1780.      work consistently. 
  1781.  
  1782.    o Previously, clicking in the list box portion of the object would generate 
  1783.      two Click events: one for the click in the list, and one when the entry 
  1784.      field is changed. Now a Click event is generated, followed by a Change 
  1785.      event when the entry field changes value. 
  1786.  
  1787.    o The Value property is now updated as soon as an item in the list is 
  1788.      clicked. This means that in the Click event, the Value property will be 
  1789.      the new selection. Previously, it was the old selection. 
  1790.  
  1791.    o The tracking rectangle for drop-down combo box objects is now only as 
  1792.      large as the visible portion allowing them to be positioned more easily. 
  1793.  
  1794.    o Dropped down lists now repaint properly when moved. 
  1795.  
  1796. EntryField object 
  1797.  
  1798.    o You can now change the width of entry fields with autosize turned on. 
  1799.      However, their height is still unchangeable as stated in the 
  1800.      documentation. 
  1801.  
  1802.    o The default TextLimit has been raised from 32 to 255. 
  1803.  
  1804. GroupBox object 
  1805.  
  1806.    o You can now drag and drop colors from the color palette onto group boxes. 
  1807.  
  1808.    o The TabStop and TabOrder properties have been removed. 
  1809.  
  1810. HelpFile property 
  1811.  
  1812.    o The help file is now closed properly when the program terminates. 
  1813.  
  1814. HelpText property 
  1815.  
  1816.    o Help information loaded from files is no longer followed by spurious 
  1817.      characters. 
  1818.  
  1819. HintText property 
  1820.  
  1821.    o The status area is blanked when the pointer is over a window that has no 
  1822.      hint defined. 
  1823.  
  1824. MoveWithParent property 
  1825.  
  1826.    o Previously, if you unchecked the MoveWithParent property, the edit window 
  1827.      would no longer move with the primary window at design time. This has been 
  1828.      fixed. 
  1829.  
  1830. MultiLineEntryField object 
  1831.  
  1832.    o The Click event now works. 
  1833.    o The Value property now returns the correct result even if the MLE has not 
  1834.      been made visible. 
  1835.    o The MLE no longer strips out carriage returns from its Value property. 
  1836.    o Setting the Value property before making the MLE visible no longer causes 
  1837.      an error. 
  1838.  
  1839. PictureBox object 
  1840.  
  1841.    o The autosize property now causes resizing only when it is turned on, or a 
  1842.      new picture is loaded. 
  1843.  
  1844.    o Now correctly handles the BackColor property. 
  1845.  
  1846. StartThread method 
  1847.  
  1848.    o The StartThread method now returns the thread identifier of the newly 
  1849.      created thread, or -1 if the method was unsuccessful. 
  1850.  
  1851.    o The maximum number of threads has been increased from 32 to 200. 
  1852.  
  1853. TextLimit property 
  1854.  
  1855.    o The TextLimit property has been moved to the Text page of property 
  1856.      notebooks. 
  1857.  
  1858. VRChAttr function 
  1859.  
  1860.    o You can now reset all attributes for a file. 
  1861.  
  1862. VRDir function 
  1863.  
  1864.    o The function now works properly with the mask parameter set to "*.*". 
  1865.  
  1866.    o You can now consistently list the files in the root of an HPFS volume. 
  1867.      Previously, VRDir would list only the "." directory if the fileSpec was of 
  1868.      the form "C:\*.*". 
  1869.  
  1870. VRFileDate function 
  1871.  
  1872.    o The VRFileDate function now allows you to omit either or both of the 
  1873.      second and third parameters. The time can be set without changing the 
  1874.      date, and the date can be set without changing the time. 
  1875.  
  1876. VRFindFile function 
  1877.  
  1878.    o VRFindFile now returns 0 if it is passed an invalid path. 
  1879.  
  1880. VRFini function 
  1881.  
  1882.    o Calling VRFini from the main thread now halts any other threads that are 
  1883.      still running. 
  1884.  
  1885. VRMessage function 
  1886.  
  1887.    o VRMessage now sets the focus correctly. 
  1888.  
  1889. VRPrompt function 
  1890.  
  1891.    o VRPrompt now sets the focus correctly. 
  1892.  
  1893. VRVersion function 
  1894.  
  1895.    o The VRVersion function now works properly. 
  1896.  
  1897.  
  1898. ΓòÉΓòÉΓòÉ 9. Latest updates ΓòÉΓòÉΓòÉ
  1899.  
  1900. (This section is currently empty). 
  1901.  
  1902.  
  1903. ΓòÉΓòÉΓòÉ 10. Errata ΓòÉΓòÉΓòÉ
  1904.  
  1905. There have been two printings of the VXΓêÖREXX Programmer's Guide and Reference. 
  1906. In the first printing (June 1993), no date appears beneath the ISBN number on 
  1907. page ii. In the second printing (August 1993), the date appears at the bottom 
  1908. of page ii. 
  1909.  
  1910.  
  1911. ΓòÉΓòÉΓòÉ 10.1. Corrections to the August 1993 printing ΓòÉΓòÉΓòÉ
  1912.  
  1913. The following table lists some corrections and additions to the WATCOM VXΓêÖREXX 
  1914. Programmer's Guide and Reference. The number in the left column is the page 
  1915. number, and the right column describes the necessary change. 
  1916.  
  1917. 214            In the example program, the line that reads 
  1918.  
  1919.                if( selects.0 = 0 )then do 
  1920.  
  1921.                should read 
  1922.  
  1923.                if( items.0 = 0 )then do 
  1924.  
  1925. 342            If A is specified in the output parameter, but a file has no 
  1926.                attributes set, a hyphen ("-") is returned where the attributes 
  1927.                would normally go. 
  1928.  
  1929.  
  1930. ΓòÉΓòÉΓòÉ 10.2. Corrections to the first (June 1993) printing ΓòÉΓòÉΓòÉ
  1931.  
  1932. The following table lists some corrections and additions to the WATCOM VXΓêÖREXX 
  1933. Programmer's Guide and Reference. The number in the left column is the page 
  1934. number, and the right column describes the necessary change. 
  1935.  
  1936. 68             The last sentence of the second paragraph of the section 
  1937.                "Selecting and deselecting list items" should read: "The 
  1938.                MultiSelect property can be set at design time or at run time." 
  1939.  
  1940. 72             Line three of the example should read  "DataType( value ) \= 
  1941.                "Num" then do". 
  1942.  
  1943. 98             The last sentence of the first paragraph should read "You can 
  1944.                change the default main file by changing the file name specified 
  1945.                for Main file in the Run options dialog accessed from the 
  1946.                Options menu." 
  1947.  
  1948. 128            The first line of the example should read "if (SQLCA.SQLCODE \= 
  1949.                0 & SQLCA.SQLCODE \= -1026) then do". 
  1950.  
  1951. 141            There are several methods missing from the list of methods. See 
  1952.                the online Reference for a full description of these methods. 
  1953.  
  1954.    CenterWindow   Center a window relative to its parent window or the desktop. 
  1955.  
  1956.    DeleteString   Remove a single item from a list. 
  1957.  
  1958.    HaltThread     Stop a thread started with the StartThread method. 
  1959.  
  1960.    InvokeHelp     Invoke help on an object as if the user has pressed F1. 
  1961.  
  1962. 143            The Summary of predefined routines should include the  Halt 
  1963.                section. This section is signalled when your program is halted 
  1964.                while it is running. See the online Reference for more 
  1965.                information. 
  1966.  
  1967. 145            There are several functions missing from the list of functions. 
  1968.                See the online Reference for a full description of these 
  1969.                functions. 
  1970.  
  1971.    VRCreateStem   Create an object using a REXX compound variable to pass all 
  1972.                   of the create-time properties. 
  1973.  
  1974.    VRLoadSecondary Load a window from a file. 
  1975.  
  1976.    VRVersion      Return version information for a VXΓêÖREXX DLL. 
  1977.  
  1978. 160            In the See Also section, the third property should be "Font", 
  1979.                not "CaptionFont". As well, the last paragraph should read: "If 
  1980.                you change the Height or Width properties directly, either at 
  1981.                design time or at run time, the object will resize itself 
  1982.                (AutoSize is ignored). The object resizes itself only when 
  1983.                AutoSize is changed from 0 to 1, or when the font or caption 
  1984.                changes." 
  1985.  
  1986. 161            The BackColor property can also be an RGB value of the form 
  1987.                "(red,green,blue)". There are also a number of additional 
  1988.                predefined color values that correspond to system defaults. See 
  1989.                the online Reference for a complete description of this 
  1990.                property. 
  1991.  
  1992. 163            The BorderColor property can also be an RGB value of the form 
  1993.                "(red,green,blue)". There are also a number of additional 
  1994.                predefined color values that correspond to system defaults. See 
  1995.                the online Reference for a complete description of this 
  1996.                property. 
  1997.  
  1998. 176            In the last sentence of the first paragraph, delete the words 
  1999.                "Create event routine of the ComboBox, or into the". 
  2000.  
  2001. 186            In the first paragraph of the Notes section, add the words "if 
  2002.                necessary" to the end of the second last sentence. 
  2003.  
  2004. 193            Delete the last sentence in the first paragraph, "A Click event 
  2005.                ... is received." 
  2006.  
  2007. 199            The syntax for the FindString method should be: 
  2008.  
  2009.                position = VRMethod( object, "FindString", target, [ 
  2010.                starting-position ], [ search-type ], [ case ] ) 
  2011.  
  2012.                The printed book has starting-position and search-type reversed. 
  2013.  
  2014.                The first sentence in the description of the search-type 
  2015.                argument should be "If specified, this argument must be a string 
  2016.                value that is one of Exact, Prefix, or Substring." 
  2017.  
  2018.                The first sentence in the description  of the case argument 
  2019.                should be "The only possible value for the case argument is the 
  2020.                string value Case." 
  2021.  
  2022. 204            The ForeColor property can also be an RGB value of the form 
  2023.                "(red,green,blue)". There are also a number of additional 
  2024.                predefined color values that correspond to system defaults. See 
  2025.                the online Reference for a complete description of this 
  2026.                property. 
  2027.  
  2028. 208            In the example program, the line that reads 
  2029.  
  2030.                if( selects.0 = 0 )then do 
  2031.  
  2032.                should read 
  2033.  
  2034.                if( items.0 = 0 )then do 
  2035.  
  2036. 214            The GetVar method has an optional extra parameter which can be 
  2037.                used to specify the name of the variable to receive the value. 
  2038.                Also, compound variables used with GetVar must be REXX arrays. 
  2039.                For a complete description of this method, see the online 
  2040.                Reference. 
  2041.  
  2042. 223            The HelpTag property has several predefined values which provide 
  2043.                access to standard OS/2 help panels. See the online Reference 
  2044.                for full details. 
  2045.  
  2046. 245            In the last sentence of the second last paragraph of the Notes 
  2047.                section, delete the words "Create event routine of the ListBox, 
  2048.                or into the". 
  2049.  
  2050. 269            In the Description section, delete the word "metafiles". 
  2051.  
  2052. 271            In the second last paragraph of the Description section, the 
  2053.                first sentence should start "a string specifying the id of an 
  2054.                icon or bitmap resource...". 
  2055.  
  2056. 273            The Post method is not properly described in the printed 
  2057.                Reference. See the online Reference for full details on this 
  2058.                method. 
  2059.  
  2060. 279            The PutVar method has an optional extra parameter which can be 
  2061.                used to specify the name to use for the stored value. Also, 
  2062.                compound variables used with PutVar must be REXX arrays. For a 
  2063.                complete description of this method, see the online Reference. 
  2064.  
  2065. 308            The StartThread method is not completely described in the 
  2066.                printed Reference. See the online Reference for full details on 
  2067.                this method. 
  2068.  
  2069. 335            If A is specified in the output parameter, but a file has no 
  2070.                attributes set, a hyphen ("-") is returned where the attributes 
  2071.                would normally go. 
  2072.  
  2073. 343            The VREvent function is not correctly described in the printed 
  2074.                Reference. See the online Reference for full details on this 
  2075.                function. 
  2076.  
  2077. 347            In the description of the newdate argument, the sentence in 
  2078.                brackets should be "as returned by the REXX Date( "sorted" ) 
  2079.                function". 
  2080.  
  2081. 365            In the example, in the response = VRMessage ( ... ) function 
  2082.                call, the  parameter "button." should be "buttons.". 
  2083.  
  2084. 369            In the example, in the response = VRMessage ( ... ) function 
  2085.                call, the  parameter "button." should be "buttons.". 
  2086.  
  2087. 373            In the Arguments section, delete the sentence in the description 
  2088.                of the filespec argument that starts with "If filespec is 
  2089.                null...". 
  2090.  
  2091.                The last sentence in the description of format should read "If 
  2092.                format is omitted, a default of DPNE is used." 
  2093.  
  2094.  
  2095. ΓòÉΓòÉΓòÉ 11. Contacting WATCOM ΓòÉΓòÉΓòÉ
  2096.  
  2097. Although a significant amount of testing has gone into WATCOM VXΓêÖREXX, errors 
  2098. in the software may be encountered. You may also discover errors or omissions 
  2099. in the documentation. If you find any problems or have some good suggestions, 
  2100. we would like to hear from you. 
  2101.  
  2102. A form is included in the Read Me First booklet for you to use to report any 
  2103. problems or suggestions. When reporting a problem, please make a blank copy of 
  2104. this form, in case you have further problems or suggestions. When you have 
  2105. filled it in, make a second copy and keep it for your records. 
  2106.  
  2107.  
  2108. ΓòÉΓòÉΓòÉ 11.1. In North America (and all other non-European locations) ΓòÉΓòÉΓòÉ
  2109.  
  2110. WATCOM International Corporation. 
  2111.  
  2112. 415 Phillip Street, Waterloo, Ontario, CANADA, N2L 3X2 
  2113.  
  2114. Technical Support
  2115. hot-line:   (519) 884-0702
  2116. fax:        (519) 747-4971
  2117. BBS:        (519) 884-2103
  2118. Internet:   tech@watcom.on.ca
  2119. Compuserve: type GO WATCOM
  2120.  
  2121. General Inquiries
  2122. tel: (519)886-3700
  2123. fax: (519)747-4971
  2124.  
  2125. Sales, upgrades, other product
  2126. orders, and reseller inquiries/orders:
  2127. 1-800-265-4555 (toll free in North America)
  2128.  
  2129.  
  2130. ΓòÉΓòÉΓòÉ 11.2. In Europe ΓòÉΓòÉΓòÉ
  2131.  
  2132. WATCOM Europe Limited. 
  2133.  
  2134. PO Box 64, LIVINGSTON, West Lothian, EH54 7AE, UNITED KINGDOM 
  2135.  
  2136. Technical Support
  2137.     United Kingdom
  2138.         tel: 0506 460112
  2139.         fax: 0506 460115
  2140.  
  2141.     Other Locations
  2142.         tel: (44) 506 460112
  2143.         fax: (44) 506 460115
  2144.  
  2145.     BBS: (519) 884-2103
  2146.     Internet: tech@watcom.on.ca
  2147.     Compuserve: type GO WATCOM
  2148.  
  2149. General Inquiries
  2150.     United Kingdom
  2151.         tel: 0506 460112
  2152.         fax: 0506 460115
  2153.  
  2154.     Other Locations
  2155.         tel: (44) 506 460112
  2156.         fax: (44) 506 460115
  2157.  
  2158. Sales, Upgrades, other product orders, and reseller inquiries/orders:
  2159.     United Kingdom Toll Free
  2160.         tel: 0800 44 44 55
  2161.         fax: 0800 55 54 55
  2162.  
  2163.     Germany Toll Free
  2164.         tel: 0130 81 88 62
  2165.         fax: 0130 81 88 63
  2166.  
  2167.     France Toll Free
  2168.         tel: 05 90 81 35
  2169.         fax: 05 90 81 36
  2170.  
  2171.     All Other Locations
  2172.         tel: (44) 506 460112
  2173.         fax: (44) 506 460115
  2174.