home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / warptlk3.zip / TOOLKIT / BOOK / TOOLINFO.INF (.txt) < prev    next >
OS/2 Help File  |  1995-10-23  |  440KB  |  16,569 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Notices ΓòÉΓòÉΓòÉ
  3.  
  4. First Edition (October 1994) 
  5.  
  6. The following paragraph does not apply to the United Kingdom or any country 
  7. where such provisions are inconsistent with local law:  INTERNATIONAL BUSINESS 
  8. MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY 
  9. KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
  10. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states 
  11. do not allow disclaimer of express or implied warranties in certain 
  12. transactions, therefore, this statement may not apply to you. 
  13.  
  14. This publication could include technical inaccuracies or typographical errors. 
  15. Changes are periodically made to the information herein; these changes will be 
  16. incorporated in new editions of the publication. IBM may make improvements 
  17. and/or changes in the product(s) and/or the program(s) described in this 
  18. publication at any time. 
  19.  
  20. It is possible that this publication may contain reference to, or information 
  21. about, IBM products (machines and programs), programming, or services that are 
  22. not announced in your country.  Such references or information must not be 
  23. construed to mean that IBM intends to announce such IBM products, programming, 
  24. or services in your country. 
  25.  
  26. Requests for technical information about IBM products should be made to your 
  27. IBM authorized reseller or IBM marketing representative. 
  28.  
  29.  
  30. ΓòÉΓòÉΓòÉ 1.1. Copyright Notices ΓòÉΓòÉΓòÉ
  31.  
  32. COPYRIGHT LICENSE: This publication contains printed sample application 
  33. programs in source language, which illustrate OS/2 programming techniques. You 
  34. may copy, modify, and distribute these sample programs in any form without 
  35. payment to IBM, for the purposes of developing, using, marketing or 
  36. distributing application programs conforming to the OS/2 application 
  37. programming interface. 
  38.  
  39. Each copy of any portion of these sample programs or any derivative work, which 
  40. is distributed to others, must include a copyright notice as follows: "(C) 
  41. (your company name) (year).  All rights reserved." 
  42.  
  43. (C)Copyright International Business Machines Corporation 1994. All rights 
  44. reserved. 
  45. Note to U.S. Government Users - Documentation related to restricted rights - 
  46. Use, duplication or disclosure is subject to restrictions set forth in GSA ADP 
  47. Schedule Contract with IBM Corp. 
  48.  
  49.  
  50. ΓòÉΓòÉΓòÉ 1.2. Disclaimers ΓòÉΓòÉΓòÉ
  51.  
  52. References in this publication to IBM products, programs, or services do not 
  53. imply that IBM intends to make these available in all countries in which IBM 
  54. operates. Any reference to an IBM product, program or service is not intended 
  55. to state or imply that only IBM's product, program, or service may be used. Any 
  56. functionally equivalent product, program, or service that does not infringe any 
  57. of IBM's intellectual property rights or other legally protectable rights may 
  58. be used instead of the IBM product, program, or service. Evaluation and 
  59. verification of operation in conjunction with other products, programs, or 
  60. services, except those expressly designated by IBM, are the user's 
  61. responsibility. 
  62.  
  63. IBM may have patents or pending patent applications covering subject matter in 
  64. this document. The furnishing of this document does not give you any license to 
  65. these patents. You can send license inquiries, in writing, to the IBM Director 
  66. of Licensing, IBM Corporation, 500 Columbus Avenue, Thornwood NY 10594, U.S.A. 
  67.  
  68.  
  69. ΓòÉΓòÉΓòÉ 1.3. Trademarks ΓòÉΓòÉΓòÉ
  70.  
  71. The following terms, denoted by an asterisk (*) in this publication, are 
  72. trademarks of the IBM Corporation in the United States or other countries: 
  73.  
  74. IBM
  75. OS/2
  76. Presentation Manager
  77.  
  78.  
  79. ΓòÉΓòÉΓòÉ 2. About This Book ΓòÉΓòÉΓòÉ
  80.  
  81. The OS/2 Tools Reference is a detailed technical reference for tools in the 
  82. OS/2 Toolkit. It is intended for use by application programmers creating 
  83. programs using OS/2 system functions. 
  84.  
  85.  
  86. ΓòÉΓòÉΓòÉ 2.1. Double-Byte Character Set (DBCS) ΓòÉΓòÉΓòÉ
  87.  
  88. Throughout this publication, there are references to specific values for 
  89. character strings.  These values are for the Single-Byte Character Set (SBCS). 
  90. When using the Double-Byte Character Set, notice that one DBCS character equals 
  91. two SBCS characters. 
  92.  
  93.  
  94. ΓòÉΓòÉΓòÉ 2.2. Prerequisite Knowledge ΓòÉΓòÉΓòÉ
  95.  
  96. The OS/2 Tools Reference is intended for programmers knowledgeable in at least 
  97. one programming language in which OS/2 programs can be written. 
  98.  
  99.  
  100. ΓòÉΓòÉΓòÉ 2.3. Organization of This Book ΓòÉΓòÉΓòÉ
  101.  
  102.      Introduction 
  103.  
  104.       This chapter contains information about all chapters in the book and the 
  105.       function of the tools. 
  106.  
  107.      PACK and PACK2 
  108.  
  109.       This chapter describes the pack, unpack, pack2, and unpack2 tool, which 
  110.       reduces and expands the size of files. 
  111.  
  112.      Dialog Editor 
  113.  
  114.       This chapter describes the Dialog Editor and how it is used to create and 
  115.       modify dialog boxes. 
  116.  
  117.      Executable File Header Utility (EXEHDR) 
  118.  
  119.       This chapter describes the Executable File Header Utility (EXEHDR) that 
  120.       displays and modifies the contents of an executable-file header. 
  121.  
  122.      Font Editor 
  123.  
  124.       This chapter describes the Font Editor and how it is used to define fonts 
  125.       and edit character width. 
  126.  
  127.      Forwarded Entry Point (FWDSTAMP) 
  128.  
  129.       This chapter describes the FWDSTAMP, which adds entry points, called 
  130.       forwarders to a dynamic link library file. 
  131.  
  132.      Icon Editor 
  133.  
  134.       This chapter describes the Icon Editor, which lets you create your own 
  135.       icons, pointers, and bit maps and save them for use by applications. 
  136.  
  137.      Link for Object and Library Files (LINK386) 
  138.  
  139.       LINK386 is a tool used to combine object files and standard library files 
  140.       into a single file: an executable file, a dynamic-link library, or a 
  141.       device driver. 
  142.  
  143.      Make Message File (MKMSGF) 
  144.  
  145.       This chapter describes the MKMSGF tool, which reads the input message 
  146.       file and creates an output message file. 
  147.  
  148.      MAP File to SYM File Creator (MAPSYM) 
  149.  
  150.       This chapter describes  MAPSYM, which is a program that creates .SYM 
  151.       files from .MAP files. 
  152.  
  153.      View and Set Program Type For Executable File (MARKEXE) 
  154.  
  155.       This MARKEXE program enables you to view and set the program type for an 
  156.       executable file. 
  157.  
  158.      Message Segment Binder (MSGBIND) 
  159.  
  160.       This chapter describes MSGBIND, which binds a message segment to an 
  161.       executable program. 
  162.  
  163.      Object Utility Description 
  164.  
  165.       This chapter describes how Object Utility/2 provides a facility for 
  166.       registering Workplace Shell classes, creating instances of Workplace 
  167.       Shell classes, and modifying instances of Workplace Shell classes. 
  168.  
  169.      Program Maintenance Utility (NMAKE) 
  170.  
  171.       This chapter describes how NMAKE automates the process of building an 
  172.       application from project files. 
  173.  
  174.      Quick Information (KwikINF) 
  175.  
  176.       This chapter discusses KwikINF, a method of accessing information in 
  177.       online documents from anywhere on the desktop. 
  178.  
  179.      Resource Compiler 
  180.  
  181.       This chapter describes the OS/2 Resource Compiler an 
  182.       application-development tool that lets you add application resources , 
  183.       such as message strings, pointers, menus, and dialog boxes, to the 
  184.       executable file of your application. 
  185.  
  186.      T Terminal Emulator 
  187.  
  188.       This chapter discusses how the T Terminal Emulator communicates with the 
  189.       machine being debugged. 
  190.  
  191.      Workplace Class List 
  192.  
  193.       This chapter discusses the Workplace Class List tool, which creates 
  194.       Workplace Shell object classes. 
  195.  
  196.  
  197. ΓòÉΓòÉΓòÉ 2.4. Related Publications ΓòÉΓòÉΓòÉ
  198.  
  199. The following diagram provides an overview of the OS/2 Warp, Version 3 
  200. Technical Library. 
  201.  
  202. Books can be ordered by calling toll free 1-800-342-6672 weekdays between 8:00 
  203. a.m. and 8:00 p.m. (EST). In Canada, call 1-800-465-4234. 
  204.  
  205.  
  206. ΓòÉΓòÉΓòÉ 3. Introduction ΓòÉΓòÉΓòÉ
  207.  
  208. The OS/2 Tools Reference is a technical reference for the OS/2* tools. The 
  209. following is a brief description of each chapter in this book and the function 
  210. of each tool. 
  211.  
  212.  
  213. ΓòÉΓòÉΓòÉ 3.1. Data Compression (PACK) PACK2 and UNPACK2 ΓòÉΓòÉΓòÉ
  214.  
  215. Purpose 
  216.  
  217. You can use PACK and UNPACK to compress and expand files. The options, 
  218. parameters, and function for PACK2 are identical to PACK. 
  219.  
  220. Description 
  221.  
  222. Data Compression (PACK) is a tool that reduces the size of a file by 
  223. compressing its data. Decompression (UNPACK) works in reverse and allows you to 
  224. expand files. You can use PACK for a single file or group of files, thereby 
  225. reducing the disk space required for your OS/2 application. The only difference 
  226. between PACK and PACK2 is that PACK2 has a better compression algorithm. For 
  227. more information see PACK and PACK2. 
  228.  
  229.  
  230. ΓòÉΓòÉΓòÉ 3.2. Dialog Editor ΓòÉΓòÉΓòÉ
  231.  
  232. Purpose 
  233.  
  234. The Dialog Editor draws dialog boxes and controls on the screen so you can see 
  235. what they look like when used by your application. 
  236.  
  237. Description 
  238.  
  239. You can use the Dialog Editor to create and modify dialog box and modify the 
  240. controls and text within dialog boxes.  As you create the dialog box and its 
  241. controls, you see them on the screen as the user sees them when using your 
  242. program.  You can place each dialog box and its controls where you want them on 
  243. the screen. You also can test the dialog box before you incorporate it into 
  244. your application.  The Dialog Editor saves the dialog boxes in a ASCII-text 
  245. format files that have .DLG extensions. For more information see Dialog Editor. 
  246.  
  247.  
  248. ΓòÉΓòÉΓòÉ 3.3. Executable File Header Utility (EXEHDR) ΓòÉΓòÉΓòÉ
  249.  
  250. Purpose 
  251.  
  252. The Executable File Header Utility (EXEHDR) displays and modifies the contents 
  253. of an executable-file header. 
  254.  
  255. Description 
  256.  
  257. EXEHDR generates an output listing showing the contents of the file header and 
  258. information about each object or segment in the file. Options are provided that 
  259. let you change values in the file header. For more information see Executable 
  260. File Header Utility (EXEHDR). 
  261.  
  262.  
  263. ΓòÉΓòÉΓòÉ 3.4. Font Editor ΓòÉΓòÉΓòÉ
  264.  
  265. Purpose 
  266.  
  267. Use the Font Editor to design and save fonts for use in your applications. 
  268.  
  269. Description 
  270.  
  271. The Font Editor enables you to edit an enlarged version of each character in an 
  272. editing window, using the mouse to switch the enlarged representation of pels 
  273. to black or white. 
  274.  
  275. A font is a set of alphanumeric characters, punctuation marks, and other 
  276. symbols that share a common typeface design and line weight.  An application 
  277. loads a font from a dynamic-link library file (DLL file).  For more information 
  278. see Font Editor. 
  279.  
  280.  
  281. ΓòÉΓòÉΓòÉ 3.5. Forwarded Entry Point (FWDSTAMP) ΓòÉΓòÉΓòÉ
  282.  
  283. Purpose 
  284.  
  285. FWDSTAMP adds entry points, called forwarders, to a dynamic link library file. 
  286.  
  287. Description 
  288.  
  289. Forwarders point to API functions or other exported code or data. They contain 
  290. and import reference so that the final target address of the forwarded entry is 
  291. contained in a different module.  A forwarder might be called an imported 
  292. export. For more information see Forwarded Entry Point (FWDSTAMP). 
  293.  
  294.  
  295. ΓòÉΓòÉΓòÉ 3.6. Icon Editor ΓòÉΓòÉΓòÉ
  296.  
  297. Purpose 
  298.  
  299. The Icon Editor lets you create icons, pointers, and bit maps and save them for 
  300. use by applications. 
  301.  
  302. Description 
  303.  
  304. You can customize Icons, pointers, and bit maps for your application. 
  305.  
  306. An application can use an icon to represent a minimized standard window.  For 
  307. example, for an application that lists telephone numbers you could create a 
  308. telephone icon. For more information see Icon Editor. 
  309.  
  310.  
  311. ΓòÉΓòÉΓòÉ 3.7. Link for Object and Library Files (Link386) ΓòÉΓòÉΓòÉ
  312.  
  313. Purpose 
  314.  
  315. Link386 is used to combine object files and standard library files into a 
  316. single file: an executable file, a dynamic-link library, or a device driver. 
  317.  
  318. Description 
  319.  
  320. LINK386 can produce dynamic-link libraries (.DLL) and device Drivers (.SYS), in 
  321. addition to executable files (.EXE). For additional information, see Link for 
  322. Object and Library Files (LINK386). 
  323.  
  324.  
  325. ΓòÉΓòÉΓòÉ 3.8. Make Message File (MKMSGF) ΓòÉΓòÉΓòÉ
  326.  
  327. Purpose 
  328.  
  329. There are two ways that the output message file can be used: 
  330.  
  331.      Selected messages can be bound to the message segment of an executable 
  332.       file using the MSGBIND program. 
  333.  
  334.      Messages can be accessed directly from the output message file. For more 
  335.       information see Make Message File (MKMSGF). 
  336.  
  337.  Description 
  338.  
  339.  The Make Message File (MKMSGF) program reads the input message file specified 
  340.  and creates an output message file that DosGetMessages uses to display 
  341.  messages. 
  342.  
  343.  
  344. ΓòÉΓòÉΓòÉ 3.9. MAP File to SYM File Creator (MAPSYM) ΓòÉΓòÉΓòÉ
  345.  
  346. Purpose 
  347.  
  348. MAP File to SYM File Creator (MAPSYM) is a program that creates .SYM files from 
  349. .MAP files. 
  350.  
  351. Description 
  352.  
  353. .SYM files are used by the kernel debugger for symbolic debugging.  MAPSYM must 
  354. be run from the directory in which the file to be converted is located. For 
  355. more information see MAP File to SYM File Creator (MAPSYM). 
  356.  
  357.  
  358. ΓòÉΓòÉΓòÉ 3.10. View and Set Program Type For Executable File (MARKEXE) ΓòÉΓòÉΓòÉ
  359.  
  360. Purpose 
  361.  
  362. The MARKEXE program enables you to view and set the program type for an 
  363. executable file. 
  364.  
  365. Description 
  366.  
  367. Use MARKEXE with the OS/2 Linear Executable Linker (Link386) or the OS/2 
  368. Segmented Executable Linker (LINK) to change or set the program type of 
  369. programs you have created. For more information see View and Set Program Type 
  370. For Executable File (MARKEXE). 
  371.  
  372.  
  373. ΓòÉΓòÉΓòÉ 3.11. Message Segment Binder (MSGBIND) ΓòÉΓòÉΓòÉ
  374.  
  375. Purpose 
  376.  
  377. Message Segment Binder (MSGBIND) is a program that binds a message segment to 
  378. an executable program. 
  379.  
  380. Description 
  381.  
  382. Message Segment Binder reads an input file that specifies the executable files 
  383. to modify. For each executable file, MSGBIND specifies which message files to 
  384. scan, and for each message file, it specifies which messages to include in the 
  385. executable file. For more information see Message Segment Binder (MSGBIND). 
  386.  
  387.  
  388. ΓòÉΓòÉΓòÉ 3.12. Object Utility/2 ΓòÉΓòÉΓòÉ
  389.  
  390. Purpose 
  391.  
  392. Object Utility/2 provides a facility for registering Workplace Shell classes, 
  393. creating instances of Workplace Shell classes, and modifying instances of 
  394. Workplace Shell classes. 
  395.  
  396. Description 
  397.  
  398. The Object Utility/2 has attributes that can be set or modified.  The 
  399. attributes modify the behavior of the objects to enable or disable copying, 
  400. deletion, and other attributes.  For more information see Object Utility 
  401. Description 
  402.  
  403.  
  404. ΓòÉΓòÉΓòÉ 3.13. Program Maintenance Utility (NMAKE) ΓòÉΓòÉΓòÉ
  405.  
  406. Purpose 
  407.  
  408. Program Maintenance Utility (NMAKE) automates the process of updating project 
  409. files and can be used to make backups, configure data files, and run programs 
  410. when data files are modified. 
  411.  
  412. Description 
  413.  
  414. Program Maintenance Utility (NMAKE) compares the modification dates for one set 
  415. of files (the target files) with those of another set of files (the dependent 
  416. files).  If any dependent files have changed more recently than the target 
  417. files, NMAKE executes a series of commands to bring the targets up-to-date. For 
  418. more information see Program Maintenance Utility (NMAKE). 
  419.  
  420.  
  421. ΓòÉΓòÉΓòÉ 3.14. Quick Information (KwikINF) ΓòÉΓòÉΓòÉ
  422.  
  423. Purpose 
  424.  
  425. KwikINF provides you with a quick and convenient method of accessing 
  426. information in online documents stored in the OS/2 BOOKSHELF from anywhere on 
  427. the desktop, with the exception of DOS or WIN-OS/2* sessions. 
  428.  
  429. Description 
  430.  
  431. You can open a dialog with KwikINF by pressing a user-selectable hot key after 
  432. starting KwikINF.  The KwikINF window also allows you to initiate searches for 
  433. text strings in on-line documents of your choice. For more information see 
  434. Quick Information (KwikINF). 
  435.  
  436.  
  437. ΓòÉΓòÉΓòÉ 3.15. Resource Compiler ΓòÉΓòÉΓòÉ
  438.  
  439. Purpose 
  440.  
  441. The OS/2 Resource Compiler (RC) is an application-development tool that lets 
  442. you add application resources, such as message strings, pointers, menus, and 
  443. dialog boxes, to the executable file of your application. 
  444.  
  445. Description 
  446.  
  447. The Resource Compiler is primarily intended to prepare data for OS/2 
  448. applications that use functions such as WinLoadString, WinLoadPointer,WinLoad 
  449. Menu, and WinLoadDlg.  For more information see Resource Compiler. 
  450.  
  451.  
  452. ΓòÉΓòÉΓòÉ 3.16. T Terminal Emulator ΓòÉΓòÉΓòÉ
  453.  
  454. Purpose 
  455.  
  456. The T Terminal Emulator is used to communicate with the machine to be debugged 
  457. or to send ASCII files. 
  458.  
  459. Description 
  460.  
  461. The Kernel Debugger uses the T Terminal Emulator to communicate with the 
  462. machine to be debugged.  You can also use T Terminal Emulator to send and 
  463. receive ASCII files. For more information see T Terminal Emulator. 
  464.  
  465.  
  466. ΓòÉΓòÉΓòÉ 3.17. Workplace Class List ΓòÉΓòÉΓòÉ
  467.  
  468. Purpose 
  469.  
  470. Workplace Class List creates a workplace object class and an instance of a 
  471. workplace object class. 
  472.  
  473. Description 
  474.  
  475. Workplace objects are constructed using the SOM protocol and are called 
  476. Predefined, Subclass or Replaced object classes. For a definition of 
  477. Predefined, Subclass and Replaced classes, see Workplace Class List. 
  478.  
  479.  
  480. ΓòÉΓòÉΓòÉ 4. PACK and PACK2 ΓòÉΓòÉΓòÉ
  481.  
  482. PACK reduces the size of a file by compressing its data. You can use PACK for a 
  483. single file or for a group of files, thereby reducing the disk space required 
  484. for your OS/2 application. 
  485.  
  486. The options, parameters, and function for PACK2 are identical to PACK.  The 
  487. only difference between PACK and PACK2 is that PACK2 has a better compression 
  488. algorithm. 
  489.  
  490.  
  491. ΓòÉΓòÉΓòÉ 4.1. Starting PACK ΓòÉΓòÉΓòÉ
  492.  
  493. You start PACK with a single command from the command line. The input required 
  494. can be specified in one of two ways: 
  495.  
  496.      You can type on the command line the names of all the files you want to 
  497.       compress (Method 1). See Starting PACK: Method 1. 
  498.  
  499.      You can type the name of a single file that contains a list of all the 
  500.       files you want to compress (Method 2). See Starting PACK: Method 2. 
  501.  
  502.  When using PACK, select the method that is suitable for you. 
  503.  
  504.  
  505. ΓòÉΓòÉΓòÉ 4.1.1. Starting PACK: Method 1 ΓòÉΓòÉΓòÉ
  506.  
  507. You can start PACK with a single command from the command line. You can type 
  508. the names of all the files you want to compress directly on the command line. 
  509. Include the drive and path if the files are not in the working directory. You 
  510. can specify file names with any combination of uppercase and lowercase letters. 
  511. File-name extensions are not required; however, if you specify a file name that 
  512. has an extension, also type the extension. 
  513.  
  514. The command-syntax is as follows: 
  515.  
  516.   PACK sourcefile [packedfile]
  517.     [/H:headerpath\
  518.     |/H:headerfile
  519.     |/H:headerpath\ headerfile]
  520.     [/D:headerdate]
  521.     [/T:headertime]
  522.     [/C] [/A] [/R]
  523.  
  524. where: 
  525.  
  526.  sourcefile          Specifies the name of the file you want packed 
  527.                      (compressed). This parameter is required. Include the 
  528.                      drive and path if the file is not in the working 
  529.                      directory. Global file-name characters are permitted. 
  530.  
  531.                      When the data is compressed, the name of the source file 
  532.                      is placed in the header of the compressed file and is used 
  533.                      as the destination file name during unpacking. 
  534.  
  535.  packedfile          Specifies the name of the file that will contain the 
  536.                      compressed data.  Files that contain compressed data can 
  537.                      be recognized by the @ symbol as the last character in the 
  538.                      file name.  If you do not specify this parameter, PACK 
  539.                      places the compressed data in sourcefile and modifies its 
  540.                      name to contain the @ symbol. 
  541.  
  542.  /H:headerpath\ or /H:headerfile or /H:headerpath\headerfile These parameters 
  543.                      can be used separately or they can be paired. 
  544.  
  545.                      /H:headerpath\ 
  546.                                Specifies the destination path to be placed in 
  547.                                the header of the file that contains the 
  548.                                compressed data. Drive letters are not 
  549.                                permitted. Unless this path is overridden with 
  550.                                the UNPACK command, it will be the destination 
  551.                                path when the file is uncompressed. Headerpath 
  552.                                must end with a back slash (\). 
  553.  
  554.                      /H:headerfile 
  555.                                Specifies the name of the file to be placed in 
  556.                                the header of the compressed file. This file 
  557.                                name will be used as the destination file for 
  558.                                the uncompressed data and cannot be overridden. 
  559.  
  560.                                If a header file name is not specified, PACK 
  561.                                automatically uses sourcefile as the name of the 
  562.                                file that is placed in the header of the 
  563.                                compressed file. 
  564.  
  565.                      /H:headerpath\headerfile 
  566.                                Specifies that both a destination path and a 
  567.                                destination file name are to be placed in the 
  568.                                header of the file that has the compressed data. 
  569.  
  570.  /D:headerdate       Records the date in the header of the file that has the 
  571.                      compressed data, and also in the destination file when it 
  572.                      is uncompressed. 
  573.  
  574.                      The date must follow the format /D:MM-DD-YYYY (for 
  575.                      example: /D:08-20-1991 and /D:12-30-2010) 
  576.  
  577.  /T:headertime       Records the time in the header of the file that has the 
  578.                      compressed data, and also in the destination file when it 
  579.                      is uncompressed. 
  580.  
  581.                      The time must follow the format /T:HH.MM (for example 
  582.                      /T:02.06 and /T:14.54). Hour 00 represents 12 a.m. and 
  583.                      hour 12 represents 12 p.m. 
  584.  
  585.  /C                  Specifies that the current path be placed in the header of 
  586.                      the file that contains the compressed data. When the 
  587.                      UNPACK command is used, this path will be the destination 
  588.                      path for the file that contains the uncompressed data. 
  589.  
  590.                      You cannot use /C when the headerpath is used. 
  591.  
  592.  /A                  Adds data from sourcefile to the data in packedfile. 
  593.  
  594.                      The source file can be either in a compressed or 
  595.                      uncompressed state. If the source file is in an 
  596.                      uncompressed state, the data is compressed before being 
  597.                      added to the file containing the compressed data. 
  598.  
  599.  /R                  Removes the file specified by sourcefile from the file 
  600.                      that contains only compressed data. The sourcefile 
  601.                      parameter must specify the path and file name exactly as 
  602.                      they appear in the header of the file with the compressed 
  603.                      data; otherwise, the following error message appears on 
  604.                      the screen. 
  605.  
  606.                                           The specified file to remove was not found.
  607.  
  608.                      The /R parameter is valid only when used in conjunction 
  609.                      with sourcefile and packedfile. 
  610.  
  611.  Note:  To display the path and file-name information stored in the header of 
  612.         the file that contains the compressed data, use the UNPACK command and 
  613.         specify the SHOW option. For information about the SHOW option, see the 
  614.         UNPACK command in the online OS/2 Command Reference. 
  615.  
  616.  You can also get end-to-end compressed data by using global file-name 
  617.  characters. For example: 
  618.  
  619.     PACK *.EXE BUNDLE
  620.  
  621.  
  622. ΓòÉΓòÉΓòÉ 4.1.2. Starting PACK: Method 2 ΓòÉΓòÉΓòÉ
  623.  
  624. You can start PACK with a single command from the command line. You can type 
  625. the name of a single file that contains a list of all the files you want to 
  626. compress. 
  627.  
  628. Include the drive and path if the files are not in the working directory. You 
  629. can specify file names with any combination of uppercase and lowercase letters. 
  630. File-name extensions are not required; however, if you specify a file name that 
  631. has an extension, also type the extension. 
  632.  
  633. The command-line syntax is as follows: 
  634.  
  635.   PACK listfile [packedfile] /L
  636.     [/H:headerpath\
  637.     |/H:headerfile
  638.     |/H:headerpath\ headerfile]
  639.     [/D:headerdate]
  640.     [/T:headertime]
  641.     [/C]
  642.  
  643. where: 
  644.  
  645.  listfile            Specifies the name of the file that contains a list of 
  646.                      files that are to be compressed. When naming a list file, 
  647.                      do not use global file-name characters. 
  648.  
  649.                      For information about list files, see Creating a List 
  650.                      File. 
  651.  
  652.  packedfile          Specifies the name of the file that will contain the 
  653.                      compressed data. Files that contain compressed data can be 
  654.                      recognized by the @ symbol as the last character in the 
  655.                      file name. If you do not specify this parameter, PACK 
  656.                      places the compressed data in sourcefile and modifies its 
  657.                      name to contain the @ symbol. 
  658.  
  659.  /L                  Indicates that filename is a list file. A list file is not 
  660.                      compressed; it simply contains a listing of the names of 
  661.                      the files that are to be compressed. 
  662.  
  663.  /H:headerpath\ or /H:headerfile or /H:headerpath\ headerfile These parameters 
  664.                      can be used separately or they can be paired. 
  665.  
  666.                      /H:headerpath\ 
  667.                                Specifies the destination path (drive letters 
  668.                                are not permitted) to be placed in the header of 
  669.                                the file that contains the compressed data. 
  670.                                Unless this path is overridden with the UNPACK 
  671.                                command, it will be the destination path when 
  672.                                the file is uncompressed. Headerpath must end 
  673.                                with a back slash (\). 
  674.  
  675.                      /H:headerfile 
  676.                                Specifies the name of the file to be placed in 
  677.                                the header of the compressed file. This file 
  678.                                name will be used as the destination file for 
  679.                                the uncompressed data and cannot be overridden. 
  680.  
  681.                                If a header file name is not specified, PACK 
  682.                                automatically uses sourcefile as the name of the 
  683.                                file that is placed in the header of the 
  684.                                compressed file. 
  685.  
  686.                      /H:headerpath\ headerfile 
  687.                                Specifies that both a destination path and a 
  688.                                destination file name are to be placed in the 
  689.                                header of the file that has the compressed data. 
  690.  
  691.  /D:headerdate       Records the date in the header of the file that has the 
  692.                      compressed data, and also in the destination file when it 
  693.                      is uncompressed. 
  694.  
  695.                      The date must follow the format /D:MM-DD-YYYY. For 
  696.                      example: /D:08-20-1991 and /D:12-30-2010. 
  697.  
  698.  /T:headertime       Records the time in the header of the file that has the 
  699.                      compressed data, and also in the destination file when it 
  700.                      is uncompressed. 
  701.  
  702.                      The time must follow the format /T:HH.MM. For example 
  703.                      /T:02.06 and /T:14.54. Hour 00 represents 12 a.m. and hour 
  704.                      12 represents 12 p.m. 
  705.  
  706.  /C                  Specifies that the current path be placed in the header of 
  707.                      the file that contains the compressed data. When the 
  708.                      UNPACK command is used, this path will be the destination 
  709.                      path for the file that contains the uncompressed data. 
  710.  
  711.                      You cannot use /C when the headerpath is used. 
  712.  
  713.  Note:  The path and file-name information stored in the header of the file 
  714.         that contains the compressed data can be displayed by using the /SHOW 
  715.         option available with UNPACK. For information about the /SHOW option, 
  716.         see the UNPACK command in the on line OS/2 Command Reference. 
  717.  
  718.  
  719. ΓòÉΓòÉΓòÉ 4.2. Creating a List File ΓòÉΓòÉΓòÉ
  720.  
  721. To use a list file with PACK, you must first create a file that contains the 
  722. names of the files you want to compress. You can give the list file any name. 
  723. Following is an example of specifying a list file at the command line. 
  724.  
  725.   PACK DEVICE.LST DEVICE.DRV /L
  726.  
  727. The /L indicates that DEVICE.LST is a list file. If the list file is not in the 
  728. working directory, you must specify the drive and path. Global file-name 
  729. characters are not permitted in the list-file name. DEVICE.DRV is the 
  730. destination file for the end-to-end-compressed data. (End-to-end compressed 
  731. data is the data from each of the files contained in the list file. This data 
  732. is stored in a contiguous format in the destination file.) 
  733.  
  734. The syntax used in the list file is similar to that used in the command line. 
  735. The syntax for a single line in the list file follows: 
  736.  
  737.   sourcefile
  738.     [/H:headerpath\
  739.     |/H:headerfile
  740.     |/H:headerpath\ headerfile]
  741.     [/D:headerdate]
  742.     [/T:headertime]
  743.     [/C]
  744.  
  745. When using the list-file method (method 2), global file-name characters are not 
  746. permitted in the source-file name. Notice also that "PACK" is excluded and 
  747. packedfile is not permitted in the list file, because they were specified on 
  748. the command line. You can include comments or blank lines by entering a 
  749. semicolon as the first character of the line. An example of a list file 
  750. follows. 
  751.  
  752.   ;This is a comment
  753.   C:\OS2\COMMAND.COM
  754.   CONFIG.SYS /H:CONFIG.BAK /C
  755.   \OS2\INSTALL\DDINSTAL.EXE
  756.    /H:\OS2\DDINSTAL.TMP
  757.    /D:10-15-91 /T:11.45
  758.  
  759.  
  760. ΓòÉΓòÉΓòÉ 4.3. Starting UNPACK ΓòÉΓòÉΓòÉ
  761.  
  762. UNPACK restores a file of compressed data to its original size and copies it to 
  763. a specified drive and path. To start the UNPACK command, type: 
  764.  
  765.   UNPACK sourcefile
  766.   [destinationdrive:] [destinationpath]
  767.   [/SHOW] [/N:singlefile]
  768.   [/V] [/F]
  769.  
  770. where: 
  771.  
  772.  sourcefile          Specifies the name of an existing file that contains 
  773.                      compressed data.  If this file contains one or more files 
  774.                      of compressed data, UNPACK restores each file within the 
  775.                      file. 
  776.  
  777.  destinationdrive:   Specifies the name of the drive where you want UNPACK to 
  778.                      copy one or more restored files. 
  779.  
  780.                      When you specify a destination drive but not a path, 
  781.                      UNPACK uses the path information stored in the header of 
  782.                      the file that contains the compressed data. 
  783.  
  784.  destinationpath     Specifies the name of the directory (and its 
  785.                      subdirectories) where you want UNPACK to copy one or more 
  786.                      restored files. 
  787.  
  788.                      When specified, the destination path overrides the path 
  789.                      information stored in the header of the file that contains 
  790.                      the compressed data. 
  791.  
  792.  /SHOW               Displays the destination path and file-name information 
  793.                      that are saved in the header of each file containing 
  794.                      compressed data. 
  795.  
  796.  /N:singlefile       Extracts and uncompresses one file from a file that 
  797.                      contains multiple files of compressed data. 
  798.  
  799.  /V                  Verifies that sectors written to the target disk are 
  800.                      recorded properly.  This parameter lets you know that 
  801.                      critical data has been correctly recorded. 
  802.  
  803.                      This parameter causes UNPACK to run slower because a check 
  804.                      is made for each entry recorded on the disk. 
  805.  
  806.  /F                  Specifies that files with extended attributes should not 
  807.                      be unpacked or copied if the destination file system does 
  808.                      not support extended attributes. 
  809.  
  810.  
  811. ΓòÉΓòÉΓòÉ 5. Dialog Editor ΓòÉΓòÉΓòÉ
  812.  
  813. You use the Dialog Editor to create and modify dialog boxes, and to create and 
  814. modify the controls and text within dialog boxes. As you create the dialog box 
  815. and its controls, you see them on the screen as the user will see them when 
  816. your program is run. You can place each dialog box and its controls where you 
  817. want them on the screen. In addition, you can test the dialog box before you 
  818. incorporate it into your application. 
  819.  
  820. Each dialog box and control can have either an integer identifier or a symbolic 
  821. identifier that equates to an integer identifier. You use the identifier in 
  822. your application to refer to the dialog box or control. If you intend to use 
  823. symbolic identifiers in your application, you must enter the symbolic and 
  824. integer identifiers in an include file.  If you do not use symbolic names, the 
  825. Dialog Editor supplies an integer identifier for each control and for the 
  826. dialog box itself.  You can use the Dialog Editor to create the include file, 
  827. or you can use a text editor to create the include file before using the Dialog 
  828. Editor. 
  829.  
  830. It is good programming practice to plan the resources that your application 
  831. will use and to choose a naming and numbering convention for the symbolic or 
  832. integer identifiers before you create them.  Keep the include file separate 
  833. from other include files used by your application.  Include files used by the 
  834. Dialog Editor can contain only #define statements that define their symbolic 
  835. identifiers and equivalent integers. 
  836.  
  837. Although the Dialog Editor draws dialog boxes and controls on the screen so you 
  838. can see what they look like when used by your application, it does not save 
  839. them as graphics.  Instead, the Dialog Editor saves them in an ASCII-text 
  840. format file that has a .DLG extension.  Refer to the dialog template section of 
  841. this chapter. 
  842.  
  843. The Dialog Editor also creates a compiled form of the .DLG file in a resource 
  844. file with a .RES extension. The .DLG and .RES files can contain more than one 
  845. dialog box.  The resource file can contain other application resources, such as 
  846. icons, bit maps, and string tables.  It is attached to the executable (.EXE) 
  847. file of the application during the compile and link process. 
  848.  
  849.  
  850. ΓòÉΓòÉΓòÉ 5.1. Designing Dialog Boxes ΓòÉΓòÉΓòÉ
  851.  
  852. Dialog boxes should be designed to clearly identify the information that the 
  853. user is required to complete. The following are a few Common User Access* 
  854. guidelines: 
  855.  
  856.      Lay out the controls in columns, starting at the upper-left corner, for 
  857.       left-to-right or top-to-bottom scanning. 
  858.      Vertically and horizontally align selection and entry fields so that the 
  859.       cursor moves in a straight line. 
  860.      Arrange the controls in the sequence in which the user would complete 
  861.       them. 
  862.      If there are only a few entry fields, locate them at the top of the 
  863.       dialog box. 
  864.      Make groups of controls obvious by use of group boxes and white space. 
  865.      Align group boxes, where possible.  Group boxes can be extended to the 
  866.       right to line up with other group boxes. 
  867.      Use field identifiers to identify the purpose of single and multiple 
  868.       groups of choices. 
  869.  
  870.  
  871. ΓòÉΓòÉΓòÉ 5.2. Creating a Dialog Box ΓòÉΓòÉΓòÉ
  872.  
  873. To run the Dialog Editor, select Dialog Editor from the Development Tools 
  874. folder. The main window appears, displaying the menu bar choices File, Edit, 
  875. Control, Arrange, Options, and Help. On line help that tells you how to use the 
  876. editor is available on most Dialog Editor windows. 
  877.  
  878. To create a new dialog box, start with either one of the following steps: 
  879.  
  880.      Select New Dialog from the Edit menu.  The editor opens new files with 
  881.       the extensions .RES and .DLG. This also opens a new include file. 
  882.      Select New from the File menu.  This opens new files with the extensions 
  883.       .RES and .DLG. You can open a new include file or an existing one. 
  884.  
  885.  The above steps have the same effect. 
  886.  
  887.  When you edit a dialog box, the names of the resource and include files are 
  888.  shown in the title bar of the Dialog Editor. If you are editing a new file 
  889.  that has not yet been named or saved, (Untitled) appears in the title bar in 
  890.  place of a name. If (Untitled) appears in the title bar in place of a name, 
  891.  there are unsaved changes. 
  892.  
  893.  The Dialog Box ID field appears in the status area. A default integer number 
  894.  is supplied in the entry field. Type a symbolic identifier for the dialog box, 
  895.  such as MYDIALOG. Tab to the integer field and type the integer number. Press 
  896.  Enter to place them both in the include file. 
  897.  
  898.  The new dialog box appears in the lower-left corner of the editor screen 
  899.  enclosed by a frame. The frame contains eight small squares called drag 
  900.  handles, which allow you to change the width and height of the selected item. 
  901.  This indicates that the dialog box is selected for editing.  If you are 
  902.  creating a new dialog box, the dialog is automatically selected; at all other 
  903.  times, before you edit the dialog box or a control, you must click on it to 
  904.  select it. 
  905.  
  906.  To continue creating the new dialog box, follow these steps: 
  907.  
  908.    1. Make the dialog box larger by clicking on one of its drag handles with 
  909.       the left mouse button and dragging until the box is the size you want it 
  910.       to be. This can be done in one operation by clicking on the upper-right 
  911.       corner of the frame and dragging diagonally upwards and to the right. 
  912.  
  913.       Information about the item you are editing is displayed in the Selected 
  914.       Item Status box in the left half of the status area.  As you move the 
  915.       shadow box, the x-y-coordinates change.  These are the coordinates of the 
  916.       origin of the dialog box relative to the origin of the window.  The 
  917.       cx-cy-coordinates are the width and height of the dialog box.  The 
  918.       symbolic identifier is also shown. 
  919.  
  920.    2. Select Styles from the Edit menu. The Dialog Box Styles pop-up window 
  921.       appears. 
  922.  
  923.    3. Click on the text entry field in the status area, and then type the 
  924.       dialog box title (for instance, Sample dialog box) into the field. 
  925.  
  926.    4. Press Enter and the title appears at the top of your dialog box. 
  927.  
  928.  You can reposition the entire dialog box by moving the pointer inside the top 
  929.  area enclosed by the frame, holding the left mouse button down, and dragging 
  930.  the shadow box across the screen.  When the shadow box is in the position 
  931.  where you want the dialog box to appear, release the mouse button.  The dialog 
  932.  box appears in that position. Alternatively, you can move the dialog box using 
  933.  the keyboard arrow keys.  You can reposition the dialog box at any time during 
  934.  the edit. 
  935.  
  936.  
  937. ΓòÉΓòÉΓòÉ 5.2.1. Using a Grid ΓòÉΓòÉΓòÉ
  938.  
  939. Before you start adding controls to the dialog box, you might want to first 
  940. select the grid option to make laying out your dialog easier. 
  941.  
  942. You can use a mouse to place controls in a dialog box and to move the controls 
  943. in line with each other.  However, you can more accurately position the 
  944. controls by using the keyboard arrow keys or mouse after grid values have been 
  945. set. 
  946.  
  947. The Settings-change dialog lets you set the number of character spaces (in 
  948. dialog units) by which you can move dialog boxes and controls when using the 
  949. Dialog Editor. 
  950.  
  951. To set the grid size, follow these steps: 
  952.  
  953.    1. Select Settings from the Arrange menu. The Settings-change dialog is 
  954.       displayed. The initial grid setting for both x and y is 1 unit. 
  955.  
  956.    2. Change the x-setting to 10 and the y-setting to 5.  Click on OK. 
  957.  
  958.  The horizontal (x) and vertical (y) values are in dialog units. A horizontal 
  959.  dialog unit is 0.25 of the standard character size. A vertical dialog unit is 
  960.  0.125 of the standard character size.  For example, if you move a control to 
  961.  the left or the right (using the mouse or keyboard arrow keys) with x set at 
  962.  20, it moves in steps of twenty dialog units. 
  963.  
  964.  When you subsequently position dialog boxes or controls, the objects move by 
  965.  the specified number of dialog units on an invisible grid. Large values make 
  966.  it easier to align controls, while small values allow you to position controls 
  967.  in the dialog box more precisely. 
  968.  
  969.  Now that the grid is in place, you are ready to start adding controls. 
  970.  
  971.  
  972. ΓòÉΓòÉΓòÉ 5.2.2. Ordering Control Groups ΓòÉΓòÉΓòÉ
  973.  
  974. This option allows you to gather controls into groups and to change the order 
  975. in which the tab keys and arrow keys move the selection cursor around the 
  976. controls. 
  977.  
  978. When you use group boxes to group controls, always create the group box before 
  979. the controls that are to go inside it. 
  980.  
  981. It is good practice to put group markers around all separate groups of 
  982. controls, including putting a marker before the first control in the list. 
  983.  
  984. The list box shows the order in which the selection cursor moves between the 
  985. controls when the user presses the arrow and tab keys. (The coordinate position 
  986. of a control when displayed in the dialog box does not affect the order.) 
  987. Initially, the controls are listed in the order in which they were created. 
  988.  
  989. There are three functions involved in grouping controls: 
  990.  
  991.      Setting Group Markers 
  992.      Setting Tab Markers 
  993.      Moving Control Order 
  994.  
  995.  Setting Group Markers 
  996.  
  997.  To set up groups in a dialog that has various types of controls, follow these 
  998.  steps: 
  999.  
  1000.    1. Select Order Groups from the Arrange menu.  The Groups - order dialog is 
  1001.       displayed. 
  1002.  
  1003.    2. Click on the first radio button in the list box. 
  1004.  
  1005.    3. Click on the Group Marker push button.  A group marker is now displayed 
  1006.       between the Text control and the first radio button in the list. 
  1007.  
  1008.    4. Scroll down the list and click on the first push button in the list. 
  1009.       Click on the Group Marker push button.  This has organized your controls 
  1010.       into groups of text, radio buttons, check boxes, and push buttons. 
  1011.  
  1012.  Setting Tab Markers 
  1013.  
  1014.  After setting group markers, you will want to set tab-stops.  The controls 
  1015.  marked with an asterisk already have tab-stops. 
  1016.  
  1017.  To make the tab-stop at only the first control in each group, delete the 
  1018.  tab-stops from the second and third radio button and check box, following 
  1019.  these steps: 
  1020.  
  1021.    1. Click on the second radio button in the list to mark it. 
  1022.  
  1023.    2. Click on the Delete Tab push button. 
  1024.  
  1025.    3. Repeat the above steps for the third radio button, and then perform the 
  1026.       same operation for the second and third check box in the list.  When this 
  1027.       is complete, press Enter. 
  1028.  
  1029.  Moving Control Order 
  1030.  
  1031.  You can move controls in the list and then see during testing how the changes 
  1032.  affect the movement of the cursor. To change the position of a control in the 
  1033.  list, follow these steps: 
  1034.  
  1035.    1. Click on the name of the control to select it. 
  1036.  
  1037.    2. Position the pointer in the list where you want the name to appear. The 
  1038.       pointer changes shape to a short horizontal line when it is over a place 
  1039.       where you can insert the name. 
  1040.  
  1041.    3. To insert the control name, click the mouse button. 
  1042.  
  1043.  After grouping controls, you might want to test or edit the dialog, or enter 
  1044.  additional controls. 
  1045.  
  1046.  
  1047. ΓòÉΓòÉΓòÉ 5.2.3. Adding Controls ΓòÉΓòÉΓòÉ
  1048.  
  1049. The control menu lists, in alphabetic order, all the controls that you can put 
  1050. in a dialog box. To add controls, follow these steps: 
  1051.  
  1052.    1. Select a control from the Control menu or click on an icon on the Control 
  1053.       Palette at the right side of the window. 
  1054.  
  1055.       The pointer becomes a small plus sign (+) in a square. The center marks 
  1056.       the position where the lower-left corner of the frame for the control 
  1057.       will be set. 
  1058.  
  1059.    2. Click the mouse to position the control. 
  1060.  
  1061.    3. A dialog might appear (depending on the type of control) in which you 
  1062.       must enter data or check preferences to define the control. Complete this 
  1063.       and close the dialog. 
  1064.  
  1065.  For an example of adding controls in a typical dialog, see Adding Controls 
  1066.  Example. 
  1067.  
  1068.  You might want to test the dialog. 
  1069.  
  1070.  For detailed descriptions of individual controls and how they work, see the 
  1071.  individual controls in the on line help (while using the Dialog Editor) by 
  1072.  following these steps: 
  1073.  
  1074.    1. Select Help Index from the Help menu (or press F1 and select Help Index). 
  1075.  
  1076.    2. Select Options or press Alt-O. 
  1077.  
  1078.    3. Select Contents or press Ctrl-C. 
  1079.  
  1080.    4. Select Control Menu for an alphabetic list of controls, or select Control 
  1081.       Palette for the icons as they appear on the Control Palette. 
  1082.  
  1083.    5. Select the control you want to read about. 
  1084.  
  1085.  
  1086. ΓòÉΓòÉΓòÉ 5.2.4. Adding Controls Example ΓòÉΓòÉΓòÉ
  1087.  
  1088. The control menu lists, in alphabetic order, all the controls that you can put 
  1089. in a dialog box. The sample dialog is Sample Dialog Template File. To add 
  1090. controls for a sample dialog, follow these steps: 
  1091.  
  1092.    1. Select Text from the Control menu or select a control by clicking on its 
  1093.       icon on the Control Palette at the right side of the window. 
  1094.  
  1095.       The pointer becomes a small plus sign (+) in a square.  The center marks 
  1096.       the position where the center of the control will be. 
  1097.  
  1098.    2. Position the pointer inside the dialog box near the upper-left corner and 
  1099.       click the mouse. 
  1100.  
  1101.    3. Type Student Level: in the Text entry field. Observe that the next 
  1102.       sequential integer is supplied in the Symbol entry field.  Press Enter. 
  1103.  
  1104.    4. Replace the symbol with ID_GRAD and press Enter. 
  1105.  
  1106.       The Dialog editor assigns the next integer to the symbolic identifier you 
  1107.       entered and places it in the include file. This is another technique for 
  1108.       entering symbolic identifiers. 
  1109.  
  1110.    5. To view or change the include file at any time, select Symbols from the 
  1111.       Edit menu. The Symbols dialog appears. 
  1112.  
  1113.       The symbolic and integer identifier for the dialog box and the text 
  1114.       control are displayed in the list box. The dialog allows you to add, 
  1115.       delete, and change the identifiers and to view the hexadecimal 
  1116.       equivalents of the integers. 
  1117.  
  1118.    6. Select the OK push button to remove the dialog and register any changes. 
  1119.       Select Cancel if you have not made any changes. 
  1120.  
  1121.    7. In your dialog box, the static control is not large enough for you to see 
  1122.       all the text. To remedy this, click on the text, and a frame appears 
  1123.       around it. Drag the right-hand edge of the frame to the right to enlarge 
  1124.       the field. 
  1125.  
  1126.       When you release the mouse button, you should be able to see all the tex. 
  1127.       When a control has a frame around it, it is selected and you can use a 
  1128.       shadow box to position it, as you did with the dialog box. 
  1129.  
  1130.    8. To add another control, select Radio Button from the Control menu and 
  1131.       position the cursor just beneath the Student Level text.  Press Enter. 
  1132.  
  1133.    9. Type Elementary in the Button Text entry field and press Enter. Drag the 
  1134.       right edge of the frame that surrounds the radio button until you can see 
  1135.       all of the text. 
  1136.  
  1137.   10. Select Radio Button again and type Intermediate in the Text entry field. 
  1138.       Position this radio button below the first one. 
  1139.  
  1140.   11. Select Radio Button again and type Advanced in the Text entry field. 
  1141.       Position this radio button below the other two. 
  1142.  
  1143.   12. Select Group Box from the Control menu. Position the cursor to the right 
  1144.       of the column of radio buttons and press Enter. 
  1145.  
  1146.   13. Type Media in the Text entry field and press Enter to title the group 
  1147.       box. 
  1148.  
  1149.   14. Click on the lower-right corner of the group box frame and drag it 
  1150.       diagonally down and to the right to enlarge it.  The bottom of the group 
  1151.       box frame should be lower than the last of the radio buttons, and the 
  1152.       right-hand side of the group box should be almost at the far right of the 
  1153.       dialog box.  This is to make room for a group of check boxes that will go 
  1154.       inside the group box. 
  1155.  
  1156.       When you use group boxes to group controls, you always create the group 
  1157.       box before the controls that are to go inside it. 
  1158.  
  1159.   15. Select Check Box from the Control menu. Position the cursor inside the 
  1160.       group box in line with the first radio button in the list, and click the 
  1161.       mouse. 
  1162.  
  1163.   16. Type TextBooks in the Button Text entry field and press Enter. Enlarge 
  1164.       the frame of the check box until all of the text is displayed. 
  1165.  
  1166.   17. Select Check Box again and position the cursor below the first check box. 
  1167.       Type Video in the Text entry field and click Enter. Enlarge the check box 
  1168.       frame until all of the text is displayed. 
  1169.  
  1170.   18. Select Check Box again and position the cursor below the previous two 
  1171.       check boxes. Type Diskettes in the Text entry field. 
  1172.  
  1173.       In the left-hand side of the dialog box, you should now have a column of 
  1174.       radio buttons with a heading of Student Level, and on the right a group 
  1175.       box with a heading of Media that contains three check boxes. 
  1176.  
  1177.   19. Finally, add three push buttons to the dialog box.  Select Pushbutton 
  1178.       from the Control menu. Position the cursor in the lower-left side of the 
  1179.       dialog box and click the mouse.  Type OK in the Text entry field and 
  1180.       press Enter. 
  1181.  
  1182.   20. Position another push button to the right of the first one (in the lower 
  1183.       middle of the dialog box) and type Cancel in the Text entry field. 
  1184.  
  1185.   21. Select a third push button and position it to the right of the second. 
  1186.       Type Help in the Text entry field. 
  1187.  
  1188.  The dialog box and its controls are now complete. 
  1189.  
  1190.  Try selecting each of the controls, and observe the information in the 
  1191.  Selected Item Status. It holds information about each control that you edit. 
  1192.  
  1193.  You might now want to test the dialog box. 
  1194.  
  1195.  
  1196. ΓòÉΓòÉΓòÉ 5.2.5. Selecting Color and Font ΓòÉΓòÉΓòÉ
  1197.  
  1198. The Presentation Parameters dialog allows you to select the color and font for 
  1199. individual controls or for an entire dialog box. 
  1200.  
  1201. You can select all of the following: 
  1202.  
  1203.      Foreground Color 
  1204.      Background Color 
  1205.      Foreground Color Highlight 
  1206.      Background Color Highlight 
  1207.      Disabled (greyed out) Foreground Color 
  1208.      Disabled (greyed out) Background Color 
  1209.      Font Size 
  1210.      Font Name 
  1211.  
  1212.  To set presentation parameters, follow these steps: 
  1213.  
  1214.    1. Select a control or the dialog box. 
  1215.  
  1216.    2. Select Presentation Parameters from the Edit menu. 
  1217.  
  1218.    3. Type the number, from 1 to 255 parts of each color, in the appropriate 
  1219.       fields. 
  1220.  
  1221.    4. Type the font size and name, if you want to change the default, in the 
  1222.       last two fields. 
  1223.  
  1224.    5. Select OK or press Enter to close the dialog. 
  1225.  
  1226.  You might now want to test the dialog. 
  1227.  
  1228.  
  1229. ΓòÉΓòÉΓòÉ 5.2.6. Arranging Controls ΓòÉΓòÉΓòÉ
  1230.  
  1231. The Arrange menu allows you to arrange and align controls in a logical and 
  1232. easy-to-understand layout. 
  1233.  
  1234.  Align             Aligns controls along an edge. 
  1235.  
  1236.  Even spacing      Evenly spaces controls 
  1237.  
  1238.  Same size         Sets controls to the same size. 
  1239.  
  1240.  Push buttons      Arranges push buttons. 
  1241.  
  1242.  Order groups      Displays the Groups-order dialog, so you can change the 
  1243.                    order of controls and groups. 
  1244.  
  1245.  Settings          Displays the Settings-change dialog, so you can change the 
  1246.                    grid and spacing constants. 
  1247.  
  1248.  
  1249. ΓòÉΓòÉΓòÉ 5.3. Changing the Dialog Box ΓòÉΓòÉΓòÉ
  1250.  
  1251. To change the properties of a dialog box or a single control, use the following 
  1252. functions of the Edit menu: 
  1253.  
  1254.      Select New Dialog to create another dialog box in the same resource file. 
  1255.       Your existing dialog box will stay in memory. 
  1256.  
  1257.      Select Select Dialog to switch to another open dialog box. 
  1258.  
  1259.      Select Symbols to define symbols. 
  1260.  
  1261.  Eight of the editing functions require that you first select the control to be 
  1262.  edited. The selected control will appear in the drag window, surrounded by 
  1263.  eight dots, one in each corner and one at the midpoint of each side. 
  1264.  
  1265.  The following functions require that a control must first be selected: 
  1266.  
  1267.      Select Cut to cut a control you would like to move or delete. 
  1268.  
  1269.      Select Copy to copy to the clipboard a control you would like to 
  1270.       duplicate elsewhere in the same dialog or in another dialog. 
  1271.  
  1272.      Select Paste to place a control you have marked with Cut or Copy. 
  1273.  
  1274.      Select Clear to erase a control. 
  1275.  
  1276.      Select Duplicate to create another control in this dialog box that is 
  1277.       identical to the selected control. 
  1278.  
  1279.      Select Styles to define the style of the selected control. 
  1280.  
  1281.      Select Presentation parameters to select the colors and fonts. 
  1282.  
  1283.      Select Size to text to adjust the size of an entry field to the text 
  1284.       inside. 
  1285.  
  1286.  
  1287. ΓòÉΓòÉΓòÉ 5.3.1. Using the Options Menu ΓòÉΓòÉΓòÉ
  1288.  
  1289. On the Options menu, a check mark next to each option shows whether it is 
  1290. selected (on) or not (off). 
  1291.  
  1292. To toggle your selection of options on and off, use the following functions of 
  1293. the Options menu: 
  1294.  
  1295.      Select Test mode to test the dialog. 
  1296.  
  1297.      Select Hex mode to toggle between hexadecimal and decimal display of ID 
  1298.       Values of symbols. 
  1299.  
  1300.      Select Translate mode to toggle translate mode on and off. 
  1301.  
  1302.      Select Enable 2.x styles to use controls and their styles which are 
  1303.       specific to OS/2 2.x, but not prior releases. 
  1304.  
  1305.      Select Show status area to toggle display of the status area on and off. 
  1306.  
  1307.  
  1308. ΓòÉΓòÉΓòÉ 5.3.2. Testing the Dialog Box ΓòÉΓòÉΓòÉ
  1309.  
  1310. To test the dialog box, select Test Mode from the Options menu.  The dialog box 
  1311. is displayed as it will appear to the user in a program.  In test mode, you can 
  1312. select controls, and their appearance changes in the same way as they do in an 
  1313. application.  To return to work mode, click on Test Mode again to de select it. 
  1314.  
  1315. If you want to make changes, you can edit the dialog box. 
  1316.  
  1317.  
  1318. ΓòÉΓòÉΓòÉ 5.3.3. Ending an Edit Session ΓòÉΓòÉΓòÉ
  1319.  
  1320. To end the edit session, select Close from the system pull-down menu.  You see 
  1321. prompts for the file names of the files you want to save. 
  1322.  
  1323. If you want to edit the same file the next time you use the editor, select Open 
  1324. from the File menu. 
  1325.  
  1326.  
  1327. ΓòÉΓòÉΓòÉ 5.4. Dialog Templates ΓòÉΓòÉΓòÉ
  1328.  
  1329. The Dialog Editor creates an ASCII text file that has the file-name extension 
  1330. .DLG. The compiled form of this file, created using the Resource Compiler, has 
  1331. the file-name extension .RES. 
  1332.  
  1333. The .DLG file contains a series of statements, collectively termed a dialog 
  1334. template, that define each dialog box and each control in each dialog box. The 
  1335. statement for each dialog box contains the data required to create it, namely 
  1336. its class, size, position, window text, and any other special information 
  1337. required for the window. 
  1338.  
  1339. Normally, the template consists of a dialog box window followed by the controls 
  1340. contained within it, which are child windows. 
  1341.  
  1342. The first statement in the template is the DLGINCLUDE statement, which 
  1343. specifies the file name of the include file. 
  1344.  
  1345. The next statement is the DLGTEMPLATE statement, which specifies the symbolic 
  1346. identifier of the dialog box (MYDIALOG). The DLGTEMPLATE statement also 
  1347. specifies any loading and memory options. The actual dialog template is 
  1348. contained within the first BEGIN and last END statement. There is a CONTROL 
  1349. statement for each of the controls in the dialog box. The CONTROL statement is 
  1350. a general statement that is followed by parameters that further specify the 
  1351. control, such as: 
  1352.  
  1353.      Text, where appropriate.  For example, the text OK is defined for one of 
  1354.       the push buttons. 
  1355.      Application-defined symbolic or integer identifiers for each control. 
  1356.       Your application uses the identifier to track the responses from 
  1357.       controls.  For example, ID_NULL is the identifier of the text control. 
  1358.      The types and positions of the various controls.  For example, the group 
  1359.       box control is a control window of window class WC_STATIC. The Cancel and 
  1360.       Help push buttons are of window class WC_BUTTON. 
  1361.      The appearance and operation of the dialog box and its controls, which 
  1362.       are specified in detail by combinations of style parameters. For example, 
  1363.       the check boxes have a class style of BS_CHECKBOX, and radio buttons have 
  1364.       a class style of BS_RADIOBUTTON.  You can also specify appropriate WS_* 
  1365.       styles. 
  1366.  
  1367.  If necessary, you can use a text editor to edit the .DLG file, for example, to 
  1368.  fine-tune the dialog template produced by the dialog box editor.  You can even 
  1369.  use a text editor to produce your own .DLG file. The Dialog Editor uses the 
  1370.  general CONTROL statement with window classes and control styles to define 
  1371.  controls. 
  1372.  
  1373.  You can use the CONTROL statement in the same way to define your controls, or 
  1374.  you can use any of several predefined control statements that give you the 
  1375.  same result.  For example, the predefined control statement PUSHBUTTON gives 
  1376.  you a WC_BUTTON class window with default styles of BS_PUSHBUTTON and 
  1377.  WS_TABSTOP. 
  1378.  
  1379.  The predefined controls are described in the following sections. 
  1380.  
  1381.  
  1382. ΓòÉΓòÉΓòÉ 5.4.1. AUTOCHECKBOX Statement ΓòÉΓòÉΓòÉ
  1383.  
  1384. The AUTOCHECKBOX statement creates an automatic-check-box control. The control 
  1385. is a small rectangle (check box) that contains a check when the user selects 
  1386. it. The specified text is displayed to the right of the check box.  A check 
  1387. appears in the square when the user first selects the control and disappears 
  1388. the next time the user selects it. The AUTOCHECKBOX statement, which you can 
  1389. use only in a DIALOG or WINDOW statement, defines the text, identifier, 
  1390. coordinates, dimensions, and attributes of a control window.  The predefined 
  1391. class for this control is WC_BUTTON. If you do not specify the style, the 
  1392. default style is BS_AUTOCHECKBOX and WS_TABSTOP. 
  1393.  
  1394.  
  1395. ΓòÉΓòÉΓòÉ 5.4.2. AUTORADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  1396.  
  1397. The AUTORADIOBUTTON statement creates an automatic-radio-button control.  This 
  1398. control is a small circle with the given text displayed to its right.  The 
  1399. control highlights the circle and sends a message to its parent window when the 
  1400. user selects the button.  The control also removes the selection from any other 
  1401. automatic-radio-button controls in the same group.  When the user selects the 
  1402. button again, the control removes the highlight before sending a message.  The 
  1403. AUTORADIOBUTTON statement, which you can use only in a DIALOG or WINDOW 
  1404. statement, defines the text, identifier, coordinates, dimensions, and 
  1405. attributes of a control window.  The predefined class for this control is 
  1406. WC_BUTTON.  If you do not specify a style, the default style is 
  1407. BS_AUTORADIOBUTTON. 
  1408.  
  1409.  
  1410. ΓòÉΓòÉΓòÉ 5.4.3. CHECKBOX Statement ΓòÉΓòÉΓòÉ
  1411.  
  1412. The CHECKBOX statement creates a check-box control.  The control is a small 
  1413. rectangle (check box) that has the specified text displayed to the right.  The 
  1414. control highlights the rectangle and sends a message to its parent window when 
  1415. the user selects the control.  The CHECKBOX statement, which you can use only 
  1416. in a DIALOG or WINDOW statement, defines the text, identifier, coordinates, 
  1417. dimensions, and attributes of a control window.  The predefined class for this 
  1418. control is WC_BUTTON.  If you do not specify a style, the default style is 
  1419. BS_CHECKBOX and WS_TABSTOP. 
  1420.  
  1421.  
  1422. ΓòÉΓòÉΓòÉ 5.4.4. COMBOBOX Statement ΓòÉΓòÉΓòÉ
  1423.  
  1424. The COMBOBOX statement creates a combination-box control.  This control 
  1425. combines a list-box control with an entry-field control.  It allows you to 
  1426. place the selected item from a list box into an entry field. The COMBOBOX 
  1427. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  1428. text, identifier, coordinates, dimensions, and attributes of a control window. 
  1429. The predefined class for this control is WC_COMBOBOX. If you do not specify a 
  1430. style, the default style is CBS_SIMPLE, WS_GROUP, WS_TABSTOP, and WS_VISIBLE. 
  1431.  
  1432.  
  1433. ΓòÉΓòÉΓòÉ 5.4.5. CONTAINER Statement ΓòÉΓòÉΓòÉ
  1434.  
  1435. The CONTAINER statement creates a container control within a dialog window. 
  1436. The container control is a visual component that holds objects.  The CONTAINER 
  1437. statement defines the identifier, coordinates, dimensions, and attributes of a 
  1438. container control.  The predefined class for this control is WC_CONTAINER.  If 
  1439. you do not specify a style, the default style is WS_TABSTOP, WS_VISIBLE, and 
  1440. CCS_SINGLESEL. 
  1441.  
  1442. Example 
  1443.  
  1444. This example creates a container control at position (30,30) within the dialog 
  1445. window.  The container has a width of 70 character units and a height of 25 
  1446. character units.  Its resource ID is 301.  The default style CCS_SINGLESEL has 
  1447. been overridden by the style specification CCS_MULTIPLESEL.  The default styles 
  1448. WS_TABSTOP and WS_GROUP are both in effect, though only the latter is 
  1449. specified. 
  1450.  
  1451. #define IDC_CONTAINER    301
  1452. #define IDD_CONTAINERDLG 504
  1453. DIALOG "Container", IDD_CONTAINERDLG, 23, 6, 120, 280, FS_NOBYTEALIGN |
  1454.         WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  1455.   BEGIN
  1456.      CONTAINER   IDC_CONTAINER, 30, 30, 70, 200, CCS_MULTIPLESEL |
  1457.                        WS_GROUP
  1458.   END
  1459.  
  1460.  
  1461. ΓòÉΓòÉΓòÉ 5.4.6. DEFPUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  1462.  
  1463. The DEFPUSHBUTTON statement creates a default push button control. The control 
  1464. is a round-cornered rectangle containing the given text. The rectangle has a 
  1465. bold outline to represent that it is the default response for the user.  The 
  1466. control sends a message to its parent window when the user chooses the control. 
  1467. The DEFPUSHBUTTON statement, which you can use only in a DIALOG or WINDOW 
  1468. statement, lets you define the coordinates, dimensions, and attributes of the 
  1469. default push button control.  The predefined class for this control is 
  1470. WC_BUTTON.  If you do not specify a style, the default style is BS_PUSHBUTTON, 
  1471. BS_DEFAULT, and WS_TABSTOP. 
  1472.  
  1473.  
  1474. ΓòÉΓòÉΓòÉ 5.4.7. EDITTEXT or ENTRYFIELD Statement ΓòÉΓòÉΓòÉ
  1475.  
  1476. The EDITTEXT or ENTRYFIELD statement creates an entry-field control.  This 
  1477. control is a rectangle in which the user can type and edit text. The control 
  1478. displays a pointer when the user selects the control.  The user can then use 
  1479. the keyboard to enter text or edit the existing text.  Editing keys include the 
  1480. Backspace and Delete keys.  By using the mouse or the direction-arrow keys, the 
  1481. user can select the character or characters to delete or select the place to 
  1482. insert new characters. 
  1483.  
  1484. The EDITTEXT or ENTRYFIELD statement defines the text, identifier, coordinates, 
  1485. dimensions, and attributes of a control window.  The predefined class for this 
  1486. control is WC_ENTRYFIELD.  If you do not specify a style, the default style is 
  1487. ES_AUTOSCROLL and WS_TABSTOP. The EDITTEXT control statement is identical to 
  1488. the ENTRYFIELD control statement. Use the EDITTEXT or ENTRYFIELD statement only 
  1489. in a DIALOG or WINDOW statement. 
  1490.  
  1491.  
  1492. ΓòÉΓòÉΓòÉ 5.4.8. FRAME Statement ΓòÉΓòÉΓòÉ
  1493.  
  1494. The FRAME statement defines a frame window.  The statement defines the title, 
  1495. identifier, position, and dimensions of the frame window, as well as the window 
  1496. style.  The FRAME statement is most often used in a WINDOWTEMPLATE statement, 
  1497. and typically, only one FRAME statement is used.  The FRAME statement, in turn, 
  1498. typically contains at least one WINDOW statement that defines the client window 
  1499. belonging to the frame window. 
  1500.  
  1501. The frame window has no default style.  You must use the framectl field to 
  1502. define additional frame controls, such as a title bar and system menu, to be 
  1503. created when the frame window is created.  If the text field is not empty, the 
  1504. statement automatically adds a title-bar control to the frame window, whether 
  1505. or not you specify the FCF_TITLEBAR style.  Frame controls are given default 
  1506. styles and control identifiers based on their class.  For example, a title-bar 
  1507. control receives the identifier FID_TITLEBAR. 
  1508.  
  1509. The FRAME statement can actually contain any combination of CONTROL, DIALOG, 
  1510. and WINDOW statements. Typically, a FRAME statement contains one WINDOW 
  1511. statement. 
  1512.  
  1513. Example 
  1514.  
  1515. This example creates a standard frame window, with title bar, a system menu, 
  1516. minimize and maximize boxes, and a vertical scroll bar.  The FRAME statement 
  1517. contains a WINDOW statement defining the client window belonging to the frame 
  1518. window. 
  1519.  
  1520. WINDOWTEMPLATE 1
  1521. BEGIN
  1522.     FRAME "My Window", 1, 10, 10, 320, 130, 0,
  1523.             FCF_STANDARD | FCF_VERTSCROLL
  1524.     BEGIN
  1525.         WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass"
  1526.     END
  1527. END
  1528.  
  1529.  
  1530. ΓòÉΓòÉΓòÉ 5.4.9. GROUPBOX Statement ΓòÉΓòÉΓòÉ
  1531.  
  1532. The GROUPBOX statement creates a group-box control.  The control is a rectangle 
  1533. that groups other controls together.  A border is drawn around the groups, and 
  1534. text is displayed in the upper-left corner. The GROUPBOX statement, which you 
  1535. can use only in a DIALOG or WINDOW statement, defines the text, identifier, 
  1536. coordinates, dimensions, and attributes of a group-box control.  The predefined 
  1537. class for this control is WC_STATIC.  If you do not specify a style, the 
  1538. default style is SS_GROUPBOX and WS_TABSTOP. 
  1539.  
  1540.  
  1541. ΓòÉΓòÉΓòÉ 5.4.10. ICON Statement (Control) ΓòÉΓòÉΓòÉ
  1542.  
  1543. This form of the ICON statement creates an icon control.  This control is an 
  1544. icon displayed in a dialog box.  The ICON statement, which you can use only in 
  1545. a DIALOG or WINDOW statement, defines the icon-resource identifier, 
  1546. icon-control identifier, position, and attributes of a control window.  The 
  1547. predefined class for this control is WC_STATIC.  If you do not specify a style, 
  1548. the default style is SS_ICON.  For the ICON statement, the width and height 
  1549. fields are ignored; the icon automatically sizes itself. 
  1550.  
  1551.  
  1552. ΓòÉΓòÉΓòÉ 5.4.11. LISTBOX Statement ΓòÉΓòÉΓòÉ
  1553.  
  1554. The LISTBOX statement creates commonly used controls for a dialog box or 
  1555. window.  The control is a rectangle containing a list of user-selectable 
  1556. strings, such as file names. 
  1557.  
  1558. The LISTBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  1559. defines the identifier, coordinates, dimensions, and attributes of a control 
  1560. window.  The predefined class for this control is WC_LISTBOX.  If you do not 
  1561. specify a style, the default style is WS_TABSTOP. 
  1562.  
  1563.  
  1564. ΓòÉΓòÉΓòÉ 5.4.12. MLE Statement ΓòÉΓòÉΓòÉ
  1565.  
  1566. The MLE statement creates a multiple-line entry-field control.  The control is 
  1567. a rectangle in which the user can type and edit multiple lines of text.  The 
  1568. control displays a pointer when the user selects it.  The user can then use the 
  1569. keyboard to enter text or edit the existing text.  Editing keys include the 
  1570. Backspace and Delete keys. By using the mouse or the direction-arrow keys, the 
  1571. user can select the character or characters to delete or select the place to 
  1572. insert new characters.  The MLE statement, which you can use only in a DIALOG 
  1573. or WINDOW statement, defines the text, identifier, coordinates, dimensions, and 
  1574. attributes of a control window.  The predefined class for this control is 
  1575. WC_MLE.  If you do not specify a style, the default style is MLS_BORDER, 
  1576. WS_GROUP, and WS_TABSTOP. If the MLS_READONLY style is not specified, the user 
  1577. can edit the text. 
  1578.  
  1579.  
  1580. ΓòÉΓòÉΓòÉ 5.4.13. NOTEBOOK Statement ΓòÉΓòÉΓòÉ
  1581.  
  1582. The NOTEBOOK statement creates a notebook control within the dialog window. 
  1583. This control is used to organize information on individual pages so that it can 
  1584. be located and displayed easily. The NOTEBOOK statement defines the identifier, 
  1585. coordinates, dimensions, and attributes of a notebook control.  The predefined 
  1586. class for this control is WC_NOTEBOOK.  If you do not specify a style, the 
  1587. default style is WS_TABSTOP and WS_VISIBLE. The NOTEBOOK statement is used only 
  1588. in a DIALOG or WINDOW statement. 
  1589.  
  1590. Example 
  1591.  
  1592. This example creates a notebook control at position (20, 20) within the dialog 
  1593. window.  The notebook has a width of 200 character units and a height of 32 
  1594. character units.  Its resource ID is 201. The tabs style BKS_ROUNDEDTABS 
  1595. specification overrides the notebook default style of square tabs. The default 
  1596. styles WS_TABSTOP and WS_GROUP are both in effect, though only the latter is 
  1597. specified. 
  1598.  
  1599. #define    IDC_NOTEBOOK     201
  1600. #define    IDD_NOTEBOOKDLG  503
  1601. DIALOG "Notebook", IDD_NOTEBOOKDLG, 11, 11, 420, 420, FS_NOBYTEALIGN |
  1602.         WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  1603.   BEGIN
  1604.     NOTEBOOK   IDC_NOTEBOOK, 20, 20, 200, 400, BKS_ROUNDEDTABS | WS_GROUP
  1605.   END
  1606.  
  1607.  
  1608. ΓòÉΓòÉΓòÉ 5.4.14. PUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  1609.  
  1610. The PUSHBUTTON statement creates a push button control.  The control is a 
  1611. round-cornered rectangle containing the given text.  The control sends a 
  1612. message to its parent whenever the user chooses the control. The PUSHBUTTON 
  1613. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  1614. text, identifier, coordinates, dimensions, and attributes of a control window. 
  1615. The predefined class for this control is WC_BUTTON. If you do not specify a 
  1616. style, the default style is BS_PUSHBUTTON and WS_TABSTOP. 
  1617.  
  1618.  
  1619. ΓòÉΓòÉΓòÉ 5.4.15. RADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  1620.  
  1621. The RADIOBUTTON statement creates a radio-button control.  The control is a 
  1622. small circle that has the given text displayed to its right.  The control 
  1623. highlights the circle and sends a message to its parent window when the user 
  1624. selects the button.  The control removes the highlight and sends a message when 
  1625. the button is next selected.  The RADIOBUTTON statement, which you can use only 
  1626. in a DIALOG or WINDOW statement, defines the text, identifier, coordinates, 
  1627. dimensions, and attributes of a control window.  The predefined class for this 
  1628. control is WC_BUTTON.  If you do not specify a style, the default style is 
  1629. BS_RADIOBUTTON. 
  1630.  
  1631.  
  1632. ΓòÉΓòÉΓòÉ 5.4.16. SLIDER Statement ΓòÉΓòÉΓòÉ
  1633.  
  1634. The SLIDER statement creates a slider control within the dialog window.  This 
  1635. control lets the user set, display, or modify a value by moving a slider arm 
  1636. along a linear slider shaft. The SLIDER statement defines the identifier, 
  1637. coordinates, dimensions, and attributes of a slider control.  The predefined 
  1638. class for this control is WC_SLIDER.  If you do not specify a style, the 
  1639. default style is WS_TABSTOP and WS_VISIBLE. The SLIDER statement is used only 
  1640. in a DIALOG or WINDOW statement. 
  1641.  
  1642.  
  1643. ΓòÉΓòÉΓòÉ 5.4.17. SPINBUTTON Statement ΓòÉΓòÉΓòÉ
  1644.  
  1645. The SPINBUTTON statement creates a spin button control within the dialog 
  1646. window.  This control gives the user quick access to a finite set of data.  The 
  1647. SPINBUTTON statement defines the identifier, coordinates, dimensions, and 
  1648. attributes of a spin button control.  The predefined class for this control is 
  1649. WC_SPINBUTTON. If you do not specify a style, the default style is WS_TABSTOP, 
  1650. WS_VISIBLE, and SPBS_MASTER. The SPINBUTTON statement is used only in a DIALOG 
  1651. or WINDOW statement. 
  1652.  
  1653.  
  1654. ΓòÉΓòÉΓòÉ 5.4.18. Static Text Statements: LTEXT, CTEXT and RTEXT ΓòÉΓòÉΓòÉ
  1655.  
  1656. Each of these statements creates a static text control.  The control is a 
  1657. simple rectangle displaying the given text, which is either aligned to one edge 
  1658. or centered in the rectangle.  The text is formatted before it is displayed. 
  1659. Words that would extend past the end of a line are automatically wrapped to the 
  1660. beginning of the next line.  These three statements, which you can use only in 
  1661. a DIALOG or WINDOW statement, define the text, identifier, coordinates, 
  1662. dimensions, and attributes of a static text control.  The predefined class for 
  1663. this control is WC_STATIC.  If you do not specify a style, the default style is 
  1664. SS_TEXT, WS_GROUP, and the appropriate alignment flag (DT_LEFT, DT_CENTER, or 
  1665. DT_RIGHT respectively). 
  1666.  
  1667.  
  1668. ΓòÉΓòÉΓòÉ 5.4.19. VALUESET Statement ΓòÉΓòÉΓòÉ
  1669.  
  1670. The VALUESET statement creates a value-set control within the dialog window. 
  1671. This control lets a user select one choice from a group of mutually exclusive 
  1672. choices.  The VALUESET statement defines the identifier, coordinates, 
  1673. dimensions, and attributes of a value-set control.  The predefined class for 
  1674. this control is WC_VALUESET.  If you do not specify a style, the default style 
  1675. is WS_TABSTOP and WS_VISIBLE. The VALUESET statement is used only in a DIALOG 
  1676. or WINDOW statement. 
  1677.  
  1678. Example 
  1679.  
  1680. This example creates a value-set control at position (40, 40) within the dialog 
  1681. window.  The value set control has a width of 220 character and a height of 20 
  1682. character units.  Its resource ID is 302.  The style specification VS_ICON 
  1683. creates a control to show items in icon form.  The default styles WS_TABSTOP 
  1684. and WS_VISIBLE are both in effect, though only WS_TABSTOP is specified. 
  1685.  
  1686. #define    IDC_VALUESET     302
  1687. #define    IDD_VALUESETDLG  501
  1688. DIALOG "Value set", IDD_VALUESETDLG, 11, 11, 260, 240, FS_NOBYTEALIGN |
  1689.         WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  1690.   BEGIN
  1691.     VALUESET  IDC_VALUESET, 40, 40, 220, 160, VS_ICON | WS_TABSTOP
  1692.   END
  1693.  
  1694. A dialog template can be in either of the following: 
  1695.  
  1696.      A resource.res file (generated from the .DLG file by the Resource 
  1697.       Compiler) 
  1698.      A block of memory that has the DLGTEMPLATE data structure, in which case 
  1699.       you use WinCreateDlg to create the dialog box from the template. 
  1700.  
  1701.  The dialog template uses device-independent dialog units for the coordinate 
  1702.  system that define the layout of controls in the dialog box. 
  1703.  
  1704.  A dialog unit is expressed in terms of the default standard character size, 
  1705.  which can vary from device to device.  You do not need to put code in your 
  1706.  application to reformat the dialog box when displaying it on different 
  1707.  devices. (Dialogs might need editing if a different system font is loaded.)  A 
  1708.  horizontal dialog unit is 0.25 of the standard character size. A vertical 
  1709.  dialog unit is 0.125 of the standard character size. Dialog units are 
  1710.  expressed as offsets from the origin (lower-left corner) of the dialog box. 
  1711.  
  1712.  A dialog template is a general structure.  It could be termed a window 
  1713.  template, because you can use it to define any window in an application.  If 
  1714.  you prefer, use the statement WINDOWTEMPLATE instead of DLGTEMPLATE, because 
  1715.  it is functionally identical. This could reduce the initialization phase of 
  1716.  the application to registering the application window classes and calling 
  1717.  WinLoadDlg to load the template. 
  1718.  
  1719.  If you use the Dialog Editor to define a standard window, you will have to 
  1720.  edit the resulting .DLG file to ensure that you have a client window and the 
  1721.  required parent-child relationships.  You will also have to use WinLoadMenu in 
  1722.  your application, to create a menu bar for the window, because you cannot 
  1723.  create menus using the Dialog Editor. 
  1724.  
  1725.  The .RES file is an object-format compiled version of the .DLG file, created 
  1726.  when the Dialog Editor compiles the dialogs. The Dialog Editor uses the .RES 
  1727.  file as input on any subsequent edit of the same dialog.  This means that, if 
  1728.  you use a text editor to fine-tune a .DLG file, and you want subsequently to 
  1729.  re-edit the dialog using the Dialog Editor, you must first use the Resource 
  1730.  Compiler to generate a new .RES file from the .DLG file. 
  1731.  
  1732.  Your application can use either the .RES file output by the Dialog Editor or a 
  1733.  .RES file created from the .DLG file and the other resources. If your 
  1734.  application uses the .DLG file, it must be included by the resource script 
  1735.  file of your application. 
  1736.  
  1737.  The rcinclude statement includes the .DLG file created by the Dialog Editor; 
  1738.  for example: 
  1739.  
  1740.   rcinclude dbe.dlg /* Includes .DLG file */
  1741.  
  1742.  The corresponding .H file created by the Dialog Editor must also be included 
  1743.  in the .RC file. 
  1744.  
  1745.  Using OS/2-defined control windows, OS/2 draws and operates the controls 
  1746.  specified in the resource file for your application. Controls are windows and 
  1747.  can be used within any other window. 
  1748.  
  1749.  
  1750. ΓòÉΓòÉΓòÉ 5.4.20. Sample Dialog Template File ΓòÉΓòÉΓòÉ
  1751.  
  1752. The following dialog template is used for the dialog described in Adding 
  1753. Controls Example. 
  1754.  
  1755.             DLGINCLUDE 1 "DBE.H"
  1756.  
  1757.  
  1758.             DLGTEMPLATE mydialog LOADONCALL MOVEABLE DISCARDABLE
  1759.  
  1760.             BEGIN
  1761.  
  1762.                       DIALOG "Sample Dialog Box", mydialog, 11, 8, 170, 105,
  1763.                           FS_NOBYTEALIGN | FS_DLGBORDER | WS_VISIBLE |
  1764.                           WS_SAVEBITS, FCF_TITLEBAR
  1765.  
  1766.                       BEGIN
  1767.  
  1768.                                 CONTROL "Student Level:", id_null, -1, 94, 63, 9, WC_STATIC,
  1769.                                     SS_TEXT | DT_LEFT | DT_TOP | WS_GROUP | WS_VISIBLE
  1770.  
  1771.                                 CONTROL "Elementary", 258, 7, 82, 62, 11, WC_BUTTON,
  1772.                                     BS_RADIOBUTTON | WS_GROUP | WS_TABSTOP | WS_VISIBLE
  1773.  
  1774.                                 CONTROL "Intermediate", 259, 7, 67, 73, 9, WC_BUTTON,
  1775.                                     BS_RADIOBUTTON | WS_VISIBLE
  1776.  
  1777.                                 CONTROL "Advanced", 260, 7, 51, 52, 13, WC_BUTTON,
  1778.                                     BS_RADIOBUTTON | WS_VISIBLE
  1779.  
  1780.                                 CONTROL "Media", 261, 87, 48, 75, 54, WC_STATIC,
  1781.                                     SS_GROUPBOX | WS_GROUP | WS_VISIBLE
  1782.  
  1783.                                 CONTROL "Textbooks", 262, 97, 83, 60, 10, WC_BUTTON,
  1784.                                     BS_CHECKBOX | WS_TABSTOP | WS_VISIBLE
  1785.  
  1786.                                 CONTROL "Video", 263, 97, 68, 46, 10, WC_BUTTON,
  1787.                                     BS_CHECKBOX | WS_VISIBLE
  1788.  
  1789.                                 CONTROL "CBT", 264, 97, 53, 32, 10, WC_BUTTON,
  1790.                                     BS_CHECKBOX | WS_VISIBLE
  1791.  
  1792.                                 CONTROL "OK", 265, 7, 20, 38, 12, WC_BUTTON,
  1793.                                     BS_PUSHBUTTON | WS_GROUP | WS_TABSTOP | WS_VISIBLE
  1794.  
  1795.                                 CONTROL "Cancel", 266, 61, 20, 38, 12, WC_BUTTON,
  1796.                                     BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE
  1797.  
  1798.                                 CONTROL "Help", 267, 117, 20, 38, 12, WC_BUTTON,
  1799.                                     BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE
  1800.  
  1801.                       END
  1802.  
  1803.             END
  1804.  
  1805.  
  1806. ΓòÉΓòÉΓòÉ 6. Executable File Header Utility (EXEHDR) ΓòÉΓòÉΓòÉ
  1807.  
  1808. The Executable File Header Utility (EXEHDR) displays and modifies the contents 
  1809. of an executable-file header.  EXEHDR generates an Output listing showing the 
  1810. contents of the file header and information about each object or segment in the 
  1811. file.  Options are provided that let you change values in the file header. 
  1812.  
  1813. Uses of EXEHDR include: 
  1814.  
  1815.      Determining whether a file is an application or a dynamic link library 
  1816.      Viewing and changing the attributes set by the module definition file 
  1817.      Viewing the number and size of code and data segments. 
  1818.  
  1819.  You can use EXEHDR with DOS or OS/2 applications and dynamic-link libraries. 
  1820.  
  1821.  
  1822. ΓòÉΓòÉΓòÉ 6.1. Syntax ΓòÉΓòÉΓòÉ
  1823.  
  1824. EXEHDR [options] filename
  1825.  
  1826.  <options> 
  1827.       Options used to modify Output or change the file header. 
  1828.  
  1829.  <filename> 
  1830.       One or more names of applications or dynamic-link library files. 
  1831.  
  1832.       Regardless of options, EXEHDR always creates an Output listing of the 
  1833.       file header. 
  1834.  
  1835.  
  1836. ΓòÉΓòÉΓòÉ 6.1.1. Help ΓòÉΓòÉΓòÉ
  1837.  
  1838. To display EXEHDR help, type EXEHDR /? at the command prompt.  The appropriate 
  1839. copyright statement appears along with a brief list of EXEHDR options. 
  1840.  
  1841. Usage: EXEHDR [options] filename...
  1842. Valid options are:
  1843.   /?
  1844.   /HEAP:(0H - ffffH)
  1845.   /HELP
  1846.   /MAX:(0H - ffffH)
  1847.   /MIN:(0H - ffffH)
  1848.   /NEWFILES
  1849.   /NOLOGO
  1850.   /PMTYPE:(PM | VIO | NOVIO |
  1851.                  WINDOWAPI | WINDOWCOMPAT |
  1852.                  NOTWINDOWCOMPAT)
  1853.   /RESETERROR
  1854.   /STACK:(0H - ffffH)
  1855.   /VERBOSE
  1856.  
  1857.  
  1858. ΓòÉΓòÉΓòÉ 6.2. Options ΓòÉΓòÉΓòÉ
  1859.  
  1860. Usage Notes: 
  1861.  
  1862.      Option characters are not case sensitive: /R and /r are equivalent. 
  1863.      Options can be shortened to the fewest characters that uniquely identify 
  1864.       them.  The characters in brackets can be omitted: /N and /NOLOGO are 
  1865.       equivalent. 
  1866.      Although use of the minimum one-letter abbreviations is allowed, if a 
  1867.       future release has an additional option starting with the same letter, 
  1868.       the one-letter option will no longer be usable. 
  1869.  
  1870.  
  1871. ΓòÉΓòÉΓòÉ 6.2.1. Formats Affected by Options ΓòÉΓòÉΓòÉ
  1872.  
  1873. The EXEHDR options that can change executable files are MIN, MAX, STACK, 
  1874. PMTYPE, HEAP, RESETERROR, and NEWFILES. 
  1875.  
  1876. Executable headers are used by the operating system to determine 
  1877. characteristics of the executable file, such as stack size, entry point, number 
  1878. of objects (or segments), and so on. EXEHDR recognizes three different kinds of 
  1879. executable headers:  DOS (generated by DOS linker), OS/2 16-bit (generated by 
  1880. LINK), and OS/2 32-bit (generated by LINK386). 
  1881.  
  1882. An X in the following table indicates which option changes which executable 
  1883. header: 
  1884.  
  1885. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1886. ΓöéOption         ΓöéDOS            ΓöéOS/2 16-bit    ΓöéOS/2 32-bit    Γöé
  1887. Γöé               Γöé               Γöé(LINK)         Γöé(LINK386)      Γöé
  1888. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1889. ΓöéHEAP           Γöé               ΓöéX              ΓöéX              Γöé
  1890. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1891. ΓöéMAX            ΓöéX              Γöé               Γöé               Γöé
  1892. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1893. ΓöéMIN            ΓöéX              Γöé               Γöé               Γöé
  1894. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1895. ΓöéNEWFILES       Γöé               ΓöéX              Γöé               Γöé
  1896. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1897. ΓöéPMTYPE         Γöé               ΓöéX              ΓöéX              Γöé
  1898. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1899. ΓöéRESETERROR     Γöé               ΓöéX              ΓöéX              Γöé
  1900. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1901. ΓöéSTACK          ΓöéX              ΓöéX              Γöé               Γöé
  1902. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1903.  
  1904. For compatibility purposes, executable files generated by either of the OS/2 
  1905. link utilities include both a DOS header and an OS/2 header. For example, if 
  1906. you use /STACK on an executable generated by OS/2 LINK (16-bit), the DOS header 
  1907. and the OS/2 header will be changed. 
  1908.  
  1909.  
  1910. ΓòÉΓòÉΓòÉ 6.2.1.1. /HEA[P] ΓòÉΓòÉΓòÉ
  1911.  
  1912. Set Heap Allocation (/HEAP) 
  1913.  
  1914. Syntax:  /HEA[P]:nnnn 
  1915.  
  1916. This option sets the size of the local heap and is applicable to OS/2 
  1917. applications only. The field <nnnn> contains the local heap size in bytes. 
  1918.  
  1919. You can specify <nnnn> in decimal, octal, or hexadecimal radix using standard C 
  1920. language notation. 
  1921.  
  1922.  
  1923. ΓòÉΓòÉΓòÉ 6.2.1.2. /HEL[P] and /? ΓòÉΓòÉΓòÉ
  1924.  
  1925. Display Help (/HELP or /?) 
  1926.  
  1927. Syntax:  /HEL[P]   OR   /? 
  1928.  
  1929. This option displays a brief summary of EXEHDR syntax. 
  1930.  
  1931.  
  1932. ΓòÉΓòÉΓòÉ 6.2.1.3. /MA[X] ΓòÉΓòÉΓòÉ
  1933.  
  1934. Set Maximum Allocation (/MAX) 
  1935.  
  1936. Syntax:  /MA[X]:nnnn 
  1937.  
  1938. This option sets the maximum allocation of memory for the program. The field 
  1939. <nnnn> contains the maximum number of 16-byte paragraphs required to load and 
  1940. run the program. This value must be equal to or greater than the minimum 
  1941. allocation. 
  1942.  
  1943. Compare to /MI. 
  1944.  
  1945. The Maximum Allocation option is equivalent to the LINK386 /CP option. 
  1946.  
  1947. Refer to Set Max Allocation Space (/CP) (in LINK386 Help) 
  1948.  
  1949. You can specify <nnnn> in decimal, octal, or hexadecimal radix using standard C 
  1950. language notation. 
  1951.  
  1952.  
  1953. ΓòÉΓòÉΓòÉ 6.2.1.4. /MI[N] ΓòÉΓòÉΓòÉ
  1954.  
  1955. Set Minimum Allocation (/MIN) 
  1956.  
  1957. Syntax:  /MI[N]:nnnn 
  1958.  
  1959. This option sets the minimum allocation of memory for the program. The field 
  1960. <nnnn> contains the minimum number of 16-byte paragraphs required to load and 
  1961. run the program. This value must be equal to or less than the maximum 
  1962. allocation. 
  1963.  
  1964. Compare to /MA. 
  1965.  
  1966. You can specify <nnnn> in decimal, octal, or hexadecimal radix using standard C 
  1967. language notation. 
  1968.  
  1969.  
  1970. ΓòÉΓòÉΓòÉ 6.2.1.5. /NE[WFILES] ΓòÉΓòÉΓòÉ
  1971.  
  1972. New Files (/NEWFILES) 
  1973.  
  1974. Syntax:  /NE[WFILES] 
  1975.  
  1976. This option enables long file name support for OS/2 16-bit LINK files. OS/2 
  1977. 32-bit LINK386 files have long file name support. 
  1978.  
  1979.  
  1980. ΓòÉΓòÉΓòÉ 6.2.1.6. /NO[LOGO] ΓòÉΓòÉΓòÉ
  1981.  
  1982. Suppress Sign-On Banner (/NOLOGO) 
  1983.  
  1984. Syntax:  /NO[LOGO] 
  1985.  
  1986. This option suppresses the sign-on banner displayed by EXEHDR when it starts. 
  1987.  
  1988.  
  1989. ΓòÉΓòÉΓòÉ 6.2.1.7. /P[MTYPE] ΓòÉΓòÉΓòÉ
  1990.  
  1991. Set Application Type (/PMTYPE) 
  1992.  
  1993. Syntax:  /P[MTYPE]:type 
  1994.  
  1995. This option specifies the type of application.  It pertains only to OS/2 
  1996. applications.  The /PMTYPE option in EXEHDR is equivalent to either the NAME 
  1997. Statement in the module-definition file or the Name Application Type (/PM) in 
  1998. LINK386. 
  1999.  
  2000. A keyword in <type> is equivalent to a keyword in a NAME statement, as shown in 
  2001. the following list: 
  2002.  
  2003.  Field Keyword       Equiv. Keyword 
  2004.  
  2005.  PM                  WINDOWAPI 
  2006.  
  2007.  VIO                 WINDOWCOMPAT 
  2008.  
  2009.  NOVIO               NOTWINDOWCOMPAT 
  2010.  
  2011.  The NAME statement keyword is also accepted. 
  2012.  
  2013.  
  2014. ΓòÉΓòÉΓòÉ 6.2.1.8. /R[ESETERROR] ΓòÉΓòÉΓòÉ
  2015.  
  2016. Reset LINK386 Error (/RESETERROR) 
  2017.  
  2018. Syntax:  /R[ESETERROR] 
  2019.  
  2020. This option clears an error flag stored in OS/2 applications. The error flag is 
  2021. set by LINK386 when the link has unresolved external references or duplicate 
  2022. symbol definitions (any LINK386 error messages starting with L2xxx). 
  2023.  
  2024. OS/2 does not load the application if the error flag is set. This option allows 
  2025. you to attempt to run a program with LINK386 errors and is useful during 
  2026. application development. 
  2027.  
  2028.  
  2029. ΓòÉΓòÉΓòÉ 6.2.1.9. /S[TACK] ΓòÉΓòÉΓòÉ
  2030.  
  2031. Set Stack Allocation (/STACK) 
  2032.  
  2033. Syntax:  /S[TACK]:nnnn 
  2034.  
  2035. This option sets the size of the stack.  The field <nnnn> contains the stack 
  2036. size in bytes.  This option is equivalent to the Control Stack Size (/ST) (in 
  2037. LINK386 Help). 
  2038.  
  2039. You can specify <nnnn> in decimal, octal, or hexadecimal radix using standard C 
  2040. language notation. 
  2041.  
  2042.  
  2043. ΓòÉΓòÉΓòÉ 6.2.1.10. /V[ERBOSE] ΓòÉΓòÉΓòÉ
  2044.  
  2045. Display in Verbose Mode (/VERBOSE) 
  2046.  
  2047. Syntax:  /V[ERBOSE] 
  2048.  
  2049. This option displays the executable-file header in verbose mode. 
  2050.  
  2051.  
  2052. ΓòÉΓòÉΓòÉ 6.3. Output ΓòÉΓòÉΓòÉ
  2053.  
  2054. EXEHDR lists the current contents of the file header and information about each 
  2055. object (or segment) in the file. To redirect this output to a printer or disk 
  2056. file, use the operating system redirection operator. 
  2057.  
  2058. The output is in two parts: a Header Listing giving the contents of the file 
  2059. header; and an Object or Segment Listing giving attributes of all objects (or 
  2060. segments) in the file.  If the /VERBOSE option is specified, additional output 
  2061. is generated. 
  2062.  
  2063.  
  2064. ΓòÉΓòÉΓòÉ 6.3.1. Header Listing ΓòÉΓòÉΓòÉ
  2065.  
  2066. The header listing is comprised of the following fields: 
  2067.  
  2068.  <Module> Name of Application 
  2069.  
  2070.       This field lists the name of the application as specified in the NAME 
  2071.       statement of the module-definition file. 
  2072.  
  2073.       If no module definition was used to create the executable file, this 
  2074.       field displays the name assumed by default. 
  2075.  
  2076.       If a module definition was used to create the file, but the LIBRARY 
  2077.       statement appeared instead of the NAME statement (thus specifying a 
  2078.       dynamic-link library), the name of the library is given and EXEHDR uses 
  2079.       the word "Library" instead of "Module" to identify the field. 
  2080.  
  2081.  <Description> Description of Application 
  2082.  
  2083.       This field gives the contents, if any, of the DESCRIPTION statement of 
  2084.       the module-definition file used to create the file being examined. 
  2085.  
  2086.  <Data> Type of Automatic Data Object 
  2087.  
  2088.       This field indicates the type of automatic data segment in a program: 
  2089.       SHARED, NONSHARED, or NONE.  This type can be specified in a 
  2090.       module-definition file.  The defaults are NONSHARED for applications and 
  2091.       SHARED for dynamic-link libraries. 
  2092.  
  2093.  <Initial CS:IP> Program Starting Address 
  2094.  
  2095.       This field gives the program starting address (if an application is being 
  2096.       examined) or address of the initialization routine (if a dynamic-link 
  2097.       library is being examined). 
  2098.  
  2099.  <Initial SS:SP> Initial Stack Pointer 
  2100.  
  2101.       This field gives the value of the initial stack pointer. 
  2102.  
  2103.  <Extra Stack Allocation> Additional stack allocation 
  2104.  
  2105.       This field gives the value of the extra stack location. 
  2106.  
  2107.  <DGROUP> Automatic-Data-Object Number 
  2108.  
  2109.  
  2110. ΓòÉΓòÉΓòÉ 6.3.2. Object or Segment Listing ΓòÉΓòÉΓòÉ
  2111.  
  2112. The object listing is comprised of the following fields: 
  2113.  
  2114.  no.         Object index number, starting with 1, in decimal 
  2115.  
  2116.  type        Identification of the object as a code or data object 
  2117.  
  2118.              A code object is comprised of segments with class name ending in 
  2119.              CODE. All other objects are data objects. 
  2120.  
  2121.  address     Location, within the file, of the contents of the object (in 
  2122.              hexadecimal) 
  2123.  
  2124.  file        Size of the object (in bytes), as contained in the file (in 
  2125.              hexadecimal) 
  2126.  
  2127.  mem         Size of the object (in bytes), as it is stored in memory (in 
  2128.              hexadecimal) 
  2129.  
  2130.              If the value of this field is greater than the value of <file>, 
  2131.              the operating system pads the additional space with zero values at 
  2132.              load time. 
  2133.  
  2134.  flags       Object attributes 
  2135.  
  2136.              If the /VERBOSE option is not used, only nondefault attributes are 
  2137.              listed.  Attributes are given in the form specified in the 
  2138.              module-definition file. 
  2139.  
  2140.  
  2141. ΓòÉΓòÉΓòÉ 6.3.3. Output Example ΓòÉΓòÉΓòÉ
  2142.  
  2143. The following output is generated by EXEHDR for the executable file 
  2144. LINK386.EXE: 
  2145.  
  2146. Module:                    LINK386
  2147. Description:               Operating System/2 32-bit LX Linker
  2148. Data:                      NONSHARED
  2149. Initial CS:IP:            seg   2 offset 6c78
  2150. Initial SS:SP:            seg   4 offset 0000
  2151. Extra stack allocation:    4000 bytes
  2152. DGROUP:                    seg   4
  2153.  
  2154. no. type address  file  mem   flags
  2155.   1 CODE 00006000 0f7d6 0f7d7
  2156.   2 CODE 00015a00 08e40 08e40
  2157.   3 DATA 0001ea00 02865 02865
  2158.   4 DATA 00021400 02337 08bd0
  2159.  
  2160.  
  2161. ΓòÉΓòÉΓòÉ 6.3.4. Verbose Output ΓòÉΓòÉΓòÉ
  2162.  
  2163. When you specify the /VERBOSE option, EXEHDR generates additional output: 
  2164.  
  2165.      DOS-specific header information. All OS/2 executable files have a DOS 
  2166.       header, whether bound or not.  If the program is not bound, the DOS 
  2167.       portion typically consists of a stub that simply terminates the program. 
  2168.  
  2169.      OS/2-specific header information. The object-table display in verbose 
  2170.       mode is described below. 
  2171.  
  2172.      File addresses and lengths of the various tables in the executable file. 
  2173.       For each table, the following is generated: 
  2174.  
  2175.         -  Name of the table 
  2176.         -  Address of the table within the file 
  2177.         -  Length of the table in hexadecimal radix 
  2178.         -  Length of the table in decimal radix 
  2179.  
  2180.      Object table with complete attributes, not just the nondefault 
  2181.       attributes. The /VERBOSE option displays two additional attributes: 
  2182.  
  2183.         -  The RELOCS attribute is displayed for each object that has address 
  2184.            relocations. Relocations occur in each object that references 
  2185.            objects in other objects or makes dynamic-link references. 
  2186.         -  The ITERATED attribute is displayed for each object that has 
  2187.            iterated data. Iterated data consist of a special code that packs 
  2188.            repeated bytes. 
  2189.  
  2190.      Run-time relocations and fixups. 
  2191.  
  2192.      All exported entry points. 
  2193.  
  2194.  
  2195. ΓòÉΓòÉΓòÉ 7. Font Editor ΓòÉΓòÉΓòÉ
  2196.  
  2197. You can use the OS/2 Font Editor to design and save your own fonts for use in 
  2198. applications. 
  2199.  
  2200. A font is a set of alphanumeric characters, punctuation marks, and other 
  2201. symbols that share a common typeface design and line weight. An application 
  2202. loads a font from a dynamic-link library file (.DLL file). 
  2203.  
  2204. The Font Editor allows you to edit an enlarged version of each character in an 
  2205. editing window, using the mouse to switch the enlarged representation of pels 
  2206. to black or white. 
  2207.  
  2208. You can change a series of pels by dragging the mouse pointer through them 
  2209. while holding down the mouse button. An enlarged scale version of the character 
  2210. is shown in a viewing window to the right of the edit window. 
  2211.  
  2212.  
  2213. ΓòÉΓòÉΓòÉ 7.1. Using the Font Editor ΓòÉΓòÉΓòÉ
  2214.  
  2215. To run the Font Editor, select Font Editor from the PM Development Tools 
  2216. folder. 
  2217.  
  2218. Select one of the options in the File menu to open a new or existing font. The 
  2219. letter A appears in both the editing and viewing windows. The rest of the font 
  2220. appears in the character selection scroll box at the bottom of the Font Editor 
  2221. window. 
  2222.  
  2223. To edit any other character in the font, select it from the character selection 
  2224. scroll box.  The character appears in the editing and viewing windows. 
  2225.  
  2226. Font Editing Functions 
  2227.  
  2228.       Functions for defining fonts are found on the Header menu. 
  2229.  
  2230.       Functions for editing character width are found on the Width and Shift 
  2231.       menus. 
  2232.  
  2233.  
  2234. ΓòÉΓòÉΓòÉ 7.1.1. Defining Fonts ΓòÉΓòÉΓòÉ
  2235.  
  2236. Use the Header menu to define the typestyle that you want to create: 
  2237.  
  2238.      Select Naming to specify the identification details such as the type-face 
  2239.       name. 
  2240.  
  2241.      Select General to specify spacing (fixed or proportional), type face 
  2242.       style, line width, and type weight. 
  2243.  
  2244.      Select Sizes to specify the font character dimensions. 
  2245.  
  2246.      Select Relations to specify the position of characters. 
  2247.  
  2248.      Select Definition to change character spacing in a proportional font. 
  2249.  
  2250.  
  2251. ΓòÉΓòÉΓòÉ 7.1.2. Editing Character Width ΓòÉΓòÉΓòÉ
  2252.  
  2253. The Width and Shift menus allow you to change the width of individual 
  2254. characters. 
  2255.  
  2256. The Width Menu 
  2257.  
  2258. Use the Width menu to alter the width of a single character. This menu is 
  2259. enabled only when you are editing a proportional space font. You can make a 
  2260. character wider or narrower by adding or deleting columns of pels from the 
  2261. right, the left, or both sides. You may also use the Set Character Increment 
  2262. option to set the width of a character. On-line help panels describe how to 
  2263. perform these functions. 
  2264.  
  2265. The Shift Menu 
  2266.  
  2267. Use the Shift menu to insert a one-pel-wide row or column into (or delete from) 
  2268. the character that you are editing. When you select shift, the pointer becomes 
  2269. a flat horizontal or vertical bar when inside the edit window.  This enables 
  2270. you to position it exactly where you want the operation to take place. 
  2271.  
  2272. To cancel a shift you have selected before execution, select Cancel Choice. 
  2273.  
  2274.  
  2275. ΓòÉΓòÉΓòÉ 7.1.3. Font Resource Files ΓòÉΓòÉΓòÉ
  2276.  
  2277. The Font Editor creates a file with a .FNT extension. The .FNT file is not 
  2278. referred to in the same resource file as other resources. 
  2279.  
  2280. Instead, it has its own resource file that contains a single-line statement 
  2281. that has a similar format to the ICON, POINTER, and BITMAP statements, for 
  2282. example: 
  2283.  
  2284. FONT  101      myfont.fnt     /* Font */
  2285.  
  2286. The FONT keyword identifies the resource type. 
  2287.  
  2288. The resource type is followed by an integer identifier that is used by the 
  2289. application to identify the resource. The integer is used as a parameter to the 
  2290. WinCreateStdWindow call. You cannot use a symbolic name for a font. 
  2291.  
  2292. The integer identifier can be followed by loading and memory options. Again, 
  2293. the example lets them default. 
  2294.  
  2295. The last part of the statement is the file name of the resource created by the 
  2296. Font Editor. A full path name must be given if it is not in the current 
  2297. directory. 
  2298.  
  2299. Producing a font file uses a process similar to binding resources to an .EXE 
  2300. file. You bind one or more .FNT files to a dummy .DLL, to produce a file 
  2301. containing the font or fonts. The final file should have the extension .FON. 
  2302.  
  2303. The .FON file created by the process is installed on the system and becomes a 
  2304. public font, a font that can be used by any application in the system. 
  2305.  
  2306. A font not installed on the system is called a private font. Before your 
  2307. application can use the font, your application must use GpiLoadFonts to load 
  2308. the .FON file. 
  2309.  
  2310.  
  2311. ΓòÉΓòÉΓòÉ 8. Forwarded Entry Point (FWDSTAMP) ΓòÉΓòÉΓòÉ
  2312.  
  2313. FWDSTAMP adds entry points, called forwarders, to a dynamic link library file 
  2314. (.DLL). Forwarders point to API functions or other exported code or data. They 
  2315. contain an import reference so that the final target address of the forwarded 
  2316. entry is contained in a different module. A forwarder might be called an 
  2317. imported export. 
  2318.  
  2319. When a file has a fix-up to a forwarded entry point, the loader resolves that 
  2320. fix-up to the address of the entry point that the forwarder imports, by 
  2321. traversing the chain of forwarders until the end of the chain (a nonforwarded 
  2322. export) is reached.  All forwarders are implicitly exported. 
  2323.  
  2324. The imported entry point that a forwarder refers to may itself be another 
  2325. forwarder. The loader will process a chain of forwarders until a nonforwarder 
  2326. entry point is encountered. 
  2327.  
  2328. There is no run-time cost to forwarders; however, there is a slight load-time 
  2329. cost as the loader resolves forwarder chains with their final addresses. 
  2330.  
  2331.  
  2332. ΓòÉΓòÉΓòÉ 8.1. Using Forwarders ΓòÉΓòÉΓòÉ
  2333.  
  2334. You use forwarders to combine several DLLs into one without having to relink 
  2335. old applications. For example, if MOUCALLS and VIOCALLS were combined into a 
  2336. single DLL called NEWLIB.DLL, then MOUCALLS and VIOCALLS could be replaced with 
  2337. special DLLs containing forwarders to NEWLIB.DLL. 
  2338.  
  2339. Important Notes 
  2340.  
  2341.      FWDSTAMP parses only the IMPORTS and EXPORTS section of the module 
  2342.       definition file.  FWDSTAMP does not verify the syntax of the other 
  2343.       sections. 
  2344.  
  2345.      When exported names already exist in the input file, their attributes are 
  2346.       kept, such as resident or nonresident names table, and ordinal numbers. 
  2347.       Any new conflicting attributes are ignored. 
  2348.  
  2349.      If there is no exported name, FWDSTAMP adds the one defined by the 
  2350.       EXPORTS statement in the module definition file. 
  2351.  
  2352.  
  2353. ΓòÉΓòÉΓòÉ 8.1.1. Starting FWDSTAMP ΓòÉΓòÉΓòÉ
  2354.  
  2355. You can start FWDSTAMP and specify all input from the command line.  An example 
  2356. of the syntax follows: 
  2357.  
  2358.    FWDSTAMP [options] infile deffile outfile
  2359.  
  2360.  [options]   Specifies one of the following: 
  2361.  
  2362.              /?               Displays FWDSTAMP help panel. 
  2363.  
  2364.              /V               Increases the level of information FWDSTAMP 
  2365.                               should output. 
  2366.  
  2367.  infile      Specifies the name of the dynamic link library file that LINK386 
  2368.              created.  Use the file-name extension of DLL. 
  2369.  
  2370.  deffile     Specifies the name of the module definition file (.DEF) that 
  2371.              contains the forwarders. (See Example). 
  2372.  
  2373.  outfile     Specifies the name of the .DLL file that will contain the added 
  2374.              forwarders. 
  2375.  
  2376.  
  2377. ΓòÉΓòÉΓòÉ 8.1.2. Example ΓòÉΓòÉΓòÉ
  2378.  
  2379. Forwarders are specified in the module definition file so that an exported 
  2380. name, which is also imported, is a forwarder. For example: 
  2381.  
  2382.         IMPORTS
  2383.             VIOMODEWAIT=NEWLIB.123
  2384.         EXPORTS
  2385.             VIOMODEWAIT @ 25
  2386.  
  2387. In the example, a forwarder entry point for VIOMODEWAIT is created and contains 
  2388. an import reference to NEWLIB.123. 
  2389.  
  2390.  
  2391. ΓòÉΓòÉΓòÉ 9. Icon Editor ΓòÉΓòÉΓòÉ
  2392.  
  2393. The Icon Editor lets you create your own art (icons, pointers, and bit maps) 
  2394. and save them for use by applications. 
  2395.  
  2396. Icons, pointers, and bit maps produced by the Icon Editor are graphic symbols 
  2397. comprised of pels (also known as pixels) in any of the following display 
  2398. states: 
  2399.  
  2400.      Black 
  2401.      White 
  2402.      Color 
  2403.      Screen (background color) 
  2404.      Inverse screen (inverse of background color) 
  2405.  
  2406.  An application can use an icon to represent a minimized standard window.  For 
  2407.  example, an application that lists telephone numbers could use a telephone 
  2408.  icon when minimized.  An application can also use icons as warning symbols in 
  2409.  message boxes (for example, an exclamation mark or an upraised hand). 
  2410.  
  2411.  An application can associate a pointer with the mouse or similar pointing 
  2412.  device, so that the user can move the pointer around the screen, to select 
  2413.  controls or text.  A pointer could also be used in an interactive graphics 
  2414.  application to draw graphics on the screen. For example, a free-hand graphics 
  2415.  drawing application could use a pencil shape to represent the pointer. 
  2416.  
  2417.  
  2418. ΓòÉΓòÉΓòÉ 9.1. Using the Icon Editor ΓòÉΓòÉΓòÉ
  2419.  
  2420. To run the Icon Editor, select the Development Tools folder and then select 
  2421. Icon Editor. 
  2422.  
  2423. The Icon Editor display consists of three parts: the information panel, the 
  2424. palette window, and the editing window. 
  2425.  
  2426. The information panel at the top of the Icon Editor window displays the 
  2427. following information: 
  2428.  
  2429.      A picture of a two-button mouse, showing the colors currently selected 
  2430.       for each button 
  2431.  
  2432.      An actual-size image of the current figure that you are editing 
  2433.  
  2434.      The status area, showing the following: 
  2435.  
  2436.         -  Size (defined as 32 x 32 for icons and pointers; user-defined for 
  2437.            bit maps) 
  2438.         -  Pen location 
  2439.         -  Pen size (from 1 x 1 to 9 x 9) 
  2440.         -  Hotspot (for icons and pointers, but not bit maps) 
  2441.         -  Figure type (icon, pointer, or bit map) 
  2442.         -  Form name 
  2443.  
  2444.  The palette window, in the lower right corner, displays the colors that are 
  2445.  available for use during editing. The colors currently selected are marked 
  2446.  with frames. 
  2447.  
  2448.  The editing window is the largest part of your working area.  Use the mouse or 
  2449.  keyboard to move the pointer, clicking or dragging the pointer to paint the 
  2450.  enlarged representation of pels with the selected color. 
  2451.  
  2452.  
  2453. ΓòÉΓòÉΓòÉ 9.1.1. Creating a Figure ΓòÉΓòÉΓòÉ
  2454.  
  2455. The Edit menu includes the functions used to select an icon, pointer, or bit 
  2456. map for editing, and to save it after you are through. 
  2457.  
  2458. Selecting your icon, pointer, or bit map 
  2459.  
  2460.    1. To create a new icon, pointer, or bit map, select New from the File menu. 
  2461.       The New Figure pop-up window appears, prompting you for further 
  2462.       information. 
  2463.  
  2464.       Select the figure type:  Icon, Pointer, or Bit map. For a bit map you 
  2465.       must specify the width and height in pels. Select Enter. 
  2466.  
  2467.       You can also create new art by modifying or editing an existing art of 
  2468.       the same type. 
  2469.  
  2470.    2. To edit existing art, select Open from the File menu. You will be 
  2471.       prompted for a name. 
  2472.  
  2473.       Note:  Unless you have turned off Safe Prompting (which is described 
  2474.       under Setting Preferences) on the Options menu, you will be prompted to 
  2475.       save if you select Open or New while there is unsaved art on your screen. 
  2476.  
  2477.    3. If you started Iconedit from a command prompt and specified multiple 
  2478.       files, you can use the Next option on the File menu to select the next 
  2479.       file. 
  2480.  
  2481.       The Next option will be greyed out if you did not start from the command 
  2482.       line and specify multiple files. 
  2483.  
  2484.  Saving your icon, pointer, or bit map 
  2485.  
  2486.  To save your art, select either of the following: 
  2487.  
  2488.      Select Save to save it under its current file name. If this is new art, 
  2489.       you will be prompted for a name. 
  2490.  
  2491.      Select Save As to save the art under a different name. You will be 
  2492.       prompted for a new name. 
  2493.  
  2494.  
  2495. ΓòÉΓòÉΓòÉ 9.1.2. Editing Art ΓòÉΓòÉΓòÉ
  2496.  
  2497. To edit your art, use the functions of the Edit menu. 
  2498.  
  2499. Select Undo to restore the art to the way it was before the most recent editing 
  2500. operation. 
  2501.  
  2502. Four of the editing functions require that you first mark the area to be 
  2503. edited, using Select or Select All. 
  2504.  
  2505. If you choose Select, the cursor changes to a plus (+) inside a square. Hold 
  2506. the left mouse button down to anchor one corner, and then drag the mouse. 
  2507. Release the button to anchor the opposite corner of the rectangular area you 
  2508. want to edit. 
  2509.  
  2510. If you choose Select All, the entire figure is selected. 
  2511.  
  2512. Selected Edit Menu Functions 
  2513.  
  2514. The following functions all require that an area must first be selected: 
  2515.  
  2516.      Select Fill to fill the selected area with the current palette color. 
  2517.       For additional information, see Filling Areas With Color. 
  2518.  
  2519.      Select Cut to cut an area you would like to move or delete. 
  2520.  
  2521.      Select Copy to copy an area you would like to duplicate elsewhere in the 
  2522.       same file or in another file. 
  2523.  
  2524.      Select Paste to place an area you have marked with Cut or Copy.  Drag the 
  2525.       outlined area that you have marked to the place you would like to paste 
  2526.       it. 
  2527.  
  2528.      Select Clear to erase all drawing within an area you have selected and 
  2529.       leave transparent pels. If you have used Select All, this will clear your 
  2530.       entire icon, pointer, or bit map. 
  2531.  
  2532.      Select Stretch Paste to paste the clipboard contents into your art, 
  2533.       stretching and positioning to fit. 
  2534.  
  2535.      Select Flip Horizontal to flip the art on its horizontal axis, reversing 
  2536.       bottom and top. 
  2537.  
  2538.      Select Flip Vertical to flip the art on its vertical axis, reversing left 
  2539.       and right.  You can create a symmetrical drawing by copying one side of 
  2540.       the art to the other side, and then flipping one of them. 
  2541.  
  2542.      Select Circle to inscribe a circle or ellipse within the selected area. 
  2543.  
  2544.  
  2545. ΓòÉΓòÉΓòÉ 9.1.3. Using Options ΓòÉΓòÉΓòÉ
  2546.  
  2547. The choices on the Options menu enable you to test your art and vary your 
  2548. editing environment. To change an option, from the Options menu select: 
  2549.  
  2550.  Test 
  2551.       To test view the pointer or icon you are editing. The pointer or icon 
  2552.       will be displayed, actual size, as the pointer until you toggle back by 
  2553.       again selecting Test from the Options menu. 
  2554.  
  2555.  Grid 
  2556.       To superimpose a grid over the editing window. This can be useful when 
  2557.       you want to draw a symmetrical figure. Each cell of the grid represents 
  2558.       one pel in the figure. 
  2559.  
  2560.  X background 
  2561.       To make the transparent pels (where the background is visible) apparent 
  2562.       when editing an icon or pointer.  All screen or inverse screen colors 
  2563.       will be shown with an X.  This option does not apply to bit maps because 
  2564.       they have no transparent pels. 
  2565.  
  2566.  Draw Straight 
  2567.       To temporarily restrict your drawing to drawing straight vertical and 
  2568.       horizontal lines.  Even if you deviate from the horizontal row, a 
  2569.       horizontal line is produced when the mouse pointer is dragged across the 
  2570.       editing window.  Dragging the mouse up or down produces straight vertical 
  2571.       lines. 
  2572.  
  2573.  Changing Pen Shape 
  2574.       See Changing Pen Shape and Size 
  2575.  
  2576.  Changing Pen Size 
  2577.       See Changing Pen Shape and Size 
  2578.  
  2579.  Setting Preferences 
  2580.       See Setting Preferences 
  2581.  
  2582.  Defining a Hotspot 
  2583.       See Defining a Hotspot 
  2584.  
  2585.  
  2586. ΓòÉΓòÉΓòÉ 9.1.3.1. Changing Pen Shape and Size ΓòÉΓòÉΓòÉ
  2587.  
  2588. You can change the shape and size of the pen by using choices on the Options 
  2589. menu. 
  2590.  
  2591. Changing Pen Shape 
  2592.  
  2593. Before you select Pen Shape, you must first select the shape using the Select 
  2594. function on the Edit Menu. See Editing Art for information about Select. Then 
  2595. select Set Pen Shape on the Options menu. 
  2596.  
  2597. Changing Pen Size 
  2598.  
  2599. Select Pen size on the Options menu to specify how many pels the pointer paints 
  2600. at a time. You can select any of nine square pen sizes: 
  2601.  
  2602. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2603. Γöé 1x1       Γöé 4x4       Γöé 7x7       Γöé
  2604. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2605. Γöé 2x2       Γöé 5x5       Γöé 8x8       Γöé
  2606. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2607. Γöé 3x3       Γöé 6x6       Γöé 9x9       Γöé
  2608. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2609.  
  2610. Shortcut: Select a pen size by pressing Ctrl and the size, such as Ctrl+6 for a 
  2611. 6 x6 pen size. 
  2612.  
  2613.  
  2614. ΓòÉΓòÉΓòÉ 9.1.3.2. Setting Preferences ΓòÉΓòÉΓòÉ
  2615.  
  2616. To change your preferences, select Preferences from the Options menu.  Then 
  2617. select any of the following: 
  2618.  
  2619.  Safe Prompting 
  2620.       To be warned before destructive operations such as file overwrites. 
  2621.  
  2622.  Suppress Warnings 
  2623.       To suppress display of informational messages. 
  2624.  
  2625.  Save State on Exit 
  2626.       To save settings for your next session. 
  2627.  
  2628.  Display Status Area 
  2629.       To toggle on and off the picture of the mouse and art from the status 
  2630.       area. 
  2631.  
  2632.  Reset Options and Modes 
  2633.       To deselect the following items: 
  2634.  
  2635.            Select 
  2636.            Hotspot 
  2637.            Color Fill 
  2638.            Find Color The palette will not be reset. 
  2639.  
  2640.  
  2641. ΓòÉΓòÉΓòÉ 9.1.3.3. Defining a Hotspot ΓòÉΓòÉΓòÉ
  2642.  
  2643. The Hotspot is the pel where mouse input for an icon or pointer is directed. 
  2644. The default hotspot location is 16 x 16, the center of the icon or pointer. 
  2645. Bit maps do not have hotspots. 
  2646.  
  2647. Select Hotspot from the Options menu to designate this pel. The cursor changes 
  2648. shape, and the screen coordinates of the current hotspot are displayed in the 
  2649. information window. When you click on a new hotspot, the screen coordinates of 
  2650. the new hotspot are displayed. 
  2651.  
  2652. Select Hotspot again to return to editing. 
  2653.  
  2654. When an application uses WinQueryPointerPos to query the screen position of a 
  2655. pointer, the OS/2 operating system returns the coordinates of the pointer hot 
  2656. spot. 
  2657.  
  2658.  
  2659. ΓòÉΓòÉΓòÉ 9.1.3.4. Selecting Colors ΓòÉΓòÉΓòÉ
  2660.  
  2661. Use the Palette to select a new drawing color, using the left or right mouse 
  2662. button. 
  2663.  
  2664. The currently selected color for the right mouse button is framed on the 
  2665. palette in red; the color for the left mouse button is framed in green. The 
  2666. currently selected colors for both mouse buttons are also displayed at the left 
  2667. side of the status area. 
  2668.  
  2669. Changing Palettes or Palette Colors 
  2670.  
  2671. To change palettes or palette colors, select the Palette menu.  On the Palette 
  2672. menu, you can: 
  2673.  
  2674.      Select New to create a new palette.  The default palette will appear for 
  2675.       you to edit. 
  2676.  
  2677.      Select Open to open an existing palette. 
  2678.  
  2679.      Select Save to save your current palette. If it is a new palette, you 
  2680.       will be prompted for a name. 
  2681.  
  2682.      Select Save As to save the palette under a different name. You will be 
  2683.       prompted for a new name. 
  2684.  
  2685.      Select Edit Color to edit a color in your palette. 
  2686.  
  2687.      Select Swap colors to swap the colors of the left and right mouse 
  2688.       buttons.  A submenu will appear, asking whether you want to preserve 
  2689.       these colors in your art.  Unless you choose Preserve Figure, the colors 
  2690.       in your art will be changed accordingly. 
  2691.  
  2692.      Select Set default palette to save the existing palette as your default 
  2693.       palette. 
  2694.  
  2695.  
  2696. ΓòÉΓòÉΓòÉ 9.2. Editing Palette Colors ΓòÉΓòÉΓòÉ
  2697.  
  2698. You can change the colors that appear on your palette. To edit palette colors, 
  2699. follow these steps: 
  2700.  
  2701.    1. Select the color to be edited with the mouse. A frame appears around it 
  2702.       on the palette. 
  2703.  
  2704.    2. Select Edit color from the Palette menu. 
  2705.  
  2706.       Shortcuts: 
  2707.  
  2708.           Double-click on the color to be edited. 
  2709.           To select a color that you have already used in your art, use Find 
  2710.            color on the Tools menu. 
  2711.  
  2712.       The Edit color window will appear. 
  2713.  
  2714.    3. You can change the way you define palette colors by checking Dynamic 
  2715.       editing and Important and choosing between RGB and HSV terms. 
  2716.  
  2717.           Dynamic editing, when checked, will make your art change dynamically 
  2718.            as you edit individual colors, so that you can see how the changes 
  2719.            will affect your art. 
  2720.  
  2721.           Important, when checked, will require that the color be accurately 
  2722.            rendered, without dithering (approximating the color). 
  2723.  
  2724.           Every color can be described numerically in either RGB or HSV terms. 
  2725.  
  2726.            RGB          As proportions of primary colors red, blue, and green 
  2727.  
  2728.            HSV          In terms of hue, saturation, and value 
  2729.  
  2730.            To toggle between RGB and HSV, select the appropriate radio button. 
  2731.  
  2732.    4. Use the scroll bars to change RGB or HSV values, or change these numbers 
  2733.       from the keyboard. 
  2734.  
  2735.    5. Select OK to save the edited color. 
  2736.  
  2737.  
  2738. ΓòÉΓòÉΓòÉ 9.2.1. Filling Areas With Color ΓòÉΓòÉΓòÉ
  2739.  
  2740. There are two different ways to fill an area with color: 
  2741.  
  2742.      To fill an irregularly-shaped area with the current palette color, select 
  2743.       Color fill from the Tools menu. 
  2744.  
  2745.       After you click on a specific pel, all adjoining areas that are the same 
  2746.       color as that pel will be colored with the selected color. 
  2747.  
  2748.      To fill a previously-selected area with the current palette color, select 
  2749.       Fill from the Edit menu. You must first select an area. See Editing Art 
  2750.       for information about Select and Select All. 
  2751.  
  2752.  Note:  To select a color that you have already used in your art, use Find 
  2753.         color on the Tools menu. A question-mark-arrow cursor will appear. 
  2754.  
  2755.  Click on a specific pel of that color, and that color is selected. 
  2756.  
  2757.  
  2758. ΓòÉΓòÉΓòÉ 9.2.2. Creating Icons for Specific Displays ΓòÉΓòÉΓòÉ
  2759.  
  2760. Although the Icon Editor edits and saves a device-independent form of the icon, 
  2761. the Device menu enables you to create versions of the icon for specific display 
  2762. devices.  The Device menu displays a choice of three functions:  create a new 
  2763. device form, select an existing form, and delete a form. 
  2764.  
  2765. An independent form is automatically created when you create a new icon or 
  2766. pointer and all other forms are derived from it.  If you select any of the 
  2767. other device forms listed in the menu, a new form is created for the specified 
  2768. device.  The Custom option enables you to create an icon or pointer for any 
  2769. other device. 
  2770.  
  2771. Select List to view a list of all existing forms, including custom and standard 
  2772. forms.  Any item on this list can be selected and edited or deleted.  However, 
  2773. you must have at least one device-independent form.  Select Add in the list 
  2774. dialog to add a new device form. 
  2775.  
  2776. Several icon bit maps can be saved in a single icon resource; when the icon is 
  2777. saved, all versions are saved with it in a format that includes a device 
  2778. resolution tag for each version.  When the icon is loaded from a resource file, 
  2779. the display device resolution is matched against the device for which each 
  2780. device-dependent icon was intended. If a match is found, that icon is used.  If 
  2781. no match is found, the application uses the device-independent icon, which 
  2782. always exists. 
  2783.  
  2784. Figure files can contain any of the following forms to support multiple 
  2785. devices: 
  2786.  
  2787.      Independent 
  2788.      CGA (2 colors) 
  2789.      EGA (16 colors) 
  2790.      VGA (16 colors) 
  2791.      XGA/8514 (256 colors) 
  2792.      XGA/8514 (16 colors) 
  2793.      XGA/8514 Small Color Form (16 colors) 
  2794.      XGA/8514 Small BW Form 
  2795.      Custom 
  2796.  
  2797.  Device-dependent icons are icons that are designed for a particular display 
  2798.  resolution. 
  2799.  
  2800.  An application can display icons or bit maps in dialog boxes or windows. 
  2801.  
  2802.  The file name extension depends on the type of resource you are creating.  The 
  2803.  Icon Editor produces a file with any of the following extensions: 
  2804.  
  2805.       .ICO for icons 
  2806.       .PTR for pointers 
  2807.       .BMP for bit maps 
  2808.  
  2809.  The .ICO, .PTR, or .BMP files must be referred to in the resource script file 
  2810.  for your application.  The external files containing icons, pointers, and bit 
  2811.  maps are all referenced in the resource script file by single-line statements 
  2812.  that have a similar format.  For example: 
  2813.  
  2814.   ICON    ID_MAINWND myprog.ico   /* Icon    */
  2815.  
  2816.   POINTER ID_PTR     mypoint.ptr  /* Pointer */
  2817.  
  2818.   BITMAP  ID_BMP     mybtmp.bmp   /* bit map  */
  2819.  
  2820.  ICON, POINTER, and BITMAP keywords identify the resource type. 
  2821.  
  2822.  The resource type is followed by a symbolic name or integer identifier that is 
  2823.  used by your application to identify the resource.  For example, with ICON, 
  2824.  the ID_MAINWND identifier can be used by the application in the control data 
  2825.  parameter of the WinCreateWindow call (or as a parameter to the 
  2826.  WinCreateStdWindow call) that creates the frame of the main window of your 
  2827.  application. The OS/2 operating system then associates the icon with the main 
  2828.  window. 
  2829.  
  2830.  The symbolic name or identifier can be followed by any loading and memory 
  2831.  options. The options are not used in the example, as it lets the options 
  2832.  default. 
  2833.  
  2834.  The last part of the statement is the file name and file type of the resource 
  2835.  created by the Icon Editor.  A fully qualified path name must be given if the 
  2836.  file is not in the current directory.  An icon that it used for a minimized 
  2837.  application main window should have the same file name as the executable file 
  2838.  of the application. 
  2839.  
  2840.  
  2841. ΓòÉΓòÉΓòÉ 9.3. Using a Command Line ΓòÉΓòÉΓòÉ
  2842.  
  2843. If you start the Icon Editor from a command line, rather than from an icon, you 
  2844. have an additional option available. You can load more than one file at a time 
  2845. by specifying the files on the command line. For instance, the following 
  2846. command would load the two specified icons, a bit map, and a pointer: 
  2847.  
  2848. ICONEDIT Ruth.ico gurp.ico alex.bmp pamela.ptr 
  2849.  
  2850. If you specify multiple files when you start the Icon Editor from the command 
  2851. line, you can use the Next option on the File Menu to select the next file. 
  2852. This option is available only if you specify multiple files from the command 
  2853. line. 
  2854.  
  2855.  
  2856. ΓòÉΓòÉΓòÉ 10. Link for Object and Library Files (LINK386) ΓòÉΓòÉΓòÉ
  2857.  
  2858. LINK386 is used to combine object files and standard library files into a 
  2859. single file: an executable file, a dynamic-link library, or a device driver. 
  2860. The output file from LINK386 is not constrained to specific memory addresses. 
  2861. Thus, the operating system can load and execute this file at any convenient 
  2862. address. 
  2863.  
  2864. LINK386 Input 
  2865.  
  2866. LINK386 uses the following files as input: 
  2867.  
  2868.      One or more object files that are linked with any optional library files 
  2869.       to form the executable file. Object files usually have a .OBJ extension. 
  2870.  
  2871.       LINK386 accepts object files compiled or assembled for 8088, 80286, 
  2872.       80386, 80486, or PENTIUM* microprocessors. Object files must be in the 
  2873.       Object Module Format (OMF), which is based on the Intel* 8086 OMF, and 
  2874.       Tool Interface Standards Portable Formats Specification. 
  2875.  
  2876.      One or more library files.  The library files contain object modules that 
  2877.       are linked to the object files to form the executable file. Library files 
  2878.       usually have a .LIB extension. 
  2879.  
  2880.       Library files are used to resolve external references in your object 
  2881.       files. 
  2882.  
  2883.      A module definition file.  The module definition file provides 
  2884.       information to LINK386 about the executable file or dynamic link library 
  2885.       file it is creating.  The module definition file usually has a .DEF 
  2886.       extension. 
  2887.  
  2888.  LINK386 Output 
  2889.  
  2890.  LINK386 can produce dynamic-link libraries (.DLL) and device drivers (.SYS), 
  2891.  in addition to executable files (.EXE). For additional information, see Output 
  2892.  Files. 
  2893.  
  2894.  LINK386 displays all of its output messages on the standard output device. 
  2895.  
  2896.  LINK386 Features 
  2897.  
  2898.  LINK386 creates the executable file and map file in the current directory 
  2899.  unless you enter an explicit path. 
  2900.  
  2901.  LINK386 looks in several locations for object, library, and module-definition 
  2902.  files. See Where LINK386 Looks for Files. 
  2903.  
  2904.  File names are not case sensitive; for example, abc.exe and ABC.EXE refer to 
  2905.  the same file. 
  2906.  
  2907.  If you enter a file name without an extension, LINK386 adds a Default Filename 
  2908.  Extension that depends on the type of file expected. 
  2909.  
  2910.  If you leave a field blank (but define the field with a comma), LINK386 uses a 
  2911.  default for the field.  If you end the LINK386 command with a semicolon (;), 
  2912.  LINK386 uses Filename Defaults for all remaining fields. 
  2913.  
  2914.  If you do not give all file names or do not end the command line with a 
  2915.  semicolon, LINK386 prompts you for the omitted files. 
  2916.  
  2917.  
  2918. ΓòÉΓòÉΓòÉ 10.1. Starting LINK386 ΓòÉΓòÉΓòÉ
  2919.  
  2920. Some commands and applications call LINK386 for you, or you can run LINK386 by 
  2921. typing LINK386 at the operating-system prompt. Supply input to LINK386 by any 
  2922. of three methods: 
  2923.  
  2924.      Enter the input directly on the command line. 
  2925.  
  2926.      Respond to prompts generated by LINK386. 
  2927.  
  2928.      Put your input in a response file, and enter the file name on the command 
  2929.       line. 
  2930.  
  2931.  You can press Ctrl+C at any time to interrupt LINK386 and return to the 
  2932.  operating system. 
  2933.  
  2934.  To display LINK386 help, type LINK386 /? at the prompt. A copyright statement 
  2935.  appears along with a list of valid LINK386 options. 
  2936.  
  2937.  
  2938. ΓòÉΓòÉΓòÉ 10.1.1. Syntax ΓòÉΓòÉΓòÉ
  2939.  
  2940.       LINK386 [options] objfiles [,exefile, mapfile, libraries, deffile] 
  2941.  
  2942.       OR 
  2943.  
  2944.       LINK386 @responsefile 
  2945.  
  2946.  SYNTAX DEFINITIONS 
  2947.  
  2948.  The LINK386 command line includes the following fields: 
  2949.  
  2950.  <options> 
  2951.       Options modifying actions of LINK386. Options can appear anywhere on the 
  2952.       command line except immediately after the commas used to separate fields. 
  2953.       See Options and Using LINK386 Options. 
  2954.  
  2955.  <Object Files> 
  2956.       Object files to be linked. Separate multiple file names by plus (+) or 
  2957.       space characters. At least one name must be entered. Library files can 
  2958.       also be entered. See Entering Library Files as Object Files. 
  2959.  
  2960.  <exefile> 
  2961.       Output of file.  LINK386 produces either an executable file, a 
  2962.       dynamic-link library, or a device driver. 
  2963.  
  2964.  <mapfile> 
  2965.       Map file created that lists modules in <exefile>. Use the /M option to 
  2966.       include public symbols in this file. Enter NUL if you do not want a map 
  2967.       file. See List Public Symbols (/M). 
  2968.  
  2969.  <libraries> 
  2970.       Standard or import (not dynamic-link) libraries to be used in resolving 
  2971.       external references.  Separate multiple file names by plus (+) or space 
  2972.       characters. Some libraries are searched by default. You can also specify 
  2973.       a path to a directory -- LINK386 will search for libraries in a path 
  2974.       specified on the <libraries> line before searching directories given by 
  2975.       the LIB environment variable. See Linking with an Import Library, Default 
  2976.       Libraries and Specifying Library Directories. 
  2977.  
  2978.  <deffile> 
  2979.       Module definition file. 
  2980.  
  2981.  SYNTAX EXAMPLES 
  2982.  
  2983.  The following command links the object files FUN.OBJ, TEXT.OBJ, TABLE.OBJ, and 
  2984.  CARE.OBJ. LINK386 searches for unresolved external references in the library 
  2985.  file XLIB.LIB and in the default libraries. By default, the executable file is 
  2986.  named FUN.EXE. LINK386 also produces a map file, FUNLIST.MAP. 
  2987.  
  2988.     LINK386 FUN+TEXT+TABLE+CARE, ,FUNLIST, XLIB.LIB;
  2989.  
  2990.  The following command produces a map file named FUN.MAP because a comma 
  2991.  appears as a placeholder for <mapfile>. 
  2992.  
  2993.     LINK386 FUN,,;
  2994.  
  2995.  The next pair of command lines do not produce a map file because commas do not 
  2996.  appear as placeholders for <mapfile>. 
  2997.  
  2998.   LINK386 FUN,;
  2999.   LINK386 FUN;
  3000.  
  3001.  The following command links the files MAIN.OBJ, GETDATA.OBJ, and PRINTIT.OBJ 
  3002.  into an executable file named MAIN.EXE. A map file named MAIN.MAP is also 
  3003.  produced. 
  3004.  
  3005.     LINK386 MAIN+GETDATA+PRINTIT, , MAIN;
  3006.  
  3007.  The following command links GETDATA.OBJ and PRINTIT.OBJ into an OS/2 
  3008.  dynamic-link library.  MODDEF.DEF must contain a LIBRARY statement to produce 
  3009.  the dynamic-link library. 
  3010.  
  3011.   LINK386 GETDATA+PRINTIT,GETDATA.DLL, , MODDEF
  3012.  
  3013.  
  3014. ΓòÉΓòÉΓòÉ 10.1.2. Object Files ΓòÉΓòÉΓòÉ
  3015.  
  3016. LINK386 accepts object files compiled or assembled for the 8088, 80286, 
  3017. 80386,80486 or PENTIUM microprocessor. LINK386 also accepts standard library 
  3018. files. 
  3019.  
  3020.  
  3021. ΓòÉΓòÉΓòÉ 10.1.3. Output Files ΓòÉΓòÉΓòÉ
  3022.  
  3023. LINK386 Can Produce Three Types of Output Files 
  3024.  
  3025.      Executable (.EXE) files that run under OS/2 protected mode 
  3026.  
  3027.       LINK386 produces an executable file whenever you specify a 
  3028.       module-definition file containing a NAME Statement. The module definition 
  3029.       file should not have a LIBRARY Statement, VIRTUAL DEVICE Statement, or 
  3030.       PHYSICAL DEVICE Statement; otherwise, a dynamic-link library or device 
  3031.       driver is produced, as described below. 
  3032.  
  3033.      Dynamic-link library (.DLL) files 
  3034.  
  3035.       A dynamic-link library is produced whenever you specify a 
  3036.       module-definition file containing a LIBRARY statement. 
  3037.  
  3038.      Device driver (.SYS) files 
  3039.  
  3040.       A virtual or physical device driver is produced whenever you specify a 
  3041.       module-definition file containing the VIRTUAL DEVICE or PHYSICAL DEVICE 
  3042.       statements. 
  3043.  
  3044.  
  3045. ΓòÉΓòÉΓòÉ 10.1.4. Prompts ΓòÉΓòÉΓòÉ
  3046.  
  3047. LINK386 prompts you if any fields have not been entered on the Syntax or in a 
  3048. response file. For each prompt, simply enter the same input that you would 
  3049. enter on the command line and press Enter. 
  3050.  
  3051.  Object Modules [.OBJ]: 
  3052.       <objfiles> 
  3053.  
  3054.  Run File [basename.EXE]: 
  3055.       <exefile> 
  3056.  
  3057.  List File [NUL.MAP]: 
  3058.       <mapfile> 
  3059.  
  3060.  Libraries [.LIB]: 
  3061.       <libraries> 
  3062.  
  3063.  Definitions File [NUL.DEF]: 
  3064.       <deffile> 
  3065.  
  3066.  Special Features 
  3067.  
  3068.      To extend input to a new line, type a plus sign (+) as the last character 
  3069.       on the current line. When the same prompt appears on a new line, you can 
  3070.       continue. Do not, however, split a file name across lines. 
  3071.  
  3072.      To select the default response to a prompt, press Enter. The next prompt 
  3073.       appears. 
  3074.  
  3075.      To select default responses to the current prompt and all remaining 
  3076.       prompts, enter a semicolon (;). Note that at least one object file must 
  3077.       be entered. 
  3078.  
  3079.      You can specify options anywhere on any response line, except before a 
  3080.       comma at the end of a line of characters. If you want to specify more 
  3081.       than one option, either group them at the end of a response, or specify 
  3082.       them at the end of several responses. Each option must begin with a slash 
  3083.       (/). 
  3084.  
  3085.  
  3086. ΓòÉΓòÉΓòÉ 10.1.5. Response Files ΓòÉΓòÉΓòÉ
  3087.  
  3088. A response file is a text file used to provide input to LINK386. To use 
  3089. response file input for LINK386, type 
  3090.  
  3091.   LINK386 @responsefile
  3092.  
  3093. The @ symbol tells LINK386 that responsefile is the name of a response file. If 
  3094. the file is not in the working directory, you must specify the path. 
  3095.  
  3096. The field <responsefile> specifies the name of a file containing the same input 
  3097. that would be entered on the command line or entered in response to LINK386 
  3098. prompts.  In this file, each response should appear on a separate line or be 
  3099. separated from other responses by a comma. 
  3100.  
  3101. To operate LINK386 using a response file, you must first create a file that 
  3102. contains the responses you want LINK386 to process. You can give the file any 
  3103. name, and create it with any text editor. 
  3104.  
  3105. Special Features: 
  3106.  
  3107.      You can begin using a response file at any point on the LINK386 Syntax or 
  3108.       at any LINK386 prompt. The response file should contain responses to all 
  3109.       remaining fields or prompts. 
  3110.  
  3111.      If the file does not contain responses for all the prompts, LINK386 
  3112.       displays the appropriate prompt and waits for you to supply a response. 
  3113.       End the response file with a semicolon. 
  3114.  
  3115.      You can use special characters in the response file the same way you 
  3116.       would use them in responses entered at the keyboard. For example, you can 
  3117.       extend input to a new line by using the plus sign (+) and choose default 
  3118.       responses for all remaining prompts by using a semicolon (;). 
  3119.  
  3120.      LINK386 displays prompts and the entries from the response file on the 
  3121.       screen. If the entry in the response file is not acceptable, LINK386 
  3122.       pauses and waits for you to enter an acceptable response. The "Run in 
  3123.       Batch Mode (/BAT)" disables the prompt. 
  3124.  
  3125.      Options can appear anywhere in the response file. 
  3126.  
  3127.  
  3128. ΓòÉΓòÉΓòÉ 10.1.5.1. Response File Example ΓòÉΓòÉΓòÉ
  3129.  
  3130. FUN TEXT TABLE CARE
  3131. /DEBUG /MAP
  3132. FUNLIST
  3133. GRAF.LIB
  3134.  
  3135. If the text file above were named FUN.LNK, the following command would use this 
  3136. file as a response file: 
  3137.  
  3138. LINK386 @FUN.LNK
  3139.  
  3140. This would cause LINK386 to do the following: 
  3141.  
  3142.      Link the four object modules FUN, TEXT, TABLE, and CARE into an 
  3143.       executable file named FUN.EXE 
  3144.  
  3145.      Generate the map file FUNLIST.MAP 
  3146.  
  3147.      Generate Debugging information 
  3148.  
  3149.      Include public symbols and addresses in the map file 
  3150.  
  3151.      Link any needed routines from the library file GRAF.LIB 
  3152.  
  3153.  The response file in the following example instructs LINK386 to generate an 
  3154.  executable file called FUN.EXE, and four object modules, FUN, SUN, RUN, and 
  3155.  GAMES. 
  3156.  
  3157.  If you specify the file name, FUNLIST, LINK386 will generate a map file named 
  3158.  FUNLIST.MAP.  Adding the /MAP option will cause LINK386 to include the public 
  3159.  symbols of the application in the map file. 
  3160.  
  3161.   fun+sun+run+game /map
  3162.   fun.exe
  3163.   funlist
  3164.   ;
  3165.  
  3166.  
  3167. ΓòÉΓòÉΓòÉ 10.1.6. Default Libraries ΓòÉΓòÉΓòÉ
  3168.  
  3169. Most compilers embed the names of needed libraries (called default libraries) 
  3170. in object files.  LINK386 searches these libraries. Because of this, you need 
  3171. to explicitly enter library names only in the following cases: 
  3172.  
  3173.      You want to use additional libraries. 
  3174.  
  3175.      You are using a library not in the current directory and not in a 
  3176.       directory specified by the LIB environment variable. See Where LINK386 
  3177.       Looks for Files. 
  3178.  
  3179.      You want to use a library other than the one specified in the object 
  3180.       file. 
  3181.  
  3182.  Explicitly entered libraries are always searched before default libraries.  If 
  3183.  an external reference is resolved by more than one library, the order of 
  3184.  libraries on the command line determines which library is used. 
  3185.  
  3186.  To ignore default libraries use the Ignore Default Libraries (/NOD). But be 
  3187.  careful - most compilers expect their object files to be linked with default 
  3188.  libraries. 
  3189.  
  3190.  
  3191. ΓòÉΓòÉΓòÉ 10.1.7. Entering Library Files as Object Files ΓòÉΓòÉΓòÉ
  3192.  
  3193. You can enter library files in the <objfiles> field.  Be sure to include the 
  3194. .LIB file name extension; otherwise, LINK386 assumes a .OBJ extension. 
  3195.  
  3196. With libraries entered in the <objfiles> field, LINK386 adds every module in 
  3197. the library to your output file.  With libraries entered in the <libraries> 
  3198. field, LINK386 adds only those required to resolve external references. 
  3199.  
  3200. The effect of entering a library this way is the same as if you had entered all 
  3201. of the library's module names into the <objfiles>field. 
  3202.  
  3203.  
  3204. ΓòÉΓòÉΓòÉ 10.1.7.1. Specifying Library Directories ΓòÉΓòÉΓòÉ
  3205.  
  3206. LINK386 searches additional locations for libraries using the drive name or 
  3207. path specification in the <libraries> field on the command line. 
  3208.  
  3209. You can specify up to 32 additional paths.  If you give more than 32 paths, 
  3210. LINK386 ignores the additional paths without displaying an error message. 
  3211.  
  3212.  
  3213. ΓòÉΓòÉΓòÉ 10.1.7.2. Where LINK386 Looks for Files ΓòÉΓòÉΓòÉ
  3214.  
  3215. When searching for an object, library, or module definition file, LINK386 looks 
  3216. in the following locations in this order: 
  3217.  
  3218.    1. The directory specified for the file if a path specification is included. 
  3219.       Default Libraries do not include path specifications. 
  3220.  
  3221.    2. The current directory. 
  3222.  
  3223.    3. Any directories entered on the command line. 
  3224.  
  3225.    4. Any directories given by the LIB environment variable. 
  3226.  
  3227.  If LINK386 cannot locate a file, it prompts you to enter the location. The 
  3228.  "Run in Batch Mode (/BAT)" disables these prompts. 
  3229.  
  3230.  
  3231. ΓòÉΓòÉΓòÉ 10.1.7.3. Library Search Example ΓòÉΓòÉΓòÉ
  3232.  
  3233. LINK386
  3234. Object Modules [.OBJ]: FUN TEXT TABLE CARE
  3235. Run File [FUN.EXE]:
  3236. List File [NUL.MAP]:
  3237. Libraries [.LIB]: C:\TESTLIB\ NEWLIBV3
  3238. Definitions File [NUL.DEF]:
  3239.  
  3240. This example links four object modules to create an executable file named 
  3241. FUN.EXE.  LINK386 searches NEWLIBV3.LIB before searching the default libraries 
  3242. to resolve references. 
  3243.  
  3244. To locate NEWLIBV3.LIB and the default libraries, LINK386 searches the 
  3245. following locations in this order: 
  3246.  
  3247.    1. The current directory 
  3248.  
  3249.    2. The C:\TESTLIB\ directory 
  3250.  
  3251.    3. The locations given by the LIB environment variable 
  3252.  
  3253.  
  3254. ΓòÉΓòÉΓòÉ 10.1.7.4. Filename Defaults ΓòÉΓòÉΓòÉ
  3255.  
  3256. If you do not enter a file name, LINK386 assumes a default: 
  3257.  
  3258.  <options> 
  3259.       No options 
  3260.  
  3261.  <objfiles> 
  3262.       None (This field is required.) 
  3263.  
  3264.  <exefile> 
  3265.       The base name of the first file in <objfiles> with the .EXE extension 
  3266.       added 
  3267.  
  3268.  <mapfile> 
  3269.       The base name in <exefile> with the .MAP extension added 
  3270.  
  3271.  <libraries> 
  3272.       No libraries 
  3273.  
  3274.  <deffile> 
  3275.       No module definition file 
  3276.  
  3277.  
  3278. ΓòÉΓòÉΓòÉ 10.1.7.5. Default Filename Extension ΓòÉΓòÉΓòÉ
  3279.  
  3280. If you do not enter an extension, LINK386 uses a default extension, depending 
  3281. on the type of file. 
  3282.  
  3283.  Object                   .OBJ 
  3284.  Executable               .EXE 
  3285.  Map                      .MAP 
  3286.  Standard Library         .LIB 
  3287.  Dynamic-Link Library     .DLL 
  3288.  Module Definition        .DEF 
  3289.  
  3290.  Overriding Default Extension 
  3291.  
  3292.  Any time you explicitly enter an extension, it overrides the default 
  3293.  extension.  To specify a file name without an extension, just enter a period 
  3294.  (.) after the file name. 
  3295.  
  3296.  
  3297. ΓòÉΓòÉΓòÉ 10.2. Options ΓòÉΓòÉΓòÉ
  3298.  
  3299. The following is a summary of LINK386 options: 
  3300.  
  3301.  /?                                 Display Help 
  3302.  /A[LIGNMENT]                       Align 
  3303.  /BAS[E]                            Base 
  3304.  /BAT[CH]                           Run in Batch Mode 
  3305.  /C[ODEVIEW]                        Prepare for Debugging 
  3306.  /DE[BUG]                           Prepare for Debugging 
  3307.  /DO[SSEG]                          Order Segments 
  3308.  /E[XEPACK]                         Exepack (You can add :1 or :2.) 
  3309.  /EXEPACK                           Exepack 
  3310.  /EXEPACK:1                         Exepack 
  3311.  /E:2                               Exepack 
  3312.  /E:1                               Exepack 
  3313.  /EXE:2                             Exepack 
  3314.  /EXEP                              Exepack 
  3315.  /F[ARCALLTRANSLATION]              Optimize Far Calls 
  3316.  /H[ELP]                            Display Help 
  3317.  /I[NFORMATION]                     Display Process Information 
  3318.  /L[INENUMBERS]                     Include Line Numbers 
  3319.  /M[AP]                             List Public Symbols 
  3320.  /NOD[EFAULTLIBRARYSEARCH]          Ignore Default Libraries 
  3321.  /NOE[XTDICTIONARY]                 Ignore Extended Dictionary 
  3322.  /NOF[ARCALLTRANSLATION]            Disable Far Optimization 
  3323.  /NOI[GNORECASE]                    Preserve Case Sensitivity 
  3324.  /NOL[OGO]                          Disable Sign-On Banner 
  3325.  /NON[ULLSDOSSEG]                   Order Segments without NULLs 
  3326.  /NOO[UTPUTONERROR]                 Does not produce <exefile> if an error 
  3327.                                     occurs during linking. 
  3328.  /NOS[ECTORALIGNCODE]               Disable Automatic Sector Alignment code. 
  3329.  /NOP[ACKCODE]                      Disable Code-Segment Packing 
  3330.  /PACKC[PACKCODE]                   Combine Contiguous Code 
  3331.  /PACKD[ATA]                        Combine Contiguous Data 
  3332.  /PAU[SE]                           Pause during Linking 
  3333.  /PM[TYPE]                          Name Application Type 
  3334.  /RU[NFROMVDM]                      Allow Execution From DOS Command Line 
  3335.  /SE[GMENTS]                        Set Max Number of Segments 
  3336.  /ST[ACK]                           Control Stack Size 
  3337.  /W[ARNFIXUP]                       Warn Fixup 
  3338.  
  3339.  Options Not Supported Under LINK386 
  3340.  
  3341.       /O[VERLAYINTERRUPT] 
  3342.       /CP[ARMAXALLOC] 
  3343.       /PADC[ODE] 
  3344.       /DS[ALLOCATE] 
  3345.       /PADD[ATA] 
  3346.       /Q[UICKLIB] 
  3347.       /HI[GH] 
  3348.       /T[INY] 
  3349.       /INC[REMENTAL] 
  3350.       /NOG[ROUPALIGN] 
  3351.  
  3352.  Specifying LINK386 Options 
  3353.  
  3354.  You can specify options anywhere on the response line, except before a comma 
  3355.  at the end of a line of characters.  If you want to specify more than one 
  3356.  option, either group them at the end of a response, or specify them at the end 
  3357.  of several responses.  Each option must begin with a forward slash (/). 
  3358.  
  3359.  
  3360. ΓòÉΓòÉΓòÉ 10.2.1. Using LINK386 Options ΓòÉΓòÉΓòÉ
  3361.  
  3362.    1. Options always begin with the slash character (/). 
  3363.  
  3364.    2. Options are not case sensitive.  For example, /de and /DE are equivalent. 
  3365.  
  3366.    3. You can specify options in either the short or long form.  The short form 
  3367.       is the shortest sequence of characters that uniquely identifies the 
  3368.       option.  The individual description of each option lists both forms with 
  3369.       the optional part enclosed in brackets.  For example, /BAT[CH] indicates 
  3370.       that either /BAT or /BATCH can be used. 
  3371.  
  3372.    4. Some linker options take numeric arguments.  You can enter numbers in 
  3373.       decimal, octal, or hexadecimal radix using standard C-language syntax. 
  3374.  
  3375.    5. You can also specify options in the LINK386 environment variable. 
  3376.  
  3377.    6. Although use of the minimum one-letter abbreviations is allowed, if a 
  3378.       future release has an additional option starting with the same letter, 
  3379.       the one-letter option will no longer be usable. 
  3380.  
  3381.  
  3382. ΓòÉΓòÉΓòÉ 10.2.2. Recommendations ΓòÉΓòÉΓòÉ
  3383.  
  3384. It is recommended that the ALIGN:2, BASE, FARCALLTRANSLATION, RUNFROMVDM, and 
  3385. EXEPACK:2 options be used when linking all executables.  This will compress 
  3386. them in size and improve their performance. 
  3387.  
  3388. If BASE is used with .EXE files, the /BASE:0x10000 option must be used.  Any 
  3389. other value will produce a warning. 
  3390.  
  3391.  
  3392. ΓòÉΓòÉΓòÉ 10.2.3. Entering Numeric Arguments ΓòÉΓòÉΓòÉ
  3393.  
  3394. Some LINK386 options and module statements take numeric arguments.  LINK386 
  3395. uses C-language syntax allowing you to specify numbers in any of the following 
  3396. forms: 
  3397.  
  3398.      Any number not prefixed with 0 or 0x is a decimal number. For example, 
  3399.       1234 is a decimal number. 
  3400.  
  3401.      Any number prefixed with 0 (but not 0x) is an octal number. For example, 
  3402.       01234 is an octal number. 
  3403.  
  3404.      Any number prefixed with 0x is a hexadecimal number. For example, 0x1234 
  3405.       is a hexadecimal number. 
  3406.  
  3407.  
  3408. ΓòÉΓòÉΓòÉ 10.2.4. Environment Variable ΓòÉΓòÉΓòÉ
  3409.  
  3410. You can use the LINK386 environment variable to cause certain options to be 
  3411. used each time you link.  LINK386 checks the environment variable for options 
  3412. if the variable exists. 
  3413.  
  3414. LINK386 expects to find options listed in the variable exactly as you would 
  3415. type them on the command line.  It does not accept other kinds of arguments; 
  3416. file names in the environment variable cause the following error message: 
  3417.  
  3418. unrecognized option
  3419.  
  3420. Each time you link, you can specify other options in addition to the ones 
  3421. specified in the LINK386 environment variable. If you type an option both on 
  3422. the Syntax and in the environment variable, the effect is the same as if the 
  3423. option were given once. 
  3424.  
  3425. Note:  A command line option overrides the effect of any environment-variable 
  3426. option that it conflicts with.  For example, the command line option /SE:512 
  3427. cancels the effect of the environment-variable option /SE:256. 
  3428.  
  3429. The only way to prevent an option in the environment variable from being used 
  3430. is to reset the environment variable itself. 
  3431.  
  3432.  
  3433. ΓòÉΓòÉΓòÉ 10.2.5. Environment Variable Example ΓòÉΓòÉΓòÉ
  3434.  
  3435. <SET LINK386=/NOI /SE:256 /DEBUG
  3436. <LINK386 TEST;
  3437. <LINK386 /NOD /DEBUG PROG;
  3438.  
  3439. In the example above, the file TEST.OBJ is linked with the options /NOI, 
  3440. /SE:256, and /DEBUG. The file PROG.OBJ is then linked with the option /NOD - in 
  3441. addition to /NOI, /SE:256, and /DEBUG. 
  3442.  
  3443.  
  3444. ΓòÉΓòÉΓòÉ 10.2.5.1. Alignment (/A) ΓòÉΓòÉΓòÉ
  3445.  
  3446. Syntax:  /A[LIGNMENT]:n 
  3447.  
  3448. This option directs LINK386 to set the alignment factor in the executable file 
  3449. to the number given, which must be a power of 2, from 2 to 32768. The default 
  3450. alignment is 512 bytes. Trailing zeroes are truncated to reduce the amount of 
  3451. data stored in a file. 
  3452.  
  3453. Each page starts at a location that is a multiple of n bytes from the beginning 
  3454. of the file.  For example, /A:16 would start pages at multiples of 16 bytes. 
  3455.  
  3456. Link386 produces pages that are a maximum of 4096 bytes in length. Alignment 
  3457. factors greater than 4096 will waste disk space. 
  3458.  
  3459.  
  3460. ΓòÉΓòÉΓòÉ 10.2.5.2. BASE (/BASE) ΓòÉΓòÉΓòÉ
  3461.  
  3462. Syntax: BASE:n 
  3463.  
  3464. Where n is a value rounded up to the nearest multiple of 64K Indicates that 
  3465. each object of the module has a preferred load address starting with object 1 
  3466. at this address, object 2 at the next available multiple of 64K, and so on. 
  3467. Internal relocation records are then applied using this addressing scheme. 
  3468.  
  3469. If the module's objects can be loaded beginning at this preferred address, then 
  3470. no load-time internal relocation records need be applied. 
  3471.  
  3472. If the module's objects cannot be loaded beginning at this preferred address, 
  3473. then the internal relocation records that have been retained in the file data 
  3474. will be applied. 
  3475.  
  3476. .EXE files may specify a base address, but it must be 64K.  If it isn't, a 
  3477. warning will be issued and a base address of 64K will be used anyway. This 
  3478. option provides the same support as the BASE module definition file statement. 
  3479.  
  3480.  
  3481. ΓòÉΓòÉΓòÉ 10.2.5.3. Run in Batch Mode (/BAT) ΓòÉΓòÉΓòÉ
  3482.  
  3483. Syntax:  /BAT[CH] 
  3484.  
  3485. By default, LINK386 prompts you for a new path name whenever it cannot find an 
  3486. object file or library it was directed to use. 
  3487.  
  3488. This option disables such prompting.  Instead, LINK386 generates an error or 
  3489. warning message, as appropriate, and leaves the external reference unresolved. 
  3490. The /BAT option also disables the display of the sign-on banner and the display 
  3491. of input from response files. 
  3492.  
  3493. This option is primarily used when LINK386 is called from a batch file or 
  3494. Description Files. 
  3495.  
  3496. Note:  This option does not affect prompts for Command Line Input. 
  3497.  
  3498.  
  3499. ΓòÉΓòÉΓòÉ 10.2.5.4. Prepare for Debugging (/C) ΓòÉΓòÉΓòÉ
  3500.  
  3501. Syntax:  /C[ODEVIEW] 
  3502.  
  3503. This option works exactly like the Prepare for Debugging (/DE) option. 
  3504.  
  3505. The /C option is used to prepare for debugging with any debugger. With this 
  3506. option, LINK386 imbeds symbolic data and line number information in the 
  3507. executable output file. 
  3508.  
  3509. You can run this executable file outside Debug; the debugging information in 
  3510. the file is ignored.  However, to reduce executable file size, use this option 
  3511. only for debugging.  Then you can link a separate version without the /C option 
  3512. after the program is debugged. 
  3513.  
  3514.  
  3515. ΓòÉΓòÉΓòÉ 10.2.5.5. Prepare for Debugging (/DE) ΓòÉΓòÉΓòÉ
  3516.  
  3517. Syntax:  /DE[BUG] 
  3518.  
  3519. The /DE option is used to prepare for debugging with any debugger.  With this 
  3520. option, LINK386 embeds symbolic data and line number information in the 
  3521. executable output file. 
  3522.  
  3523. You can run this executable file outside Debug; the debugging information in 
  3524. the file is ignored.  However, to reduce executable file size, use this option 
  3525. only for debugging.  Then you can link a separate version without the /DE 
  3526. option after the program is debugged. 
  3527.  
  3528.  
  3529. ΓòÉΓòÉΓòÉ 10.2.5.6. Order Segments (/DO) ΓòÉΓòÉΓòÉ
  3530.  
  3531. Syntax:  /DO[SSEG] 
  3532.  
  3533. This option is automatically enabled by a special object module record in many 
  3534. language libraries.  If you are linking to one of these libraries, you need not 
  3535. specify this option. 
  3536.  
  3537. The /DO option is also enabled by assembly modules that use the Macro Assembler 
  3538. directive .DOSSEG. 
  3539.  
  3540. This option forces segments to be ordered as follows (first to last): 
  3541.  
  3542.    1. All code segments 
  3543.  
  3544.    2. Far data segments 
  3545.  
  3546.    3. Near data (DGROUP) segments, in the following order: 
  3547.  
  3548.         a. Any segments of class BEGDATA (this class name is reserved) 
  3549.         b. Any segments not of class BEGDATA, BSS, or STACK 
  3550.         c. Segments of class BSS 
  3551.         d. Segments of class STACK 
  3552.  
  3553.  In addition, the /DO option causes LINK386 to do the following: 
  3554.  
  3555.      Initialize two special variables: 
  3556.  
  3557.             _edata = DGROUP : BSS
  3558.             _end = DGROUP : STACK
  3559.  
  3560.       The variables _edata and _end have special meanings for certain 
  3561.       compilers; avoid using these names in your programs.  Assembly-language 
  3562.       programs can refer to these variables, but should not change them. 
  3563.  
  3564.      Insert 16 null bytes at the beginning of the _TEXT segment (if this 
  3565.       segment is defined). 
  3566.  
  3567.  
  3568. ΓòÉΓòÉΓòÉ 10.2.5.7. Exepack (/E) ΓòÉΓòÉΓòÉ
  3569.  
  3570. Syntax:  /E[XEPACK] or /E[EXEPACK]:1 or /E[XEPACK]:2. 
  3571.  
  3572. EXEPACK causes pages of code and data in the file to be compressed. The OS/2 
  3573. Application Loader will automatically decompress these pages when the program 
  3574. is run. 
  3575.  
  3576. /EXEPACK:1 will use the compression algorithm that is compatible with OS/2 2.0, 
  3577. 2.1, and 2.11. 
  3578.  
  3579. /EXEPACK:2 will use a compression algorithm that is incompatible with OS/2 2.0, 
  3580. 2.1, and 2.11. 
  3581.  
  3582. /EXEPACK:2 will produce smaller executables that typically load faster. 
  3583.  
  3584.  
  3585. ΓòÉΓòÉΓòÉ 10.2.5.8. Optimize Far Calls (/F) ΓòÉΓòÉΓòÉ
  3586.  
  3587. Syntax:  /F[ARCALLTRANSLATION] 
  3588.  
  3589. This option causes LINK386 to optimize far-call instructions made from one 
  3590. segment to a target address in the same segment. LINK386 replaces calling 
  3591. sequences such as CALL FAR function with the following: 
  3592.  
  3593. PUSH     CS
  3594. CALL     NEAR function
  3595. NOP
  3596.  
  3597. The new calling sequence is significantly faster when running in protected 
  3598. mode.  Also, a load-time relocation is eliminated, which decreases program file 
  3599. size and speeds program loading. 
  3600.  
  3601. In general, the greatest benefit occurs if you use the "Combine Contiguous 
  3602. Code(/PACKC)" in addition to the /F option. 
  3603.  
  3604. The /F option has no effect on programs that make only near calls. 
  3605.  
  3606. Note:  There is a small risk involved with using the /F option. LINK386 may 
  3607. mistakenly interpret a byte of immediate data in a code segment as a far call 
  3608. if it has to have the far-call opcode (0x9A). 
  3609.  
  3610.  
  3611. ΓòÉΓòÉΓòÉ 10.2.5.9. Display Help (/H or /?) ΓòÉΓòÉΓòÉ
  3612.  
  3613. Syntax:  /H[ELP]   OR    /? 
  3614.  
  3615. These options display a list of valid LINK386 options. 
  3616.  
  3617.  
  3618. ΓòÉΓòÉΓòÉ 10.2.5.10. Display Process Information (/I) ΓòÉΓòÉΓòÉ
  3619.  
  3620. Syntax:  /I[NFORMATION] 
  3621.  
  3622. This option causes LINK386 to display information about the linking process, 
  3623. including the phase of linking and the names of the object files being linked. 
  3624. Use this option to determine the locations of the object files being linked and 
  3625. the order in which they are linked. 
  3626.  
  3627. The output from this option is sent to standard output. 
  3628.  
  3629.  
  3630. ΓòÉΓòÉΓòÉ 10.2.5.11. Include Line Numbers (/L) ΓòÉΓòÉΓòÉ
  3631.  
  3632. Syntax:  /L[INENUMBERS] 
  3633.  
  3634. This option includes source file line numbers and associated addresses in the 
  3635. map file.  In addition, you must give LINK386 an object file (or files) with 
  3636. line number information.  You can use the /Zd option with most compilers to 
  3637. include line numbers in the object file.  If you give LINK386 an object file 
  3638. without line number information, the /L option has no effect. The option for 
  3639. CSET/++ is /ti. 
  3640.  
  3641. The /L option forces LINK386 to create a map file even if you did not 
  3642. explicitly tell LINK386 to create a map file.  By default, the file is given 
  3643. the same base name as the executable file, plus the extension .MAP.  You can 
  3644. override the default name by explicitly specifying a map file name. 
  3645.  
  3646.  
  3647. ΓòÉΓòÉΓòÉ 10.2.5.12. List Public Symbols (/M) ΓòÉΓòÉΓòÉ
  3648.  
  3649. Syntax:  /M[AP][:full] 
  3650.  
  3651. This option lists in the map file all public (global) symbols defined in the 
  3652. object files.  With this option, the map file contains a list of all the 
  3653. symbols sorted by name, and a list of all the symbols sorted by address.  If 
  3654. you don't use this option, the map file contains only a list of segments. 
  3655.  
  3656. With this option, LINK386 creates a map file by default. If you explicitly 
  3657. enter a map file name of NUL, then no map file is created, and this option has 
  3658. no effect. 
  3659.  
  3660. The Map option can be specified as /M:full to produce a comprehensive map 
  3661. showing the composition of each segment. 
  3662.  
  3663.  
  3664. ΓòÉΓòÉΓòÉ 10.2.5.13. Ignore Default Libraries (/NOD) ΓòÉΓòÉΓòÉ
  3665.  
  3666. Syntax:  /NOD[EFAULTLIBRARYSEARCH][:filename] 
  3667.  
  3668. This option tells LINK386 to ignore Default Libraries when resolving external 
  3669. references.  If you specify an object file in <filename>, LINK386 ignores only 
  3670. the default libraries in <filename>. 
  3671.  
  3672. In general, high-level-language programs do not work correctly without standard 
  3673. libraries.  Thus, if you use the /NOD option, you should explicitly specify the 
  3674. name of a standard library in the <libraries> field of the command line. 
  3675.  
  3676.  
  3677. ΓòÉΓòÉΓòÉ 10.2.5.14. Ignore Extended Dictionary (/NOE) ΓòÉΓòÉΓòÉ
  3678.  
  3679. Syntax:  /NOE[XTDICTIONARY] 
  3680.  
  3681. This option prevents LINK386 from searching the extended dictionary, an 
  3682. internal list of symbol locations included with libraries generated with the 
  3683. old LIB utility's /NOE option. 
  3684.  
  3685. Normally, LINK386 uses the extended dictionary to speed up library searches; 
  3686. thus, using /NOE slows LINK386.  This option should be used when a library 
  3687. symbol is redefined.  You need to use this option when LINK386 issues error 
  3688. L2044. 
  3689.  
  3690.  
  3691. ΓòÉΓòÉΓòÉ 10.2.5.15. Disable Far Optimization (/NOF) ΓòÉΓòÉΓòÉ
  3692.  
  3693. Syntax:  /NOF[ARCALLTRANSLATION] 
  3694.  
  3695. Far-call optimization is off by default.  If the LINK386 environment variable 
  3696. or another command (such as ICC) has turned it on, you can use /NOF to turn it 
  3697. off again. 
  3698.  
  3699.  
  3700. ΓòÉΓòÉΓòÉ 10.2.5.16. Preserve Case Sensitivity (/NOI) ΓòÉΓòÉΓòÉ
  3701.  
  3702. Syntax:  /NOI[GNORECASE] 
  3703.  
  3704. This option turns case sensitivity on; that is, LINK386 treats ABC, abc, and 
  3705. Abc as unique names.  By default, case sensitivity is off. 
  3706.  
  3707. This option can be used when you link programs written in case-sensitive 
  3708. languages such as C. 
  3709.  
  3710.  
  3711. ΓòÉΓòÉΓòÉ 10.2.5.17. Disable Sign-On Banner (/NOL) ΓòÉΓòÉΓòÉ
  3712.  
  3713. Syntax:  /NOL[OGO] 
  3714.  
  3715. This option disables the sign-on banner displayed when LINK386 starts. 
  3716.  
  3717.  
  3718. ΓòÉΓòÉΓòÉ 10.2.5.18. Order Segments without NULLs (/NON) ΓòÉΓòÉΓòÉ
  3719.  
  3720. Syntax:  /NON[ULLSDOSSEG] 
  3721.  
  3722. This option arranges segments in a special order.  The /NON option is 
  3723. equivalent to the Order Segments (/DO) except that /NON does NOT insert 16 null 
  3724. bytes at the beginning of the _TEXT segment (if this segment is defined). 
  3725.  
  3726. The /NON option overrides the /DO option when both are used. Therefore, you can 
  3727. use /NON to override the /DO comment record commonly found in standard 
  3728. libraries. 
  3729.  
  3730.  
  3731. ΓòÉΓòÉΓòÉ 10.2.5.19. No Output on Error (/NOO) ΓòÉΓòÉΓòÉ
  3732.  
  3733. Syntax:  /NOO[UTPUTONERROR] 
  3734.  
  3735. This option will keep Link386 from creating the executable if an error is 
  3736. encountered. 
  3737.  
  3738.  
  3739. ΓòÉΓòÉΓòÉ 10.2.5.20. Disable Code-Segment Combining (/NOP) ΓòÉΓòÉΓòÉ
  3740.  
  3741. Syntax:  /NOP[ACKCODE] 
  3742.  
  3743. This option turns code segment combining off. By default, code segment 
  3744. combining is on. 
  3745.  
  3746.  
  3747. ΓòÉΓòÉΓòÉ 10.2.5.21. Disable Sector Alignment of Code (/NOS) ΓòÉΓòÉΓòÉ
  3748.  
  3749. Syntax:  /NOS[ECTORALIGNCODE] 
  3750.  
  3751. Link386 will align passes of code on sector (512 bytes) boundaries.  This helps 
  3752. reduce the time to load the passes. The /NOSECTORALIGNCODE option is provided 
  3753. to turn off this feature.  Pages of code would then be aligned based on the 
  3754. /ALIGN value. 
  3755.  
  3756.  
  3757. ΓòÉΓòÉΓòÉ 10.2.5.22. Combine Contiguous Code (/PACKC) ΓòÉΓòÉΓòÉ
  3758.  
  3759. Syntax:  /PACKC[ODE]:number 
  3760.  
  3761. This option groups neighboring code segments.  Neighboring code segments are 
  3762. assigned the same segment address, and offsets to each routine are adjusted 
  3763. upward as required.  This option is on by default and is used only when you 
  3764. wish to override an environment variable that has turned code combining off. 
  3765. See Environment Variable and Disable Code-Segment Combining (/NOP) 
  3766.  
  3767. The <number> field specifies the maximum size of a code segment grouped by 
  3768. /PACKC.  If you do not use the /PACKC option or if you omit <number>, maximum 
  3769. size defaults to 65530. LINK386 stops adding segments to a group as soon as it 
  3770. cannot add another segment without exceeding <number>. At this point, LINK386 
  3771. forms a new segment. See Entering Numeric Arguments. 
  3772.  
  3773. Code combining generally produces slightly faster and more compact code.  Use 
  3774. the Optimize Far Calls (/F) option to provide the maximum opportunity for 
  3775. combining. 
  3776.  
  3777.  
  3778. ΓòÉΓòÉΓòÉ 10.2.5.23. Combining Contiguous Data (/PACKD) ΓòÉΓòÉΓòÉ
  3779.  
  3780. Syntax:  /PACKD[ATA] [:number] 
  3781.  
  3782. This option groups neighboring data segments.  It functions like the Combine 
  3783. Contiguous Code (/PACKC) option, except that it combines data segments. 
  3784.  
  3785. The <number> field specifies the maximum size of a data segment grouped by 
  3786. /PACKD; if you omit <number>, the maximum size defaults to 65,536.  LINK386 
  3787. stops adding segments to a group as soon as it cannot add another segment 
  3788. without exceeding <number>.  At this point, LINK386 forms a new group. See 
  3789. Entering Numeric Arguments. 
  3790.  
  3791.  
  3792. ΓòÉΓòÉΓòÉ 10.2.5.24. Pause during Linking (/PAU) ΓòÉΓòÉΓòÉ
  3793.  
  3794. Syntax:  /PAU[SE] 
  3795.  
  3796. This option makes LINK386 pause before writing the output file to disk.  The 
  3797. pause allows you to swap disks. 
  3798.  
  3799. With this option, LINK386 displays the following message before it creates the 
  3800. output file: 
  3801.  
  3802. About to generate .EXE file
  3803. Change diskette in drive letter and press Enter
  3804.  
  3805. LINK386 writes the output file when you press Enter. 
  3806.  
  3807. Be sure not to remove a disk containing the map file. If the disk you need to 
  3808. swap contains either of these files, press CTRL+C to terminate the LINK386 
  3809. session, rearrange your files, and link again. 
  3810.  
  3811.  
  3812. ΓòÉΓòÉΓòÉ 10.2.5.25. Name Application Type (/PM) ΓòÉΓòÉΓòÉ
  3813.  
  3814. Syntax:  /PM[TYPE]:type 
  3815.  
  3816. This option specifies the type of application being generated. Using the /PM 
  3817. option is equivalent to including a NAME statement in the module definition 
  3818. file. 
  3819.  
  3820. A keyword in <type> is equivalent to a keyword in a NAME statement as shown in 
  3821. the following list: 
  3822.  
  3823.  PM                  WINDOWAPI 
  3824.  VIO                 WINDOWCOMPAT 
  3825.  NOVIO               NOTWINDOWCOMPAT 
  3826.  
  3827.  
  3828. ΓòÉΓòÉΓòÉ 10.2.5.26. Execute from DOS Command Line (/RU) ΓòÉΓòÉΓòÉ
  3829.  
  3830. Syntax:  /RU[NFROMVDM]: 
  3831.  
  3832. This option allows the program to be executed from a DOS command line, if 
  3833. possible. 
  3834.  
  3835. This option causes LINK386 to insert an alternate DOS stub into the program. 
  3836. The DOS stub is executed if a protect mode program is executed from a DOS 
  3837. command line. The default DOS stub simply prints an error message and returns 
  3838. to the DOS command line. The alternate DOS stub will attempt to start the 
  3839. program in protect mode. 
  3840.  
  3841.  
  3842. ΓòÉΓòÉΓòÉ 10.2.5.27. Set Maximum Number of Segments (/SE) ΓòÉΓòÉΓòÉ
  3843.  
  3844. Syntax:  /SE[GMENTS]:number 
  3845.  
  3846. This option sets the number of logical segments a program can have. You can set 
  3847. <number> to any value in the range 1 to 3,072. See Entering Numeric Arguments. 
  3848.  
  3849. For each logical segment, LINK386 must allocate space to keep track of segment 
  3850. information.  By using a relatively low segment limit as a default (128), 
  3851. LINK386 is able to link faster and allocate less storage space. 
  3852.  
  3853. When you set the segment limit higher than 128, LINK386 allocates more space 
  3854. for segment information.  This option allows you to raise the segment limit for 
  3855. programs with a large number of segments. 
  3856.  
  3857. For programs with fewer than 128 segments, you can keep the storage 
  3858. requirements of LINK386 at the lowest level possible by setting the segment 
  3859. <number> field to reflect the actual number of segments in the program.  If the 
  3860. number of segments allocated is too high for the amount of memory LINK386 has 
  3861. available to it, you see the error message segment limit too high. 
  3862.  
  3863. To specify a number of segments that fits in the amount of memory available, 
  3864. set the segment lower and relink. 
  3865.  
  3866.  
  3867. ΓòÉΓòÉΓòÉ 10.2.5.28. Control Stack Size (/ST) ΓòÉΓòÉΓòÉ
  3868.  
  3869. Syntax:  /ST[ACK] :number 
  3870.  
  3871. This option controls the stack size (in bytes) of your program. You can specify 
  3872. any positive value for <number>. See Entering Numeric Arguments. 
  3873.  
  3874. If your program generates a stack-overflow message, you can increase the size 
  3875. of the stack.  In contrast, if your program uses the stack very little, you may 
  3876. save some space by decreasing the stack size. 
  3877.  
  3878.  
  3879. ΓòÉΓòÉΓòÉ 10.2.5.29. Warning of Fix-ups (/W) ΓòÉΓòÉΓòÉ
  3880.  
  3881. Syntax:  /W[ARNFIXUP] 
  3882.  
  3883. This option directs LINK386 to issue a warning for each segment-relative fix-up 
  3884. of location-type offset when the segment is contained within a group, but not 
  3885. at the beginning.  LINK386 includes the displacement of the segment from the 
  3886. group in determining the final value of the fix-up. 
  3887.  
  3888.  
  3889. ΓòÉΓòÉΓòÉ 10.2.6. /INF and /M Output Example ΓòÉΓòÉΓòÉ
  3890.  
  3891. The following is a sample of LINK386 output when Display Process Information 
  3892. (/I) and List Public Symbols (/M) options are specified: 
  3893.  
  3894.   **** PASS ONE ****
  3895.   TEST.OBJ(test.for)
  3896.   **** LIBRARY SEARCH ****
  3897.   LLIBFOR7.LIB(wr)
  3898.   LLIBFOR7.LIB(fmtout)
  3899.   LLIBFOR7.LIB(ldout)
  3900.   Γöé Γöé Γöé
  3901.   **** ASSIGN ADDRESSES ****
  3902.   1 segment "TEST_TEXT" length 122H bytes
  3903.   2 segment "_DATA" length 912H bytes
  3904.   3 segment "CONST" length 12H bytes
  3905.   Γöé Γöé Γöé
  3906.   **** PASS TWO ****
  3907.   TEST.OBJ(test.for)
  3908.   LLIBFOR7.LIB(wr)
  3909.   LLIBFOR7.LIB(fmtout)
  3910.   LLIBFOR7.LIB(ldout)
  3911.   Γöé Γöé Γöé
  3912.   **** WRITING EXECUTABLE ****
  3913.  
  3914.  
  3915. ΓòÉΓòÉΓòÉ 10.2.7. OS/2 Considerations ΓòÉΓòÉΓòÉ
  3916.  
  3917. In most respects, linking a program for OS/2 is similar to linking a program 
  3918. for DOS. The principal difference is that most programs created for DOS run as 
  3919. stand-alone applications, whereas programs for OS/2 generally call one or more 
  3920. dynamic-link libraries. See What Is a Dynamic-Link Library? and Advantages of 
  3921. Dynamic Linking. 
  3922.  
  3923. Import and Export Definitions 
  3924.  
  3925. Each dynamic-link library (.DLL file) defines export definitions that tell OS/2 
  3926. what functions the library has. Functions not exported can only be called from 
  3927. within the library. Each export definition specifies a function name. 
  3928.  
  3929. Conversely, each executable program (.EXE file) defines import definitions that 
  3930. tell OS/2 which dynamic-link functions the program needs and where they can be 
  3931. found. Otherwise, OS/2 would not know which dynamic-link libraries to load when 
  3932. the program is run. Each import definition specifies a function name and the 
  3933. .DLL file where the function resides. 
  3934.  
  3935. Methods of OS/2 Linking 
  3936.  
  3937. There are two methods of OS/2 Linking: 
  3938.  
  3939.      Linking without an Import Library 
  3940.      Linking with an Import Library 
  3941.  
  3942.  Linking with an import library requires more steps but has certain advantages. 
  3943.  
  3944.  
  3945. ΓòÉΓòÉΓòÉ 10.2.7.1. What Is a Dynamic-Link Library? ΓòÉΓòÉΓòÉ
  3946.  
  3947. A dynamic-link library contains executable code for common functions, just as 
  3948. an ordinary library does.  Yet code for functions in dynamic-link libraries is 
  3949. not copied into the executable (.EXE) file.  Instead, the library itself is 
  3950. loaded into memory at run time, along with the .EXE file. 
  3951.  
  3952.  
  3953. ΓòÉΓòÉΓòÉ 10.2.7.2. Advantages of Dynamic Linking ΓòÉΓòÉΓòÉ
  3954.  
  3955. Dynamic-link libraries serve much the same purpose that standard libraries do, 
  3956. but they also have the following advantages: 
  3957.  
  3958.      Applications link more quickly. With dynamic linking, the executable code 
  3959.       for a dynamic-link function is not copied into the .EXE file of the 
  3960.       application. Instead, only an import definition is copied. 
  3961.  
  3962.      Applications require less disk space. With dynamic linking, several 
  3963.       different program applications can access the same dynamic-link function 
  3964.       stored in one place.  Without dynamic linking, the code for the function 
  3965.       would be repeated in every .EXE file. 
  3966.  
  3967.      Libraries and applications are independent. Dynamic-link libraries can be 
  3968.       updated any number of times without relinking the applications that use 
  3969.       them.  If you are a user of third-party libraries, this is particularly 
  3970.       convenient.  You receive the updated .DLL file from the third-party 
  3971.       developers, and you only need to copy the new library onto your disk.  At 
  3972.       run time, your applications automatically call the updated library 
  3973.       functions. 
  3974.  
  3975.      Code and data segments can be shared. Code and data segments loaded from 
  3976.       a dynamic-link library can be shared.  Without dynamic linking, such 
  3977.       sharing is not possible because each file has its own copy of all the 
  3978.       code and data it uses.  By sharing segments with dynamic linking, you can 
  3979.       use memory more efficiently. 
  3980.  
  3981.  
  3982. ΓòÉΓòÉΓòÉ 10.2.7.3. Linking without an Import Library ΓòÉΓòÉΓòÉ
  3983.  
  3984. The figure below illustrates a simple case in which you create an application 
  3985. that uses a single dynamic-link library (.DLL) file. 
  3986.  
  3987.  
  3988. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3989. Γöé .OBJ and Γöé  Γöé.DEF fileΓöé    Γöé.DEF fileΓöé  Γöé .OBJ and Γöé
  3990. Γöé.LIB filesΓöé  Γöé(LIBRARY)Γöé    Γöé(imports)Γöé  Γöé.LIB filesΓöé
  3991. Γöé          Γöé  Γöé(exports)Γöé    Γöé         Γöé  Γöé          Γöé
  3992. ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ    ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ
  3993.      Γöé             Γöé              Γöé             Γöé
  3994.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ              ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3995.             Γöé                            Γöé
  3996.                                         
  3997.        (1) LINK386                  (2) LINK386
  3998.                                         
  3999.             Γöé                            Γöé
  4000.        ΓöîΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÉ                ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4001.        Γöé.DLL fileΓöé                Γöé .EXE file   Γöé
  4002.        Γöé(library)Γöé                Γöé(application)Γöé
  4003.        ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4004.  
  4005. As depicted above, linking occurs in two steps: 
  4006.  
  4007.    1. Object files (and standard libraries if any) are linked with a module 
  4008.       definition (.DEF) file to create a .DLL file. A .DEF file is used that 
  4009.       defines all functions exported by the .DLL file. 
  4010.  
  4011.    2. Object files (and standard libraries, if any) are linked with a .DEF file 
  4012.       to create an application (.EXE) file. A different .DEF file is used for 
  4013.       this step; it defines all dynamic-link functions imported (used) by the 
  4014.       application. 
  4015.  
  4016.  
  4017. ΓòÉΓòÉΓòÉ 10.2.7.4. Linking with an Import Library ΓòÉΓòÉΓòÉ
  4018.  
  4019. The figure below illustrates a simple case in which you create an application 
  4020. that uses a single dynamic-link library (.DLL) file. 
  4021.  
  4022.  
  4023. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4024. Γöé .OBJ and Γöé   Γöé.DEF fileΓöé       Γöé.LIB fileΓöé   Γöé .OBJ and Γöé
  4025. Γöé.LIB filesΓöé   Γöé(LIBRARY)Γöé       Γöé(imports)Γöé   Γöé.LIB filesΓöé
  4026. Γöé          Γöé   Γöé(exports)Γöé       Γöé         Γöé   Γöé          Γöé
  4027. ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ   ΓööΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÿ       ΓööΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÿ   ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4028.      Γöé            Γöé   Γöé             Γöé   Γöé           Γöé
  4029.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ   Γöé                ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4030.             Γöé         ΓööΓöÇ(2) IMPLIBΓöÇΓöÿ         Γöé
  4031.                                              
  4032.       (1) LINK386                       (3) LINK386
  4033.                                              
  4034.             Γöé                                 Γöé
  4035.        ΓöîΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÉ                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4036.        Γöé.DLL fileΓöé                     Γöé .EXE file   Γöé
  4037.        Γöé(library)Γöé                     Γöé(application)Γöé
  4038.        ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4039.  
  4040. As depicted above, linking occurs in three steps: 
  4041.  
  4042.    1. Object files (and dynamic-link libraries) are linked with a module 
  4043.       definition (.DEF) file to create a .DLL file. A .DEF file is used that 
  4044.       defines all functions exported by the .DLL file. 
  4045.  
  4046.    2. The IMPLIB program is used to generate an import library (.LIB) file. 
  4047.       IMPLIB takes as input the same module definition file used in the first 
  4048.       step.  For each export definition in the .DEF file, IMPLIB generates a 
  4049.       corresponding import definition.  (IMPLIB can also use the .DLL file 
  4050.       generated in step 1 if you use the _export keyword in C declarations to 
  4051.       export functions.) 
  4052.  
  4053.    3. The .LIB file generated by IMPLIB is used as input to LINK386, which 
  4054.       creates an application (.EXE) file.  This .LIB file provides LINK386 with 
  4055.       information about imported dynamic-link functions. 
  4056.  
  4057.  
  4058. ΓòÉΓòÉΓòÉ 10.2.8. Module Definition Files Basics ΓòÉΓòÉΓòÉ
  4059.  
  4060. What Is a Module Definition File? 
  4061.  
  4062. A module definition file describes the names, attributes, exports, imports, and 
  4063. other characteristics of an application or library. You must use module 
  4064. definition files to create most applications for OS/2. You must use module 
  4065. definition files to create all OS/2 dynamic-link libraries and device drivers. 
  4066.  
  4067. Module Statements 
  4068.  
  4069. A module definition file contains one or more Module Statements These 
  4070. statements: 
  4071.  
  4072.      Define various attributes of the executable file 
  4073.      Define attributes of code and data segments 
  4074.      Identify functions that are imported or exported 
  4075.  
  4076.  
  4077. ΓòÉΓòÉΓòÉ 10.2.8.1. Module Definition File Example ΓòÉΓòÉΓòÉ
  4078.  
  4079. The following module definition file gives module definitions for a 
  4080. dynamic-link library.  It includes one source level comment and five 
  4081. statements. 
  4082.  
  4083.   ; Sample module-definition file
  4084.  
  4085.   LIBRARY
  4086.  
  4087.   DESCRIPTION
  4088.    'Sample .DEF file for a dynamic-link library'
  4089.  
  4090.   CODE      PRELOAD
  4091.  
  4092.   STACKSIZE 1024
  4093.  
  4094.   EXPORTS
  4095.    Init    @1
  4096.    Begin   @2
  4097.    Finish  @3
  4098.    Load    @4
  4099.    Print   @5
  4100.  
  4101.  
  4102. ΓòÉΓòÉΓòÉ 10.2.8.2. Module Statement Rules ΓòÉΓòÉΓòÉ
  4103.  
  4104.      If you use a NAME, LIBRARY, VIRTUAL DEVICE, or PHYSICAL DEVICE statement, 
  4105.       it must precede all other statements in the module definition file. 
  4106.  
  4107.      You can include source level comments in the module definition file by 
  4108.       beginning a line with a semicolon (;). Such lines are ignored. 
  4109.  
  4110.      All module definition keywords (such as NAME, LIBRARY, and OLD) must be 
  4111.       entered in uppercase letters. 
  4112.  
  4113.  
  4114. ΓòÉΓòÉΓòÉ 10.2.9. Module Statements ΓòÉΓòÉΓòÉ
  4115.  
  4116. LINK386 has the following module definition file statements: 
  4117.  
  4118.  BASE                  Base 
  4119.  CODE                  Gives default attributes for code segments 
  4120.  DATA                  Gives default attributes for data segments 
  4121.  DESCRIPTION           Describes the module 
  4122.  EXETYPE               Identifies operating system 
  4123.  EXPORTS               Defines exported functions 
  4124.  IMPORTS               Defines imported functions 
  4125.  HEAPSIZE              Specifies local heap size 
  4126.  LIBRARY               Names dynamic-link library 
  4127.  NAME                  Names application 
  4128.  OLD                   Preserves import information 
  4129.  PHYSICAL DEVICE       Names physical device driver 
  4130.  PROTMODE              Specifies DOS protected mode 
  4131.  SEGMENTS              Gives attributes for specific segments 
  4132.  STACKSIZE             Specifies local stack size 
  4133.  STUB                  Adds DOS executable file to module 
  4134.  VIRTUAL DEVICE        Names virtual device driver 
  4135.  
  4136.  
  4137. ΓòÉΓòÉΓòÉ 10.2.10. BASE Statement ΓòÉΓòÉΓòÉ
  4138.  
  4139. Syntax: BASE=n 
  4140.  
  4141. Where n is a value rounded up to the nearest multiple of 64K Indicates that 
  4142. each object of the module has a preferred load address starting with object 1 
  4143. at this address, object 2 at the next available multiple of 64K, and so on. 
  4144. Internal relocation records are then applied using this addressing scheme. 
  4145.  
  4146. If the module's objects can be loaded beginning at this preferred address, then 
  4147. no load-time internal relocation records need be applied. 
  4148.  
  4149. If the module's objects cannot be loaded beginning at this preferred address, 
  4150. then the internal relocation records that have been retained in the file data 
  4151. will be applied. 
  4152.  
  4153. EXE files may specify a base address, but it must be 64K.  If it isn't, a 
  4154. warning will be issued and a base address of 64K will be used anyway. 
  4155.  
  4156.  
  4157. ΓòÉΓòÉΓòÉ 10.2.11. CODE Statement ΓòÉΓòÉΓòÉ
  4158.  
  4159. Syntax: CODE [attribute...] 
  4160.  
  4161. This statement defines the default attributes for code segments within the 
  4162. application or library. One or more attributes can appear following the CODE 
  4163. statement: 
  4164.  
  4165.  PRELOAD or LOADONCALL Sets when code segment is loaded 
  4166.  
  4167.            Note:  OS/2 2.x ignores the preload attribute. 
  4168.  
  4169.  EXECUTEONLY or EXECUTEREAD Sets read/execute status 
  4170.  
  4171.  IOPL or NOIOPL Sets I/O privilege 
  4172.  
  4173.  CONFORMING or NONCONFORMING Determines segment conformance 
  4174.  
  4175.  Attribute Rules: 
  4176.  
  4177.      Only one attribute from each pair appears. If you specify neither 
  4178.       attribute from a pair, LINK386 supplies the default, listed second in 
  4179.       each pair above. 
  4180.  
  4181.      Attributes can appear in any order. 
  4182.  
  4183.  Example 
  4184.  
  4185.  The following example sets defaults for module code segments so they have I/O 
  4186.  hardware privilege and are not loaded until accessed. 
  4187.  
  4188.   CODE LOADONCALL IOPL
  4189.  
  4190.  
  4191. ΓòÉΓòÉΓòÉ 10.2.11.1. Load Code Attributes ΓòÉΓòÉΓòÉ
  4192.  
  4193. These attributes determine when a code segment is loaded: 
  4194.  
  4195.  PRELOAD        The segment is loaded automatically when the program starts. 
  4196.  
  4197.                 Note:  OS/2 2.x ignores the preload attribute. 
  4198.  
  4199.  LOADONCALL     The segment is not loaded until accessed (default). 
  4200.  
  4201.  
  4202. ΓòÉΓòÉΓòÉ 10.2.11.2. Read/Execute Code Attributes ΓòÉΓòÉΓòÉ
  4203.  
  4204. These attributes determine whether a code segment can be read as well as 
  4205. executed: 
  4206.  
  4207.  EXECUTEONLY    The segment can only be executed. 
  4208.  
  4209.  EXECUTEREAD    The segment can be both executed and read (default). 
  4210.  
  4211.  
  4212. ΓòÉΓòÉΓòÉ 10.2.11.3. I/O Privilege Code Attributes ΓòÉΓòÉΓòÉ
  4213.  
  4214. I/O privilege code attributes determine whether a segment has I/O privilege 
  4215. (that is, whether it can access the hardware directly): 
  4216.  
  4217.  IOPL 
  4218.       The code segment has I/O privilege. 
  4219.  
  4220.  NOIOPL 
  4221.       The code segment does not have I/O privilege (default). 
  4222.  
  4223.  
  4224. ΓòÉΓòÉΓòÉ 10.2.11.4. Conforming Code Attributes ΓòÉΓòÉΓòÉ
  4225.  
  4226. These attributes specify whether a code segment is a conforming segment: 
  4227.  
  4228.  CONFORMING     The segment is conforming. 
  4229.  
  4230.  NONCONFORMING  The segment is nonconforming (default). 
  4231.  
  4232.  The concept of a conforming segment has to do with privilege level (the range 
  4233.  of instructions that the process can execute) and is relevant only when you 
  4234.  are writing device drivers and system level code. A conforming segment can be 
  4235.  called from either Ring 2 or Ring 3, and the segment executes at the privilege 
  4236.  level of the caller. 
  4237.  
  4238.  
  4239. ΓòÉΓòÉΓòÉ 10.2.12. DATA Statement ΓòÉΓòÉΓòÉ
  4240.  
  4241. Syntax: DATA [attribute...] 
  4242.  
  4243. This statement defines the default attributes for data segments within the 
  4244. application or library. One or more attributes can appear following the DATA 
  4245. statement: 
  4246.  
  4247.  PRELOAD or LOADONCALL 
  4248.       Sets when data segment is loaded 
  4249.  
  4250.       Note:  OS/2 2.x ignores the preload attribute. 
  4251.  
  4252.  READONLY or READWRITE 
  4253.       Sets read/write access 
  4254.  
  4255.  NONE, SINGLE, or MULTIPLE 
  4256.       Sets sharing attributes 
  4257.  
  4258.  IOPL or NOIOPL 
  4259.       Sets I/O privilege 
  4260.  
  4261.  SHARED or NONSHARED 
  4262.       Determines whether segment is shared 
  4263.  
  4264.  Attribute Rules 
  4265.  
  4266.      Only one attribute out of each group appears; if you specify none of the 
  4267.       attributes in a group, the last attribute listed above for that group is 
  4268.       generally the default.  (The defaults for NONE/SINGLE/MULTIPLE and 
  4269.       SHARED/NONSHARED vary depending on whether you are describing a 
  4270.       dynamic-link library or application.) 
  4271.  
  4272.      Attributes can appear in any order. 
  4273.  
  4274.  Example 
  4275.  
  4276.  The following example defines the application data segment so that it is 
  4277.  loaded only when it is accessed and cannot be shared by more than one copy of 
  4278.  the program.  By default, the data segment can be read and written, the 
  4279.  automatic data segment is copied for each instance of the module, and the data 
  4280.  segment has no I/O privilege. 
  4281.  
  4282.   DATA LOADONCALL NONSHARED
  4283.  
  4284.  
  4285. ΓòÉΓòÉΓòÉ 10.2.12.1. Load Data Attributes ΓòÉΓòÉΓòÉ
  4286.  
  4287. These attributes determine when a data segment is loaded: 
  4288.  
  4289.  PRELOAD        The segment is loaded automatically when the program starts. 
  4290.  
  4291.                 Note:  OS/2 2.x ignores the preload attribute. 
  4292.  
  4293.  LOADONCALL     The segment is not loaded until accessed (default). 
  4294.  
  4295.  
  4296. ΓòÉΓòÉΓòÉ 10.2.12.2. Read/Write Data Attributes ΓòÉΓòÉΓòÉ
  4297.  
  4298. These attributes determine the access rights to a data segment: 
  4299.  
  4300.  READONLY       The segment can only be read. 
  4301.  
  4302.  READWRITE      The segment can be both read and written to (default). 
  4303.  
  4304.  
  4305. ΓòÉΓòÉΓòÉ 10.2.12.3. Sharing Data Attributes ΓòÉΓòÉΓòÉ
  4306.  
  4307. These attributes determine how the automatic data segment can be shared: 
  4308.  
  4309.  NONE      No automatic data segment is created. 
  4310.  
  4311.  SINGLE    A single automatic data segment is shared by all instances of the 
  4312.            module.  In this case, the module is said to have solo data.  This 
  4313.            keyword is the default for dynamic-link libraries. 
  4314.  
  4315.  MULTIPLE  The automatic data segment is copied for each instance of the 
  4316.            module.  In this case, the module is said to have instance data. 
  4317.            This keyword is the default for applications. 
  4318.  
  4319.  The automatic data segment is the physical segment represented by the group 
  4320.  name DGROUP.  This segment group makes up the physical segment that contains 
  4321.  the local stack and heap of the application. 
  4322.  
  4323.  
  4324. ΓòÉΓòÉΓòÉ 10.2.12.4. LINK386 -I/O Privilege Data Attributes ΓòÉΓòÉΓòÉ
  4325.  
  4326. These attributes determine whether data segments have I/O privilege (that is, 
  4327. whether they can access the hardware directly): 
  4328.  
  4329.  IOPL      The data segments have I/O privilege. 
  4330.  
  4331.  NOIOPL    The data segments do not have I/O privilege (default). 
  4332.  
  4333.  
  4334. ΓòÉΓòÉΓòÉ 10.2.12.5. Shareable Data Attributes ΓòÉΓòÉΓòÉ
  4335.  
  4336. These attributes determine whether all instances of the program can share a 
  4337. READWRITE data segment: 
  4338.  
  4339.  SHARED         One copy of the data segment is loaded and shared among all 
  4340.                 processes accessing the module (default for dynamic-link 
  4341.                 libraries). 
  4342.  
  4343.  NONSHARED      The segment cannot be shared, and must be loaded separately for 
  4344.                 each process (default for applications). 
  4345.  
  4346.  Under OS/2, this field is ignored if READONLY is specified, since READONLY 
  4347.  data segments are always shared. 
  4348.  
  4349.  
  4350. ΓòÉΓòÉΓòÉ 10.2.13. SEGMENTS Statement ΓòÉΓòÉΓòÉ
  4351.  
  4352. Syntax: 
  4353.  
  4354. SEGMENTS
  4355.          segmentdefinitions
  4356.  
  4357. This statement defines the attributes of one or more segments in the 
  4358. application or library on a segment-by-segment basis. The attributes specified 
  4359. by this statement override defaults set in CODE and DATA statements. 
  4360.  
  4361. The SEGMENTS keyword marks the beginning of the segment definitions. This 
  4362. keyword can be followed by one or more segment definitions, each on a separate 
  4363. line (limited by the number set by the LINK386 /SE option, or 128 if the option 
  4364. is not used). See Set Maximum Number of Segments (/SE). 
  4365.  
  4366. Segment-Definition Syntax 
  4367.  
  4368. ['] segmentname ['] [CLASS 'classname'][attribute...] 
  4369.  
  4370. Each segment definition begins with <segmentname>, optionally enclosed in 
  4371. single quotation marks ('). The quotation marks are required if <segmentname> 
  4372. conflicts with a module definition keyword, such as CODE or DATA. 
  4373.  
  4374. The CLASS keyword specifies the class of the segment.  Single quotation marks 
  4375. (') are required for <classname>. If you do not use the CLASS argument, LINK386 
  4376. assumes that the class is CODE. 
  4377.  
  4378. One or more attributes can follow. The default attribute is listed last. 
  4379.  
  4380.  PRELOAD or LOADONCALL 
  4381.       Determines when segment is loaded 
  4382.  
  4383.       Note:  OS/2 s.x ignores the preload attribute. 
  4384.  
  4385.  READONLY or READWRITE 
  4386.       Sets read/write access 
  4387.  
  4388.  EXECUTEONLY or EXECUTEREAD 
  4389.       Sets read/execute status 
  4390.  
  4391.  IOPL or NOIOPL 
  4392.       Sets I/O privilege 
  4393.  
  4394.  CONFORMING or NONCONFORMING 
  4395.       Determines conformance 
  4396.  
  4397.  MIXED1632 
  4398.       Specify Mixed 16 and 32-Bit Segments 
  4399.  
  4400.  ALIAS 
  4401.       Specify that segment is aliased 
  4402.  
  4403.  SHARED or NONSHARED 
  4404.       Specify that segment is shared 
  4405.  
  4406.  Attribute Rules 
  4407.  
  4408.      Only one attribute from each pair appears. If you specify neither 
  4409.       attribute from a pair, LINK386 supplies the default (listed second in 
  4410.       each pair above). 
  4411.  
  4412.      Attributes can appear in any order. 
  4413.  
  4414.  Example 
  4415.  
  4416.   SEGMENTS
  4417.     cseg1 CLASS 'mycode' IOPL
  4418.     cseg2 EXECUTEONLY PRELOAD CONFORMING
  4419.     dseg CLASS 'data' LOADONCALL READONLY
  4420.  
  4421.  This example specifies segments named cseg1, cseg2, and dseg. The first 
  4422.  segment is assigned class mycode and the second is assigned CODE by default. 
  4423.  Each segment is given different attributes. 
  4424.  
  4425.  
  4426. ΓòÉΓòÉΓòÉ 10.2.13.1. Load Segments Attributes ΓòÉΓòÉΓòÉ
  4427.  
  4428. These attributes determine when a segment is loaded: 
  4429.  
  4430.  PRELOAD        The segment is loaded automatically when the program starts. 
  4431.  
  4432.                 Note:  OS/2 2.x ignores the preload attribute. 
  4433.  
  4434.  LOADONCALL     The segment is not loaded until accessed (default). 
  4435.  
  4436.  
  4437. ΓòÉΓòÉΓòÉ 10.2.13.2. Read/Write Segments Attributes ΓòÉΓòÉΓòÉ
  4438.  
  4439. These attributes determine the access rights to a data segment: 
  4440.  
  4441.  READONLY       The segment can only be read. 
  4442.  
  4443.  READWRITE      The segment can be both read and written to (default). 
  4444.  
  4445.  
  4446. ΓòÉΓòÉΓòÉ 10.2.13.3. Read/Execute Segments Attributes ΓòÉΓòÉΓòÉ
  4447.  
  4448. These attributes determine whether a code segment can be read as well as 
  4449. executed: 
  4450.  
  4451.  EXECUTEONLY    The segment can only be executed. 
  4452.  
  4453.  EXECUTEREAD    The segment can be both executed and read (default). 
  4454.  
  4455.  
  4456. ΓòÉΓòÉΓòÉ 10.2.13.4. I/O Privilege Segments Attributes ΓòÉΓòÉΓòÉ
  4457.  
  4458. These attributes determine whether a segment has I/O privilege (that is, 
  4459. whether it can access the hardware directly): 
  4460.  
  4461.  IOPL      The segment has I/O privilege. 
  4462.  
  4463.  NOIOPL    The segment does not have I/O privilege (default). 
  4464.  
  4465.  
  4466. ΓòÉΓòÉΓòÉ 10.2.13.5. Conforming Segments Attributes ΓòÉΓòÉΓòÉ
  4467.  
  4468. These attributes specify whether a code segment is a conforming segment: 
  4469.  
  4470.  CONFORMING     The segment is conforming. 
  4471.  
  4472.  NONCONFORMING  The segment is nonconforming (default). 
  4473.  
  4474.  The concept of a conforming segment has to do with privilege level (the range 
  4475.  of instructions that the process can execute). Conforming attributes are 
  4476.  relevant only when you are writing device driver and system-level code.  A 
  4477.  conforming segment can be called from either Ring 2 or Ring 3, and the segment 
  4478.  executes at the privilege level of the caller. 
  4479.  
  4480.  
  4481. ΓòÉΓòÉΓòÉ 10.2.13.6. Specify Mixed 16 and 32-Bit Segments ΓòÉΓòÉΓòÉ
  4482.  
  4483. Sometimes it is necessary to mix 16-bit code with 32-bit code. When you must 
  4484. create groups that allow such mixing, LINK386 requires that you declare the 
  4485. segments in that group as MIXED1632. 
  4486.  
  4487.  
  4488. ΓòÉΓòÉΓòÉ 10.2.13.7. Specify that Segment is Aliased ΓòÉΓòÉΓòÉ
  4489.  
  4490. Segments flagged with the ALIAS keyword can be addressed using the 16-bit 
  4491. segmented method (_far16), or the 32-bit linear method.  The loader must 
  4492. prepare an additional segment selector for each segment designated with the 
  4493. ALIAS keyword.  This new segment selector allows for 16-bit addressing. 
  4494.  
  4495. Example: 
  4496.  
  4497. SEGMENTS _CODE  ALIAS
  4498.  
  4499. The statement above specifies that the segment _CODE can be called using 16-bit 
  4500. far calls and 32-bit near calls. 
  4501.  
  4502.  
  4503. ΓòÉΓòÉΓòÉ 10.2.13.8. Specify that Segment is Shared ΓòÉΓòÉΓòÉ
  4504.  
  4505. These attributes determine if the segment can be shared by other processes. 
  4506.  
  4507.  SHARED         One copy of the data segment is loaded and shared among all 
  4508.                 processes accessing the module (default for dynamic-link 
  4509.                 libraries). 
  4510.  
  4511.  NONSHARED      The segment cannot be shared, and must be loaded separately for 
  4512.                 each process (default for applications). 
  4513.  
  4514.  
  4515. ΓòÉΓòÉΓòÉ 10.2.14. DESCRIPTION Statement ΓòÉΓòÉΓòÉ
  4516.  
  4517. Syntax: DESCRIPTION 'text' 
  4518.  
  4519. This statement inserts the specified text into the application or library. The 
  4520. DESCRIPTION statement is useful for embedding source control or copyright 
  4521. information into an application or library. 
  4522.  
  4523. The <text> field is a one line string enclosed in single quotation marks. 
  4524.  
  4525. Example 
  4526.  
  4527. The following example inserts the text Template Program into the application or 
  4528. library being defined. 
  4529.  
  4530. DESCRIPTION 'Template Program'
  4531.  
  4532.  
  4533. ΓòÉΓòÉΓòÉ 10.2.15. EXETYPE Statement ΓòÉΓòÉΓòÉ
  4534.  
  4535. Syntax: EXETYPE [OS2 | WINDOWS | UNKNOWN] 
  4536.  
  4537. This statement specifies under which operating system the application (or 
  4538. dynamic-link library) is to run. This statement is optional and provides an 
  4539. additional degree of protection against the program being run in an incorrect 
  4540. operating system. 
  4541.  
  4542. The EXETYPE keyword can be followed by a descriptor of the operating system: 
  4543.  
  4544.  OS2             OS/2 applications and dynamic-link libraries (default) 
  4545.  WINDOWS         Windows** applications 
  4546.  UNKNOWN         Other applications 
  4547.  
  4548.  The effect of EXETYPE is to set bits in the header that identify 
  4549.  operating-system type.  Operating-system loaders can check these bits. 
  4550.  
  4551.  
  4552. ΓòÉΓòÉΓòÉ 10.2.16. EXPORTS Statement ΓòÉΓòÉΓòÉ
  4553.  
  4554. Syntax: 
  4555.  
  4556. EXPORTS
  4557.       exportdefinitions
  4558.  
  4559. This statement defines the names and attributes of the functions exported to 
  4560. other modules and of the functions that run with I/O privilege. 
  4561.  
  4562. Note:  The term export refers to the process of making a function available to 
  4563. other run-time modules.  By default, functions are hidden from other modules at 
  4564. run time. 
  4565.  
  4566. Normally, the EXPORTS statement is meaningful only for functions within 
  4567. dynamic-link libraries and for functions that execute with I/O privilege. 
  4568.  
  4569. The EXPORTS keyword marks the beginning of the export definitions. Each 
  4570. definition is entered on a separate line.  You need to give an export 
  4571. definition for each dynamic-link routine you want to make available to other 
  4572. modules. 
  4573.  
  4574. Export-Definition Syntax 
  4575.  
  4576. entryname [=internalname] [@ord[RESIDENTNAME]] [pwords] 
  4577.  
  4578.  <entryname> 
  4579.       The function name as it is known to other modules. 
  4580.  
  4581.  <internalname> 
  4582.       The actual name of the export function as it appears within the module 
  4583.       itself; by default, this name is the same as <entryname>. 
  4584.  
  4585.  <ord> 
  4586.       The function's ordinal position within the module definition table.  If 
  4587.       this field is used, the function's entry point can be invoked by name or 
  4588.       by ordinal.  Use of ordinal positions is faster and may save space. 
  4589.  
  4590.  RESIDENTNAME 
  4591.       Indicates that the function's name be kept resident in memory at all 
  4592.       times. This keyword is applicable only if <ord> is used. If <ord> is not 
  4593.       used, OS/2 automatically keeps the names of all exported functions 
  4594.       resident in memory by default. 
  4595.  
  4596.  <pwords> 
  4597.       The total size of the function's parameters, as measured in words (bytes 
  4598.       divided by two). This field is required only if the function executes 
  4599.       with I/O privilege. When a function with I/O privilege is called, OS/2 
  4600.       consults <pwords> to determine how many words to copy from the caller's 
  4601.       stack to the I/O-privileged function's stack. 
  4602.  
  4603.  Example 
  4604.  
  4605.   EXPORTS
  4606.     SampleRead = read2bin @8
  4607.     StringIn = str1       @4 RESIDENTNAME
  4608.     CharTest  6
  4609.  
  4610.  This example defines three export functions: 
  4611.  
  4612.      SampleRead 
  4613.      StringIn 
  4614.      CharTest 
  4615.  
  4616.  The first two functions can be accessed either by their exported names or by 
  4617.  an ordinal number. Note that in the module's own source code, these functions 
  4618.  are actually defined as read2bin and str1, respectively. The last function 
  4619.  runs with I/O privilege and therefore is given with the total size of the 
  4620.  parameters - six words. 
  4621.  
  4622.  
  4623. ΓòÉΓòÉΓòÉ 10.2.17. IMPORTS Statement ΓòÉΓòÉΓòÉ
  4624.  
  4625. Syntax: 
  4626.  
  4627. IMPORTS
  4628.   importdefinitions
  4629.  
  4630. This statement defines the names of the functions imported for the application 
  4631. or library. 
  4632.  
  4633. Note:  The term import refers to the process of declaring that a symbol is 
  4634. defined in another run-time module (a dynamic-link library). 
  4635.  
  4636. Typically, LINK386 uses an import library to resolve external references to 
  4637. dynamic-link symbols. However, the IMPORTS statement provides an alternative 
  4638. for resolving these references within a module. 
  4639.  
  4640. The IMPORTS keyword marks the beginning of the import definitions. This keyword 
  4641. is followed by one or more import definitions, each on a separate line. Each 
  4642. import definition corresponds to a particular function. 
  4643.  
  4644. Import-Definition Syntax 
  4645.  
  4646. [internalname=]modulename.entry
  4647.  
  4648.  <internalname> 
  4649.       The name that the importing module uses to call the function.  Thus, 
  4650.       <internalname> appears in the source code of the importing module, 
  4651.       although the function can have a different name in the module where it is 
  4652.       defined.  By default, internalname is the same as <entry>. 
  4653.  
  4654.  <modulename> 
  4655.       The name of the application or library that contains the function. 
  4656.  
  4657.  <entry> 
  4658.       The function to be imported; can be a name or an ordinal value.  (Ordinal 
  4659.       values are set in an EXPORTS statement.) If an ordinal value is given, 
  4660.       then <internalname> is required. 
  4661.  
  4662.  Note:  A given function has a name for each of three different contexts.  The 
  4663.  function has a name used by the exporting module (where it is defined), a name 
  4664.  used as an entry point between modules, and a name as it is used by the 
  4665.  importing module (where it is called).  If neither module uses the optional 
  4666.  <internalname> field, the function has the same name in all three contexts. 
  4667.  If either of the modules uses the <internalname> field, the function may have 
  4668.  more than one distinct name. 
  4669.  
  4670.  Syntax: 
  4671.  
  4672.   IMPORTS
  4673.     Sample.SampleRead
  4674.     SampleA.SampleWrite
  4675.     ReadChar = Read.1
  4676.  
  4677.  This example defines three functions to be imported: 
  4678.  
  4679.      SampleRead 
  4680.      SampleWrite 
  4681.      A function that has been assigned an ordinal value of 1 
  4682.  
  4683.  The functions are found in the modules Sample, SampleA, and Read, 
  4684.  respectively. The function from the Read module is referred to as ReadChar in 
  4685.  the importing module.  The original name of the function, as it is defined in 
  4686.  the Read module, may or may not be known. 
  4687.  
  4688.  
  4689. ΓòÉΓòÉΓòÉ 10.2.18. HEAPSIZE Statement ΓòÉΓòÉΓòÉ
  4690.  
  4691. Syntax: HEAPSIZE bytes | MAXVAL 
  4692.  
  4693. This statement defines the size of the application's local heap in bytes. This 
  4694. value affects the size of the automatic data segment. 
  4695.  
  4696. The field <bytes> contains any positive integer.  You can enter <bytes> in 
  4697. decimal, octal, or hexadecimal radix. See Entering Numeric Arguments. 
  4698.  
  4699. Instead of entering a number for <bytes>, you can enter the keyword MAXVAL. 
  4700. This sets the heap size such that the default data segment DGROUP is exactly 
  4701. 64K.  MAXVAL is useful in bound applications in which you want to force a 64K 
  4702. requirement for DGROUP. 
  4703.  
  4704. Example 
  4705.  
  4706. HEAPSIZE 4000
  4707.  
  4708. This example sets the local heap to 4,000 bytes. 
  4709.  
  4710.  
  4711. ΓòÉΓòÉΓòÉ 10.2.19. LIBRARY Statement ΓòÉΓòÉΓòÉ
  4712.  
  4713. Syntax: LIBRARY [libraryname][initialization]  [termination] 
  4714.  
  4715. This statement identifies the executable file as a dynamic-link library and 
  4716. optionally defines the name and library module initialization required. 
  4717.  
  4718. If <libraryname> is given, it becomes the name of the library as it is known by 
  4719. OS/2. This name can be any valid file name. If <libraryname> is not given, the 
  4720. name of the executable file - with the extension removed - becomes the name of 
  4721. the library. 
  4722.  
  4723. If <initialization> is given, it defines the library initialization required 
  4724. and can be one of the values below. If omitted, <initialization> defaults to 
  4725. INITGLOBAL. 
  4726.  
  4727.  INITGLOBAL 
  4728.       The library initialization routine is called only when the library module 
  4729.       is initially loaded into memory. 
  4730.  
  4731.       Using this keyword without a termination flag implies TERMGLOBAL for DLLs 
  4732.       with 32-bit entry points. 
  4733.  
  4734.  INITINSTANCE 
  4735.       The library initialization routine is called each time a new process 
  4736.       gains access to the library. 
  4737.  
  4738.       Using this keyword without a termination flag implies TERMINSTANCE for 
  4739.       DLLs with 32-bit entry points. 
  4740.  
  4741.  If <termination> is given, it defines the library termination required and can 
  4742.  be one of the values below. If omitted, <initialization> defaults to 
  4743.  TERMGLOBAL. The termination flag can only apply to DLLs with 32-bit entry 
  4744.  points. 
  4745.  
  4746.  TERMGLOBAL 
  4747.       The library termination routine is called only when the library module is 
  4748.       unloaded from memory. 
  4749.  
  4750.       Using this keyword without an initialization flag implies INITGLOBAL. 
  4751.  
  4752.  TERMINSTANCE 
  4753.       The library termination routine is called each time a process 
  4754.       relinquishes access to the library. 
  4755.  
  4756.       Using this keyword without an initialization flag implies INITINSTANCE. 
  4757.  
  4758.  If the LIBRARY statement is included in a module definition file, the NAME 
  4759.  statement cannot appear. If no LIBRARY statement appears, the module 
  4760.  definition file describes an application. 
  4761.  
  4762.  The following example assigns the name calendar to the dynamic-link library 
  4763.  and specifies that library initialization be performed each time a new process 
  4764.  gains access. 
  4765.  
  4766.     LIBRARY calendar INITINSTANCE
  4767.  
  4768.  
  4769. ΓòÉΓòÉΓòÉ 10.2.20. NAME Statement ΓòÉΓòÉΓòÉ
  4770.  
  4771. Syntax: NAME [appname][apptype] 
  4772.  
  4773. This statement identifies the executable file as an application and optionally 
  4774. defines the name and type. 
  4775.  
  4776. If <appname> is given, it becomes the name of the application as it is known by 
  4777. OS/2. This name can be any valid file name. If <appname> is not given, the name 
  4778. of the executable file - with the extension removed - becomes the name of the 
  4779. application. 
  4780.  
  4781. If <apptype> is given, it defines the type of application: 
  4782.  
  4783.  WINDOWAPI 
  4784.       Presentation Manager* application. The application uses the API provided 
  4785.       by the Presentation Manager and must be executed in the Presentation 
  4786.       Manager environment. 
  4787.  
  4788.  WINDOWCOMPAT 
  4789.       Application compatible with Presentation Manager. The application can run 
  4790.       inside the Presentation Manager, or it can run in a separate screen 
  4791.       group. An application can be of this type if it uses the proper subset of 
  4792.       OS/2 video, keyboard, and mouse functions supported in the Presentation 
  4793.       Manager applications. 
  4794.  
  4795.  NOTWINDOWCOMPAT 
  4796.       Application that is not compatible with the Presentation Manager and must 
  4797.       operate in a separate screen group from the Presentation Manager. 
  4798.  
  4799.  If the NAME statement appears, the LIBRARY, VIRTUAL DEVICE and PHYSICAL DEVICE 
  4800.  statements cannot appear. If none of these statements appear, the module 
  4801.  definition file is assumed to describe an application. 
  4802.  
  4803.  Example 
  4804.  
  4805.  The following example assigns the name calendar to the application being 
  4806.  defined. 
  4807.  
  4808.   NAME calendar WINDOWCOMPAT
  4809.  
  4810.  This application is Presentation Manager-compatible. 
  4811.  
  4812.  
  4813. ΓòÉΓòÉΓòÉ 10.2.21. OLD Statement ΓòÉΓòÉΓòÉ
  4814.  
  4815. Syntax: OLD 'filename' 
  4816.  
  4817. This statement directs LINK386 to search another dynamic-link module for export 
  4818. ordinals.  Exported names in the current module that match exported names in 
  4819. the OLD module are assigned ordinal values from that module unless one of the 
  4820. following conditions is in effect: 
  4821.  
  4822.      The name in the OLD module has no ordinal value assigned. 
  4823.  
  4824.      An ordinal value is explicitly assigned in the current module. 
  4825.  
  4826.  This statement is useful for preserving export ordinal values throughout 
  4827.  successive versions of a dynamic-link module.  The OLD statement has no effect 
  4828.  on application modules. 
  4829.  
  4830.  
  4831. ΓòÉΓòÉΓòÉ 10.2.22. PHYSICAL DEVICE Statement ΓòÉΓòÉΓòÉ
  4832.  
  4833. Syntax: PHYSICAL DEVICE [drivername] 
  4834.  
  4835. This statement identifies the executable file as a physical device driver. 
  4836.  
  4837. If <drivername> is given, it becomes the name of the driver as it is known by 
  4838. OS/2. This name can be any valid file name. If <drivername> is not given, the 
  4839. name of the executable file - with the extension removed - becomes the name of 
  4840. the driver. 
  4841.  
  4842.  
  4843. ΓòÉΓòÉΓòÉ 10.2.23. PROTMODE Statement ΓòÉΓòÉΓòÉ
  4844.  
  4845. Syntax: PROTMODE 
  4846.  
  4847. This statement specifies that the module runs only in protected mode and not in 
  4848. Windows or dual mode. This statement is always optional and permits a protected 
  4849. mode only application to omit some information from the executable file header. 
  4850.  
  4851. If this statement is not included in the module definition file, LINK386 
  4852. assumes the application can be run in either real or protected mode. 
  4853.  
  4854.  
  4855. ΓòÉΓòÉΓòÉ 10.2.24. STACKSIZE Statement ΓòÉΓòÉΓòÉ
  4856.  
  4857. Syntax: STACKSIZE number 
  4858.  
  4859. This statement performs the same function as the LINK386 /ST option; if both 
  4860. are used, the STACKSIZE statement overrides the /ST option.  See Control Stack 
  4861. Size (/ST). 
  4862.  
  4863. The field <number> contains a positive integer.  You can specify <number> in 
  4864. decimal, octal, or hexadecimal radix. See Entering Numeric Arguments. 
  4865.  
  4866. Example 
  4867.  
  4868. STACKSIZE 4096
  4869.  
  4870. This example allocates 4,096 bytes of local-stack space. 
  4871.  
  4872.  
  4873. ΓòÉΓòÉΓòÉ 10.2.25. STUB Statement ΓòÉΓòÉΓòÉ
  4874.  
  4875. Syntax: STUB 'filename' 
  4876.  
  4877. This statement adds a DOS executable file to the beginning of the application 
  4878. or library being created. The stub is invoked whenever the module is executed 
  4879. under DOS. Typically, the stub displays a message and terminates execution. By 
  4880. default, LINK386 adds its own standard stub for this purpose. 
  4881.  
  4882. The field <filename> specifies the DOS executable file to be added. LINK386 
  4883. looks for <filename> in the current directory and in the directories specified 
  4884. by the PATH environment variable. 
  4885.  
  4886. Example 
  4887.  
  4888. STUB 'STOPIT.EXE'
  4889.  
  4890. This example appends the DOS executable file STOPIT.EXE to the beginning of the 
  4891. module. STOPIT.EXE is executed when the module is run under DOS. 
  4892.  
  4893.  
  4894. ΓòÉΓòÉΓòÉ 10.2.26. VIRTUAL DEVICE Statement ΓòÉΓòÉΓòÉ
  4895.  
  4896. Syntax: VIRTUAL DEVICE [drivername] 
  4897.  
  4898. This statement identifies the executable file as a virtual device driver. 
  4899.  
  4900. If <drivername> is given, it becomes the name of the driver as it is known by 
  4901. OS/2. This name can be any valid file name. If <drivername> is not given, the 
  4902. name of the executable file - with the extension removed - becomes the name of 
  4903. the driver. 
  4904.  
  4905.  
  4906. ΓòÉΓòÉΓòÉ 11. Make Message File (MKMSGF) ΓòÉΓòÉΓòÉ
  4907.  
  4908. The MKMSGF program reads the input message file that you specify and creates an 
  4909. output message file that DosGetMessage uses to display messages. 
  4910.  
  4911. There are two ways that the output message file can be used: 
  4912.  
  4913.      Selected messages can be bound to the message segment of an executable 
  4914.       file using the MSGBIND program. 
  4915.  
  4916.      Messages can be accessed directly from the output message file. 
  4917.  
  4918.  See How Message Retrieval Works for additional information. 
  4919.  
  4920.  
  4921. ΓòÉΓòÉΓòÉ 11.1. Syntax ΓòÉΓòÉΓòÉ
  4922.  
  4923. MKMSGF infile outfile [options] 
  4924.  
  4925.    OR 
  4926.  
  4927. MKMSGF @controlfile 
  4928.  
  4929. The infile field specifies the input file that contains message definitions. 
  4930. The input-file name can be any valid OS/2 file name, optionally preceded by a 
  4931. drive letter and a path. 
  4932.  
  4933. The outfile field specifies the output file created by MKMSGF. The output-file 
  4934. name can be any valid OS/2 file name, optionally preceded by a drive letter and 
  4935. a path. 
  4936.  
  4937. To differentiate between the two files, the following convention is 
  4938. recommended, using the same file name. 
  4939.  
  4940.      The infile file should have a .TXT extension. 
  4941.      The outfile file should have a .MSG extension. 
  4942.  
  4943.  Note:  The output file cannot have the same file name and extension as the 
  4944.         input file. 
  4945.  
  4946.  
  4947. ΓòÉΓòÉΓòÉ 11.1.1. Help ΓòÉΓòÉΓòÉ
  4948.  
  4949. There are two ways to display MKMSGF help. 
  4950.  
  4951. Short Syntax Help 
  4952.  
  4953. To display a short version of MKMSGF syntax help, type MKMSGF at the prompt, 
  4954. with no parameters. The following will be displayed: 
  4955.  
  4956. MKMSGF infile[.ext] outfile[.ext] [/V]
  4957. [/D <DBCS range or country>] [/P <code page>]
  4958. [/L <language id,sub id>]
  4959.  
  4960. Long Help 
  4961.  
  4962. To display a longer version of MKMSGF help, including defaults, country codes, 
  4963. and language IDs, type MKMSGF /? at the prompt. The following will be 
  4964. displayed: 
  4965.  
  4966. Use MKMSGF as follows:
  4967.  
  4968. MKMSGF <inputfile> <outputfile> [/V]
  4969.         [/D <DBCS range or country>]
  4970.         [/P <code page>]
  4971.         [/L <language family id,sub id>]
  4972.  
  4973. where the default values are:
  4974.    code page  -  none
  4975.    DBCS range -  none
  4976. A valid DBCS range is: n10,n11,n20,n21,...,nn0,nn1
  4977. A single number is taken as a DBCS country code.
  4978.  
  4979. The valid OS/2 language/sublanguage ID values are:
  4980.  
  4981. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4982. ΓöéCode  ΓöéFamily  ΓöéSub  ΓöéLanguage               ΓöéPrincipal country Γöé
  4983. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4984. Γöé ARA  Γöé   1    Γöé  2  ΓöéArabic                 ΓöéArab Countries    Γöé
  4985. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4986. Γöé BGR  Γöé   2    Γöé  1  ΓöéBulgarian              ΓöéBulgaria          Γöé
  4987. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4988. Γöé CAT  Γöé   3    Γöé  1  ΓöéCatalan                ΓöéSpain             Γöé
  4989. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4990. Γöé CHT  Γöé   4    Γöé  1  ΓöéTraditional Chinese    ΓöéR.O.C.            Γöé
  4991. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4992. Γöé CHS  Γöé   4    Γöé  2  ΓöéSimplified Chinese     ΓöéP.R.C.            Γöé
  4993. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4994. Γöé CSY  Γöé   5    Γöé  1  ΓöéCzech                  ΓöéCzechoslovakia    Γöé
  4995. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4996. Γöé DAN  Γöé   6    Γöé  1  ΓöéDanish                 ΓöéDenmark           Γöé
  4997. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4998. Γöé DEU  Γöé   7    Γöé  1  ΓöéGerman                 ΓöéGermany           Γöé
  4999. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5000. Γöé DES  Γöé   7    Γöé  2  ΓöéSwiss German           ΓöéSwitzerland       Γöé
  5001. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5002. Γöé EEL  Γöé   8    Γöé  1  ΓöéGreek                  ΓöéGreece            Γöé
  5003. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5004. Γöé ENU  Γöé   9    Γöé  1  ΓöéUS English             ΓöéUnited States     Γöé
  5005. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5006. Γöé ENG  Γöé   9    Γöé  2  ΓöéUK English             ΓöéUnited Kingdom    Γöé
  5007. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5008. Γöé ESP  Γöé  10    Γöé  1  ΓöéCastilian Spanish      ΓöéSpain             Γöé
  5009. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5010. Γöé ESM  Γöé  10    Γöé  2  ΓöéMexican Spanish        ΓöéMexico            Γöé
  5011. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5012. Γöé FIN  Γöé  11    Γöé  1  ΓöéFinnish                ΓöéFinland           Γöé
  5013. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5014. Γöé FRA  Γöé  12    Γöé  1  ΓöéFrench                 ΓöéFrance            Γöé
  5015. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5016. Γöé FRB  Γöé  12    Γöé  2  ΓöéBelgian French         ΓöéBelgium           Γöé
  5017. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5018. Γöé FRC  Γöé  12    Γöé  3  ΓöéCanadian French        ΓöéCanada            Γöé
  5019. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5020. Γöé FRS  Γöé  12    Γöé  4  ΓöéSwiss French           ΓöéSwitzerland       Γöé
  5021. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5022. Γöé HEB  Γöé  13    Γöé  1  ΓöéHebrew                 ΓöéIsrael            Γöé
  5023. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5024. Γöé HUN  Γöé  14    Γöé  1  ΓöéHungarian              ΓöéHungary           Γöé
  5025. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5026. Γöé ISL  Γöé  15    Γöé  1  ΓöéIcelandic              ΓöéIceland           Γöé
  5027. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5028. Γöé ITA  Γöé  16    Γöé  1  ΓöéItalian                ΓöéItaly             Γöé
  5029. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5030. Γöé ITS  Γöé  16    Γöé  2  ΓöéSwiss Italian          ΓöéSwitzerland       Γöé
  5031. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5032. Γöé JPN  Γöé  17    Γöé  1  ΓöéJapanese               ΓöéJapan             Γöé
  5033. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5034. Γöé KOR  Γöé  18    Γöé  1  ΓöéKorean                 ΓöéKorea             Γöé
  5035. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5036. Γöé NLD  Γöé  19    Γöé  1  ΓöéDutch                  ΓöéNetherlands       Γöé
  5037. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5038. Γöé NLB  Γöé  19    Γöé  2  ΓöéBelgian Dutch          ΓöéBelgium           Γöé
  5039. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5040. Γöé NOR  Γöé  20    Γöé  1  ΓöéNorwegian - Bokmal     ΓöéNorway            Γöé
  5041. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5042. Γöé NON  Γöé  20    Γöé  2  ΓöéNorwegian - Nynorsk    ΓöéNorway            Γöé
  5043. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5044. Γöé PLK  Γöé  21    Γöé  1  ΓöéPolish                 ΓöéPoland            Γöé
  5045. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5046. Γöé PTB  Γöé  22    Γöé  1  ΓöéBrazilian Portuguese   ΓöéBrazil            Γöé
  5047. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5048. Γöé PTG  Γöé  22    Γöé  2  ΓöéPortuguese             ΓöéPortugal          Γöé
  5049. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5050. Γöé RMS  Γöé  23    Γöé  1  ΓöéRhaeto-Romanic         ΓöéSwitzerland       Γöé
  5051. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5052. Γöé ROM  Γöé  24    Γöé  1  ΓöéRomanian               ΓöéRomania           Γöé
  5053. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5054. Γöé RUS  Γöé  25    Γöé  1  ΓöéRussian                ΓöéU.S.S.R.          Γöé
  5055. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5056. Γöé SHL  Γöé  26    Γöé  1  ΓöéCroato-Serbian (Lat    ΓöéYugoslavia        Γöé
  5057. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5058. Γöé SHC  Γöé  26    Γöé  2  ΓöéSerbo-Croatian (Cyr    ΓöéYugoslavia        Γöé
  5059. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5060. Γöé SKY  Γöé  27    Γöé  1  ΓöéSlovakian              ΓöéCzechoslovakia    Γöé
  5061. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5062. Γöé SQI  Γöé  28    Γöé  1  ΓöéAlbanian               ΓöéAlbania           Γöé
  5063. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5064. Γöé SVE  Γöé  29    Γöé  1  ΓöéSwedish                ΓöéSweden            Γöé
  5065. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5066. Γöé THA  Γöé  30    Γöé  1  ΓöéThai                   ΓöéThailand          Γöé
  5067. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5068. Γöé TRK  Γöé  31    Γöé  1  ΓöéTurkish                ΓöéTurkey            Γöé
  5069. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5070. Γöé URD  Γöé  32    Γöé  1  ΓöéUrdu                   ΓöéPakistan          Γöé
  5071. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5072. Γöé BAH  Γöé  33    Γöé  1  ΓöéBahasa                 ΓöéIndonesia         Γöé
  5073. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5074.  
  5075.  
  5076. ΓòÉΓòÉΓòÉ 11.1.2. Input Message File ΓòÉΓòÉΓòÉ
  5077.  
  5078. The input message file is a standard ASCII file that contains three types of 
  5079. lines: 
  5080.  
  5081.      Comment lines 
  5082.      Component identifier line 
  5083.      Component message lines 
  5084.  
  5085.  Comment Lines 
  5086.  
  5087.  Comment lines are allowed anywhere in the input message file, except between 
  5088.  the component identifier and the first message. Comment lines must begin with 
  5089.  a semicolon (;) in the first column. 
  5090.  
  5091.  In the Input Message File Example, the comment lines are 
  5092.  
  5093.   ; This is a sample of an input
  5094.   ; message file for component DOS
  5095.   ; starting with three comment lines.
  5096.  
  5097.  Component Identifier Line 
  5098.  
  5099.  The component-identifier line contains a three-character name identifier that 
  5100.  precedes all MKMSGF message numbers. 
  5101.  
  5102.  In the example, the component identifier is DOS. 
  5103.  
  5104.  Component-Message Lines 
  5105.  
  5106.  Each component-message line consists of a message header and an ASCII text 
  5107.  message. 
  5108.  
  5109.  The message header is comprised of the following parts: 
  5110.  
  5111.      A three-character component identifier 
  5112.      A four-digit message number 
  5113.      A single character specifying message type (E, H, I, P, W, ?) 
  5114.      A colon (:) 
  5115.      Followed by a blank space. 
  5116.  
  5117.  The following message types are used: 
  5118.  
  5119.  Type   Meaning 
  5120.  E      Error 
  5121.  H      Help 
  5122.  I      Information 
  5123.  P      Prompt 
  5124.  W      Warning 
  5125.  ?      no message assigned to this number 
  5126.  
  5127.  The message header must begin in the first column of the line. Only one header 
  5128.  can precede the text of a message, although a message can span multiple lines. 
  5129.  
  5130.  Message numbers can start at any number, but messages must be numbered 
  5131.  sequentially.  If you do not use a message number, you must insert an empty 
  5132.  entry in its place in the text file. An empty entry consists of the message 
  5133.  number, with ? as the message type, and no text. 
  5134.  
  5135.  The character % has a special meaning when used within the text of a message: 
  5136.  
  5137.  %0 is placed at the end of a prompt (type P) to prevent DosGetMessage from 
  5138.  executing a carriage return and line feed.  This allows the user to be 
  5139.  prompted for input on the same line as the message text. 
  5140.  
  5141.  %1 - %9 are used to identify variable string insertion within the text of a 
  5142.  message.  These variables correspond to the Itable and IvCount parameters in 
  5143.  the DosGetMessage call. 
  5144.  
  5145.  Component-Message Example 
  5146.  
  5147.  For example, DOS0100E: is DOS error message 100. For additional examples, see 
  5148.  the Input Message File Example. 
  5149.  
  5150.  
  5151. ΓòÉΓòÉΓòÉ 11.1.3. Output File ΓòÉΓòÉΓòÉ
  5152.  
  5153. The output file contains the indexed message file that DosGetMessage will use. 
  5154. The output-file name can be any valid OS/2 file name, optionally preceded by a 
  5155. drive letter and a path.  The output file cannot have the same name as the 
  5156. input file. 
  5157.  
  5158. To differentiate between the two files, the following convention is 
  5159. recommended, using the same file name. 
  5160.  
  5161.      The infile file should have a .TXT extension. 
  5162.      The outfile file should have a .MSG extension. 
  5163.  
  5164.  Help-message file names begin with the component identifier, followed by 
  5165.  H.MSG. For example, the help file associated with the component identifier DOS 
  5166.  would be DOSH.MSG. 
  5167.  
  5168.  
  5169. ΓòÉΓòÉΓòÉ 11.2. Options ΓòÉΓòÉΓòÉ
  5170.  
  5171. Text-based messages in different code pages can be created using MKMSGF to 
  5172. display errors, help information, prompt, or provide general information to the 
  5173. application user. 
  5174.  
  5175. MKMSGF uses the following parameter formats to build message files: 
  5176.  
  5177.       MKMSGF infile outfile /Pcodepage 
  5178.  
  5179.       MKMSGF infile outfile /Ddbcsrange or country id 
  5180.  
  5181.       MKMSGF infile outfile /LlangID,VerId 
  5182.  
  5183.       MKMSGF infile outfile /V 
  5184.  
  5185.       MKMSGF infile outfile /? 
  5186.  
  5187.       MKMSGF @controlfile 
  5188.  
  5189.      Infile is the ASCII-text source file. 
  5190.  
  5191.       Example: 
  5192.  
  5193.             MSG
  5194.             MSG0001I: (mm%4dd%4yy) %2%4%1%4%3
  5195.             MSG0002I: (dd%4mm%4yy) %1%4%2%4%3
  5196.             MSG0003I: Current date is: %0
  5197.  
  5198.       %0 is a special argument that displays a prompt for user input. 
  5199.  
  5200.       %1 - %9 are the arguments the user can use to insert text in a message. 
  5201.  
  5202.      Outfile is the binary output message file. 
  5203.  
  5204.      @controlfile is the message definition file. 
  5205.  
  5206.  Options 
  5207.  
  5208.  /P        Code-page ID for the input message file. See /P Option 
  5209.  
  5210.  /D        DbcsRange or country ID for the input message file. See /D Option 
  5211.  
  5212.  /L        Language family ID (one word) and language version ID (one word). 
  5213.            See /L Option 
  5214.  
  5215.  /V        Verbose display of message file control variables as the message 
  5216.            file is being created. See /Verbose Option Output Example 
  5217.  
  5218.  /?        Help display of command syntax for MKMSGF. 
  5219.  
  5220.  Note:  Any combination of /P, /D, /L, and /V switches can be used for either 
  5221.         the command line or @controlfile execution method. 
  5222.  
  5223.  The / switch prefix and the - prefix can be used interchangeably when defining 
  5224.  switches to MKMSGF. 
  5225.  
  5226.  
  5227. ΓòÉΓòÉΓòÉ 11.2.1. /Verbose Option Output Example ΓòÉΓòÉΓòÉ
  5228.  
  5229. Following is a sample of MKMSGF output, using the Verbose option (/V). This 
  5230. output was produced using the following command: 
  5231.  
  5232. mkmsgf myapp.txt myapp.msg /v
  5233.  
  5234.   strIn     = myapp.txt
  5235.   strOut    = myapp.msg
  5236.   StrIncDir = (null)
  5237.   CodePages = 437
  5238.   Language family id = 0 and sub id = 0
  5239.   Language family id and sub id = unspecified
  5240.   flags     = none
  5241.   CP_type   = SBCS
  5242. "myapp.txt": length = 382 bytes.
  5243. 29 messages scanned.  Writing output file...
  5244. Size of table entry: word
  5245.  
  5246.  
  5247. ΓòÉΓòÉΓòÉ 11.2.2. /P Option ΓòÉΓòÉΓòÉ
  5248.  
  5249. The Code-page option (/P) specifies the code-page ID for that input message 
  5250. file. 
  5251.  
  5252. Up to 16 /P combinations can be saved with the message file. 
  5253.  
  5254. /P cannot be used to identify DBCS data. 
  5255.  
  5256.  
  5257. ΓòÉΓòÉΓòÉ 11.2.3. /D Option ΓòÉΓòÉΓòÉ
  5258.  
  5259. The DBCS option (/D) specifies the DBCS Range or country ID for that input 
  5260. message file. 
  5261.  
  5262. Valid DBCS country ID will cause the initialization of valid DBCS ranges to be 
  5263. set up for this file. 
  5264.  
  5265.  
  5266. ΓòÉΓòÉΓòÉ 11.2.4. /L Option ΓòÉΓòÉΓòÉ
  5267.  
  5268. The Language option (/L) specifies the language family ID (one word) and 
  5269. language version ID (one word). 
  5270.  
  5271. Valid combination of language family and language version will be set for this 
  5272. file. 
  5273.  
  5274. A valid language family with invalid or undefined language version id will 
  5275. cause a default value of 1 to be set for language version. 
  5276.  
  5277.  
  5278. ΓòÉΓòÉΓòÉ 11.3. Control Files ΓòÉΓòÉΓòÉ
  5279.  
  5280. The control file (@controlfile) is used to create multiple-code-page message 
  5281. files. The at sign (@) is not part of the file name, but rather, a delimiter 
  5282. required before a control-file name. 
  5283.  
  5284. The control file has the following format: 
  5285.  
  5286. Example: 
  5287.  
  5288. root.in root.out /Pcodepage /Ddbcsrang/ctryid /LlangID,VerId
  5289. sub.001 sub1.out /Pcodepage /Ddbcsrang/ctryid /LlangID,VerId
  5290.                  .
  5291.                  .
  5292. sub.00n subn.out /Pcodepage /Ddbcsrang/ctryid /LlangID,VerId
  5293.  
  5294. The help option (/?) is invalid due to the purpose of the definition file. 
  5295.  
  5296. Note:  Any combination of /P /D /L and /V switches can be used for either the 
  5297.        command line or msg_definition_file execution method. 
  5298.  
  5299.  
  5300. ΓòÉΓòÉΓòÉ 11.3.1. Input Message File Example ΓòÉΓòÉΓòÉ
  5301.  
  5302. Following is an example of an input message file: 
  5303.  
  5304. ; This is a sample of an input
  5305. ; message file for component MAB
  5306. ; starting with three comment lines.
  5307. MAB
  5308. MAB0100E: File not found
  5309. MAB0101?:
  5310. MAB0102H: Usage: del [drive:][path] filename
  5311. MAB0103?:
  5312. MAB0104I: %1 files copied
  5313. MAB0105W: Warning! All data will be destroyed!
  5314. MAB0106?:
  5315. MAB0107?:
  5316. MAB0108P: Do you wish to apply these patches (Y or N)? %0
  5317. MAB0109E: Divide overflow
  5318.  
  5319.  
  5320. ΓòÉΓòÉΓòÉ 12. MAP File to SYM File Creator (MAPSYM) ΓòÉΓòÉΓòÉ
  5321.  
  5322. The MAPSYM program creates .SYM files from .MAP files.  .SYM files are used by 
  5323. the kernel debugger for symbolic debugging. 
  5324.  
  5325. Note:  You must run MAPSYM from the directory in which the file to be converted 
  5326. is located. 
  5327.  
  5328. To create a .SYM file, follow these steps: 
  5329.  
  5330.    1. Make sure you are in the correct directory. 
  5331.  
  5332.    2. At the prompt type the following: 
  5333.  
  5334.             mapsym filename
  5335.  
  5336.       Note that the .MAP extension is not required. 
  5337.  
  5338.  
  5339. ΓòÉΓòÉΓòÉ 12.1. Help ΓòÉΓòÉΓòÉ
  5340.  
  5341. To display MAPSYM help, type MAPSYM at the prompt, with no arguments. The 
  5342. appropriate copyright statement appears, along with the following: 
  5343.  
  5344. usage: mapsym [-aln] mapfile
  5345.  
  5346.  
  5347. ΓòÉΓòÉΓòÉ 12.2. Options ΓòÉΓòÉΓòÉ
  5348.  
  5349. The following options may be used with MAPSYM: 
  5350.  
  5351.  /A   Omits Alphabetical sorting of symbols. 
  5352.  
  5353.  /N   Includes source code line Numbers in *.SYM file. 
  5354.  
  5355.  /L   Produces verbose Listing. 
  5356.  
  5357.  
  5358. ΓòÉΓòÉΓòÉ 13. View and Set Program Type For Executable File (MARKEXE) ΓòÉΓòÉΓòÉ
  5359.  
  5360. The MARKEXE program enables you to view and set the program type for an 
  5361. executable file. The program type identifies the OS/2 sessions in which a 
  5362. program can run. 
  5363.  
  5364. Use MARKEXE with the OS/2 Linear Executable Linker (LINK386) or the OS/2 
  5365. Segmented Executable Linker (LINK) to change or set the program type of 
  5366. programs you have created. 
  5367.  
  5368. You can set DLL initialization and termination and also enable long file name 
  5369. support. When using LINK386, you can set DLL initialization and termination; 
  5370. long file name support is already set. When using LINK, you can set DLL 
  5371. initialization and long file name support. 
  5372.  
  5373.  
  5374. ΓòÉΓòÉΓòÉ 13.1. Command-Line Syntax ΓòÉΓòÉΓòÉ
  5375.  
  5376. MARKEXE uses the following syntax: 
  5377.  
  5378. MARKEXE [/?] [FORCE] [NO] [options] filename...
  5379.  
  5380. Filename is a file name or a list of file names. Global file-name characters 
  5381. (*.EXE) also can be used. For descriptions of the above terms, see Syntax 
  5382. Definitions. If no option is given, DISPLAY is assumed. 
  5383.  
  5384. Typing MARKEXE /? at the command line displays the appropriate copyright 
  5385. statement along with a list of options. 
  5386.  
  5387.   DISPLAY         - display status of flags
  5388.   DLLINIT         - per-process initialization
  5389.   DLLTERM         - per-process termination
  5390.   WINDOWAPI       - window api (PM application)
  5391.   WINDOWCOMPAT    - window compatible application
  5392.   NOTWINDOWCOMPAT - not window compatible application
  5393.   UNSPECIFIED     - unspecified application type
  5394.   LFNS            - long file name support
  5395.  
  5396.  
  5397. ΓòÉΓòÉΓòÉ 13.1.1. Syntax Definitions ΓòÉΓòÉΓòÉ
  5398.  
  5399. MARKEXE has the following keywords, options, and program types. You can also 
  5400. specify any number of files to be viewed or marked. 
  5401.  
  5402. KEYWORDS 
  5403.  
  5404.  FORCE               Marks the executable file with OS/2 as the target 
  5405.                      operating system even though the file was marked for 
  5406.                      another operating system. Using FORCE might produce 
  5407.                      internally inconsistent executable files. 
  5408.  
  5409.  NO                  Sets the command to the opposite condition. This keyword 
  5410.                      does not apply to the DISPLAY, UNSPECIFIED, or WINDOWAPI 
  5411.                      options. 
  5412.  
  5413.  OPTIONS 
  5414.  
  5415.  DISPLAY             Displays the application type in a message; does not make 
  5416.                      any changes. 
  5417.  
  5418.  DLLINIT             Sets per process initialization for the dynamic link 
  5419.                      library. (Use with LINK386 only.) 
  5420.  
  5421.  DLLTERM             Sets per process termination for the dynamic link library. 
  5422.                      (Use with LINK only.) 
  5423.  
  5424.  LFNS                Enables support of long file names.  (Use with LINK only.) 
  5425.  
  5426.  PROGRAM TYPES 
  5427.  
  5428.  MARKEXE does not modify the file if the executable file's program type is the 
  5429.  same as the requested type.  It displays a message instead. 
  5430.  
  5431.  WINDOWAPI           The application is a Presentation Manager application and 
  5432.                      can run in the Presentation Manager session only. 
  5433.  
  5434.  WINDOWCOMPAT        The application can run in a Presentation Manager window 
  5435.                      or in an full-screen session. 
  5436.  
  5437.  NOTWINDOWCOMPAT     The application must run in an OS/2 full-screen session. 
  5438.  
  5439.  UNSPECIFIED         The application type is not known. By default, the OS/2 
  5440.                      operating system will force the program to run in a 
  5441.                      full-screen session. 
  5442.  
  5443.  Note:  Specifying an incorrect program type might cause undesirable results 
  5444.         when you try to run that program. For example, do not change a 
  5445.         WINDOWCOMPAT program to WINDOWAPI.
  5446.  
  5447.  
  5448. ΓòÉΓòÉΓòÉ 13.1.2. Viewing Program Type ΓòÉΓòÉΓòÉ
  5449.  
  5450. To display the program type of an executable file without changing the file, 
  5451. specify only a file name, omitting an option. 
  5452.  
  5453.    MARKEXE filename.exe
  5454.  
  5455. Example 
  5456.  
  5457. To view the program type of MYPROG.EXE, type the following: 
  5458.  
  5459.    MARKEXE myprog.exe
  5460.  
  5461. MARKEXE displays the type in a message that looks like this: 
  5462.  
  5463.    myprog.exe: OS/2 1.x, WINDOWCOMPAT, LFNS
  5464.  
  5465.  
  5466. ΓòÉΓòÉΓòÉ 13.1.3. Setting Program Type ΓòÉΓòÉΓòÉ
  5467.  
  5468. To set the program type of an executable file, specify one of the program 
  5469. types. More than one executable file can be set to the same program type on a 
  5470. single command line. 
  5471.  
  5472.    MARKEXE type filename.exe another.exe
  5473.  
  5474. Examples 
  5475.  
  5476. To set WINDOWCOMPAT as the program type of MYPROG.EXE, type: 
  5477.  
  5478.    MARKEXE WINDOWCOMPAT myprog.exe
  5479.  
  5480. To set WINDOWAPI as the program type of several executable files, type: 
  5481.  
  5482.    MARKEXE WINDOWAPI marion.exe alex.exe
  5483.  
  5484.  
  5485. ΓòÉΓòÉΓòÉ 14. Message Segment Binder (MSGBIND) ΓòÉΓòÉΓòÉ
  5486.  
  5487. The MSGBIND program binds a message segment to an executable program. It does 
  5488. this by reading an input file that specifies the executable files to modify. 
  5489. For each executable file, MSGBIND specifies which message files to scan, and 
  5490. for each message file, it specifies which messages to include in the executable 
  5491. file. Although the resulting executable file will be larger, access to messages 
  5492. will be faster. 
  5493.  
  5494. In the OS/2 operating system, message segment/objects are packed with other 
  5495. application code. If the size of the code segment/object and the bound messages 
  5496. exceeds 64KB, the following statement in the program definition file (.DEF) 
  5497. isolates the application code from the message statement/object: 
  5498.  
  5499.  16 Bit Applications 
  5500.       SEGMENT 
  5501.  
  5502.  32 Bit Applications 
  5503.       SEGMENT '_MSGSEG32' CLASS 'CODE' 
  5504.  
  5505.  
  5506. ΓòÉΓòÉΓòÉ 14.1. Syntax ΓòÉΓòÉΓòÉ
  5507.  
  5508. The MSGBIND command line has the following form: 
  5509.  
  5510. MSGBIND infile
  5511.  
  5512. The infile field specifies the input file that identifies the executable files, 
  5513. output message files, and message numbers that will be bound.  The input-file 
  5514. name can be any valid OS/2 file name and can include an optional file name 
  5515. extension. 
  5516.  
  5517.  
  5518. ΓòÉΓòÉΓòÉ 14.1.1. Input File ΓòÉΓòÉΓòÉ
  5519.  
  5520. The input file contains the following three types of lines: 
  5521.  
  5522.      > Executable file 
  5523.  
  5524.      < Message file 
  5525.  
  5526.      Message numbers. 
  5527.  
  5528.  Executable file 
  5529.  
  5530.  The File in which messages are to be bound is preceded by a greater-than 
  5531.  symbol (>). The name of the file can be any valid OS/2 file name. 
  5532.  
  5533.  Two or more different executable files can be modified by the specifications 
  5534.  found in one input file. MSGBIND continues to use this file until it 
  5535.  encounters another greater-than symbol. 
  5536.  
  5537.  Message file 
  5538.  
  5539.  The message file to be read from is preceded by a less-than sign (<). You 
  5540.  create this file by using the MKMSGF program. The name can be any valid OS/2 
  5541.  file name. All message numbers that follow it are located in the specified 
  5542.  message file and are copied to the current output executable file. MSGBIND 
  5543.  reads the message-number list until it encounters one of the following: the 
  5544.  end of the input file, a new output specification, or a new input message 
  5545.  file. 
  5546.  
  5547.  Message Numbers 
  5548.  
  5549.  The messages in the message file are listed below the message-file name.  Only 
  5550.  those message numbers that you specify will be added. You can also specify an 
  5551.  asterisk (*) to indicate that all messages within the message file will be 
  5552.  added. Message numbers must consist of a three-letter component identifier 
  5553.  followed by a four-digit message number. 
  5554.  
  5555.  See Input Message File for a more detailed description of message numbers. 
  5556.  
  5557.  
  5558. ΓòÉΓòÉΓòÉ 14.1.2. Multiple Code-Page Message Files ΓòÉΓòÉΓòÉ
  5559.  
  5560. Multiple code-page message files can also be bound to an executable file, which 
  5561. enables a user to bind to an application messages for different countries. 
  5562.  
  5563. The following example shows how three messages in two different languages can 
  5564. be bound to an executable file: 
  5565.  
  5566. MSGBIND infile
  5567.  
  5568. where infile consists of the following: 
  5569.  
  5570.  >PROG1.EXE
  5571.  <TEXTUS.MSG
  5572.  MSG0001
  5573.  MSG0002
  5574.  MSG0003
  5575.  <TEXTIT.MSG
  5576.  MSG0001
  5577.  MSG0002
  5578.  MSG0003
  5579.  
  5580. where: 
  5581.  
  5582.      PROG1.EXE is the executable file to be modified. 
  5583.  
  5584.      TEXTUS.MSG is the file, created using MKMSGF, which contains messages in 
  5585.       US English. 
  5586.  
  5587.      TEXTIT.MSG is the file, created using MKMSGF, which contains the same 
  5588.       messages translated into Italian. 
  5589.  
  5590.      MSGnnnn defines the messages to be bound to the application: 
  5591.  
  5592.       MSG            Message component ID 
  5593.       0001           Message number 
  5594.  
  5595.  
  5596. ΓòÉΓòÉΓòÉ 14.1.3. Help ΓòÉΓòÉΓòÉ
  5597.  
  5598. To display MSGBIND help, type MSGBIND at the prompt, with no parameters. The 
  5599. following will be displayed: 
  5600.  
  5601. usage: MSGBIND scriptfile
  5602.  
  5603.  
  5604. ΓòÉΓòÉΓòÉ 14.2. How Message Retrieval Works ΓòÉΓòÉΓòÉ
  5605.  
  5606. When an application requests the message retriever for text associated with a 
  5607. message number, a test is made to determine if there is a bound message segment 
  5608. with this executable file.  If true, each bound message segment is searched for 
  5609. a match with the current session's code-page number. 
  5610.  
  5611. If a match is made, then the message number is searched for.  If it is found, 
  5612. the message will be returned to the caller. Otherwise, the search of remaining 
  5613. bound message segments will continue. 
  5614.  
  5615. If no match results from a search of all message segments, the message file on 
  5616. the disk is searched. DosGetMessage will access the message file under any of 
  5617. the following conditions: 
  5618.  
  5619.      The message file is in the current directory. 
  5620.      The message file is in the path specified in the DPATH environment 
  5621.       variable (protect mode). 
  5622.      The message file is in the path specified in the APPEND environment 
  5623.       variable (real mode). 
  5624.      The fully-qualified file name is specified in DosGetMessage. 
  5625.  
  5626.  
  5627. ΓòÉΓòÉΓòÉ 14.2.1. Sample Input File ΓòÉΓòÉΓòÉ
  5628.  
  5629. >c:\cmd.exe
  5630. <c:\os20\dosutil.msg
  5631. DOS0100
  5632. DOS0123
  5633. DOS0245
  5634. >c:\format.exe
  5635. <c:\os20\dosutil.msg
  5636. DOS0001
  5637. DOS0006
  5638. <c:\format.msg
  5639. FMT0001
  5640. FMT0002
  5641. <c:\myown.msg
  5642. *
  5643.  
  5644. The first line of a MSGBIND input file specifies that the executable file to 
  5645. modify is CMD.EXE.  The messages DOS0100, DOS0123, and DOS0245 are read from 
  5646. the file DOSUTIL.MSG and added to the CMD.EXE file.  The MSGBIND program then 
  5647. encounters an executable-file option for the FORMAT.EXE file.  The messages 
  5648. DOS0001 and DOS0006 are read from DOSUTIL.MSG and added to FORMAT.EXE.  Next, 
  5649. the messages FMT0001 and FMT0002 are read from the file FORMAT.MSG and added to 
  5650. FORMAT.EXE.  Finally, because an asterisk is specified, all the messages are 
  5651. read from the file MYOWN.MSG and added to FORMAT.EXE. 
  5652.  
  5653. The files DOSUTIL.MSG and FORMAT.MSG in this example are two 
  5654. output-message-file names from the MKMSGF program. 
  5655.  
  5656.  
  5657. ΓòÉΓòÉΓòÉ 15. Object Utility Description ΓòÉΓòÉΓòÉ
  5658.  
  5659. Object Utility/2 provides a facility for registering Workplace Shell classes, 
  5660. creating instances of Workplace Shell classes, and modifying instances of 
  5661. Workplace Shell classes. 
  5662.  
  5663. The following attributes can be set or modified for instances of Workplace 
  5664. Shell objects: 
  5665.  
  5666.      Template 
  5667.  
  5668.      Copy 
  5669.  
  5670.      Delete 
  5671.  
  5672.      Rename 
  5673.  
  5674.      Print 
  5675.  
  5676.      Link 
  5677.  
  5678.      Move 
  5679.  
  5680.      Drag 
  5681.  
  5682.  The attributes modify the behavior of the objects to allow or not allow the 
  5683.  above actions. For example, the Template attribute allows you to create a 
  5684.  template. Some objects do not allow specific behaviors even if the attribute 
  5685.  is selected. 
  5686.  
  5687.  A Workplace Shell Class must be registered with the Workplace Shell before it 
  5688.  will be recognized by Object Utility/2. After the object class is registered, 
  5689.  an instance of that class can be created. The Object Utility/2 automates these 
  5690.  procedures of object class registration and instantiation.  This tool can 
  5691.  create an instance of an object from a class that has already been 
  5692.  instantiated or can modify an existing instance. 
  5693.  
  5694.  Registration of a class is performed by opening the main view of Object 
  5695.  Utility/2.  The class name and DLL name must be provided.  The class is not 
  5696.  registered if it has been registered previously. 
  5697.  
  5698.  To modify an existing instance, the icon representing the class is dragged to 
  5699.  and dropped on top of Object Utility/2. You can enter the object ID and class 
  5700.  name after opening the main view. 
  5701.  
  5702.  After the item to be installed is dropped, a dialog box is displayed to obtain 
  5703.  registration and instantiation information. 
  5704.  
  5705.  To destroy an object created by this tool, the object can be dragged and 
  5706.  dropped onto the shredder object on the Workplace Shell desktop (if the no 
  5707.  drag and no delete options are not selected and the object allows deletion). A 
  5708.  mechanism to deregister an object class is not provided with this tool. 
  5709.  
  5710.  
  5711. ΓòÉΓòÉΓòÉ 15.1. Class Name ΓòÉΓòÉΓòÉ
  5712.  
  5713. Class name is a list of all the registered classes that have DLLs available on 
  5714. your system.  OS/2 allows classes to be registered without the DLLs available, 
  5715. but Object Utility/2 does not.  You can select a class from the list or enter 
  5716. one manually.  This field is required when registering a new class, modifying 
  5717. an existing instance that was not dropped on Object Utility/2, or creating a 
  5718. new instance. 
  5719.  
  5720.  
  5721. ΓòÉΓòÉΓòÉ 15.2. DLL Name ΓòÉΓòÉΓòÉ
  5722.  
  5723. The DLL name must be a fully qualified path and file name if the DLL is not 
  5724. located in a DLL search path. This field is required if you are registering a 
  5725. class. 
  5726.  
  5727.  
  5728. ΓòÉΓòÉΓòÉ 15.3. Object ID ΓòÉΓòÉΓòÉ
  5729.  
  5730. The Object ID must be enclosed in angle brackets(<>). This field is required 
  5731. when you modify an existing object that was not dropped on Object Utility/2. 
  5732. You are warned if you try to create an instance that is not a template, without 
  5733. an Object ID.  You may create the new instance without an object ID. The Object 
  5734. ID must be unique, if specified, when creating an instance. Templates cannot 
  5735. have an object ID.  Instances with an object ID cannot be made into a template. 
  5736.  
  5737.  
  5738. ΓòÉΓòÉΓòÉ 15.4. Title Field ΓòÉΓòÉΓòÉ
  5739.  
  5740. The Title field is required when creating a new object. You can alter the title 
  5741. of an existing object by providing a different title in this field. 
  5742.  
  5743.  
  5744. ΓòÉΓòÉΓòÉ 15.5. Location Field ΓòÉΓòÉΓòÉ
  5745.  
  5746. You can select an existing location from the location list or enter a location 
  5747. manually. The location must be an object ID that represents a folder (enclosed 
  5748. in angle brackets) or a fully qualified path name. 
  5749.  
  5750.  
  5751. ΓòÉΓòÉΓòÉ 15.6. Options ΓòÉΓòÉΓòÉ
  5752.  
  5753.  Create Instance Creates an instance of the class. 
  5754.  
  5755.  Template  Creates a template of the class in the Templates folder. 
  5756.  
  5757.  No Copy   Removes Copy from the pop-up menu. 
  5758.  
  5759.  No delete Removes Delete from the pop-up menu. 
  5760.  
  5761.  No Rename Removes Rename from the pop-up menu. 
  5762.  
  5763.  No Print  Removes Print from the pop-up menu. 
  5764.  
  5765.  No Link   Removes Link from the pop-up menu. 
  5766.  
  5767.  No Move   Removes Move from the pop-up menu. 
  5768.  
  5769.  No drag   Prevents dragging of the object. 
  5770.  
  5771.  
  5772. ΓòÉΓòÉΓòÉ 16. Program Maintenance Utility (NMAKE) ΓòÉΓòÉΓòÉ
  5773.  
  5774. The Program Maintenance Utility (NMAKE) automates the process of updating 
  5775. project files.  NMAKE compares the modification dates for one set of files (the 
  5776. target files) with those of another set of files (the dependent files).  If any 
  5777. dependent files have changed more recently than the target files, NMAKE 
  5778. executes a series of commands to bring the targets up-to-date. 
  5779.  
  5780.  
  5781. ΓòÉΓòÉΓòÉ 16.1. Why Use NMAKE? ΓòÉΓòÉΓòÉ
  5782.  
  5783. The most common use of NMAKE is to automate the process of updating a project 
  5784. after you make a change to a source file.  Large projects tend to have many 
  5785. source files.  Often, only a few of your source files need to be compiled when 
  5786. you make a change.  You set up a special text file called a "description" file 
  5787. (or "makefile") that tells NMAKE: 
  5788.  
  5789.      Which files depend on others 
  5790.      Which commands, such as compile and link commands, need to be carried out 
  5791.       to bring your program up-to-date 
  5792.  
  5793.  This use of NMAKE is only one example of its power.  By building suitable 
  5794.  description files, you can use NMAKE to 
  5795.  
  5796.      Make backups 
  5797.      Configure data files 
  5798.      Run programs when data files are modified 
  5799.  
  5800.  
  5801. ΓòÉΓòÉΓòÉ 16.2. Running NMAKE ΓòÉΓòÉΓòÉ
  5802.  
  5803. Run NMAKE by typing NMAKE on the operating-system command line.  Supply input 
  5804. to NMAKE by either of two methods: 
  5805.  
  5806.      Enter the input directly on the command line. 
  5807.      Put your input into a command file (a text file, also called a response 
  5808.       file) and enter the file name on the command line. 
  5809.  
  5810.  Press CTRL+C at any time during an NMAKE run to return to the operating 
  5811.  system. 
  5812.  
  5813.  Note:  Under the OS/2 operating system, do not use the ampersand character (&) 
  5814.         to combine the NMAKE command with the CD, CHDIR, or SET command. 
  5815.  
  5816.  
  5817. ΓòÉΓòÉΓòÉ 16.2.1. Using the Command Line ΓòÉΓòÉΓòÉ
  5818.  
  5819. When using NMAKE at the command line, keep the following in mind: 
  5820.  
  5821.      All fields are optional. 
  5822.      NMAKE always looks first in the current directory for a description file 
  5823.       called MAKEFILE. If MAKEFILE does not exist, NMAKE uses the <filename> 
  5824.       given with the /F (specify description file) option. 
  5825.  
  5826.  
  5827. ΓòÉΓòÉΓòÉ 16.2.1.1. Command-Line Syntax ΓòÉΓòÉΓòÉ
  5828.  
  5829. NMAKE [options] [macrodefinitions] [targets] [/F filname]
  5830.  
  5831.  <options> 
  5832.       Specifies options that modify NMAKE's actions. 
  5833.  
  5834.  <macrodefinitions> 
  5835.       Lists macro definitions for NMAKE to use.  Macro definitions that contain 
  5836.       spaces must be enclosed by double quotation marks. 
  5837.  
  5838.  <targets> 
  5839.       Specifies the names of one or more target files to build. If you do not 
  5840.       list any targets, NMAKE builds the first target in the description file. 
  5841.  
  5842.  /F <filename> 
  5843.       Gives the name of the description file where you specify file 
  5844.       dependencies and which commands to execute when a file is out-of-date. 
  5845.  
  5846.  The following example: 
  5847.  
  5848.   NMAKE /S "program = flash" SORT.EXE SEARCH.EXE
  5849.  
  5850.      Invokes NMAKE with the /S option 
  5851.      Defines a macro, assigning the string "flash" to the macro "program" 
  5852.      Specifies two targets: SORT.EXE and SEARCH.EXE 
  5853.  
  5854.  By default, NMAKE uses the file named MAKEFILE as the description file. 
  5855.  
  5856.  
  5857. ΓòÉΓòÉΓòÉ 16.2.1.2. Command-Line Help ΓòÉΓòÉΓòÉ
  5858.  
  5859. To display NMAKE help, type NMAKE /? at the prompt.  The appropriate copyright 
  5860. statement appears, along with the following: 
  5861.  
  5862. Usage:
  5863.     NMAKE @commandfile
  5864.     NMAKE /help
  5865.     NMAKE [/nologo] [/acdeinpqrst?] [/f makefile] [/x stderrfile] 
  5866.  
  5867.     [macrodefs][targets]
  5868.  
  5869. Where the options stand for
  5870.  /a    force All targets to be built
  5871.  /c    Cryptic mode; suppress sign-on banner & warning messages
  5872.  /d    Display modification dates
  5873.  /e    Environment variables override macros in the makefile
  5874.  /i    Ignore exit codes of commands invoked
  5875.  /n    No execute mode; display commands only
  5876.  /p    Print macro definitions & target descriptions
  5877.  /q    Query if target is up to date; for use in batch files
  5878.  /r    inference Rules from 'tools.ini' to be ignored
  5879.  /s    Silent execution of commands
  5880.  /t    Touch targets with current date & time
  5881.  /?    Help message
  5882.  /help  Help message
  5883.  /nologo do not display sign-on banner
  5884.  
  5885.  
  5886. ΓòÉΓòÉΓòÉ 16.2.2. Using NMAKE Command Files ΓòÉΓòÉΓòÉ
  5887.  
  5888. A command file is a response file used to extend command-line input to NMAKE. 
  5889.  
  5890. You can split input to NMAKE between the command line and a command file. Use 
  5891. the name of a command file (preceded by @) where you normally type the input 
  5892. information on the command line. 
  5893.  
  5894. Why Use a Command File? 
  5895.  
  5896. Use a command file for 
  5897.  
  5898.      Complex and long commands you type frequently 
  5899.      Strings of command-line arguments, such as macro definitions, that exceed 
  5900.       the limit for command-line length 
  5901.  
  5902.       Note:  A command file is not the same as a description file. For 
  5903.              information about description files, see Description Files 
  5904.  
  5905.  Command File Syntax 
  5906.  
  5907.  To provide input to NMAKE with a command file, type 
  5908.  
  5909.   NMAKE @commandfile
  5910.  
  5911.  In the <commandfile> field, enter the name of a file containing the same 
  5912.  information as is normally entered on the command line. 
  5913.  
  5914.  NMAKE treats line breaks that occur between arguments as spaces. Macro 
  5915.  definitions can span multiple lines if you end each line except the last with 
  5916.  a backslash (\).  Macro definitions that contain spaces must be enclosed by 
  5917.  quotation marks, just as if they were entered directly on the command line. 
  5918.  
  5919.  Example 
  5920.  
  5921.  The following is a command file called UPDATE: 
  5922.  
  5923.   /S "program \
  5924.   = flash" SORT.EXE SEARCH.EXE
  5925.  
  5926.  You can use this command file by typing the following command: 
  5927.  
  5928.   NMAKE @UPDATE
  5929.  
  5930.  This runs NMAKE using: 
  5931.  
  5932.      The /S option 
  5933.      The macro definition "program = flash" 
  5934.      The targets specified as SORT.EXE and SEARCH.EXE 
  5935.      The description file MAKEFILE by default 
  5936.  
  5937.  Note that the backslash allows the macro definition to span two lines. 
  5938.  
  5939.  
  5940. ΓòÉΓòÉΓòÉ 16.3. Options ΓòÉΓòÉΓòÉ
  5941.  
  5942. The following describes the options you can use with NMAKE. 
  5943.  
  5944. Keep the following in mind when using options: 
  5945.  
  5946.      Option characters are not case sensitive; /I and /i are equivalent. 
  5947.      You can use either a slash or dash before the option characters; -a and 
  5948.       /a are equivalent. 
  5949.  
  5950.  
  5951. ΓòÉΓòÉΓòÉ 16.3.1. Produce Error File (/X) ΓòÉΓòÉΓòÉ
  5952.  
  5953. Syntax: /X stderrfile 
  5954.  
  5955. This option produces a standard error file. 
  5956.  
  5957.  
  5958. ΓòÉΓòÉΓòÉ 16.3.2. Build All Targets (/A) ΓòÉΓòÉΓòÉ
  5959.  
  5960. Syntax: /A 
  5961.  
  5962. This option builds all specified targets even if they are not out-of-date with 
  5963. respect to their dependent files. 
  5964.  
  5965. See Description Files. 
  5966.  
  5967.  
  5968. ΓòÉΓòÉΓòÉ 16.3.3. Suppress Messages (/C) ΓòÉΓòÉΓòÉ
  5969.  
  5970. Syntax: /C 
  5971.  
  5972. This option suppresses display of the NMAKE sign-on banner, nonfatal error 
  5973. messages, and warning messages.  To suppress the sign-on banner without 
  5974. suppressing other messages, use the /NOLOGO option. 
  5975.  
  5976.  
  5977. ΓòÉΓòÉΓòÉ 16.3.4. Display Modification Dates (/D) ΓòÉΓòÉΓòÉ
  5978.  
  5979. Syntax: /D 
  5980.  
  5981. This option displays the modification date of each file when the dates of 
  5982. target and dependent files are checked. 
  5983.  
  5984. See Description Files. 
  5985.  
  5986.  
  5987. ΓòÉΓòÉΓòÉ 16.3.5. Override Environment Variables (/E) ΓòÉΓòÉΓòÉ
  5988.  
  5989. Syntax: /E 
  5990.  
  5991. This option disables inherited macro redefinition. 
  5992.  
  5993. NMAKE inherits all current environment variables as macros, which can be 
  5994. redefined in a description file. The /E option disables any redefinition - the 
  5995. inherited macro always has the value of the environment variable. 
  5996.  
  5997.  
  5998. ΓòÉΓòÉΓòÉ 16.3.6. Specify Description File (/F) ΓòÉΓòÉΓòÉ
  5999.  
  6000. Syntax: /F filename 
  6001.  
  6002. This option specifies <filename> as the name of the description file to use. 
  6003. If a dash (-) is entered instead of a file name, NMAKE reads a description file 
  6004. from the standard input device, typically the keyboard. 
  6005.  
  6006. If a filename is not specified, it defaults to MAKEFILE. 
  6007.  
  6008.  
  6009. ΓòÉΓòÉΓòÉ 16.3.7. Display Help (/HELP or /?) ΓòÉΓòÉΓòÉ
  6010.  
  6011. Syntax:   /HELP    OR   /? 
  6012.  
  6013. This option displays a brief summary of NMAKE syntax. 
  6014.  
  6015.  
  6016. ΓòÉΓòÉΓòÉ 16.3.8. Ignore Exit Codes (/I) ΓòÉΓòÉΓòÉ
  6017.  
  6018. Syntax: /I 
  6019.  
  6020. This option ignores exit codes (also called error level or return codes) 
  6021. returned by programs such as compilers or linkers called by NMAKE.  If this 
  6022. option is not specified, NMAKE ends when any program returns a nonzero exit 
  6023. code. 
  6024.  
  6025.  
  6026. ΓòÉΓòÉΓòÉ 16.3.9. Display Commands (/N) ΓòÉΓòÉΓòÉ
  6027.  
  6028. Syntax: /N 
  6029.  
  6030. This option causes NMAKE commands to be displayed but not executed.  Use the /N 
  6031. option to: 
  6032.  
  6033.      Check which targets are out-of-date with respect to their dependents 
  6034.  
  6035.      Debug description files 
  6036.  
  6037.  
  6038. ΓòÉΓòÉΓòÉ 16.3.10. Suppress Sign-On Banner (/NOLOGO) ΓòÉΓòÉΓòÉ
  6039.  
  6040. Syntax: /NOLOGO 
  6041.  
  6042. This option suppresses the sign-on banner display when NMAKE is started.  If 
  6043. you want to suppress nonfatal error messages and warnings as well, use the 
  6044. suppress messages (/C) option. 
  6045.  
  6046.  
  6047. ΓòÉΓòÉΓòÉ 16.3.11. Print Macro and Target Definitions (/P) ΓòÉΓòÉΓòÉ
  6048.  
  6049. Syntax: /P 
  6050.  
  6051. This option writes out all macro definitions and target definitions. Output is 
  6052. sent to the standard output device (typically the display). 
  6053.  
  6054.  
  6055. ΓòÉΓòÉΓòÉ 16.3.12. Return Exit Code (/Q) ΓòÉΓòÉΓòÉ
  6056.  
  6057. Syntax: /Q 
  6058.  
  6059. This option causes NMAKE to return either of the following: 
  6060.  
  6061.      A 0 exit code if all targets built during-an-NMAKE run are up-to-date 
  6062.      A nonzero exit code if they are not up-to-date 
  6063.  Use this option to run NMAKE from within a batch file. 
  6064.  
  6065.  
  6066. ΓòÉΓòÉΓòÉ 16.3.13. Ignore TOOLS.INI File (/R) ΓòÉΓòÉΓòÉ
  6067.  
  6068. Syntax: /R 
  6069.  
  6070. This option ignores the following: 
  6071.  
  6072.      All inference rules and macros contained in the TOOLS.INI file 
  6073.      All predefined inference rules and macros 
  6074.  
  6075.  
  6076. ΓòÉΓòÉΓòÉ 16.3.14. Suppress Command Display (/S) ΓòÉΓòÉΓòÉ
  6077.  
  6078. Syntax: /S 
  6079.  
  6080. This option suppresses the display of commands as they are executed by NMAKE. 
  6081. It does not suppress the display of messages generated by the commands 
  6082. themselves. 
  6083.  
  6084. The /N command (Display Commands) takes precedence over the /S option.  If you 
  6085. use /N and /S together, commands are displayed but not executed. 
  6086.  
  6087.  
  6088. ΓòÉΓòÉΓòÉ 16.3.15. Change Target Modification Dates (/T) ΓòÉΓòÉΓòÉ
  6089.  
  6090. Syntax: /T 
  6091.  
  6092. This option changes or "touches" the modification dates for out-of-date target 
  6093. files to the current date. No commands are executed, and the target file is 
  6094. left unchanged. 
  6095.  
  6096.  
  6097. ΓòÉΓòÉΓòÉ 16.4. Description Files ΓòÉΓòÉΓòÉ
  6098.  
  6099. NMAKE uses a description file to determine what to do.  In its simplest form, a 
  6100. description file tells NMAKE which files depend on others and which commands 
  6101. need to be executed if a file changes. 
  6102.  
  6103. A description file looks like this: 
  6104.  
  6105.  
  6106. targets...: dependents...Γöé
  6107.      command             Γöé ΓöÇΓöÇdescription block
  6108.         :                Γöé
  6109.  
  6110. targets... : dependents...
  6111.      command
  6112.  
  6113.  
  6114. ΓòÉΓòÉΓòÉ 16.4.1. Description Blocks ΓòÉΓòÉΓòÉ
  6115.  
  6116. A dependent relationship between files is defined in a description block.  A 
  6117. "description block" indicates the relationship among various parts of the 
  6118. program.  It contains commands to bring all components up to date.  The 
  6119. description file can contain up to 1048 description blocks. 
  6120.  
  6121. Description File                       Description Block
  6122. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6123. Γöé Description  Γöé     Γöé                Γöé                           Γöé
  6124. Γöé   Block 1    Γöé     Γöé                Γöétargets... : dependents... Γöé
  6125. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                Γöé command                   Γöé
  6126. Γöé Descr Blk 2  Γöé                      Γöé command                   Γöé
  6127. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                Γöé command                   Γöé
  6128. Γöé      :       Γöé     Γöé                Γöé    :                      Γöé
  6129. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ     Γöé                Γöé                           Γöé
  6130. Γöé Descr Blk n  Γöé     Γöé                Γöé                           Γöé
  6131. Γöé              Γöé     Γöé                Γöé                           Γöé
  6132. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6133.  
  6134.  
  6135. ΓòÉΓòÉΓòÉ 16.4.2. Special Features ΓòÉΓòÉΓòÉ
  6136.  
  6137. The following are special features of description blocks: 
  6138.  
  6139.      Description files can contain macro definitions and use macros in 
  6140.       description blocks. Macros allow easy substitution of one text string for 
  6141.       another. 
  6142.  
  6143.      Description files can contain inference rules.  Inference rules allow 
  6144.       NMAKE to infer which commands to execute based on the file-name 
  6145.       extensions used for targets and dependents. 
  6146.  
  6147.      You can specify directories for NMAKE to search for dependent files by 
  6148.       using the following syntax: 
  6149.  
  6150.             targets : {directory1;directory2...}dependents
  6151.  
  6152.       NMAKE searches the current directory first, then <directory1>, 
  6153.       <directory2>, and so on. 
  6154.  
  6155.      A command can be placed on the same line as the target and dependent 
  6156.       files by using a semicolon (;) as depicted below: 
  6157.  
  6158.             targets... : dependents... ; command
  6159.  
  6160.      A long command can span several lines if each line ends with a backslash 
  6161.       ( \ ): 
  6162.  
  6163.             command \
  6164.               continuation of command
  6165.  
  6166.      The execution of a command can be modified if you precede the command 
  6167.       with special characters. 
  6168.  
  6169.      If you do not specify a command in a description block, NMAKE looks for 
  6170.       an inference rule to build the target. 
  6171.  
  6172.      DOS and OS/2 wild card characters (* and ?) can be used in description 
  6173.       blocks.  For example, the following description block compiles all source 
  6174.       files with the .C extension: 
  6175.  
  6176.             ASTRO.EXE : *.C
  6177.               ICC $**
  6178.  
  6179.      NMAKE will expand the *.C specification into the complete list of C files 
  6180.       in the current directory.  $** is a complete list of dependents specified 
  6181.       for the current target. 
  6182.  
  6183.      NMAKE uses several punctuation characters in its syntax. To use one of 
  6184.       these characters as a literal character, place an escape character ( ^ ) 
  6185.       in front of it. For a list of punctuation characters, see Escape 
  6186.       Characters. 
  6187.  
  6188.      Normally a target file can appear in only one description block.  A 
  6189.       special syntax allows you to use a target in several description blocks. 
  6190.  
  6191.      A special syntax allows you to determine the drive, path, base name, and 
  6192.       extension of the first dependent file in a description block. 
  6193.  
  6194.  
  6195. ΓòÉΓòÉΓòÉ 16.4.3. Targets in Several Description Blocks ΓòÉΓòÉΓòÉ
  6196.  
  6197. Using a file as a target in more than one description block causes NMAKE to 
  6198. end.  You can overcome this limitation by using two colons (::) as the 
  6199. target/dependent separator instead of one colon. 
  6200.  
  6201. The following description block is permissible: 
  6202.  
  6203. X :: A
  6204.   command
  6205. X :: B
  6206.   command
  6207.  
  6208. The following causes NMAKE to end: 
  6209.  
  6210. X : A
  6211.   command
  6212. X : B
  6213.   command
  6214.  
  6215. It is permissible to use single colons if the target/dependent lines are 
  6216. grouped above the same commands. The following is permissible: 
  6217.  
  6218. X : A
  6219. X : B
  6220.   command
  6221. Double Colon (::) Target/Dependent Separator Example 
  6222.  
  6223. TARGET.LIB :: A.ASM B.ASM C.ASM
  6224.   ML A.ASM B.ASM C.ASM
  6225.   LIB TARGET -+A.OBJ -+B.OBJ -+C.OBJ;
  6226.  
  6227. TARGET.LIB :: D.C E.C
  6228.   ICC /C D.C E.C
  6229.   LIB TARGET -+D.OBJ -+E.OBJ;
  6230.  
  6231. These two description blocks both update the library named TARGET.LIB.  If any 
  6232. of the assembly-language files have changed more recently than the library 
  6233. file, NMAKE executes the commands in the first block to assemble the source 
  6234. files and update the library.  Similarly, if any of the C-language files have 
  6235. changed, NMAKE executes the second group of commands to compile the C files and 
  6236. update the library. 
  6237.  
  6238.  
  6239. ΓòÉΓòÉΓòÉ 16.5. Macros ΓòÉΓòÉΓòÉ
  6240.  
  6241. Macros provide a convenient way to replace one string with another in the 
  6242. description file.  The text is automatically replaced each time NMAKE is run. 
  6243. This feature makes it easy to change text throughout the description file 
  6244. without having to edit every line that uses the text.  Two common uses of 
  6245. macros are: 
  6246.  
  6247. Two Common Uses of Macros 
  6248.  
  6249.      To create a standard description file for several projects. The macro 
  6250.       represents the file names in commands.  These file names are defined when 
  6251.       you run NMAKE.  When you switch to a different project, changing the 
  6252.       macro changes the file names NMAKE uses throughout the description file. 
  6253.  
  6254.      To control the options that NMAKE passes to the compiler, assembler, or 
  6255.       linker.  When using a macro to specify the options, you can quickly 
  6256.       change the options throughout the description file in one easy step. 
  6257.  
  6258.  A macro can be defined : 
  6259.  
  6260.       In a Description File 
  6261.       On the Command Line 
  6262.       In TOOLS.INI 
  6263.       Through inheritance from Environment Variables 
  6264.  
  6265.  
  6266. ΓòÉΓòÉΓòÉ 16.5.1. Macros Example ΓòÉΓòÉΓòÉ
  6267.  
  6268. program = FLASH
  6269. c = LINK
  6270. options =
  6271.  
  6272. $(program).EXE : $(program).OBJ
  6273.   $c $(options) $(program).OBJ;
  6274.  
  6275. The example above defines three macros.  The description block executes the 
  6276. following commands: 
  6277.  
  6278. FLASH.EXE : FLASH.OBJ
  6279.   LINK  FLASH.OBJ;
  6280.  
  6281.  
  6282. ΓòÉΓòÉΓòÉ 16.5.2. Special Features ΓòÉΓòÉΓòÉ
  6283.  
  6284. Macros have the following special features: 
  6285.  
  6286.      When using a macro, you can substitute text in the macro itself. 
  6287.  
  6288.      Several macros have been predefined for special purposes. 
  6289.  
  6290.      If a macro is defined more than once, precedence rules govern which 
  6291.       definition is used. 
  6292.  
  6293.      You can also put macros into your TOOLS.INI file. 
  6294.  
  6295.  
  6296. ΓòÉΓòÉΓòÉ 16.5.3. Macros in a Description File ΓòÉΓòÉΓòÉ
  6297.  
  6298. Before using a macro, you need to define it, either on the NMAKE command line 
  6299. or in your description file.  Description file macro definitions look like 
  6300. this: 
  6301.  
  6302. macroname = macrostring
  6303.  
  6304. Macro names can be any combination of alphanumeric characters and the 
  6305. underscore character ( _ ), and they are case-sensitive. A macro string can be 
  6306. any string of characters. 
  6307.  
  6308. The first character of the macro name must be the first character on the line. 
  6309. NMAKE ignores any spaces before or after the equal sign ( = ). 
  6310.  
  6311. The macro string can be a null string and can contain embedded spaces. Do not 
  6312. enclose the macro string in quotation marks; quotation marks are used only when 
  6313. you define macros on the command line. 
  6314.  
  6315.  
  6316. ΓòÉΓòÉΓòÉ 16.5.4. Macros on the Command Line ΓòÉΓòÉΓòÉ
  6317.  
  6318. Before using a macro, you need to define it, either on the NMAKE command line 
  6319. or in your description file.  Command-line macro definitions look like this: 
  6320.  
  6321. macroname=macrostring
  6322.  
  6323. No spaces can surround the equal sign.  If you embed spaces, NMAKE might 
  6324. misinterpret your macro.  If your macro string contains embedded spaces, 
  6325. enclose it in double quotation marks ( " ) like this: 
  6326.  
  6327. macroname="macro string"
  6328.  
  6329. or simply enclose the entire macro definition in double quotation marks ( " ) 
  6330. like this: 
  6331.  
  6332. "macroname = macro string"
  6333.  
  6334. Macro names can be any combination of alphanumeric characters and the 
  6335. underscore character ( _ ), and they are case-sensitive. A macro string can be 
  6336. any string of characters or a null string. 
  6337.  
  6338.  
  6339. ΓòÉΓòÉΓòÉ 16.5.5. Inherited Macros ΓòÉΓòÉΓòÉ
  6340.  
  6341. NMAKE inherits all current environment variables as macros. For example, if you 
  6342. have a PATH environment variable defined as PATH = C:\TOOLS\BIN, the string 
  6343. C:\TOOLS\BIN is substituted when you use PATH in the description file. 
  6344.  
  6345. You can redefine inherited macros by including a line such as the example above 
  6346. in a description file.  While NMAKE is executing, the macro takes on the 
  6347. redefined definition.  When NMAKE terminates, however, the environment variable 
  6348. resumes its original value. 
  6349.  
  6350. The Override Environment Variables (/E) option disables inherited macro 
  6351. redefinition. If you use this option, NMAKE ignores any attempt to redefine an 
  6352. inherited macro. 
  6353.  
  6354.  
  6355. ΓòÉΓòÉΓòÉ 16.5.6. Defined Macros ΓòÉΓòÉΓòÉ
  6356.  
  6357. After you have defined a macro, you can use it anywhere in your description 
  6358. file with the following syntax: 
  6359.  
  6360. $(macroname)
  6361.  
  6362. The parentheses are not required if the macro name is only one character long. 
  6363. To use a dollar sign ( $ ) without using a macro, enter two dollar signs ( $$ 
  6364. ), or use the caret ( ^ ) before the dollar sign as an escape character. 
  6365.  
  6366. When NMAKE runs, it replaces all occurrences of $(macroname) with the defined 
  6367. macro string. If the macro is undefined, nothing is substituted. After a macro 
  6368. is defined, you can cancel it only with the !UNDEF directive. 
  6369.  
  6370.  
  6371. ΓòÉΓòÉΓòÉ 16.5.7. Macro Substitutions ΓòÉΓòÉΓòÉ
  6372.  
  6373. Just as you use macros to substitute text within a description file, you use 
  6374. the following syntax to substitute text within a macro: 
  6375.  
  6376. $(macroname: string1 = string2)
  6377.  
  6378. Every occurrence of <string1> is replaced by <string2> in <macroname>.  Spaces 
  6379. between the colon and <string1> are considered part of <string1>.  If <string2> 
  6380. is a null string, all occurrences of <string1> are deleted from the macro.  The 
  6381. colon ( : ) must immediately follow <macroname>. 
  6382.  
  6383. Note:  The replacement of <string1> with <string2> in the macro is not a 
  6384.        permanent change.  If you use the macro again without a substitution, 
  6385.        you get the original unchanged macro. 
  6386.  
  6387.  Example 
  6388.  
  6389.   SOURCES = ONE.C TWO.C THREE.C
  6390.   PROGRAM.EXE : $(SOURCES:.C=.OBJ)
  6391.     LINK $**;
  6392.  
  6393.  The example above defines a macro called SOURCES, which contains the names of 
  6394.  three C source files.  With this macro, the target/dependent line substitutes 
  6395.  the .OBJ extension for the .C extension.  Thus, NMAKE executes the following 
  6396.  command: 
  6397.  
  6398.   LINK ONE.OBJ TWO.OBJ THREE.OBJ;
  6399.  
  6400.  Note:  $** is a special macro that translates to all dependent files for a 
  6401.         given target. 
  6402.  
  6403.  
  6404. ΓòÉΓòÉΓòÉ 16.6. Special Macros ΓòÉΓòÉΓòÉ
  6405.  
  6406. NMAKE predefines several macros.  The first six macros below return one or more 
  6407. file specifications for the files in the target/dependent line of a description 
  6408. block.  Except where noted, the file specification includes the path of the 
  6409. file, the base file name, and the file-name extension. 
  6410.  
  6411.  Macro          Value 
  6412.  
  6413.  $@             The specification of the target file. 
  6414.  
  6415.  $*             The base name (without extension) of the target file. Path 
  6416.                 information is also returned if the path was specified as part 
  6417.                 of the target file name. This macro cannot be used in a 
  6418.                 dependent list. 
  6419.  
  6420.  $**            The specifications of the dependent files. 
  6421.  
  6422.  $?             The specifications for only those dependent files that are 
  6423.                 out-of-date with respect to the targets. 
  6424.  
  6425.  $<             The specification of a single dependent file that is 
  6426.                 out-of-date with respect to the targets. This macro is used 
  6427.                 only in inference rules. 
  6428.  
  6429.  $$@            The file specification of the target that NMAKE is currently 
  6430.                 evaluating.  This is a dynamic dependency parameter, used only 
  6431.                 in dependent lists. 
  6432.  
  6433.  $(CC)          The string ICC, which is the command to run the C Set ++ 
  6434.                 Compiler.  You can redefine this macro to use a different 
  6435.                 command. 
  6436.  
  6437.  $(AS)          The string MASM, which is the command to run the Macro 
  6438.                 Assembler (MASM).  You can redefine this macro to use a 
  6439.                 different command. 
  6440.  
  6441.  $(MAKE)        The command name used to run NMAKE.  This macro is used to 
  6442.                 invoke NMAKE recursively.  If you redefine this macro, NMAKE 
  6443.                 issues a warning message. 
  6444.  
  6445.                 Note:  NMAKE executes the command line in which $(MAKE) 
  6446.                        appears, even if the display commands (/N) option is on. 
  6447.  
  6448.  $(MAKEFLAGS)   The NMAKE options currently in effect.  You cannot redefine 
  6449.                 this macro. 
  6450.  
  6451.  Note:  The special macros $** and $$@ are the only exceptions to the rule that 
  6452.         macro names longer than one character must be enclosed in parentheses. 
  6453.  
  6454.  You can append characters to any of the first six macros in this list to 
  6455.  modify the meaning of the macro. However, you cannot use macro substitutions 
  6456.  in these macros. 
  6457.  
  6458.  
  6459. ΓòÉΓòÉΓòÉ 16.6.1. Special Macros Examples ΓòÉΓòÉΓòÉ
  6460.  
  6461. TRIG.LIB : SIN.OBJ COS.OBJ ARCTAN.OBJ
  6462.   !LIB TRIG.LIB -+$?;
  6463.  
  6464. In the example above, the macro $? represents the names of all dependent files 
  6465. that are out-of-date with respect to the target file.  The exclamation point ( 
  6466. ! ) preceding the LIB command causes NMAKE to execute the LIB command once for 
  6467. each dependent file in the list.  As a result of this description, the LIB 
  6468. command is executed up to three times, each time replacing a module with a 
  6469. newer version. 
  6470.  
  6471. DIR=C:\INCLUDE
  6472. $(DIR)\GLOBALS.H : GLOBALS.H
  6473.  COPY GLOBALS.H $@
  6474. $(DIR)\TYPES.H : TYPES.H
  6475.  COPY TYPES.H $@
  6476. $(DIR)\MACROS.H : MACROS.H
  6477.  COPY MACROS.H $@
  6478.  
  6479. The example above shows how to update a group of include files. Each of the 
  6480. files GLOBALS.H, TYPES.H, and MACROS.H in the directory C:\INCLUDE depends on 
  6481. its counterpart in the current directory.  If one of the include files is 
  6482. out-of-date, NMAKE replaces it with the file of the same name from the current 
  6483. directory. 
  6484.  
  6485. The following description file, which uses the special macro $$@, is 
  6486. equivalent: 
  6487.  
  6488. DIR=C:\INCLUDE
  6489. $(DIR)\GLOBALS.H $(DIR)\TYPES.H $(DIR)\MACROS.H : $$(@F)
  6490. !COPY $? $@
  6491.  
  6492. The special macro $$(@F) signifies the file name (without the path) of the 
  6493. current target. 
  6494.  
  6495. When NMAKE evaluates the description block, it evaluates the three targets, one 
  6496. at a time, with respect to their dependents.  Thus, NMAKE first checks whether 
  6497. C:\INCLUDE\GLOBALS.H is out-of-date compared with GLOBALS.H in the current 
  6498. directory.  If so, it executes the command to copy the dependent file GLOBALS.H 
  6499. to the target.  NMAKE repeats the procedure for the other two targets. 
  6500.  
  6501. Note that on the command line, the macro $? refers to the dependent for this 
  6502. target.  The macro $@ specifies the full file specification of the target file. 
  6503.  
  6504.  
  6505. ΓòÉΓòÉΓòÉ 16.6.2. File-Specification Parts ΓòÉΓòÉΓòÉ
  6506.  
  6507. A full file specification gives the base name of the file, the file-name 
  6508. extension, and the path.  The path provides the disk-drive identifier and the 
  6509. sequence of directories needed to locate the file on the disk. 
  6510.  
  6511. For example, the file specification 
  6512.  
  6513. C:\SOURCE\PROG\SORT.OBJ
  6514.  
  6515. has the following parts: 
  6516.  
  6517. Path Name            C:\SOURCE\PROG
  6518. Base File Name       SORT
  6519. File-Name Extension  .OBJ
  6520.  
  6521.  
  6522. ΓòÉΓòÉΓòÉ 16.6.3. Characters That Modify Special Macros ΓòÉΓòÉΓòÉ
  6523.  
  6524. The following six macros all resolve to a file specification (or possibly 
  6525. several file specifications for $** and $?): 
  6526.  
  6527.      $*     $@     $**     $<     $?     $$@
  6528.  
  6529. You can append characters to any of these macros to modify the file name 
  6530. returned by the macro.  Depending on which character you use, parts of the full 
  6531. file specification are returned: 
  6532.  
  6533.                                Appended Character
  6534.      File Part Returned      D        F       B       R
  6535.  
  6536.      File Path               Yes      No      No      Yes
  6537.      Base File Name          No       Yes     Yes     Yes
  6538.      File Name Extension     No       Yes     No      No
  6539.  
  6540.  
  6541. ΓòÉΓòÉΓòÉ 16.6.4. Modified Special Macros Example ΓòÉΓòÉΓòÉ
  6542.  
  6543. If the macro $@ has the value 
  6544.  
  6545. C:\SOURCE\PROG\SORT.OBJ
  6546.  
  6547. then the following values are returned for the modified macro: 
  6548.  
  6549.  Macro     Value 
  6550.  
  6551.  $(@D)     C:\SOURCE\PROG 
  6552.  
  6553.  $(@F)     SORT.OBJ 
  6554.  
  6555.  $(@B)     SORT 
  6556.  
  6557.  $(@R)     C:\SOURCE\PROG\SORT 
  6558.  
  6559.  Note:  Modified macros are always longer than a single character - they must 
  6560.         be enclosed by parentheses when used. 
  6561.  
  6562.  
  6563. ΓòÉΓòÉΓòÉ 16.6.5. Macro Precedence Rules ΓòÉΓòÉΓòÉ
  6564.  
  6565. When the same macro is defined in more than one place, the definition with the 
  6566. highest priority is used: 
  6567.  
  6568.   Priority
  6569.                                       Definition
  6570.  
  6571.   1 (Highest)
  6572.                                       Command line
  6573.  
  6574.   2
  6575.                                       Description file
  6576.  
  6577.   3
  6578.                                       Environment variables
  6579.  
  6580.   4
  6581.                                       TOOLS.INI file
  6582.  
  6583.   5 (Lowest)
  6584.                                       Predefined macros (such as CC and AS)
  6585.  
  6586.  If you invoke NMAKE with the Overriding Macro Definitions (/E) option, macros 
  6587.  defined by environment variables take precedence over those defined in a 
  6588.  description file. 
  6589.  
  6590.  
  6591. ΓòÉΓòÉΓòÉ 16.7. Inference Rules ΓòÉΓòÉΓòÉ
  6592.  
  6593. Inference rules are templates from which NMAKE infers what to do with a 
  6594. description block when no commands are given.  Only those extensions defined in 
  6595. a .SUFFIXES list can have inference rules.  The extensions .C, .OBJ, .ASM, and 
  6596. .EXE are automatically included in .SUFFIXES. 
  6597.  
  6598. When NMAKE encounters a description block with no commands, it looks for an 
  6599. inference rule that specifies how to create the target from the dependent 
  6600. files, given the two file extensions. Similarly, if a dependent file does not 
  6601. exist, NMAKE looks for an inference rule that specifies how to create the 
  6602. dependent from another file with the same base name. 
  6603.  
  6604. NMAKE applies an inference rule only if the base name of the file it is trying 
  6605. to create matches the base name of a file that already exists. 
  6606.  
  6607. In effect, inference rules are useful only when there is a one-to-one 
  6608. correspondence between the files with the "from" extension and the files with 
  6609. the "to" extension.  You cannot, for example, define an inference rule that 
  6610. inserts a number of modules into a library. 
  6611.  
  6612. The use of inference rules eliminates the need to put the same commands in 
  6613. several description blocks.  For example, you can use inference rules to 
  6614. specify a single ICC command that changes any C source file (with a .C 
  6615. extension) to an object file (with a .OBJ extension). 
  6616.  
  6617. You define an inference rule by including text of the following form in your 
  6618. description file or in your TOOLS.INI file - see "Special Features". 
  6619.  
  6620. .fromext.toext:
  6621. commands
  6622. :
  6623.  
  6624. The elements of the inference rule are: 
  6625.  
  6626.  <fromext> 
  6627.       The file-name extension for dependent files to build a target 
  6628.  <toext> 
  6629.       The file-name extension for target files to be built 
  6630.  <commands> 
  6631.       The commands to build the <toext> target from the <fromext> dependent. 
  6632.  
  6633.  For example, an inference rule to convert C source files (with the .C 
  6634.  extension) to C object files (with the .OBJ extension) is 
  6635.  
  6636.   .C.OBJ:
  6637.    ICC $<
  6638.  
  6639.  Note:  The special macro $< represents the name of a dependent out-of-date 
  6640.         relative to the target. 
  6641.  
  6642.  
  6643. ΓòÉΓòÉΓòÉ 16.7.1. Special Features ΓòÉΓòÉΓòÉ
  6644.  
  6645.      You can specify a path where NMAKE should look for target and dependent 
  6646.       files used in inference rules. 
  6647.  
  6648.      Inference rules are predefined for compiling and linking C programs, and 
  6649.       for assembling programs. 
  6650.  
  6651.      NMAKE looks for inference rules in the TOOLS.INI file if it cannot find a 
  6652.       rule in a description file. 
  6653.  
  6654.      Only those extensions defined in a .SUFFIXES list can have inference 
  6655.       rules.  The extensions .C, .OBJ, .ASM, and .EXE are automatically 
  6656.       included in .SUFFIXES. 
  6657.  
  6658.  
  6659. ΓòÉΓòÉΓòÉ 16.8. Inference Rules Example ΓòÉΓòÉΓòÉ
  6660.  
  6661. .OBJ.EXE:
  6662.   LINK $<;
  6663.  
  6664. EXAMPLE1.EXE: EXAMPLE1.OBJ
  6665.  
  6666. EXAMPLE2.EXE: EXAMPLE2.OBJ
  6667.   LINK /CO EXAMPLE2,,,LIBV3.LIB
  6668.  
  6669. The first line above defines an inference rule that causes the LINK command to 
  6670. create an executable file whenever a change is made in the corresponding object 
  6671. file.  The file name in the inference rule is specified with the special macro 
  6672. $< so that the rule applies to any .OBJ file with an out-of-date executable 
  6673. file. 
  6674.  
  6675. When NMAKE does not find any commands in the first description block, it checks 
  6676. for a rule that might apply and finds the rule defined on the first two lines 
  6677. of the description file.  NMAKE applies the rule, replacing $< with 
  6678. EXAMPLE1.OBJ when it executes the command, so that the LINK command becomes 
  6679.  
  6680. LINK EXAMPLE1.OBJ;
  6681.  
  6682. NMAKE does not search for an inference rule when examining the second 
  6683. description block, because a command is explicitly given. 
  6684.  
  6685.  
  6686. ΓòÉΓòÉΓòÉ 16.8.1. Inference-Rule Path Specifications ΓòÉΓòÉΓòÉ
  6687.  
  6688. When defining an inference rule, you can indicate to NMAKE where to look for 
  6689. target and dependent files.  Use the following syntax: 
  6690.  
  6691. {frompath}.fromext{topath}.toext
  6692.  commands
  6693.  :
  6694.  
  6695. NMAKE looks in the directory specified by <frompath> for files with the 
  6696. <fromext> extension.  It executes the commands to build files with the <toext> 
  6697. extension in the directory specified by <topath>. 
  6698.  
  6699.  
  6700. ΓòÉΓòÉΓòÉ 16.8.2. Predefined Inference Rules ΓòÉΓòÉΓòÉ
  6701.  
  6702. NMAKE predefines three inference rules: 
  6703.  
  6704. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6705. ΓöéInference Rule      ΓöéDefault             ΓöéCommand Action      Γöé
  6706. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6707. Γöé.C.OBJ              Γöé$(CC) $(CFLAGS) /C  ΓöéICC /C $*.C         Γöé
  6708. Γöé                    Γöé$*.C                Γöé                    Γöé
  6709. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6710. Γöé.C.EXE              Γöé$(CC) $(CFLAGS) $*.CΓöéICC $*.C            Γöé
  6711. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6712. Γöé.ASM.OBJ            Γöé$(AS) $(AFLAGS) $*; ΓöéMASM $*;            Γöé
  6713. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6714. NOTE 
  6715.  
  6716.    1. The first two rules automatically compile and link C programs. 
  6717.  
  6718.    2. The last rule automatically assembles programs. 
  6719.  
  6720.  
  6721. ΓòÉΓòÉΓòÉ 16.9. Directives ΓòÉΓòÉΓòÉ
  6722.  
  6723. Using directives, you can construct description files similar to batch files. 
  6724. NMAKE provides directives that: 
  6725.  
  6726.      Conditionally execute commands 
  6727.  
  6728.      Display error messages 
  6729.  
  6730.      Include the contents of other files 
  6731.  
  6732.      Turn some NMAKE options on or off 
  6733.  
  6734.  Each directive begins with an exclamation point ( ! ) in the first column of 
  6735.  the description file.  Spaces can be placed between the exclamation point and 
  6736.  the directive keyword. 
  6737.  
  6738.  The list below describes the directives: 
  6739.  
  6740.  !IF <expression> 
  6741.       Executes the statements between the !IF keyword and the next !ELSE or 
  6742.       !ENDIF directive if <expression> evaluates to a nonzero value. 
  6743.  
  6744.       The <expression> used with the !IF directive can consist of integer 
  6745.       constants, string constants, or exit codes returned by programs.  Integer 
  6746.       constants can use the C unary operators for numerical negation ( - ), 
  6747.       one's complement ( ~ ), and logical negation ( ! ).  You can also use any 
  6748.       of the C binary operators listed below: 
  6749.  
  6750.            Operator       Description 
  6751.  
  6752.       +                   Addition 
  6753.  
  6754.       -                   Subtraction 
  6755.  
  6756.       *                   Multiplication 
  6757.  
  6758.       /                   Division 
  6759.  
  6760.       %                   Modulus 
  6761.  
  6762.       &                   Bitwise AND 
  6763.  
  6764.       |                   Bitwise OR 
  6765.  
  6766.       ^^                  Bitwise XOR 
  6767.  
  6768.       &&                  Logical AND 
  6769.  
  6770.       ||                  Logical OR 
  6771.  
  6772.       <<                  Left shift 
  6773.  
  6774.       >>                  Right shift 
  6775.  
  6776.       ==                  Equality 
  6777.  
  6778.       !=                  Inequality 
  6779.  
  6780.       <                   Less than 
  6781.  
  6782.       >                   Greater than 
  6783.  
  6784.       <=                  Less than or equal to 
  6785.  
  6786.       >=                  Greater than or equal to 
  6787.  
  6788.       Note: 
  6789.  
  6790.       You can use parentheses to group expressions. 
  6791.  
  6792.       Values are assumed to be decimal values unless specified with a leading 0 
  6793.       (octal) or leading 0x (hexadecimal). 
  6794.  
  6795.       Strings are enclosed by quotation marks ( " ).  You can use the equality 
  6796.       ( ==) and inequality ( != ) operators to compare two strings. 
  6797.  
  6798.       You can invoke a program in an expression by enclosing the program name 
  6799.       in square brackets ( [ ] ).  The exit code returned by the program is 
  6800.       used in the expression. 
  6801.  
  6802.  !ELSE 
  6803.       Executes the statements between the !ELSE and !ENDIF directives if the 
  6804.       statements preceding the !ELSE directive were not executed. 
  6805.  
  6806.  !ENDIF 
  6807.       Marks the end of the !IF, !IFDEF, or !IFNDEF block of statements. 
  6808.  
  6809.  !IFDEF <macroname> 
  6810.       Executes the statements between the !IFDEF keyword and the next !ELSE or 
  6811.       !ENDIF directive if <macroname> is defined in the description file.  If a 
  6812.       macro has been defined as null, it is still considered to be defined. 
  6813.  
  6814.  !IFNDEF <macroname> 
  6815.       Executes the statements between the !IFNDEF keyword and the next !ELSE or 
  6816.       !ENDIF directive if <macroname> is not defined in the description file. 
  6817.  
  6818.  !UNDEF <macroname> 
  6819.       Undefines a previously defined macro. 
  6820.  
  6821.  !ERROR <text> 
  6822.       Prints text and then stops execution. 
  6823.  
  6824.  !INCLUDE <filename> 
  6825.       Reads and evaluates the file <filename> before continuing with the 
  6826.       current description file.  If <filename> is enclosed by angle brackets 
  6827.       (<>), NMAKE searches for the file in the directories specified by the 
  6828.       INCLUDE macro; otherwise, it looks only in the current directory.  The 
  6829.       INCLUDE macro is initially set to the value of the INCLUDE environment 
  6830.       variable. 
  6831.  
  6832.  !CMDSWITCHES {+|-}<opt> 
  6833.       Turns on or off one of four NMAKE options: /D, /I, /N, and /S.  If no 
  6834.       options are specified, the options are reset to the values they had when 
  6835.       NMAKE was started. To turn an option on, precede it with a plus sign (+); 
  6836.       to turn it off, precede it with a minus sign (-). This directive updates 
  6837.       the MAKEFLAGS macro. 
  6838.  
  6839.       See Special Macros. 
  6840.  
  6841.  
  6842. ΓòÉΓòÉΓòÉ 16.9.1. Directives Example ΓòÉΓòÉΓòÉ
  6843.  
  6844. !INCLUDE <INFRULES.TXT>
  6845. !CMDSWITCHES +D
  6846. WINNER.EXE:WINNER.OBJ
  6847. !IFDEF DEBUG
  6848. ! IF "$(DEBUG)"=="y"
  6849.      LINK /CO WINNER.OBJ;
  6850. ! ELSE
  6851.      LINK WINNER.OBJ;
  6852. ! ENDIF
  6853. !ELSE
  6854. ! ERROR Macro named DEBUG is not defined.
  6855. !ENDIF
  6856.  
  6857. The directives in this example do the following: 
  6858.  
  6859.      The !INCLUDE directive causes the file INFRULES.TXT to be read and 
  6860.       evaluated as if it were part of the description file. 
  6861.  
  6862.      The !CMDSWITCHES directive turns on the /D option, which displays the 
  6863.       dates of the files as they are checked. 
  6864.  
  6865.      If WINNER.EXE is out-of-date with respect to WINNER.OBJ, the !IFDEF 
  6866.       directive checks to see whether the macro DEBUG is defined.  If it is 
  6867.       defined, the !IF directive checks to see whether it is set to y.  If it 
  6868.       is, the linker is invoked with the /CO option; otherwise, it is invoked 
  6869.       without the /CO. If the DEBUG macro is not defined, the !ERROR directive 
  6870.       prints the message and NMAKE stops executing. 
  6871.  
  6872.  
  6873. ΓòÉΓòÉΓòÉ 16.9.2. Pseudotargets ΓòÉΓòÉΓòÉ
  6874.  
  6875. A "pseudotarget" is a target in a description block that is not a file. 
  6876. Instead, it is a name that serves as a "handle" for building a group of files 
  6877. or executing a group of commands.  In the following example, UPDATE is a 
  6878. pseudotarget: 
  6879.  
  6880. UPDATE: *.*
  6881.   !copy $** A:\PRODUCT
  6882.  
  6883. When NMAKE evaluates a pseudotarget, it always considers the dependents to be 
  6884. out-of-date.  In the description above, NMAKE copies each of the dependent 
  6885. files to the specified drive and directory. 
  6886.  
  6887. NMAKE predefines several pseudotargets for special purposes. 
  6888.  
  6889. See Predefined Pseudotargets. 
  6890.  
  6891.  
  6892. ΓòÉΓòÉΓòÉ 16.9.3. Predefined Pseudotargets ΓòÉΓòÉΓòÉ
  6893.  
  6894. NMAKE predefines several pseudotargets that provide special rules within a 
  6895. description file: 
  6896.  
  6897.  
  6898. ΓòÉΓòÉΓòÉ 16.9.3.1. .SILENT Pseudotarget ΓòÉΓòÉΓòÉ
  6899.  
  6900. Syntax:  .SILENT : dependents... 
  6901.  
  6902. This pseudotarget suppresses the display of executed commands for a single 
  6903. description block.  The /S option does the same thing for all description 
  6904. blocks. 
  6905.  
  6906. See Suppress Command Display (/S). 
  6907.  
  6908.  
  6909. ΓòÉΓòÉΓòÉ 16.9.3.2. .IGNORE Pseudotarget ΓòÉΓòÉΓòÉ
  6910.  
  6911. Syntax:  .IGNORE : dependents... 
  6912.  
  6913. This pseudotarget ignores exit codes returned by programs for a single 
  6914. description block.  The /I option does the same thing for all description 
  6915. blocks. 
  6916.  
  6917. See Ignore Exit Codes (/I). 
  6918.  
  6919.  
  6920. ΓòÉΓòÉΓòÉ 16.9.3.3. .SUFFIXES Pseudotarget ΓòÉΓòÉΓòÉ
  6921.  
  6922. Syntax:  .SUFFIXES : extensions... 
  6923.  
  6924. This pseudotarget defines file extensions to try when NMAKE needs to build a 
  6925. target file for which no dependents are specified. NMAKE searches the current 
  6926. directory for a file with the same name as the target file and an extension in 
  6927. <extensions...>.  If NMAKE finds such a file, and if an inference rule applies 
  6928. to the file, NMAKE treats the file as a dependent of the target. 
  6929.  
  6930. The .SUFFIXES pseudotarget is predefined as 
  6931.  
  6932. .SUFFIXES : .OBJ .EXE .C .ASM
  6933.  
  6934. To add extensions to the list, specify .SUFFIXES : followed by the new 
  6935. extensions.  To clear the list, specify 
  6936.  
  6937. .SUFFIXES:
  6938.  
  6939. Note:  Only those extensions specified in .SUFFIXES can have inference rules. 
  6940.        NMAKE ignores inference rules unless the extensions have been specified 
  6941.        in a .SUFFIXES list. 
  6942.  
  6943.  
  6944. ΓòÉΓòÉΓòÉ 16.9.3.4. .PRECIOUS Pseudotarget ΓòÉΓòÉΓòÉ
  6945.  
  6946. Syntax:  .PRECIOUS : targets... 
  6947.  
  6948. This pseudotarget tells NMAKE not to delete a target even if the commands that 
  6949. build it are terminated or interrupted. This pseudotarget overrides the NMAKE 
  6950. default.  By default, NMAKE deletes the target if it cannot be sure that the 
  6951. target was built successfully. 
  6952.  
  6953. For example, 
  6954.  
  6955. .PRECIOUS : TOOLS.LIB
  6956. TOOLS.LIB : A2Z.OBJ Z2A.OBJ
  6957.  command
  6958.   :
  6959.  
  6960. If the commands to build TOOLS.LIB are interrupted, leaving an incomplete file, 
  6961. NMAKE does not delete the partially built TOOLS.LIB. 
  6962.  
  6963. Note:  The pseudotarget .PRECIOUS is useful only in limited circumstances. 
  6964.        Most professional development tools have their own interrupt handlers 
  6965.        and "clean up" when errors occur. 
  6966.  
  6967.  
  6968. ΓòÉΓòÉΓòÉ 16.10. In-Line Files ΓòÉΓòÉΓòÉ
  6969.  
  6970. You may need to issue a command in the description file with a list of 
  6971. arguments exceeding the command-line limit of the operating system. Just as 
  6972. NMAKE supports the use of command files, it can also generate in-line files 
  6973. which are read as response files by other programs. 
  6974.  
  6975. To generate an in-line file, use the following syntax for your description 
  6976. block: 
  6977.  
  6978. target : dependents
  6979.   command @<<[filename]
  6980. in-line file text
  6981. << [KEEP | NOKEEP]
  6982.  
  6983. All of the text between the two sets of double less than signs (<<) is placed 
  6984. into an in-line file and given the name <filename>.  You can refer to the 
  6985. in-line file at a later time by using <filename>.  If <filename> is not given, 
  6986. NMAKE gives the file a unique name in the directory specified by the TMP 
  6987. environment variable if it is defined.  Otherwise, NMAKE creates a unique file 
  6988. name in the current directory. 
  6989.  
  6990. The in-line file can be temporary or permanent.  If you do not specify 
  6991. otherwise, or if you specify the keyword NOKEEP, the in-line file is temporary. 
  6992. Specify KEEP to retain the file. 
  6993.  
  6994. Note:  The at sign (@) is not part of the NMAKE syntax but is the typical 
  6995.        character used by utilities (such as LINK386) to designate a file as a 
  6996.        response file. 
  6997.  
  6998.  
  6999. ΓòÉΓòÉΓòÉ 16.10.1. In-Line Files Example ΓòÉΓòÉΓòÉ
  7000.  
  7001. MATH.LIB :  ADD.OBJ SUB.OBJ MUL.OBJ DIV.OBJ
  7002.   LIB @<<
  7003. MATH.LIB
  7004. -+ADD.OBJ-+SUB.OBJ-+MUL.OBJ-+DIV.OBJ
  7005. listing
  7006. <<
  7007.  
  7008. The above example creates an in-line file and uses it to invoke the Library 
  7009. Manager (LIB).  The in-line file is used as a response file by (LIB).  It 
  7010. specifies which library to use, the commands to execute, and the listing file 
  7011. to produce.  The in-line file contains the following: 
  7012.  
  7013.           MATH.LIB
  7014.           -+ADD.OBJ-+SUB.OBJ-+MUL.OBJ-+DIV.OBJ
  7015.           listing
  7016.  
  7017. Because no file name is listed after the LIB command, the in-line file is given 
  7018. a unique name and placed into the current directory (or the directory defined 
  7019. by the TMP environment variable). 
  7020.  
  7021.  
  7022. ΓòÉΓòÉΓòÉ 16.10.2. Escape Characters ΓòÉΓòÉΓòÉ
  7023.  
  7024. NMAKE uses the following punctuation characters in its syntax: 
  7025.  
  7026. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7027. Γöé(     Γöé)     Γöé#     Γöé$     Γöé^     Γöé\     Γöé
  7028. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7029. Γöé{     Γöé}     Γöé!     Γöé@     Γöé-     Γöé      Γöé
  7030. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7031.  
  7032. To use one of these characters in a command and not have it interpreted by 
  7033. NMAKE, use a caret ( ^ ) in front of the character. 
  7034.  
  7035. For example, 
  7036.  
  7037. BIG^#.C
  7038.  
  7039. is treated as 
  7040.  
  7041. BIG#.C
  7042.  
  7043. With the caret, you can include a literal newline character in a description 
  7044. file.  This capability is useful in macro definitions, as in the following 
  7045. example: 
  7046.  
  7047. XYZ=abc^<ENTER>
  7048. def
  7049.  
  7050. The effect is equivalent to the effect of assigning the C-style string abc\ndef 
  7051. to the XYZ macro.  Note that this effect differs from the effect of using the 
  7052. backslash ( \ ) to continue a line. A newline character that follows a 
  7053. backslash is replaced with a space. 
  7054.  
  7055. NMAKE ignores a caret that is not followed by any of the characters it uses in 
  7056. its syntax.  A caret that appears within quotation marks is not treated as an 
  7057. escape character. 
  7058.  
  7059. Note:  The escape character cannot be used in the command portion of a 
  7060.        dependency block. 
  7061.  
  7062.  
  7063. ΓòÉΓòÉΓòÉ 16.11. Characters That Modify Commands ΓòÉΓòÉΓòÉ
  7064.  
  7065. Any of three characters can be placed in front of a command to modify how the 
  7066. command is run: 
  7067.  
  7068.  - (dash)       Turns off error checking for the command 
  7069.  
  7070.  @ (at sign)    Suppresses display of the command 
  7071.  
  7072.  ! (exclamation point) Executes the command for each dependent file 
  7073.  
  7074.  NOTE 
  7075.  
  7076.    1. Spaces can separate the modifying character from the command. Any command 
  7077.       on a separate line  - whether modified or not - must be indented by one 
  7078.       or more spaces or tabs. 
  7079.  
  7080.    2. You can use more than one character to modify a single command. 
  7081.  
  7082.  
  7083. ΓòÉΓòÉΓòÉ 16.11.1. Turn Error Checking Off (-) ΓòÉΓòÉΓòÉ
  7084.  
  7085. Syntax:  -[n] command 
  7086.  
  7087. The /I option globally turns command error-checking off.  The dash (-) command 
  7088. modifier overrides the global setting to turn error checking off for commands 
  7089. individually.  This modifier is used in two ways: 
  7090.  
  7091.      A dash without a number turns off all error checking. 
  7092.  
  7093.      A dash followed by a number causes NMAKE to abort only if the exit code 
  7094.       returned by the command is greater than the number. 
  7095.  
  7096.  See Ignore Exit Codes (/I). 
  7097.  
  7098.  
  7099. ΓòÉΓòÉΓòÉ 16.11.2. Dash Command Modifier Examples ΓòÉΓòÉΓòÉ
  7100.  
  7101. LIGHT.LST : LIGHT.TXT
  7102.   - FLASH LIGHT.TXT
  7103.  
  7104. In the example above, NMAKE never ends, regardless of the exit code returned by 
  7105. FLASH. 
  7106.  
  7107. LIGHT.LST : LIGHT.TXT
  7108.   -1 FLASH LIGHT.TXT
  7109.  
  7110. In the example above, NMAKE ends if the exit code returned by FLASH is greater 
  7111. than 1. 
  7112.  
  7113.  
  7114. ΓòÉΓòÉΓòÉ 16.11.3. Suppress Command Display (@) ΓòÉΓòÉΓòÉ
  7115.  
  7116. Syntax:  @ command 
  7117.  
  7118. The /S option globally suppresses the display of commands while NMAKE is 
  7119. running.  The at sign (@) modifier suppresses the display for individual 
  7120. commands. 
  7121.  
  7122. Note:  Regardless of the /S option or the @ modifier, output generated by the 
  7123.        command itself always appears. 
  7124.  
  7125.  See Suppress Command Display (/S). 
  7126.  
  7127.  
  7128. ΓòÉΓòÉΓòÉ 16.11.4. At Sign (@) Command Modifier Example ΓòÉΓòÉΓòÉ
  7129.  
  7130. Suppress Command Display (@) 
  7131.  
  7132. SORT.EXE:SORT.OBJ
  7133.   @ ECHO sorting
  7134.  
  7135. The command line calling the ECHO command is not displayed.  The output of the 
  7136. ECHO command, however, is displayed. 
  7137.  
  7138.  
  7139. ΓòÉΓòÉΓòÉ 16.11.5. Execute Command for Dependents (!) ΓòÉΓòÉΓòÉ
  7140.  
  7141. Syntax:  ! command 
  7142.  
  7143. The exclamation-point command modifier causes the command to be executed for 
  7144. each dependent file if the command uses one of the special macros $? or $**. 
  7145. The $? macro refers to all dependent files out-of-date with respect to the 
  7146. target.  The $** macro refers to all dependent files in the description block. 
  7147.  
  7148. See Special Macros. 
  7149.  
  7150.  
  7151. ΓòÉΓòÉΓòÉ 16.11.6. Exclamation Point (!) Command Modifier Examples ΓòÉΓòÉΓòÉ
  7152.  
  7153. LEAP.TXT : HOP.ASM SKIP.BAS JUMP.C
  7154.   ! print $** lpt1:
  7155.  
  7156. The example above executes the following three commands, regardless of the 
  7157. modification dates of the dependent file: 
  7158.  
  7159. print HOP.ASM lpt1:
  7160. print SKIP.BAS lpt1:
  7161. print JUMP.C lpt1:
  7162.  
  7163. LEAP.TXT : HOP.ASM SKIP.BAS JUMP.C
  7164.   ! print $? lpt1:
  7165.  
  7166. The example above executes the print command only for those dependent files 
  7167. with modification dates later than that of the LEAP.TXT file. If HOP.ASM and 
  7168. JUMP.C have modification dates later than LEAP.TXT, the following two commands 
  7169. are executed: 
  7170.  
  7171. print HOP.ASM lpt1:
  7172. print JUMP.C lpt1:
  7173.  
  7174.  
  7175. ΓòÉΓòÉΓòÉ 16.11.7. EXTMAKE Syntax ΓòÉΓòÉΓòÉ
  7176.  
  7177. Description files can use a special syntax to determine the drive, path, base 
  7178. name, and extension of the first dependent file in a description block.  This 
  7179. syntax is called the "extmake" syntax. 
  7180.  
  7181. The characters %s represent the complete file specification of the first 
  7182. dependent file.  Various parts of the file specification are represented using 
  7183. the syntax 
  7184.  
  7185. %|partsF
  7186.  
  7187. where <parts> is a combination of the following letters: 
  7188.  
  7189.  d  Drive 
  7190.  p  Path 
  7191.  f  Base name 
  7192.  e  Extension 
  7193.  
  7194.  For example, to specify the drive and path name of the first dependent file in 
  7195.  a description block, use:
  7196.  
  7197.   %|dpF 
  7198.  
  7199.  The percent symbol (%) is a replacement in DOS and OS/2 command lines.  To use 
  7200.  the percent symbol in command-line arguments, use a double percent (%%). 
  7201.  
  7202.  
  7203. ΓòÉΓòÉΓòÉ 16.12. Macros and Inference Rules in TOOLS.INI ΓòÉΓòÉΓòÉ
  7204.  
  7205. You can place either macros or inference rules in your TOOLS.INI file.  NMAKE 
  7206. looks for the TOOLS.INI file first in the current directory and then in the 
  7207. directory indicated by the INIT environment variable. 
  7208.  
  7209. If NMAKE finds a TOOLS.INI file, it looks for the following tag: 
  7210.  
  7211. [nmake]
  7212.  
  7213. You can place macros and inference rules below this tag in the same format you 
  7214. would use in a description file. 
  7215.  
  7216. If a macro or inference rule is defined in both the TOOLS.INI file and the 
  7217. description file, the definition in the description file takes precedence. 
  7218. Also, if you use the /R option, the TOOLS.INI file is ignored. 
  7219.  
  7220.  
  7221. ΓòÉΓòÉΓòÉ 16.12.1. TOOLS.INI Example ΓòÉΓòÉΓòÉ
  7222.  
  7223. [nmake]
  7224. CFLAGS=/ss /ms /Gd-
  7225. .C.OBJ:
  7226.   $(CC) -c $(CFLAGS) $*.C
  7227.  
  7228. These lines in the TOOLS.INI file do the following: 
  7229.  
  7230.      Define the CFLAGS macro as "/ss /ms /Gd-" 
  7231.  
  7232.      Redefine the predefined inference rule to build .OBJ files from .C source 
  7233.       files 
  7234.  
  7235.  
  7236. ΓòÉΓòÉΓòÉ 17. Quick Information (KwikINF) ΓòÉΓòÉΓòÉ
  7237.  
  7238. KwikINF provides you with a quick and convenient method of accessing 
  7239. information in online documents stored in the OS/2 BOOKSHELF from anywhere on 
  7240. the desktop, with the exception of DOS or WIN-OS/2 sessions. When KwikINF has 
  7241. been started, you can open a dialog with KwikINF by pressing a user-selectable 
  7242. hot key. Until you configure KwikINF, your KwikINF hot key is ALT+Q. The 
  7243. KwikINF window includes a Configure push button. This opens another dialog with 
  7244. KwikINF:  the Configure KwikINF window. The KwikINF window also allows you to 
  7245. initiate searches for text strings in online documents of choice. 
  7246.  
  7247.  
  7248. ΓòÉΓòÉΓòÉ 17.1. Automatic Text Retrieval ΓòÉΓòÉΓòÉ
  7249.  
  7250. The KwikINF window includes a Search String entry field. You can specify the 
  7251. text string you want KwikINF to search for. Or, under certain conditions, this 
  7252. entry field automatically contains the word located under the cursor when you 
  7253. press your KwikINF hot key. This text retrieval feature is available from OS/2 
  7254. full-screen and Presentation Manager (PM) multi-line entry (MLE) fields. This 
  7255. feature is also available from PM AVIO and VIO windows. Communication Manager's 
  7256. 3270 emulator is a common example of a PM AVIO window. An OS/2 Window is a VIO 
  7257. window. This means that if, for example, you open an OS/2 Window and start an 
  7258. OS/2 text-based application, KwikINF will automatically retrieve the word under 
  7259. the cursor when you press your KwikINF hot key. This automatic text-retrieval 
  7260. feature is not available from graphic-text PM windows. 
  7261.  
  7262.  
  7263. ΓòÉΓòÉΓòÉ 17.2. BOOKSHELF Online Documents ΓòÉΓòÉΓòÉ
  7264.  
  7265. The KwikINF window includes a Volume to Search list box of all online documents 
  7266. stored in the OS/2 BOOKSHELF subdirectories. KwikINF initiates searches for 
  7267. information in any online document in this list. 
  7268.  
  7269. The BOOKSHELF is an environment variable, set in CONFIG.SYS, that contains a 
  7270. list of subdirectories containing online documents created as viewable .INF 
  7271. files with the Information Presentation Facility (IPF). The BOOKSHELF 
  7272. environment variable is set as follows: 
  7273.  
  7274. SET BOOKSHELF=<subdirectory>;...;<subdirectory>; 
  7275.  
  7276. Online documents for OS/2 (for example, the Command Reference) are stored in 
  7277. the \OS2\BOOK subdirectory of the drive on which OS/2 is installed.  Online 
  7278. documents for the OS/2 Toolkit (for example, the Programming References) are 
  7279. stored in the \TOOLKIT\BOOK subdirectory of the drive specified during 
  7280. installation of the online programming information. As an example, after 
  7281. installation of OS/2 and the Toolkit, the BOOKSHELF environment variable is set 
  7282. as follows: 
  7283.  
  7284. SET BOOKSHELF=C:\OS2\BOOK;D:\TOOLKIT\BOOK; 
  7285.  
  7286. Where c: is the drive where OS/2 is installed and D: is the drive where the 
  7287. Toolkit is installed. 
  7288.  
  7289. The online document where KwikINF looks for the Search String is selected from 
  7290. the Volume to Search list box by KwikINF or by you. KwikINF selects the Volume 
  7291. to Search by looking for the text string that has a matching entry in the 
  7292. KwikINF index file or, if there is no matching entry in the index file, in the 
  7293. Default Volume you have selected in the Configure KwikINF window. 
  7294.  
  7295.  
  7296. ΓòÉΓòÉΓòÉ 17.2.1. Index Files for Rapid Search ΓòÉΓòÉΓòÉ
  7297.  
  7298. The KwikINF index file provides a rapid-search mechanism for locating specific 
  7299. kinds of information in online documents in the BOOKSHELF. The KwikINF index 
  7300. file consists of one or more concatenated files stored in the BOOKSHELF and 
  7301. defined by the HELPNDX variable in CONFIG.SYS as shown in the following 
  7302. example: 
  7303.  
  7304. SET HELPNDX=EPMKWHLP.NDX
  7305.  
  7306. where EPMKWHLP.NDX is the KwikINF index file for the OS/2 Toolkit. 
  7307.  
  7308. As an example, the following excerpt from the KwikINF index file for the OS/2 
  7309. Toolkit: 
  7310.  
  7311. EXTENSIONS: *
  7312. DESCRIPTION: IBM Developer's Toolkit for OS/2
  7313. (IPF*, view ipfc20.inf ~)
  7314. (WinCreateWindow, view pmwin.inf ~)
  7315.  
  7316. is used by KwikINF to quickly locate Search String entries with the prefix IPF 
  7317. in the IPF-viewable file IPFC20.INF. and to quickly locate the specific Search 
  7318. String entry WinCreateWindow in the IPF-viewable file PMWIN.INF. 
  7319.  
  7320. The first token in a rapid-search string is a specific text string (for 
  7321. example, WinCreateWindow) or prefix wildcard (for example, IPF*).  It is also 
  7322. used as the text-string you want VIEW.EXE to locate within the online document. 
  7323. The second token is the name of the IPF file viewer (VIEW.EXE). The third token 
  7324. is a parameter for VIEW.EXE: the name of the .INF file that contains the online 
  7325. document.  Currently, the fourth token is not being used and it is treated as a 
  7326. comment. 
  7327.  
  7328.  
  7329. ΓòÉΓòÉΓòÉ 17.2.2. Enabling Online Documents ΓòÉΓòÉΓòÉ
  7330.  
  7331. You can enable any online document for KwikINF by: 
  7332.  
  7333.    1. Creating the online document as a viewable .INF file using the 
  7334.       Information Presentation Facility (IPF). 
  7335.  
  7336.    2. Appending the name of the subdirectory where it is stored to the 
  7337.       BOOKSHELF in CONFIG.SYS. 
  7338.  
  7339.    3. Creating an index file to support the KwikINF rapid-search mechanism, 
  7340.       storing it in the BOOKSHELF, and adding it to the HELPNDX variable in 
  7341.       CONFIG.SYS. 
  7342.  
  7343.  For example, you can enable your online document MYDOC stored in MYSUBDIR 
  7344.  subdirectory for KwikINF by: 
  7345.  
  7346.    1. Compiling the tagged source for MYDOC with the IPF compiler by entering: 
  7347.  
  7348.             IPFC MYDOC /INF
  7349.  
  7350.    2. Modifying the BOOKSHELF statement in CONFIG.SYS as follows: 
  7351.  
  7352.             SET BOOKSHELF=...;C:\MYSUBDIR;
  7353.  
  7354.    3. Creating MYINDEX file in MYSUBDIR as shown below: 
  7355.  
  7356.             /* C style comments and blank lines are acceptable */
  7357.             /* specific file extensions may be specified here  */
  7358.             EXTENSIONS: *
  7359.             /* a title may be placed here                      */
  7360.             DESCRIPTION: Any custom KwikINF index file
  7361.             /* rapid-search strings                            */
  7362.             (thisfunction, view mydoc.inf ~)
  7363.             (my*, view mydoc.inf ~)
  7364.  
  7365.    4. Modifying the HELPNDX variable in CONFIG.SYS as follows: 
  7366.  
  7367.             SET HELPNDX=EPMKWHLP.NDX+MYINDEX.NDX
  7368.  
  7369.  For more information on creating an IPF-viewable online document, see the IPF 
  7370.  Reference in the Toolkit Information folder. 
  7371.  
  7372.  
  7373. ΓòÉΓòÉΓòÉ 17.3. Using KwikINF ΓòÉΓòÉΓòÉ
  7374.  
  7375. KwikINF is installed as a program object in the OS/2 Toolkit Information 
  7376. folder.  You start KwikINF by double-clicking on the KwikINF object or by 
  7377. entering KwikINF from the command line of an OS/2 Window. You can start KwikINF 
  7378. automatically when you start OS/2 by placing a shadow of the KwikINF object in 
  7379. the Startup folder in the OS/2 System folder on the desktop. You shadow an 
  7380. object by pressing CTRL + SHIFT while dragging the object. 
  7381.  
  7382. KwikINF installs a PM system hook to monitor keystrokes in PM sessions and OS/2 
  7383. character device monitors to monitor keystrokes in OS/2 full-screen sessions. 
  7384. KwikINF will install only one copy of the hook and monitors, even if you 
  7385. attempt to re-start KwikINF. 
  7386.  
  7387. When KwikINF has been started, you can initiate searches for text strings in 
  7388. online documents of choice by pressing a user-selectable hot key. 
  7389.  
  7390. Note:  You cannot initiate searches for text strings in online documents from 
  7391.        DOS or WIN-OS/2 sessions. 
  7392.  
  7393.  Until you configure KwikINF, your KwikINF hot key is ALT+Q. You configure 
  7394.  KwikINF by pressing your KwikINF hot key and then pressing the Configure push 
  7395.  button to open the Configure KwikINF window. 
  7396.  
  7397.  Note:  When you start KwikINF by double-clicking on the KwikINF object in the 
  7398.         Toolkit Information folder, a message box tells you what hot key opens 
  7399.         the KwikINF window. This technique can also be used to determine what 
  7400.         your current KwikINF hot key is, after KwikINF has been started. 
  7401.  
  7402.  How you initiate a search for information in online documents is dependent on 
  7403.  where you are on the desktop when you press the KwikINF hot key: 
  7404.  
  7405.      From an OS/2 full-screen session, a PM VIO or AVIO window, or PM MLE: 
  7406.       position the cursor on the string you want to search for and press the 
  7407.       KwikINF hot key. KwikINF retrieves the word at the cursor. If you have 
  7408.       configured KwikINF to display the KwikINF window when the KwikINF hot key 
  7409.       is pressed, KwikINF automatically places the retrieved word in the Search 
  7410.       String entry field of the KwikINF window. When you press the Search push 
  7411.       button or Enter, KwikINF displays the information. If you have configured 
  7412.       KwikINF to bypass the KwikINF window when the KwikINF hot key is pressed, 
  7413.       KwikINF automatically displays the information. 
  7414.  
  7415.       If no word is under the cursor, the previous Search String is used. If no 
  7416.       previous Search String exists, KwikINF displays the Contents of the 
  7417.       Default volume to search. 
  7418.  
  7419.      From a graphic-text PM window: press the KwikINF hot key, then type the 
  7420.       string you want to search for in the Search String entry field of the 
  7421.       KwikINF window. The KwikINF text-retrieval feature is not available from 
  7422.       graphic-text PM windows. 
  7423.  
  7424.  The online document where KwikINF looks for the text string is selected from 
  7425.  the Volume to Search list box by KwikINF or by you. To open the online 
  7426.  document to the panel that contains the information, press the Search push 
  7427.  button or press Enter. 
  7428.  
  7429.  
  7430. ΓòÉΓòÉΓòÉ 17.3.1. KwikINF From the Command Line ΓòÉΓòÉΓòÉ
  7431.  
  7432. You can start, terminate, and configure KwikINF from the command line in an 
  7433. OS/2 Window by entering: 
  7434.  
  7435. KwikINF [no options] [/C] [/T] [/?]
  7436.  
  7437. where: 
  7438.  
  7439.  no options  starts KwikINF. After entering this command, the default KwikINF 
  7440.              hot key (ALT + Q) is enabled. 
  7441.  
  7442.  /T          terminates KwikINF and disables the KwikINF hot key. 
  7443.  
  7444.  /C          opens the Configure KwikINF window. Use this window to select 
  7445.              another KwikINF hot key, to select a default online document from 
  7446.              the BOOKSHELF to search, and to select the activation behavior of 
  7447.              the KwikINF window. 
  7448.  
  7449.  /?          displays the following information. 
  7450.  
  7451.                            Usage: KwikINF [Option]
  7452.                             Option    Description
  7453.                               /C      Configure KwikINF
  7454.                               /T      Terminate KwikINF
  7455.                               /?      This short help list
  7456.  
  7457.  
  7458. ΓòÉΓòÉΓòÉ 17.3.2. Configuring KwikINF ΓòÉΓòÉΓòÉ
  7459.  
  7460. You configure KwikINF through the Configure KwikINF window. KwikINF displays 
  7461. this window when you press the Configure push button on the KwikINF window or 
  7462. when you enter the following from the command line of an OS/2 Window: 
  7463.  
  7464. KwikINF /C
  7465.  
  7466. The Configure KwikINF window allows you to: 
  7467.  
  7468.      Select another KwikINF hot key. 
  7469.  
  7470.      Specify the number of OS/2 full-screen sessions enabled for KwikINF. 
  7471.  
  7472.      Specify the name of the default online document KwikINF searches. 
  7473.  
  7474.      Select the activation behavior of the KwikINF window. 
  7475.  
  7476.  Use the push buttons on the Configure KwikINF window as follows: 
  7477.  
  7478.      Press OK to enable your configuration choices. 
  7479.  
  7480.      Press Cancel to cancel your configuration choices. This closes the 
  7481.       Configure KwikINF window. 
  7482.  
  7483.      Press Help to get general help for the current window. 
  7484.  
  7485.  
  7486. ΓòÉΓòÉΓòÉ 17.3.3. Activation Key Sequence ΓòÉΓòÉΓòÉ
  7487.  
  7488. The Activation Key Sequence provides a selectable list of KwikINF hot keys. To 
  7489. access the list, single-click on the down arrow. Select the KwikINF hot key of 
  7490. your choice from the following list: 
  7491.  
  7492.  CTRL   + A 
  7493.  
  7494.  CTRL   + H 
  7495.  
  7496.  CTRL   + Q 
  7497.  
  7498.  ALT    + A 
  7499.  
  7500.  ALT    + Q (this is the default hot key) 
  7501.  
  7502.  The KwikINF hot key initiates searches for information in online documents 
  7503.  from anywhere on the desktop, with the exception of DOS or WIN-OS/2 sessions. 
  7504.  
  7505.  
  7506. ΓòÉΓòÉΓòÉ 17.3.4. Full Screen Sessions ΓòÉΓòÉΓòÉ
  7507.  
  7508. Use the Number of Fullscreen Sessions to Monitor spin button to specify the 
  7509. number of OS/2 full-screen sessions enabled for KwikINF.  KwikINF is 
  7510. implemented as a PM system hook to monitor keystrokes in PM sessions and as 
  7511. OS/2 character device monitors to monitor keystrokes in OS/2 full-screen 
  7512. sessions.  For OS/2 full-screen sessions, KwikINF will monitor only the number 
  7513. of sessions specified here. 
  7514.  
  7515.  
  7516. ΓòÉΓòÉΓòÉ 17.3.5. Default Volume to Search ΓòÉΓòÉΓòÉ
  7517.  
  7518. Use the Default Volume to Search single selection list box to specify which 
  7519. online document in the BOOKSHELF you want KwikINF to search by default. 
  7520. KwikINF looks for the Search String in this online document, when there is no 
  7521. matching entry in the KwikINF index file. Select the online document, then 
  7522. select the OK push button to activate the selection. 
  7523.  
  7524.  
  7525. ΓòÉΓòÉΓòÉ 17.3.6. Activation Behavior ΓòÉΓòÉΓòÉ
  7526.  
  7527. Use the Activation Behavior radio buttons to select the behavior of the KwikINF 
  7528. window. The KwikINF window can be displayed or bypassed when the user presses 
  7529. the KwikINF hot key after KwikINF has been installed. 
  7530.  
  7531.      Select the Display KwikINF Window radio button to tell KwikINF that you 
  7532.       always want the KwikINF window to be displayed when you press the KwikINF 
  7533.       hot key to initiate searches for information.  This is the default 
  7534.       behavior of the KwikINF window. 
  7535.  
  7536.       When the you press the KwikINF hot key, you can initiate a search for the 
  7537.       text string that may be automatically displayed in the Search String 
  7538.       entry field or for the text string that you enter into this field. You 
  7539.       can also specify which online document in the BOOKSHELF KwikINF searches 
  7540.       for the text string. 
  7541.  
  7542.      Select the Bypass KwikINF Window radio button to tell KwikINF that you do 
  7543.       not want the KwikINF window to be displayed when you press the KwikINF 
  7544.       hot key to initiate searches for information. This is typically used when 
  7545.       working under conditions where the KwikINF automatic text-retrieval 
  7546.       feature is available. 
  7547.  
  7548.       When you press the KwikINF hot key, KwikINF automatically looks for the 
  7549.       text string under the cursor in the online document that has a matching 
  7550.       entry in the KwikINF index file or, if there is no matching entry in the 
  7551.       index file, in the Default volume selected from the Configure KwikINF 
  7552.       window. 
  7553.  
  7554.       You configure KwikINF by pressing the Configure push button in the 
  7555.       KwikINF window. To configure KwikINF when this window is bypassed, press 
  7556.       SHIFT + your KwikINF hotkey to display the Configure KwikINF window. 
  7557.  
  7558.  
  7559. ΓòÉΓòÉΓòÉ 17.4. Searching Using the KwikINF Window ΓòÉΓòÉΓòÉ
  7560.  
  7561. If you have configured KwikINF to display the KwikINF window (this is the 
  7562. default condition), the KwikINF window is displayed when you press your KwikINF 
  7563. hot key. 
  7564.  
  7565. The KwikINF window allows you to search for a text string in an online document 
  7566. in the OS/2 BOOKSHELF.  The text string is typed by you in the Search String 
  7567. entry field or is automatically retrieved by KwikINF, under certain conditions, 
  7568. from under the cursor when you press your KwikINF hot key. 
  7569.  
  7570. The online document that KwikINF searches for the text string is selected from 
  7571. the Volume to Search list box by KwikINF or by you.  KwikINF selects the Volume 
  7572. to Search by looking for the text string that has a matching entry in the 
  7573. KwikINF index file or, if there is no matching entry in the index file, in the 
  7574. Default Volume you have selected in the Configure KwikINF window.  Or you can 
  7575. override KwikINF's selection of the Volume to Search by making your own 
  7576. selection from the list box. 
  7577.  
  7578. To initiate the search for the text string in the online document, press the 
  7579. Search push button or press Enter. If the search is successful, KwikINF opens 
  7580. the online document to the online panel that contains the information and 
  7581. displays a window with a title bar that matches the search string. 
  7582.  
  7583. If the search is not successful, you can search any online document for the 
  7584. information by following this procedure: 
  7585.  
  7586.      Clear the Search String entry field. 
  7587.  
  7588.      Select an online document from the Volume to Search list box.  The 
  7589.       Contents window of the online document appears. 
  7590.  
  7591.      Select Services from the menu bar. 
  7592.  
  7593.      Select Search from the Services pull down menu.  The Search help window 
  7594.       appears. 
  7595.  
  7596.      Type the text string, then select the All libraries radio button. 
  7597.  
  7598.      Select the Search push button or press Enter. 
  7599.  
  7600.  Use the push buttons on the KwikINF window as follows: 
  7601.  
  7602.      Press Search to initiate the search for the text string in the Search 
  7603.       String entry field in the selected online document. 
  7604.  
  7605.      Press Cancel to cancel the request to search for the text string and to 
  7606.       close the KwikINF window. 
  7607.  
  7608.      Press Configure to display the Configure KwikINF window. 
  7609.  
  7610.      Press Help to get general help for the current window. 
  7611.  
  7612.  
  7613. ΓòÉΓòÉΓòÉ 17.4.1. Search String Entry Field ΓòÉΓòÉΓòÉ
  7614.  
  7615. KwikINF searches for the text string in this entry field in the selected online 
  7616. document in the OS/2 BOOKSHELF. 
  7617.  
  7618. Under certain conditions, KwikINF automatically retrieves the word under the 
  7619. cursor when you press your KwikINF hot key. Letters, numbers, underscores, and 
  7620. the pound sign are retrievable by KwikINF. Blank spaces and other special 
  7621. characters are used as delimiters and are not retrievable by KwikINF. 
  7622.  
  7623. You may also type any text string you want into this field. All characters are 
  7624. valid in the entry field to allow for special search criteria. 
  7625.  
  7626.  
  7627. ΓòÉΓòÉΓòÉ 17.4.2. VOLUME TO SEARCH List Box ΓòÉΓòÉΓòÉ
  7628.  
  7629. The KwikINF window includes a list box of all online documents stored in the 
  7630. OS/2 BOOKSHELF subdirectories.  KwikINF initiates searches for information in 
  7631. any online document in this list. The online document where KwikINF looks for 
  7632. the Search String is selected from the Volume to Search list box by KwikINF or 
  7633. by you.  KwikINF selects the Volume to Search by looking for the text string 
  7634. that has a matching entry in the KwikINF index file or, if there is no matching 
  7635. entry in the index file, in the Default Volume you have selected in the 
  7636. Configure KwikINF window. Or you can override KwikINF's selection of the Volume 
  7637. to Search by making your own selection from the list box. 
  7638.  
  7639. You can also open and display the Contents of an online document by 
  7640. double-clicking on an entry in this list box. 
  7641.  
  7642.  
  7643. ΓòÉΓòÉΓòÉ 17.4.3. KwikINF Keys Help ΓòÉΓòÉΓòÉ
  7644.  
  7645. Use your KwikINF hot key (ALT+Q or the hot key you select from the Configure 
  7646. KwikINF window) to display the KwikINF window. You can also use your KwikINF 
  7647. hot key to initiate a search for a text string automatically, when you 
  7648. configure KwikINF to bypass the KwikINF window. 
  7649.  
  7650. To re-configure KwikINF, when you have configured KwikINF to bypass the KwikINF 
  7651. window, press SHIFT + your KwikINF hot key. 
  7652.  
  7653. To determine what your KwikINF hot key is, double-click on the KwikINF program 
  7654. object in the OS/2 Toolkit Information folder. 
  7655.  
  7656.  
  7657. ΓòÉΓòÉΓòÉ 18. Resource Compiler ΓòÉΓòÉΓòÉ
  7658.  
  7659. The OS/2 Resource Compiler (RC) is an application-development tool that lets 
  7660. you add application resources, such as message strings, pointers, menus, and 
  7661. dialog boxes, to the executable file of your application. The Resource Compiler 
  7662. is primarily intended to prepare data for OS/2 applications that use functions 
  7663. such as WinLoadString, WinLoadPointer, WinLoadMenu, and WinLoadDlg.  These 
  7664. functions load resources from the executable file of your application or 
  7665. another specified executable file.  The application can then use the loaded 
  7666. resources as needed. 
  7667.  
  7668. The Resource Compiler and the resource functions let you quickly define and/or 
  7669. modify application resources without recompiling the application itself.  That 
  7670. is, RC can modify the resources in an executable file at any time without 
  7671. affecting the rest of the file. This means that you can create custom 
  7672. applications from a single executable file - you just use RC to add the custom 
  7673. resources you need to each application. 
  7674.  
  7675. The Resource Compiler is especially important for international applications 
  7676. because it lets you define all language-dependent data, such as message 
  7677. strings, as resources.  Preparing the application for a new language is simply 
  7678. a matter of adding new resources to the existing executable file. 
  7679.  
  7680. Note:  Make sure the file RCPP.EXE (the Resource Compiler preprocessor) is 
  7681.        available for the use of the Resource Compiler. It can be in the current 
  7682.        directory, or in a directory to which there is a path. 
  7683.  
  7684.  
  7685. ΓòÉΓòÉΓòÉ 18.1. Command-Line Options ΓòÉΓòÉΓòÉ
  7686.  
  7687. The following options can be specified on the Resource Compiler command line: 
  7688.  
  7689.  -d<defname>[=<value>] Define macro to preprocessor 
  7690.  -i <pathspec>       Include file path 
  7691.  -r                  Create .res file 
  7692.  -p                  Pack - 386 resources will not cross 64K boundaries. 
  7693.  -cp (or -k)  {<codepage>|<lbs,lbe>...} -DBCS code page or lead byte 
  7694.                      information 
  7695.  -x[{1|2}]           Exepack - compress resources, using method 1 or 2. 
  7696.  -cc <countrycode>   Country code 
  7697.  -h                  Access Help 
  7698.  
  7699.  Leave a blank after the letter when using option -cc, -D, -I , -cp or -k. 
  7700.  Upper or lowercase can be used. 
  7701.  
  7702.  
  7703. ΓòÉΓòÉΓòÉ 18.1.1. Explanation of Command-Line Options. ΓòÉΓòÉΓòÉ
  7704.  
  7705. The -D option is useful for passing conditional-compilation flags to the 
  7706. preprocessor. The <defname> is a sequence of letters, underscore symbols, and 
  7707. digits which does not begin with a digit. The <value> is a sequence of symbols 
  7708. which you want to substitute for the <defname> wherever it appears in the input 
  7709. script file.  If you omit the =<value>, the <defname> will be set to the 
  7710. default value 1. For example, the option -D_3d is equivalent to including at 
  7711. the beginning of the input file this line: 
  7712.  
  7713. #define   _3d     1 
  7714.  
  7715. You can use the -D option up to eight times to define different macros from the 
  7716. command line. 
  7717.  
  7718. The -I option defines paths for files to be included with the source file. The 
  7719. <pathspec> is any path where you want RC to search for files included by the 
  7720. preprocessor #include directive.  The <pathspec> must not contain embedded 
  7721. blanks.  To include more than one path, code the -I option once for each path. 
  7722. The preprocessor reads paths from the INCLUDE environment after reading the 
  7723. paths you provide with -I options. 
  7724.  
  7725. The -r switch will create in your current directory a binary resource file 
  7726. containing the resources you compile.  The -r switch takes no argument.  The 
  7727. name given to this binary resource file will be the same as the name of the 
  7728. input resource script file except that the extension will be .RES instead of 
  7729. .RC. When you use -r, you do not bind resources to an executable file. 
  7730.  
  7731. The -p switch is used only when binding resources to an executable.  It 
  7732. positions resources so that they do not cross 64K boundaries. 
  7733.  
  7734. The -cp or -k option is used to specify code page information for the resource 
  7735. script file to be compiled. The <codepage> is a numeric code page value from 
  7736. the Code Page Table. Instead of specifying a code page, you may provide a 
  7737. sequence of pairs of DBCS lead byte code points.  Each pair of numbers gives 
  7738. the lower and upper limit of a range of code points which are to be interpreted 
  7739. as DBCS lead bytes. The code page must be valid for the country code in effect: 
  7740. either the default country code or the country specified using the -CC option. 
  7741.  
  7742. The -CC option allows you to specify a country code for the resource script 
  7743. file to be compiled. The <countrycode> is a number from the table.  For more 
  7744. information see Code Page Table. 
  7745.  
  7746. The -X option is used only when binding resources to an executable.  It causes 
  7747. resources to be compressed.  These resources will be decompressed automatically 
  7748. when the resource is accessed. 
  7749.  
  7750. The -X1 option causes Resource Compiler to use the compression algorithm that 
  7751. is compatible with OS/2 2.0, 2.1, and 2.11. 
  7752.  
  7753. The -X2 option causes Resource Compiler to use a compression algorithm that is 
  7754. incompatible with OS/2 2.0, 2.1 and 2.11.  The -X2 option will produce smaller 
  7755. executable files that can access resources faster. 
  7756.  
  7757. -x with no number defaults to -X1. 
  7758.  
  7759. When you give the -h switch, Resource Compiler will display on your screen a 
  7760. summary of the available options and environment variables that it uses.  When 
  7761. you give -h, Resource Compiler does not read any input files.  This is 
  7762. equivalent to entering on the command line "RC" with no operands. 
  7763.  
  7764.  
  7765. ΓòÉΓòÉΓòÉ 18.1.2. Help ΓòÉΓòÉΓòÉ
  7766.  
  7767. To display Resource Compiler help, type RC at the prompt, with no parameters. 
  7768. The appropriate copyright statement will be displayed, along with a list of 
  7769. Resource Compiler options. You can also display this list by using the 
  7770. command-line option -h. 
  7771.  
  7772. Usage:  rc [<options>] <.RC input file>[<.EXE output file>]
  7773.  
  7774.   -d defname        - Preprocessor define
  7775.   -Ddefname         - Preprocessor define
  7776.   -i                - Include file path
  7777.   -r                - Create .res file
  7778.   -x[1|2]           - Exepack-compress resources using method 1or 2
  7779.   -cc cc            - country code
  7780.   -p                - Pack - 386 resources will not cross 64K boundaries
  7781.   -cp cp | lb,tb,...- DBCS codepage or lead/trail byte information
  7782.   -h                - Access Help
  7783.  
  7784. Environment variables:
  7785.   DBCS=cp | lb,tb,...
  7786.   TMP=temporary file path
  7787.   TEMP=temporary file path
  7788.   INCLUDE=include file path
  7789.  
  7790. Note:  Option -X2 will produce executable files that are incompatible with OS/2 
  7791.        2.0, 2.1, and 2.11.
  7792.  
  7793.  
  7794. ΓòÉΓòÉΓòÉ 18.2. Resource Script Files ΓòÉΓòÉΓòÉ
  7795.  
  7796. This topic describes the resource script file used to define your application 
  7797. resources and explains how to compile the file and add the resources to your 
  7798. executable file. 
  7799.  
  7800. Use the Resource Compiler to perform the following actions: 
  7801.  
  7802.      Create a resource script file. 
  7803.  
  7804.      Compile the file. 
  7805.  
  7806.      Add the file to the executable file of your application (optional). 
  7807.  
  7808.  The following sections describe the resource script file and the RC program. 
  7809.  
  7810.  Resource Script Files 
  7811.  
  7812.  A resource script file consists of one or more resource statements that define 
  7813.  the type, identifier, and data for each resource.  For example, the following 
  7814.  multiple-line resource statement defines a menu to be used with an 
  7815.  application: 
  7816.  
  7817.     MENU 1
  7818.     BEGIN
  7819.         MENUITEM "Alpha", 101
  7820.         MENUITEM "Beta", 102
  7821.     END
  7822.  
  7823.  A resource script file is a text file you can create by using an ordinary text 
  7824.  editor.  Since some resources may contain binary data that cannot be created 
  7825.  using a text editor, many resource statements let you specify additional files 
  7826.  to include when compiling the resource script file. For example, the following 
  7827.  statement defines an icon and specifies the file MYICON.ICO as containing the 
  7828.  icon data: 
  7829.  
  7830.     ICON 1 myicon.ico
  7831.  
  7832.  Directives 
  7833.  
  7834.  A resource script file can also contain directives. For example, the following 
  7835.  directive includes the header file OS2.H when RC processes the resource script 
  7836.  file: 
  7837.  
  7838.     #include <os2.h>
  7839.  
  7840.  Resource script files typically have the .RC filename extension. .RC is the 
  7841.  default extension; use it for all your resource script files. 
  7842.  
  7843.  Note:  Although the Resource Compiler is C-like in syntax, it is not a C 
  7844.         compiler. Use only the Resource Compiler statements. 
  7845.  
  7846.  
  7847. ΓòÉΓòÉΓòÉ 18.3. Directives ΓòÉΓòÉΓòÉ
  7848.  
  7849. A directive is a Resource Compiler statement that carries out a task such as 
  7850. including a header file, defining constants, or conditionally compiling 
  7851. portions of the resource script file. 
  7852.  
  7853. Directives 
  7854.  
  7855.       elif Directive 
  7856.       else Directive 
  7857.       endif Directive 
  7858.       if Directive 
  7859.       ifdef Directive 
  7860.       ifndef Directive 
  7861.  
  7862.  
  7863. ΓòÉΓòÉΓòÉ 18.3.1. Using the Resource Compiler ΓòÉΓòÉΓòÉ
  7864.  
  7865. The Resource Compiler (RC) compiles a resource script file to create a new file 
  7866. called a binary resource file. 
  7867.  
  7868. The binary resource file can be added to the executable file of the 
  7869. application, replacing any existing resources in that file. 
  7870.  
  7871. You can start RC in any of three ways. 
  7872.  
  7873.      Compile and add a resource definition file to an executable file 
  7874.      Compile a resource script file 
  7875.      Add a binary resource file to an executable file 
  7876.  
  7877.  The RC command line has the following three basic forms: 
  7878.  
  7879.     rc resource-script-file [executable-file]
  7880.  
  7881.     rc resource-file [executable-file]
  7882.  
  7883.     rc -r  resource-script-file [resource-file]
  7884.  
  7885.  Note:  The third option does not add to the executable file.
  7886.  
  7887.  The resource-script-file field must be the filename of the resource script 
  7888.  file to be compiled.  If the file is not in the current directory, you must 
  7889.  provide a full path.  If you provide a filename without specifying a filename 
  7890.  extension, RC automatically appends the .RC extension to the name. 
  7891.  
  7892.  The executable-file field must be the name of the executable file to receive 
  7893.  the compiled resources.  This is a file having a filename extension of either 
  7894.  .EXE or .DLL.  If the file is not in the current directory, you must provide a 
  7895.  full path.  If you omit the executable-file field, RC adds the compiled 
  7896.  resources to the executable file that has the same name as the resource script 
  7897.  file but which has the .EXE filename extension.  If you specify the 
  7898.  executable-file field but omit the filename extension, RC will append the .EXE 
  7899.  extension.  If this executable file does not exist, RC displays an error 
  7900.  message. 
  7901.  
  7902.  The -r option directs RC to compile the resource script file without adding it 
  7903.  to an executable file.  You can use this option to prepare a binary resource 
  7904.  file that you can add to an executable file at a later time.  If you do not 
  7905.  explicitly name a binary resource file along with the -r option, RC uses the 
  7906.  same name as the resource script file but with the .RES filename extension. 
  7907.  
  7908.  The resource-file field must be the name of the binary resource file to be 
  7909.  added to the executable file.  If the binary resource file does not already 
  7910.  exist, RC creates it; otherwise, RC replaces the existing file.  If the file 
  7911.  is not in the current directory, you must provide a full path.  The binary 
  7912.  resource file must have the .RES filename extension. 
  7913.  
  7914.  For example, to compile the resource script file EXAMPLE.RC, and add the 
  7915.  result to the executable file EXAMPLE.EXE, use the following command: 
  7916.  
  7917.     rc example
  7918.  
  7919.  You do not need to specify the .RC extension. RC creates the binary resource 
  7920.  file EXAMPLE.RES and adds the compiled resource to the executable file 
  7921.  EXAMPLE.EXE. 
  7922.  
  7923.  To compile the resource script file EXAMPLE.RC into a binary resource file 
  7924.  without adding the resources to an executable file, use the following command: 
  7925.  
  7926.     rc -r example
  7927.  
  7928.  The compiler creates the binary resource file EXAMPLE.RES. To create a binary 
  7929.  resource file that has a name different from the resource script file, use the 
  7930.  following command: 
  7931.  
  7932.     rc -r example newfile.res
  7933.  
  7934.  To add the compiled resources in the binary resource file EXAMPLE.RES to an 
  7935.  executable file, use the following command: 
  7936.  
  7937.     rc example.res
  7938.  
  7939.  To specify the name of the executable file, if the name is different from the 
  7940.  resource file, use the following command: 
  7941.  
  7942.     rc example.res newfile.exe
  7943.  
  7944.  To add the compiled resources to a dynamic-link-library (.DLL) file, use the 
  7945.  following command: 
  7946.  
  7947.     rc example.res dynalink.dll
  7948.  
  7949.  In addition to -r, RC offers two other command-line options: -cp and -cc.  The 
  7950.  -cp option lets you specify a code-page identifier or DBCS lead byte 
  7951.  information. The -cc option lets you specify a country code. The syntax is as 
  7952.  follows: 
  7953.  
  7954.     -cp {codepage-id | lead-byte-start, lead-byte-end,...}
  7955.     -cc country-code
  7956.  The lead-byte-start and lead-byte-end fields give the upper and lower limits 
  7957.  of each interval of DBCS lead bytes which you are defining for the code page. 
  7958.  You may specify these values instead of a codepage-id. 
  7959.  
  7960.  The codepage-id or country-code field contains one of the valid code page or 
  7961.  country codes, for example: 
  7962.  
  7963.  
  7964. ΓòÉΓòÉΓòÉ 18.3.2. Code Page Table ΓòÉΓòÉΓòÉ
  7965.  
  7966. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7967. ΓöéCODE-PAGE ID        ΓöéCOUNTRY CODE        ΓöéMEANING             Γöé
  7968. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7969. Γöé932                 Γöé81                  ΓöéJapan               Γöé
  7970. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7971. Γöé934                 Γöé82                  ΓöéKorea               Γöé
  7972. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7973. Γöé936                 Γöé86                  ΓöéChina               Γöé
  7974. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7975. Γöé938                 Γöé88                  ΓöéTaiwan              Γöé
  7976. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7977.  
  7978.  
  7979. ΓòÉΓòÉΓòÉ 18.4. Defining Constants ΓòÉΓòÉΓòÉ
  7980.  
  7981. The -d option lets you define up to eight symbolic constants on the command 
  7982. line.  The syntax is as follows: 
  7983.  
  7984.   -d defname[=value]
  7985.  
  7986. In the previous example, defname is a name, and value is an integer constant, 
  7987. or an expression. The -d option is useful for passing conditional-compilation 
  7988. flags to the RC preprocessor. 
  7989.  
  7990. The following example specifies a Japanese code-page identifier and also 
  7991. defines two symbolic constants to be passed to the preprocessor as 
  7992. conditional-compilation flags. 
  7993.  
  7994.   rc -cp 932 -d DEBUG -d VERSION=2 example
  7995.  
  7996. Note:  To process directives in the resource script file, RC uses the files 
  7997. RCPP.EXE and RCPP.ERR.  Be sure that these files are in the current directory 
  7998. or in a directory specified by your PATH environment variable.  RC creates many 
  7999. temporary files and writes them to the directory indicated by the TMP or TEMP 
  8000. environment variable.  If RC cannot write these temporary files to this 
  8001. directory, it writes them to the current directory. 
  8002.  
  8003.  
  8004. ΓòÉΓòÉΓòÉ 18.4.1. About Resource Statements ΓòÉΓòÉΓòÉ
  8005.  
  8006. Each resource statement consists of one or more keywords, numbers, character 
  8007. strings, constants, or filenames.  You combine these to define the resource 
  8008. type, identifier, and data. 
  8009.  
  8010. Keywords are words that have a special meaning to the Resource Compiler. In a 
  8011. statement, keywords specify the resource type, the load and memory options, and 
  8012. the beginning and end of nested statements. You can use the RC keywords only as 
  8013. specified in the statement syntax. 
  8014.  
  8015. Keywords, except for those specifying directives, can be any combination of 
  8016. uppercase and lowercase letters.  Note that the curly braces, { and }, are 
  8017. reserved characters.  You can use them in place of the BEGIN and END keywords. 
  8018.  
  8019. Numbers are integers that represent coordinates, dimensions, styles, and other 
  8020. numeric data.  You can specify numbers in decimal, octal, or hexadecimal 
  8021. notation: 
  8022.  
  8023.       Decimal numbers must contain decimal digits but can start with a minus 
  8024.       sign (-) when they represent a negative number. 
  8025.       Hexadecimal numbers must contain hexadecimal digits (uppercase or 
  8026.       lowercase) and must start with the characters 0x. 
  8027.       Octal numbers are similar to hexadecimal numbers, except that a lowercase 
  8028.       letter o replaces the x. 
  8029.  
  8030.  The following example shows several numbers represented in decimal, octal, and 
  8031.  hexadecimal notation: 
  8032.  
  8033.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8034.   ΓöéDECIMAL             ΓöéOCTAL               ΓöéHEXADECIMAL         Γöé
  8035.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8036.   Γöé1                   Γöé0o1                 Γöé0x1                 Γöé
  8037.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8038.   Γöé10                  Γöé0o12                Γöé0xA                 Γöé
  8039.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8040.   Γöé255                 Γöé0o377               Γöé0xFF                Γöé
  8041.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8042.   Γöé-1                  Γöé0o177777            Γöé0xFFFF              Γöé
  8043.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8044.   Γöé65535               Γöé0o177777            Γöé0xFFFF              Γöé
  8045.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8046.  
  8047.  Statements that create controls in dialog windows and menu items in menus 
  8048.  require that you specify an identifier for each control or menu item. 
  8049.  Statements that create controls also require you to specify coordinates and 
  8050.  dimensions.  You specify identifiers, coordinates, and dimensions using 
  8051.  integers in the range -32768 through 32767.  Optionally, you can use simple 
  8052.  expressions that evaluate to integers from 0 through 65535; this lets you 
  8053.  specify identifiers, dimensions, and coordinates that are relative to those of 
  8054.  the corresponding dialog window or menu. 
  8055.  
  8056.  Character strings represent names, labels, titles, and messages. A character 
  8057.  string consists of one or more characters enclosed in double quotation marks. 
  8058.  Character values must be in the range 1 through 255. If a double quotation 
  8059.  mark (") is required in a string, you must include the double quotation mark 
  8060.  twice.  The meaning of each character value (that is, the character each value 
  8061.  represents) depends on the code page (character set) defined for the resource 
  8062.  script file. 
  8063.  
  8064.  The Resource Compiler interprets the backslash (\) as an escape character in 
  8065.  character strings.  You can include any ASCII character in a character string 
  8066.  by specifying either \xdd, where dd is the hexadecimal representation of an 
  8067.  ASCII character, or \nnn, where nnn is the octal representation of an ASCII 
  8068.  character.  If a backslash is required in a string, you must include the 
  8069.  backslash twice. 
  8070.  
  8071.  Constants are names that have been assigned values by using the define 
  8072.  directive.  A constant can represent a number, a character string, or other 
  8073.  data.  Most resource statements in a resource script file use constants, and 
  8074.  many use the constants defined in the OS/2 header files (for example, os2.h). 
  8075.  For this reason, you should always use the include directive to include OS2.H 
  8076.  in your resource script file. 
  8077.  
  8078.  Filenames are OS/2 filenames.  If the specified file is not in the current 
  8079.  directory, you must specify the drive, directory, and filename. 
  8080.  
  8081.  Resource statements have three basic forms: 
  8082.  
  8083.       Single-line statements 
  8084.       Multiple-line statements 
  8085.       Directives 
  8086.  
  8087.  Single-line statements consist of a keyword identifying the resource type, a 
  8088.  constant or number specifying the resource identifier, and a filename 
  8089.  specifying the file containing the resource data. For example, this ICON 
  8090.  statement defines an icon resource: 
  8091.  
  8092.     ICON 1 myicon.ico
  8093.  
  8094.  The icon resource has the icon identifier 1. The file MYICON.ICO contains the 
  8095.  icon data. 
  8096.  
  8097.  Multiple-line statements consist of a keyword identifying the resource type, a 
  8098.  constant or number specifying the resource identifier, and, between the BEGIN 
  8099.  and END keywords, additional resource statements that define the resource 
  8100.  data. For example, this MENU statement defines a menu resource: 
  8101.  
  8102.     MENU 1
  8103.     BEGIN
  8104.         MENUITEM "Alpha", 101
  8105.         MENUITEM "Beta",  102
  8106.     END
  8107.  
  8108.  The menu identifier is 1.  The menu contains two MENUITEM statements that 
  8109.  define the contents of the menu. 
  8110.  
  8111.  In multiple-line statements such as DLGTEMPLATE and WINDOWTEMPLATE, RC allows 
  8112.  any level of nested statements.  For example, the DLGTEMPLATE and 
  8113.  WINDOWTEMPLATE statements typically contain a single DIALOG or FRAME 
  8114.  statement.  These statements can contain any number of WINDOW and CONTROL 
  8115.  statements; the WINDOW and CONTROL statements can contain additional WINDOW 
  8116.  and CONTROL statements; and so on.  The nested statements let you define 
  8117.  controls and other child windows for the dialog boxes and windows.  If a 
  8118.  nested statement creates a child window or control, the parent and owner of 
  8119.  the new window is the window created by the containing statement.  (FRAME 
  8120.  statements occasionally create frame controls whose parent and owner windows 
  8121.  are not the same.) 
  8122.  
  8123.  Directives consist of the reserved character # in the first column of a line, 
  8124.  followed by the directive keyword and any additional numbers, character 
  8125.  strings, or filenames. 
  8126.  
  8127.  
  8128. ΓòÉΓòÉΓòÉ 18.4.2. Binary Resource Files ΓòÉΓòÉΓòÉ
  8129.  
  8130. The binary resource file created by the Resource Compiler consists of one or 
  8131. more resource entries, each in the following form: 
  8132.  
  8133.   struct {
  8134.       UCHAR  fResType;
  8135.       USHORT usResType;
  8136.       UCHAR  fResID;
  8137.       USHORT resid;
  8138.       USHORT fsOptions;
  8139.       ULONG  cb;
  8140.       BYTE   bytes[1];
  8141.   };
  8142.  
  8143. The fields in each entry have the following meanings: 
  8144.  
  8145.  fRestype              Specifies whether the resource-type identifier is a 
  8146.                        string or an integer. For OS/2, the resource type is 
  8147.                        always an integer and this field is set to 0xFF. 
  8148.  
  8149.  usResType             Specifies the resource-type identifier. This value is an 
  8150.                        integer in the range -32768 through 32767. The following 
  8151.                        resource types are predefined: 
  8152.  
  8153.  RT_ACCELTABLE         Accelerator table 
  8154.  
  8155.  RT_BITMAP             Bitmap 
  8156.  
  8157.  RT_CHARTBL            Character table 
  8158.  
  8159.  RT_DIALOG             Dialog template 
  8160.  
  8161.  RT_DISPLAYINFO        Display information 
  8162.  
  8163.  RT_DLGINCLUDE         Dialog include-file name 
  8164.  
  8165.  RT_FKALONG            Long-form function-key area 
  8166.  
  8167.  RT_FKASHORT           Short-form function-key area 
  8168.  
  8169.  RT_FONT               Font 
  8170.  
  8171.  RT_FONTDIR            Font directory 
  8172.  
  8173.  RT_HELPSUBTABLE       Help subtable 
  8174.  
  8175.  RT_HELPTABLE          Help table 
  8176.  
  8177.  RT_KEYTBL             Key table 
  8178.  
  8179.  RT_MENU               Menu template 
  8180.  
  8181.  RT_MESSAGE            Error-message table 
  8182.  
  8183.  RT_POINTER            Mouse-pointer shape 
  8184.  
  8185.  RT_RCDATA             Binary data 
  8186.  
  8187.  RT_STRING             String table 
  8188.  
  8189.  RT_VKEYTBL            Virtual key table 
  8190.  
  8191.  fResID                Specifies whether the resource identifier is a string or 
  8192.                        an integer.  For OS/2, the resource identifier is always 
  8193.                        an integer and this field is set to 0xFF. 
  8194.  
  8195.  resid                 Specifies the resource identifier.  This value is an 
  8196.                        integer in the range -32768 through 32767. 
  8197.  
  8198.  fsOptions             Specifies the load and memory options.  This value can 
  8199.                        be a combination of the following: 
  8200.  
  8201.                        0x0010           MOVEABLE resource.  If not given, the 
  8202.                                         resource is FIXED. 
  8203.                        0x0040           PRELOAD resource.  If not given, the 
  8204.                                         resource is LOADONCALL. 
  8205.                        0x1000           DISCARDABLE resource. 
  8206.  
  8207.  cb                    Specifies the size of the resource (in bytes). 
  8208.  
  8209.  bytes                 Contains the resource. 
  8210.  
  8211.  Note:  There is a size limitation of 65,280 bytes for a binary resource file. 
  8212.  
  8213.  
  8214. ΓòÉΓòÉΓòÉ 18.5. Statements ΓòÉΓòÉΓòÉ
  8215.  
  8216. The following statements and directives are used by the Resource Compiler (RC): 
  8217.  
  8218.       ACCELTABLE Statement 
  8219.       ASSOCTABLE Statement 
  8220.       AUTOCHECKBOX Statement 
  8221.       AUTORADIOBUTTON Statement 
  8222.       BITMAP Statement 
  8223.       CHECKBOX Statement 
  8224.       CODEPAGE Statement 
  8225.       COMBOBOX Statement 
  8226.       CONTAINER Statement 
  8227.       CONTROL Statement 
  8228.       CTEXT Statement 
  8229.       CTLDATA Statement 
  8230.       DEFAULTICON Statement 
  8231.       define Directive 
  8232.       DEFPUSHBUTTON Statement 
  8233.       DIALOG Statement 
  8234.       DLGINCLUDE Statement 
  8235.       DLGTEMPLATE Statement 
  8236.       EDITTEXT Statement 
  8237.       elif Directive 
  8238.       else Directive 
  8239.       endif Directive 
  8240.       ENTRYFIELD Statement 
  8241.       FONT Statement 
  8242.       FRAME Statement 
  8243.       GROUPBOX Statement 
  8244.       HELPITEM Statement 
  8245.       HELPSUBITEM Statement 
  8246.       HELPSUBTABLE Statement 
  8247.       HELPTABLE Statement 
  8248.       ICON Statement (Resource) 
  8249.       ICON Statement (Control) 
  8250.       if Directive 
  8251.       ifdef Directive 
  8252.       ifndef Directive 
  8253.       include Directive 
  8254.       LISTBOX Statement 
  8255.       LTEXT Statement 
  8256.       MENU Statement 
  8257.       MENUITEM Statement 
  8258.       MESSAGETABLE Statement 
  8259.       MLE Statement 
  8260.       NOTEBOOK Statement 
  8261.       POINTER Statement 
  8262.       PRESPARAMS Statement 
  8263.       PUSHBUTTON Statement 
  8264.       RADIOBUTTON Statement 
  8265.       RCDATA Statement 
  8266.       RCINCLUDE Statement 
  8267.       RESOURCE Statement 
  8268.       RTEXT Statement 
  8269.       SLIDER Statement 
  8270.       SPINBUTTON Statement 
  8271.       STRINGTABLE Statement 
  8272.       SUBITEMSIZE Statement 
  8273.       SUBMENU Statement 
  8274.       undef Directive 
  8275.       VALUESET Statement 
  8276.       WINDOW Statement 
  8277.       WINDOWTEMPLATE Statement 
  8278.  
  8279.  
  8280. ΓòÉΓòÉΓòÉ 18.5.1. ACCELTABLE Statement ΓòÉΓòÉΓòÉ
  8281.  
  8282. Syntax: 
  8283.  
  8284.   ACCELTABLE acceltable-id [mem-option][code-page]
  8285.   BEGIN
  8286.   key-value, command[, accelerator-options]...
  8287.       .
  8288.       .
  8289.       .
  8290.   END
  8291.  
  8292. Description 
  8293.  
  8294. The ACCELTABLE statement creates a table of accelerators for an application. 
  8295. An accelerator is a keystroke that gives the user a quick way to choose a 
  8296. command from a menu or carry out some other task.  An accelerator table can be 
  8297. loaded when needed from the executable file by using the WinLoadAccelTable 
  8298. function. 
  8299.  
  8300. You can provide any number of ACCELTABLE statements in a resource script file. 
  8301. Each statement must specify a unique table identifier.  You can provide any 
  8302. number of accelerator definitions in an accelerator table; however, no two 
  8303. definitions in a table can specify the same key. 
  8304.  
  8305. Each accelerator definition must specify a key value and command. The 
  8306. WinSetAccelTable function used in the application translates the accelerator 
  8307. keystroke into a WM_COMMAND, WM_HELP, or WM_SYSCOMMAND message that has the 
  8308. corresponding command value.  The message type depends on the 
  8309. accelerator-option field. 
  8310.  
  8311.  acceltable-id     Specifies the accelerator-table identifier.  This value must 
  8312.                    be an integer in the range -32768 through 32767, or a simple 
  8313.                    expression that evaluates to a value in that range.  Each 
  8314.                    accelerator table in a resource script file must have a 
  8315.                    unique identifier. 
  8316.  mem-option        Specifies how the system manages the resource when it is in 
  8317.                    memory.  This value must be one of the following: 
  8318.                    OPTION              Meaning 
  8319.                    FIXED               System keeps the resource at a fixed 
  8320.                                        memory location. 
  8321.                    MOVEABLE            System moves the resource as necessary 
  8322.                                        to compact memory.  This is the default 
  8323.                                        option. 
  8324.                    DISCARDABLE         System discards the resource if it is no 
  8325.                                        longer needed. 
  8326.  code-page         Specifies a code page value. For a list of valid code pages 
  8327.                    see CODEPAGE Statement. 
  8328.  key-value         Specifies the character, scan, or virtual-key code of the 
  8329.                    accelerator key.  The meaning depends on the 
  8330.                    accelerator-options field.  The key-value field must be a 
  8331.                    single character enclosed in double-quotation marks or an 
  8332.                    integer in the range 0 through 255. If you specify an 
  8333.                    integer, you must specify the CHAR, SCANCODE, or VIRTUALKEY 
  8334.                    accelerator option; otherwise, the default option is CHAR. 
  8335.                    Integers must be in decimal or hexadecimal notation. 
  8336.  command           Specifies the command value for the corresponding 
  8337.                    WM_COMMAND, WM_HELP, or WM_SYSCOMMAND message.  This value 
  8338.                    must be an integer in the range -32768 through 32767, or a 
  8339.                    simple expression that evaluates to an integer in that 
  8340.                    range. 
  8341.  accelerator-options Specifies the accelerator type.  This value can be a 
  8342.                    combination of the following: 
  8343.                    VIRTUALKEY           Specifies that the key-value field is a 
  8344.                                         virtual-key code. 
  8345.                    SCANCODE             Specifies that the key-value field is a 
  8346.                                         keyboard scan code. 
  8347.                    CHAR                 Specifies that the key-value field is a 
  8348.                                         character code. 
  8349.                    SHIFT                Specifies that the user must press the 
  8350.                                         Shift key and the key corresponding to 
  8351.                                         the key-value field to generate the 
  8352.                                         accelerator. 
  8353.                    CONTROL              Specifies that the user must press the 
  8354.                                         Ctrl key and the key corresponding to 
  8355.                                         the key-value field to generate the 
  8356.                                         accelerator. 
  8357.                    ALT                  Specifies that the user must press the 
  8358.                                         Alt key and the key corresponding to 
  8359.                                         the key-value field to generate the 
  8360.                                         accelerator. 
  8361.                    LONEKEY              Specifies that the user needs to press 
  8362.                                         only the key corresponding to the 
  8363.                                         key-value field to generate the 
  8364.                                         accelerator. 
  8365.                    SYSCOMMAND           Specifies that the accelerator 
  8366.                                         translates to a WM_SYSCOMMAND message. 
  8367.                                         If you do not include this option, the 
  8368.                                         accelerator translates to a WM_COMMAND 
  8369.                                         message. 
  8370.                    HELP                 Specifies that the accelerator 
  8371.                                         translates to a WM_HELP message.  If 
  8372.                                         you do not include this option, the 
  8373.                                         accelerator translates to a WM_COMMAND 
  8374.                                         message. 
  8375.  
  8376.  Note:  VIRTUALKEY, SCANCODE, and CHAR are mutually exclusive. SYSCOMMAND and 
  8377.  HELP are also mutually exclusive. 
  8378.  
  8379.  Comments 
  8380.  
  8381.  If two accelerators use the same key with different Shift, Control, or ALT 
  8382.  options, you should specify the more restrictive accelerator first in the 
  8383.  table.  For example, you should place Shift+Enter before Enter. 
  8384.  
  8385.  If you include the OS2.H header file, you can use the following constants to 
  8386.  specify the accelerator options: 
  8387.  
  8388.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8389.   ΓöéAF_ALT              ΓöéAF_CHAR             ΓöéAF_CONTROL          Γöé
  8390.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8391.   ΓöéAF_HELP             ΓöéAF_LONEKEY          ΓöéAF_SCANCODE         Γöé
  8392.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8393.   ΓöéAF_SHIFT            ΓöéAF_SYSCOMMAND       ΓöéAF_VIRTUALKEY       Γöé
  8394.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8395.  
  8396.  To combine these constants, you must use the bitwise OR (|) operator. 
  8397.  
  8398.  Example 
  8399.  
  8400.  This example creates an accelerator table whose accelerator-table identifier 
  8401.  is 1.  The table contains two accelerators:  Ctrl+S and Ctrl+G.  These 
  8402.  accelerators generate WM_COMMAND messages with values of 101 and 102, 
  8403.  respectively, when the user presses the corresponding keys. 
  8404.  
  8405.     ACCELTABLE 1
  8406.     BEGIN
  8407.         "S", 101, CONTROL
  8408.         "G", 102, CONTROL
  8409.     END
  8410.  
  8411.  
  8412. ΓòÉΓòÉΓòÉ 18.5.2. ASSOCTABLE Statement ΓòÉΓòÉΓòÉ
  8413.  
  8414. Syntax: 
  8415.  
  8416.   ASSOCTABLE assoctable-id [load-option][mem-option][code-page]
  8417.   BEGIN
  8418.   association-name, file-match-string[, extended-attribute-flag]
  8419.     [, icon-filename]
  8420.     .
  8421.     .
  8422.     .
  8423.   END
  8424.  
  8425. Description 
  8426.  
  8427. The ASSOCTABLE statement defines a file-association table for an application. 
  8428. This table associates the data files that an application creates with the 
  8429. executable file of the application.  When the user selects one of these data 
  8430. files from File Manager, the associated application begins executing. 
  8431.  
  8432. A file-association table can also associate icons with the data files that an 
  8433. application creates.  The shell uses these icons to identify the data files 
  8434. graphically.  Because a file-association table associates icons by file type, 
  8435. all data files having the same file type have the same icon. 
  8436.  
  8437. You can provide any number of ASSOCTABLE statements in a resource script file, 
  8438. but each statement must specify a unique assoctable-id value.  The 
  8439. file-association tables are written not only to the resources within your 
  8440. executable file, but also to the .ASSOC extended attribute.  However, only the 
  8441. last file-association table specified in the resource script file is actually 
  8442. written to the extended attribute. 
  8443.  
  8444.  assoctable-id     Specifies the association-table identifier.  This value must 
  8445.                    be an integer in the range -32768 through 32767, or a simple 
  8446.                    expression that evaluates to a value in that range. 
  8447.  load-option       Specifies when the system loads the resource from the 
  8448.                    executable file into memory.  This value must be one of the 
  8449.                    following: 
  8450.                    PRELOAD             System loads the resource when the 
  8451.                                        application starts. 
  8452.                    LOADONCALL          System loads the resource when the 
  8453.                                        application calls the DosGetResource or 
  8454.                                        DosGetResource2 function.  This is the 
  8455.                                        default option. 
  8456.  mem-option        Specifies how the system manages the resource when it is in 
  8457.                    memory.  This value must be one of the following: 
  8458.                    FIXED               System keeps the resource at a fixed 
  8459.                                        memory location. 
  8460.                    MOVEABLE            System moves the resource as necessary 
  8461.                                        to compact memory.  This is the default 
  8462.                                        option. 
  8463.                    DISCARDABLE         System discards the resource if it is no 
  8464.                                        longer needed. 
  8465.  code-page         Specifies a code page value.  For a list of valid code pages 
  8466.                    see CODEPAGE Statement. 
  8467.  association-name  Specifies the name of the file type the application 
  8468.                    recognizes.  This field must contain zero or more characters 
  8469.                    enclosed in double quotation marks. 
  8470.  
  8471.                    Character values must be in the range 1 through 255.  If a 
  8472.                    double quotation mark is required in the name, you must 
  8473.                    include the double quotation mark twice. 
  8474.  file-match-string Specifies the file-matching string of a particular type of 
  8475.                    data file that the application creates. This field must 
  8476.                    contain zero or more characters enclosed in double quotation 
  8477.                    marks. You can only use characters that are valid in OS/2 
  8478.                    filenames and extensions and the OS/2 wildcard characters 
  8479.                    question mark (?) and asterisk (*). 
  8480.  extended-attribute-flag Specifies the extended-attribute options. This value 
  8481.                    can be a combination of the following: 
  8482.                    EAF_DEFAULTOWNER           Specifies that the application 
  8483.                                               containing the file-association 
  8484.                                               table starts when the user 
  8485.                                               selects any file matching the 
  8486.                                               file-match-string field from File 
  8487.                                               Manager. 
  8488.                    EAF_REUSEICON              Specifies that the icon defined 
  8489.                                               in the previous entry of the 
  8490.                                               file-association table is used as 
  8491.                                               the icon for the current 
  8492.                                               data-file type. 
  8493.                    EAF_UNCHANGEABLE           Specifies that the entry should 
  8494.                                               not be edited. 
  8495.  icon-filename     Specifies the name of the file containing an icon. File 
  8496.                    Manager uses this icon to represent all application-created 
  8497.                    data files matching the file-match-string field.  The file 
  8498.                    must be in the current directory. 
  8499.  
  8500.  
  8501. ΓòÉΓòÉΓòÉ 18.5.3. AUTOCHECKBOX Statement ΓòÉΓòÉΓòÉ
  8502.  
  8503. Syntax: 
  8504.  
  8505.   AUTOCHECKBOX text, id, x, y, width, height[, style]
  8506.  
  8507. The AUTOCHECKBOX statement creates an automatic-check-box control. The control 
  8508. is a small rectangle (check box) that contains an X when the user selects it. 
  8509. The specified text is displayed to the right of the check box.  An X appears in 
  8510. the square when the user first selects the control and disappears the next time 
  8511. the user selects it.  The AUTOCHECKBOX statement, which you can use only in a 
  8512. DIALOG or WINDOW statement, defines the text, identifier, dimensions, and 
  8513. attributes of a control window.  The predefined class for this control is 
  8514. WC_BUTTON. If you do not specify the style, the default style is 
  8515. BS_AUTOCHECKBOX and WS_TABSTOP. 
  8516.  
  8517.  text    Specifies text that is displayed to the right of the control.  This 
  8518.          field must contain zero or more characters enclosed in double 
  8519.          quotation marks.  Character values must be in the range 1 through 255. 
  8520.          If a double quotation mark is required in the text, you must include 
  8521.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  8522.          indicates that the following character is used as a mnemonic character 
  8523.          for the control.  When the control is displayed, the tilde is not 
  8524.          shown, but the mnemonic character is underlined.  The user can choose 
  8525.          the control by pressing the key corresponding to the underlined 
  8526.          mnemonic character. 
  8527.  id      Specifies the control identifier.  This value must be an integer in 
  8528.          the range -32768 through 32767, or a simple expression that evaluates 
  8529.          to a value in that range. 
  8530.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  8531.          This value must be an integer in the range -32768 through 32767 or an 
  8532.          expression consisting of integers and the addition (+) or subtraction 
  8533.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8534.          relative to the origin of the dialog box, window, or control 
  8535.          containing the specified control. 
  8536.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  8537.          This value must be an integer in the range -32768 through 32767 or an 
  8538.          expression consisting of integers and the addition (+) or subtraction 
  8539.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8540.          relative to the origin of the dialog box, window, or control 
  8541.          containing the specified control. 
  8542.  width   Specifies the width of the control.  This value must be an integer in 
  8543.          the range 0 through 65535 or an expression consisting of integers and 
  8544.          the addition (+) or subtraction (-) operator.  The width is in 
  8545.          n-character units. 
  8546.  height  Specifies the height of the control.  This value must be an integer in 
  8547.          the range 0 through 65535 or an expression consisting of integers and 
  8548.          the addition (+) or subtraction (-) operator.  The height is in 
  8549.          1/8-character units. 
  8550.  style   Specifies the control styles.  This value can be a combination of the 
  8551.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  8552.          operator to combine styles. 
  8553.  
  8554.  Example 
  8555.  
  8556.  This example creates an automatic-check-box control that is labeled "Italic." 
  8557.  
  8558.     AUTOCHECKBOX "Italic", 101, 10, 10, 100, 100
  8559.  
  8560.  
  8561. ΓòÉΓòÉΓòÉ 18.5.4. AUTORADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  8562.  
  8563. Syntax: 
  8564.  
  8565. AUTORADIOBUTTON text, id, x, y, width, height[, style]
  8566.  
  8567. The AUTORADIOBUTTON statement creates an automatic-radio-button control.  This 
  8568. control is a small circle with the given text displayed to its right.  The 
  8569. control highlights the circle and sends a message to its parent window when the 
  8570. user selects the button.  The control also removes the selection from any other 
  8571. automatic-radio-button controls in the same group.  When the user selects the 
  8572. button again, the control removes the highlight before sending a message.  The 
  8573. AUTORADIOBUTTON statement, which you can use only in a DIALOG or WINDOW 
  8574. statement, defines the text, identifier, dimensions, and attributes of a 
  8575. control window.  The predefined class for this control is WC_BUTTON.  If you do 
  8576. not specify a style, the default style is BS_AUTORADIOBUTTON. 
  8577.  
  8578.  text    Specifies text that is displayed to the right of the control.  This 
  8579.          field must contain zero or more characters enclosed in double 
  8580.          quotation marks.  Character values must be in the range 1 through 255. 
  8581.          If a double quotation mark is required in the text, you must include 
  8582.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  8583.          indicates that the following character is used as a mnemonic character 
  8584.          for the control.  When the control is displayed, the tilde is not 
  8585.          shown, but the mnemonic character is underlined. The user can choose 
  8586.          the control by pressing the key corresponding to the underlined 
  8587.          mnemonic character. 
  8588.  id      Specifies the control identifier.  This value must be an integer in 
  8589.          the range -32768 through 32767, or a simple expression that evaluates 
  8590.          to a value in that range. 
  8591.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  8592.          This value must be an integer in the range 32768 through 32767 or an 
  8593.          expression consisting of integers and the addition (+) or subtraction 
  8594.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8595.          relative to the origin of the dialog box, window, or control 
  8596.          containing the specified control. 
  8597.  y       This value must be an integer in the range -32768 through 32767 or an 
  8598.          expression consisting of integers and the addition (+) or subtraction 
  8599.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8600.          relative to the origin of the dialog box, window, or control 
  8601.          containing the specified control. 
  8602.  width   Specifies the width of the control.  This value must be an integer in 
  8603.          the range 0 through 65535 or an expression consisting of integers and 
  8604.          the addition (+) or subtraction (-) operator.  The width is in 
  8605.          n-character units. 
  8606.  height  Specifies the height of the control.  This value must be an integer in 
  8607.          the range 0 through 65535 or an expression consisting of integers and 
  8608.          the addition (+) or subtraction (-) operator.  The height is in 
  8609.          1/8-character units. 
  8610.  style   Specifies the control styles.  This value can be a combination of the 
  8611.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  8612.          operator to combine styles. 
  8613.  
  8614.  Example 
  8615.  
  8616.  This example creates an automatic-radio-button control that is labeled 
  8617.  "Italic." 
  8618.  
  8619.     AUTORADIOBUTTON "Italic", 101, 10, 10, 24, 50
  8620.  
  8621.  
  8622. ΓòÉΓòÉΓòÉ 18.5.5. BITMAP Statement ΓòÉΓòÉΓòÉ
  8623.  
  8624. Syntax: 
  8625.  
  8626. BITMAP bitmap-id [load-option] [mem-option] [codepage] filename
  8627.  
  8628. The BITMAP statement defines a bit map resource for an application.  A bit map 
  8629. resource, typically created using the Icon Editor, is a custom bit map that an 
  8630. application uses in its display or as an item in a menu.  The BITMAP statement 
  8631. copies the bit-map resource from the file specified in the filename field and 
  8632. adds it to the application's other resources.  A bit-map resource can be loaded 
  8633. from the executable file when needed by using the GpiLoadBitmap function. 
  8634.  
  8635. You can provide any number of BITMAP statements in a resource script file, but 
  8636. each statement must specify a unique bitmap-id value. 
  8637.  
  8638.  bitmap-id         Specifies the bit-map-resource identifier.  This value must 
  8639.                    be an integer in the range -32768 through 32767 or a simple 
  8640.                    expression that evaluates to a value in that range. 
  8641.  load-option       Specifies when the system loads the resource from the 
  8642.                    executable file into memory.  This value must be one of the 
  8643.                    following: 
  8644.                    PRELOAD             System loads the resource when the 
  8645.                                        application starts. 
  8646.                    LOADONCALL          System loads the resource when the 
  8647.                                        application calls the GpiLoadBitmap 
  8648.                                        function.  This is the default option. 
  8649.  mem-option        Specifies how the system manages the resource when it is in 
  8650.                    memory.  This value must be one of the following: 
  8651.                    FIXED               System keeps the resource at a fixed 
  8652.                                        memory location. 
  8653.                    MOVEABLE            System moves the resource as necessary 
  8654.                                        to compact memory.  This is the default 
  8655.                                        option. 
  8656.                    DISCARDABLE         System discards the resource if it is no 
  8657.                                        longer needed. 
  8658.  codepage          Specifies a code page value. For a list of valid code pages 
  8659.                    see CODEPAGE Statement. 
  8660.  filename          Specifies the name of the file containing the icon resource. 
  8661.                    If the file is not in the current directory, filename must 
  8662.                    be preceded by a full path. 
  8663.  
  8664.  Example 
  8665.  
  8666.  This example defines a bit map whose bit-map identifier is 12. The bit-map 
  8667.  resource is copied from the file CUSTOM.BMP. 
  8668.  
  8669.     BITMAP 12 custom.bmp
  8670.  
  8671.  
  8672. ΓòÉΓòÉΓòÉ 18.5.6. CHECKBOX Statement ΓòÉΓòÉΓòÉ
  8673.  
  8674. Syntax: 
  8675.  
  8676. CHECKBOX text, id, x, y, width, height[, style]
  8677.  
  8678. The CHECKBOX statement creates a check-box control.  The control is a small 
  8679. rectangle (check box) that has the specified text displayed to the right.  The 
  8680. control highlights the rectangle and sends a message to its parent window when 
  8681. the user selects the control.  The CHECKBOX statement, which you can use only 
  8682. in a DIALOG or WINDOW statement, defines the text, identifier, dimensions, and 
  8683. attributes of a control window.  The predefined class for this control is 
  8684. WC_BUTTON.  If you do not specify a style, the default style is BS_CHECKBOX and 
  8685. WS_TABSTOP. 
  8686.  
  8687.  text    Specifies text that is displayed to the right of the control.  This 
  8688.          field must contain zero or more characters enclosed in double 
  8689.          quotation marks.  Character values must be in the range 1 through 255. 
  8690.          If a double quotation mark is required in the text, you must include 
  8691.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  8692.          indicates that the following character is used as a mnemonic character 
  8693.          for the control.  When the control is displayed, the tilde is not 
  8694.          shown, but the mnemonic character is underlined.  The user can choose 
  8695.          the control by pressing the key corresponding to the underlined 
  8696.          mnemonic character. 
  8697.  id      Specifies the control identifier.  This value must be an integer in 
  8698.          the range -32768 through 32767, or a simple expression that evaluates 
  8699.          to a value in that range. 
  8700.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  8701.          This value must be an integer in the range -32768 through 32767 or an 
  8702.          expression consisting of integers and the addition (+) or subtraction 
  8703.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8704.          relative to the origin of the dialog box, window, or control 
  8705.          containing the specified control. 
  8706.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  8707.          This value must be an integer in the range -32768 through 32767 or an 
  8708.          expression consisting of integers and the addition (+) or subtraction 
  8709.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8710.          relative to the origin of the dialog box, window, or control 
  8711.          containing the specified control. 
  8712.  width   Specifies the width of the control.  This value must be an integer in 
  8713.          the range 0 through 65535 or an expression consisting of integers and 
  8714.          the addition (+) or subtraction (-) operator.  The width is in 
  8715.          n-character units. 
  8716.  height  Specifies the height of the control.  This value must be an integer in 
  8717.          the range 0 through 65535 or an expression consisting of integers and 
  8718.          the addition (+) or subtraction (-) operator.  The height is in 
  8719.          1/8-character units. 
  8720.  style   Specifies the control styles.  This value can be a combination of the 
  8721.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  8722.          operator to combine styles. 
  8723.  
  8724.  Example 
  8725.  
  8726.  This example creates a check-box control that is labeled "Italic." 
  8727.  
  8728.     CHECKBOX "Italic", 101, 10, 10, 100, 100
  8729.  
  8730.  
  8731. ΓòÉΓòÉΓòÉ 18.5.7. CODEPAGE Statement ΓòÉΓòÉΓòÉ
  8732.  
  8733. Syntax: 
  8734.  
  8735. CODEPAGE codepage-id
  8736.  
  8737. The CODEPAGE statement sets the code page for all subsequent resources.  The 
  8738. code page specifies the character set used for characters in the resource. 
  8739.  
  8740. If the CODEPAGE statement is not given in a resource script file, RC uses the 
  8741. code page set up for the individual system.  If more than one CODEPAGE 
  8742. statement is given in the file, each CODEPAGE statement applies to the resource 
  8743. statements between it and the next CODEPAGE statement. 
  8744.  
  8745.  codepage-id       Identifies the code page to be used for subsequent 
  8746.                    resources. This value can be one of the following: 
  8747.                    437       United States 
  8748.                    850       Multilingual 
  8749.                    860       Portuguese 
  8750.                    863       Canadian French 
  8751.                    865       Norwegian 
  8752.                    932       Japanese 
  8753.                    934       Korean 
  8754.                    936       Chinese 
  8755.                    938       Taiwan 
  8756.  
  8757.  Comments 
  8758.  
  8759.  You may also specify a code page by placing a code-page identifier in the 
  8760.  load-options or memory-options field of any RC statement that uses those 
  8761.  fields. 
  8762.  
  8763.  Example 
  8764.  
  8765.  In this example, the code page for the character-string resources is set to 
  8766.  Portuguese (860). 
  8767.  
  8768.     CODEPAGE 860
  8769.  
  8770.     STRINGTABLE
  8771.     BEGIN
  8772.         1 "Filename not found"
  8773.         2 "Cannot open file for reading"
  8774.     END
  8775.  
  8776.  
  8777. ΓòÉΓòÉΓòÉ 18.5.8. COMBOBOX Statement ΓòÉΓòÉΓòÉ
  8778.  
  8779. Syntax: 
  8780.  
  8781.   COMBOBOX text, id, x, y, width, height[, style]
  8782.  
  8783. The COMBOBOX statement creates a combination-box control.  This control 
  8784. combines a list-box control with an entry-field control.  It allows the user to 
  8785. place the selected item from a list box into an entry field. 
  8786.  
  8787. The COMBOBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  8788. defines the text, identifier, dimensions, and attributes of a control window. 
  8789. The predefined class for this control is WC_COMBOBOX. If you do not specify a 
  8790. style, the default style is CBS_SIMPLE, WS_GROUP, WS_TABSTOP, and WS_VISIBLE. 
  8791.  
  8792.  text    Specifies text that is displayed in the entry field of the control. 
  8793.          This field must contain zero or more characters enclosed in double 
  8794.          quotation marks.  Character values must be in the range 1 through 255. 
  8795.          If a double quotation mark is required in the text, you must include 
  8796.          the double quotation mark twice. 
  8797.  id      Specifies the control identifier.  This value must be an integer in 
  8798.          the range -32768 through 32767, or a simple expression that evaluates 
  8799.          to a value in that range. 
  8800.  x       Specifies the x-coordinate of the lower-left corner of the control 
  8801.          This value must be an integer in the range -32768 through 32767 or an 
  8802.          expression consisting of integers and the addition (+) or subtraction 
  8803.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8804.          relative to the origin of the dialog box, window, or control 
  8805.          containing the specified control. 
  8806.  y       Specifies the y-coordinate of the lower-left corner of the control 
  8807.          This value must be an integer in the range -32768 through 32767 or an 
  8808.          expression consisting of integers and the addition (+) or subtraction 
  8809.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8810.          relative to the origin of the dialog box, window, or control 
  8811.          containing the specified control. 
  8812.  width   Specifies the width of the control.  This value must be an integer in 
  8813.          the range 0 through 65535 or an expression consisting of integers and 
  8814.          the addition (+) or subtraction (-) operator.  The width is in 
  8815.          n-character units. 
  8816.  height  Specifies the height of the control.  This value must be an integer in 
  8817.          the range 0 through 65535 or an expression consisting of integers and 
  8818.          the addition (+) or subtraction (-) operator.  The height is in 
  8819.          1/8-character units. 
  8820.  style   Specifies the control styles.  This value can be a combination of the 
  8821.          styles specified for WC_COMBOBOX. You can use the bitwise OR (|) 
  8822.          operator to combine styles. 
  8823.  
  8824.  Example 
  8825.  
  8826.  This example creates a combination-box control. 
  8827.  
  8828.     COMBOBOX "", 101, 10, 10, 24, 50
  8829.  
  8830.  
  8831. ΓòÉΓòÉΓòÉ 18.5.9. CONTAINER Statement ΓòÉΓòÉΓòÉ
  8832.  
  8833. Syntax: 
  8834.  
  8835. CONTAINER  id, x, y, width, height [,style]
  8836.  
  8837. The CONTAINER statement creates a container control within a dialog window. 
  8838. The container control is a visual component that holds objects.  The CONTAINER 
  8839. statement defines the identifier, position, dimensions, and attributes of a 
  8840. container control. The predefined class for this control is WC_CONTAINER.  If 
  8841. you do not specify a style, the default style is WS_TABSTOP, WS_VISIBLE, and 
  8842. CCS_SINGLESEL. 
  8843.  
  8844.  id      Specifies the control identifier.  This value is any integer -32768 
  8845.          through 32767, or a simple expression that evaluates to a value in 
  8846.          that range. 
  8847.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  8848.          This value is any integer -32768 through 32767 or an expression 
  8849.          consisting of integers and the addition (+) or subtraction (-) 
  8850.          operator.  The coordinate is assumed to be in dialog units and is 
  8851.          relative to the origin of the dialog window containing the container 
  8852.          control. 
  8853.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  8854.          This value is any integer -32768 through 32767 or an expression 
  8855.          consisting of integers and the addition (+) or subtraction (-) 
  8856.          operator.  The coordinate is assumed to be in dialog units and is 
  8857.          relative to the origin of the dialog window containing the container 
  8858.          control. 
  8859.  width   Specifies the width of the control.  This value is any integer 0 
  8860.          through 65535, or an expression consisting of integers and the 
  8861.          addition (+) or subtraction (-) operator. The width is in n-character 
  8862.          units. 
  8863.  height  Specifies the height of the control.  This value is any integer 0 
  8864.          through 65535, or an expression consisting of integers and the 
  8865.          addition (+) or subtraction (-) operator. The height is in 
  8866.          1/8-character units. 
  8867.  style   Specifies the control styles.  This value can be a combination of the 
  8868.          styles specified for WC_CONTAINER. Use the bitwise OR (|) operator to 
  8869.          combine styles. 
  8870.  
  8871.  Comments 
  8872.  
  8873.  A CONTAINER statement is only used in a DIALOG or WINDOW statement. 
  8874.  
  8875.  Example 
  8876.  
  8877.  This example creates a container control at position (30,30) within the dialog 
  8878.  window.  The container has a width of 70 character units and a height of 25 
  8879.  character units.  Its resource ID is 301.  The default style CCS_SINGLESEL has 
  8880.  been overridden by the style specification CCS_MULTIPLESEL.  The default 
  8881.  styles WS_TABSTOP and WS_GROUP are both in effect, though only the latter is 
  8882.  specified. 
  8883.  
  8884.   #define IDC_CONTAINER    301
  8885.   #define IDD_CONTAINERDLG 504
  8886.   DIALOG "Container", IDD_CONTAINERDLG, 23, 6, 120, 280, FS_NOBYTEALIGN |
  8887.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  8888.     BEGIN
  8889.        CONTAINER   IDC_CONTAINER, 30, 30, 70, 200, CCS_MULTIPLESEL |
  8890.                          WS_GROUP
  8891.     END
  8892.  
  8893.  
  8894. ΓòÉΓòÉΓòÉ 18.5.10. CONTROL Statement ΓòÉΓòÉΓòÉ
  8895.  
  8896. Syntax: 
  8897.  
  8898.   CONTROL text, id, x, y, width, height, class[, style]
  8899.   [ data-definitions ]
  8900.   [ BEGIN
  8901.   control-definition
  8902.       .
  8903.       .
  8904.       .
  8905.   END ]
  8906.  
  8907. The CONTROL statement defines a control as belonging to the specified class. 
  8908. The statement defines the position and dimensions of the control within the 
  8909. parent window, as well as the control style.  The CONTROL statement is most 
  8910. often used in a DIALOG or WINDOW statement. 
  8911.  
  8912. Typically, several CONTROL statements are used in each DIALOG statement, and 
  8913. each CONTROL statement must have a unique id value. The optional BEGIN and END 
  8914. statements enclose any CONTROL statements that may be given with the control. 
  8915. CONTROL statements given in this manner represent child windows belonging to 
  8916. the control created by the CONTROL statement. 
  8917.  
  8918.  text    Specifies text that is displayed to the right of the control.  This 
  8919.          field must contain zero or more characters enclosed in double 
  8920.          quotation marks.  Character values must be in the range 1 through 255. 
  8921.          If a double quotation mark is required in the text, you must include 
  8922.          the double quotation mark twice.  In the appropriate styles, a tilde ( 
  8923.          ~ ) character in the text indicates that the following character is 
  8924.          used as a mnemonic character for the control.  When the control is 
  8925.          displayed, the tilde is not shown, but the mnemonic character is 
  8926.          underlined.  The user can choose the control by pressing the key 
  8927.          corresponding to the underlined mnemonic character. 
  8928.  id      Specifies the control identifier.  This value must be an integer in 
  8929.          the range -32768 through 32767, or a simple expression that evaluates 
  8930.          to a value in that range. 
  8931.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  8932.          This value must be an integer in the range -32768 through 32767 or an 
  8933.          expression consisting of integers and the addition (+) or subtraction 
  8934.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8935.          relative to the origin of the parent window. 
  8936.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  8937.          This value must be an integer in the range -32768 through 32767 or an 
  8938.          expression consisting of integers and the addition (+) or subtraction 
  8939.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8940.          relative to the origin of the parent window. 
  8941.  width   Specifies the width of the control.  This value must be an integer in 
  8942.          the range 0 through 65535 or an expression consisting of integers and 
  8943.          the addition (+) or subtraction (-) operator.  The value is in 
  8944.          n-character units. 
  8945.  height  Specifies the height of the control.  This value must be an integer in 
  8946.          the range 0 through 65535 or an expression consisting of integers and 
  8947.          the addition (+) or subtraction (-) operator.  The value is in 
  8948.          1/8-character units. 
  8949.  class   Specifies the control class.  This value can be one of the control 
  8950.          classes specified in the "Control Classes" table, in the Presentation 
  8951.          Manager Programming Reference, or the name of the control class, 
  8952.          enclosed in double quotation marks. 
  8953.  style   Specifies the control style.  This value can be a combination of 
  8954.          control styles. You can use the bitwise OR (|) operator to combine 
  8955.          styles. 
  8956.  data-definitions Specifies a CTLDATA and/or PRESPARAMS statement. These 
  8957.          statements define control and presentation data for the control. For 
  8958.          more information, see CTLDATA Statement and PRESPARAMS Statement. 
  8959.  control-definition Specifies a CONTROL statement or any one of several 
  8960.          predefined control statements. These statements define the style, 
  8961.          position, and dimensions of controls in the control. 
  8962.  
  8963.  Comments 
  8964.  
  8965.  The CONTROL statement can actually contain any combination of CONTROL, DIALOG, 
  8966.  and WINDOW statements.  But typically, a CONTROL statement contains no such 
  8967.  statements. 
  8968.  
  8969.  Example 
  8970.  
  8971.  This example creates a pushbutton control with the WS_TABSTOP and WS_VISIBLE 
  8972.  styles. 
  8973.  
  8974.     CONTROL "OK", 101, 10, 10, 20, 50, WC_BUTTON, BS_PUSHBUTTON |
  8975.                                                   WS_TABSTOP    |
  8976.                                                   WS_VISIBLE
  8977.  
  8978.  
  8979. ΓòÉΓòÉΓòÉ 18.5.11. CTEXT Statement ΓòÉΓòÉΓòÉ
  8980.  
  8981. Syntax: 
  8982.  
  8983.   CTEXT text, id, x, y, width, height[, style]
  8984.  
  8985. The CTEXT statement creates a centered-text control.  The control is a simple 
  8986. rectangle displaying the given text centered in the rectangle.  The text is 
  8987. formatted before it is displayed.  Words that would extend past the end of a 
  8988. line are automatically wrapped to the beginning of the next line.  The CTEXT 
  8989. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  8990. text, identifier, dimensions, and attributes of the control.  The predefined 
  8991. class for this control is WC_STATIC.  If you do not specify a style, the 
  8992. default style is SS_TEXT, DT_CENTER, and WS_GROUP. 
  8993.  
  8994.  text    Specifies text that is centered in the rectangular area of the 
  8995.          control.  This field must contain zero or more characters enclosed in 
  8996.          double quotation marks.  Character values must be in the range 1 
  8997.          through 255.  If a double quotation mark is required in the text, you 
  8998.          must include the double quotation mark twice. 
  8999.  id      Specifies the control identifier.  This value must be an integer in 
  9000.          the range -32768 through 32767, or a simple expression that evaluates 
  9001.          to a value in that range. 
  9002.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  9003.          This value must be an integer in the range -32768 through 32767 or an 
  9004.          expression consisting of integers and the addition (+) or subtraction 
  9005.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  9006.          relative to the origin of the dialog box, window, or control 
  9007.          containing the specified control. 
  9008.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  9009.          This value must be an integer in the range -32768 through 32767 or an 
  9010.          expression consisting of integers and the addition (+) or subtraction 
  9011.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  9012.          relative to the origin of the dialog box, window, or control 
  9013.          containing the specified control. 
  9014.  width   Specifies the width of the control.  This value must be an integer in 
  9015.          the range 0 through 65 535 or an expression consisting of integers and 
  9016.          the addition (+) or subtraction (-) operator.  The width is in 
  9017.          n-character units. 
  9018.  height  Specifies the height of the control.  This value must be an integer in 
  9019.          the range 0 through 65 535 or an expression consisting of integers and 
  9020.          the addition (+) or subtraction (-) operator.  The height is in 
  9021.          1/8-character units. 
  9022.  style   Specifies the control styles.  This value can be a combination of the 
  9023.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  9024.          operator to combine styles. 
  9025.  
  9026.  Example 
  9027.  
  9028.  This example creates a centered-text control that is labeled "Filename." 
  9029.  
  9030.     CTEXT "Filename", 101, 10, 10, 100, 100
  9031.  
  9032.  
  9033. ΓòÉΓòÉΓòÉ 18.5.12. CTLDATA Statement ΓòÉΓòÉΓòÉ
  9034.  
  9035. Syntax: 
  9036.  
  9037.   CTLDATA word-value[, word-value][...]
  9038.  
  9039.   CTLDATA string
  9040.  
  9041.   CTLDATA MENU
  9042.   BEGIN
  9043.   menuitem-definition
  9044.      .
  9045.      .
  9046.      .
  9047.   END
  9048.  
  9049. The CTLDATA statement defines control data for a custom dialog box, window, or 
  9050. control.  The statement has three basic forms to permit specifying a menu or 
  9051. specifying data in words or characters.  The data can be in any format, since 
  9052. only your window procedure will use it. The window procedure of the dialog box, 
  9053. window, or control receives this data when the item is created.  It is up to 
  9054. the window procedure to process the data. 
  9055.  
  9056.  word-value     Specifies a 16-bit value.  This value must be an integer in the 
  9057.                 range -32768 through 32767.  It must be in decimal notation. 
  9058.  string         Specifies a string of 8-bit characters.  This field must 
  9059.                 contain zero or more characters enclosed in double quotation 
  9060.                 marks.  Character values must be in the range 1 through 255. 
  9061.                 If a double quotation mark is required in the string, you must 
  9062.                 include the double quotation mark twice. 
  9063.  menuitem-definition Specifies a MENUITEM or SUBMENU statement.  These 
  9064.                 statements define the individual commands or submenus in the 
  9065.                 given menu. For details about these statements, see MENUITEM 
  9066.                 Statement and SUBMENU Statement. 
  9067.  
  9068.  Comments 
  9069.  
  9070.  CTLDATA is often used to supply data that controls the subsequent operation of 
  9071.  the custom window.  For example, the CTLDATA statement may contain extended 
  9072.  style bits - that is, style bits designed specifically for your customized 
  9073.  window. 
  9074.  
  9075.  You should reserve the CTLDATA statement for window classes that you create 
  9076.  yourself. 
  9077.  
  9078.  Example 
  9079.  
  9080.  This example creates a menu for the window created with the WINDOW statement. 
  9081.  
  9082.     WINDOWTEMPLATE 1
  9083.     BEGIN
  9084.         WINDOW "Sample", 1, 0, 0, 100, 100, "MYCLASS", 0, FCF_STANDARD
  9085.         CTLDATA MENU
  9086.         BEGIN
  9087.             MENUITEM "Exit", 101
  9088.         END
  9089.     END
  9090.  
  9091.  
  9092. ΓòÉΓòÉΓòÉ 18.5.13. DEFAULTICON STATEMENT ΓòÉΓòÉΓòÉ
  9093.  
  9094. This statement installs the named icon file definition under the ICON Extended 
  9095. Attribute of the program file.  An icon with an icon-id of 1 is the default 
  9096. icon by default, unless you supply a different icon. 
  9097.  
  9098. Example DEFAULTICON filename.ico 
  9099.  
  9100.  
  9101. ΓòÉΓòÉΓòÉ 18.5.14. define Directive ΓòÉΓòÉΓòÉ
  9102.  
  9103. Syntax: 
  9104.  
  9105.   define name value
  9106.  
  9107. The define directive assigns the given value to the specified name. All 
  9108. subsequent occurrences of the name are replaced by the value. 
  9109.  
  9110.  name    Specifies the name to be defined.  This value is any combination of 
  9111.          letters, digits, and punctuation. 
  9112.  value   Specifies any integer, character string, or line of text. This value 
  9113.          can contain another defined name, which creates a level of nested 
  9114.          defines.  You are limited to 64 levels of nested defines. 
  9115.  
  9116.  Example 
  9117.  
  9118.  This example assigns values to the names "NONZERO" and "USERCLASS". 
  9119.  
  9120.     #define     NONZERO     1
  9121.     #define     USERCLASS   "MyControlClass"
  9122.  
  9123.  
  9124. ΓòÉΓòÉΓòÉ 18.5.15. DEFPUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  9125.  
  9126. Syntax: 
  9127.  
  9128. DEFPUSHBUTTON text, id, x, y, width, height[, style]
  9129.  
  9130. The DEFPUSHBUTTON statement creates a default pushbutton control. The control 
  9131. is a round-cornered rectangle containing the given text. The rectangle has a 
  9132. bold outline to represent that it is the default response for the user.  The 
  9133. control sends a message to its parent window when the user chooses the control. 
  9134. The DEFPUSHBUTTON statement, which you can use only in a DIALOG or WINDOW 
  9135. statement, defines the text, identifier, dimensions, and attributes of the 
  9136. control.  The predefined class for this control is WC_BUTTON.  If you do not 
  9137. specify a style, the default style is BS_PUSHBUTTON, BS_DEFAULT, and 
  9138. WS_TABSTOP. 
  9139.  
  9140.  text    Specifies text that is centered in the rectangular area of the 
  9141.          control.  This field must contain zero or more characters enclosed in 
  9142.          double quotation marks.  Character values must be in the range 1 
  9143.          through 255.  If a double quotation mark is required in the text, you 
  9144.          must include the double quotation mark twice.  A tilde ( ~ ) character 
  9145.          in the text indicates that the following character is used as a 
  9146.          mnemonic character for the control.  When the control is displayed, 
  9147.          the tilde is not shown, but the mnemonic character is underlined. The 
  9148.          user can choose the control by pressing the key corresponding to the 
  9149.          underlined mnemonic character. 
  9150.  id      Specifies the control identifier.  This value must be an integer in 
  9151.          the range -32768 through 32767, or a simple expression that evaluates 
  9152.          to a value in that range. 
  9153.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  9154.          This value must be an integer in the range -32768 through 32767 or an 
  9155.          expression consisting of integers and the addition (+) or subtraction 
  9156.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  9157.          relative to the origin of the dialog box, window, or control 
  9158.          containing the specified control. 
  9159.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  9160.          This value must be an integer in the range -32768 through 32767 or an 
  9161.          expression consisting of integers and the addition (+) or subtraction 
  9162.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  9163.          relative to the origin of the dialog box, window, or control 
  9164.          containing the specified control. 
  9165.  width   Specifies the width of the control.  This value must be an integer in 
  9166.          the range 0 through 65 535 or an expression consisting of integers and 
  9167.          the addition (+) or subtraction (-) operator.  The width is in 
  9168.          n-character units. 
  9169.  height  Specifies the height of the control.  This value must be an integer in 
  9170.          the range 0 through 65 535 or an expression consisting of integers and 
  9171.          the addition (+) or subtraction (-) operator.  The height is in 
  9172.          1/8-character units. 
  9173.  style   Specifies the control styles.  This value can be a combination of the 
  9174.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  9175.          operator to combine styles. 
  9176.  
  9177.  Example 
  9178.  
  9179.  This example creates a default pushbutton control that is labeled "Cancel." 
  9180.  
  9181.   DEFPUSHBUTTON "Cancel", 101, 10, 10, 24, 50
  9182.  
  9183.  
  9184. ΓòÉΓòÉΓòÉ 18.5.16. DIALOG Statement ΓòÉΓòÉΓòÉ
  9185.  
  9186. Syntax: 
  9187.  
  9188. DIALOG text, id, x, y, width, height[, style[,
  9189. framectl]][data-definitions]
  9190. BEGIN
  9191. control-definition
  9192.     .
  9193.     .
  9194.     .
  9195. END
  9196.  
  9197. The DIALOG statement defines a window that an application can use to create 
  9198. dialog boxes.  The statement defines the position and dimensions of the dialog 
  9199. box on the screen, as well as the dialog-box style.  The DIALOG statement is 
  9200. most often used in a DLGTEMPLATE statement. 
  9201.  
  9202. Typically, you use only one DIALOG statement in each DLGTEMPLATE statement, and 
  9203. the DIALOG statement contains at least one control definition. 
  9204.  
  9205.  text        Specifies the dialog-box title if the style specifies a title bar. 
  9206.              This field must contain zero or more characters enclosed in double 
  9207.              quotation marks.  Character values must be in the range 1 through 
  9208.              255.  If a double quotation mark is required in the title, you 
  9209.              must include the double quotation mark twice. 
  9210.  id          Specifies the dialog-box identifier.  This value must be an 
  9211.              integer in the range -32768 through 32767, or a simple expression 
  9212.              that evaluates to a value in that range. 
  9213.  x           Specifies the x-coordinate of the lower-left corner of the dialog 
  9214.              box.  This value must be an integer in the range -32768 through 
  9215.              32767 or an expression consisting of integers and the addition (+) 
  9216.              or subtraction (-) operator.  The value is in dialog units, but 
  9217.              its exact meaning depends on the dialog style.  See the "Comments" 
  9218.              section for details. 
  9219.  y           Specifies the y-coordinate of the lower-left corner of the dialog 
  9220.              box.  This value must be an integer in the range -32768 through 
  9221.              32767 or an expression consisting of integers and the addition (+) 
  9222.              or subtraction (-) operator.  The value is in dialog units, but 
  9223.              its exact meaning depends on the dialog style.  See the "Comments" 
  9224.              section for details. 
  9225.  width       Specifies the width of the dialog box.  This value must be an 
  9226.              integer in the range 0 through 65 535 or an expression consisting 
  9227.              of integers and the addition (+) or subtraction (-) operator.  The 
  9228.              value is in n-character units. 
  9229.  height      Specifies the height of the dialog box.  This value must be an 
  9230.              integer in the range 0 through 65 535 or an expression consisting 
  9231.              of integers and the addition (+) or subtraction (-) operator.  The 
  9232.              value is in 1/8-character units. 
  9233.  style       Specifies the dialog-box style.  This value can be any of the 
  9234.              window, dialog-box, or frame styles. You can use the bitwise OR 
  9235.              (|) operator to combine styles. 
  9236.  framectl    Specifies the styles for frame controls belonging to the dialog 
  9237.              box.  This value can be any of the frame-control styles specified 
  9238.              in the "Frame-Control Flags" table in the Presentation Manager 
  9239.              Programming Reference. You can use the bitwise OR (|) operator to 
  9240.              combine styles. 
  9241.  data-definitions Specifies a CTLDATA and/or PRESPARAMS statement. These 
  9242.              statements define control and presentation data for the dialog 
  9243.              box.  For more information, see CTLDATA Statement and PRESPARAMS 
  9244.              Statement. 
  9245.  control-definition Specifies a CONTROL statement or any one of several 
  9246.              predefined control statements.  These statements define the style, 
  9247.              position, and dimensions of controls in the dialog box. 
  9248.  
  9249.  Comments 
  9250.  
  9251.  The exact meaning of the coordinates depends on the style defined by the style 
  9252.  field.  For dialog boxes with FS_SCREENALIGN style, the coordinates are 
  9253.  relative to the origin of the display screen.  For dialog boxes with the style 
  9254.  FS_MOUSEALIGN, the coordinates are relative to the position of the mouse 
  9255.  pointer at the time the dialog box is created.  For all other dialog boxes, 
  9256.  the coordinates are relative to the origin of the parent window. 
  9257.  
  9258.  The DIALOG statement can actually contain any combination of CONTROL, DIALOG, 
  9259.  and WINDOW statements.  Typically, a DIALOG statement contains one or more 
  9260.  CONTROL statements. 
  9261.  
  9262.  Example 
  9263.  
  9264.  This example creates a dialog box that is labeled "Disk Error." 
  9265.  
  9266.   DLGTEMPLATE 1
  9267.   BEGIN
  9268.       DIALOG  "Disk Error", 100, 10, 10, 300, 110
  9269.       BEGIN
  9270.           CTEXT "Select One:", 1, 10, 80, 280, 12
  9271.           RADIOBUTTON "Retry", 2, 75, 50, 60, 12
  9272.           RADIOBUTTON "Abort", 3, 75, 30, 60, 12
  9273.           RADIOBUTTON "Ignore", 4, 75, 10, 60, 12
  9274.       END
  9275.   END
  9276.  
  9277.  
  9278. ΓòÉΓòÉΓòÉ 18.5.17. DLGINCLUDE Statement ΓòÉΓòÉΓòÉ
  9279.  
  9280. Syntax: 
  9281.  
  9282. DLGINCLUDE id filename
  9283.  
  9284. The DLGINCLUDE statement adds the specified filename to the resource file.  The 
  9285. DLGINCLUDE statement is typically used to let the application access the 
  9286. definitions file for the dialog box with the corresponding identifier.  The 
  9287. file named by filename must contain the define directives used by the dialog 
  9288. box. 
  9289.  
  9290. You can provide any number of DLGINCLUDE statements in a resource script file, 
  9291. but each must have a unique identifier. 
  9292.  
  9293.  id          Specifies the dialog-box identifier.  This value must be an 
  9294.              integer in the range -32768 through 32767, or a simple expression 
  9295.              that evaluates to a value in that range. 
  9296.  filename    Specifies the name of the file containing the define directives. 
  9297.              If the file is not in the current directory, filename must be 
  9298.              preceded by a full path. 
  9299.  
  9300.  Example 
  9301.  
  9302.  This example includes the name of the definition file dlgdef.h. The dialog-box 
  9303.  identifier is 5. 
  9304.  
  9305.   DLGINCLUDE 5 \\INCLUDE\\DLGREF.H
  9306.  
  9307.  
  9308. ΓòÉΓòÉΓòÉ 18.5.18. DLGTEMPLATE Statement ΓòÉΓòÉΓòÉ
  9309.  
  9310. Syntax: 
  9311.  
  9312. DLGTEMPLATE dialog-id  [load-option]  [mem-option][codepage]
  9313. BEGIN
  9314. dialog-definition
  9315.     .
  9316.     .
  9317.     .
  9318. END
  9319.  
  9320. The DLGTEMPLATE statement creates a dialog-box template.  A dialog-box template 
  9321. consists of a series of statements that define the identifier, load and memory 
  9322. options, dialog-box dimensions, and controls in the dialog box.  The dialog-box 
  9323. template can be loaded from the executable file by using the WinLoadDlg 
  9324. function. 
  9325.  
  9326. You can provide any number of dialog-box templates in a resource script file, 
  9327. but each template must have a unique dialog-id value. 
  9328.  
  9329.  dialog-id         Specifies the dialog-box identifier.  This value must be an 
  9330.                    integer in the range -32768 through 32767, or a simple 
  9331.                    expression that evaluates to a value in that range. 
  9332.  load-option       Specifies when the system loads the resource from the 
  9333.                    executable file into memory.  This value must be one of the 
  9334.                    following: 
  9335.                    PRELOAD             System loads the resource when the 
  9336.                                        application starts. 
  9337.                    LOADONCALL          System loads the resource when the 
  9338.                                        application calls the WinLoadDlg 
  9339.                                        function.  This is the default option. 
  9340.  mem-option        Specifies how the system manages the resource when it is in 
  9341.                    memory.  This value must be one or more of the following: 
  9342.                    FIXED               System keeps the resource at a fixed 
  9343.                                        memory location. 
  9344.                    MOVEABLE            System moves the resource as necessary 
  9345.                                        to compact memory. 
  9346.                    DISCARDABLE         System discards the resource if it is no 
  9347.                                        longer needed. The default setting is 
  9348.                    MOVEABLE and DISCARDABLE. 
  9349.  codepage          Specifies a code-page value.  For a list of valid code pages 
  9350.                    see CODEPAGE Statement. 
  9351.  dialog-definition Specifies a DIALOG statement. The statement defines the 
  9352.                    dimensions and style of the given dialog box. For details 
  9353.                    about the statement, see DIALOG Statement. 
  9354.  
  9355.  Comments 
  9356.  
  9357.  A DLGTEMPLATE statement can actually contain DIALOG, CONTROL, and WINDOW 
  9358.  statements.  Typically, you include only one DIALOG statement. 
  9359.  
  9360.  Example 
  9361.  
  9362.  This example uses a DLGTEMPLATE statement to create a dialog box. 
  9363.  
  9364.   DLGTEMPLATE ID_GETTIMER
  9365.   BEGIN
  9366.       DIALOG "Timer", 1, 10, 10, 100, 40
  9367.       BEGIN
  9368.           LTEXT "Time (0 - 15):", 4, 8, 24, 72, 12
  9369.           ENTRYFIELD "0", ID_TIME, 80, 28, 16, 8, ES_MARGIN
  9370.           DEFPUSHBUTTON "Enter", ID_TIMEOK, 10, 6, 36, 12
  9371.           PUSHBUTTON "Cancel", ID_TIMECANCEL, 52, 6, 40, 12
  9372.       END
  9373.   END
  9374.  
  9375.  
  9376. ΓòÉΓòÉΓòÉ 18.5.19. EDITTEXT Statement ΓòÉΓòÉΓòÉ
  9377.  
  9378. Syntax: 
  9379.  
  9380. EDITTEXT text, id, x, y, width, height [,style]
  9381.  
  9382. The EDITTEXT statement creates an entry-field control.  This control is a 
  9383. rectangle in which the user can type and edit text. The control displays a 
  9384. pointer when the user selects the control.  The user can then use the keyboard 
  9385. to enter text or edit the existing text.  Editing keys include the BACKSPACE 
  9386. and DELETE keys.  By using the mouse or the DIRECTION keys, the user can select 
  9387. the character or characters to delete or select the place to insert new 
  9388. characters. 
  9389.  
  9390. The EDITTEXT statement defines the text, identifier, dimensions, and attributes 
  9391. of a control window.  The predefined class for this control is WC_ENTRYFIELD. 
  9392. If you do not specify a style, the default style is ES_AUTOSCROLL and 
  9393. WS_TABSTOP. 
  9394.  
  9395.  text    Specifies text that is displayed in the rectangular area of the 
  9396.          control.  This field must contain zero or more characters enclosed in 
  9397.          double quotation marks.  Character values must be in the range 1 
  9398.          through 255.  If a double quotation mark is required in the text, you 
  9399.          must include the double quotation mark twice. 
  9400.  id      Specifies the control identifier.  This value is any integer -32768 
  9401.          through 32767, or a simple expression that evaluates to a value in 
  9402.          that range. 
  9403.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  9404.          This value is any integer -32768 through 32767, or an expression 
  9405.          consisting of integers and the addition (+) or subtraction (-) 
  9406.          operator.  The coordinate is assumed to be in dialog units and is 
  9407.          relative to the origin of the dialog window. 
  9408.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  9409.          This value is any integer -32768 through 32767, or an expression 
  9410.          consisting of integers and the addition (+) or subtraction (-) 
  9411.          operator.  The coordinate is assumed to be in dialog units and is 
  9412.          relative to the origin of the dialog window. 
  9413.  width   Specifies the width of the control.  This value is any integer 0 
  9414.          through 65 535, or an expression consisting of integers and the 
  9415.          addition (+) or subtraction (-) operator. The width is in n-character 
  9416.          units. 
  9417.  height  Specifies the height of the control.  This value is any integer 0 
  9418.          through 65 535, or an expression consisting of integers and the 
  9419.          addition (+) or subtraction (-) operator. The height is in 
  9420.          1/8-character units. 
  9421.  style   Specifies the control styles.  This value can be a combination of the 
  9422.          styles specified for WC_ENTRYFIELD.  You can use the bitwise OR ( | ) 
  9423.          operator to combine styles. 
  9424.  
  9425.  Comments 
  9426.  
  9427.  The EDITTEXT control statement is identical to the ENTRYFIELD control 
  9428.  statement. 
  9429.  
  9430.  Use the EDITTEXT statement only in a DIALOG or WINDOW statement. 
  9431.  
  9432.  Example 
  9433.  
  9434.  This example creates an entry-field control that is not labeled. 
  9435.  
  9436.      EDITTEXT "", 101, 10, 10, 24, 50
  9437.  
  9438.  
  9439. ΓòÉΓòÉΓòÉ 18.5.20. elif Directive ΓòÉΓòÉΓòÉ
  9440.  
  9441. Syntax: 
  9442.  
  9443. elif constant-expression
  9444.  
  9445. The elif directive marks an optional clause of a conditional-compilation block 
  9446. defined by a ifdef, ifndef, or if directive.  The directive controls 
  9447. conditional compilation of the resource file by checking the specified constant 
  9448. expression.  If the constant expression is nonzero, elif directs the compiler 
  9449. to continue processing statements up to the next endif, else, or elif directive 
  9450. and then skip to the statement after endif.  If the constant expression is 
  9451. zero, elif directs the compiler to skip to the next endif, else, or elif 
  9452. directive.  You can use any number of elif directives in a conditional block. 
  9453.  
  9454.  constant-expression   Specifies the expression to be checked.  This value is a 
  9455.                        defined name, an integer constant, or an expression 
  9456.                        consisting of names, integers, and arithmetic and 
  9457.                        relational operators. 
  9458.  
  9459.  Example 
  9460.  
  9461.  In this example, elif directs the compiler to process the second BITMAP 
  9462.  statement only if the value assigned to the name "Version" is less than 7. 
  9463.  The elif directive itself is processed only if Version is greater than or 
  9464.  equal to 3. 
  9465.  
  9466.   #if Version < 3
  9467.   BITMAP 1 errbox.bmp
  9468.   #elif Version < 7
  9469.   BITMAP 1 userbox.bmp
  9470.   #endif
  9471.  
  9472.  
  9473. ΓòÉΓòÉΓòÉ 18.5.21. else Directive ΓòÉΓòÉΓòÉ
  9474.  
  9475. Syntax:   else 
  9476.  
  9477. The else directive marks an optional clause of a conditional-compilation block 
  9478. defined by a ifdef, ifndef, or if directive.  The else directive must be the 
  9479. last directive before the endif directive. 
  9480.  
  9481. This directive has no arguments. 
  9482.  
  9483. Example 
  9484.  
  9485. This example compiles the second BITMAP statement only if the name "DEBUG" is 
  9486. not defined. 
  9487.  
  9488.     #ifdef DEBUG
  9489.         BITMAP 1 errbox.bmp
  9490.     #else
  9491.         BITMAP 1 userbox.bmp
  9492.     #endif
  9493.  
  9494.  
  9495. ΓòÉΓòÉΓòÉ 18.5.22. endif Directive ΓòÉΓòÉΓòÉ
  9496.  
  9497. Syntax: endif 
  9498.  
  9499. The endif directive marks the end of a conditional-compilation block defined by 
  9500. a ifdef directive.  One endif is required for each if, ifdef, or ifndef 
  9501. directive. 
  9502.  
  9503. This directive has no arguments. 
  9504.  
  9505.  
  9506. ΓòÉΓòÉΓòÉ 18.5.23. ENTRYFIELD Statement ΓòÉΓòÉΓòÉ
  9507.  
  9508. ENTRYFIELD text, id, x, y, width, height , [style]
  9509.  
  9510. The ENTRYFIELD statement creates an entry-field control.  This control is a 
  9511. rectangle in which the user can type and edit text.  The control displays a 
  9512. pointer when the user selects the control.  The user can then use the keyboard 
  9513. to enter text or edit the existing text. Editing keys include the BACKSPACE and 
  9514. DELETE keys.  By using the mouse or the DIRECTION keys, the user can select the 
  9515. character or characters to delete or select the place to insert new characters. 
  9516. The ENTRYFIELD statement, which you can use only in a DIALOG or WINDOW 
  9517. statement, defines the text, identifier, dimensions, and attributes of a 
  9518. control window.  The predefined class for this control is WC_ENTRYFIELD.  If 
  9519. you do not specify a style, the default style is ES_AUTOSCROLL and WS_TABSTOP. 
  9520.  
  9521.  text    Specifies text that is displayed in the rectangular area of the 
  9522.          control.  This field must contain zero or more characters enclosed in 
  9523.          double quotation marks.  Character values must be in the range 1 
  9524.          through 255.  If a double quotation mark is required in the text, you 
  9525.          must include the double quotation mark twice. 
  9526.  id      Specifies the control identifier.  This value must be an integer in 
  9527.          the range -32768 through 32767, or a simple expression that evaluates 
  9528.          to a value in that range. 
  9529.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  9530.          This value must be an integer in the range -32768 through 32767 or an 
  9531.          expression consisting of integers and the addition (+) or subtraction 
  9532.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  9533.          relative to the origin of the dialog box, window, or control 
  9534.          containing the specified control. 
  9535.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  9536.          This value must be an integer in the range -32768 through 32767 or an 
  9537.          expression consisting of integers and the addition (+) or subtraction 
  9538.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  9539.          relative to the origin of the dialog box, window, or control 
  9540.          containing the specified control. 
  9541.  width   Specifies the width of the control.  This value must be an integer in 
  9542.          the range 0 through 65 535 or an expression consisting of integers and 
  9543.          the addition (+) or subtraction (-) operator.  The width is in 
  9544.          n-character units. 
  9545.  height  Specifies the height of the control.  This value must be an integer in 
  9546.          the range 0 through 65 535 or an expression consisting of integers and 
  9547.          the addition (+) or subtraction (-) operator.  The height is in 
  9548.          1/8-character units. 
  9549.  style   Specifies the control styles.  This value can be a combination of the 
  9550.          styles specified for WC_ENTRYFIELD. You can use the bitwise OR (|) 
  9551.          operator to combine styles. 
  9552.  
  9553.  Example 
  9554.  
  9555.  This example creates an entry-field control that is not labeled. 
  9556.  
  9557.   ENTRYFIELD "", 101, 10, 10, 24, 50
  9558.  
  9559.  
  9560. ΓòÉΓòÉΓòÉ 18.5.24. FONT Statement ΓòÉΓòÉΓòÉ
  9561.  
  9562. Syntax: 
  9563.  
  9564. FONT font-id  [load-option][ mem-option] [codepage]  filename
  9565.  
  9566. The FONT statement defines a font resource for an application. A font resource, 
  9567. typically created by using the OS/2 Font Editor, is a bit map defining the 
  9568. shape of the individual characters in a character set.  The FONT statement 
  9569. copies the font resource from the file specified in the filename field and adds 
  9570. it to the other resources of the application.  A font resource can be loaded 
  9571. from the executable file when needed by using the GpiLoadFonts function. 
  9572.  
  9573. You can provide any number of FONT statements in a resource script file, but 
  9574. each statement must specify a unique font-id value. 
  9575.  
  9576.  font-id           Specifies the font-resource identifier.  This value must be 
  9577.                    an integer in the range -32768 through 32767, or a simple 
  9578.                    expression that evaluates to a value in that range. 
  9579.  load-option       Specifies when the system loads the resource from the 
  9580.                    executable file into memory.  This value must be one of the 
  9581.                    following: 
  9582.                    PRELOAD             System loads the resource when the 
  9583.                                        application starts. 
  9584.                    LOADONCALL          System loads the resource when the 
  9585.                                        application calls the GpiLoadFonts 
  9586.                                        function.  This is the default option. 
  9587.  mem-option        Specifies how the system manages the resource when it is i 
  9588.                    memory.  This value must be one or more of the following: 
  9589.                    FIXED               System keeps the resource at a fixed 
  9590.                                        memory location. 
  9591.                    MOVEABLE            System moves the resource as necessary 
  9592.                                        to compact memory. 
  9593.                    DISCARDABLE         System discards the resource if it is no 
  9594.                                        longer needed. The default setting is 
  9595.                    MOVEABLE and DISCARDABLE. 
  9596.  codepage          Specifies a code page value.  For a list of valid code pages 
  9597.                    see CODEPAGE Statement. 
  9598.  filename          Specifies the name of the file containing the font resource. 
  9599.                    If the file is not in the current directory, filename must 
  9600.                    be preceded by a full path. 
  9601.  
  9602.  Example 
  9603.  
  9604.  This example defines a font whose font identifier is 5. The font resource is 
  9605.  copied from the file cmroman.fon. 
  9606.  
  9607.   FONT 5 cmroman.fon
  9608.  
  9609.  
  9610. ΓòÉΓòÉΓòÉ 18.5.25. FRAME Statement ΓòÉΓòÉΓòÉ
  9611.  
  9612. Syntax: 
  9613.  
  9614. FRAME text, id, x, y, width, height[, style[, framectl]]
  9615.   data-definitions
  9616. [ BEGIN
  9617. window-definition
  9618.     .
  9619.     .
  9620.     .
  9621. END ]
  9622.  
  9623. The FRAME statement defines a frame window.  The statement defines the title, 
  9624. identifier, position, and dimensions of the frame window, as well as the window 
  9625. style.  The FRAME statement is most often used in a WINDOWTEMPLATE statement, 
  9626. and typically, only one FRAME statement is used.  The FRAME statement, in turn, 
  9627. typically contains at least one WINDOW statement that defines the client window 
  9628. belonging to the frame window. 
  9629.  
  9630. The frame window has no default style.  You must use the framectl field to 
  9631. define additional frame controls, such as a title bar and system menu, to be 
  9632. created when the frame window is created.  If the text field is not empty, the 
  9633. statement automatically adds a title-bar control to the frame window, whether 
  9634. or not you specify the FCF_TITLEBAR style.  Frame controls are given default 
  9635. styles and control identifiers depending on their class.  For example, a 
  9636. title-bar control receives the identifier FID_TITLEBAR. 
  9637.  
  9638.  text        Specifies the title of the frame window.  This field must contain 
  9639.              zero or more characters enclosed in double quotation marks. 
  9640.              Character values must be in the range 1 through 255.  If a double 
  9641.              quotation mark is required in the name, you must include the 
  9642.              double quotation mark twice. 
  9643.  id          Specifies the window identifier.  This value must be an integer in 
  9644.              the range -32768 through 32767, or a simple expression that 
  9645.              evaluates to a value in that range. 
  9646.  x           Specifies the x-coordinate of the lower-left corner of the window. 
  9647.              This value must be an integer in the range -32768 through 32767 or 
  9648.              an expression consisting of integers and the addition (+) or 
  9649.              subtraction (-) operator.  The coordinate is assumed to be in 
  9650.              dialog units and is relative to the origin of the dialog box, 
  9651.              window, or control containing the specified window. 
  9652.  y           Specifies the y-coordinate of the lower-left corner of the window. 
  9653.              This value must be an integer in the range -32768 through 32767 or 
  9654.              an expression consisting of integers and the addition (+) or 
  9655.              subtraction (-) operator.  The coordinate is assumed to be in 
  9656.              dialog units and is relative to the origin of the dialog box, 
  9657.              window, or control containing the specified window. 
  9658.  width       Specifies the width of the window.  This value must be an integer 
  9659.              in the range 0 through 65 535 or an expression consisting of 
  9660.              integers and the addition (+) or subtraction (-) operator.  The 
  9661.              width is in n-character units. 
  9662.  height      Specifies the height of the window.  This value must be a integer 
  9663.              in the range 0 through 65 535 or an expression consisting of 
  9664.              integers and the addition (+) or subtraction (-) operator.  The 
  9665.              height is in 1/8-character units. 
  9666.  style       Specifies the frame and window styles.  This value can be a 
  9667.              combination of frame styles. You can use the bitwise OR (|) 
  9668.              operator to combine styles. 
  9669.  framectl    Specifies the styles of frame controls belonging to the frame 
  9670.              window.  This value can be a combination of the styles specified 
  9671.              in the "Frame-Control Styles" table in the Presentation Manager 
  9672.              Programmers Reference. You can use the bitwise OR (|) operator to 
  9673.              combine styles. 
  9674.  data-definitions Specifies a CTLDATA and/or PRESPARAMS statement.  These 
  9675.              statements define control and presentation data for the frame 
  9676.              window.  For more information, see CTLDATA Statement and 
  9677.              PRESPARAMS Statement. 
  9678.  window-definition Specifies a WINDOW statement or any one of several 
  9679.              predefined control statements.  These statements define the style, 
  9680.              position, and dimensions of windows or controls in the frame 
  9681.              window. 
  9682.  
  9683.  Comments 
  9684.  
  9685.  The FRAME statement can actually contain any combination of CONTROL, DIALOG, 
  9686.  and WINDOW statements.  Typically, a FRAME statement contains one WINDOW 
  9687.  statement. 
  9688.  
  9689.  Example 
  9690.  
  9691.  This example creates a standard frame window, with a title bar, a system menu, 
  9692.  minimize and maximize boxes, and a vertical scroll bar. The FRAME statement 
  9693.  contains a WINDOW statement defining the client window belonging to the frame 
  9694.  window. 
  9695.  
  9696.   WINDOWTEMPLATE 1
  9697.   BEGIN
  9698.       FRAME "My Window", 1, 10, 10, 320, 130, 0,
  9699.               FCF_STANDARD | FCF_VERTSCROLL
  9700.       BEGIN
  9701.           WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass"
  9702.       END
  9703.   END
  9704.  
  9705.  
  9706. ΓòÉΓòÉΓòÉ 18.5.26. GROUPBOX Statement ΓòÉΓòÉΓòÉ
  9707.  
  9708. Syntax: 
  9709.  
  9710. GROUPBOX text, id, x, y, width, height [, style]
  9711.  
  9712. The GROUPBOX statement creates a group-box control.  The control is a rectangle 
  9713. that groups other controls together.  The controls are grouped by drawing a 
  9714. border around them and displaying the given text in the upper-left corner.  The 
  9715. GROUPBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  9716. defines the text, identifier, dimensions, and attributes of a control window. 
  9717. The predefined class for this control is WC_STATIC.  If you do not specify a 
  9718. style, the default style is SS_GROUPBOX and WS_TABSTOP. 
  9719.  
  9720.  text    Specifies text that appears in the upper-left corner of the control. 
  9721.          This field must contain zero or more characters enclosed in double 
  9722.          quotation marks.  Character values must be in the range 1 through 255. 
  9723.          If a double quotation mark is required in the text, you must include 
  9724.          the double quotation mark twice. 
  9725.  id      Specifies the control identifier.  This value must be an integer in 
  9726.          the range -32768 through 32767, or a simple expression that evaluates 
  9727.          to a value in that range. 
  9728.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  9729.          This value must be an integer in the range -32768 through 32767 or an 
  9730.          expression consisting of integers and the addition (+) or subtraction 
  9731.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  9732.          relative to the origin of the dialog box, window, or control 
  9733.          containing the specified control. 
  9734.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  9735.          This value must be an integer in the range -32768 through 32767 or an 
  9736.          expression consisting of integers and the addition (+) or subtraction 
  9737.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  9738.          relative to the origin of the dialog box, window, or control 
  9739.          containing the specified control. 
  9740.  width   Specifies the width of the control.  This value must be an integer in 
  9741.          the range 0 through 65 535 or an expression consisting of integers and 
  9742.          the addition (+) or subtraction (-) operator.  The width is in 
  9743.          n-character units. 
  9744.  height  Specifies the height of the control.  This value must be an integer in 
  9745.          the range 0 through 65 535 or an expression consisting of integers and 
  9746.          the addition (+) or subtraction (-) operator.  The height is in 
  9747.          1/8-character units. 
  9748.  style   Specifies the control styles.  This value can be a combination of the 
  9749.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  9750.          operator to combine styles. 
  9751.  
  9752.  Example 
  9753.  
  9754.  This example creates a group-box control that is labeled "Options." 
  9755.  
  9756.   GROUPBOX "Options", 101, 10, 10, 100, 100
  9757.  
  9758.  
  9759. ΓòÉΓòÉΓòÉ 18.5.27. HELPITEM Statement ΓòÉΓòÉΓòÉ
  9760.  
  9761. Syntax: 
  9762.  
  9763. HELPITEM application-window-id, help-subtable-id, extended-helppanel-id
  9764.  
  9765. The HELPITEM statement defines the help items in a help table.  The statement, 
  9766. permitted only in a HELPTABLE statement, specifies the resource identifier of 
  9767. an application window for which help is provided, and the resource identifiers 
  9768. of the help subtable and extended help panel associated with the application 
  9769. window. 
  9770.  
  9771. You can provide any number of HELPITEM statements in a HELPTABLE statement. 
  9772. You should provide one HELPITEM statement for each application window for which 
  9773. help is provided. 
  9774.  
  9775.  application-window-id    Specifies the resource identifier of an application 
  9776.                           window for which help is provided. 
  9777.  help-subtable-id         Specifies the resource identifier of the help 
  9778.                           subtable associated with the specified application 
  9779.                           window. 
  9780.  extended-helppanel-id    Specifies the resource identifier of the extended 
  9781.                           help panel associated with the specified application 
  9782.                           window. 
  9783.  
  9784.  Example 
  9785.  
  9786.  This example defines a help item that associates a help subtable called 
  9787.  IDSUB_FILEMENU and an extended help panel called IDEXT_APPHLP with an 
  9788.  application window called IDWIN_FILEMENU. 
  9789.  
  9790.   HELPITEM IDWIN_FILEMENU, IDSUB_FILEMENU, IDEXT_APPHLP
  9791.  
  9792.  
  9793. ΓòÉΓòÉΓòÉ 18.5.28. HELPSUBITEM Statement ΓòÉΓòÉΓòÉ
  9794.  
  9795. Syntax: 
  9796.  
  9797. HELPSUBITEM child-window-id, helppanel-id [ , integer...]
  9798.  
  9799. The HELPSUBITEM statement defines the help subitems in a help subtable.  This 
  9800. statement, which is permitted only in a HELPSUBTABLE statement, specifies the 
  9801. identifier of a child window for which help is provided, the identifier of the 
  9802. help panel associated with the child window, and one or more optional, 
  9803. application-defined integers. 
  9804.  
  9805. You can provide any number of HELPSUBITEM statements in a HELPSUBTABLE 
  9806. statement.  You should provide one HELPSUBITEM statement for each child window 
  9807. for which help is provided. 
  9808.  
  9809.  child-window-id     Specifies the resource identifier of the child window for 
  9810.                      which help is provided. 
  9811.  helppanel-id        Specifies the resource identifier of the help panel 
  9812.                      associated with the specified child window. 
  9813.  integer             Specifies optional, application-defined integers.  If you 
  9814.                      use this field, you must include the SUBITEMSIZE statement 
  9815.                      in the help subtable to specify the size, in words, of 
  9816.                      each help subitem in the help subtable. For details about 
  9817.                      this statement, see SUBITEMSIZE Statement. 
  9818.  
  9819.  Example 
  9820.  
  9821.  This example defines a help subitem that associates a child window called 
  9822.  IDCLD_FILEMENU with a help panel called IDHP_FILEMENU. 
  9823.  
  9824.   HELPSUBITEM IDCLD_FILEMENU, IDHP_FILEMENU
  9825.  
  9826.  
  9827. ΓòÉΓòÉΓòÉ 18.5.29. HELPSUBTABLE Statement ΓòÉΓòÉΓòÉ
  9828.  
  9829. Syntax: 
  9830.  
  9831. HELPSUBTABLE helpsubtable-id
  9832.  SUBITEMSIZE size
  9833. BEGIN
  9834. helpsubitem-definition
  9835.     .
  9836.     .
  9837.     .
  9838. END
  9839.  
  9840. The HELPSUBTABLE statement defines the contents of a help-subtable resource.  A 
  9841. help-subtable resource contains a help-subitem entry for each item that can be 
  9842. selected in an application window.  Each of these items should be a child 
  9843. window of the application window specified in the help-table resource.  The 
  9844. help subtable should contain a help subitem for each control, child window, and 
  9845. menu item in the application window. 
  9846.  
  9847. You can provide any number of HELPSUBTABLE statements in a resource script 
  9848. file, but each statement must specify a unique helpsubtable-id value.  You can 
  9849. also provide any number of helpsubitem-definition statements in the help 
  9850. subtable.  These specify the child window for which help is provided, the help 
  9851. panel containing the help text for the child window, and one or more 
  9852. application-defined integers. 
  9853.  
  9854. If you include optional integers in the helpsubitem-definition statements, you 
  9855. must also include a SUBITEMSIZE statement to specify the size, in words, of 
  9856. each help subitem.  All help subitems in a help subtable must be the same size. 
  9857. The default size is two words per help subitem. 
  9858.  
  9859.  helpsubtable-id 
  9860.       Specifies the resource identifier of the help subtable.  This value must 
  9861.       be an integer in the range -32768 through 32767, or a simple expression 
  9862.       that evaluates to a value in that range. 
  9863.  helpsubitem-definition 
  9864.       Specifies a HELPSUBITEM statement.  A HELPSUBITEM statement specifies a 
  9865.       child window, the help panel associated with the child window, and one or 
  9866.       more optional, application-defined integers.  For details about this 
  9867.       statement, see HELPSUBITEM Statement. 
  9868.  
  9869.  Example 
  9870.  
  9871.  This example creates a help-subtable resource whose help-subtable identifier 
  9872.  is IDSUB_FILEMENU.  Each HELPSUBITEM statement specifies a child window and a 
  9873.  help panel. 
  9874.  
  9875.   HELPSUBTABLE IDSUB_FILEMENU
  9876.   BEGIN
  9877.       HELPSUBITEM IDCLD_OPEN, IDPNL_OPEN
  9878.       HELPSUBITEM IDCLD_SAVE, IDPNL_SAVE
  9879.   END
  9880.  
  9881.  
  9882. ΓòÉΓòÉΓòÉ 18.5.30. HELPTABLE Statement ΓòÉΓòÉΓòÉ
  9883.  
  9884. Syntax: 
  9885.  
  9886. HELPTABLE helptable-id
  9887. BEGIN
  9888. helpitem-definition
  9889.     .
  9890.     .
  9891.     .
  9892. END
  9893.  
  9894. The HELPTABLE statement defines the contents of a help-table resource. A 
  9895. help-table resource contains a help-item entry for each application window, 
  9896. dialog box, and message box for which help is provided. 
  9897.  
  9898. You can provide any number of HELPTABLE statements in a resource script file, 
  9899. but each statement must specify a unique helptable-id value.  You can also 
  9900. provide any number of helpitem-definition statements in the help table.  These 
  9901. specify the application windows for which help is provided, the help subtables 
  9902. associated with each application window, and the extended help panels 
  9903. associated with each application window. 
  9904.  
  9905.  helptable-id          Specifies the resource identifier of the help table. 
  9906.                        This value must be an integer in the range -32768 
  9907.                        through 32767, or a simple expression that evaluates to 
  9908.                        a value in that range. 
  9909.  helpitem-definition   Specifies a HELPITEM statement. A HELPITEM statement 
  9910.                        specifies an application window and the associated help 
  9911.                        subtable and extended help panel. For details about this 
  9912.                        statement, see HELPITEM Statement. 
  9913.  
  9914.  Example 
  9915.  
  9916.  This example creates a help-table resource whose help-table identifier is 1. 
  9917.  Each HELPITEM statement specifies an application window, a help subtable, and 
  9918.  an extended help panel. 
  9919.  
  9920.   HELPTABLE 1
  9921.   BEGIN
  9922.       HELPITEM IDWIN_FILEMENU, IDSUB_FILEMENU, IDEXT_APPHLP
  9923.       HELPITEM IDWIN_EDITMENU, IDSUB_EDITMENU, IDEXT_APPHLP
  9924.   END
  9925.  
  9926.  
  9927. ΓòÉΓòÉΓòÉ 18.5.31. ICON Statement (Resource) ΓòÉΓòÉΓòÉ
  9928.  
  9929. Syntax: 
  9930.  
  9931. ICON icon-id  [load-option]  [ mem-option] [codepage] filename
  9932.  
  9933. This form of the ICON statement defines an icon resource for an application. 
  9934. An icon resource, typically created by using Icon Editor, is a bit map defining 
  9935. the shape of the icon to be used for a given application.  The ICON statement 
  9936. copies the icon resource from the file specified in the filename field and adds 
  9937. it to the application's other resources.  An icon resource can be loaded when 
  9938. creating a window by using the WinCreateStdWindow function with the FS_ICON 
  9939. style. 
  9940.  
  9941. You can provide any number of ICON statements in a resource script file, but 
  9942. each statement must specify a unique icon-id value. 
  9943.  
  9944.  icon-id           Specifies the icon-resource identifier.  This value must be 
  9945.                    an integer in the range -32768 through 32767, or a simple 
  9946.                    expression that evaluates to a value in that range.  A 
  9947.                    icon-id of 1 has a special meaning; for details, see the 
  9948.                    "Comment" section. 
  9949.  load-option       Specifies when the system loads the resource from the 
  9950.                    executable file into memory.  This value must be one of the 
  9951.                    following: 
  9952.                    PRELOAD             System loads the resource when the 
  9953.                                        application starts. 
  9954.                    LOADONCALL          System loads the resource when the 
  9955.                                        application calls the WinCreateStdWindow 
  9956.                                        function.  This is the default option. 
  9957.  mem-option        Specifies how the system manages the resource when it is in 
  9958.                    memory.  This value must be one or more of the following: 
  9959.                    FIXED               System keeps the resource at a fixed 
  9960.                                        memory location. 
  9961.                    MOVEABLE            System moves the resource as necessary 
  9962.                                        to compact memory. 
  9963.                    DISCARDABLE         System discards the resource if it is no 
  9964.                                        longer needed. The default setting is 
  9965.                    MOVEABLE and DISCARDABLE. 
  9966.  codepage          Specifies a code page value.  For a list of valid code pages 
  9967.                    see CODEPAGE Statement. 
  9968.  filename          Specifies the name of the file containing the icon resource. 
  9969.                    If the file is not in the current directory, filename must 
  9970.                    be preceded by a full path. 
  9971.  
  9972.  Comments 
  9973.  
  9974.  An icon with an icon-id of 1 is the default icon.  The RC program writes the 
  9975.  icon not only to the resources in your executable file, but also as the .ICON 
  9976.  extended attribute.  File Manager will display this icon next to the name of 
  9977.  the executable file. 
  9978.  
  9979.  Example 
  9980.  
  9981.  This example defines an icon whose icon identifier is 11.  The icon resource 
  9982.  is copied from the file custom.ico. 
  9983.  
  9984.   ICON 11 custom.ico
  9985.  
  9986.  
  9987. ΓòÉΓòÉΓòÉ 18.5.32. ICON Statement (Control) ΓòÉΓòÉΓòÉ
  9988.  
  9989. Syntax: 
  9990.  
  9991. ICON icon-id, id, x, y, width, height , [style]
  9992.  
  9993. This form of the ICON statement creates an icon control.  This control is an 
  9994. icon displayed in a dialog box.  The ICON statement, which you can use only in 
  9995. a DIALOG or WINDOW statement, defines the icon-resource identifier, 
  9996. icon-control identifier, position, and attributes of a control window.  The 
  9997. predefined class for this control is WC_STATIC.  If you do not specify a style, 
  9998. the default style is SS_ICON.  For the ICON statement, the width and height 
  9999. fields are ignored; the icon automatically sizes itself. 
  10000.  
  10001.  icon-id   Specifies the resource identifier of an icon that is defined 
  10002.            elsewhere in the resource file. 
  10003.  id        Specifies the control identifier.  This value must be an integer in 
  10004.            the range -32768 through 32767, or a simple expression that 
  10005.            evaluates to a value in that range. 
  10006.  x         Specifies the x-coordinate of the lower-left corner of the control. 
  10007.            This value must be an integer in the range -32768 through 32767 or 
  10008.            an expression consisting of integers and the addition (+) or 
  10009.            subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10010.            units and is relative to the origin of the dialog box, window, or 
  10011.            control containing the specified control. 
  10012.  y         Specifies the y-coordinate of the lower-left corner of the control. 
  10013.            This value must be an integer in the range -32768 through 32767 or 
  10014.            an expression consisting of integers and the addition (+) or 
  10015.            subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10016.            units and is relative to the origin of the dialog box, window, or 
  10017.            control containing the specified control. 
  10018.  width     Specifies a reserved value.  Can be set to zero. 
  10019.  height    Specifies a reserved value.  Can be set to zero. 
  10020.  style     Specifies the control styles.  This value can be a combination of 
  10021.            the styles specified for WC_STATIC. You can use the bitwise OR (|) 
  10022.            operator to combine styles. 
  10023.  
  10024.  Example 
  10025.  
  10026.  This example creates an icon control whose icon identifier is 99. 
  10027.  
  10028.   ICON 99, 101, 10, 10, 0, 0
  10029.  
  10030.  
  10031. ΓòÉΓòÉΓòÉ 18.5.33. if Directive ΓòÉΓòÉΓòÉ
  10032.  
  10033. Syntax: 
  10034.  
  10035. if constant-expression
  10036.  
  10037. The if directive controls conditional compilation of the resource file by 
  10038. checking the specified constant expression.  If the constant expression is 
  10039. nonzero, if directs the compiler to continue processing statements up to the 
  10040. next endif, else, or elif directive and then skip to the statement after the 
  10041. endif directive.  If the constant expression is zero, if directs the compiler 
  10042. to skip to the next endif, else, or elif directive. 
  10043.  
  10044.  constant-expression   Specifies the expression to be checked.  This value is a 
  10045.                        defined name, an integer constant, or an expression 
  10046.                        consisting of names, integers, and arithmetic and 
  10047.                        relational operators. 
  10048.  
  10049.  Example 
  10050.  
  10051.  This example compiles the BITMAP statement only if the value assigned to the 
  10052.  name "Version" is less than 3. 
  10053.  
  10054.   #if Version < 3
  10055.   BITMAP 1 errbox.bmp
  10056.   #endif
  10057.  
  10058.  
  10059. ΓòÉΓòÉΓòÉ 18.5.34. ifdef Directive ΓòÉΓòÉΓòÉ
  10060.  
  10061. Syntax: ifdef name 
  10062.  
  10063. The ifdef directive controls conditional compilation of the resource file by 
  10064. checking the specified name.  If the name has been defined by using a define 
  10065. directive or by using the -d command-line option of rc, ifdef directs the 
  10066. compiler to continue with the statement immediately after the ifdef directive. 
  10067. If the name has not been defined, ifdef directs the compiler to skip all 
  10068. statements up to the next endif directive. 
  10069.  
  10070.  name    Specifies the name to be checked by the directive. 
  10071.  
  10072.  Example 
  10073.  
  10074.  This example compiles the BITMAP statement only if the name "Debug" is 
  10075.  defined. 
  10076.  
  10077.   #ifdef Debug
  10078.   BITMAP 1 errbox.bmp
  10079.   #endif
  10080.  
  10081.  
  10082. ΓòÉΓòÉΓòÉ 18.5.35. ifndef Directive ΓòÉΓòÉΓòÉ
  10083.  
  10084. Syntax: ifndef name 
  10085.  
  10086. The ifndef directive controls conditional compilation of the resource file by 
  10087. checking the specified name.  If the name has not been defined or if its 
  10088. definition has been removed by using the undef directive, ifndef directs the 
  10089. compiler to continue processing statements up to the next endif, else, or elif 
  10090. directive and then skip to the statement after the endif directive.  If the 
  10091. name is defined, ifndef directs the compiler to skip to the next endif, else, 
  10092. or elif directive. 
  10093.  
  10094.  name    Specifies the name to be checked by the directive. 
  10095.  
  10096.  Example 
  10097.  
  10098.  This example compiles the BITMAP statement only if the name "Optimize" is not 
  10099.  defined. 
  10100.  
  10101.   #ifndef Optimize
  10102.   BITMAP 1 errbox.bmp
  10103.   #endif
  10104.  
  10105.  
  10106. ΓòÉΓòÉΓòÉ 18.5.36. include Directive ΓòÉΓòÉΓòÉ
  10107.  
  10108. Syntax: 
  10109.  
  10110. include filename
  10111.  
  10112. The include directive causes RC to process the file specified in the filename 
  10113. field.  This file should be a header file that defines the constants used in 
  10114. the resource script file.  Only the define directives in the specified file are 
  10115. processed; all other statements are ignored. 
  10116.  
  10117.  filename    Specifies the OS/2 name of the file to be included.  This value 
  10118.              must be an ASCII string enclosed either in double quotation marks 
  10119.              (if the file is in the current directory) or in less-than and 
  10120.              greater-than characters (<>) (if the file is in the directory 
  10121.              specified by -i command-line options or by the INCLUDE environment 
  10122.              variable).  You must give a full path enclosed in double quotation 
  10123.              marks if the file is not in the current directory or in the 
  10124.              directory specified by -i command-line  options or by the INCLUDE 
  10125.              environment variable. 
  10126.  
  10127.  Comments 
  10128.  
  10129.  The filename field is handled as a C string.  Therefore, you must include two 
  10130.  backslashes wherever one is required in the path.  (As an alternative, you can 
  10131.  use a single forward slash (/) instead of two backslashes.) 
  10132.  
  10133.  Example 
  10134.  
  10135.  This example processes the header files OS2.H and HEADERS\MYDEFS.H\I while 
  10136.  compiling the resource script file. 
  10137.  
  10138.   #include <os2.h>
  10139.   #include "headers\\\\mydefs.h"
  10140.  
  10141.  
  10142. ΓòÉΓòÉΓòÉ 18.5.37. LISTBOX Statement ΓòÉΓòÉΓòÉ
  10143.  
  10144. Syntax: 
  10145.  
  10146. LISTBOX id, x, y, width, height[, style]
  10147.  
  10148. The LISTBOX statement creates commonly used controls for a dialog box or 
  10149. window.  The control is a rectangle containing a list of user-selectable 
  10150. strings, such as filenames. 
  10151.  
  10152. The LISTBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  10153. defines the identifier, dimensions, and attributes of a control window.  The 
  10154. predefined class for this control is WC_LISTBOX.  If you do not specify a 
  10155. style, the default style is WS_TABSTOP. 
  10156.  
  10157.  id      Specifies the control identifier.  This value must be an integer in 
  10158.          the range -32768 through 32767, or a simple expression that evaluates 
  10159.          to a value in that range. 
  10160.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10161.          This value must be an integer in the range -32768 through 32767 or an 
  10162.          expression consisting of integers and the addition (+) or subtraction 
  10163.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10164.          relative to the origin of the dialog box, window, or control 
  10165.          containing the specified control. 
  10166.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10167.          This value must be an integer in the range -32768 through 32767 or an 
  10168.          expression consisting of integers and the addition (+) or subtraction 
  10169.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10170.          relative to the origin of the dialog box, window, or control 
  10171.          containing the specified control. 
  10172.  width   Specifies the width of the control.  This value must be an integer in 
  10173.          the range 0 through 65 535 or an expression consisting of integers and 
  10174.          the addition (+) or subtraction (-) operator.  The width is in 
  10175.          n-character units. 
  10176.  height  Specifies the height of the control.  This value must be an integer in 
  10177.          the range 0 through 65 535 or an expression consisting of integers and 
  10178.          the addition (+) or subtraction (-) operator.  The height is in 
  10179.          1/8-character units. 
  10180.  style   Specifies the control styles.  This value can be a combination of the 
  10181.          styles specified for WC_LISTBOX. You can use the bitwise OR (|) 
  10182.          operator to combine styles. 
  10183.  
  10184.  Example 
  10185.  
  10186.  This example creates a list-box control whose identifier is 101. 
  10187.  
  10188.   LISTBOX 101, 10, 10, 100, 100
  10189.  
  10190.  
  10191. ΓòÉΓòÉΓòÉ 18.5.38. LTEXT Statement ΓòÉΓòÉΓòÉ
  10192.  
  10193. Syntax: 
  10194.  
  10195. LTEXT text, id, x, y, width, height[ , style]
  10196.  
  10197. The LTEXT statement creates a left-aligned text control.  The control is a 
  10198. simple rectangle displaying the given text left-aligned in the rectangle.  The 
  10199. text is formatted before it is displayed.  Words that would extend past the end 
  10200. of a line are automatically wrapped to the beginning of the next line.  The 
  10201. LTEXT statement, which you can use only in a DIALOG or WINDOW statement, 
  10202. defines the text, identifier, dimensions, and attributes of the control.  The 
  10203. predefined class for this control is WC_STATIC.  If you do not specify a style, 
  10204. the default style is SS_TEXT, DT_LEFT, and WS_GROUP. 
  10205.  
  10206.  text    Specifies text that is left-aligned in the rectangular area of the 
  10207.          control.  This field must contain zero or more characters enclosed in 
  10208.          double quotation marks.  Character values must be in the range 1 
  10209.          through 255.  If a double quotation mark is required in the text, you 
  10210.          must include the double quotation mark twice. 
  10211.  id      Specifies the control identifier.  This value must be an integer in 
  10212.          the range -32768 through 32767, or a simple expression that evaluates 
  10213.          to a value in that range. 
  10214.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10215.          This value must be an integer in the range -32768 through 32767 or an 
  10216.          expression consisting of integers and the addition (+) or subtraction 
  10217.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10218.          relative to the origin of the dialog box, window, or control 
  10219.          containing the specified control. 
  10220.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10221.          This value must be an integer in the range -32768 through 32767 or an 
  10222.          expression consisting of integers and the addition (+) or subtraction 
  10223.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10224.          relative to the origin of the dialog box, window, or control 
  10225.          containing the specified control. 
  10226.  width   Specifies the width of the control.  This value must be an integer in 
  10227.          the range 0 through 65 535 or an expression consisting of integers and 
  10228.          the addition (+) or subtraction (-) operator.  The width is in 
  10229.          n-character units. 
  10230.  height  Specifies the height of the control.  This value must be an integer in 
  10231.          the range 0 through 65 535 or an expression consisting of integers and 
  10232.          the addition (+) or subtraction (-) operator.  The height is in 
  10233.          1/8-character units. 
  10234.  style   Specifies the control styles.  This value can be a combination of the 
  10235.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  10236.          operator to combine styles. 
  10237.  
  10238.  Example 
  10239.  
  10240.  This example creates a left-aligned text control that is labeled "Filename." 
  10241.  
  10242.   LTEXT "Filename", 101, 10, 10, 100, 100
  10243.  
  10244.  
  10245. ΓòÉΓòÉΓòÉ 18.5.39. MENU Statement ΓòÉΓòÉΓòÉ
  10246.  
  10247. Syntax: 
  10248.  
  10249. MENU menu-id  [load-option][ mem-option][codepage]
  10250. BEGIN
  10251. menuitem-definition
  10252.     .
  10253.     .
  10254.     .
  10255. END
  10256.  
  10257. The MENU statement defines the contents of a menu resource.  A menu resource is 
  10258. a collection of information that defines the appearance and function of an 
  10259. application menu.  A menu is a special input tool that lets a user choose 
  10260. commands from a list of command names.  A menu resource can be loaded from the 
  10261. executable file when needed by using the WinLoadMenu function. 
  10262.  
  10263. You can provide any number of MENU statements in a resource script file, but 
  10264. each statement must specify a unique menu-id value.  You can provide any number 
  10265. of menuitem-definition statements in the menu. These define the submenus and 
  10266. menu items (commands) in the menu.  The order of the statements defines the 
  10267. order of the menu items. 
  10268.  
  10269.  menu-id               Specifies the menu-resource identifier.  This value must 
  10270.                        be an integer in the range -32768 through 32767, or a 
  10271.                        simple expression that evaluates to a value in that 
  10272.                        range. 
  10273.  load-option           Specifies when the system loads the resource from the 
  10274.                        executable file into memory.  This value must be one of 
  10275.                        the following: 
  10276.                        PRELOAD             System loads the resource when the 
  10277.                                            application starts. 
  10278.                        LOADONCALL          System loads the resource when the 
  10279.                                            application calls the WinLoadMenu 
  10280.                                            function. This is the default 
  10281.                                            option. 
  10282.  mem-option            Specifies how the system manages the resource when it is 
  10283.                        in memory.  This value must be one or more of the 
  10284.                        following: 
  10285.                        FIXED               System keeps the resource at a fixed 
  10286.                                            memory location. 
  10287.                        MOVEABLE            System moves the resource as 
  10288.                                            necessary to compact memory. 
  10289.                        DISCARDABLE         System discards the resource if it 
  10290.                                            is no longer needed. The default 
  10291.                        setting is MOVEABLE and DISCARDABLE. 
  10292.  codepage              Specifies a codepage value.  For a list of valid code 
  10293.                        pages see CODEPAGE Statement. 
  10294.  menuitem-definition   Specifies a PRESPARAMS, MENUITEM, or SUBMENU statement. 
  10295.                        You can use one or more PRESPARAMS statements to control 
  10296.                        the appearance of a menu, such as the font and the 
  10297.                        foreground and background colors.  If used, PRESPARAMS 
  10298.                        statements must be the first statements following the 
  10299.                        BEGIN keyword.  For details about the PRESPARAMS 
  10300.                        statement, see PRESPARAMS Statement. 
  10301.  
  10302.                        MENUITEM and SUBMENU statements define the individual 
  10303.                        commands or submenus in the given menu.  For details 
  10304.                        about these statements, see MENUITEM Statement and 
  10305.                        SUBMENU Statement. 
  10306.  
  10307.  Example 
  10308.  
  10309.  This example creates a menu resource whose menu identifier is 1. The menu 
  10310.  contains a menu item named Alpha and a submenu named Beta. The submenu 
  10311.  contains two menu items, Item 1 and Item 2. 
  10312.  
  10313.   MENU 1
  10314.   BEGIN
  10315.       MENUITEM "Alpha", 100
  10316.       SUBMENU "Beta", 101
  10317.       BEGIN
  10318.           MENUITEM "Item 1", 200
  10319.           MENUITEM "Item 2", 201, , MIA_CHECKED
  10320.       END
  10321.   END
  10322.  
  10323.  
  10324. ΓòÉΓòÉΓòÉ 18.5.40. MENUITEM Statement ΓòÉΓòÉΓòÉ
  10325.  
  10326. Syntax: 
  10327.  
  10328. MENUITEM text, menu-id[,  menuitem-style][,menuitem-attribute]
  10329.  
  10330. MENUITEM SEPARATOR 
  10331.  
  10332. The MENUITEM statement creates a menu item for a menu.  The statement, 
  10333. permitted only in a MENU or SUBMENU statement, defines the text, identifier, 
  10334. and attributes of a menu item.  The system displays the text when it displays 
  10335. the corresponding menu.  If the user chooses the menu item, the system 
  10336. generates a WM_COMMAND message that includes the specified menu-item identifier 
  10337. and sends it to the window owning the menu. 
  10338.  
  10339. You can provide any number of MENUITEM statements, but each must have a unique 
  10340. menu-id value. 
  10341.  
  10342. The alternative form of the MENUITEM statement, MENUITEM SEPARATOR, creates a 
  10343. menu separator.  A menu separator is a horizontal dividing bar between two menu 
  10344. items in a submenu.  The separator is not active - that is, the user cannot 
  10345. choose it, it has no text associated with it, and it has no identifier. 
  10346.  
  10347.  text              Specifies the text of the menu item.  This field must 
  10348.                    contain zero or more characters enclosed in double quotation 
  10349.                    marks.  Character values must be in the range 1 through 255. 
  10350.                    If a double quotation mark is required in the string, you 
  10351.                    must include the double quotation mark twice.  The tilde 
  10352.                    character ( ~ ) and the \t and \a character combinations 
  10353.                    have special meanings in the string; for details, see the 
  10354.                    "Comments" section. 
  10355.  
  10356.                    If the menuitem-style field is MIS_BITMAP, item-name must be 
  10357.                    a bit-map identifier instead of a name. The bit-map 
  10358.                    identifier must have been previously defined using a BITMAP 
  10359.                    statement, must be preceded by the \b character, and must be 
  10360.                    enclosed in double quotation marks. 
  10361.  menu-id           Specifies the menu-item identifier.  This value must be an 
  10362.                    integer in the range -32768 through 32767, or a simple 
  10363.                    expression that evaluates to a value in that range.  Each 
  10364.                    identifier must be unique. 
  10365.  menuitem-style    Specifies the menu-item style.  This value can be a 
  10366.                    combination of the following: 
  10367.                    MIS_BITMAP               Specifies that item-name is a bit 
  10368.                                             map identifier. 
  10369.                    MIS_BREAK                Specifies that the menu has 
  10370.                                             multiple columns of items in one 
  10371.                                             pull-down menu or multiple lines of 
  10372.                                             menus in the top-level menu. 
  10373.                    MIS_BREAKSEPARATOR       Specifies that the menu has a 
  10374.                                             vertical line between the columns 
  10375.                                             in a pull-down menu. 
  10376.                    MIS_BUTTONSEPARATOR      Specifies that the user can 
  10377.                                             activate the menu item only by 
  10378.                                             using the mouse.  The text is 
  10379.                                             centered in the item, rather than 
  10380.                                             left justified.  This option is 
  10381.                                             used for the Help item on the right 
  10382.                                             side of the menu bar. 
  10383.                    MIS_HELP                 Specifies that the menu item 
  10384.                                             generates a WM_HELP message. 
  10385.                    MIS_OWNERDRAW            Specifies that the menu item is 
  10386.                                             drawn by the owner window. 
  10387.                    MIS_SEPARATOR            Specifies that the menu item is a 
  10388.                                             menu separator.  Although the 
  10389.                                             item-name and menu-id fields are 
  10390.                                             ignored, you must still give values 
  10391.                                             if you specify this style. 
  10392.                    MIS_STATIC               Specifies that the user cannot 
  10393.                                             choose the menu item. 
  10394.                    MIS_SUBMENU              Specifies that the MENUITEM 
  10395.                                             statement is to be treated as a 
  10396.                                             SUBMENU statement.  When you 
  10397.                                             specify this option, you must 
  10398.                                             follow the MENUITEM statement with 
  10399.                                             a BEGIN and END clause, as in a 
  10400.                                             SUBMENU statement.  You may include 
  10401.                                             a PRESPARAMS statement immediately 
  10402.                                             after the BEGIN keyword. 
  10403.                    MIS_SYSCOMMAND           Specifies that the menu item 
  10404.                                             generates a WM_SYSCOMMAND message. 
  10405.                    MIS_TEXT                 Specifies that item-name is a 
  10406.                                             character string.  This is the 
  10407.                                             default option. 
  10408.  menuitem-attribute Specifies the menu-item attributes.  This value can be a 
  10409.                    combination of the following: 
  10410.                    MIA_CHECKED              Places a check mark next to the 
  10411.                                             menu-item name. 
  10412.                    MIA_DISABLED             Disables the menu item, preventing 
  10413.                                             the system from generating a 
  10414.                                             message when the user chooses the 
  10415.                                             command. 
  10416.                    MIA_FRAMED               Places a frame (heavy border) 
  10417.                                             around the menu item. 
  10418.                    MIA_HILITED              Places a highlight on the menu-item 
  10419.                                             name when it is displayed, by 
  10420.                                             inverting the name and background. 
  10421.                    MIA_NODISMISS            Causes a submenu or menu item to 
  10422.                                             remain displayed after the user 
  10423.                                             chooses an item. 
  10424.  
  10425.  Comments 
  10426.  
  10427.  You can use the \t or \a character combination in any item name. The \t 
  10428.  character inserts a tab when the name is displayed and is typically used to 
  10429.  separate the menu-item name from the name of an accelerator key.  The \a 
  10430.  character aligns to the right all text that follows it.  These characters are 
  10431.  intended to be used for menu items in submenus only.  The width of the 
  10432.  displayed submenu is always adjusted so that there is at least one space (and 
  10433.  usually more) between any pieces of text separated by a \t or a \a.  (When 
  10434.  compiling the menu resource, the compiler stores the \t and \a characters as 
  10435.  control characters.  For example, the \t is stored as 0x09.) 
  10436.  
  10437.  A tilde ( ~ ) character in the item name indicates that the following 
  10438.  character is used as a mnemonic character for the item. When the menu is 
  10439.  displayed, the tilde is not shown, but the mnemonic character is underlined. 
  10440.  The user can choose the menu item by pressing the key corresponding to the 
  10441.  underlined mnemonic character. 
  10442.  
  10443.  Example 
  10444.  
  10445.  This example creates a menu item named Alpha.  The item identifier is 101. 
  10446.  
  10447.   MENUITEM "Alpha", 101
  10448.  
  10449.  This example creates a menu item named Beta.  The item identifier is 102. The 
  10450.  menu item has a text style and a checked attribute. 
  10451.  
  10452.   MENUITEM "Beta", 102, MIS_TEXT, MIA_CHECKED
  10453.  
  10454.  This example creates a menu separator between menu items named Gamma and 
  10455.  Delta. 
  10456.  
  10457.   MENUITEM "Gamma", 103
  10458.   MENUITEM SEPARATOR
  10459.   MENUITEM "Delta", 104
  10460.  
  10461.  This example creates a menu item that has a bit map instead of a name. The 
  10462.  bit-map identifier, 1, is first defined using a BITMAP statement. The 
  10463.  identifier for the menu item is 301.  Note that a sign must be placed in front 
  10464.  of the bit map identifier in the MENUITEM statement. 
  10465.  
  10466.   BITMAP 1 mybitmap.bmp
  10467.  
  10468.   MENUITEM "#1", 301, MIS_BITMAP
  10469.  
  10470.  
  10471. ΓòÉΓòÉΓòÉ 18.5.41. MESSAGETABLE Statement ΓòÉΓòÉΓòÉ
  10472.  
  10473. Syntax: 
  10474.  
  10475. MESSAGETABLE  [load-option]  [ mem-option][codepage]
  10476. BEGIN
  10477. string-id string-definition
  10478.     .
  10479.     .
  10480.     .
  10481. END
  10482.  
  10483. The MESSAGETABLE statement creates one or more string resources for an 
  10484. application.  A string resource is a null-terminated character string that has 
  10485. a unique string identifier.  A string resource can be loaded from the 
  10486. executable file when needed by using the DosGetResource function with the 
  10487. RT_MESSAGE resource type. RT_MESSAGE resources are bundled together in groups 
  10488. of 16, with any missing IDs replaced with zero length strings. Each group, or 
  10489. bundle, is assigned a unique sequential ID. The resource string ID is not 
  10490. necessarily the same as the ID specified when using DosGetResource. The formula 
  10491. for calculating the ID of the resource bundle, for use in DosGetResource, is as 
  10492. follows: 
  10493.  
  10494. bundle ID = ( id / 16) +1,
  10495. where id is the string ID assigned in the RC file. 
  10496.  
  10497. Thus, bundle 1 contains strings 0 to 15, bundle 2 contains strings 16 to 31, 
  10498. and so on. Once the address of the bundle has been returned by DosGetResource 
  10499. (using the calculated ID), the buffer can be parsed to locate the particular 
  10500. string within the bundle. The number of the string is calculated by the 
  10501. formula: 
  10502.  
  10503. string = id % 16
  10504. (string = remainder for id/16). 
  10505.  
  10506. The buffer returned consists of the CodePage of the strings in the first 
  10507. USHORT, followed by the 16 strings in the bundle. The first BYTE of each string 
  10508. is the length of the string (including the null terminator), followed by the 
  10509. string and the terminator. A zero length string is represented by two bytes: 
  10510. 01 (string length) followed by the null terminator. 
  10511.  
  10512. You can provide any number of MESSAGETABLE statements in a resource script 
  10513. file.  The compiler treats all the strings from the various MESSAGETABLE 
  10514. statements as if they belonged to a single statement. This means that no two 
  10515. strings in a resource script file can have the same string identifier. 
  10516.  
  10517. Although the MESSAGETABLE and STRINGTABLE statements are nearly identical, most 
  10518. applications use the STRINGTABLE statement instead of the MESSAGETABLE 
  10519. statement to create string resources. 
  10520.  
  10521.  load-option    Specifies when the system loads the resource from the 
  10522.                 executable file into memory.  This value must be one of the 
  10523.                 following: 
  10524.                 PRELOAD             System loads the resource when the 
  10525.                                     application starts. 
  10526.                 LOADONCALL          System loads the resource when the 
  10527.                                     application calls the DosGetResource or 
  10528.                                     DosGetResource2 function.  This is the 
  10529.                                     default option. 
  10530.  mem-option     Specifies how the system manages the resource when it is in 
  10531.                 memory.  This value must be one or more of the following: 
  10532.                 FIXED               System keeps the resource at a fixed memory 
  10533.                                     location. 
  10534.                 MOVEABLE            System moves the resource as necessary to 
  10535.                                     compact memory. 
  10536.                 DISCARDABLE         System discards the resource if it is no 
  10537.                                     longer needed. The default setting is 
  10538.                 MOVEABLE and DISCARDABLE. 
  10539.  codepage       Specifies a code page value.  See CODEPAGE Statement for a list 
  10540.                 of valid code pages. 
  10541.  string-id      Specifies the character-string identifier.  This value must be 
  10542.                 an integer in the range -32768 through 32767, or a simple 
  10543.                 expression that evaluates to a value in that range.  The value 
  10544.                 can be specified in decimal or hexadecimal notation.  Each 
  10545.                 string identifier in a resource script file must be unique. 
  10546.  string-definition Specifies a character string.  This field must contain zero 
  10547.                 or more characters enclosed in double quotation marks. 
  10548.                 Character values must be in the range 1 through 255.  If a 
  10549.                 double quotation mark is required in the string, you must 
  10550.                 provide the double quotation mark twice. 
  10551.  
  10552.  Comments 
  10553.  
  10554.  You can continue a string on multiple lines by terminating the line with a 
  10555.  backslash (\) or by terminating the line with a double quotation mark (") and 
  10556.  then starting the next line with a double quotation mark. 
  10557.  
  10558.  Example 
  10559.  
  10560.  This example creates two string resources whose string identifiers are 1 and 
  10561.  2. 
  10562.  
  10563.   MESSAGETABLE
  10564.   BEGIN
  10565.       1 "Filename not found"
  10566.       2 "Cannot open file for reading"
  10567.   END
  10568.  
  10569.  
  10570. ΓòÉΓòÉΓòÉ 18.5.42. MLE Statement ΓòÉΓòÉΓòÉ
  10571.  
  10572. Syntax: 
  10573.  
  10574. MLE text, id, x, y, width, height[, style]
  10575.  
  10576. The MLE statement creates a multiple-line entry-field control.  The control is 
  10577. a rectangle in which the user can type and edit multiple lines of text.  The 
  10578. control displays a pointer when the user selects it.  The user can then use the 
  10579. keyboard to enter text or edit the existing text.  Editing keys include the 
  10580. BACKSPACE and DELETE keys. By using the mouse or the DIRECTION keys, the user 
  10581. can select the character or characters to delete or select the place to insert 
  10582. new characters.  The MLE statement, which you can use only in a DIALOG or 
  10583. WINDOW statement, defines the text, identifier, dimensions, and attributes of a 
  10584. control window.  The predefined class for this control is WC_MLE.  If you do 
  10585. not specify a style, the default style is MLS_BORDER, WS_GROUP, and WS_TABSTOP. 
  10586.  
  10587.  text    Specifies text that is displayed in the rectangular area of the 
  10588.          control.  If the MLS_READONLY style is not specified, the user can 
  10589.          edit the text.  This field must contain zero or more characters 
  10590.          enclosed in double quotation marks.  Character values must be in the 
  10591.          range 1 through 255.  If a double quotation mark is required in the 
  10592.          text, you must include the double quotation mark twice. 
  10593.  id      Specifies the control identifier.  This value must be an integer in 
  10594.          the range -32768 through 32767, or a simple expression that evaluates 
  10595.          to a value in that range. 
  10596.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10597.          This value must be an integer in the range -32768 through 32767 or an 
  10598.          expression consisting of integers and the addition (+) or subtraction 
  10599.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10600.          relative to the origin of the dialog box, window, or control 
  10601.          containing the specified control. 
  10602.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10603.          This value must be an integer in the range -32768 through 32767 or an 
  10604.          expression consisting of integers and the addition (+) or subtraction 
  10605.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10606.          relative to the origin of the dialog box, window, or control 
  10607.          containing the specified control. 
  10608.  width   Specifies the width of the control.  This value must be an integer in 
  10609.          the range 0 through 65 535 or an expression consisting of integers and 
  10610.          the addition (+) or subtraction (-) operator.  The width is in 
  10611.          n-character units. 
  10612.  height  Specifies the height of the control.  This value must be an integer in 
  10613.          the range 0 through 65 535 or an expression consisting of integers and 
  10614.          the addition (+) or subtraction (-) operator.  The height is in 
  10615.          1/8-character units. 
  10616.  style   Specifies the control styles.  This value can be a combination of the 
  10617.          styles specified for WC_MLE. You can use the bitwise OR (|) operator 
  10618.          to combine styles. 
  10619.  
  10620.  Example 
  10621.  
  10622.  This example creates a multiple-line entry-field control that is not labeled. 
  10623.  
  10624.   MLE "", 101, 10, 10, 50, 100
  10625.  
  10626.  
  10627. ΓòÉΓòÉΓòÉ 18.5.43. NOTEBOOK Statement ΓòÉΓòÉΓòÉ
  10628.  
  10629. Syntax: 
  10630.  
  10631. NOTEBOOK   id, x, y, width, height[, style]
  10632.  
  10633. The NOTEBOOK statement creates a notebook control within the dialog window. 
  10634. This control is used to organize information on individual pages so that it can 
  10635. be located and displayed easily. The NOTEBOOK statement defines the identifier, 
  10636. position, dimensions, and attributes of a notebook control. The predefined 
  10637. class for this control is WC_NOTEBOOK. If you do not specify a style, the 
  10638. default style is WS_TABSTOP and WS_VISIBLE. 
  10639.  
  10640.  id      Specifies the control identifier.  The value is any integer -32768 
  10641.          through 32767, or a simple expression that evaluates to a value in 
  10642.          that range. 
  10643.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10644.          The value is any integer -32768 through 32767 or an expression 
  10645.          consisting of integers and the addition (+) or subtraction (-) 
  10646.          operator.  The coordinate is assumed to be in dialog units and is 
  10647.          relative to the origin of the dialog window. 
  10648.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10649.          The value is any integer -32768 through 32767 or an expression 
  10650.          consisting of integers and the addition (+) or subtraction (-) 
  10651.          operator.  The coordinate is assumed to be in dialog units and is 
  10652.          relative to the origin of the dialog window. 
  10653.  width   Specifies the width of the control.  The value is any integer 0 
  10654.          through 65 535 or an expression consisting of integers and the 
  10655.          addition (+) or subtraction (-) operator. The width is in n-character 
  10656.          units. 
  10657.  height  Specifies the height of the control.  The value is any integer 0 
  10658.          through 65535 or an expression consisting of integers and the 
  10659.          addition (+) or subtraction (-) operator. The height is in 
  10660.          1/8-character units. 
  10661.  style   Specifies the control styles.  This value can be a combination of the 
  10662.          styles specified for WC_NOTEBOOK.  You can use the bitwise OR ( | ) 
  10663.          operator to combine styles. 
  10664.  
  10665.  Comments 
  10666.  
  10667.  The NOTEBOOK statement is used only in a DIALOG or WINDOW statement. 
  10668.  
  10669.  Example 
  10670.  
  10671.  This example creates a notebook control at position (20, 20) within the dialog 
  10672.  window.  The notebook has a width of 200 character units and a height of 50 
  10673.  character units.  Its resource ID is 201. The tabs style BKS_ROUNDEDTABS 
  10674.  specification overrides the notebook default style of square tabs. The default 
  10675.  styles WS_TABSTOP and WS_GROUP are both in effect, though only the latter is 
  10676.  specified. 
  10677.  
  10678.   #define    IDC_NOTEBOOK     201
  10679.   #define    IDD_NOTEBOOKDLG  503
  10680.   DIALOG "Notebook", IDD_NOTEBOOKDLG, 11, 11, 420, 420, FS_NOBYTEALIGN |
  10681.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  10682.     BEGIN
  10683.       NOTEBOOK   IDC_NOTEBOOK, 20, 20, 200, 400, BKS_ROUNDEDTABS | WS_GROUP
  10684.     END
  10685.  
  10686.  
  10687. ΓòÉΓòÉΓòÉ 18.5.44. POINTER Statement ΓòÉΓòÉΓòÉ
  10688.  
  10689. Syntax: 
  10690.  
  10691. POINTER pointer-id  [load-option]  [ mem-option]
  10692. [codepage]  filename
  10693.  
  10694. The POINTER statement defines a pointer resource for an application. A pointer 
  10695. resource, typically created by using the OS/2 Icon Editor, is a bit map 
  10696. defining the shape of the mouse pointer on the screen. The POINTER statement 
  10697. copies the pointer resource from the file specified in the filename field and 
  10698. adds it to the application's other resources.  A pointer resource can be loaded 
  10699. from the executable file when needed by using the WinLoadPointer function. 
  10700.  
  10701. You can provide any number of POINTER statements in a resource script file, but 
  10702. each statement must specify a unique pointer-id value. 
  10703.  
  10704.  pointer-id        Specifies the pointer-resource identifier.  This value must 
  10705.                    be an integer in the range -32768 through 32767, or a simple 
  10706.                    expression that evaluates to a value in that range. 
  10707.  load-option       Specifies when the system loads the resource from the 
  10708.                    executable file into memory.  This value must be one of the 
  10709.                    following: 
  10710.                    PRELOAD             System loads the resource when the 
  10711.                                        application starts. 
  10712.                    LOADONCALL          System loads the resource when the 
  10713.                                        application calls the WinLoadPointer 
  10714.                                        function.  This is the default option. 
  10715.  mem-option        Specifies how the system manages the resource when it is in 
  10716.                    memory.  This value must be one or more of the following: 
  10717.                    FIXED               System keeps the resource at a fixed 
  10718.                                        memory location. 
  10719.                    MOVEABLE            System moves the resource as necessary 
  10720.                                        to compact memory. 
  10721.                    DISCARDABLE         System discards the resource if it is no 
  10722.                                        longer needed. The default setting is 
  10723.                    MOVEABLE and DISCARDABLE. 
  10724.  codepage          Specifies a code page value.  See CODEPAGE Statement for a 
  10725.                    list of valid code pages. 
  10726.  filename          Specifies the name of the file containing the pointer 
  10727.                    resource. If the file is not in the current directory, 
  10728.                    filename must be preceded by a full path. 
  10729.  
  10730.  Example 
  10731.  
  10732.  This example defines a pointer whose pointer identifier is 10. The pointer 
  10733.  resource is copied from the file custom.cur. 
  10734.  
  10735.   POINTER 10 custom.cur
  10736.  
  10737.  
  10738. ΓòÉΓòÉΓòÉ 18.5.45. PRESPARAMS Statement ΓòÉΓòÉΓòÉ
  10739.  
  10740. Syntax: 
  10741.  
  10742. PRESPARAMS presparam, value, presparam, value, ...
  10743.  
  10744. The PRESPARAMS statement defines presentation fields that customize a dialog 
  10745. box, menu, window, or control.  PRESPARAMS data is a series of types and 
  10746. values.  The window procedure of the dialog box, menu, window or control 
  10747. receives and processes this data when the item is created.  The data for custom 
  10748. controls can be in any format. 
  10749.  
  10750.  presparam   Specifies a presentation-field type. 
  10751.  value       Specifies the presentation-field value. 
  10752.  
  10753.  Comments 
  10754.  
  10755.  PRESPARAMS is often used to supply data to control the appearance of the 
  10756.  customized window when it is first created.  For example, the PRESPARAMS 
  10757.  statement may specify the colors to be used in the window. 
  10758.  
  10759.  Example 
  10760.  
  10761.  This example creates a menu resource with a menu identifier of 1. The 
  10762.  PRESPARAMS statement specifies that the following three menu items be 
  10763.  displayed in the 12-point Helvetica font. 
  10764.  
  10765.   MENU 1
  10766.   BEGIN
  10767.       PRESPARAMS PP_FONTNAMESIZE, "12.Helv"
  10768.       MENUITEM "New", 100
  10769.       MENUITEM "Open", 101
  10770.       MENUITEM "Save", 102
  10771.   END
  10772.  
  10773.  
  10774. ΓòÉΓòÉΓòÉ 18.5.46. PUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  10775.  
  10776. Syntax: 
  10777.  
  10778. PUSHBUTTON text, id, x, y, width, height[, style]
  10779.  
  10780. The PUSHBUTTON statement creates a pushbutton control.  The control is a 
  10781. round-cornered rectangle containing the given text.  The control sends a 
  10782. message to its parent whenever the user chooses the control. The PUSHBUTTON 
  10783. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  10784. text, identifier, dimensions, and attributes of a control window.  The 
  10785. predefined class for this control is WC_BUTTON. If you do not specify a style, 
  10786. the default style is BS_PUSHBUTTON and WS_TABSTOP. 
  10787.  
  10788.  text    Specifies text that is centered in the rectangular area of the 
  10789.          control.  This field must contain zero or more characters enclosed in 
  10790.          double quotation marks.  Character values must be in the range 1 
  10791.          through 255.  If a double quotation mark is required in the text, you 
  10792.          must include the double quotation mark twice.  A tilde ( ~ ) character 
  10793.          in the text indicates that the following character is used as a 
  10794.          mnemonic character for the control.  When the control is displayed, 
  10795.          the tilde is not shown, but the mnemonic character is underlined. The 
  10796.          user can choose the control by pressing the key corresponding to the 
  10797.          underlined mnemonic character. 
  10798.  id      Specifies the control identifier.  This value must be an integer in 
  10799.          the range -32768 through 32767, or a simple expression that evaluates 
  10800.          to a value in that range. 
  10801.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10802.          This value must be an integer in the range -32768 through 32767 or an 
  10803.          expression consisting of integers and the addition (+) or subtraction 
  10804.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10805.          relative to the origin of the dialog box, window, or control 
  10806.          containing the specified control. 
  10807.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10808.          This value must be an integer in the range -32768 through 32767 or an 
  10809.          expression consisting of integers and the addition (+) or subtraction 
  10810.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10811.          relative to the origin of the dialog box, window, or control 
  10812.          containing the specified control. 
  10813.  width   Specifies the width of the control.  This value must be an integer in 
  10814.          the range 0 through 65 535 or an expression consisting of integers and 
  10815.          the addition (+) or subtraction (-) operator.  The width is in 
  10816.          n-character units. 
  10817.  height  Specifies the height of the control.  This value must be an integer in 
  10818.          the range 0 through 65 535 or an expression consisting of integers and 
  10819.          the addition (+) or subtraction (-) operator.  The height is in 
  10820.          1/8-character units. 
  10821.  style   Specifies the control styles.  This value can be a combination of the 
  10822.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  10823.          operator to combine styles. 
  10824.  
  10825.  Example 
  10826.  
  10827.  This example creates a pushbutton control that is labeled "OK." 
  10828.  
  10829.   PUSHBUTTON "OK", 101, 10, 10, 100, 100
  10830.  
  10831.  
  10832. ΓòÉΓòÉΓòÉ 18.5.47. RADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  10833.  
  10834. Syntax: 
  10835.  
  10836. RADIOBUTTON text, id, x, y, width, height[, style]
  10837.  
  10838. The RADIOBUTTON statement creates a radio-button control.  The control is a 
  10839. small circle that has the given text displayed to its right.  The control 
  10840. highlights the circle and sends a message to its parent window when the user 
  10841. selects the button.  The control removes the highlight and sends a message when 
  10842. the button is next selected.  The RADIOBUTTON statement, which you can use only 
  10843. in a DIALOG or WINDOW statement, defines the text, identifier, dimensions, and 
  10844. attributes of a control window.  The predefined class for this control is 
  10845. WC_BUTTON.  If you do not specify a style, the default style is BS_RADIOBUTTON. 
  10846.  
  10847.  text    Specifies text that is displayed to the right of the control.  This 
  10848.          field must contain zero or more characters enclosed in double 
  10849.          quotation marks.  Character values must be in the range 1 through 255. 
  10850.          If a double quotation mark is required in the text, you must include 
  10851.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  10852.          indicates that the following character is used as a mnemonic character 
  10853.          for the control.  When the control is displayed, the tilde is not 
  10854.          shown, but the mnemonic character is underlined.  The user can choose 
  10855.          the control by pressing the key corresponding to the underlined 
  10856.          mnemonic character. 
  10857.  id      Specifies the control identifier.  This value must be an integer in 
  10858.          the range -32768 through 32767, or a simple expression that evaluates 
  10859.          to a value in that range. 
  10860.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10861.          This value must be an integer in the range -32768 through 32767 or an 
  10862.          expression consisting of integers and the addition (+) or subtraction 
  10863.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10864.          relative to the origin of the dialog box, window, or control 
  10865.          containing the specified control. 
  10866.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10867.          This value must be an integer in the range -32768 through 32767 or an 
  10868.          expression consisting of integers and the addition (+) or subtraction 
  10869.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10870.          relative to the origin of the dialog box, window, or control 
  10871.          containing the specified control. 
  10872.  width   Specifies the width of the control.  This value must be an integer in 
  10873.          the range 0 through 65 535 or an expression consisting of integers and 
  10874.          the addition (+) or subtraction (-) operator.  The width is in 
  10875.          n-character units. 
  10876.  height  Specifies the height of the control.  This value must be an integer in 
  10877.          the range 0 through 65 535 or an expression consisting of integers and 
  10878.          the addition (+) or subtraction (-) operator.  The height is in 
  10879.          1/8-character units. 
  10880.  style   Specifies the control styles.  This value can be a combination of the 
  10881.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  10882.          operator to combine styles. 
  10883.  
  10884.  Example 
  10885.  
  10886.  This example creates a radio-button control that is labeled "Italic." 
  10887.  
  10888.   RADIOBUTTON "Italic", 101, 10, 10, 24, 50
  10889.  
  10890.  
  10891. ΓòÉΓòÉΓòÉ 18.5.48. RCDATA Statement ΓòÉΓòÉΓòÉ
  10892.  
  10893. Syntax: 
  10894.  
  10895. RCDATA resource-id
  10896. BEGIN
  10897. data-definition  , data-definition   ...
  10898.     .
  10899.     .
  10900.     .
  10901. END
  10902.  
  10903. The RCDATA statement defines a custom-data resource for an application.  The 
  10904. custom data can be in whatever format the application requires.  You can 
  10905. provide any number of RCDATA statements in a resource script file, but each 
  10906. statement must specify a unique resource-id value.  A custom-data resource can 
  10907. be loaded from the executable file when needed by using the DosGetResource or 
  10908. DosGetResource2 functions with the RT_RCDATA resource type. 
  10909.  
  10910.  resource-id       Specifies the custom-data identifier.  This value must be an 
  10911.                    integer in the range -32768 through 32767, or a simple 
  10912.                    expression that evaluates to a value in that range. 
  10913.  data-definition   Specifies the custom data.  The data may be simple 
  10914.                    expressions or strings. 
  10915.  
  10916.  Example 
  10917.  
  10918.  This example defines custom data that has a resource identifier of 5. 
  10919.  
  10920.   RCDATA 5
  10921.   BEGIN
  10922.       "E. A. Poe", 1849, -32, 3L, 0x8000000l, 3+4+5
  10923.   END
  10924.  
  10925.  
  10926. ΓòÉΓòÉΓòÉ 18.5.49. RCINCLUDE Statement ΓòÉΓòÉΓòÉ
  10927.  
  10928. Syntax: 
  10929.  
  10930. RCINCLUDE filename
  10931.  
  10932. The RCINCLUDE statement causes RC to process the resource script file specified 
  10933. in the filename field along with the current resource script file.  The 
  10934. contents of both files are compiled by RC and the results are placed in one 
  10935. binary resource file and/or executable file. 
  10936.  
  10937.  filename    Specifies the name of the resource script file to be included. If 
  10938.              the file is not in the current directory, filename must be 
  10939.              preceded by a full path. 
  10940.  
  10941.  Comments 
  10942.  
  10943.  RCINCLUDE statements are processed before any other processing is done, 
  10944.  including preprocessing by RCPP.EXE, which removes comments, replaces values 
  10945.  in the define directives, and so on. 
  10946.  
  10947.  When specifying a high performance file system (HPFS) file name on an 
  10948.  RCINCLUDE statement, enclose the path and file name in double quotes; for 
  10949.  example: 
  10950.  
  10951.      RCINCLUDE "d:\project\long dialog.dlg"
  10952.  
  10953.  Double quotes enables the Resource Compiler to recognize a name containing 
  10954.  embedded blank characters. 
  10955.  
  10956.  Example 
  10957.  
  10958.  This example includes the file DIALOGS.RC as part of the current resource 
  10959.  script file. 
  10960.  
  10961.   RCINCLUDE dialogs.rc
  10962.  
  10963.  
  10964. ΓòÉΓòÉΓòÉ 18.5.50. RESOURCE Statement ΓòÉΓòÉΓòÉ
  10965.  
  10966. Syntax: 
  10967.  
  10968. RESOURCE type-id resource-id  [load-option]
  10969. [mem-option][code page]  filename
  10970.  
  10971. The RESOURCE statement defines a custom resource for an application. A custom 
  10972. resource can be any data in any format.  The RESOURCE statement copies the 
  10973. custom resource from the specified file and adds it to the application's other 
  10974. resources.  A custom resource can be loaded from the executable file when 
  10975. needed by using the DosGetResource or DosGetResource2 function and specifying 
  10976. the resource's type and resource identifier. 
  10977.  
  10978. You can provide any number of RESOURCE statements in a resource script file, 
  10979. but each statement must specify a unique combination of type-id and resource-id 
  10980. values.  That is, RESOURCE statements having the same type-id value are 
  10981. permitted as long as the resource-id value for each is unique. 
  10982.  
  10983.  type-id           Specifies the custom-resource type.  This value must be an 
  10984.                    integer in the range 256 through 65 535, or a simple 
  10985.                    expression that evaluates to a value in that range.  (Values 
  10986.                    0 through 255 are reserved.) 
  10987.  resource-id       Specifies the custom-resource identifier.  This value must 
  10988.                    be an integer in the range -32768 through 32767, or a simple 
  10989.                    expression that evaluates to a value in that range. 
  10990.  load-option       Specifies when the system loads the resource from the 
  10991.                    executable file into memory.  This value must be one of the 
  10992.                    following: 
  10993.                    PRELOAD             System loads the resource when the 
  10994.                                        application starts. 
  10995.                    LOADONCALL          System loads the resource when the 
  10996.                                        application calls the DosGetResource or 
  10997.                                        DosGetResource2 function.  This is the 
  10998.                                        default option. 
  10999.  mem-option        Specifies how the system manages the resource when it is in 
  11000.                    memory.  This value must be one or more of the following: 
  11001.                    FIXED               System keeps the resource at a fixed 
  11002.                                        memory location. 
  11003.                    MOVEABLE            System moves the resource as necessary 
  11004.                                        to compact memory. 
  11005.                    DISCARDABLE         System discards the resource if it is no 
  11006.                                        longer needed. The default setting is 
  11007.                    MOVEABLE and DISCARDABLE. 
  11008.  codepage          Specifies a code page value. See CODEPAGE Statement. for a 
  11009.                    list of valid code pages. 
  11010.  filename          Specifies the name of the file containing the custom 
  11011.                    resource. If the file is not in the current directory, 
  11012.                    filename must be preceded by a full path. 
  11013.  
  11014.  Example 
  11015.  
  11016.  This example defines a custom resource whose type identifier is 300 and whose 
  11017.  resource identifier is 14.  The custom resource is copied from the file 
  11018.  CUSTOM.RES. 
  11019.  
  11020.   RESOURCE 300 14 custom.res
  11021.  
  11022.  
  11023. ΓòÉΓòÉΓòÉ 18.5.51. RTEXT Statement ΓòÉΓòÉΓòÉ
  11024.  
  11025. Syntax: 
  11026.  
  11027. RTEXT text, id, x, y, width, height[, style]
  11028.  
  11029. The RTEXT statement creates a right-aligned text control.  The control is a 
  11030. simple rectangle displaying the given text right-aligned in the rectangle.  The 
  11031. text is formatted before it is displayed.  Words that would extend past the end 
  11032. of a line are automatically wrapped to the beginning of the next line.  The 
  11033. RTEXT statement, which you can use only in a DIALOG or WINDOW statement, 
  11034. defines the text, identifier, dimensions, and attributes of the control.  The 
  11035. predefined class for the control is WC_STATIC.  If you do not specify a style, 
  11036. the default style is SS_TEXT, DT_RIGHT, and WS_GROUP. 
  11037.  
  11038.  text    Specifies text that is right-aligned in the rectangular area of the 
  11039.          control.  This field must contain zero or more characters enclosed in 
  11040.          double quotation marks.  Character values must be in the range 1 
  11041.          through 255.  If a double quotation mark is required in the text, you 
  11042.          must include the double quotation mark twice. 
  11043.  id      Specifies the control identifier.  This value must be an integer in 
  11044.          the range -32768 through 32767, or a simple expression that evaluates 
  11045.          to a value in that range. 
  11046.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11047.          This value must be an integer in the range -32768 through 32767 or an 
  11048.          expression consisting of integers and the addition (+) or subtraction 
  11049.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  11050.          relative to the origin of the dialog box, window, or control 
  11051.          containing the specified control. 
  11052.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11053.          This value must be an integer in the range -32768 through 32767 or an 
  11054.          expression consisting of integers and the addition (+) or subtraction 
  11055.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  11056.          relative to the origin of the dialog box, window, or control 
  11057.          containing the specified control. 
  11058.  width   Specifies the width of the control.  This value must be an integer in 
  11059.          the range 0 through 65 535 or an expression consisting of integers and 
  11060.          the addition (+) or subtraction (-) operator.  The width is in 
  11061.          n-character units. 
  11062.  height  Specifies the height of the control.  This value must be an integer in 
  11063.          the range 0 through 65 535 or an expression consisting of integers and 
  11064.          the addition (+) or subtraction (-) operator.  The height is in 
  11065.          1/8-character units. 
  11066.  style   Specifies the control styles.  This value can be a combination of the 
  11067.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  11068.          operator to combine styles. 
  11069.  
  11070.  Example 
  11071.  
  11072.  This example creates a right-aligned text control that is labeled "Filename." 
  11073.  
  11074.   RTEXT "Filename", 101, 10, 10, 100, 100
  11075.  
  11076.  
  11077. ΓòÉΓòÉΓòÉ 18.5.52. SLIDER Statement ΓòÉΓòÉΓòÉ
  11078.  
  11079. Syntax: 
  11080.  
  11081. SLIDER   id, x, y, width, height[, style]
  11082.  
  11083. The SLIDER statement creates a slider control within the dialog window.  This 
  11084. control lets the user set, display, or modify a value by moving a slider arm 
  11085. along a slider shaft.  The SLIDER statement defines the identifier, position, 
  11086. dimensions, and attributes of a slider control.  The predefined class for this 
  11087. control is WC_SLIDER.  If you do not specify a style, the default style is 
  11088. WS_TABSTOP and WS_VISIBLE. 
  11089.  
  11090.  id      Specifies the control identifier.  The value is any integer -32768 
  11091.          through 32767, or a simple expression that evaluates to a value in 
  11092.          that range. 
  11093.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11094.          The value is any integer -32768 through 32767 or an expression 
  11095.          consisting of integers and the addition (+) or subtraction (-) 
  11096.          operator.  The coordinate is assumed to be in dialog units and is 
  11097.          relative to the origin of the dialog window. 
  11098.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11099.          The value is any integer -32768 through 32767 or an expression 
  11100.          consisting of integers and the addition (+) or subtraction (-) 
  11101.          operator.  The coordinate is assumed to be in dialog units and is 
  11102.          relative to the origin of the dialog window. 
  11103.  width   Specifies the width of the control.  The value is any integer 0 
  11104.          through 65 535 or an expression consisting of integers and the 
  11105.          addition (+) or subtraction (-) operator. The width is in n-character 
  11106.          units. 
  11107.  height  Specifies the height of the control.  The value is any integer 0 
  11108.          through 65 535 or an expression consisting of integers and the 
  11109.          addition (+) or subtraction (-) operator. The height is in 
  11110.          1/8-character units. 
  11111.  style   Specifies the control styles.  The value can be any combination of the 
  11112.          styles specified for WC_SLIDER.  You can use the bitwise OR ( | ) 
  11113.          operator to combine styles. 
  11114.  
  11115.  Comments 
  11116.  
  11117.  The SLIDER statement is only used in a DIALOG or WINDOW statement. 
  11118.  
  11119.  Example 
  11120.  
  11121.  This example creates a slider control at position (40, 30) within the dialog 
  11122.  window.  The slider has a width of 120 character units and a height of 2 
  11123.  character units.  Its resource ID is 101. The style specification 
  11124.  SLS_BUTTONSLEFT adds buttons to the left of the slider shaft.  The default 
  11125.  styles WS_TABSTOP and WS_VISIBLE are both in effect, though only the latter is 
  11126.  specified. 
  11127.  
  11128.   #define    IDC_SLIDER       101
  11129.   #define    IDD_SLIDERDLG    502
  11130.   DIALOG "Slider", IDD_SLIDERDLG, 11, 11, 200, 240, FS_NOBYTEALIGN |
  11131.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  11132.     BEGIN
  11133.       SLIDER   IDC_SLIDER, 40, 30, 120, 16, SLS_BUTTONSLEFT | WS_VISIBLE
  11134.     END
  11135.  
  11136.  
  11137. ΓòÉΓòÉΓòÉ 18.5.53. SPINBUTTON Statement ΓòÉΓòÉΓòÉ
  11138.  
  11139. Syntax: 
  11140.  
  11141. SPINBUTTON   id, x, y, width, height[, style]
  11142.  
  11143. The SPINBUTTON statement creates a spinbutton control within the dialog window. 
  11144. This control gives the user quick access to a finite set of data.  The 
  11145. SPINBUTTON statement defines the identifier, position, dimensions, and 
  11146. attributes of a spinbutton control.  The predefined class for this control is 
  11147. WC_SPINBUTTON. If you do not specify a style, the default style is WS_TABSTOP, 
  11148. WS_VISIBLE, and SPBS_MASTER. 
  11149.  
  11150.  id      Specifies the control identifier.  The value is any integer -32768 
  11151.          through 32767, or a simple expression that evaluates to a value in 
  11152.          that range. 
  11153.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11154.          The value is any integer -32768 through 32767 or an expression 
  11155.          consisting of integers and the addition (+) or subtraction (-) 
  11156.          operator.  The coordinate is assumed to be in dialog units and is 
  11157.          relative to the origin of the dialog window. 
  11158.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11159.          The value is any integer -32768 through 32767 or an expression 
  11160.          consisting of integers and the addition (+) or subtraction (-) 
  11161.          operator.  The coordinate is assumed to be in dialog units and is 
  11162.          relative to the origin of the dialog window. 
  11163.  width   Specifies the width of the control.  The value is any integer 0 
  11164.          through 65 535 or an expression consisting of integers and the 
  11165.          addition (+) or subtraction (-) operator. The width is in n-character 
  11166.          units. 
  11167.  height  Specifies the height of the control.  The value is any integer 0 
  11168.          through 65 535 or an expression consisting of integers and the 
  11169.          addition (+) or subtraction (-) operator. The height is in 
  11170.          1/8-character units. 
  11171.  style   Specifies the control styles.  The value is any combination of the 
  11172.          styles specified for WC_SPINBUTTON.  You can use the bitwise OR ( | ) 
  11173.          operator to combine styles. 
  11174.  
  11175.  Comments 
  11176.  
  11177.  The SPINBUTTON statement is used only in a DIALOG or WINDOW statement. 
  11178.  
  11179.  Example 
  11180.  
  11181.  This example creates a spinbutton control at position (80, 20) within the 
  11182.  dialog window.  The spinbutton has a width of 60 character units and a height 
  11183.  of 3 character units.  Its resource ID is 302. The style specification 
  11184.  SPBS_NUMERICONLY creates a control which accepts only the digits 0-9 and 
  11185.  virtual keys.  The default styles SPBS_MASTER, WS_TABSTOP, and WS_VISIBLE are 
  11186.  all in effect, though only WS_TABSTOP is specified. 
  11187.  
  11188.   #define    IDC_SPINBUTTON   302
  11189.   #define    IDD_SPINDLG    502
  11190.   DIALOG "Spin button", IDD_SPINDLG, 11, 11, 200, 240, FS_NOBYTEALIGN |
  11191.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  11192.     BEGIN
  11193.       SPINBUTTON  IDC_SPINBUTTON, 80, 20, 60, 24, SPBS_NUMERICONLY | WS_TABSTOP
  11194.     END
  11195.  
  11196.  
  11197. ΓòÉΓòÉΓòÉ 18.5.54. STRINGTABLE Statement ΓòÉΓòÉΓòÉ
  11198.  
  11199. Syntax: 
  11200.  
  11201. STRINGTABLE  [load-option]  [mem-option][codepage]
  11202. BEGIN
  11203. string-id string-definition
  11204.     .
  11205.     .
  11206.     .
  11207. END
  11208.  
  11209. The STRINGTABLE statement creates one or more string resources for an 
  11210. application.  A string resource is a null-terminated character string that has 
  11211. a unique string identifier.  A string resource can be loaded from the 
  11212. executable file when needed by using the WinLoadString or with DosGetResource 
  11213. with the RT_STRING resource type. RT_STRING resources are bundled together in 
  11214. groups of 16, with any missing IDs replaced with zero length strings. Each 
  11215. group, or bundle, is assigned a unique sequential ID. The resource string ID is 
  11216. not necessarily the same as the ID specified when using DosGetResource. The 
  11217. formula for calculating the ID of the resource bundle, for use in 
  11218. DosGetResource, is as follows: 
  11219.  
  11220. bundle ID = ( id / 16) +1
  11221. where id is the string ID assigned in the RC file. 
  11222.  
  11223. Thus, bundle 1 contains strings 0 to 15, bundle 2 contains strings 16 to 31, 
  11224. and so on. Once the address of the bundle has been returned by DosGetResource 
  11225. (using the calculated ID), the buffer can be parsed to locate the particular 
  11226. string within the bundle. The number of the string is calculated by the 
  11227. formula: 
  11228.  
  11229. string = id % 16
  11230. (string = remainder for id/16). 
  11231.  
  11232. The buffer returned consists of the CodePage of the strings in the first 
  11233. USHORT, followed by the 16 strings in the bundle. The first BYTE of each string 
  11234. is the length of the string (including the null terminator), followed by the 
  11235. string and the terminator. A zero length string is represented by two bytes: 
  11236. 01 (string length) followed by the null terminator. 
  11237.  
  11238. You can provide any number of STRINGTABLE statements in a resource script file. 
  11239. The compiler treats all the strings from the various STRINGTABLE statements as 
  11240. if they belonged to a single statement.  This means that no two strings in a 
  11241. resource script file can have the same string identifier. 
  11242.  
  11243.  load-option    Specifies when the system loads the resource from the 
  11244.                 executable file into memory.  This value must be one of the 
  11245.                 following: 
  11246.                 PRELOAD             System loads the resource when the 
  11247.                                     application starts. 
  11248.                 LOADONCALL          System loads the resource when the 
  11249.                                     application calls the WinLoadString 
  11250.                                     function. This is the default option. 
  11251.  mem-option     Specifies how the system manages the resource when it is in 
  11252.                 memory.  This value must be one or more of the following: 
  11253.  code-page      Specifies a code page value.  See CODEPAGE Statement for a list 
  11254.                 of valid code page values. 
  11255.                 FIXED               System keeps the resource at a fixed memory 
  11256.                                     location. 
  11257.                 MOVEABLE            System moves the resource as necessary to 
  11258.                                     compact memory. 
  11259.                 DISCARDABLE         System discards the resource if it is no 
  11260.                                     longer needed. The default setting is 
  11261.                 MOVEABLE and DISCARDABLE. 
  11262.  string-id      Specifies the character-string identifier.  This value must be 
  11263.                 an integer in the range -32768 through 32767, or a simple 
  11264.                 expression that evaluates to a value in that range.  The value 
  11265.                 can be specified in decimal or hexadecimal notation.  Each 
  11266.                 string identifier in a resource script file must be unique. 
  11267.  string-definition Specifies a character string.  This field must contain zero 
  11268.                 or more characters enclosed in double quotation marks. 
  11269.                 Character values must be in the range 1 through 255.  If a 
  11270.                 double quotation mark is required in the string, you must 
  11271.                 include the double quotation mark twice. 
  11272.  
  11273.  Comments 
  11274.  
  11275.  You can continue a string on multiple lines by terminating the line with a 
  11276.  backslash (\) or by terminating the line with a double quotation mark (") and 
  11277.  then starting the next line with a double quotation mark. 
  11278.  
  11279.  Example 
  11280.  
  11281.  This example creates two string resources whose string identifiers are 1 and 
  11282.  2. 
  11283.  
  11284.   #define IDS_HELLO    1
  11285.   #define IDS_GOODBYE  2
  11286.  
  11287.   STRINGTABLE
  11288.   BEGIN
  11289.       IDS_HELLO   "Hello"
  11290.       IDS_GOODBYE "Goodbye"
  11291.   END
  11292.  
  11293.  
  11294. ΓòÉΓòÉΓòÉ 18.5.55. SUBITEMSIZE Statement ΓòÉΓòÉΓòÉ
  11295.  
  11296. Syntax: 
  11297.  
  11298. SUBITEMSIZE  size
  11299.  
  11300. The SUBITEMSIZE statement specifies the size, in words, of each help subitem in 
  11301. a help subtable.  The minimum size is two words, and each help subitem in a 
  11302. help subtable must be the same size.  When used, the SUBITEMSIZE statement must 
  11303. appear after the HELPSUBTABLE statement and before the BEGIN keyword. 
  11304.  
  11305. You do not need to use the SUBITEMSIZE statement if the help subitems are the 
  11306. default size (2). 
  11307.  
  11308.  size    Specifies the size of each help subitem.  This value must be an 
  11309.          integer. 
  11310.  
  11311.  Example 
  11312.  
  11313.  The SUBITEMSIZE statement in this example specifies that each HELPSUBITEM 
  11314.  statement contains three words. 
  11315.  
  11316.   HELPSUBTABLE 1
  11317.   SUBITEMSIZE 3
  11318.   BEGIN
  11319.       HELPSUBITEM IDCLD_FILEMENU, IDHP_FILEMENU, 5
  11320.       HELPSUBITEM IDCLD_HELPMENU, IDHP_HELPMENU, 6
  11321.   END
  11322.  
  11323.  
  11324. ΓòÉΓòÉΓòÉ 18.5.56. SUBMENU Statement ΓòÉΓòÉΓòÉ
  11325.  
  11326. Syntax: 
  11327.  
  11328. SUBMENU text, submenu-id [, menuitem-style]
  11329. BEGIN
  11330. menuitem-definition
  11331.     .
  11332.     .
  11333.     .
  11334. END
  11335.  
  11336. The SUBMENU statement creates a submenu for a given menu.  A submenu is a 
  11337. vertical list of menu items from which the user can choose a command. 
  11338.  
  11339. You can provide any number of SUBMENU statements in a MENU statement, but each 
  11340. SUBMENU statement must specify a unique submenu-id value. You can provide any 
  11341. number of menuitem-definition statements in the SUBMENU statement.  These 
  11342. define the menu items (commands) in the menu.  The order of the statements 
  11343. determines the order of the menu items. 
  11344.  
  11345.  text                  Specifies the text of the submenu.  This field must 
  11346.                        contain zero or more characters enclosed in double 
  11347.                        quotation marks.  Character values must be in the range 
  11348.                        1 through 255.  If a double quotation mark is required 
  11349.                        in the string, you must include the double quotation 
  11350.                        mark twice.  A tilde ( ~ ) character in the item name 
  11351.                        indicates that the following character is used as a 
  11352.                        mnemonic character for the item.  When the menu is 
  11353.                        displayed, the tilde is not shown, but the mnemonic 
  11354.                        character is underlined.  The user can choose the menu 
  11355.                        item by pressing the key corresponding to the underlined 
  11356.                        mnemonic character. 
  11357.  submenu-id            Specifies the submenu identifier. This value must be an 
  11358.                        integer in the range -32768 through 32767, or a simple 
  11359.                        expression that evaluates to a value in that range. 
  11360.  menuitem-style        Specifies the submenu style. This value can be a 
  11361.                        combination of MIS_ values. For details on the MIS_ 
  11362.                        values, see MENUITEM Statement. 
  11363.  menuitem-definition   Specifies a PRESPARAMS or MENUITEM statement.  You can 
  11364.                        use the PRESPARAMS statement to control the appearance 
  11365.                        of a submenu, such as the font and the foreground and 
  11366.                        background colors.  If used, the PRESPARAMS statement 
  11367.                        must immediately follow the BEGIN keyword.  For details 
  11368.                        about the PRESPARAMS statement, see PRESPARAMS 
  11369.                        Statement. 
  11370.  
  11371.                        The MENUITEM statement defines an individual command in 
  11372.                        the given menu.  For details, see MENUITEM Statement. 
  11373.  
  11374.  Example 
  11375.  
  11376.  This example creates a submenu named Elements.  Its identifier is 2. The 
  11377.  submenu contains three menu items, which are created by using MENUITEM 
  11378.  statements. 
  11379.  
  11380.   SUBMENU "Elements", 2
  11381.   BEGIN
  11382.       MENUITEM "Oxygen", 200
  11383.       MENUITEM "Carbon", 201, , MIA_CHECKED
  11384.       MENUITEM "Hydrogen", 202
  11385.   END
  11386.  
  11387.  
  11388. ΓòÉΓòÉΓòÉ 18.5.57. undef Directive ΓòÉΓòÉΓòÉ
  11389.  
  11390. Syntax: undef name 
  11391.  
  11392. This directive removes the current definition of the specified name.  All 
  11393. subsequent occurrences of the name are processed without replacement. 
  11394.  
  11395.  name    Specifies the name to be removed.  This value is any combination of 
  11396.          letters, digits, and punctuation. 
  11397.  
  11398.  Example 
  11399.  
  11400.  This example removes the definitions for the names "nonzero" and "USERCLASS". 
  11401.  
  11402.   #undef     nonzero
  11403.   #undef     USERCLASS
  11404.  
  11405.  
  11406. ΓòÉΓòÉΓòÉ 18.5.58. VALUESET Statement ΓòÉΓòÉΓòÉ
  11407.  
  11408. Syntax: 
  11409.  
  11410. VALUESET   id, x, y, width, height[, style]
  11411.  
  11412. The VALUESET statement creates a value set control within the dialog window. 
  11413. This control lets a user select one choice from a group of mutually exclusive 
  11414. choices.  The VALUESET statement defines the identifier, position, dimensions, 
  11415. and attributes of a value set control.  The predefined class for this control 
  11416. is WC_VALUESET.  If you do not specify a style, the default style is WS_TABSTOP 
  11417. and WS_VISIBLE. 
  11418.  
  11419.  id      Specifies the control identifier.  The value is any integer -32768 
  11420.          through 32767, or a simple expression that evaluates to a value in 
  11421.          that range. 
  11422.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11423.          The value is any integer -32768 through 32767 or an expression 
  11424.          consisting of integers and the addition (+) or subtraction (-) 
  11425.          operator.  The coordinate is assumed to be in dialog units and is 
  11426.          relative to the origin of the dialog window. 
  11427.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11428.          The value is any integer -32768 through 32767 or an expression 
  11429.          consisting of integers and the addition (+) or subtraction (-) 
  11430.          operator.  The coordinate is assumed to be in dialog units and is 
  11431.          relative to the origin of the dialog window. 
  11432.  width   Specifies the width of the control.  The value is any integer 0 
  11433.          through 65 535 or an expression consisting of integers and the 
  11434.          addition (+) or subtraction (-) operator. The width is in n-character 
  11435.          units. 
  11436.  height  Specifies the height of the control.  The value is any integer 0 
  11437.          through 65 535 or an expression consisting of integers and the 
  11438.          addition (+) or subtraction (-) operator. The height is in 
  11439.          1/8-character units. 
  11440.  style   Specifies the control styles. The value is any combination of the 
  11441.          styles specified for WC_VALUESET. You can use the bitwise OR ( | ) 
  11442.          operator to combine styles. 
  11443.  
  11444.  Comments 
  11445.  
  11446.  The VALUESET statement is used only in a DIALOG or WINDOW statement. 
  11447.  
  11448.  Example 
  11449.  
  11450.  This example creates a value set control at position (40, 40) within the 
  11451.  dialog window.  The value set control has a width of 220 character and a 
  11452.  height of 20 character units.  Its resource ID is 302.  The style 
  11453.  specification VS_ICON creates a control to show items in icon form.  The 
  11454.  default styles WS_TABSTOP and WS_VISIBLE are both in effect, though only 
  11455.  WS_TABSTOP is specified. 
  11456.  
  11457.   #define    IDC_VALUESET     302
  11458.   #define    IDD_VALUESETDLG  501
  11459.   DIALOG "Value set", IDD_VALUESETDLG, 11, 11, 260, 240, FS_NOBYTEALIGN |
  11460.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  11461.     BEGIN
  11462.       VALUESET  IDC_VALUESET, 40, 40, 220, 160, VS_ICON | WS_TABSTOP
  11463.     END
  11464.  
  11465.  
  11466. ΓòÉΓòÉΓòÉ 18.5.59. WINDOW Statement ΓòÉΓòÉΓòÉ
  11467.  
  11468. Syntax: 
  11469.  
  11470. WINDOW text, id, x, y, width, height, class[ , style[  , framectl]]
  11471.   data-definitions
  11472. [ BEGIN
  11473. control-definition
  11474.     .
  11475.     .
  11476.     .
  11477. END ]
  11478.  
  11479. The WINDOW statement creates a window of the specified class.  The statement 
  11480. defines the position and dimensions of the window relative to its parent 
  11481. window, as well as the window-box style.  The WINDOW statement is typically 
  11482. used in a WINDOWTEMPLATE or FRAME statement. 
  11483.  
  11484. Typically, only one WINDOW statement is used in a FRAME statement.  It defines 
  11485. the client window belonging to the corresponding frame window. The optional 
  11486. BEGIN and END keywords enclose any CONTROL statements that are given with the 
  11487. window.  CONTROL statements given in this manner represent child windows 
  11488. belonging to the window created by the WINDOW statement. 
  11489.  
  11490.  text              Specifies the window title if the style specifies a title 
  11491.                    bar. This field must contain zero or more characters 
  11492.                    enclosed in double quotation marks.  The character values 
  11493.                    must be in the range 1 through 255.  If a double quotation 
  11494.                    mark is required in the title, you must include the double 
  11495.                    quotation mark twice. 
  11496.  id                Specifies the window identifier.  This value must be an 
  11497.                    integer in the range -32768 through 32767, or a simple 
  11498.                    expression that evaluates to a value in that range. 
  11499.  x                 Specifies the x-coordinate of the lower-left corner of the 
  11500.                    window. This value must be an integer in the range -32768 
  11501.                    through 32767 or an expression consisting of integers and 
  11502.                    the addition (+) or subtraction (-) operator.  The value is 
  11503.                    in dialog units.  The position is relative to the origin of 
  11504.                    the parent window. 
  11505.  y                 Specifies the y-coordinate of the lower-left corner of the 
  11506.                    window. This value must be an integer in the range -32768 
  11507.                    through 32767 or an expression consisting of integers and 
  11508.                    the addition (+) or subtraction (-) operator.  The value is 
  11509.                    in dialog units.  The position is relative to the origin of 
  11510.                    the parent window. 
  11511.  width             Specifies the width of the window.  This value must be an 
  11512.                    integer in the range 0 through 65 535 or an expression 
  11513.                    consisting of integers and the addition (+) or subtraction 
  11514.                    (-) operator.  The value is in n-character units. 
  11515.  height            Specifies the height of the window.  This value must be an 
  11516.                    integer in the range 0 through 65 535 or an expression 
  11517.                    consisting of integers and the addition (+) or subtraction 
  11518.                    (-) operator.  The value is in 1/8-character units. 
  11519.  class             Specifies the window class.  This value can be one of the 
  11520.                    control classes specified in the "Control Classes" table in 
  11521.                    the Presentation Manager Programmer Reference or the name of 
  11522.                    the window class, enclosed in double quotation marks. 
  11523.  style             Specifies the window style.  This value can be any of the 
  11524.                    window, dialog box, or frame styles specified. 
  11525.  framectl          Specifies the style of the frame controls belonging to the 
  11526.                    window.  This value can be a combination of the styles 
  11527.                    specified in the table, "Frame-Control Styles." You can use 
  11528.                    the bitwise OR (|) operator to combine styles. 
  11529.  data-definitions  Specifies a CTLDATA and/or PRESPARAMS statement. These 
  11530.                    statements define control and presentation data for the 
  11531.                    window. For more information, see CTLDATA Statement and 
  11532.                    PRESPARAMS Statement. 
  11533.  control-definition Specifies a CONTROL statement or any one of several 
  11534.                    predefined control statements. These statements define the 
  11535.                    style, position, and dimensions of controls in the window. 
  11536.  
  11537.  Comments 
  11538.  
  11539.  The WINDOW statement can actually contain any combination of CONTROL, DIALOG, 
  11540.  and WINDOW statements. Typically, a WINDOW statement contains one or no such 
  11541.  statements. 
  11542.  
  11543.  Example 
  11544.  
  11545.  This example creates a client window belonging to the frame window. The client 
  11546.  window belongs to the "MyClientClass" window class and has the standard window 
  11547.  identifier FID_CLIENT. 
  11548.  
  11549.   WINDOWTEMPLATE 1
  11550.   BEGIN
  11551.       FRAME "My Window", 1, 10, 10, 320, 130,
  11552.                0, FCF_STANDARD | FCF_VERTSCROLL
  11553.       BEGIN
  11554.           WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass"
  11555.       END
  11556.   END
  11557.  
  11558.  
  11559. ΓòÉΓòÉΓòÉ 18.5.60. WINDOWTEMPLATE Statement ΓòÉΓòÉΓòÉ
  11560.  
  11561. Syntax: 
  11562.  
  11563. WINDOWTEMPLATE window-id  [load-option]  [ mem-option][code-page]
  11564. BEGIN
  11565. window-definition
  11566.     .
  11567.     .
  11568.     .
  11569. END
  11570.  
  11571. The WINDOWTEMPLATE statement creates a window template.  A window template 
  11572. consists of a series of statements that define the window identifier, load and 
  11573. memory options, window dimensions, and controls in the window.  The window 
  11574. template can be loaded from the executable file by using the WinLoadDlg 
  11575. function. 
  11576.  
  11577. You can provide any number of window templates in a resource script file, but 
  11578. each template must have a unique window-id value. 
  11579.  
  11580.  window-id           Specifies the window identifier.  This value must be an 
  11581.                      integer in the range -32768 through 32767, or a simple 
  11582.                      expression that evaluates to a value in that range. 
  11583.  load-option         Specifies when the system loads the resource from the 
  11584.                      executable file into memory.  This value must be one of 
  11585.                      the following: 
  11586.                      PRELOAD             System loads the resource when the 
  11587.                                          application starts. 
  11588.                      LOADONCALL          System loads the resource when the 
  11589.                                          application calls the WinLoadDlg 
  11590.                                          function. This is the default option. 
  11591.  mem-option          Specifies how the system manages the resource when it is 
  11592.                      in memory.  This value must be one or more of the 
  11593.                      following: 
  11594.                      FIXED               System keeps the resource at a fixed 
  11595.                                          memory location. 
  11596.                      MOVEABLE            System moves the resource as necessary 
  11597.                                          to compact memory. 
  11598.                      DISCARDABLE         System discards the resource if it is 
  11599.                                          no longer needed. The default setting 
  11600.                      is MOVEABLE and DISCARDABLE. 
  11601.  code-page           Specifies a code page value.  See CODEPAGE Statement for a 
  11602.                      list of valid code pages. 
  11603.  window-definition   Specifies a WINDOW statement.  The statement defines the 
  11604.                      dimensions and style of the given window.  For details 
  11605.                      about the statement, see WINDOW Statement. 
  11606.  
  11607.  Comments 
  11608.  
  11609.  A WINDOWTEMPLATE statement can contain DIALOG, CONTROL, and WINDOW statements. 
  11610.  Typically, only one WINDOW statement is used in the WINDOWTEMPLATE statement. 
  11611.  
  11612.  
  11613. ΓòÉΓòÉΓòÉ 19. T Terminal Emulator ΓòÉΓòÉΓòÉ
  11614.  
  11615. The Kernel Debugger uses the T Terminal Emulator to communicate with the 
  11616. machine to be debugged, also known as the MUT (Machine Under Test). 
  11617.  
  11618. You can also use T to send and receive ASCII files. 
  11619.  
  11620. All functions of T are listed on the Help menu. Press F1 to view the Help menu, 
  11621. which is shown below. 
  11622.  
  11623.   TERMINAL - OS/2 ASCII Terminal Program
  11624.  
  11625.   Version 2.00.00
  11626.  
  11627.  F1 or ALT-H   Help
  11628.  F2            Terminal Setup
  11629.  F3            Sending Files
  11630.  F4            Pausing and Scrolling
  11631.  F6            Receiving Files
  11632.  F8  or ALT-X  Exit terminal program
  11633.  
  11634.  
  11635. ΓòÉΓòÉΓòÉ 19.1. Command-Line Syntax ΓòÉΓòÉΓòÉ
  11636.  
  11637. To display help for command-line syntax, type T -? at the prompt. 
  11638.  
  11639. OS/2 Terminal program
  11640. Version 2.00.00
  11641. November 1, 1991
  11642.  
  11643. Valid command line switches:
  11644.   -L[ines]X      X={lines}
  11645.   -C[om]N        N={1..8}
  11646.   -Q[uiet]       enter quiet mode
  11647.   -V[tp]:name    name=vtp server
  11648.   -S[end]:name   name=auto-send file name
  11649.   -R[emark]:text text=status line remark (20 chars max)
  11650.  
  11651.  
  11652. ΓòÉΓòÉΓòÉ 19.1.1. Command-Line Options ΓòÉΓòÉΓòÉ
  11653.  
  11654. Use command line options when invoking T to specify the screen size and the COM 
  11655. port to be used: 
  11656.  
  11657.  -L[ines]X      Where x = {25, 43, 50} 
  11658.  
  11659.  -C[om]N        Where n = {1,2,3} 
  11660.  
  11661.  -?             To display these options 
  11662.  
  11663.  
  11664. ΓòÉΓòÉΓòÉ 19.2. Terminal Setup ΓòÉΓòÉΓòÉ
  11665.  
  11666. All terminal setup functions are listed here. Press F2 from the program's main 
  11667. screen to view the Terminal Setup menu. 
  11668.  
  11669. The Terminal Setup Options are as follows: 
  11670.  
  11671.      Help (press F1) 
  11672.      Port setup (Press F2) 
  11673.      Terminal emulation (Press F3) 
  11674.      Keyboard macros (Press F4) 
  11675.      Bells & Whistles (Press F5) 
  11676.      Exit setup mode (Press Esc or F8) 
  11677.  
  11678.  You must press Esc to return to the main screen before continuing with any 
  11679.  functions other than the above setup functions. 
  11680.  
  11681.  
  11682. ΓòÉΓòÉΓòÉ 19.2.1. Setup Terminal Emulation ΓòÉΓòÉΓòÉ
  11683.  
  11684. To set up terminal emulation, follow these steps: 
  11685.  
  11686.    1. Press F2 at the main screen. The Terminal Setup dialog will be displayed. 
  11687.  
  11688.    2. Press F3. The Terminal Emulation Setup dialog will be displayed. 
  11689.  
  11690.    Terminal Emulation Setup
  11691.    Emulator status: None loaded.
  11692.  
  11693.    Help:                       F1
  11694.    Z19 emulator:               F2
  11695.  
  11696.    Exit emulator setup mode:   Esc, F8
  11697.  
  11698.  
  11699. ΓòÉΓòÉΓòÉ 19.2.2. Setup Bells & Whistles ΓòÉΓòÉΓòÉ
  11700.  
  11701. To change bells and whistles, follow these steps: 
  11702.  
  11703.    1. Press F2 at the main screen. The Terminal Setup dialog will be displayed. 
  11704.  
  11705.    2. Press F5. The Bells & Whistles Setup dialog will be displayed. 
  11706.  
  11707.    3. Make your selections. 
  11708.  
  11709.   Bells and Whistles Setup
  11710.  
  11711.   Filter NULL characters: Yes
  11712.   Disable beeps:          No
  11713.  
  11714.                         Background:   Foreground:
  11715.   Normal screen:        Black         White
  11716.   Status line:          Blue          Bright White
  11717.   Scroll screen:        Blue          Red
  11718.   Scroll status line:   White         Blue
  11719.   Help screen:          Blue          Bright White
  11720.   Menu:                 Blue          Bright White
  11721.   Menu highlight:       Cyan          Black
  11722.  
  11723.   Next Value:
  11724.  
  11725.  
  11726. ΓòÉΓòÉΓòÉ 19.2.3. Setting Communications Parameters ΓòÉΓòÉΓòÉ
  11727.  
  11728. To change communications parameters, follow these steps: 
  11729.  
  11730.    1. Press F2 at the main screen. The Terminal Setup dialog will be displayed. 
  11731.  
  11732.    2. Press F2. The Current COM2 Port Parameters dialog will be displayed. 
  11733.  
  11734.              Current COM2 Port parameters:
  11735.  
  11736.              Baud Rate:                   9600
  11737.              Parity:                      NONE
  11738.              Data Bits:                      8
  11739.              Stop Bits:                      1
  11740.              Write Timeout (sec.):        1.00
  11741.              Read Timeout (sec.):         0.10
  11742.              Handshaking:             XON/XOFF
  11743.  
  11744.              Next Value: ->   Previous Value: <-
  11745.              Next Field: Dn   Previous Field: Up
  11746.              Don't Change:   Esc
  11747.              Accept Changes: Enter
  11748.  
  11749.    3. Use the Up Arrow and Down Arrow cursor keys to scroll backward and 
  11750.       forward through the parameter list, and the -> and <- keys to scroll 
  11751.       through allowable values for each parameter. 
  11752.  
  11753.    4. Press Escape to exit this dialog without changing values, or press Enter 
  11754.       to save these values and exit the dialog. 
  11755.  
  11756.  Note:  The communications port may be changed from the command line by using 
  11757.         the -c option. See Command-Line Options 
  11758.  
  11759.  
  11760. ΓòÉΓòÉΓòÉ 19.3. Sending Files ΓòÉΓòÉΓòÉ
  11761.  
  11762. To send a file, follow these steps: 
  11763.  
  11764.    1. Press F3. The Send File Control dialog will be displayed. 
  11765.  
  11766.              Send File Control
  11767.  
  11768.              Send file name:
  11769.              SEND.TXT
  11770.  
  11771.              Don't send file:               Esc
  11772.              Accept changes and send file:  Enter
  11773.  
  11774.    2. Enter the filename in the Send File name field. 
  11775.  
  11776.    3. Press Enter to send the file and exit the dialog, or press Escape to exit 
  11777.       this dialog without sending a file. 
  11778.  
  11779.  
  11780. ΓòÉΓòÉΓòÉ 19.4. Pausing and Scrolling ΓòÉΓòÉΓòÉ
  11781.  
  11782. To enter Scroll Mode and pause display of communications, follow these steps: 
  11783.  
  11784.    1. Press F4.  A status line will appear at the bottom of the screen. 
  11785.  
  11786.             F1=Help  ESC=Active mode  Screen Top is 100%
  11787.             through the buffer.  Scroll Mode
  11788.  
  11789.    2. Press F1 to display the Scroll Mode commands. 
  11790.  
  11791.              Screen Scroll Mode
  11792.  
  11793.              F1 or ALT-H       Help
  11794.              Dn                Down a line
  11795.              Up                Up a line
  11796.              PgUp              Up a page
  11797.              PgDn              Down a page
  11798.              ESC or Enter      Return to active mode
  11799.  
  11800.    3. Select a scroll mode command. 
  11801.  
  11802.  
  11803. ΓòÉΓòÉΓòÉ 19.5. Receiving Files ΓòÉΓòÉΓòÉ
  11804.  
  11805. To receive a file, follow these steps: 
  11806.  
  11807.    1. Press F6. The Capture File Control dialog will be displayed. 
  11808.  
  11809.              Capture File Control
  11810.  
  11811.              Capture file name:
  11812.              Capture.Txt
  11813.  
  11814.              Capture entire buffer: F3
  11815.              START Capture:         F5
  11816.              Delete file:           F9
  11817.              Don't Change:          Esc
  11818.              Accept Changes:        Enter
  11819.  
  11820.    2. Select an item from the Capture File Control menu. 
  11821.  
  11822.  
  11823. ΓòÉΓòÉΓòÉ 20. Workplace Class List ΓòÉΓòÉΓòÉ
  11824.  
  11825. The Workplace Class List is a tool that creates a workplace object class and an 
  11826. instance of a workplace object class. Workplace objects are constructed using 
  11827. the SOM protocol and are instances of one of the following workplace object 
  11828. classes: 
  11829.  
  11830.  Predefined   These classes are defined by the system. Examples of predefined 
  11831.               workplace object classes are WPObject, WPFileSys, and WPAbstract. 
  11832.  Subclass     These classes are derived from existing predefined workplace 
  11833.               object classes. They add or remove function; however, they retain 
  11834.               the basic behavior of that class. 
  11835.  Replaced     These classes replace the class being subclassed. They modify the 
  11836.               behavior of an instance of a predefined workplace object class 
  11837.               without the instance being aware of the new class. 
  11838.  
  11839.  
  11840. ΓòÉΓòÉΓòÉ 20.1. Starting Workplace Class List ΓòÉΓòÉΓòÉ
  11841.  
  11842. To start Workplace Class List, select the PM Development Tools folder, and then 
  11843. select Workplace Class List. A window appears.  The window contains a list of 
  11844. the workplace object classes currently registered in the OS/2 Workplace Shell. 
  11845. Using the window, you can: 
  11846.  
  11847.      Create an instance of a workplace object class 
  11848.      Replace a workplace object class 
  11849.      Unreplace a workplace object class 
  11850.      Add a workplace object class 
  11851.      Delete a workplace object class 
  11852.  
  11853.  
  11854. ΓòÉΓòÉΓòÉ 20.1.1. Creating an Object Class Instance ΓòÉΓòÉΓòÉ
  11855.  
  11856. To create an instance of a workplace object class: 
  11857.  
  11858.    1. Select the class from the list in the Workplace Object Class window. 
  11859.    2. Display the pop-up menu by clicking mouse button 2. 
  11860.    3. Select the Create Instance choice. 
  11861.  
  11862.       Note:  Only an instance of a physical workplace object class can be 
  11863.              created. In other words, you cannot create instances of WPObject 
  11864.              or WPClass because they are not physical classes. 
  11865.    4. Fill-in the following input fields: 
  11866.  
  11867.  Object Title          The text string you assign to the object. The text 
  11868.                        string becomes the object title and appears under the 
  11869.                        object when the object is displayed on the Workplace 
  11870.                        Shell. When the object is in an opened state, the text 
  11871.                        string appears in the title bar of the window. 
  11872.  Class of new object   The name of the class of which the object you selected 
  11873.                        is a member. 
  11874.  Parameters            A series of keyname=value pairs (separated by 
  11875.                        semicolons) that change the behavior of the object. Each 
  11876.                        object class defines the keynames and parameters it 
  11877.                        expects to see. All parameters have safe defaults, so it 
  11878.                        is never required to pass parameters to an object. 
  11879.  Location              A real name specified by a fully qualified file 
  11880.                        specification, such as C:\OS2\DLL\MINXOBJ.DLL, or a 
  11881.                        logical name specified by a predefined symbol. 
  11882.  
  11883.  Examples of logical names include the following: 
  11884.  
  11885.  LOCATION_NOWHERE                Hidden folder 
  11886.  LOCATION_DESKTOP                OS/2 Desktop (Workplace) 
  11887.  LOCATION_SYSTEM                 OS/2 System folder 
  11888.  LOCATION_TEMPLATES              Template folder 
  11889.  LOCATION_SYSTEMSETUP            System setup folder 
  11890.  LOCATION_STARTUP                Startup folder 
  11891.  LOCATION_INFORMATION            Information folder 
  11892.  LOCATION_INFORMATION            Information folder 
  11893.  LOCATION_DRIVES                 Drives folder 
  11894.  
  11895.  
  11896. ΓòÉΓòÉΓòÉ 20.1.2. Replacing a Workplace Object Class ΓòÉΓòÉΓòÉ
  11897.  
  11898. To replace an existing registered class: 
  11899.  
  11900.    1. Select the class from the list in the Workplace Object Class window. 
  11901.    2. Display the pop-up menu by single-clicking mouse button 2. 
  11902.    3. Select the Replace choice. Note that only classes that have already been 
  11903.       registered are valid. 
  11904.    4. Fill-in the following input fields: Original class and Replacement class. 
  11905.  
  11906.  Note:  The replacement class must be a descendant of the original class. 
  11907.         Replacing an object class is useful for modifying the behavior of 
  11908.         objects which are instances of the original class but are not aware of 
  11909.         the replacement class. 
  11910.  
  11911.  Original class        The name of the object class being replaced in the 
  11912.                        Workplace. 
  11913.  Replacement class     The name of the object class replacing the original 
  11914.                        class. 
  11915.  
  11916.  
  11917. ΓòÉΓòÉΓòÉ 20.1.3. Unreplaceing a Workplace Object Class ΓòÉΓòÉΓòÉ
  11918.  
  11919. To return a replaced class to its original class: 
  11920.  
  11921.    1. Select the replaced class from the list on the workplace object class 
  11922.       window. 
  11923.    2. Display the pop-up menu by clicking mouse button 2. 
  11924.    3. Select the Unreplace choice. Note that only classes that have already 
  11925.       been replaced are valid. 
  11926.    4. Fill-in the following input fields: 
  11927.  
  11928.  Original class        The name of the replaced object class being returned to 
  11929.                        its original object class in the Workplace. 
  11930.  Replacement class     The name of the replaced object class being returned to 
  11931.                        its original object class. 
  11932.  
  11933.  
  11934. ΓòÉΓòÉΓòÉ 20.1.4. Adding a Workplace Object Class ΓòÉΓòÉΓòÉ
  11935.  
  11936. To add a class to the Workplace Shell: 
  11937.  
  11938.    1. Display the pop-up menu by clicking mouse button 2. 
  11939.    2. Select the Add Class choice. 
  11940.    3. Fill-in the following input fields: 
  11941.  
  11942.  New class name      The name of object class you want to add to the Workplace. 
  11943.                      Type the class name exactly as it is built, 
  11944.                      case-sensitive. 
  11945.  Library module      The name of the dynamic link library (DLL) that holds the 
  11946.                      object definition. Type the library name with complete 
  11947.                      file specification information. 
  11948.  
  11949.                      Note:  The DLL must be created by the IBM System Object 
  11950.                             Model. 
  11951.  
  11952.  
  11953. ΓòÉΓòÉΓòÉ 20.1.5. Deleting an Object Class ΓòÉΓòÉΓòÉ
  11954.  
  11955. To delete a class from the Workplace Shell: 
  11956.  
  11957.    1. Select the class you want to delete from the list in the Workplace Object 
  11958.       Class window. 
  11959.    2. Display the pop-up menu by clicking mouse button 2. 
  11960.    3. Select the Delete a Class choice. 
  11961.    4. Fill-in the name of the class you want to delete from the Workplace. 
  11962.  
  11963.  Note:  You cannot delete system predefined classes, such as WPObject or 
  11964.         WPClass. 
  11965.  
  11966.  
  11967. ΓòÉΓòÉΓòÉ 21. Error Messages ΓòÉΓòÉΓòÉ
  11968.  
  11969.  
  11970. ΓòÉΓòÉΓòÉ 21.1. LINK386 Error Messages ΓòÉΓòÉΓòÉ
  11971.  
  11972. Format of Error Messages 
  11973.  
  11974. There are three types of LINK386 error messages: 
  11975.  
  11976.      Fatal errors cause LINK386 to stop running. They have the following 
  11977.       format: location : fatal error L1xxx : message text 
  11978.  
  11979.      Nonfatal errors indicate problems in the executable file. LINK386 
  11980.       produces the executable file and sets the error bit in the header for the 
  11981.       OS/2 environment. This means that the executable file cannot be run from 
  11982.       OS/2. Nonfatal error messages have the following format: 
  11983.  
  11984.            location : error L2xxx : message text 
  11985.  
  11986.      Warnings indicate possible problems in the executable file. LINK386 
  11987.       produces the executable file, but does not set the error bit in the 
  11988.       header for the OS/2 environment. Warnings have the following format: 
  11989.  
  11990.            location : warning L4xxx : message text 
  11991.  
  11992.  In all these messages, location is the input file associated with the error, 
  11993.  or it is LINK386 itself if there is no input file. The message text is the 
  11994.  actual text message that LINK386 generates. When the input file is a module 
  11995.  definition file, the line number is included, as in this example: 
  11996.  
  11997.   myfile.def(3): fatal error L1030: missing internal name
  11998.  
  11999.  When the input file is an object file or library file and has a module name, 
  12000.  the module name is enclosed in parentheses, as in the following examples: 
  12001.  
  12002.   SLIBCE.LIB(_file)
  12003.   MAIN.OBJ(main.c)
  12004.   TEXT.OBJ
  12005.  
  12006.  Error Message Descriptions 
  12007.  
  12008.       Fatal Error Messages (part 1) 1001 - 1049 
  12009.       Fatal Error Messages (part 2) 1050 - 1098 
  12010.       Fatal Error Messages (part 3) 1100 - 1130 
  12011.       Nonfatal Error Messages 2000 - 2063 
  12012.       Warning Error Messages 4000 - 4094 
  12013.  
  12014.  
  12015. ΓòÉΓòÉΓòÉ 21.1.1. Fatal Error Messages (Part 1) 1001 - 1049 ΓòÉΓòÉΓòÉ
  12016.  
  12017.  L1001     option : option name ambiguous 
  12018.            Explanation: A unique option name does not appear after the option 
  12019.            indicator (/). 
  12020.            Example: The command 
  12021.  
  12022.                           LINK386 /N main;
  12023.            produces this error because LINK386 cannot tell which of the seven 
  12024.            options beginning with the letter N is intended. 
  12025.            Action: Retry using the correct minimum option abbreviation. 
  12026.  
  12027.  L1004     option : invalid numeric value 
  12028.            Explanation: An incorrect value appeared for one of the LINK386 
  12029.            options. This might be because a character string has been entered 
  12030.            for an option that requires a numeric value or because the proper 
  12031.            numeric prefix (for example, 0x for hexadecimal) was not used for a 
  12032.            numeric value. 
  12033.            Action: Retry with a numeric value. 
  12034.  
  12035.  L1006     option : stack size exceeds 65,535 bytes 
  12036.            Explanation: The size you specified for the stack in the /STACK 
  12037.            option of the link command is more than 65,535 bytes. 
  12038.            Action: Retry with a stack size of less than or equal to 65,535 
  12039.            bytes. 
  12040.  
  12041.  L1008     option : segment limit set too high 
  12042.            Explanation: The specified limit on the /SEGMENTS option is greater 
  12043.            than 16 375. 
  12044.            Action: Retry with a limit in the range 1 to 16 375. 
  12045.  
  12046.  L1020     no object modules specified 
  12047.            Explanation: You did not specify any object file names to the 
  12048.            linker. 
  12049.            Action: Restart LINK386, including at least one object file name. 
  12050.  
  12051.  L1021     cannot nest response files 
  12052.            Explanation: A response file has been named within another response 
  12053.            file. You have used @filename within the response file. The @ symbol 
  12054.            is reserved by LINK386 to signify a response file name. 
  12055.            Action: Edit the response file to remove the nested response file. 
  12056.  
  12057.  L1022     response line too long 
  12058.            Explanation: A line in an automatic response file is longer than 256 
  12059.            characters. 
  12060.            Action: Edit the line to make it shorter than 256 characters. 
  12061.            Response files can contain more than one line. 
  12062.  
  12063.  L1023     terminated by user 
  12064.            Explanation: You pressed Ctrl+C or Ctrl+Break. 
  12065.            Action: Your action has terminated LINK386. Restart if necessary. 
  12066.  
  12067.  L1030     missing internal name 
  12068.            Explanation: You have not specified an internal name for an import 
  12069.            in the module definition file. 
  12070.            Action: Edit the module definition file, giving an internal name so 
  12071.            that LINK386 can identify references to the import. 
  12072.  
  12073.  L1031     module description redefined 
  12074.            Explanation: You have used the DESCRIPTION keyword for a module in 
  12075.            the module definition file more than once. 
  12076.            Action: Edit the module definition file, deleting the extra 
  12077.            descriptions. 
  12078.  
  12079.  L1032     module name redefined 
  12080.            Explanation: You have defined a module name more than once with the 
  12081.            NAME or LIBRARY keyword in the module definition file. 
  12082.            Action: Edit the module definition file, checking the module name 
  12083.            definitions. 
  12084.  
  12085.  L1033     input line too long; number characters allowed 
  12086.            Explanation: The input line contains more than number characters. 
  12087.            Action: Retry the command with fewer characters on the input line. 
  12088.  
  12089.  L1040     too many exported entries 
  12090.            Explanation: You have tried to export more than 65535 names. 
  12091.            Action: Retry with fewer names, creating an additional executable 
  12092.            module if necessary. 
  12093.  
  12094.  L1041     resident-name table overflow 
  12095.            Explanation: The total length of all your resident-names, together 
  12096.            with an overhead of 3 bytes for each name, is greater than the 
  12097.            LINK386 limit. The internal LINK386 limit is  65,534 for LINK386 
  12098.            versions prior to 2.01.012 and is 1,048,576 for LINK386 version 
  12099.            2.01.012 and later versions. 
  12100.            Action: Reduce the number or the length of your resident names. 
  12101.  
  12102.  L1042     nonresident-name table overflow 
  12103.            Explanation: The total length of all your nonresident-names, 
  12104.            together with an overhead of 3 bytes for each name, is greater than 
  12105.            65,534 for versions prior to 2.01.012 and is 1,048,576 for LINK386 
  12106.            version 2.01.012 and later versions. 
  12107.            Action: Reduce the number or the length of your nonresident-names. 
  12108.  
  12109.  L1043     relocation table overflow 
  12110.            Explanation: There are more than 65,535 load-time relocations for a 
  12111.            single segment. 
  12112.            Action: Reduce the number of relocations in the source files and 
  12113.            recompile or reassemble them. Interframe references generate 
  12114.            load-time relocations. 
  12115.  
  12116.  L1044     imported-name table overflow 
  12117.            Explanation: The total length of all your imported-names, together 
  12118.            with an overhead of 1 byte for each name, is greater than 65,535 
  12119.            bytes. 
  12120.            Action: Reduce the number or the length of your imported-names. 
  12121.  
  12122.  L1045     too many TYPDEF records 
  12123.            Explanation: An object module contains more than 255 TYPDEF records. 
  12124.            These records describe communal variables. This error can only 
  12125.            appear with programs produced by compilers that support communal 
  12126.            variables. 
  12127.            Action: Reduce the number of TYPDEF records, breaking the module 
  12128.            into smaller parts, if necessary. 
  12129.  
  12130.  L1046     too many external symbols in one module 
  12131.            Explanation: An object module specifies more than the limit of 1023 
  12132.            external symbols. 
  12133.            Action: Reduce the number of external symbols, breaking the module 
  12134.            into smaller parts, if necessary. 
  12135.  
  12136.  L1047     too many group, segment, and class names in one module 
  12137.            Explanation: The program module contains too many group, segment, 
  12138.            and class names. 
  12139.            Action: Reduce the number of groups, segments, or classes, and 
  12140.            re-create the object files. 
  12141.  
  12142.  L1048     too many segments in one module 
  12143.            Explanation: An object module has more than 255 segments. 
  12144.            Action: Reduce the number of segments, splitting the module or 
  12145.            combining some segments. 
  12146.  
  12147.  L1049     too many segments 
  12148.            Explanation: The program has more than the maximum number of 
  12149.            segments. The /SEGMENTS option specifies the maximum allowed number; 
  12150.            the maximum is 16375. 
  12151.            Action: Restart LINK386 using the /SEGMENTS option with an 
  12152.            appropriate number of segments. 
  12153.  
  12154.  
  12155. ΓòÉΓòÉΓòÉ 21.1.2. Fatal Error Messages (Part 2) 1050 - 1098 ΓòÉΓòÉΓòÉ
  12156.  
  12157.  L1050     too many groups in one module 
  12158.            Explanation: LINK386 found more than 32 group definitions (GRPDEF) 
  12159.            in a single module. 
  12160.            Action: Reduce the number of group definitions by splitting the 
  12161.            module, by eliminating one or more group definitions, or combining 
  12162.            group definitions. 
  12163.  
  12164.  L1051     too many groups 
  12165.            Explanation: The program defines more than 32 groups in addition to 
  12166.            DGROUP. 
  12167.            Action: Reduce the number of group definitions by splitting the 
  12168.            module, by eliminating one or more group definitions, or combining 
  12169.            group definitions. 
  12170.  
  12171.  L1052     too many libraries 
  12172.            Explanation: You tried to link with more than 32 libraries. 
  12173.            Action: Combine libraries, or use modules that require fewer 
  12174.            libraries. 
  12175.  
  12176.  L1053     out of memory for symbol table 
  12177.            Explanation: The program has more symbolic information, such as 
  12178.            public, external, segment, group, class, and file names, than the 
  12179.            amount that could fit in available real memory. 
  12180.            Action: Combine modules or segments and recreate the object files. 
  12181.            Eliminate as many public symbols as possible or use shorter names. 
  12182.  
  12183.  L1054     requested segment limit too high 
  12184.            Explanation: There is not enough memory to allocate the necessary 
  12185.            tables for the amount of segments requested. 
  12186.            Action: Reduce the number of segments by combining or creating 
  12187.            additional executable modules. 
  12188.  
  12189.  L1057     data record too large 
  12190.            Explanation: A LEDATA record (in an object module) contained more 
  12191.            than 1024 bytes of data. This is a translator (compiler or 
  12192.            assembler) error. 
  12193.            Action: Note which translator (compiler or assembler) produced the 
  12194.            incorrect object module and the circumstances, and contact your 
  12195.            supplier. 
  12196.  
  12197.  L1060     program exceeds number bytes 
  12198.            Explanation: There is not enough memory to process all segments. 
  12199.            Action: Reduce the number of segments by combining or creating 
  12200.            additional executable modules. 
  12201.  
  12202.  L1063     out of memory for debugging information 
  12203.            Explanation: LINK386 was given too many object files with debug 
  12204.            information, and ran out of space to store them. 
  12205.            Action: Reduce the number of object files that have debug 
  12206.            information. 
  12207.  
  12208.  L1064     out of memory - name heap exhausted 
  12209.            Explanation: The linker ran out of heap space; name = near or far. 
  12210.            Action: Reduce the number of background processes or install more 
  12211.            memory. 
  12212.  
  12213.  L1070     name: segment size exceeds 64K 
  12214.            Explanation: A single segment contains more than 64K of code or 
  12215.            data. This could be because you attempted to combine identically 
  12216.            named segments. 
  12217.            Action: Try compiling (or assembling) and linking using a larger 
  12218.            memory model or breaking up the named segment. 
  12219.  
  12220.  L1071     segment _TEXT larger than 65,520 bytes 
  12221.            Explanation: This error is likely to occur only in small-model C 
  12222.            programs, but it can occur when any program with a segment named 
  12223.            _TEXT is linked using the /DOSSEG option of the LINK386 command. 
  12224.            Small-model C programs must reserve code addresses 0 and 1; the 
  12225.            reserve is increased to 16 for alignment purposes. 
  12226.            Action: Make the program source code smaller, or change to a larger 
  12227.            memory model. 
  12228.  
  12229.  L1072     common area longer than 65,536 bytes 
  12230.            Explanation: The program has more than 64K of communal variables. 
  12231.            This error occurs only with programs produced by compilers that 
  12232.            support communal variables. 
  12233.            Action: Rewrite your program using fewer or smaller communal 
  12234.            variables. 
  12235.  
  12236.  L1073     file-segment limit exceeded 
  12237.            Explanation: There are more than 255 physical or file segments. 
  12238.            Action: Reduce the number of physical or file segments. You could 
  12239.            use the Combine Contiguous Data (/PACKD) option for combining data 
  12240.            segments or the Combine Contiguous Code (/PACKC) option for 
  12241.            combining code segments. 
  12242.  
  12243.  L1074     name: group larger than 64K 
  12244.            Explanation: A group contains segments that total more than 65,536 
  12245.            bytes. 
  12246.            Action: Reduce the number or size of segments or remove segments 
  12247.            from the group. 
  12248.  
  12249.  L1075     entry table larger than 65,535 bytes 
  12250.            Explanation: You have exceeded a linker table size limit because of 
  12251.            an excessive number of entry names. 
  12252.            Action: Reduce the number of names in the modules that you are 
  12253.            linking or create additional executable modules. 
  12254.  
  12255.  L1076     name: segment size exceeds numberM 
  12256.            Explanation: The named segment is larger than the specified size. 
  12257.            Action: Break the segment into smaller segments and try again. 
  12258.  
  12259.  L1077     common area longer than 4G-1 bytes 
  12260.            Explanation: The space for the C languages common area is too big. 
  12261.            Action: If the load module is an .EXE, consider putting some 
  12262.            routines in .DLL; otherwise, link without debugging information or 
  12263.            create additional executable modules. 
  12264.  
  12265.  L1080     cannot open list file 
  12266.            Explanation: The disk or a directory is full, or an invalid file 
  12267.            name was specified. 
  12268.            Action: Check that the file name specified is correct. Delete or 
  12269.            move files to make space and restart LINK386. 
  12270.  
  12271.  L1081     out of space for run file 
  12272.            Explanation: The disk on which the .EXE file is being written is 
  12273.            full. 
  12274.            Action: Delete or move files to make space and restart LINK386. 
  12275.  
  12276.  L1082     name: stub file not found 
  12277.            Explanation: The stub file specified in the module definition file 
  12278.            could not be found. 
  12279.            Action: Check that the correct path to the stub file has been 
  12280.            specified. 
  12281.  
  12282.  L1083     cannot open run file - reason 
  12283.            Explanation: The run file could not be opened for the stated reason. 
  12284.            Action: Correct the problem and restart LINK386. 
  12285.  
  12286.  L1088     out of space for list file 
  12287.            Explanation: The disk on which the listing file is being written is 
  12288.            full. 
  12289.            Action: Delete or move files to make space and restart LINK386. 
  12290.  
  12291.  L1089     filename: cannot open response file 
  12292.            Explanation: LINK386 cannot find the specified response file. This 
  12293.            usually indicates a typing error. 
  12294.            Action: Include the drive specifier or path, or both, for the 
  12295.            response file. 
  12296.  
  12297.  L1091     unexpected end-of-file on library 
  12298.            Explanation: The disk containing the library has probably been 
  12299.            removed or is corrupted. 
  12300.            Action: Replace the disk containing the library and restart LINK386. 
  12301.  
  12302.  L1092     cannot open module definition file 
  12303.            Explanation: The specified module definition file cannot be opened, 
  12304.            or an invalid file name was specified. 
  12305.            Action: Check that the specified file name is correct. Include the 
  12306.            drive specifier or path, or both, for the module definition file. 
  12307.  
  12308.  L1093     name: object not found 
  12309.            Explanation: LINK386 could not open the object module you specified. 
  12310.            Action: Specify full path name or directory in which object module 
  12311.            resides. 
  12312.  
  12313.  L1096     unexpected end-of-file 
  12314.            Explanation: LINK386 encountered an end-of-file character while 
  12315.            reading an input file AND expected more information. 
  12316.            Action: Check input files for errors and relink. 
  12317.  
  12318.  L1097     I/O error - string 
  12319.            Explanation: The linker encountered the I/O error shown while 
  12320.            reading from a file. 
  12321.            Action: Make sure the file is not corrupted or on a bad disk sector 
  12322.            and relink. 
  12323.  
  12324.  L1098     cannot open include file filename - reason 
  12325.            Explanation: LINK386 could not open the include file for the stated 
  12326.            reason. 
  12327.            Action: Correct the problem and restart LINK386. 
  12328.  
  12329.  
  12330. ΓòÉΓòÉΓòÉ 21.1.3. Fatal Error Messages (Part 3) 1100 - 1130 ΓòÉΓòÉΓòÉ
  12331.  
  12332.  L1100     stub .EXE file invalid 
  12333.            Explanation: The stub file specified in the module definition file 
  12334.            is not a valid .EXE file. 
  12335.            Action: Ensure that the stub file is an executable file. 
  12336.  
  12337.  L1101     invalid object module 
  12338.            Explanation: One of the object modules was incorrectly formed during 
  12339.            compilation or assembly. 
  12340.            Action: Recompile or reassemble your source code. If the error 
  12341.            persists, contact your supplier. 
  12342.  
  12343.  L1102     unexpected end-of-file 
  12344.            Explanation: An invalid format for a library was found. 
  12345.            Action: Restore the library file from your backup disk and restart 
  12346.            LINK386. If this does not work, rebuild your library or contact your 
  12347.            supplier. 
  12348.  
  12349.  L1103     name: attempt to access data outside segment bounds 
  12350.            Explanation: A data record in an object module specified data 
  12351.            extending beyond the end of a segment. This is a translator error. 
  12352.            Action: Note which translator (compiler or assembler) produced the 
  12353.            incorrect object module and the circumstances, and contact your 
  12354.            supplier. 
  12355.  
  12356.  L1104     filename: not valid library 
  12357.            Explanation: The specified file is not a valid library file. This 
  12358.            error causes LINK386 to stop running. 
  12359.            Action: Ensure that the named file is a valid library file and 
  12360.            restart LINK386. If this does not work, rebuild your library or 
  12361.            contact your supplier. 
  12362.  
  12363.  L1105     invalid object due to aborted incremental compile 
  12364.            Explanation: An object file from an aborted compile is trying to be 
  12365.            linked. 
  12366.            Action: Recompile the source that produced the bad compile and then 
  12367.            relink. 
  12368.  
  12369.  L1106     unknown COMDAT allocation type for name; record ignored 
  12370.            Explanation: The COMDAT (record in .OBJ) allocation type for the 
  12371.            named COMDAT was not valid. 
  12372.            Action: Recompile or reassemble .OBJ and try again. If that does not 
  12373.            work, contact your supplier. 
  12374.  
  12375.  L1107     unknown COMDAT selection type for name; record ignored 
  12376.            Explanation: The COMDAT (record in .OBJ) selection type for the 
  12377.            named COMDAT is not valid. 
  12378.            Action: Recompile or reassemble .OBJ and try again. If that does not 
  12379.            work, contact your supplier. 
  12380.  
  12381.  L1108     invalid format of debugging information 
  12382.            Explanation: An error was detected in a segment that contains debug 
  12383.            information. 
  12384.            Action: Recompile or reassemble and try again. If that does not 
  12385.            work, try relinking without using the /DE or /CO options. 
  12386.  
  12387.  L1113     unresolved COMDEF; internal error 
  12388.            Explanation: LINK386 encountered a COMDEF (record in .OBJ) in pass 2 
  12389.            that was not defined in pass 1. 
  12390.            Action: Recompile or reassemble and try again. If that does not 
  12391.            work, contact your supplier. 
  12392.  
  12393.  L1114     unresolved COMDAT name: internal error 
  12394.            Explanation: LINK386 found specified COMDAT in pass 2 that does not 
  12395.            correspond to COMDATs found in pass 1. 
  12396.            Action: Recompile or reassemble and try again. If that does not 
  12397.            work, contact your supplier. 
  12398.  
  12399.  L1117     unallocated COMDAT name; internal error 
  12400.            Explanation: The linker encountered COMDAT in pass 2 for which space 
  12401.            was not allocated during pass 1. 
  12402.            Action: Recompile or reassemble and try again. If that does not 
  12403.            work, contact your supplier. 
  12404.  
  12405.  L1121     name: group larger than 4G-1 bytes 
  12406.            Explanation: The group indicated is too large. 
  12407.            Action: Recompile or reassemble and try again. Remove segments from 
  12408.            the group or create additional executables if necessary. 
  12409.  
  12410.  L1123     name: segment defined both 16- and 32-bit 
  12411.            Explanation: The segment named was defined as both 16-bit and 
  12412.            32-bit. 
  12413.            Action: Create two segments (one for 16-bit, one for 32-bit), or 
  12414.            make sure the segment is defined one way and relink. 
  12415.  
  12416.  L1126     conflicting IOPL-parameter-words value 
  12417.            Explanation: The IOPL parameter words in the .DEF file does not 
  12418.            exactly match those in the corresponding EXPDEF object record. 
  12419.            Action: Make sure .DEF file coincides with that defined in .OBJ. 
  12420.            Relink. 
  12421.  
  12422.  L1128     too many nested include files in module-definition file 
  12423.            Explanation: The .DEF file exceeded a nesting level. 
  12424.            Action: Combine some nestings into one .DEF file and try again. 
  12425.  
  12426.  L1129     missing or bad include file name 
  12427.            Explanation: LINK386 could not find a file included by .DEF file. 
  12428.            Action: Make sure the file exists and can be located and that any 
  12429.            path is specified correctly. Try again. 
  12430.  
  12431.  L1130     internal fix-up applied to undefined area at offset in object number 
  12432.            Explanation: LINK386 attempted to apply an internal fix-up beyond 
  12433.            the defined limits of the object. 
  12434.            Action: This is probably a compiler or assembler error. Revise the 
  12435.            source file and re-create the object file. If that does not work, 
  12436.            contact your supplier. 
  12437.  
  12438.  
  12439. ΓòÉΓòÉΓòÉ 21.1.4. Fatal Error Messages (Part 4) 1200 - 1218 ΓòÉΓòÉΓòÉ
  12440.  
  12441.  L1200     out of memory for page range information 
  12442.            Explanation: The total size of all page range information is greater 
  12443.            than the internal limit in LINK386. 
  12444.            Action: Reduce the size of the executable, consider using dynamic 
  12445.            link libraries to split the program into smaller modules. 
  12446.  
  12447.  L1201     out of memory for contribution information 
  12448.            Explanation: The total size of the contribution information is 
  12449.            greater than the internal limit in LINK386. 
  12450.            Action: Reduce the size of the executable, consider using dynamic 
  12451.            link libraries to split the program into smaller modules. 
  12452.  
  12453.  L1202     out of memory for executable string information 
  12454.            Explanation: The total size of all executable string information is 
  12455.            greater than the internal limit in LINK386. 
  12456.            Action: Reduce the size of the executable, consider using dynamic 
  12457.            link libraries to split the program into smaller modules. 
  12458.  
  12459.  L1203     out of memory for identifier mangler DLL information 
  12460.            Explanation: The total size of all identifier mangler DLL 
  12461.            information is greater than the internal limit in LINK386. 
  12462.            Action: Reduce the size of the executable, consider using dynamic 
  12463.            link libraries to split the program into smaller modules. 
  12464.  
  12465.  L1204     out of memory for object page table information 
  12466.            Explanation: The total size of the object page table information is 
  12467.            greater than the internal limit in LINK386. 
  12468.            Action: Reduce the size of the executable, consider using dynamic 
  12469.            link libraries to split the program into smaller modules. 
  12470.  
  12471.  L1205     out of memory for fixup record information 
  12472.            Explanation: The total size of all fixup record information is 
  12473.            greater than the internal limit in LINK386. 
  12474.            Action: Reduce the size of the executable, consider using dynamic 
  12475.            link libraries to split the program into smaller modules. 
  12476.  
  12477.  L1206     out of memory for fix up page table information 
  12478.            Explanation: The total size of all fix up page table information is 
  12479.            greater than the internal limit in LINK386. 
  12480.            Action: Reduce the size of the executable, consider using dynamic 
  12481.            link libraries to split the program into smaller modules. 
  12482.  
  12483.  L1207     out of memory for import module information 
  12484.            Explanation: The total size of the import module information is 
  12485.            greater than the internal limit in LINK386. 
  12486.            Action: Reduce the size of the executable, consider using dynamic 
  12487.            link libraries to split the program into smaller modules. 
  12488.  
  12489.  L1208     out of memory for page directory information 
  12490.            Explanation: The total size of the page directory is greater than 
  12491.            the internal limit in LINK386. 
  12492.            Action: Reduce the size of the executable, consider using dynamic 
  12493.            link libraries to split the program into smaller modules. 
  12494.  
  12495.  L1209     out of memory for object page directory information 
  12496.            Explanation: The total size of the object page director is greater 
  12497.            than the internal limit in LINK386. 
  12498.            Action: Reduce the size of the executable, consider using dynamic 
  12499.            link libraries to split the program into smaller modules. 
  12500.  
  12501.  L1210     out of memory for module reference table information 
  12502.            Explanation: The total size of the module reference table is greater 
  12503.            than the internal limit in LINK386. 
  12504.            Action: Reduce the size of the executable, consider using dynamic 
  12505.            link libraries to split the program into smaller modules. 
  12506.  
  12507.  L1211     out of memory for chained relocation hash buckets 
  12508.            Explanation: The total size of the relocation bucket is greater than 
  12509.            the internal limit in LINK386. 
  12510.            Action: Reduce the size of the executable, consider using dynamic 
  12511.            link libraries to split the program into smaller modules. 
  12512.  
  12513.  L1212     out of memory for chained relocation hash tables 
  12514.            Explanation: The total size of the relocation hash tables is greater 
  12515.            than the internal limit in LINK386. 
  12516.            Action: Reduce the size of the executable, consider using dynamic 
  12517.            link libraries to split the program into smaller modules. 
  12518.  
  12519.  L1213     out of memory for entry point information 
  12520.            Explanation: The total size of the entry point information is 
  12521.            greater than the internal limit in LINK386. 
  12522.            Action: Reduce the size of the executable, consider using dynamic 
  12523.            link libraries to split the program into smaller modules. 
  12524.  
  12525.  L1214     out of memory for entry table area 
  12526.            Explanation: The total size of the entry table are is greater than 
  12527.            the internal limit in LINK386. 
  12528.            Action: Reduce the size of the executable, consider using dynamic 
  12529.            link libraries to split the program into smaller modules. 
  12530.  
  12531.  L1215     out of memory for imported names information 
  12532.             Explanation: The total size of the imported names information is 
  12533.            greater than the internal limit in LINK386. 
  12534.            Action: Reduce the size of the executable, consider using dynamic 
  12535.            link libraries to split the program into smaller modules. 
  12536.  
  12537.  L1216     out of memory for comdat iterated data 
  12538.            Explanation: The total size of all comdat iterated is greater than 
  12539.            the internal limit in LINK386. 
  12540.            Action: Reduce the size of the executable, consider using dynamic 
  12541.            link libraries to split the program into smaller modules. 
  12542.  
  12543.  L1217     out of memory for back patch information 
  12544.            Explanation: The total size of the back patch information is greater 
  12545.            than the internal limit in LINK386. 
  12546.            Action: Reduce the size of the executable, consider using dynamic 
  12547.            link libraries to split the program into smaller modules. 
  12548.  
  12549.  L1218     out of memory for property list tables 
  12550.            Explanation: The total size of the property list table is greater 
  12551.            than the internal limit in LINK386. 
  12552.            Action: Reduce the size of the executable, consider using dynamic 
  12553.            link libraries to split the program into smaller modules. 
  12554.  
  12555.  
  12556. ΓòÉΓòÉΓòÉ 21.1.5. Nonfatal Error Messages 2000 - 2063 ΓòÉΓòÉΓòÉ
  12557.  
  12558.  L2000     imported starting address 
  12559.            Explanation:  A MODEND, or starting address record, referred to an 
  12560.            imported name. Imported program-starting addresses are not 
  12561.            supported. 
  12562.            Action: The starting address record must refer to a non imported 
  12563.            name. Edit the source file and recompile or reassemble. 
  12564.  
  12565.  L2002     fix-up overflow at location in segment name 
  12566.            Explanation: A fix up overflow occurred near location, in the named 
  12567.            segment. See Conditions That Can Cause LINK386 Error 2002. 
  12568.            Action: Revise the source file and re-create the object file. If 
  12569.            that does not work, contact your supplier. 
  12570.  
  12571.  L2003     inter segment self-relative fix-up at location in segment name 
  12572.            Explanation: LINK386 detected an inter segment self-relative fix-up. 
  12573.            A self-relative fix-up cannot be in another segment. This is 
  12574.            probably caused by a near reference to procedure located in another 
  12575.            segment. 
  12576.            Action: Revise the source file and re-create the object file. If 
  12577.            that does not work, contact your supplier. 
  12578.  
  12579.  L2005     fix-up type unsupported at location in segment name 
  12580.            Explanation:  LINK386 detected an unsupported fix up type. This is 
  12581.            probably a compiler or assembler error. 
  12582.            Action: Revise the source file and re-create the object file. If 
  12583.            that does not work, contact your supplier. 
  12584.  
  12585.  L2010     too many fix-ups in LIDATA record 
  12586.            Explanation:  There are more fix ups applying to a LIDATA record 
  12587.            than will fit into the LINK386's 1024 byte buffer. The buffer is 
  12588.            divided between the data in the LIDATA record itself and the 
  12589.            run-time relocation items.  These are 8 bytes each, so the maximum 
  12590.            varies from 0 to 128.  This is probably a compiler error. 
  12591.            Action: Revise the source file and re-create the object file. If 
  12592.            that does not work, contact your supplier. 
  12593.  
  12594.  L2011     name: NEAR/HUGE conflict 
  12595.            Explanation:  There are conflicting NEAR and HUGE attributes for a 
  12596.            communal variable. This error can occur only with programs produced 
  12597.            by compilers that support communal variables. 
  12598.            Action: Specify only one of these attributes. 
  12599.  
  12600.  L2012     name: array-element size mismatch 
  12601.            Explanation: A far communal array has been declared with two or more 
  12602.            different array-element sizes (for example, an array declared once 
  12603.            as an array of characters and once as an array of real numbers). 
  12604.            This error occurs only when using compilers that support far 
  12605.            communal arrays. 
  12606.            Action: Match the definitions and re-create the object module or 
  12607.            modules. 
  12608.  
  12609.  L2013     LIDATA record too large 
  12610.            Explanation: A LIDATA record in an object module contains more than 
  12611.            512 bytes of data. It is likely that one of your assembler modules 
  12612.            contains a complex structure definition or a series of deeply-nested 
  12613.            DUP operators. (LIDATA is a DOS term.) 
  12614.            Example: The following structure definition causes this error: 
  12615.  
  12616.                       alpha   DB     10DUP(11 DUP(12 DUP(13 DUP(...))))
  12617.  
  12618.            Action: Simplify the structure definition and reassemble the module. 
  12619.  
  12620.  L2022     name (alias internalname) : export undefined 
  12621.            Explanation: A name has been directed to be exported but is not 
  12622.            defined anywhere. 
  12623.            Action: Edit the source file and define the export. 
  12624.  
  12625.  L2023     name (alias internalname) : export imported 
  12626.            Explanation: An imported name has been directed to be exported. 
  12627.            Items that are not in the source file itself cannot be exported. You 
  12628.            cannot export this imported name. 
  12629.            Action: Edit the source file to not export the imported name. 
  12630.  
  12631.  L2024     name: special symbol already defined 
  12632.            Explanation: Your program defined a symbol name that LINK386 already 
  12633.            used for one of its low-level symbols.  For example, the linker 
  12634.            generates special names for overlay support. 
  12635.            Action: Edit the source file and choose another name for the symbol. 
  12636.  
  12637.  L2025     name: symbol defined more than once 
  12638.            Explanation: A symbol has been defined more than once in the object 
  12639.            file. 
  12640.            Action: Edit the source file, removing the extra symbol definition. 
  12641.  
  12642.  L2026     entry ordinal number, name name : multiple definitions for same 
  12643.            ordinal 
  12644.            Explanation: More than one entry point name has been assigned to the 
  12645.            same ordinal in the module definition file. 
  12646.            Action: Edit the module definition file to correct the usage of the 
  12647.            ordinal. 
  12648.  
  12649.  L2027     number: ordinal too large for export 
  12650.            Explanation: You tried to export more than 3072 names or indicated 
  12651.            too large of an ordinal. 
  12652.            Action: Edit the source file or define smaller ordinals in the 
  12653.            module definition file. 
  12654.  
  12655.  L2029     string: unresolved external 
  12656.            Explanation: A symbol declared to be external in one or more modules 
  12657.            was not found among the given objects and libraries. 
  12658.            Action: Supply files that will resolve these external calls. 
  12659.  
  12660.  L2030     starting address not code (use class 'CODE') 
  12661.            Explanation: You specified a starting address to LINK386 that is not 
  12662.            within a segment of type 'CODE.' 
  12663.            Action: Reclassify the segment to CODE, or correct the starting 
  12664.            point. 
  12665.  
  12666.  L2044     string: symbol multiple defines, use /NOE 
  12667.            Explanation: The symbol shown was defined more than once, perhaps 
  12668.            for different things. 
  12669.            Action: Recompile with the /NOEXDICTIONARY option. 
  12670.  
  12671.  L2047     IOPL attribute conflict - segment: name in group:name 
  12672.            Explanation: The segment indicated within the group shown has 
  12673.            different IOPL attributes from the rest of the segments in the 
  12674.            group. 
  12675.            Action: Remove the segment from the group or make sure all segments 
  12676.            have the same IOPL attributes. Relink. 
  12677.  
  12678.  L2050     use16/use32 attribute conflict - segment:name in group:name 
  12679.            Explanation: The segment indicated within the group shown has a 
  12680.            different USE16/USE32 attribute from the rest of the segments in the 
  12681.            group. 
  12682.            Action: Remove the segment from the group or make sure all segments 
  12683.            have the same USE16/USE32 attribute. 
  12684.  
  12685.  L2052     name: unresolved external - possible calling convention mismatch 
  12686.            Explanation: LINK386 encountered an undefined external, which could 
  12687.            be a fast-call/C-call mismatch. 
  12688.            Action: Make sure the external is defined and called the same way 
  12689.            (for example, all C-calls). 
  12690.  
  12691.  L2053     call gates are NOT allowed in 32-bit object if its size exceeds 64K 
  12692.            - memory object number number 
  12693.            Explanation: The memory object indicated is larger than 64K and uses 
  12694.            call gates. 
  12695.            Action: Remove the call gates or break the object into smaller 
  12696.            portions.  Relink. 
  12697.  
  12698.  L2054     data for invalid page in segment name 
  12699.            Explanation: LINK386 encountered data past the defined end of 
  12700.            initialized data in the segment indicated. 
  12701.            Action:  The .OBJ is probably corrupted. Recompile or reassemble and 
  12702.            try again.  If that does not work, contact your supplier. 
  12703.  
  12704.  L2055     fix-up for invalid page at location in segment name 
  12705.            Explanation: LINK386 encountered a fixup past the defined end of 
  12706.            initialized data in the segment indicated. 
  12707.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  12708.            try again.  If that does not work, contact your 
  12709.  
  12710.  L2056     object type conflict - segment: name in group: name 
  12711.            Explanation: The segment indicated within the group shown has a 
  12712.            different TYPE attribute from the rest of the segments in the group. 
  12713.            Action: Remove the segment from the group or make sure all segments 
  12714.            have the same TYPE attribute. 
  12715.  
  12716.  L2057     duplicate of name with different size found; record ignored 
  12717.            Explanation: LINK386 encountered two COMDAT records with the 
  12718.            selection type "SAME SIZE." The records have the same name but have 
  12719.            different sizes. 
  12720.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  12721.            try again.  If that does not work, contact your 
  12722.  
  12723.  L2058     different duplicate of name found; record ignored 
  12724.            Explanation: LINK386 encountered two COMDAT records with the 
  12725.            selection type "EXACT." The records have the same name but have 
  12726.            different sizes. 
  12727.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  12728.            try again.  If that does not work, contact your 
  12729.  
  12730.  L2059     size of the data block associated with name exceeds 4G 
  12731.            Explanation: LINK386 encountered a continuation COMDAT record whose 
  12732.            additional size made the communal data too large. 
  12733.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  12734.            try again.  If that does not work, contact your 
  12735.  
  12736.  L2061     no space for the data block associated with record name inside the 
  12737.            segment name 
  12738.            Explanation: While being allocated space for a COMDAT record inside 
  12739.            the segment indicated, the segment grew larger than 64K. 
  12740.            Action: Make the segment smaller or move communal data into a 
  12741.            different segment. 
  12742.  
  12743.  L2062     continuation of COMDAT name has conflicting attributes; record 
  12744.            ignored 
  12745.            Explanation: While concatenating the COMDAT record indicated, 
  12746.            LINK386 found attributes that differ from those defined in the 
  12747.            initial COMDAT record. 
  12748.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  12749.            try again.  If that does not work, contact your 
  12750.  
  12751.  L2063     name allocated in undefined segment 
  12752.            Explanation: LINK386 encountered a COMDAT record in an undefined 
  12753.            explicit allocation segment. 
  12754.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  12755.            try again.  If that does not work, contact your supplier. 
  12756.  
  12757.  
  12758. ΓòÉΓòÉΓòÉ 21.1.6. Warning Error Messages 4000 - 4087 ΓòÉΓòÉΓòÉ
  12759.  
  12760.  L4000     seg disp. included near location in segment name 
  12761.            Explanation: This error is caused by using the LINK386 Warning of 
  12762.            Fix-ups (/W) option. 
  12763.            Action: The segment name and the location offset is displayed. 
  12764.  
  12765.  L4001     frame-relative fix-up, frame ignored near location in segment name 
  12766.            Explanation: A fix up occurred with a frame segment different from 
  12767.            the target segment where either the frame or the target segment is 
  12768.            not absolute. Such a fix-up is meaningless in the OS/2 environment, 
  12769.            so the target segment is assumed for the frame segment. This error 
  12770.            sometimes occurs if a 32-bit data item is referenced as if it were 
  12771.            in a 16-bit segment or a 16-bit segment referenced as if it were in 
  12772.            a 32-bit segment. 
  12773.            Action: Check that this is acceptable. 
  12774.  
  12775.  L4002     frame-relative absolute fix-up near location in segment name 
  12776.            Explanation: A fix up occurred with a frame segment different from 
  12777.            the target segment where both frame and target segments are 
  12778.            absolute. This fix up is processed using base-offset arithmetic, but 
  12779.            the warning is issued because the fix up might not be valid in the 
  12780.            OS/2 environment. This error sometimes occurs if a 32-bit data item 
  12781.            is referenced as if it were in a 16-bit segment or a 16-bit segment 
  12782.            referenced as if it were in a 32-bit segment. 
  12783.            Action: Check that this is acceptable. 
  12784.  
  12785.  L4003     intersegment self-relative fix up at location in segment name 
  12786.            Explanation: LINK386 found an intersegment self-relative fix-up at 
  12787.            the specified location. This might cause a problem with the 
  12788.            executable file. 
  12789.            Action: The error might have been caused by the way the program was 
  12790.            written or when it was compiled or assembled. 
  12791.  
  12792.  L4004     possible fix-up overflow at location in segment name 
  12793.            Explanation: LINK386 found a possible fix-up overflow at the 
  12794.            specified location. This might cause a problem with the executable 
  12795.            file. 
  12796.            Action: The error might have been caused by the way the program was 
  12797.            written or when it was compiled or assembled. 
  12798.  
  12799.  L4005     32-bit fix-up in 16-bit record ignored at location in segment name 
  12800.            Explanation: LINK386 encountered a 32-bit fix-up in a 16-bit record 
  12801.            at the specified location. This might cause a problem with the 
  12802.            executable file. 
  12803.            Action: The error might have been caused by the way the program was 
  12804.            written or when it was compiled or assembled. 
  12805.  
  12806.  L4006     illegal 16-bit flat-relative offset fix-up at location in object 
  12807.            name 
  12808.            Explanation: LINK386 encountered an illegal 16-bit flat relative 
  12809.            offset fix-up at the specified location. This might cause a problem 
  12810.            with the executable file. This error sometimes occurs if a 32-bit 
  12811.            data item is referenced as if it were in a 16-bit segment or a 
  12812.            16-bit segment referenced as if it were in a 32-bit segment. 
  12813.            Action: The error might have been caused by the way the program was 
  12814.            written or when it was compiled or assembled. 
  12815.  
  12816.  L4007     illegal 16-bit flat-relative pointer fix-up at location in object 
  12817.            name 
  12818.            Explanation: LINK386 encountered an illegal 16-bit flat-relative 
  12819.            pointer fix-up at the specified location. This error sometimes 
  12820.            occurs if a 32-bit data item is referenced as if it were in a 16-bit 
  12821.            segment or a 16-bit segment referenced as if it were in a 32-bit 
  12822.            segment. 
  12823.            Action: The error might have been caused by the way the program was 
  12824.            written or when it was compiled or assembled. 
  12825.  
  12826.  L4008     aliased fix-up to non-alias object near location in object name 
  12827.            Explanation: LINK386 encountered an aliased fix-up to a non-alias 
  12828.            object at the specified location. This error sometimes occurs if a 
  12829.            32-bit data item is referenced as if it were in a 16-bit segment or 
  12830.            a 16-bit segment referenced as if it were in a 32-bit segment. 
  12831.            Action: The error might have been caused by the way the program was 
  12832.            written or when it was compiled or assembled. 
  12833.  
  12834.  L4009     illegal target of flat-relative fix-up ignored at number in segment 
  12835.            name 
  12836.            Explanation: LINK386 encountered an illegal flat-relative fix-up at 
  12837.            the specified location. 
  12838.            Action: The error might have been caused by the way the program was 
  12839.            written or when it was compiled or assembled. 
  12840.  
  12841.  L4010     invalid alignment specification; assuming number 
  12842.            Explanation: The number following the /ALIGNMENT option is not a 
  12843.            power of 2, or is not in numerical form. The maximum alignment value 
  12844.            is 4096. 
  12845.            Action: If the default alignment of 512 is not acceptable, restart 
  12846.            LINK386 using a valid number. 
  12847.  
  12848.  L4017     name: unrecognized option name; option ignored 
  12849.            Explanation: The option specified is not valid for LINK386. 
  12850.            Action: Specify a valid option or remove the unrecognized option and 
  12851.            relink. 
  12852.  
  12853.  L4018     missing or bad application type; option name ignored 
  12854.            Explanation: The /PMTYPE option was specified without an application 
  12855.            type or with an invalid application type. 
  12856.            Action: Relink with an application type of PM, VIO, or NOVIO. 
  12857.  
  12858.  L4020     name: code segment size exceeds 65,500 
  12859.            Explanation: The code segment indicated is larger than 65,500 bytes 
  12860.            and might not be reliable. 
  12861.            Action: Break the segment into smaller segments and try again. 
  12862.  
  12863.  L4021     no stack segment 
  12864.            Explanation: The program does not contain a stack segment defined 
  12865.            with the STACK combine type. Normally, every .EXE program should 
  12866.            have a stack segment with the combine type specified as STACK. 
  12867.            Action: You can ignore this message if you have a specific reason 
  12868.            for not defining a stack or for defining one without the STACK 
  12869.            combine type. 
  12870.  
  12871.  L4022     name1, name2: groups overlap 
  12872.            Explanation: Two groups are defined in such a way that one starts in 
  12873.            the middle of another. This can occur if you defined segments in a 
  12874.            module definition file or assembly file and did not correctly order 
  12875.            the segments by class. 
  12876.            Action: Edit the source file and reorder the segments in the group. 
  12877.  
  12878.  L4023     name (alias): export internal name conflict 
  12879.            Explanation: An exported name, or its associated internal name, 
  12880.            conflicts with an already defined public symbol. 
  12881.            Action: Edit the source file using new names. 
  12882.  
  12883.  L4024     name: multiple definitions for export name 
  12884.            Explanation: The module named has been exported more than once with 
  12885.            different internal names. All internal names except the first one 
  12886.            are ignored. 
  12887.            Action: Edit the source file using new names. 
  12888.  
  12889.  L4025     modname impname (intname): import internal name conflict 
  12890.            Explanation: An imported name, or its associated internal name, is 
  12891.            also defined as an exported name. The import name is ignored. The 
  12892.            conflict could come from a definition in either the module 
  12893.            definition file or an object file. 
  12894.            Action: Edit the source file or module definition file using new 
  12895.            names. 
  12896.  
  12897.  L4026     modname impname (intname): self-imported 
  12898.            Explanation: The module definition file directed that a name be 
  12899.            imported from the module being produced. 
  12900.            Action: Edit the module definition file. 
  12901.  
  12902.  L4027     name: multiple definitions for import internal name 
  12903.            Explanation: An imported name, or its associated internal name, is 
  12904.            imported more than once. The imported name is ignored after the 
  12905.            first mention. 
  12906.            Action: Check that the name has been defined correctly. 
  12907.  
  12908.  L4028     name: segment already defined 
  12909.            Explanation: A segment is defined more than once with the same name 
  12910.            in the module definition file. Segments must have unique names for 
  12911.            LINK386. All definitions with the same name are ignored after the 
  12912.            first mention. 
  12913.            Action: Check that the segment has been defined correctly. 
  12914.  
  12915.  L4029     name: DGROUP segment converted to type data 
  12916.            Explanation: A segment that is a member of DGROUP has been defined 
  12917.            as type CODE in a module definition file or object file. This 
  12918.            probably happened because a CLASS keyword in a SEGMENTS statement 
  12919.            was not given. 
  12920.            Action: Check the module definition file syntax. 
  12921.  
  12922.  L4030     name: segment attributes changed to conform with automatic data 
  12923.            segment 
  12924.            Explanation: The segment named is defined in DGROUP, but the shared 
  12925.            attribute is in conflict with the instance attribute. 
  12926.            Example:  The shared attribute is NONSHARED and the instance 
  12927.            attribute is SINGLE, or the shared attribute is SHARED and the 
  12928.            instance attribute is MULTIPLE. The bad segment is forced to have 
  12929.            the right shared attribute and the link continues. 
  12930.            Action: Check that the LINK386 action is acceptable. 
  12931.  
  12932.  L4031     name: segment declared in more than one group 
  12933.            Explanation: A segment is declared to be a member of two different 
  12934.            groups. 
  12935.            Action: Correct the source file and re-create the object files. 
  12936.  
  12937.  L4032     name: code-group size exceeds 65500 bytes 
  12938.            Explanation: The code group indicated is larger than 65500 bytes and 
  12939.            therefore might not be reliable. 
  12940.            Action: Break the group into smaller groups or remove one or more 
  12941.            segments and try again. 
  12942.  
  12943.  L4036     no automatic data segment 
  12944.            Explanation: The program or dynamic link library did not define a 
  12945.            group named DGROUP. This is recognized by LINK386 as the automatic 
  12946.            data segment. 
  12947.            Action: Edit the source file. 
  12948.  
  12949.  L4038     program has no starting address 
  12950.            Explanation: The program did not contain a starting address. 
  12951.            Physical Device Drivers do not have program starting addresses, so 
  12952.            this error can be ignored when linking Physical Device Drives. 
  12953.            Action: Recompile the program and try again. 
  12954.  
  12955.  L4044     CODE segment :name in DATA group:name; assuming DATA 
  12956.            Explanation: A CODE statement in a module definition file was used 
  12957.            to define default attributes for a DATA segment. 
  12958.            Action: Define a CODE statement and relink. 
  12959.  
  12960.  L4045     name of output file is name 
  12961.            Explanation: A dynamic link library file was created without 
  12962.            specifying an extension.  In such cases, LINK386 supplies an 
  12963.            extension of .DLL.  This is to warn you in case you expected an .EXE 
  12964.            file to be generated 
  12965.            Action: No action. 
  12966.  
  12967.  L4046     DATA segment: name in CODE group: name; assuming CODE 
  12968.            Explanation: A DATA statement in a module definition file was used 
  12969.            to define default attributes for a CODE segment. 
  12970.            Action: Define a DATA statement and relink. 
  12971.  
  12972.  L4048     ignoring non-zero heap size 
  12973.            Explanation: The module definition file does not contain a HEAPSIZE 
  12974.            statement. 
  12975.            Action: Edit the file and relink. 
  12976.  
  12977.  L4049     ignoring non-zero stack size 
  12978.            Explanation: The module definition file does not contain a STACKSIZE 
  12979.            statement. 
  12980.            Action: Edit the file and relink. 
  12981.  
  12982.  L4051     filename: cannot find library 
  12983.            Explanation: LINK386 could not find the specified library file. 
  12984.            Action: Enter a new file name, a new path specification, or both. 
  12985.  
  12986.  L4053     VM.TMP :illegal file name; ignored 
  12987.            Explanation: VM.TMP cannot be used for an object file name. 
  12988.            Action: Rename the file and restart LINK386. 
  12989.  
  12990.  L4054     filename: cannot find file 
  12991.            Explanation: LINK386 could not find the specified file. 
  12992.            Action: Enter a new file name, a new path specification, or both. 
  12993.  
  12994.  L4067     changing default resolution for weak external name from oldname to 
  12995.            newname 
  12996.            Explanation: LINK386 encountered a redefinition of a default 
  12997.            resolution and is changing it to the value indicated. 
  12998.            Action: If the change is OK, no action is required; otherwise, fix 
  12999.            the module definition file and try again. 
  13000.  
  13001.  L4068     ignoring stack size greater than 64K 
  13002.            Explanation: LINK386 encountered a stack greater than 64K or zero 
  13003.            and is assuming a stack size of 65,534. 
  13004.            Action: Edit the file and relink. 
  13005.  
  13006.  L4069     filename truncated to name 
  13007.            Explanation: LINK386 encountered a file name greater than 256 bytes 
  13008.            (including terminating null) and truncated it to the size indicated. 
  13009.            Action: Edit the file and relink. 
  13010.  
  13011.  L4071     application type not specified; assuming name 
  13012.            Explanation: An application type of WINDOWAPI, WINDOWCOMPAT, 
  13013.            NOTWINDOWCOMPAT, or PRIVATE was not specified. LINK386 is assuming 
  13014.            the application type indicated. 
  13015.            Action: Edit the file and relink. 
  13016.  
  13017.  L4072     changing application type from oldname to newname 
  13018.            Explanation: The application type specified with /PMTYPE is 
  13019.            different from that in .DEF file. LINK386 is using the application 
  13020.            type indicated. 
  13021.            Action: Edit the file and relink. 
  13022.  
  13023.  L4073     name: 32-bit aliased data segment size exceeds 64K 
  13024.            Explanation: The segment indicated is greater than 64K in length and 
  13025.            is a 32-bit aliased data segment 
  13026.            Action: If this is expected, do nothing; if not, break into smaller 
  13027.            segments. 
  13028.  
  13029.  L4074     attribute conflict for segment name; ignoring attribute type 
  13030.            Explanation: The segment indicated for the .DEF file is defined with 
  13031.            conflicting characteristics. LINK386 is ignoring the attribute 
  13032.            indicated. 
  13033.            Action: Edit the file and relink. 
  13034.  
  13035.  L4075     object type conflict - assuming name 
  13036.            Explanation: The .DEF files specified conflicting attributes for an 
  13037.            object; only one of the following attributes are allowed: RESIDENT, 
  13038.            NONPERMANENT, PERMANENT, CONTIGUOUS, or DYNAMIC. LINK386 is assuming 
  13039.            the attribute indicated. 
  13040.            Action: Edit the file and relink. 
  13041.  
  13042.  L4077     symbol name not defined; ordered allocation ignored 
  13043.            Explanation: While doing ordered allocation of COMDAT records, 
  13044.            LINK386 encountered an undefined COMDAT record; ordered allocation 
  13045.            is determined from the .DEF file. 
  13046.            Action: Edit the file and relink. 
  13047.  
  13048.  L4079     symbol name already defined for ordered allocation; duplicate 
  13049.            ignored 
  13050.            Explanation: While processing ORDER list in .DEF file, LINK386 
  13051.            encountered a COMDAT record already defined for ordered allocation. 
  13052.            Action: Edit the file and relink. 
  13053.  
  13054.  L4080     changing substitute name for alias name from name to name 
  13055.            Explanation: LINK386 encountered an alias redefiniton and is 
  13056.            changing it to the values indicated. 
  13057.            Action: If this is OK, no action is required. Otherwise, edit the 
  13058.            file and relink. 
  13059.  
  13060.  L4082     name ignored for module with 16-bit starting address 
  13061.            Explanation: LINK386 encountered a DLL module with a 16-bit entry 
  13062.            point requesting termination. Only modules with 32-bit entry points 
  13063.            can specify DLL termination. 
  13064.            Action: Remove the termination request from the module definition 
  13065.            file. 
  13066.  
  13067.  L4083     invalid base address specification; assuming number 
  13068.            Explanation: The base address specified with the /BASE option or in 
  13069.            the module definition file is illegal, and LINK386 is assuming the 
  13070.            given value. 
  13071.            Action: Change the base address if necessary; otherwise, ignore the 
  13072.            message. 
  13073.  
  13074.  L4084     module name truncated to string 
  13075.            Explanation: The module name was truncated to the number of 
  13076.            characters indicated. 
  13077.            Action: If this action is satisfactory, no action is required. 
  13078.            Otherwise, edit the module definition file and shorten the name. 
  13079.  
  13080.  L4085     name (alias alias name): forwarder entry created for imported export 
  13081.            Explanation: LINK386 created a forwarder entry within the entry 
  13082.            table for the named export. 
  13083.            Action: If this action is satisfactory, no action is required. 
  13084.  
  13085.  L4087     internal fix-up applied to uninitialized area at offset in object 
  13086.            number 
  13087.            Explanation: LINK386 attempted to apply an internal fix-up beyond 
  13088.            the initialize limits of the object. 
  13089.            Action: If this is acceptable, no action is required. If the problem 
  13090.            continues, you might want to disable based addressing. 
  13091.  
  13092.  L4090     cannot load identifier manipulation DLL name 
  13093.            Explanation:  LINK386 detected an error while trying to load an 
  13094.            identifier manipulator dynamic link library.  This DLL was specified 
  13095.            in an object file, and is used by LINK386 to demangle a compiler 
  13096.            generated mangled name into a function prototype when printing an 
  13097.            error message.  Error messages will not be demangled for this object 
  13098.            file. 
  13099.            Action:  Make sure the appropriate identifier manipulator DLL is in 
  13100.            the LIBPATH. 
  13101.  
  13102.  L4091     cannot locate procedure in identifier manipulation DLL name 
  13103.            Explanation: LINK386 detected an error while trying to load a 
  13104.            procedure from an identifier manipulator dynamic link library.  This 
  13105.            DLL was specified in an object file, and is used by LINK386 to 
  13106.            demangle a compiler generated mangled name into a function prototype 
  13107.            when printing an error message.  Error messages will not be 
  13108.            demangled for this object file. 
  13109.            Action: Make sure the appropriate identifier manipulator DLL is in 
  13110.            the LIBPATH. 
  13111.  
  13112.  L4092     too many identifier manipulation DLLs 
  13113.            Explanation: Too many identifier manipulator dynamic link libraries 
  13114.            have been specified.  These DLLs are specified in object files, and 
  13115.            are used by LINK386 to demangle compiler generated mangled names 
  13116.            into function prototypes when printing an error messages. Error 
  13117.            messages may not be demangled for some object files. 
  13118.            Action: Reduce the number of different compilers used to create the 
  13119.            objects. 
  13120.  
  13121.  L4093     cannot initialize identifier manipulation DLL name 
  13122.            Explanation: LINK386 detected an error while trying to initialize an 
  13123.            identifier manipulator dynamic link library.  This DLL was specified 
  13124.            in an object file, and is used by LINK386 to demangle a compiler 
  13125.            generated mangled name into a function prototype when printing an 
  13126.            error message. Error messages will not be demangled for this object 
  13127.            file. 
  13128.            Action: Make sure the appropriate identifier manipulator DLL is in 
  13129.            the LIBPATH. 
  13130.  
  13131.  L4094     increasing stack size from number to number 
  13132.            Explanation: The stack size specified by either 
  13133.  
  13134.              1. size of a segment with combine type stack 
  13135.              2. STACKSIZE statement in the .DEF file 
  13136.              3. /STACK LINK386 command line option 
  13137.  
  13138.            will cause a system error if the program is executed on an OS/2 2.x 
  13139.            system.  LINK386 has changed the stacksize to a larger value to 
  13140.            preserve compatibility. 
  13141.            Action: No action required, LINK386 has corrected the problem.  To 
  13142.            eliminate the warning message, restart LINK386 and specify the new 
  13143.            stack size. 
  13144.  
  13145.  
  13146. ΓòÉΓòÉΓòÉ 21.1.7. Conditions That Can Cause LINK386 Error 2002 ΓòÉΓòÉΓòÉ
  13147.  
  13148. LINK386 Error 2002 can be caused by the following conditions: 
  13149.  
  13150.      A group is larger than 64K. 
  13151.      The program contains an intersegment short jump or intersegment short 
  13152.       call. 
  13153.      The name of a data item in the program conflicts with that of a 
  13154.       subroutine in a library included in the link. 
  13155.      An EXTRN declaration in an assembler language source file appeared inside 
  13156.       the body of a segment, as in the following example: 
  13157.  
  13158.             code    SEGMENT public  'CODE'
  13159.                     EXTRN   main:far
  13160.             start   PROC    far
  13161.                     call    main
  13162.                     ret
  13163.             start   ENDP
  13164.             code    ENDS
  13165.  
  13166.       The following construction is preferred: 
  13167.  
  13168.                     EXTRN   main:far
  13169.             code    SEGMENT public  'CODE'
  13170.             start   PROC    far
  13171.                     call    main
  13172.                     ret
  13173.             start   ENDP
  13174.             code    ENDS
  13175.  
  13176.  
  13177. ΓòÉΓòÉΓòÉ 22. Make Message File (MKMSGF) Error Messages ΓòÉΓòÉΓòÉ
  13178.  
  13179.  MKMSGF: Codepage %s is all zeroes 
  13180.            Explanation: The code-page ID specified with the /P option is zero. 
  13181.            The message file is built with a code-page of zero. 
  13182.            Action: Retry the command using the correct code-page specification. 
  13183.  
  13184.  MKMSGF: Codepage %s error in numeric conversion 
  13185.            Explanation: The code-page ID specified with the /P option is not 
  13186.            numeric. The message file is built with a code-page of zero. 
  13187.            Action: Retry the command using the correct code-page specification. 
  13188.  
  13189.  MKMSGF: Codepage %s is too large 
  13190.            Explanation: The code-page ID specified with the /P option is too 
  13191.            large. The message file is built with a code-page of zero. 
  13192.            Action: Retry the command using the correct code-page specification. 
  13193.  
  13194.  MKMSGF: Country %u is not supported 
  13195.            Explanation: The country ID specified within the /D option is not 
  13196.            supported. MKMSGF processing is stopped. 
  13197.            Action: Retry the command using the correct country code 
  13198.            specification. 
  13199.  
  13200.  MKMSGF: DBCS code page not found 
  13201.            Explanation: No DBCS code page has been found that supports the DBCS 
  13202.            range specified in the /D option.  MKMSGF processing is stopped. 
  13203.            Action: Retry the command using the correct DBCS ranges or country 
  13204.            ID for the input message file. 
  13205.  
  13206.  MKMSGF: Error reading input file 
  13207.            Explanation: Error during input from source file. 
  13208.            Action: Make sure the source message file exists and that the drive 
  13209.            is ready.  Retry the command. 
  13210.  
  13211.  MKMSGF: Error writing output file 
  13212.            Explanation: Error during output to target file. 
  13213.            Action: Make sure there is sufficient disk space or that the drive 
  13214.            is ready.  Retry the command. 
  13215.  
  13216.  MKMSGF: File not found 
  13217.            Explanation: Input file could not be found. 
  13218.            Action: Retry the command, using the correct source message file 
  13219.            name. 
  13220.  
  13221.  MKMSGF: Infile[.ext] outfile[.ext] [/V] 
  13222.  [/D <DBCS range or country>] [/P <code page>] [/L <language id,sub id>] 
  13223.            Explanation: This is the proper syntax for MKMSGF.  It is displayed 
  13224.            when no operands are specified on the command line and after some 
  13225.            syntax errors. 
  13226.            Action: None. 
  13227.  
  13228.  MKMSGF: Input file same as output file 
  13229.            Explanation: The input and output file names are the same. 
  13230.            Processing is stopped. 
  13231.            Action: Correct the command line or the control file and restart 
  13232.            MKMSGF. 
  13233.  
  13234.  MKMSGF: Insufficient storage 
  13235.            Explanation: Not enough storage to execute program or too many 
  13236.            messages in the file.  Message limit is about 6000. 
  13237.            Action: Reduce the number of programs running in your system, or 
  13238.            reduce the size of the message file by either deleting messages or 
  13239.            by reducing the size of each message.  Retry the command. 
  13240.  
  13241.  MKMSGF: Invalid language or sub id 
  13242.            Explanation: The language family ID specified with the /L option is 
  13243.            not supported. 
  13244.            Action: Retry the command using the correct language family ID. 
  13245.  
  13246.  MKMSGF: Invalid message file format 
  13247.            Explanation: Input file is not a recognizable message text file. 
  13248.            Action: If an incorrect file name was entered, retry the command 
  13249.            with the correct source message file name. 
  13250.  
  13251.  MKMSGF: Language family %s is all zeroes 
  13252.            Explanation: The language family ID specified with the /L option is 
  13253.            zero. The message file is built with a language family ID of zero. 
  13254.            Action: Retry the command using the correct language family ID. 
  13255.  
  13256.  MKMSGF: Language family %s error in numeric conversion 
  13257.            Explanation: The language family ID specified with the /L option is 
  13258.            not numeric.  The message file is built with a language family ID of 
  13259.            zero. 
  13260.            Action: Retry the command using the correct language family ID. 
  13261.  
  13262.  MKMSGF: Language family %s is too large 
  13263.            Explanation: The language family ID specified with the /L option is 
  13264.            not supported.  The message file is built with a language family ID 
  13265.            of zero. 
  13266.            Action: Retry the command using the correct language family ID. 
  13267.  
  13268.  MKMSGF: Message ID out of sequence 
  13269.            Explanation: A message was detected that was out of the required 
  13270.            sequential order. 
  13271.            Action: Correct the error by editing your source message file and 
  13272.            renumbering the messages. You might also want to delete or insert 
  13273.            the appropriate message numbers to achieve the required sequential 
  13274.            order. 
  13275.  
  13276.  MKMSGF: Message XXXX too long 
  13277.            Explanation: The message was too long to be processed (limit is 
  13278.            approximately 2K characters). 
  13279.            Action: Correct the error by editing your source message file and 
  13280.            making the message shorter. Then, retry the command. 
  13281.  
  13282.  MKMSGF: More than NN codepages entered 
  13283.            Explanation: A maximum of NN code-page IDs may specified for a 
  13284.            single message fil   e, Only the first NN will be accepted. 
  13285.            Action: Retry the command using the correct code-page 
  13286.            specifications. 
  13287.  
  13288.  MKMSGF: No sub id using 1 default 
  13289.            Explanation: The language version ID specified with the /L option is 
  13290.            either invalid or not supported.  The message file is built using 
  13291.            the default value shown. 
  13292.            Action: Retry the command using the correct language version ID. 
  13293.  
  13294.  MKMSGF: Sub id %s error in numeric conversion 
  13295.            Explanation: The language version specified with the /L option is 
  13296.            not numeric. The message file is built with a default language 
  13297.            version. 
  13298.            Action: Retry the command using the correct language version ID. 
  13299.  
  13300.  MKMSGF: Syntax error 
  13301.            Explanation: You entered the command incorrectly. 
  13302.            Action: Retry the command using proper syntax. To display the proper 
  13303.            syntax, type MKMSGF at the command line. 
  13304.  
  13305.  
  13306. ΓòÉΓòÉΓòÉ 22.1. Message Segment Binder (MSGBIND) Error Messages ΓòÉΓòÉΓòÉ
  13307.  
  13308.  MSGBIND: I/O error seeking infile 
  13309.            Explanation: A disk error occurred while seeking either the message 
  13310.            file or the .EXE file. 
  13311.            Action: Run CHKDSK on the drive containing the file and restart 
  13312.            MSGBIND. 
  13313.  
  13314.  MSGBIND: I/O error writing file 
  13315.            Explanation: A disk error occurred while writing messages to the 
  13316.            .EXE file. 
  13317.            Action: Run CHKDSK on the drive containing the .EXE file, and 
  13318.            restart MSGBIND. 
  13319.  
  13320.  MSGBIND: Must specify .EXE file before message file 
  13321.            Explanation: The input file was in error. 
  13322.            Action: Correct input file. 
  13323.  
  13324.  MSGBIND: Must specify message file before message number 
  13325.            Explanation: The input file was in error. 
  13326.            Action: Correct the input file. 
  13327.  
  13328.  MSGBIND: Out of memory, needed xxxx bytes 
  13329.            Explanation: There was not enough memory available to run MSGBIND. 
  13330.            Action: Reduce the number of programs presently running in your 
  13331.            system and restart MSGBIND. 
  13332.  
  13333.  MSGBIND: Premature EOF during copy 
  13334.            Explanation: The .EXE file was not built correctly. 
  13335.            Action: Rebuild the .EXE file and restart MSGBIND. 
  13336.  
  13337.  MSGBIND: Unable to create temp file-MSGBIND.TMP 
  13338.            Explanation: An error occurred while creating the intermediary file 
  13339.            MSGBIND.TMP. 
  13340.            Action: Delete or move files to make disk space available. If 
  13341.            MSGBIND.TMP is present as a read-only file, it must first be 
  13342.            deleted. Restart MSGBIND. 
  13343.  
  13344.  MSGBIND: Unable to open xxxxxxxx 
  13345.            Explanation: The input file specified was not found or an error 
  13346.            occurred when opening the message file. 
  13347.            Action: Restart MSGBIND using the correct input file name or a 
  13348.            backup copy of the message file. 
  13349.  
  13350.  Number of Message Files exceeded. Only nnn allowed 
  13351.            Explanation: The number of message files specified in the input file 
  13352.            exceeds the maximum number of files that MSGBIND can process at one 
  13353.            time. 
  13354.            Action: Correct the input file or combine message files, and then 
  13355.            restart MSGBIND. 
  13356.  
  13357.  Reading messages from xxxxxxxx 
  13358.            Explanation: Messages from the displayed message file are being read 
  13359.            into memory. 
  13360.            Action: None. This message is for information only. 
  13361.  
  13362.  Reading messages from xxxxxxxx -file not found 
  13363.            Explanation: The message file was not found in the path specified in 
  13364.            the input file. 
  13365.            Action: Edit the input file, correcting the path or file name, or 
  13366.            both.  Restart MSGBIND. 
  13367.  
  13368.  Reading messages from xxxxxxxx -not created with MKMSGF program 
  13369.            Explanation: The message file displayed was not created using the 
  13370.            MKMSGF program. 
  13371.            Action: Convert the source message file to a formatted message file 
  13372.            using the MKMSGF program, and restart MSGBIND. See the Make Message 
  13373.            File (MKMSGF). 
  13374.  
  13375.  Reading messages from xxxxxxxx -not enough memory 
  13376.            Explanation: There was not enough memory available to store the 
  13377.            messages. 
  13378.            Action: Reduce the number of programs running in your system, and 
  13379.            restart MSGBIND. 
  13380.  
  13381.  The object that would contain the bound messages would be too large. Refer to 
  13382.  the Toolkit Documentation for more information. 
  13383.            Explanation: (self explanatory) 
  13384.            Action: Do one or more, of the following: 
  13385.  
  13386.              1. Modify the module definition file to isolate the message 
  13387.                 object, and then relink the application. 
  13388.              2. Reduce the number of messages to be bound to the application as 
  13389.                 specified in the input file. 
  13390.              3. Reduce the size of the messages and rebuild the message file 
  13391.                 with MKMSGF. 
  13392.              4. Then restart MSGBIND. 
  13393.  
  13394.  Unable to bind message nnnn, message segment would exceed 64K. The remaining 
  13395.  messages will NOT be bound. 
  13396.            Explanation: (self explanatory) 
  13397.            Action: Do one or more, of the following: 
  13398.  
  13399.              1. Modify the module definition file to isolate the message 
  13400.                 object, and then relink the application. 
  13401.              2. Reduce the number of messages to be bound to the application as 
  13402.                 specified in the input file. 
  13403.              3. Reduce the size of the messages and rebuild the message file 
  13404.                 with MKMSGF. 
  13405.              4. Then restart MSGBIND. 
  13406.  
  13407.  Unable to locate call to Dos32GetMessage, messages will not be bound. 
  13408.            Explanation: The executable file to be modified makes no function 
  13409.            calls to the message retriever, or was not linked with the correct 
  13410.            library file. 
  13411.            Action: If the application does use the message retriever function, 
  13412.            such as DosGetMessage, relink the application using the correct 
  13413.            library file, and then restart MSGBIND. 
  13414.  
  13415.            If not, messages cannot be bound to the application. 
  13416.  
  13417.  Updating xxxxxxxx 
  13418.            Explanation: The .EXE file name displayed is being updated with the 
  13419.            requested messages. 
  13420.            Action: None. This message is for information only. 
  13421.  
  13422.  Updating xxxxxxxx -file not found 
  13423.            Explanation: The .EXE file name was not found in the path specified 
  13424.            in the input file. 
  13425.            Action: Edit the input file, correcting the path or file name, or 
  13426.            both.  Restart MSGBIND. 
  13427.  
  13428.  Updating xxxxxxxx -not linked with MSGSEG.OBJ 
  13429.            Explanation: The .EXE file name displayed made no DosGetMessage 
  13430.            functions, or the .EXE file was not linked with the correct library. 
  13431.            Messages can only be bound to applications that call message 
  13432.            retriever functions, such as DosGetMessage. 
  13433.            Action: If the .EXE file does make calls to message retriever 
  13434.            functions, relink the application using the correct library, and 
  13435.            restart MSGBIND. 
  13436.  
  13437.  usage: MSGBIND scriptfile 
  13438.            Explanation: The command was entered incorrectly. 
  13439.            Action: Restart MSGBIND. Refer to Syntax for the correct syntax. 
  13440.  
  13441.  Warning: No msgseg data found in new executable 
  13442.            Explanation: The executable file to be modified makes no function 
  13443.            calls to the message retriever, or was not linked with the correct 
  13444.            library file. 
  13445.            Action: If the application does use the message retriever function, 
  13446.            such as DosGetMessage, relink the application using the correct 
  13447.            library file, and then restart MSGBIND. 
  13448.  
  13449.            If not, messages cannot be bound to the application. 
  13450.  
  13451.  WARNING: Skipping messages for this file 
  13452.            Explanation: The .EXE file was in error, so the messages were not 
  13453.            bound to it. Either the .EXE file does not exist, or it has not been 
  13454.            linked with the correct library. 
  13455.            Action: If the .EXE file name is correct, relink the application 
  13456.            using the correct library, and restart MSGBIND. 
  13457.  
  13458.  WARNING: Skipping message numbers for this file 
  13459.            Explanation: The message file was in error, so all messages from 
  13460.            this message file were ignored. The message file might not exist, 
  13461.            might not be formatted correctly, or there might not be enough 
  13462.            memory to store all the messages. 
  13463.            Action: If the message file name is correct and has been correctly 
  13464.            formatted, check the memory available for the file. Restart MSGBIND. 
  13465.  
  13466.  WARNING: xxxx is an invalid message number 
  13467.            Explanation: The message number specified was not found in the 
  13468.            message file. 
  13469.            Action: Edit the input file and correct any message numbers that are 
  13470.            in error. Restart MSGBIND. 
  13471.  
  13472.  Writing messages 
  13473.            Explanation: The .EXE file is being updated with the messages 
  13474.            requested. 
  13475.            Action: None. This message is for information only. 
  13476.  
  13477.  
  13478. ΓòÉΓòÉΓòÉ 22.2. Resource Compiler Error Messages ΓòÉΓòÉΓòÉ
  13479.  
  13480. The error messages produced by the resource compiler utility (RC) and its 
  13481. preprocessor are listed below. 
  13482.  
  13483. RC Preprocessor Fatal Error Messages 
  13484.  
  13485. Error Message Descriptions 
  13486.  
  13487.  C1012 
  13488.            bad parenthesis nesting - missing symbol 
  13489.            Explanation: You wrote an expression which was missing the given 
  13490.            left or right parenthesis symbol. 
  13491.            Action: Rewrite the expression with balanced parentheses. 
  13492.  C1014 
  13493.            too many include files 
  13494.            Explanation: You might have tried to include a file recursively. 
  13495.            Action: Remove the include directive for any file which has already 
  13496.            been included to the preprocessor. 
  13497.  C1015 
  13498.            cannot open include file 'filename' 
  13499.            Explanation: The preprocessor could not locate the given include 
  13500.            file. 
  13501.            Action: If the include file is not in the current directory or in a 
  13502.            directory named in the INCLUDE environment variable, or in a 
  13503.            directory specified by a -i option, you must provide the full path 
  13504.            and include file name. 
  13505.  C1016 
  13506.            #if[n]def expected an identifier 
  13507.            Explanation:You wrote an ifdef or ifndef directive with no macro 
  13508.            name. 
  13509.            Action: Supply the missing name. 
  13510.  C1017 
  13511.            invalid integer constant expression 
  13512.            Explanation: You used an incorrect expression where an integer 
  13513.            constant was expected. 
  13514.            Action: Supply a correct expression to the directive. 
  13515.  C1018 
  13516.            unexpected #elif 
  13517.            Explanation: You used a directive in an incorrect context. 
  13518.            Action: Correct the logic of the if directives. 
  13519.  C1019 
  13520.            unexpected #else 
  13521.            Explanation: You used a directive in an incorrect context. 
  13522.            Action: Correct the logic of the if directives. 
  13523.  C1020 
  13524.            unexpected #endif 
  13525.            Explanation: You used a directive in an incorrect context. 
  13526.            Action: Correct the logic of the if directives. 
  13527.  C1021 
  13528.            bad preprocessor command 'command' 
  13529.            Explanation: The given command is not a recognized directive.  You 
  13530.            might have misspelled the directive. 
  13531.            Action: Use the correct spelling for the directive. 
  13532.  C1022 
  13533.            expected #endif 
  13534.            Explanation: You wrote an if directive but omitted any endif. 
  13535.            Action: Supply the missing endif directive. 
  13536.  C1056 
  13537.            compiler limit 'name' out of macro expansion space 
  13538.            Explanation: The macro called name expanded to a length exceeding 
  13539.            2042 bytes. 
  13540.            Action: Revise your definition of the macro so that its value is 
  13541.            shorter than the length limit. 
  13542.  C1065 
  13543.            compiler limit 'name' macro definition too big 
  13544.            Explanation: The macro called name expanded to a length exceeding 
  13545.            2042 bytes. 
  13546.            Action: Revise your definition of the macro so that its value is 
  13547.            shorter than the length limit. 
  13548.  
  13549.            Resource Compiler Preprocessor Error Messages 
  13550.  C2001 
  13551.            newline in constant 
  13552.            Explanation: You wrote a string literal constant without the closing 
  13553.            double quotation mark. 
  13554.            Action: Provide the ending double quote for the string. 
  13555.  C2004 
  13556.            expected defined(id) 
  13557.            Explanation: You wrote an if defined directive but omitted the macro 
  13558.            name. 
  13559.            Action: Supply the missing macro name. 
  13560.  C2006 
  13561.            #include expected a file name,found text 
  13562.            Explanation: The preprocessor found the given text instead of an 
  13563.            include file name. 
  13564.            Action Supply the correct include file name. 
  13565.  C2007 
  13566.            #define syntax 
  13567.            Explanation: The syntax of your define directive is incorrect. 
  13568.            Action: Use the correct form as described for the define directive. 
  13569.  C2014 
  13570.            preprocessor command must start as first non-white space 
  13571.            Explanation: You wrote a directive with text on the line before the 
  13572.            number sign (#). 
  13573.            Action: Put the number sign at the beginning of a line. 
  13574.  
  13575.            RC Preprocessor warnings 
  13576.  C4005 
  13577.            name redefinition 
  13578.            Explanation: You attempted to redefine the macro name to a value 
  13579.            different from its current definition. 
  13580.            Action: To use a different macro value, define it as a macro using 
  13581.            another macro name. 
  13582.  C4067 
  13583.            unexpected characters following include directive -newline expected 
  13584.            Explanation: You specified a filename to an include directive 
  13585.            without surrounding the name by double quotation marks or angle 
  13586.            brackets. 
  13587.            Action: Use double quotation marks or angle brackets around the 
  13588.            include filename. 
  13589.  C4067 
  13590.            unexpected characters following 'endif' directive - newline expected 
  13591.            Explanation: No characters should appear on the line of an endif or 
  13592.            else directive after the directive keyword. 
  13593.            Action: Remove the extra characters. 
  13594.  C4067 
  13595.            unexpected characters following 'else' directive-newline expected. 
  13596.            Explanation: No characters should appear on the line of an endif or 
  13597.            else directive after the directive keyword. 
  13598.            Action: Remove the extra characters. 
  13599.  C4067 
  13600.            unexpected characters following 'undef' directive - newline expected 
  13601.            Explanation: You can undefine only one macro on an undef directive. 
  13602.            Action:Use separate undef directive to undefine more than one macro. 
  13603.  
  13604.  Accelerator type required (CHAR, SCANCODE, or VIRTUALKEY) 
  13605.            Explanation: An acceloption has not been specified in the 
  13606.            accelerator table to define the type of accelerator. If the 
  13607.            accelerator character code is something other than a single 
  13608.            character or a character preceded by a caret ( ^ ), an acceloption 
  13609.            is required. 
  13610.            Action: Check accelerator table syntax. 
  13611.  BEGIN expected in accelerator table 
  13612.            Explanation: BEGIN keyword missing from accelerator table. 
  13613.            Action: Check syntax. 
  13614.  BEGIN expected in dialog or window template 
  13615.            Explanation: BEGIN keyword missing from dialog or window template. 
  13616.            Action: Check syntax. 
  13617.  BEGIN expected in menu 
  13618.            Explanation: BEGIN keyword missing from menu. 
  13619.            Action: Check syntax. 
  13620.  BEGIN expected in message table 
  13621.            Explanation: BEGIN keyword missing from message table. 
  13622.            Action: Check syntax. 
  13623.  BEGIN expected in RCData 
  13624.            Explanation: BEGIN keyword missing from RCData table. 
  13625.            Action: Check syntax. 
  13626.  BEGIN expected in String Table 
  13627.            Explanation: BEGIN keyword missing from string table. 
  13628.            Action: Check syntax. 
  13629.  Cannot re-use message constants 
  13630.            Explanation: Message identifier has been used more than once in 
  13631.            message table. 
  13632.            Action: Check message table syntax. 
  13633.  Cannot re-use string constants 
  13634.            Explanation: Message identifier has been used more than once in 
  13635.            string table. 
  13636.            Action: Check string table syntax. 
  13637.  Comma expected after item string 
  13638.            Explanation: A comma must be used to separate the menu item 
  13639.            identifier and the menu item string. 
  13640.            Action: Check menu syntax. 
  13641.  Control character out of range ( ^A - ^Z) 
  13642.            Explanation: Accelerator character codes that use the Ctrl key, and 
  13643.            are therefore preceded by a caret ( ^ ), must use alphabetic keys. 
  13644.            Action: Check accelerator table syntax. 
  13645.  END expected in dialog 
  13646.            Explanation: END keyword missing from dialog template. 
  13647.            Action: Check syntax. 
  13648.  END expected in menu 
  13649.            Explanation: END keyword missing from menu. 
  13650.            Action: Check syntax. 
  13651.  Error creating temp file 
  13652.            Explanation: Temporary files are created by the resource compiler 
  13653.            during the compilation process. 
  13654.            Action: Check that there is sufficient disk space to run the 
  13655.            resource compiler, and restart the resource compiler. 
  13656.  Expected comma in accelerator table 
  13657.            Explanation: Commas are used in the accelerator table to separate 
  13658.            the accelerator key, the accelerator command, and the accelerator 
  13659.            options. 
  13660.            Action: Check accelerator table syntax. 
  13661.  Expected ID value for menu item 
  13662.            Explanation: A selection identifier is needed for each item within a 
  13663.            menu. 
  13664.            Action: Check menu syntax. 
  13665.  Expected menu string 
  13666.            Explanation: A character string should be specified in the menu 
  13667.            definition to describe the menu selection. 
  13668.            Action: Check menu syntax. The string should be enclosed in double 
  13669.            quotation marks. 
  13670.  Expected numeric command value 
  13671.            Explanation: A number should be used in the accelerator table to 
  13672.            identify the message that is generated by an accelerator key. 
  13673.            Action: Check accelerator table syntax. 
  13674.  Expected numeric constant in message table 
  13675.            Explanation: The identifier that precedes a message definition must 
  13676.            be an integer. 
  13677.            Action: Check message definition syntax. 
  13678.  Expected numeric constant in string table 
  13679.            Explanation: The identifier that precedes a string definition must 
  13680.            be an integer. 
  13681.            Action: Check string definition syntax. 
  13682.  Expected numerical dialog constant 
  13683.            Explanation: Integers are required in dialog and window templates to 
  13684.            specify the coordinates and dimensions of the dialog box. 
  13685.            Action: Check syntax of dialog box definition. 
  13686.  Expected string in message table 
  13687.            Explanation: A character string was not found in the message table. 
  13688.            Action: Check syntax. The string should be enclosed in double 
  13689.            quotation marks. 
  13690.  Expected string in string table 
  13691.            Explanation: A character string was not found in the string table. 
  13692.            Action: Check string table syntax. The string should be enclosed in 
  13693.            double quotation marks. 
  13694.  Expected string or constant accelerator command 
  13695.            Explanation: The accelerator character code is missing. 
  13696.            Action: Check accelerator table syntax. 
  13697.  File not found 
  13698.            Explanation: The resource compiler could not find the .RC or .RES 
  13699.            file that you requested. 
  13700.            Action: Check that the file is in the current directory and check 
  13701.            the path to the directory. 
  13702.  Illegal empty BEGIN/END block found, resource not written 
  13703.            Explanation: A BEGIN/END block with no DIALOG, CONTROL, or WINDOW 
  13704.            statements in it was found in the dialog template. 
  13705.            Action: Delete unwanted BEGIN/END blocks. 
  13706.  Invalid accelerator 
  13707.            Explanation: The character code specified as an accelerator key must 
  13708.            be a valid keyboard operation. 
  13709.            Action: Check accelerator key definition syntax. 
  13710.  Invalid accelerator option 
  13711.            Explanation: The accelerator option must be a valid keyword. 
  13712.            Action: Check syntax. 
  13713.  Invalid control character 
  13714.            Explanation: The accelerator key definition can include a caret 
  13715.            ( ^) to specify that the key should be used with the Ctrl key. 
  13716.            Action: Check accelerator key definition syntax. 
  13717.  Invalid Type 
  13718.            Explanation: The resource type must be a valid keyword. 
  13719.            Action: Check resource definition syntax. 
  13720.  Non-numeric template ID in dialog or window template 
  13721.            Explanation: The resource identifier must be an integer. 
  13722.            Action: Check dialog or window template syntax. 
  13723.  Only one top level window allowed 
  13724.            Explanation: Only one DIALOG, CONTROL, or WINDOW statement is 
  13725.            allowed within the dialog or window template. 
  13726.            Action: Check dialog or window template syntax. 
  13727.  Resource Type keyword expected 
  13728.            Explanation: The resource type must be specified in the resource 
  13729.            script file. 
  13730.            Action: Check resource definition syntax. 
  13731.  String literal too long 
  13732.            Explanation: Strings cannot be longer than 255 characters. 
  13733.            Action: Edit the string. 
  13734.  Text string or ordinal expected in control 
  13735.            Explanation: A text string can be specified in the DIALOG statement 
  13736.            of a dialog template to give it a title.  If a title is not 
  13737.            required, double quotation marks must be used with no characters 
  13738.            between them (" "). 
  13739.            Action: Edit DIALOG statement. 
  13740.  Unbalanced parentheses 
  13741.            Explanation: The left and right parentheses have not been matched. 
  13742.            Action: Edit the parentheses. 
  13743.  Undefined keyword or key name 
  13744.            Explanation: An invalid keyword or key name has been used. 
  13745.            Action: Check syntax. 
  13746.  Unexpected end of file in string literal 
  13747.            Explanation: The double quotation marks have not been closed at the 
  13748.            end of a character string. 
  13749.            Action: Edit the string. 
  13750.  Unexpected value in RCData 
  13751.            Explanation: The variable defined in RCData must be a string or a 
  13752.            number. 
  13753.            Action: Check the RCData syntax. 
  13754.  Unknown dialog or window token 
  13755.            Explanation: The dialog and window templates must use only the 
  13756.            DIALOG, WINDOW, or CONTROL keywords. 
  13757.            Action: Check the dialog or window template syntax. 
  13758.  Unknown menu sub type 
  13759.            Explanation: Items within a menu can be specified only with the 
  13760.            MENUITEM and SUBMENU keywords. 
  13761.            Action: Check menu definition syntax. 
  13762.  
  13763.  
  13764. ΓòÉΓòÉΓòÉ 22.3. NMAKE Error Messages ΓòÉΓòÉΓòÉ
  13765.  
  13766. This section provides a convenient reference to the many error messages that 
  13767. can be encountered when using the NMAKE facility. 
  13768.  
  13769. Error Message Descriptions 
  13770.  
  13771.  NMAKE Fatal Error Messages          (Part 1) 1000 - 1098 
  13772.  
  13773.  NMAKE Warnings                      (Part 2) 4001 - 4008 
  13774.  
  13775.  NMAKE Informational Messages        (Part 3)   2 -   6 
  13776.  
  13777.  
  13778. ΓòÉΓòÉΓòÉ 22.3.1. Fatal Error Messages (Part 1) 1000 - 1098 ΓòÉΓòÉΓòÉ
  13779.  
  13780.  U1000     syntax error : ')' missing in macro invocation 
  13781.            Explanation: A left parenthesis appeared without a matching right 
  13782.            parenthesis in a macro invocation.  The correct form is $(name). 
  13783.            Action: Add the right parenthesis in the proper syntax. 
  13784.  
  13785.  U1001     syntax error : illegal character 'character' in macro 
  13786.            Explanation: A non-alphanumeric character other than underscore 
  13787.            appeared in a macro. 
  13788.            Action: Use only characters valid for a macro name. 
  13789.  
  13790.  U1002     syntax error : bad macro invocation '$' 
  13791.            Explanation: A single dollar sign ($) appeared without a macro name 
  13792.            associated with it.  The correct form is $(name). 
  13793.            Action: Use a defined macro name. 
  13794.  
  13795.  U1003     syntax error : '=' missing in macro 
  13796.            Explanation: The = sign was missing in a macro definition. The 
  13797.            correct form is 'name = value'. 
  13798.            Action: Insert an equals sign (=) and retry. 
  13799.  
  13800.  U1004     syntax error : macro name missing 
  13801.            Explanation: A macro invocation appeared without a name. The correct 
  13802.            form is $(name). 
  13803.            Action: Supply the macro name and retry. 
  13804.  
  13805.  U1005     syntax error : text must follow ':' in macro 
  13806.            Explanation: A string substitution was specified for a macro, but 
  13807.            the string to be changed in the macro was not specified. 
  13808.            Action: Specify the string to be substituted. 
  13809.  
  13810.  U1006     syntax error : missing closing double quotation mark 
  13811.            Explanation: An opening double quotation mark appeared without a 
  13812.            closing quotation mark. 
  13813.            Action: Edit the line and add the closing quotation mark. 
  13814.  
  13815.  U1007     double quotation mark not allowed in name 
  13816.            Explanation: You used a ' " ' symbol inside a macro name. 
  13817.            Action: Correct the name without the quotation mark. 
  13818.  
  13819.  U1017     unknown directive 'directive' 
  13820.            Explanation: The directive specified is not a recognized directive. 
  13821.            Action: Check your spelling of the intended directive. 
  13822.  
  13823.  U1018     directive and/or expression part missing 
  13824.            Explanation: The directive is incompletely specified.  The 
  13825.            expression part is required. 
  13826.            Action: Supply the expression and retry the directive. 
  13827.  
  13828.  U1019     too many nested if blocks 
  13829.            Explanation: You exceeded the limit of 16 levels of nested !IF 
  13830.            directives. 
  13831.            Action: Simplify your nesting logic to fewer than 16 levels. 
  13832.  
  13833.  U1020     EOF found before next directive 
  13834.            Explanation: A directive, such as !ENDIF, was missing. 
  13835.            Action: Insert the required directive and retry. 
  13836.  
  13837.  U1021     syntax error : else unexpected 
  13838.            Explanation: An !ELSE directive was found that was not expected, or 
  13839.            was placed in a syntactically incorrect place. 
  13840.            Action: Correct the position of the !ELSE directive. 
  13841.  
  13842.  U1022     missing terminating character for string/program invocation : 
  13843.            'character' 
  13844.            Explanation: The closing double quotation mark in a string 
  13845.            comparison in an !IF directive was missing.  Or else the closing 
  13846.            bracket ( ] ) in a program invocation in a directive is missing. 
  13847.            Action: Insert the proper termination character. 
  13848.  
  13849.  U1023     syntax error present in expression 
  13850.            Explanation: An expression is incorrect. 
  13851.            Action: Check the allowed operators and operator precedence for the 
  13852.            expression. 
  13853.  
  13854.  U1024     illegal argument to !CMDSWITCHES 
  13855.            Explanation: An unrecognized !CMDSWITCHES option was specified. 
  13856.            Action: Use the correct !CMDSWITCHES option. 
  13857.  
  13858.  U1031     file name missing (or macro is null) 
  13859.            Explanation: An !INCLUDE directive was found, but the name of the 
  13860.            file to include is missing. 
  13861.            Action: Supply the name of the file to be included. 
  13862.  
  13863.  U1033     syntax error : 'string' unexpected 
  13864.            Explanation: The specified string is not part of the valid syntax 
  13865.            for a makefile. 
  13866.            Action: Correct the line according to the proper syntax. 
  13867.  
  13868.  U1034     syntax error : separator missing 
  13869.            Explanation: The colon that separates targets from dependents is 
  13870.            missing. 
  13871.            Action: Insert a colon after the target list. 
  13872.  
  13873.  L1035     syntax error : expected ':' or '=' separator 
  13874.            Explanation: Either a colon, implying a dependency line, or an = 
  13875.            sign, implying a macro definition, was expected. 
  13876.            Action: Insert the proper separator in the line. 
  13877.  
  13878.  U1036     syntax error : too many names to left of '=' 
  13879.            Explanation: Only one string is allowed to the left of a macro 
  13880.            definition. 
  13881.            Action: Remove the incorrect text before the = sign. 
  13882.  
  13883.  U1037     syntax error : target name missing 
  13884.            Explanation: A colon (:) was found before a target name was found. 
  13885.            At least one target is required. 
  13886.            Action: Insert the correct target name before the colon. 
  13887.  
  13888.  U1038     internal error : lexer 
  13889.            Explanation: The lexer encountered an unexpected condition. 
  13890.            Action: Note the circumstances of the failure and contact IBM 
  13891.            Support. 
  13892.  
  13893.  U1039     internal error : parser 
  13894.            Explanation: The parser encountered an unexpected condition. 
  13895.            Action: Note the circumstances of the failure and contact IBM 
  13896.            Support. 
  13897.  
  13898.  U1040     internal error : macro expansion 
  13899.            Explanation: An unexpected condition was found during macro 
  13900.            expansion. 
  13901.            Action: Note the circumstances of the failure and contact IBM 
  13902.            Support. 
  13903.  
  13904.  U1041     internal error : target building 
  13905.            Explanation: An unexpected condition was found during target 
  13906.            building. 
  13907.            Action: Note the circumstances of the failure and contact IBM 
  13908.            Support. 
  13909.  
  13910.  U1042     internal error : expression stack overflow 
  13911.            Explanation: An expression was too complex to decode using internal 
  13912.            memory space. 
  13913.            Action: Note the circumstances of the failure and contact IBM 
  13914.            Support. 
  13915.  
  13916.  U1043     internal error : temp file limit exceeded 
  13917.            Explanation: NMAKE required too many temporary files. 
  13918.            Action: Note the circumstances of the failure and contact IBM 
  13919.            Support. 
  13920.  
  13921.  U1044     internal error : too many levels of recursion building a target 
  13922.            Explanation: Recursive invocations of NMAKE exceeded available 
  13923.            memory. 
  13924.            Action: Note the circumstances of the failure and contact IBM 
  13925.            Support. 
  13926.  
  13927.  U1045     messagetext 
  13928.            Explanation: NMAKE encountered an unexpected condition. 
  13929.            Action: Note the text of the message and contact IBM Support. 
  13930.  
  13931.  U1046     internal error : out of search handles 
  13932.            Explanation: NMAKE exceeded an internal limit on handles. 
  13933.            Action: Note the circumstances of the failure and contact IBM 
  13934.            Support. 
  13935.  
  13936.  U1049     macro too long (max allowed size : 64K) 
  13937.            Explanation: One of your macros expanded to longer than 65 535 
  13938.            bytes. 
  13939.            Action: Recode the macro definition so that it is less than 64K. 
  13940.  
  13941.  U1050     user-specified text 
  13942.            Explanation: The message specified with the !ERROR directive is 
  13943.            displayed. 
  13944.            Action: Action depends on the defined error condition. 
  13945.  
  13946.  U1051     out of memory 
  13947.            Explanation: NMAKE ran out of space in the far heap. 
  13948.            Action: Note the circumstances of the failure and contact IBM 
  13949.            Support. 
  13950.  
  13951.  U1052     file 'filename' not found 
  13952.            Explanation: The file was not found. 
  13953.            Action: Specify the filename properly in the makefile. 
  13954.  
  13955.  U1053     file 'filename' unreadable 
  13956.            Explanation: The filename cannot be read. 
  13957.            Action: Be sure that the file has the appropriate attributes to be 
  13958.            read. 
  13959.  
  13960.  U1054     cannot create in-line file 'filename' 
  13961.            Explanation: The program was unable to generate the specified 
  13962.            in-line file as a uniquely-named temporary file. 
  13963.            Action: Be sure your file system has enough space for temporary 
  13964.            files. 
  13965.  
  13966.  U1055     out of environment space 
  13967.            Explanation: The environment space limit was reached. 
  13968.            Action: Restart NMAKE with a larger environment space. 
  13969.  
  13970.  U1056     cannot find command processor 
  13971.            Explanation: The command processor CMD.EXE could not be found. 
  13972.            Action: Be sure that the COMSPEC environment variable points to a 
  13973.            command processor on your file system. 
  13974.  
  13975.  U1057     cannot delete temporary file 'filename' 
  13976.            Explanation: The program was unable to delete the specified file. 
  13977.            Action: The file needs to exist and have the write attribute. 
  13978.  
  13979.  U1058     terminated by user 
  13980.            Explanation: You pressed Ctrl+Break to stop NMAKE. 
  13981.            Action: None, the program has stopped. 
  13982.  
  13983.  U1060     unable to close file : 'filename' 
  13984.            Explanation: NMAKE was unable to close filename. 
  13985.            Action: Look for the named file with write attribute on your file 
  13986.            system. 
  13987.  
  13988.  U1061     /F option requires a file name 
  13989.            Explanation: You coded command-line option /f but failed to follow 
  13990.            it with the name of a description file. 
  13991.            Action: Specify the description file name after the option. 
  13992.  
  13993.  U1062     missing file name with /X option 
  13994.            Explanation: You coded command-line option /x but failed to follow 
  13995.            it with the name of a file to receive redirected stderr output. 
  13996.            Action: Give an output error file name after the option. 
  13997.  
  13998.  U1063     missing macro name before '=' 
  13999.            Explanation: You coded '=' in a command line macro definition, but 
  14000.            failed to supply the name of the macro. 
  14001.            Action: Give the macro name in the definition. 
  14002.  
  14003.  U1064     MAKEFILE not found and no target specified 
  14004.            Explanation: You invoked NMAKE without a /f option, and no file 
  14005.            named MAKEFILE was present. 
  14006.            Action: Either create a file named MAKEFILE, or use the /f switch. 
  14007.  
  14008.  U1065     incorrect option 'option' 
  14009.            Explanation: NMAKE does not use the option which you specified. 
  14010.            Action: Use a valid command line option. 
  14011.  
  14012.  U1070     cycle in macro definition 'macroname' 
  14013.            Explanation: A cycle was detected in the macro definition specified. 
  14014.            Action: Rewrite the macro to avoid the circular definition. 
  14015.  
  14016.  U1071     cycle in dependency tree for target 'targetname' 
  14017.            Explanation: A cycle was detected in the target dependency tree. 
  14018.            Action: Check the dependency lists descending from the given target 
  14019.            and remove the circular dependency. 
  14020.  
  14021.  U1072     cycle in include files : 'filenames' 
  14022.            Explanation: A cycle was detected in the tree of included files. 
  14023.            Action: Check the file names included by the given include file and 
  14024.            remove the circular inclusion. 
  14025.  
  14026.  U1073     don't know how to make 'filename' 
  14027.            Explanation: The specified target does not exist and there are no 
  14028.            commands to execute or inference rules given for it.  Hence NMAKE 
  14029.            cannot build it. 
  14030.            Action: Correct the specification of the file, which should exist on 
  14031.            your file system. 
  14032.  
  14033.  U1076     name too long 
  14034.            Explanation: The macro name, target name, or build command name 
  14035.            would overflow an internal buffer. 
  14036.            Action: Reduce the length of the specified name. 
  14037.  
  14038.  U1077     'program' : return code 'value' 
  14039.            Explanation: The invocation of NMAKE failed with a nonzero return 
  14040.            value. 
  14041.            Action: Determine the cause of failure of the specified program. 
  14042.  
  14043.  U1078     constant overflow at 'directive' 
  14044.            Explanation: A constant in 'directive' expression was too big. 
  14045.            Action: Reduce the size of the specified constant to a value within 
  14046.            the range of a signed long integer, -2147483648 <= value <= 
  14047.            2147483647. 
  14048.  
  14049.  U1079     illegal expression : divide by zero present 
  14050.            Explanation: An expression contains a division by zero. 
  14051.            Action: Remove the undefined division by zero from the expression. 
  14052.  
  14053.  U1080     operator and/or operand out of place : usage illegal 
  14054.            Explanation: The expression uses an operand or operator incorrectly. 
  14055.            Action: Check the allowed set of operators and their precedence. 
  14056.  
  14057.  U1081     'program' : program not found 
  14058.            Explanation: NMAKE could not find the external command or program. 
  14059.            Action: Be sure that the program is located in the PATH. 
  14060.  
  14061.  U1082     'command' : cannot execute command: out of memory 
  14062.            Explanation: NMAKE ran out of memory while running command. 
  14063.            Action: Make more memory available while running NMAKE. 
  14064.  
  14065.  U1083     target macro 'macroname' expands to nothing 
  14066.            Explanation: The expansion of the given macro is a null string. 
  14067.            Action: Correct the definition of the macro. 
  14068.  
  14069.  U1084     cannot create temporary file 'filename' 
  14070.            Explanation: NMAKE was unable to open the specified temporary file. 
  14071.            Action: Check the filename specification for validity. 
  14072.  
  14073.  U1085     cannot mix implicit and explicit rules 
  14074.            Explanation: A regular target was specified along with the target 
  14075.            for a rule (which has the form .sufx1.sufx2). 
  14076.            Action: Separate targets built by implicit and explicit inference 
  14077.            rules into different lists. 
  14078.  
  14079.  U1086     inference rule cannot have dependents 
  14080.            Explanation: Dependents are not allowed in the definition of an 
  14081.            inference rule. 
  14082.            Action: Remove the dependents list from the rule. 
  14083.  
  14084.  U1087     cannot have : and :: dependents for same target 
  14085.            Explanation: A target cannot have both a single-colon and 
  14086.            double-colon dependency. 
  14087.            Action: Choose either single-colon or double-colon separator for the 
  14088.            target. 
  14089.  
  14090.  U1088     invalid separator on inference rule : '::' 
  14091.            Explanation: Inference rules can use only a single-colon separator. 
  14092.            Action: Use a single-colon dependency for the target. 
  14093.  
  14094.  U1089     cannot have build commands for pseudotarget 'targetname' 
  14095.            Explanation: Pseudotargets (for example, .PRECIOUS, .SUFFIXES) 
  14096.            cannot have build commands specified. 
  14097.            Action: Remove the build commands from the specification of 
  14098.            targetname. 
  14099.  
  14100.  U1090     cannot have dependents for pseudotarget 'targetname' 
  14101.            Explanation: The specified pseudotarget, for example, .SILENT, 
  14102.            .IGNORE) cannot have a dependent. 
  14103.            Action: Remove the dependent from the specification of targetname. 
  14104.  
  14105.  U1092     too many names in rule 
  14106.            Explanation: The rules cannot have more than one pair of extensions 
  14107.            (ext1.ext2) as a target for the rule. 
  14108.            Action: Use only one pair of extensions in any inference rule. 
  14109.  
  14110.  U1093     cannot mix special pseudotargets 
  14111.            Explanation: It is illegal to list two or more pseudotargets 
  14112.            together. 
  14113.            Action: Use only one pseudotarget in any list. 
  14114.  
  14115.  U1094     syntax error : only [no]keep allowed here 
  14116.            Explanation: In a context where only KEEP or NOKEEP is accepted to 
  14117.            indicate the desired disposition of the inline file, you used an 
  14118.            incorrect string. 
  14119.            Action: Use the correct syntax for In-Line Files. 
  14120.  
  14121.  U1095     expanded command line 'string' too long 
  14122.            Explanation: After macro expansion, the command line length exceeds 
  14123.            1024 bytes. 
  14124.            Action: Rewrite the command line to stay within a 1024-byte limit. 
  14125.  
  14126.  U1097     extmake syntax usage error, no dependent 
  14127.            Explanation: You used the extmake file syntax on a description block 
  14128.            which had no dependent files. 
  14129.            Action: Specify one or more dependent files for the block. 
  14130.  
  14131.  U1098     extmake syntax in 'string' incorrect 
  14132.            Explanation: The given string contains an extmake syntax error. 
  14133.            Action: Correct the string according to the proper syntax. 
  14134.  
  14135.  
  14136. ΓòÉΓòÉΓòÉ 22.3.2. Warnings (Part 2) 4001 - 4008 ΓòÉΓòÉΓòÉ
  14137.  
  14138.  U4001     command file can be invoked only from command line 
  14139.            Explanation: You used an @ symbol on an argument in a command file. 
  14140.            You cannot invoke another command file from within a command file. 
  14141.            Action: If the you want '@' to be part of an argument in a command 
  14142.            file, you must enclose that argument in quotation marks. 
  14143.  
  14144.  U4002     no match found for wild card 'string' 
  14145.            Explanation: NMAKE expanded wildcards in the given string, but found 
  14146.            no files matching the specification. 
  14147.            Action: Check the existence of desired files on your file system. 
  14148.  
  14149.  U4004     too many rules for target 'targetname' 
  14150.            Explanation: You specified too many inference rules for the 
  14151.            specified targetname. 
  14152.            Action: Revise your rules specification for targetname. 
  14153.  
  14154.  U4005     ignoring rule 'string' (extension not in .SUFFIXES) 
  14155.            Explanation: You specified an inference rule with a suffix which was 
  14156.            not in the .SUFFIXES list. 
  14157.            Action: To use the suffix, be sure to include it in the .SUFFIXES 
  14158.            list. 
  14159.  
  14160.  U4006     special macro undefined : 'macroname' 
  14161.            Explanation: You specified the undefined macro macroname. 
  14162.            Action: NMAKE will ignore the undefined macroname.  You may use only 
  14163.            predefined special macros. 
  14164.  
  14165.  U4007     file name 'filename' too long; truncating to 8.3 
  14166.            Explanation: The specified filename is too long for a FAT file 
  14167.            system name. 
  14168.            Action: NMAKE will shorten the filename to at most an 
  14169.            eight-character name and 3-character extension. 
  14170.  
  14171.  U4008     removed target 'filename' 
  14172.            Explanation: While deleting non-precious files, NMAKE erased the 
  14173.            specified filename which was a target. 
  14174.            Action: Check your lists of targets and dependent files to be sure 
  14175.            that filename is not needed. 
  14176.  
  14177.  
  14178. ΓòÉΓòÉΓòÉ 22.3.3. Informational Messages (Part 3) 2-6 ΓòÉΓòÉΓòÉ
  14179.  
  14180.  Message 2 'filename' is up-to-date. 
  14181.            Explanation: The specified target filename is no older than any of 
  14182.            its dependent files. 
  14183.            Action: NMAKE does not need to rebuild this target. 
  14184.  
  14185.  Message 3 **'file1' newer than 'file2' 
  14186.            Explanation: While reporting creation times of files, NMAKE notes 
  14187.            that file1 was created after file2. 
  14188.            Action: [none] 
  14189.  
  14190.  Message 5 touch 'filename' 
  14191.            Explanation: You specified option /t to touch targets with the 
  14192.            current date and time. 
  14193.            Action: NMAKE has updated the creation time of filename. 
  14194.  
  14195.  Message 6 'filename' target does not exist 
  14196.            Explanation: The specified filename could not be found. 
  14197.            Action: NMAKE will rebuild the target. 
  14198.  
  14199.  
  14200. ΓòÉΓòÉΓòÉ 23. Glossary ΓòÉΓòÉΓòÉ
  14201.  
  14202. This glossary defines many of the terms used in this book. It includes terms 
  14203. and definitions from the IBM Dictionary of Computing, as well as terms specific 
  14204. to the OS/2 operating system and the Presentation Manager. It is not a complete 
  14205. glossary for the entire OS/2 operating system; nor is it a complete dictionary 
  14206. of computer terms. 
  14207.  
  14208. Other primary sources for these definitions are: 
  14209.  
  14210.      The American National Standard Dictionary for Information Systems, ANSI 
  14211.       X3.172-1990, copyrighted 1990 by the American National Standards 
  14212.       Institute, 11 West 42nd Street, New York, New York 10036. These 
  14213.       definitions are identified by the symbol (A) after the definition. 
  14214.  
  14215.      The Information Technology Vocabulary, developed by Subcommittee 1, Joint 
  14216.       Technical Committee 1, of the International Organization for 
  14217.       Standardization and the International Electrotechnical Commission 
  14218.       (ISO/IEC JTC1/SC1). Definitions of published parts of this vocabulary are 
  14219.       identified by the symbol (I) after the definition; definitions taken from 
  14220.       draft international standards, committee drafts, and working papers being 
  14221.       developed by ISO/IEC JTC1/SC1 are identified by the symbol (T) after the 
  14222.       definition, indicating that final agreement has not yet been reached 
  14223.       among the participating National Bodies of SC1. 
  14224.  
  14225.  
  14226. ΓòÉΓòÉΓòÉ 23.1. Glossary Listing ΓòÉΓòÉΓòÉ
  14227.  
  14228. Select a starting letter of glossary terms: 
  14229.  
  14230.  A    N 
  14231.  B    O 
  14232.  C    P 
  14233.  D    Q 
  14234.  E    R 
  14235.  F    S 
  14236.  G    T 
  14237.  H    U 
  14238.  I    V 
  14239.  J    W 
  14240.  K    X 
  14241.  L    Y 
  14242.  M    Z 
  14243.  
  14244.  
  14245. ΓòÉΓòÉΓòÉ <hidden> Glossary - A ΓòÉΓòÉΓòÉ
  14246.  
  14247.  accelerator  -In SAA Common User Access architecture, a key or combination of 
  14248.    keys that invokes an application-defined function. 
  14249.  
  14250.  accelerator table  -A table used to define which key strokes are treated as 
  14251.    accelerators and the commands they are translated into. 
  14252.  
  14253.  access mode  -The manner in which an application gains access to a file it has 
  14254.    opened. Examples of access modes are read-only, write-only, and read/write. 
  14255.  
  14256.  access permission  -All access rights that a user has regarding an object. (I)
  14257.  
  14258.  action  -One of a set of defined tasks that a computer performs. Users request 
  14259.    the application to perform an action in several ways, such as typing a 
  14260.    command, pressing a function key, or selecting the action name from an 
  14261.    action bar or menu. 
  14262.  
  14263.  action bar  -In SAA Common User Access architecture, the area at the top of a 
  14264.    window that contains choices that give a user access to actions available in 
  14265.    that window. 
  14266.  
  14267.  action point  -The current position on the screen at which the pointer is 
  14268.    pointing. Contrast with hot spot and input focus. 
  14269.  
  14270.  active program  -A program currently running on the computer.  An active 
  14271.    program can be interactive (running and receiving input from the user) or 
  14272.    noninteractive (running but not receiving input from the user). See also 
  14273.    interactive program and noninteractive program. 
  14274.  
  14275.  active window  -The window with which the user is currently interacting. 
  14276.  
  14277.  address space  -(1) The range of addresses available to a program. (A)  (2) 
  14278.    The area of virtual storage available for a particular job. 
  14279.  
  14280.  alphanumeric video output  -Output to the logical video buffer when the video 
  14281.    adapter is in text mode and the logical video buffer is addressed by an 
  14282.    application as a rectangular array of character cells. 
  14283.  
  14284.  American National Standard Code for Information Interchange  -The standard 
  14285.    code, using a coded character set consisting of 7-bit coded characters (8 
  14286.    bits including parity check), that is used for information interchange among 
  14287.    data processing systems, data communication systems, and associated 
  14288.    equipment. The ASCII set consists of control characters and graphic 
  14289.    characters. (A) 
  14290.  
  14291.    Note:  IBM has defined an extension to ASCII code (characters 128-255). 
  14292.  
  14293.  anchor  -A window procedure that handles Presentation Manager* message 
  14294.    conversions between an icon procedure and an application. 
  14295.  
  14296.  anchor block  -An area of Presentation-Manager-internal resources to allocated 
  14297.    process or thread that calls WinInitialize. 
  14298.  
  14299.  anchor point  -A point in a window used by a program designer or by a window 
  14300.    manager to position a subsequently appearing window. 
  14301.  
  14302.  ANSI  -American National Standards Institute. 
  14303.  
  14304.  APA  -All points addressable. 
  14305.  
  14306.  API  -Application programming interface. 
  14307.  
  14308.  application  -A collection of software components used to perform specific 
  14309.    types of work on a computer; for example, a payroll application, an airline 
  14310.    reservation application, a network application. 
  14311.  
  14312.  application object  -In SAA Advanced Common User Access architecture, a form 
  14313.    that an application provides for a user; for example, a spreadsheet form. 
  14314.    Contrast with user object. 
  14315.  
  14316.  application programming interface (API)  -A functional interface supplied by 
  14317.    the operating system or by a separately orderable licensed program that 
  14318.    allows an application program written in a high-level language to use 
  14319.    specific data or functions of the operating system or the licensed program. 
  14320.  
  14321.  application-modal  -Pertaining to a message box or dialog box for which 
  14322.    processing must be completed before further interaction with any other 
  14323.    window owned by the same application may take place. 
  14324.  
  14325.  area  -In computer graphics, a filled shape such as a solid rectangle. 
  14326.  
  14327.  ASCII  -American National Standard Code for Information Interchange. 
  14328.  
  14329.  ASCIIZ  -A string of ASCII characters that is terminated with a byte 
  14330.    containing the value 0. 
  14331.  
  14332.  aspect ratio  -In computer graphics, the width-to-height ratio of an area, 
  14333.    symbol, or shape. 
  14334.  
  14335.  asynchronous (ASYNC)  -(1) Pertaining to two or more processes that do not 
  14336.    depend upon the occurrence of specific events such as common timing 
  14337.    signals. (T)  (2) Without regular time relationship;  unexpected or 
  14338.    unpredictable with respect to the execution of program instructions. See 
  14339.    also synchronous. 
  14340.  
  14341.  atom  -A constant that represents a string. As soon as a string has been 
  14342.    defined as an atom, the atom can be used in place of the string to save 
  14343.    space. Strings are associated with their respective atoms in an atom table. 
  14344.    See also integer atom. 
  14345.  
  14346.  atom table  -A table used to relate atoms with the strings that they 
  14347.    represent. Also in the table is the mechanism by which the presence of a 
  14348.    string can be checked. 
  14349.  
  14350.  atomic operation  -An operation that completes its work on an object before 
  14351.    another operation can be performed on the same object. 
  14352.  
  14353.  attribute  -A characteristic or property that can be controlled, usually to 
  14354.    obtain a required appearance;  for example, the color of a line. See also 
  14355.    graphics attributes and segment attributes. 
  14356.  
  14357.  automatic link  -In Information Presentation Facility (IPF), a link that 
  14358.    begins a chain reaction at the primary window. When the user selects the 
  14359.    primary window, an automatic link is activated to display secondary windows. 
  14360.  
  14361.  AVIO  -Advanced Video Input/Output. 
  14362.  
  14363.  
  14364. ΓòÉΓòÉΓòÉ <hidden> Glossary - B ΓòÉΓòÉΓòÉ
  14365.  
  14366.  B╨Æzier curve  -(1) A mathematical technique of specifying smooth continous 
  14367.    lines and surfaces, which require a starting point and a finishing point 
  14368.    with several intermediate points that influence or control the path of the 
  14369.    linking curve. Named after Dr. P. B╨Æzier. (2) (D of C) In the AIX Graphics 
  14370.    Library, a cubic spline approximation to a set of four control points that 
  14371.    passes through the first and fourth control points and that has a continuous 
  14372.    slope where two spline segments meet. Named after Dr. P. B╨Æzier. 
  14373.  
  14374.  background  -(1) In multiprogramming, the conditions under which low-priority 
  14375.    programs are executed. Contrast with foreground. (2) An active session that 
  14376.    is not currently displayed on the screen. 
  14377.  
  14378.  background color  -The color in which the background of a graphic primitive is 
  14379.    drawn. 
  14380.  
  14381.  background mix  -An attribute that determines how the background of a graphic 
  14382.    primitive is combined with the existing color of the graphics presentation 
  14383.    space. Contrast with mix. 
  14384.  
  14385.  background program  -In multiprogramming, a program that executes with a low 
  14386.    priority. Contrast with foreground program. 
  14387.  
  14388.  bit map  -A representation in memory of the data displayed on an APA device, 
  14389.    usually the screen. 
  14390.  
  14391.  block  -(1) A string of data elements recorded or transmitted as a unit. The 
  14392.    elements may be characters, words, or logical records. (T)  (2) To record 
  14393.    data in a block. (3) A collection of contiguous records recorded as a unit. 
  14394.    Blocks are separated by interblock gaps and each block may contain one or 
  14395.    more records. (A)
  14396.  
  14397.  block device  -A storage device that performs I/O operations on blocks of data 
  14398.    called sectors. Data on block devices can be randomly accessed. Block 
  14399.    devices are designated by a drive letter (for example, C:). 
  14400.  
  14401.  blocking mode  -A condition set by an application that determines when its 
  14402.    threads might block. For example, an application might set the Pipemode 
  14403.    parameter for the DosCreateNPipe function so that its threads perform I/O 
  14404.    operations to the named pipe block when no data is available. 
  14405.  
  14406.  border  -A visual indication (for example, a separator line or a background 
  14407.    color) of the boundaries of a window. 
  14408.  
  14409.  boundary determination  -An operation used to compute the size of the smallest 
  14410.    rectangle that encloses a graphics object on the screen. 
  14411.  
  14412.  breakpoint  -(1) A point in a computer program where execution may be halted. 
  14413.    A breakpoint is usually at the beginning of an instruction where halts, 
  14414.    caused by external intervention, are convenient for resuming 
  14415.    execution. (T)  (2) A place in a program, specified by a command or a 
  14416.    condition, where the system halts execution and gives control to the 
  14417.    workstation user or to a specified program. 
  14418.  
  14419.  broken pipe  -When all of the handles that access one end of a pipe have been 
  14420.    closed. 
  14421.  
  14422.  bucket  -One or more fields in which the result of an operation is kept. 
  14423.  
  14424.  buffer  -(1) A portion of storage used to hold input or output data 
  14425.    temporarily. (2) To allocate and schedule the use of buffers. (A)
  14426.  
  14427.  button  -A mechanism used to request or initiate an action. See also barrel 
  14428.    buttons, bezel buttons, mouse button, push button, and radio button. 
  14429.  
  14430.  byte pipe  -Pipes that handle data as byte streams. All unnamed pipes are byte 
  14431.    pipes. Named pipes can be byte pipes or message pipes. See byte stream. 
  14432.  
  14433.  byte stream  -Data that consists of an unbroken stream of bytes. 
  14434.  
  14435.  
  14436. ΓòÉΓòÉΓòÉ <hidden> Glossary - C ΓòÉΓòÉΓòÉ
  14437.  
  14438.  cache  -A high-speed buffer storage that contains frequently accessed 
  14439.    instructions and data; it is used to reduce access time. 
  14440.  
  14441.  cached micro presentation space  -A presentation space from a 
  14442.    Presentation-Manager-owned store of micro presentation spaces. It can be 
  14443.    used for drawing to a window only, and must be returned to the store when 
  14444.    the task is complete. 
  14445.  
  14446.  CAD  -Computer-Aided Design. 
  14447.  
  14448.  call  -(1) The action of bringing a computer program, a routine, or a 
  14449.    subroutine into effect, usually by specifying the entry conditions and 
  14450.    jumping to an entry point. (I)  (A)  (2) To transfer control to a procedure, 
  14451.    program, routine, or subroutine. 
  14452.  
  14453.  calling sequence  -A sequence of instructions together with any associated 
  14454.    data necessary to execute a call. (T)
  14455.  
  14456.  Cancel  -An action that removes the current window or menu without processing 
  14457.    it, and returns the previous window. 
  14458.  
  14459.  cascaded menu  -In the OS/2 operating system, a menu that appears when the 
  14460.    arrow to the right of a cascading choice is selected. It contains a set of 
  14461.    choices that are related to the cascading choice. Cascaded menus are used to 
  14462.    reduce the length of a menu. See also cascading choice. 
  14463.  
  14464.  cascading choice  -In SAA Common User Access architecture, a choice in a menu 
  14465.    that, when selected, produces a cascaded menu containing other choices.  An 
  14466.    arrow () appears to the right of the cascading choice. 
  14467.  
  14468.  CASE statement  -In PM programming, provides the body of a window procedure. 
  14469.    There is usually one CASE statement for each message type supported by an 
  14470.    application. 
  14471.  
  14472.  CGA  -Color graphics adapter. 
  14473.  
  14474.  chained list  -A list in which the data elements may be dispersed but in which 
  14475.    each data element contains information for locating the 
  14476.    next. (T)Synonymous with linked list. 
  14477.  
  14478.  character  -A letter, digit, or other symbol. 
  14479.  
  14480.  character box  -In computer graphics, the boundary that defines, in world 
  14481.    coordinates, the horizontal and vertical space occupied by a single 
  14482.    character from a character set. See also character mode. Contrast with 
  14483.    character cell. 
  14484.  
  14485.  character cell  -The physical, rectangular space in which any single character 
  14486.    is displayed on a screen or printer device. Position is addressed by row and 
  14487.    column coordinates. Contrast with character box. 
  14488.  
  14489.  character code  -The means of addressing a character in a character set, 
  14490.    sometimes called code point. 
  14491.  
  14492.  character device  -A device that performs I/O operations on one character at a 
  14493.    time. Because character devices view data as a stream of bytes, 
  14494.    character-device data cannot be randomly accessed. Character devices include 
  14495.    the keyboard, mouse, and printer, and are referred to by name. 
  14496.  
  14497.  character mode  -A mode that, in conjunction with the font type, determines 
  14498.    the extent to which graphics characters are affected by the character box, 
  14499.    shear, and angle attributes. 
  14500.  
  14501.  character set  -(1) An ordered set of unique representations called 
  14502.    characters; for example, the 26 letters of English alphabet, Boolean 0 and 
  14503.    1, the set of symbols in the Morse code, and the 128 ASCII 
  14504.    characters. (A)  (2) All the valid characters for a programming language or 
  14505.    for a computer system. (3) A group of characters used for a specific reason; 
  14506.    for example, the set of characters a printer can print. 
  14507.  
  14508.  check box  -In SAA Advanced Common User Access architecture, a square box with 
  14509.    associated text that represents a choice. When a user selects a choice, an X 
  14510.    appears in the check box to indicate that the choice is in effect. The user 
  14511.    can clear the check box by selecting the choice again. Contrast with radio 
  14512.    button. 
  14513.  
  14514.  check mark  - (1) (D of C) In SAA Advanced Common User Access architecture, a 
  14515.    symbol that shows that a choice is currently in effect. (2) The symbol that 
  14516.    is used to indicate a selected item on a pull-down menu. 
  14517.  
  14518.  child process  -In the OS/2 operating system, a process started by another 
  14519.    process, which is called the parent process. Contrast with parent process. 
  14520.  
  14521.  child window  -A window that appears within the border of its parent window 
  14522.    (either a primary window or another child window). When the parent window is 
  14523.    resized, moved, or destroyed, the child window also is resized, moved, or 
  14524.    destroyed; however, the child window can be moved or resized independently 
  14525.    from the parent window, within the boundaries of the parent window. Contrast 
  14526.    with parent window. 
  14527.  
  14528.  choice  -(1) An option that can be selected. The choice can be presented as 
  14529.    text, as a symbol (number or letter), or as an icon (a pictorial symbol). 
  14530.    (2) (D of C) In SAA Common User Access architecture, an item that a user can 
  14531.    select. 
  14532.  
  14533.  chord  -(1) To press more than one button on a pointing device while the 
  14534.    pointer is within the limits that the user has specified for the operating 
  14535.    environment. (2) (D of C) In graphics, a short line segment whose end points 
  14536.    lie on a circle. Chords are a means for producing a circular image from 
  14537.    straight lines. The higher the number of chords per circle, the smoother the 
  14538.    circular image. 
  14539.  
  14540.  class  -In object-oriented design or programming, a group of objects that 
  14541.    share a common definition and that therefore share common properties, 
  14542.    operations, and behavior. Members of the group are called instances of the 
  14543.    class. 
  14544.  
  14545.  class method  -In System Object Model, an action that can be performed on a 
  14546.    class object. Synonymous with factory method. 
  14547.  
  14548.  class object  -In System Object Model, the run-time implementation of a class. 
  14549.  
  14550.  class style  -The set of properties that apply to every window in a window 
  14551.    class. 
  14552.  
  14553.  client  -(1) A functional unit that receives shared services from a 
  14554.    server. (T)  (2) A user, as in a client process that uses a named pipe or 
  14555.    queue that is created and owned by a server process. 
  14556.  
  14557.  client area  -The part of the window, inside the border, that is below the 
  14558.    menu bar. It is the user's work space, where a user types information and 
  14559.    selects choices from selection fields.  In primary windows, it is where an 
  14560.    application programmer presents the objects that a user works on. 
  14561.  
  14562.  client program  -An application that creates and manipulates instances of 
  14563.    classes. 
  14564.  
  14565.  client window  -The window in which the application displays output and 
  14566.    receives input. This window is located inside the frame window, under the 
  14567.    window title bar and any menu bar, and within any scroll bars. 
  14568.  
  14569.  clip limits  -The area of the paper that can be reached by a printer or 
  14570.    plotter. 
  14571.  
  14572.  clipboard  -In SAA Common User Access architecture, an area of computer 
  14573.    memory, or storage, that temporarily holds data. Data in the clipboard is 
  14574.    available to other applications. 
  14575.  
  14576.  clipping  -In computer graphics, removing those parts of a display image that 
  14577.    lie outside a given boundary. (I)  (A)
  14578.  
  14579.  clipping area  -The area in which the window can paint. 
  14580.  
  14581.  clipping path  -A clipping boundary in world-coordinate space. 
  14582.  
  14583.  clock tick  -The minimum unit of time that the system tracks. If the system 
  14584.    timer currently counts at a rate of X Hz, the system tracks the time every 
  14585.    1/X of a second. Also known as time tick. 
  14586.  
  14587.  CLOCK$  -Character-device name reserved for the system clock. 
  14588.  
  14589.  code page  -An assignment of graphic characters and control-function meanings 
  14590.    to all code points. 
  14591.  
  14592.  code point  -(1) Synonym for character code. (2) (D of C) A 1-byte code 
  14593.    representing one of 256 potential characters. 
  14594.  
  14595.  code segment  -An executable section of programming code within a load module. 
  14596.  
  14597.  color dithering  -See dithering. 
  14598.  
  14599.  color graphics adapter (CGA)  -An adapter that simultaneously provides four 
  14600.    colors and is supported by all IBM Personal Computer and Personal System/2 
  14601.    models. 
  14602.  
  14603.  command  -The name and parameters associated with an action that a program can 
  14604.    perform. 
  14605.  
  14606.  command area  -An area composed of a command field prompt and a command entry 
  14607.    field. 
  14608.  
  14609.  command entry field  -An entry field in which users type commands. 
  14610.  
  14611.  command line  -On a display screen, a display line, sometimes at the bottom of 
  14612.    the screen, in which only commands can be entered. 
  14613.  
  14614.  command mode  -A state of a system or device in which the user can enter 
  14615.    commands. 
  14616.  
  14617.  command prompt  -A field prompt showing the location of the command entry 
  14618.    field in a panel. 
  14619.  
  14620.  Common Programming Interface (CPI)  -Definitions of those application 
  14621.    development languages and services that have, or are intended to have, 
  14622.    implementations on and a high degree of commonality across the SAA 
  14623.    environments. One of the three SAA architectural areas. See also Common User 
  14624.    Access architecture. 
  14625.  
  14626.  Common User Access (CUA) architecture  - Guidelines for the dialog between a 
  14627.    human and a workstation or terminal. One of the three SAA architectural 
  14628.    areas. See also Common Programming Interface. 
  14629.  
  14630.  compile  -To translate a program written in a higher-level programming 
  14631.    language into a machine language program. 
  14632.  
  14633.  composite window  -A window composed of other windows (such as a frame window, 
  14634.    frame-control windows, and a client window) that are kept together as a unit 
  14635.    and that interact with each other. 
  14636.  
  14637.  computer-aided design (CAD)  -The use of a computer to design or change a 
  14638.    product, tool, or machine, such as using a computer for drafting or 
  14639.    illustrating. 
  14640.  
  14641.  COM1, COM2, COM3  -Character-device names reserved for serial ports 1 through 
  14642.    3. 
  14643.  
  14644.  CON  -Character-device name reserved for the console keyboard and screen. 
  14645.  
  14646.  conditional cascaded menu  -A pull-down menu associated with a menu item that 
  14647.    has a cascade mini-push button beside it in an object's pop-up menu. The 
  14648.    conditional cascaded menu is displayed when the user selects the mini-push 
  14649.    button. 
  14650.  
  14651.  container  -In SAA Common User Access architecture, an object that holds other 
  14652.    objects. A folder is an example of a container object. See also folder and 
  14653.    object. 
  14654.  
  14655.  contextual help  -In SAA Common User Access Architecture, help that gives 
  14656.    specific information about the item the cursor is on. The help is contextual 
  14657.    because it provides information about a specific item as it is currently 
  14658.    being used. Contrast with extended help. 
  14659.  
  14660.  contiguous  -Touching or joining at a common edge or boundary, for example, an 
  14661.    unbroken consecutive series of storage locations. 
  14662.  
  14663.  control  -In SAA Advanced Common User Access architecture, a component of the 
  14664.    user interface that allows a user to select choices or type information; for 
  14665.    example, a check box, an entry field, a radio button. 
  14666.  
  14667.  control area  -A storage area used by a computer program to hold control information. (I)  (A)
  14668.  
  14669.  Control Panel  -In the Presentation Manager, a program used to set up user 
  14670.    preferences that act globally across the system. 
  14671.  
  14672.  Control Program  -(1) The basic functions of the operating system, including 
  14673.    DOS emulation and the support for keyboard, mouse, and video input/output. 
  14674.    (2) A computer program designed to schedule and to supervise the execution 
  14675.    of programs of a computer system. (I)  (A)
  14676.  
  14677.  control window  -A window that is used as part of a composite window to 
  14678.    perform simple input and output tasks. Radio buttons and check boxes are 
  14679.    examples. 
  14680.  
  14681.  control word  -An instruction within a document that identifies its parts or 
  14682.    indicates how to format the document. 
  14683.  
  14684.  coordinate space  -A two-dimensional set of points used to generate output on 
  14685.    a video display of printer. 
  14686.  
  14687.  Copy  -A choice that places onto the clipboard, a copy of what the user has 
  14688.    selected. See also Cut and Paste. 
  14689.  
  14690.  correlation  -The action of determining which element or object within a 
  14691.    picture is at a given position on the display. This follows a pick 
  14692.    operation. 
  14693.  
  14694.  coverpage window  -A window in which the application's help information is 
  14695.    displayed. 
  14696.  
  14697.  CPI  -Common Programming Interface. 
  14698.  
  14699.  critical extended attribute  -An extended attribute that is necessary for the 
  14700.    correct operation of the system or a particular application. 
  14701.  
  14702.  critical section  -(1) In programming languages, a part of an asynchronous 
  14703.    procedure that cannot be executed simultaneously with a certain part of 
  14704.    another asynchronous procedure. (I)
  14705.  
  14706.    Note:  Part of the other asynchronous procedure also is a critical section. 
  14707.    (2) A section of code that is not reentrant; that is, code that can be 
  14708.    executed by only one thread at a time. 
  14709.  
  14710.  CUA architecture  -Common User Access architecture. 
  14711.  
  14712.  current position  -In computer graphics, the position, in user coordinates, 
  14713.    that becomes the starting point for the next graphics routine, if that 
  14714.    routine does not explicitly specify a starting point. 
  14715.  
  14716.  cursor  -A symbol displayed on the screen and associated with an input device. 
  14717.    The cursor indicates where input from the device will be placed. Types of 
  14718.    cursors include text cursors, graphics cursors, and selection cursors. 
  14719.    Contrast with pointer and input focus. 
  14720.  
  14721.  Cut  -In SAA Common User Access architecture, a choice that removes a selected 
  14722.    object, or a part of an object, to the clipboard, usually compressing the 
  14723.    space it occupied in a window. See also Copy and Paste. 
  14724.  
  14725.  
  14726. ΓòÉΓòÉΓòÉ <hidden> Glossary - D ΓòÉΓòÉΓòÉ
  14727.  
  14728.  daisy chain  -A method of device interconnection for determining interrupt 
  14729.    priority by connecting the interrupt sources serially. 
  14730.  
  14731.  data segment  -A nonexecutable section of a program module; that is, a section 
  14732.    of a program that contains data definitions. 
  14733.  
  14734.  data structure  -The syntactic structure of symbolic expressions and their 
  14735.    storage-allocation characteristics. (T)
  14736.  
  14737.  data transfer  -The movement of data from one object to another by way of the 
  14738.    clipboard or by direct manipulation. 
  14739.  
  14740.  DBCS  -Double-byte character set. 
  14741.  
  14742.  DDE  -Dynamic data exchange. 
  14743.  
  14744.  deadlock  -(1) Unresolved contention for the use of a resource. (2) An error 
  14745.    condition in which processing cannot continue because each of two elements 
  14746.    of the process is waiting for an action by, or a response from, the other. 
  14747.    (3) An impasse that occurs when multiple processes are waiting for the 
  14748.    availability of a resource that will not become available because it is 
  14749.    being held by another process that is in a similar wait state. 
  14750.  
  14751.  debug  -To detect, diagnose, and eliminate errors in programs. (T)
  14752.  
  14753.  decipoint  -In printing, one tenth of a point.  There are 72 points in an 
  14754.    inch. 
  14755.  
  14756.  default procedure  -A function provided by the Presentation Manager Interface 
  14757.    that may be used to process standard messages from dialogs or windows. 
  14758.  
  14759.  default value  -A value assumed when no value has been specified. Synonymous 
  14760.    with assumed value. For example, in the graphics programming interface, the 
  14761.    default line-type is 'solid'. 
  14762.  
  14763.  definition list  -A type of list that pairs a term and its description. 
  14764.  
  14765.  delta  -An application-defined threshold, or number of container items, from 
  14766.    either end of the list. 
  14767.  
  14768.  descendant  -See child process. 
  14769.  
  14770.  descriptive text  -Text used in addition to a field prompt to give more 
  14771.    information about a field. 
  14772.  
  14773.  Deselect all  -A choice that cancels the selection of all of the objects that 
  14774.    have been selected in that window. 
  14775.  
  14776.  Desktop Manager  -In the Presentation Manager, a window that displays a list 
  14777.    of groups of programs, each of which can be started or stopped. 
  14778.  
  14779.  desktop window  -The window, corresponding to the physical device, against 
  14780.    which all other types of windows are established. 
  14781.  
  14782.  detached process  -A background process that runs independent of the parent 
  14783.    process. 
  14784.  
  14785.  detent  -A point on a slider that represents an exact value to which a user 
  14786.    can move the slider arm. 
  14787.  
  14788.  device context  -A logical description of a data destination such as memory, 
  14789.    metafile, display, printer, or plotter. See also direct device context, 
  14790.    information device context, memory device context, metafile device context, 
  14791.    queued device context, and screen device context. 
  14792.  
  14793.  device driver  -A file that contains the code needed to attach and use a 
  14794.    device such as a display, printer, or plotter. 
  14795.  
  14796.  device space  -(1) Coordinate space in which graphics are assembled after all 
  14797.    GPI transformations have been applied. Device space is defined in 
  14798.    device-specific units. (2) ( D of C) In computer graphics, a space defined 
  14799.    by the complete set of addressable points of a display device. (A)
  14800.  
  14801.  dialog  -The interchange of information between a computer and its user 
  14802.    through a sequence of requests by the user and the presentation of responses 
  14803.    by the computer. 
  14804.  
  14805.  dialog box  -In SAA Advanced Common User Access architecture, a movable 
  14806.    window, fixed in size, containing controls that a user uses to provide 
  14807.    information required by an application so that it can continue to process a 
  14808.    user request. See also message box, primary window, secondary window. Also 
  14809.    known as a pop-up window. 
  14810.  
  14811.  Dialog Box Editor  -A WYSIWYG editor that creates dialog boxes for 
  14812.    communicating with the application user. 
  14813.  
  14814.  dialog item  -A component (for example, a menu or a button) of a dialog box. 
  14815.    Dialog items are also used when creating dialog templates. 
  14816.  
  14817.  dialog procedure  -A dialog window that is controlled by a window procedure. 
  14818.    It is responsible for responding to all messages sent to the dialog window. 
  14819.  
  14820.  dialog tag language  -A markup language used by the DTL compiler to create 
  14821.    dialog objects. 
  14822.  
  14823.  dialog template  -The definition of a dialog box, which contains details of 
  14824.    its position, appearance, and window ID, and the window ID of each of its 
  14825.    child windows. 
  14826.  
  14827.  direct device context  -A logical description of a data destination that is a 
  14828.    device other than the screen (for example, a printer or plotter), and where 
  14829.    the output is not to go through the spooler. Its purpose is to satisfy 
  14830.    queries. See also device context. 
  14831.  
  14832.  direct manipulation  -The user's ability to interact with an object by using 
  14833.    the mouse, typically by dragging an object around on the Desktop and 
  14834.    dropping it on other objects. 
  14835.  
  14836.  direct memory access (DMA)  -A technique for moving data directly between main 
  14837.    storage and peripheral equipment without requiring processing of the data by 
  14838.    the processing unit.(T)
  14839.  
  14840.  directory  -A type of file containing the names and controlling information 
  14841.    for other files or other directories. 
  14842.  
  14843.  display point  -Synonym for pel. 
  14844.  
  14845.  dithering  -(1) The process used in color displays whereby every other pel is 
  14846.    set to one color, and the intermediate pels are set to another. Together 
  14847.    they produce the effect of a third color at normal viewing distances. This 
  14848.    process can only be used on solid areas of color; it does not work, for 
  14849.    example, on narrow lines. (2) (D of C ) In computer graphics, a technique of 
  14850.    interleaving dark and light pixels so that the resulting image looks 
  14851.    smoothly shaded when viewed from a distance. 
  14852.  
  14853.  DMA  -Direct memory access. 
  14854.  
  14855.  DOS Protect Mode Interface (DPMI)  -An interface between protect mode and real 
  14856.    mode programs. 
  14857.  
  14858.  double-byte character set (DBCS)  -A set of characters in which each character 
  14859.    is represented by two bytes.  Languages such as Japanese, Chinese, and 
  14860.    Korean, which contain more characters than can be represented by 256 code 
  14861.    points, require double-byte character sets. Since each character requires 
  14862.    two bytes, the entering, displaying, and printing of DBCS characters 
  14863.    requires hardware and software that can support DBCS. 
  14864.  
  14865.  doubleword  -A contiguous sequence of bits or characters that comprises two 
  14866.    computer words and is capable of being addressed as a unit. (A)
  14867.  
  14868.  DPMI  -DOS Protect Mode Interface. 
  14869.  
  14870.  drag  -In SAA Common User Access, to use a pointing device to move an object; 
  14871.    for example, clicking on a window border, and dragging it to make the window 
  14872.    larger. 
  14873.  
  14874.  dragging  -(1) In computer graphics, moving an object on the display screen as 
  14875.    if it were attached to the pointer. (2) (D of C) In computer graphics, 
  14876.    moving one or more segments on a display surface by translating. (I)  (A)
  14877.  
  14878.  drawing chain  -See segment chain. 
  14879.  
  14880.  drop  -To fix the position of an object that is being dragged, by releasing 
  14881.    the select button of the pointing device. 
  14882.  
  14883.  drop  -To fix the position of an object that is being dragged, by releasing 
  14884.    the select button of the pointing device. See also drag. 
  14885.  
  14886.  DTL  -Dialog tag language. 
  14887.  
  14888.  dual-boot function  -A feature of the OS/2 operating system that allows the 
  14889.    user to start DOS from within the operating system, or an OS/2 session from 
  14890.    within DOS. 
  14891.  
  14892.  duplex  -Pertaining to communication in which data can be sent and received at 
  14893.    the same time. Synonymous with full duplex. 
  14894.  
  14895.  dynamic data exchange (DDE)  -A message protocol used to communicate between 
  14896.    applications that share data. The protocol uses shared memory as the means 
  14897.    of exchanging data between applications. 
  14898.  
  14899.  dynamic data formatting  -A formatting procedure that enables you to 
  14900.    incorporate text, bit maps or metafiles in an IPF window at execution time. 
  14901.  
  14902.  dynamic link library  -A collection of executable programming code and data 
  14903.    that is bound to an application at load time or run time, rather than during 
  14904.    linking. The programming code and data in a dynamic link library can be 
  14905.    shared by several applications simultaneously. 
  14906.  
  14907.  dynamic linking  -The process of resolving external references in a program 
  14908.    module at load time or run time rather than during linking. 
  14909.  
  14910.  dynamic segments  -Graphics segments drawn in exclusive-OR mix mode so that 
  14911.    they can be moved from one screen position to another without affecting the 
  14912.    rest of the displayed picture. 
  14913.  
  14914.  dynamic storage  -(1) A device that stores data in a manner that permits the 
  14915.    data to move or vary with time such that the specified data is not always 
  14916.    available for recovery. (A)  (2) A storage in which the cells require 
  14917.    repetitive application of control signals in order to retain stored data. 
  14918.    Such repetitive application of the control signals is called a refresh 
  14919.    operation. A dynamic storage may use static addressing or sensing 
  14920.    circuits. (A)  (3) See also static storage. 
  14921.  
  14922.  dynamic time slicing  -Varies the size of the time slice depending on system 
  14923.    load and paging activity. 
  14924.  
  14925.  dynamic-link module  -A module that is linked at load time or run time. 
  14926.  
  14927.  
  14928. ΓòÉΓòÉΓòÉ <hidden> Glossary - E ΓòÉΓòÉΓòÉ
  14929.  
  14930.  EBCDIC  -Extended binary-coded decimal interchange code. A coded character set 
  14931.    consisting of 8-bit coded characters (9 bits including parity check), used 
  14932.    for information interchange among data processing systems, data 
  14933.    communications systems, and associated equipment. 
  14934.  
  14935.  edge-triggered  -Pertaining to an event semaphore that is posted then reset 
  14936.    before a waiting thread gets a chance to run. The semaphore is considered to 
  14937.    be posted for the rest of that thread's waiting period; the thread does not 
  14938.    have to wait for the semaphore to be posted again. 
  14939.  
  14940.  EGA  -Extended graphics adapter. 
  14941.  
  14942.  element  -An entry in a graphics segment that comprises one or more graphics 
  14943.    orders and that is addressed by the element pointer. 
  14944.  
  14945.  EMS  -Expanded Memory Specification. 
  14946.  
  14947.  encapsulation  -Hiding an object's implementation, that is, its private, 
  14948.    internal data and methods. Private variables and methods are accessible only 
  14949.    to the object that contains them. 
  14950.  
  14951.  entry field  -In SAA Common User Access architecture, an area where a user 
  14952.    types information. Its boundaries are usually indicated. See also selection 
  14953.    field. 
  14954.  
  14955.  entry panel  -A defined panel type containing one or more entry fields and 
  14956.    protected information such as headings, prompts, and explanatory text. 
  14957.  
  14958.  entry-field control  -The component of a user interface that provides the 
  14959.    means by which the application receives data entered by the user in an entry 
  14960.    field. When it has the input focus, the entry field displays a flashing 
  14961.    pointer at the position where the next typed character will go. 
  14962.  
  14963.  environment segment  -The list of environment variables and their values for a 
  14964.    process. 
  14965.  
  14966.  environment strings  -ASCII text strings that define the value of environment 
  14967.    variables. 
  14968.  
  14969.  environment variables  -Variables that describe the execution environment of a 
  14970.    process. These variables are named by the operating system or by the 
  14971.    application. Environment variables named by the operating system are PATH, 
  14972.    DPATH, INCLUDE, INIT, LIB, PROMPT, and TEMP. The values of environment 
  14973.    variables are defined by the user in the CONFIG.SYS file, or by using the 
  14974.    SET command at the OS/2 command prompt. 
  14975.  
  14976.  error message  -An indication that an error has been detected. (A)
  14977.  
  14978.  event semaphore  -A semaphore that enables a thread to signal a waiting thread 
  14979.    or threads that an event has occurred or that a task has been completed. The 
  14980.    waiting threads can then perform an action that is dependent on the 
  14981.    completion of the signaled event. 
  14982.  
  14983.  exception  -An abnormal condition such as an I/O error encountered in 
  14984.    processing a data set or a file. 
  14985.  
  14986.  exclusive system semaphore  -A system semaphore that can be modified only by 
  14987.    threads within the same process. 
  14988.  
  14989.  executable file  -(1) A file that contains programs or commands that perform 
  14990.    operations or actions to be taken. (2) A collection of related data records 
  14991.    that execute programs. 
  14992.  
  14993.  exit  -To execute an instruction within a portion of a computer program in 
  14994.    order to terminate the execution of that portion. Such portions of computer 
  14995.    programs include loops, subroutines, modules, and so on. (T)  Repeated exit 
  14996.    requests return the user to the point from which all functions provided to 
  14997.    the system are accessible. Contrast with cancel. 
  14998.  
  14999.  expanded memory specification (EMS)  -Enables DOS applications to access 
  15000.    memory above the 1MB real mode addressing limit. 
  15001.  
  15002.  extended attribute  -An additional piece of information about a file object, 
  15003.    such as its data format or category. It consists of a name and a value. A 
  15004.    file object may have more than one extended attribute associated with it. 
  15005.  
  15006.  extended help  -In SAA Common User Access architecture, a help action that 
  15007.    provides information about the contents of the application window from which 
  15008.    a user requested help. Contrast with contextual help. 
  15009.  
  15010.  extended-choice selection  -A mode that allows the user to select more than 
  15011.    one item from a window. Not all windows allow extended choice selection. 
  15012.    Contrast with multiple-choice selection. 
  15013.  
  15014.  extent  -Continuous space on a disk or diskette that is occupied by or 
  15015.    reserved for a particular data set, data space, or file. 
  15016.  
  15017.  external link  -In Information Presentation Facility, a link that connects 
  15018.    external online document files. 
  15019.  
  15020.  
  15021. ΓòÉΓòÉΓòÉ <hidden> Glossary - F ΓòÉΓòÉΓòÉ
  15022.  
  15023.  family-mode application  -An application program that can run in the OS/2 
  15024.    environment and in the DOS environment; however, it cannot take advantage of 
  15025.    many of the OS/2-mode facilities, such as multitasking, interprocess 
  15026.    communication, and dynamic linking. 
  15027.  
  15028.  FAT  -File allocation table. 
  15029.  
  15030.  FEA  -Full extended attribute. 
  15031.  
  15032.  field-level help  -Information specific to the field on which the cursor is 
  15033.    positioned. This help function is "contextual" because it provides 
  15034.    information about a specific item as it is currently used; the information 
  15035.    is dependent upon the context within the work session. 
  15036.  
  15037.  FIFO  -First-in-first-out. (A)
  15038.  
  15039.  file  -A named set of records stored or processed as a unit. (T)
  15040.  
  15041.  file allocation table (FAT)  -In IBM personal computers, a table used by the 
  15042.    operating system to allocate space on a disk for a file, and to locate and 
  15043.    chain together parts of the file that may be scattered on different sectors 
  15044.    so that the file can be used in a random or sequential manner. 
  15045.  
  15046.  file attribute  -Any of the attributes that describe the characteristics of a 
  15047.    file. 
  15048.  
  15049.  File Manager  -In the Presentation Manager, a program that displays 
  15050.    directories and files, and allows various actions on them. 
  15051.  
  15052.  file specification  -The full identifier for a file, which includes its drive 
  15053.    designation, path, file name, and extension. 
  15054.  
  15055.  file system  -The combination of software and hardware that supports storing 
  15056.    information on a storage device. 
  15057.  
  15058.  file system driver (FSD)  -A program that manages file I\O and controls the 
  15059.    format of information on the storage media. 
  15060.  
  15061.  fillet  -A curve that is tangential to the end points of two adjoining lines. 
  15062.    See also polyfillet. 
  15063.  
  15064.  filtering  -An application process that changes the order of data in a queue. 
  15065.  
  15066.  first-in-first-out (FIFO)  -A queuing technique in which the next item to be 
  15067.    retrieved is the item that has been in the queue for the longest time. (A)
  15068.  
  15069.  flag  -(1) An indicator or parameter that shows the setting of a switch. (2) A 
  15070.    character that signals the occurrence of some condition, such as the end of 
  15071.    a word. (A)  (3) (D of C) A characteristic of a file or directory that 
  15072.    enables it to be used in certain ways. See also archive flag, hidden flag, 
  15073.    and read-only flag. 
  15074.  
  15075.  focus  -See input focus. 
  15076.  
  15077.  folder  -A container used to organize objects. 
  15078.  
  15079.  font  -A particular size and style of typeface that contains definitions of 
  15080.    character sets, marker sets, and pattern sets. 
  15081.  
  15082.  Font Editor  -A utility program provided with the IBM Developers Toolkit that 
  15083.    enables the design and creation of new fonts. 
  15084.  
  15085.  foreground program  -(1) The program with which the user is currently 
  15086.    interacting. Also known as interactive program. Contrast with background 
  15087.    program. (2) (D of C) In multiprogramming,  a high-priority program. 
  15088.  
  15089.  frame  -The part of a window that can contain several different visual 
  15090.    elements specified by the application, but drawn and controlled by the 
  15091.    Presentation Manager. The frame encloses the client area. 
  15092.  
  15093.  frame styles  -Standard window layouts provided by the Presentation Manager. 
  15094.  
  15095.  FSD  -File system driver. 
  15096.  
  15097.  full-duplex  -Synonym for duplex. 
  15098.  
  15099.  full-screen application  -An application that has complete control of the 
  15100.    screen. 
  15101.  
  15102.  function  -(1) In a programming language, a block, with or without formal 
  15103.    parameters, whose execution is invoked by means of a call. (2) A set of 
  15104.    related control statements that cause one or more programs to be performed. 
  15105.  
  15106.  function key  -A key that causes a specified sequence of operations to be 
  15107.    performed when it is pressed, for example, F1 and Alt-K. 
  15108.  
  15109.  function key area  -The area at the bottom of a window that contains function 
  15110.    key assignments such as F1=Help. 
  15111.  
  15112.  
  15113. ΓòÉΓòÉΓòÉ <hidden> Glossary - G ΓòÉΓòÉΓòÉ
  15114.  
  15115.  GDT  -Global Descriptor Table. 
  15116.  
  15117.  general protection fault  -An exception condition that occurs when a process 
  15118.    attempts to use storage or a module that has some level of protection 
  15119.    assigned to it, such as I/O privilege level. See also IOPL code segment. 
  15120.  
  15121.  Global Descriptor Table (GDT)  -A table that defines code and data segments 
  15122.    available to all tasks in an application. 
  15123.  
  15124.  global dynamic-link module  -A dynamic-link module that can be shared by all 
  15125.    processes in the system that refer to the module name. 
  15126.  
  15127.  global file-name character  -Either a question mark (?) or an asterisk (*) 
  15128.    used as a variable in a file name or file name extension when referring to a 
  15129.    particular file or group of files. 
  15130.  
  15131.  glyph  -A graphic symbol whose appearance conveys information. 
  15132.  
  15133.  GPI  -Graphics programming interface. 
  15134.  
  15135.  graphic primitive  -In computer graphics, a basic element, such as an arc or a 
  15136.    line, that is not made up of smaller parts and that is used to create 
  15137.    diagrams and pictures. See also graphics segment. 
  15138.  
  15139.  graphics  -(1) A picture defined in terms of graphic primitives and graphics 
  15140.    attributes. (2) (D of C) The making of charts and pictures. (3) Pertaining 
  15141.    to charts, tables, and their creation. (4) See computer graphics, coordinate 
  15142.    graphics, fixed-image graphics, interactive graphics, passive graphics, 
  15143.    raster graphics. 
  15144.  
  15145.  graphics attributes  -Attributes that apply to graphic primitives. Examples 
  15146.    are color, line type, and shading-pattern definition. See also segment 
  15147.    attributes. 
  15148.  
  15149.  graphics field  -The clipping boundary that defines the visible part of the 
  15150.    presentation-page contents. 
  15151.  
  15152.  graphics mode  -One of several states of a display. The mode determines the 
  15153.    resolution and color content of the screen. 
  15154.  
  15155.  graphics model space  -The conceptual coordinate space in which a picture is 
  15156.    constructed after any model transforms have been applied. Also known as 
  15157.    model space. 
  15158.  
  15159.  Graphics programming interface  -The formally defined programming language 
  15160.    that is between an IBM graphics program and the user of the program. 
  15161.  
  15162.  graphics segment  -A sequence of related graphic primitives and graphics 
  15163.    attributes. See also graphic primitive. 
  15164.  
  15165.  graying  -The indication that a choice on a pull-down is unavailable. 
  15166.  
  15167.  group  -A collection of logically connected controls. For example, the buttons 
  15168.    controlling paper size for a printer could be called a group. See also 
  15169.    program group. 
  15170.  
  15171.  
  15172. ΓòÉΓòÉΓòÉ <hidden> Glossary - H ΓòÉΓòÉΓòÉ
  15173.  
  15174.  handle  -(1) An identifier that represents an object, such as a device or 
  15175.    window, to the Presentation Interface. (2) (D of C) In the Advanced DOS and 
  15176.    OS/2 operating systems, a binary value created by the system that identifies 
  15177.    a drive, directory, and file so that the file can be found and opened. 
  15178.  
  15179.  hard error  -An error condition on a network that requires either that the 
  15180.    system be reconfigured or that the source of the error be removed before the 
  15181.    system can resume reliable operation. 
  15182.  
  15183.  header  -(1) System-defined control information that precedes user data. (2) 
  15184.    The portion of a message that contains control information for the message, 
  15185.    such as one or more destination fields, name of the originating station, 
  15186.    input sequence number, character string indicating the type of message, and 
  15187.    priority level for the message. 
  15188.  
  15189.  heading tags  -A document element that enables information to be displayed in 
  15190.    windows, and that controls entries in the contents window controls placement 
  15191.    of push buttons in a window, and defines the shape and size of windows. 
  15192.  
  15193.  heap  -An area of free storage available for dynamic allocation by an 
  15194.    application. Its size varies according to the storage requirements of the 
  15195.    application. 
  15196.  
  15197.  help function  -(1) A function that provides information about a specific 
  15198.    field, an application panel, or information about the help facility. (2) (D 
  15199.    of C) One or more display images that describe how to use application 
  15200.    software or how to do a system operation. 
  15201.  
  15202.  Help index  -In SAA Common User Access architecture, a help action that 
  15203.    provides an index of the help information available for an application. 
  15204.  
  15205.  help panel  -A panel with information to assist users that is displayed in 
  15206.    response to a help request from the user. 
  15207.  
  15208.  help window  -A Common-User-Access-defined secondary window that displays 
  15209.    information when the user requests help. 
  15210.  
  15211.  hidden file  -An operating system file that is not displayed by a directory 
  15212.    listing. 
  15213.  
  15214.  hide button  -In the OS/2 operating system, a small, square button located in 
  15215.    the right-hand corner of the title bar of a window that, when selected, 
  15216.    removes from the screen all the windows associated with that window. 
  15217.    Contrast with maximize button. See also restore button. 
  15218.  
  15219.  hierarchical inheritance  -The relationship between parent and child classes. 
  15220.    An object that is lower in the inheritance hierarchy than another object, 
  15221.    inherits all the characteristics and behaviors of the objects above it in 
  15222.    the hierarchy. 
  15223.  
  15224.  hierarchy  -A tree of segments beginning with the root segment and proceeding 
  15225.    downward to dependent segment types. 
  15226.  
  15227.  high-performance file system (HPFS)  -In the OS/2 operating system, an 
  15228.    installable file system that uses high-speed buffer storage, known as a 
  15229.    cache, to provide fast access to large disk volumes. The file system also 
  15230.    supports the coexistence of multiple, active file systems on a single 
  15231.    personal computer, with the capability of multiple and different storage 
  15232.    devices. File names used with the HPFS can have as many as 254 characters. 
  15233.  
  15234.  hit testing  -The means of identifying which window is associated with which 
  15235.    input device event. 
  15236.  
  15237.  hook  -A point in a system-defined function where an application can supply 
  15238.    additional code that the system processes as though it were part of the 
  15239.    function. 
  15240.  
  15241.  hook chain  -A sequence of hook procedures that are "chained" together so that 
  15242.    each event is passed, in turn, to each procedure in the chain. 
  15243.  
  15244.  hot spot  -The part of the pointer that must touch an object before it can be 
  15245.    selected. This is usually the tip of the pointer. Contrast with action 
  15246.    point. 
  15247.  
  15248.  HPFS  -high-performance file system. 
  15249.  
  15250.  hypergraphic link  -A connection between one piece of information and another 
  15251.    through the use of graphics. 
  15252.  
  15253.  hypertext  -A way of presenting information online with connections between 
  15254.    one piece of information and another, called hypertext links. See also 
  15255.    hypertext link. 
  15256.  
  15257.  hypertext link  -A connection between one piece of information and another. 
  15258.  
  15259.  
  15260. ΓòÉΓòÉΓòÉ <hidden> Glossary - I ΓòÉΓòÉΓòÉ
  15261.  
  15262.  I/O operation  -An input operation to, or output operation from a device 
  15263.    attached to a computer. 
  15264.  
  15265.  I-beam pointer  -A pointer that indicates an area, such as an entry field in 
  15266.    which text can be edited. 
  15267.  
  15268.  icon  -In SAA Advanced Common User Access architecture, a graphical 
  15269.    representation of an object, consisting of an image, image background, and a 
  15270.    label. Icons can represent items (such as a document file) that the user 
  15271.    wants to work on, and actions that the user wants to perform. In the 
  15272.    Presentation Manager, icons are used for data objects, system actions, and 
  15273.    minimized programs. 
  15274.  
  15275.  icon area  -In the Presentation Manager, the area at the bottom of the screen 
  15276.    that is normally used to display the icons for minimized programs. 
  15277.  
  15278.  Icon Editor  -The Presentation Manager-provided tool for creating icons. 
  15279.  
  15280.  IDL  -Interface Definition Language. 
  15281.  
  15282.  image font  -A set of symbols, each of which is described in a rectangular 
  15283.    array of pels. Some of the pels in the array are set to produce the image of 
  15284.    one of the symbols. Contrast with outline font. 
  15285.  
  15286.  implied metaclass  -Subclassing the metaclass of a parent class without a 
  15287.    separate CSC for the resultant metaclass. 
  15288.  
  15289.  indirect manipulation  -Interaction with an object through choices and 
  15290.    controls. 
  15291.  
  15292.  information device context  -A logical description of a data destination other 
  15293.    than the screen (for example, a printer or plotter), but where no output 
  15294.    will occur. Its purpose is to satisfy queries. See also device context. 
  15295.  
  15296.  information panel  -A defined panel type characterized by a body containing 
  15297.    only protected information. 
  15298.  
  15299.  Information Presentation Facility (IPF)  -A facility provided by the OS/2 
  15300.    operating system, by which application developers can produce online 
  15301.    documentation and context-sensitive online help panels for their 
  15302.    applications. 
  15303.  
  15304.  inheritance  -The derivation of new (child) classes from existing (parent) 
  15305.    classes. The new class inherits all the data and methods of the parent class 
  15306.    without having to redefine them. 
  15307.  
  15308.  input focus  -(1) The area of a window where user interaction is possible 
  15309.    using an input device, such as a mouse or the keyboard. (2) The position in 
  15310.    the active window where a user's normal interaction with the keyboard will 
  15311.    appear. 
  15312.  
  15313.  input router  -An internal OS/2 process that removes messages from the system 
  15314.    queue. 
  15315.  
  15316.  input/output control  -A device-specific command that requests a function of a 
  15317.    device driver. 
  15318.  
  15319.  installable file system (IFS)  -A file system in which software is installed 
  15320.    when the operating system is started. 
  15321.  
  15322.  instance  -A single occurrence of an object class that has a particular 
  15323.    behavior. 
  15324.  
  15325.  instruction pointer  -In system/38, a pointer that provides addressability for 
  15326.    a machine interface instruction in a program. 
  15327.  
  15328.  integer atom  -An atom that represents a predefined system constant and 
  15329.    carries no storage overhead. For example, names of window classes provided 
  15330.    by Presentation Manager are expressed as integer atoms. 
  15331.  
  15332.  interactive graphics  -Graphics that can be moved or manipulated by a user at 
  15333.    a terminal. 
  15334.  
  15335.  interactive program  -(1) A program that is running (active) and is ready to 
  15336.    receive (or is receiving) input from a user. (2) A running program that can 
  15337.    receive input from the keyboard or another input device. Compare with active 
  15338.    program and contrast with noninteractive program. 
  15339.  
  15340.    Also known as a foreground program. 
  15341.  
  15342.  interchange file  -A file containing data that can be sent from one 
  15343.    Presentation Manager interface application to another. 
  15344.  
  15345.  Interface Definition Language (IDL)  -Language-neutral interface specification 
  15346.    for a SOM class. 
  15347.  
  15348.  interpreter  -A program that translates and executes each instruction of a 
  15349.    high-level programming language before it translates and executes. 
  15350.  
  15351.  interprocess communication (IPC)  -In the OS/2 operating system, the exchange 
  15352.    of information between processes or threads through semaphores, pipes, 
  15353.    queues, and shared memory. 
  15354.  
  15355.  interval timer  -(1) A timer that provides program interruptions on a 
  15356.    program-controlled basis. (2) An electronic counter that counts intervals of 
  15357.    time under program control. 
  15358.  
  15359.  IOCtl  -Input/output control. 
  15360.  
  15361.  IOPL  -Input/output privilege level. 
  15362.  
  15363.  IOPL code segment  -An IOPL executable section of programming code that 
  15364.    enables an application to directly manipulate hardware interrupts and ports 
  15365.    without replacing the device driver. See also privilege level. 
  15366.  
  15367.  IPC  -Interprocess communication. 
  15368.  
  15369.  IPF  -Information Presentation Facility. 
  15370.  
  15371.  IPF compiler  -A text compiler that interpret tags in a source file and 
  15372.    converts the information into the specified format. 
  15373.  
  15374.  IPF tag language  -A markup language that provides the instructions for 
  15375.    displaying online information. 
  15376.  
  15377.  item  -A data object that can be passed in a DDE transaction. 
  15378.  
  15379.  
  15380. ΓòÉΓòÉΓòÉ <hidden> Glossary - J ΓòÉΓòÉΓòÉ
  15381.  
  15382.  journal  -A special-purpose file that is used to record changes made in the 
  15383.    system. 
  15384.  
  15385.  
  15386. ΓòÉΓòÉΓòÉ <hidden> Glossary - K ΓòÉΓòÉΓòÉ
  15387.  
  15388.  Kanji  -A graphic character set used in Japanese ideographic alphabets. 
  15389.  
  15390.  KBD$  -Character-device name reserved for the keyboard. 
  15391.  
  15392.  kernel  -The part of an operating system that performs basic functions, such 
  15393.    as allocating hardware resources. 
  15394.  
  15395.  kerning  -The design of graphics characters so that their character boxes 
  15396.    overlap. Used to space text proportionally. 
  15397.  
  15398.  keyboard accelerator  -A keystroke that generates a command message for an 
  15399.    application. 
  15400.  
  15401.  keyboard augmentation  -A function that enables a user to press a keyboard key 
  15402.    while pressing a mouse button. 
  15403.  
  15404.  keyboard focus  -A temporary attribute of a window. The window that has a 
  15405.    keyboard focus receives all keyboard input until the focus changes to a 
  15406.    different window. 
  15407.  
  15408.  Keys help  -In SAA Common User Access architecture, a help action that 
  15409.    provides a listing of the application keys and their assigned functions. 
  15410.  
  15411.  
  15412. ΓòÉΓòÉΓòÉ <hidden> Glossary - L ΓòÉΓòÉΓòÉ
  15413.  
  15414.  label  -In a graphics segment, an identifier of one or more elements that is 
  15415.    used when editing the segment. 
  15416.  
  15417.  LAN  -local area network. 
  15418.  
  15419.  language support procedure  -A function provided by the Presentation Manager 
  15420.    Interface for applications that do not, or cannot (as in the case of COBOL 
  15421.    and FORTRAN programs), provide their own dialog or window procedures. 
  15422.  
  15423.  lazy drag  -See pickup and drop. 
  15424.  
  15425.  lazy drag set  -See pickup set. 
  15426.  
  15427.  LDT  -In the OS/2 operating system, Local Descriptor Table. 
  15428.  
  15429.  LIFO stack  -A stack from which data is retrieved in last-in, first-out order. 
  15430.  
  15431.  linear address  -A unique value that identifies the memory object. 
  15432.  
  15433.  linked list  -Synonym for chained list. 
  15434.  
  15435.  list box  -In SAA Advanced Common User Access architecture, a control that 
  15436.    contains scrollable choices from which a user can select one choice. 
  15437.  
  15438.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  15439.    selection list. 
  15440.  
  15441.  list button  -A button labeled with an underlined down-arrow that presents a 
  15442.    list of valid objects or choices that can be selected for that field. 
  15443.  
  15444.  list panel  -A defined panel type that displays a list of items from which 
  15445.    users can select one or more choices and then specify one or more actions to 
  15446.    work on those choices. 
  15447.  
  15448.  load time  -The point in time at which a program module is loaded into main 
  15449.    storage for execution. 
  15450.  
  15451.  load-on-call  -A function of a linkage editor that allows selected segments of 
  15452.    the module to be disk resident while other segments are executing. Disk 
  15453.    resident segments are loaded for execution and given control when any entry 
  15454.    point that they contain is called. 
  15455.  
  15456.  local area network (LAN)  -(1) A computer network located on a user's premises 
  15457.    within a limited geographical area. Communication within a local area 
  15458.    network is not subject to external regulations;  however, communication 
  15459.    across the LAN boundary may be subject to some form of regulation. (T)
  15460.  
  15461.    Note:  A LAN does not use store and forward techniques. (2) A network 
  15462.    inwhich a set of devices are connected to one another for communication and 
  15463.    that can be connected to a larger network. 
  15464.  
  15465.  Local Descriptor Table (LDT)  -Defines code and data segments specific to a 
  15466.    single task. 
  15467.  
  15468.  lock  -A serialization mechanism by means of which a resource is restricted 
  15469.    for use by the holder of the lock. 
  15470.  
  15471.  logical storage device  -A device that the user can map to a physical (actual) 
  15472.    device. 
  15473.  
  15474.  LPT1, LPT2, LPT3  -Character-device names reserved for parallel printers 1 
  15475.    through 3. 
  15476.  
  15477.  
  15478. ΓòÉΓòÉΓòÉ <hidden> Glossary - M ΓòÉΓòÉΓòÉ
  15479.  
  15480.  main window  -The window that is positioned relative to the desktop window. 
  15481.  
  15482.  manipulation button  -The button on a pointing device a user presses to 
  15483.    directly manipulate an object. 
  15484.  
  15485.  map  -(1) A set of values having a defined correspondence with the quantities 
  15486.    or values of another set. (I)  (A)  (2) To establish a set of values having 
  15487.    a defined correspondence with the quantities or values of another set. (I)
  15488.  
  15489.  marker box  -In computer graphics, the boundary that defines, in world 
  15490.    coordinates, the horizontal and vertical space occupied by a single marker 
  15491.    from a marker set. 
  15492.  
  15493.  marker symbol  -A symbol centered on a point. Graphs and charts can use marker 
  15494.    symbols to indicate the plotted points. 
  15495.  
  15496.  marquee box  -The rectangle that appears during a selection technique in which 
  15497.    a user selects objects by drawing a box around them with a pointing device. 
  15498.  
  15499.  Master Help Index  -In the OS/2 operating system, an alphabetic list of help 
  15500.    topics related to using the operating system. 
  15501.  
  15502.  maximize  -To enlarge a window to its largest possible size. 
  15503.  
  15504.  media window  -The part of the physical device (display, printer, or plotter) 
  15505.    on which a picture is presented. 
  15506.  
  15507.  memory block  -Part memory within a heap. 
  15508.  
  15509.  memory device context  -A logical description of a data destination that is a 
  15510.    memory bit map. See also device context. 
  15511.  
  15512.  memory management  -A feature of the operating system for allocating, sharing, 
  15513.    and freeing main storage. 
  15514.  
  15515.  memory object  -Logical unit of memory requested by an application, which 
  15516.    forms the granular unit of memory manipulation from the application 
  15517.    viewpoint. 
  15518.  
  15519.  menu  -In SAA Advanced Common User Access architecture, an extension of the 
  15520.    menu bar that displays a list of choices available for a selected choice in 
  15521.    the menu bar. After a user selects a choice in menu bar, the corresponding 
  15522.    menu appears. Additional pop-up windows can appear from menu choices. 
  15523.  
  15524.  menu bar  -In SAA Advanced Common User Access architecture, the area near the 
  15525.    top of a window, below the title bar and above the rest of the window, that 
  15526.    contains choices that provide access to other menus. 
  15527.  
  15528.  menu button  -The button on a pointing device that a user presses to view a 
  15529.    pop-up menu associated with an object. 
  15530.  
  15531.  message  -(1) In the Presentation Manager, a packet of data used for 
  15532.    communication between the Presentation Manager interface and Presentation 
  15533.    Manager applications (2) In a user interface, information not requested by 
  15534.    users but presented to users by the computer in response to a user action or 
  15535.    internal process. 
  15536.  
  15537.  message box  -(1) A dialog window predefined by the system and used as a 
  15538.    simple interface for applications, without the necessity of creating 
  15539.    dialog-template resources or dialog procedures. (2) (D of C) In SAA Advanced 
  15540.    Common User Access architecture, a type of window that shows messages to 
  15541.    users. See also dialog box, primary window, secondary window. 
  15542.  
  15543.  message filter  -The means of selecting which messages from a specific window 
  15544.    will be handled by the application. 
  15545.  
  15546.  message queue  -A sequenced collection of messages to be read by the 
  15547.    application. 
  15548.  
  15549.  message stream mode  -A method of operation in which data is treated as a 
  15550.    stream of messages.  Contrast with  byte stream. 
  15551.  
  15552.  metacharacter  -See global file-name character. 
  15553.  
  15554.  metaclass  -The conjunction of an object and its class information; that is, 
  15555.    the information pertaining to the class as a whole, rather than to a single 
  15556.    instance of the class. Each class is itself an object, which is an instance 
  15557.    of the metaclass. 
  15558.  
  15559.  metafile  -A file containing a series of attributes that set color, shape and 
  15560.    size, usually of a picture or a drawing. Using a program that can interpret 
  15561.    these attributes, a user can view the assembled image. 
  15562.  
  15563.  metafile device context  -A logical description of a data destination that is 
  15564.    a metafile, which is used for graphics interchange. See also device context. 
  15565.  
  15566.  metalanguage  -A language used to specify another language. For example, data 
  15567.    types can be described using a metalanguage so as to make the descriptions 
  15568.    independent of any one computer language. 
  15569.  
  15570.  method  -A function that defines a behavior for a class or object. 
  15571.  
  15572.  method override  -The replacement, by a child class, of the implementation of 
  15573.    a method inherited from a parent and an ancestor class. 
  15574.  
  15575.  mickey  -A unit of measurement for physical mouse motion whose value depends 
  15576.    on the mouse device driver currently loaded. 
  15577.  
  15578.  micro presentation space  -A graphics presentation space in which a restricted 
  15579.    set of the GPI function calls is available. 
  15580.  
  15581.  minimize  -To remove from the screen all windows associated with an 
  15582.    application and replace them with an icon that represents the application. 
  15583.  
  15584.  mix  -An attribute that determines how the foreground of a graphic primitive 
  15585.    is combined with the existing color of graphics output. Also known as 
  15586.    foreground mix. Contrast with background mix. 
  15587.  
  15588.  mixed character string  -A string containing a mixture of one-byte and Kanji 
  15589.    or Hangeul (two-byte) characters. 
  15590.  
  15591.  mnemonic  -(1) A method of selecting an item on a pull-down by means of typing 
  15592.    the highlighted letter in the menu item. (2) (D of C) In SAA Advanced Common 
  15593.    User Access architecture, usually a single character, within the text of a 
  15594.    choice, identified by an underscore beneath the character. If all characters 
  15595.    in a choice already serve as mnemonics for other choices, another character, 
  15596.    placed in parentheses immediately following the choice, can be used. When a 
  15597.    user types the mnemonic for a choice, the choice is either selected or the 
  15598.    cursor is moved to that choice. 
  15599.  
  15600.  modal dialog box  -In SAA Advanced Common User Access architecture, a type of 
  15601.    movable window, fixed in size, that requires a user to enter information 
  15602.    before continuing to work in the application window from which it was 
  15603.    displayed. Contrast with modeless dialog box. Also known as a serial dialog 
  15604.    box. Contrast with parallel dialog box. 
  15605.  
  15606.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  15607.    pop-up window. 
  15608.  
  15609.  model space  -See graphics model space. 
  15610.  
  15611.  modeless dialog box  -In SAA Advanced Common User Access architecture, a type 
  15612.    of movable window, fixed in size, that allows users to continue their dialog 
  15613.    with the application without entering information in the dialog box. Also 
  15614.    known as a parallel dialog box. Contrast with modal dialog box. 
  15615.  
  15616.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  15617.    pop-up window. 
  15618.  
  15619.  module definition file  -A file that describes the code segments within a load 
  15620.    module. For example, it indicates whether a code segment is loadable before 
  15621.    module execution begins (preload), or loadable only when referred to at run 
  15622.    time (load-on-call). 
  15623.  
  15624.  mouse  -In SAA usage, a device that a user moves on a flat surface to position 
  15625.    a pointer on the screen. It allows a user to select a choice o function to 
  15626.    be performed or to perform operations on the screen, such as dragging or 
  15627.    drawing lines from one position to another. 
  15628.  
  15629.  MOUSE$  -Character-device name reserved for a mouse. 
  15630.  
  15631.  multiple-choice selection  -In SAA Basic Common User Access architecture, a 
  15632.    type of field from which a user can select one or more choices or select 
  15633.    none. See also check box. Contrast with extended-choice selection. 
  15634.  
  15635.  multiple-line entry field  -In SAA Advanced Common User Access architecture, a 
  15636.    control into which a user types more than one line of information. See also 
  15637.    single-line entry field. 
  15638.  
  15639.  multitasking  -The concurrent processing of applications or parts of 
  15640.    applications. A running application and its data are protected from other 
  15641.    concurrently running applications. 
  15642.  
  15643.  mutex semaphore  -(Mutual exclusion semaphore). A semaphore that enables 
  15644.    threads to serialize their access to resources. Only the thread that 
  15645.    currently owns the mutex semaphore can gain access to the resource, thus 
  15646.    preventing one thread from interrupting operations being performed by 
  15647.    another. 
  15648.  
  15649.  muxwait semaphore  -(Multiple wait semaphore). A semaphore that enables a 
  15650.    thread to wait either for multiple event semaphores to be posted or for 
  15651.    multiple mutex semaphores to be released. Alternatively, a muxwait semaphore 
  15652.    can be set to enable a thread to wait for any ONE of the event or mutex 
  15653.    semaphores in the muxwait semaphore's list to be posted or released. 
  15654.  
  15655.  
  15656. ΓòÉΓòÉΓòÉ <hidden> Glossary - N ΓòÉΓòÉΓòÉ
  15657.  
  15658.  named pipe  -A named buffer that provides client-to-server, server-to-client, 
  15659.    or full duplex communication between unrelated processes. Contrast with 
  15660.    unnamed pipe. 
  15661.  
  15662.  national language support (NLS)  -The modification or conversion of a United 
  15663.    States English product to conform to the requirements of another language or 
  15664.    country. This can include the enabling or retrofitting of a product and the 
  15665.    translation of nomenclature, MRI, or documentation of a product. 
  15666.  
  15667.  nested list  -A list that is contained within another list. 
  15668.  
  15669.  NLS  -national language support. 
  15670.  
  15671.  non-8.3 file-name format  -A file-naming convention in which file names can 
  15672.    consist of up to 255 characters. See also 8.3 file-name format. 
  15673.  
  15674.  noncritical extended attribute  -An extended attribute that is not necessary 
  15675.    for the function of an application. 
  15676.  
  15677.  nondestructive read  -Reading that does not erase the data in the source 
  15678.    location. (T)
  15679.  
  15680.  noninteractive program  -A running program that cannot receive input from the 
  15681.    keyboard or other input device. Compare with active program, and contrast 
  15682.    with interactive program. 
  15683.  
  15684.  nonretained graphics  -Graphic primitives that are not remembered by the 
  15685.    Presentation Manager interface when they have been drawn. Contrast with 
  15686.    retained graphics. 
  15687.  
  15688.  null character (NUL)  -(1) Character-device name reserved for a nonexistent 
  15689.    (dummy) device. (2) (D of C) A control character that is used to accomplish 
  15690.    media-fill or time-fill and that may be inserted into or removed from a 
  15691.    sequence of characters without affecting the meaning of the sequence; 
  15692.    however, the control of equipment or the format may be affected by this 
  15693.    character. (I)  (A)
  15694.  
  15695.  null-terminated string  -A string of (n+1) characters where the (n+1)th 
  15696.    character is the 'null' character (0x00) Also known as 'zero-terminated' 
  15697.    string and 'ASCIIZ' string. 
  15698.  
  15699.  
  15700. ΓòÉΓòÉΓòÉ <hidden> Glossary - O ΓòÉΓòÉΓòÉ
  15701.  
  15702.  object  -A set of data and actions that can be performed on that data. 
  15703.  
  15704.  Object Interface Definition Language (OIDL)  -Specification language used in 
  15705.    SOM Version 1 for defining classes. Replaced by Interface Definition 
  15706.    Language (IDL). 
  15707.  
  15708.  object window  -A window that does not have a parent but which might have 
  15709.    child windows. An object window cannot be presented on a device. 
  15710.  
  15711.  OIDL  -Object Interface Definition Language. 
  15712.  
  15713.  open  -To start working with a file, directory, or other object. 
  15714.  
  15715.  ordered list  -Vertical arrangements of items, with each item in the list 
  15716.    preceded by a number or letter. 
  15717.  
  15718.  outline font  -A set of symbols, each of which is created as a series of lines 
  15719.    and curves.  Synonymous with vector font. Contrast with image font. 
  15720.  
  15721.  output area  -An area of storage reserved for output. (A)
  15722.  
  15723.  owner window  -A window into which specific events that occur in another 
  15724.    (owned) window are reported. 
  15725.  
  15726.  ownership  -The determination of how windows communicate using messages. 
  15727.  
  15728.  owning process  -The process that owns the resources that might be shared with 
  15729.    other processes. 
  15730.  
  15731.  
  15732. ΓòÉΓòÉΓòÉ <hidden> Glossary - P ΓòÉΓòÉΓòÉ
  15733.  
  15734.  page  -(1) A 4KB segment of contiguous physical memory. (2) (D of C) A defined 
  15735.    unit of space on a storage medium. 
  15736.  
  15737.  page viewport  -A boundary in device coordinates that defines the area of the 
  15738.    output device in which graphics are to be displayed. The presentation-page 
  15739.    contents are transformed automatically to the page viewport in device space. 
  15740.  
  15741.  paint  -(1) The action of drawing or redrawing the contents of a window. (2) 
  15742.    In computer graphics, to shade an area of a display image;  for example, 
  15743.    with crosshatching or color. 
  15744.  
  15745.  panel  -In SAA Basic Common User Access architecture, a particular arrangement 
  15746.    of information that is presented in a window or pop-up. If some of the 
  15747.    information is not visible, a user can scroll through the information. 
  15748.  
  15749.  panel area  -An area within a panel that contains related information. The 
  15750.    three major Common User Access-defined panel areas are the action bar, the 
  15751.    function key area, and the panel body. 
  15752.  
  15753.  panel area separator  -In SAA Basic Common User Access architecture, a solid, 
  15754.    dashed, or blank line that provides a visual distinction between two 
  15755.    adjacent areas of a panel. 
  15756.  
  15757.  panel body  -The portion of a panel not occupied by the action bar, function 
  15758.    key area, title or scroll bars. The panel body can contain protected 
  15759.    information, selection fields, and entry fields. The layout and content of 
  15760.    the panel body determine the panel type. 
  15761.  
  15762.  panel body area  -See client area. 
  15763.  
  15764.  panel definition  -A description of the contents and characteristics of a 
  15765.    panel. A panel definition is the application developer's mechanism for 
  15766.    predefining the format to be presented to users in a window. 
  15767.  
  15768.  panel ID  -In SAA Basic Common User Access architecture, a panel identifier, 
  15769.    located in the upper-left corner of a panel.  A user can choose whether to 
  15770.    display the panel ID. 
  15771.  
  15772.  panel title  -In SAA Basic Common User Access architecture, a particular 
  15773.    arrangement of information that is presented in a window or pop-up. If some 
  15774.    of the information is not visible, a user can scroll through the 
  15775.    information. 
  15776.  
  15777.  paper size  -The size of paper, defined in either standard U.S. or European 
  15778.    names (for example, A, B, A4), and measured in inches or millimeters 
  15779.    respectively. 
  15780.  
  15781.  parallel dialog box  -See modeless dialog box. 
  15782.  
  15783.  parameter list  -A list of values that provides a means of associating 
  15784.    addressability of data defined in a called program with data in the calling 
  15785.    program. It contains parameter names and the order in which they are to be 
  15786.    associated in the calling and called program. 
  15787.  
  15788.  parent process  -In the OS/2 operating system, a process that creates other 
  15789.    processes. Contrast with child process. 
  15790.  
  15791.  parent window  -In the OS/2 operating system, a window that creates a child 
  15792.    window. The child window is drawn within the parent window. If the parent 
  15793.    window is moved, resized, or destroyed, the child window also will be moved, 
  15794.    resized, or destroyed. However, the child window can be moved and resized 
  15795.    independently from the parent window, within the boundaries of the parent 
  15796.    window. Contrast with child window. 
  15797.  
  15798.  partition  -(1) A fixed-size division of storage. (2) On an IBM personal 
  15799.    computer fixed disk, one of four possible storage areas of variable size; 
  15800.    one may be accessed by DOS, and each of the others may be assigned to 
  15801.    another operating system. 
  15802.  
  15803.  Paste  -A choice in the Edit pull-down that a user selects to move the 
  15804.    contents of the clipboard into a preselected location. See also Copy and 
  15805.    Cut. 
  15806.  
  15807.  path  -The route used to locate files; the storage location of a file. A fully 
  15808.    qualified path lists the drive identifier, directory name, subdirectory name 
  15809.    (if any), and file name with the associated extension. 
  15810.  
  15811.  PDD  -Physical device driver. 
  15812.  
  15813.  peeking  -An action taken by any thread in the process that owns the queue to 
  15814.    examine queue elements without removing them. 
  15815.  
  15816.  pel  -(1) The smallest area of a display screen capable of being addressed and 
  15817.    switched between visible and invisible states. Synonym for display point, 
  15818.    pixel, and picture element. (2) (D of C) Picture element. 
  15819.  
  15820.  persistent object  -An object whose instance data and state are preserved 
  15821.    between system shutdown and system startup. 
  15822.  
  15823.  physical device driver (PDD)  -A system interface that handles hardware 
  15824.    interrupts and supports a set of input and output functions. 
  15825.  
  15826.  pick  -To select part of a displayed object using the pointer. 
  15827.  
  15828.  pickup  -To add an object or set of objects to the pickup set. 
  15829.  
  15830.  pickup and drop  -A drag operation that does not require the direct 
  15831.    manipulation button to be pressed for the duration of the drag. 
  15832.  
  15833.  pickup set  -The set of objects that have been picked up as part of a pickup 
  15834.    and drop operation. 
  15835.  
  15836.  picture chain  -See segment chain. 
  15837.  
  15838.  picture element  -(1) Synonym for pel. (2) (D of C) In computer graphics, the 
  15839.    smallest element of a display surface that can be independently assigned 
  15840.    color and intensity. (T)  . (3) The area of the finest detail that can be 
  15841.    reproduced effectively on the recording medium. 
  15842.  
  15843.  PID  -Process identification. 
  15844.  
  15845.  pipe  -(1) A named or unnamed buffer used to pass data between processes. A 
  15846.    process reads from or writes to a pipe as if the pipe were a standard-input 
  15847.    or standard-output file. See also named pipe and unnamed pipe. (2) (D of C) 
  15848.    To direct data so that the output from one process becomes the input to 
  15849.    another process. The standard output of one command can be connected to the 
  15850.    standard input of another with the pipe operator (|). 
  15851.  
  15852.  pixel  -(1) Synonym for pel. (2) (D of C) Picture element. 
  15853.  
  15854.  plotter  -An output unit that directly produces a hardcopy record of data on a 
  15855.    removable medium, in the form of a two-dimensional graphic representation. (T)
  15856.  
  15857.  PM  -Presentation Manager. 
  15858.  
  15859.  pointer  -(1) The symbol displayed on the screen that is moved by a pointing 
  15860.    device, such as a mouse. The pointer is used to point at items that users 
  15861.    can select. Contrast with cursor. (2) A data element that indicates the 
  15862.    location of another data element. (T)
  15863.  
  15864.  POINTER$  -Character-device name reserved for a pointer device (mouse screen 
  15865.    support). 
  15866.  
  15867.  pointing device  -In SAA Advanced Common User Access architecture, an 
  15868.    instrument, such as a mouse, trackball, or joystick, used to move a pointer 
  15869.    on the screen. 
  15870.  
  15871.  pointings  -Pairs of x-y coordinates produced by an operator defining 
  15872.    positions on a screen with a pointing device, such as a mouse. 
  15873.  
  15874.  polyfillet  -A curve based on a sequence of lines. The curve is tangential to 
  15875.    the end points of the first and last lines, and tangential also to the 
  15876.    midpoints of all other lines. See also fillet. 
  15877.  
  15878.  polygon  -One or more closed figures that can be drawn filled, outlined, or 
  15879.    filled and outlined. 
  15880.  
  15881.  polyline  -A sequence of adjoining lines. 
  15882.  
  15883.  polymorphism  -The ability to have different implementations of the same 
  15884.    method for two or more classes of objects. 
  15885.  
  15886.  pop  -To retrieve an item from a last-in-first-out stack of items. Contrast 
  15887.    with push. 
  15888.  
  15889.  pop-up menu  -A menu that lists the actions that a user can perform on an 
  15890.    object. The contents of the pop-up menu can vary depending on the context, 
  15891.    or state, of the object. 
  15892.  
  15893.  pop-up window  -(1) A window that appears on top of another window in a 
  15894.    dialog. Each pop-up window must be completed before returning to the 
  15895.    underlying window. (2) (D of C) In SAA Advanced Common User Access 
  15896.    architecture, a movable window, fixed in size, in which a user provides 
  15897.    information required by an application so that it can continue to process a 
  15898.    user request. 
  15899.  
  15900.  presentation drivers  -Special purpose I/O routines that handle field 
  15901.    device-independent I/O requests from the PM and its applications. 
  15902.  
  15903.  Presentation Manager (PM)  -The interface of the OS/2 operating system that 
  15904.    presents, in windows a graphics-based interface to applications and files 
  15905.    installed and running under the OS/2 operating system. 
  15906.  
  15907.  presentation page  -The coordinate space in which a picture is assembled for 
  15908.    display. 
  15909.  
  15910.  presentation space (PS)  -(1) Contains the device-independent definition of a 
  15911.    picture. (2) (D of C) The display space on a display device. 
  15912.  
  15913.  primary window  -In SAA Common User Access architecture, the window in which 
  15914.    the main interaction between the user and the application takes place. In a 
  15915.    multiprogramming environment, each application starts in its own primary 
  15916.    window. The primary window remains for the duration of the application, 
  15917.    although the panel displayed will change as the user's dialog moves forward. 
  15918.    See also secondary window. 
  15919.  
  15920.  primitive  -In computer graphics, one of several simple functions for drawing 
  15921.    on the screen, including, for example, the rectangle, line, ellipse, 
  15922.    polygon, and so on. 
  15923.  
  15924.  primitive attribute  -A specifiable characteristic of a graphic primitive. See 
  15925.    graphics attributes. 
  15926.  
  15927.  print job  -The result of sending a document or picture to be printed. 
  15928.  
  15929.  Print Manager  -In the Presentation Manager, the part of the spooler that 
  15930.    manages the spooling process. It also allows users to view print queues and 
  15931.    to manipulate print jobs. 
  15932.  
  15933.  privilege level  -A protection level imposed by the hardware architecture of 
  15934.    the IBM personal computer.  There are four privilege levels (number 0 
  15935.    through 3).  Only certain types of programs are allowed to execute at each 
  15936.    privilege level.  See also IOPL code segment. 
  15937.  
  15938.  procedure call  -In programming languages, a language construct for invoking 
  15939.    execution of a procedure. 
  15940.  
  15941.  process  -An instance of an executing application and the resources it is 
  15942.    using. 
  15943.  
  15944.  program  -A sequence of instructions that a computer can interpret and 
  15945.    execute. 
  15946.  
  15947.  program details  -Information about a program that is specified in the Program 
  15948.    Manager window and is used when the program is started. 
  15949.  
  15950.  program group  -In the Presentation Manager, several programs that can be 
  15951.    acted upon as a single entity. 
  15952.  
  15953.  program name  -The full file specification of a program. Contrast with program 
  15954.    title. 
  15955.  
  15956.  program title  -The name of a program as it is listed in the Program Manager 
  15957.    window. Contrast with program name. 
  15958.  
  15959.  prompt  -A displayed symbol or message that requests input from the user or 
  15960.    gives operational information; for example, on the display screen of an IBM 
  15961.    personal computer, the DOS A> prompt. The user must respond to the prompt in 
  15962.    order to proceed. 
  15963.  
  15964.  protect mode  -A method of program operation that limits or prevents access to 
  15965.    certain instructions or areas of storage. Contrast with real mode. 
  15966.  
  15967.  protocol  -A set of semantic and syntactic rules that determines the behavior 
  15968.    of functional units in achieving communication. (I)
  15969.  
  15970.  pseudocode  -An artificial language used to describe computer program 
  15971.    algorithms without using the syntax of any particular programming language. (A)
  15972.  
  15973.  pull-down  -(1) An action bar extension that displays a list of choices 
  15974.    available for a selected action bar choice. After users select an action bar 
  15975.    choice, the pull-down appears with the list of choices. Additional pop-up 
  15976.    windows may appear from pull-down choices to further extend the actions 
  15977.    available to users. (2) (D of C) In SAA Common User Access architecture, 
  15978.    pertaining to a choice in an action bar pull-down. 
  15979.  
  15980.  push  -To add an item to a last-in-first-out stack of items. Contrast with 
  15981.    pop. 
  15982.  
  15983.  push button  -In SAA Advanced Common User Access architecture, a rectangle 
  15984.    with text inside. Push buttons are used in windows for actions that occur 
  15985.    immediately when the push button is selected. 
  15986.  
  15987.  putback  -To remove an object or set of objects from the lazy drag set. This 
  15988.    has the effect of undoing the pickup operation for those objects 
  15989.  
  15990.  putdown  -To drop the objects in the lazy drag set on the target object. 
  15991.  
  15992.  
  15993. ΓòÉΓòÉΓòÉ <hidden> Glossary - Q ΓòÉΓòÉΓòÉ
  15994.  
  15995.  queue  -(1) A linked list of elements waiting to be processed in FIFO order. 
  15996.    For example, a queue may be a list of print jobs waiting to be printed. (2) 
  15997.    (D of C) A line or list of items waiting to be processed; for example, work 
  15998.    to be performed or messages to be displayed. 
  15999.  
  16000.  queued device context  -A logical description of a data destination (for 
  16001.    example, a printer or plotter) where the output is to go through the 
  16002.    spooler. See also device context. 
  16003.  
  16004.  
  16005. ΓòÉΓòÉΓòÉ <hidden> Glossary - R ΓòÉΓòÉΓòÉ
  16006.  
  16007.  radio button  -(1) A control window, shaped like a round button on the screen, 
  16008.    that can be in a checked or unchecked state. It is used to select a single 
  16009.    item from a list. Contrast with check box. (2) In SAA Advanced Common User 
  16010.    Access architecture, a circle with text beside it. Radio buttons are 
  16011.    combined to show a user a fixed set of choices from which only one can be 
  16012.    selected. The circle is partially filled when a choice is selected. 
  16013.  
  16014.  RAS  -Reliability, availability, and serviceability. 
  16015.  
  16016.  raster  -(1) In computer graphics, a predetermined pattern of lines that 
  16017.    provides uniform coverage of a display space. (T)  (2) The coordinate grid 
  16018.    that divides the display area of a display device.  (A)
  16019.  
  16020.  read-only file  -A file that can be read from but not written to. 
  16021.  
  16022.  real mode  -A method of program operation that does not limit or prevent 
  16023.    access to any instructions or areas of storage.  The operating system loads 
  16024.    the entire program into storage and gives the program access to all system 
  16025.    resources. Contrast with protect mode. 
  16026.  
  16027.  realize  -To cause the system to ensure, wherever possible, that the physical 
  16028.    color table of a device is set to the closest possible match in the logical 
  16029.    color table. 
  16030.  
  16031.  recursive routine  -A routine that can call itself, or be called by another 
  16032.    routine that was called by the recursive routine. 
  16033.  
  16034.  reentrant  -The attribute of a program or routine that allows the same copy of 
  16035.    the program or routine to be used concurrently by two or more tasks. 
  16036.  
  16037.  reference phrase  -(1) A word or phrase that is emphasized in a 
  16038.    device-dependent manner to inform the user that additional information for 
  16039.    the word or phrase is available. (2) (D of C) In hypertext, text that is 
  16040.    highlighted and preceded by a single-character input field used to signify 
  16041.    the existence of a hypertext link. 
  16042.  
  16043.  reference phrase help  -In SAA Common User Access architecture, highlighted 
  16044.    words or phrases within help information that a user selects to get 
  16045.    additional information. 
  16046.  
  16047.  refresh  -To update a window, with changed information, to its current status. 
  16048.  
  16049.  region  -A clipping boundary in device space. 
  16050.  
  16051.  register  -A part of internal storage having a specified storage capacity and 
  16052.    usually intended for a specific purpose. (T)
  16053.  
  16054.  remote file system  -A file-system driver that gains access to a remote system 
  16055.    without a block device driver. 
  16056.  
  16057.  resource  -The means of providing extra information used in the definition of 
  16058.    a window. A resource can contain definitions of fonts, templates, 
  16059.    accelerators, and mnemonics; the definitions are held in a resource file. 
  16060.  
  16061.  resource file  -A file containing information used in the definition of a 
  16062.    window. Definitions can be of fonts, templates, accelerators, and mnemonics. 
  16063.  
  16064.  restore  -To return a window to its original size or position following a 
  16065.    sizing or moving action. 
  16066.  
  16067.  retained graphics  -Graphic primitives that are remembered by the Presentation 
  16068.    Manager interface after they have been drawn. Contrast with nonretained 
  16069.    graphics. 
  16070.  
  16071.  return code  -(1) A value returned to a program to indicate the results of an 
  16072.    operation requested by that program. (2) A code used to influence the 
  16073.    execution of succeeding instructions.(A) 
  16074.  
  16075.  reverse video  -(1) A form of highlighting a character, field, or cursor by 
  16076.    reversing the color of the character, field, or cursor with its background; 
  16077.    for example, changing a red character on a black background to a black 
  16078.    character on a red background. (2) In SAA Basic Common User Access 
  16079.    architecture, a screen emphasis feature that interchanges the foreground and 
  16080.    background colors of an item. 
  16081.  
  16082.  REXX Language  -Restructured Extended Executor. A procedural language that 
  16083.    provides batch language functions along with structured programming 
  16084.    constructs such as loops; conditional testing and subroutines. 
  16085.  
  16086.  RGB  -(1) Color coding in which the brightness of the additive primary colors 
  16087.    of light, red, green, and blue, are specified as three distinct values of 
  16088.    white light. (2) Pertaining to a color display that accepts signals 
  16089.    representing red, green, and blue. 
  16090.  
  16091.  roman  -Relating to a type style with upright characters. 
  16092.  
  16093.  root segment  -In a hierarchical database, the highest segment in the tree 
  16094.    structure. 
  16095.  
  16096.  round-robin scheduling  -A process that allows each thread to run for a 
  16097.    specified amount of time. 
  16098.  
  16099.  run time  -(1) Any instant at which the execution of a particular computer 
  16100.    program takes place. (T)  (2) The amount of time needed for the execution of 
  16101.    a particular computer program. (T)  (3) The time during which an instruction 
  16102.    in an instruction register is decoded and performed. Synonym for execution 
  16103.    time. 
  16104.  
  16105.  
  16106. ΓòÉΓòÉΓòÉ <hidden> Glossary - S ΓòÉΓòÉΓòÉ
  16107.  
  16108.  SAA  -Systems Application Architecture. 
  16109.  
  16110.  SBCS  -Single-byte character set. 
  16111.  
  16112.  scheduler  -A computer program designed to perform functions such as 
  16113.    scheduling, initiation, and termination of jobs. 
  16114.  
  16115.  screen  -In SAA Basic Common User Access architecture, the physical surface of 
  16116.    a display device upon which information is shown to a user. 
  16117.  
  16118.  screen device context  -A logical description of a data destination that is a 
  16119.    particular window on the screen. See also device context. 
  16120.  
  16121.  SCREEN$  -Character-device name reserved for the display screen. 
  16122.  
  16123.  scroll bar  -In SAA Advanced Common User Access architecture, a part of a 
  16124.    window, associated with a scrollable area, that a user interacts with to see 
  16125.    information that is not currently allows visible. 
  16126.  
  16127.  scrollable entry field  -An entry field larger than the visible field. 
  16128.  
  16129.  scrollable selection field  -A selection field that contains more choices than 
  16130.    are visible. 
  16131.  
  16132.  scrolling  -Moving a display image vertically or horizontally in a manner such 
  16133.    that new data appears at one edge, as existing data disappears at the 
  16134.    opposite edge. 
  16135.  
  16136.  secondary window  -A window that contains information that is dependent on 
  16137.    information in a primary window and is used to supplement the interaction in 
  16138.    the primary window. 
  16139.  
  16140.  sector  -On disk or diskette storage, an addressable subdivision of a track 
  16141.    used to record one block of a program or data. 
  16142.  
  16143.  segment  -See graphics segment. 
  16144.  
  16145.  segment attributes  -Attributes that apply to the segment as an entity, as 
  16146.    opposed to the individual primitives within the segment. For example, the 
  16147.    visibility or detectability of a segment. 
  16148.  
  16149.  segment chain  -All segments in a graphics presentation space that are defined 
  16150.    with the 'chained' attribute. Synonym for picture chain. 
  16151.  
  16152.  segment priority  -The order in which segments are drawn. 
  16153.  
  16154.  segment store  -An area in a normal graphics presentation space where retained 
  16155.    graphics segments are stored. 
  16156.  
  16157.  select  -To mark or choose an item. Note that select means to mark or type in 
  16158.    a choice on the screen; enter means to send all selected choices to the 
  16159.    computer for processing. 
  16160.  
  16161.  select button  -The button on a pointing device, such as a mouse, that is 
  16162.    pressed to select a menu choice.  Also known as button 1. 
  16163.  
  16164.  selection cursor  -In SAA Advanced Common User Access architecture, a visual 
  16165.    indication that a user has selected a choice. It is represented by outlining 
  16166.    the choice with a dotted box. See also text cursor. 
  16167.  
  16168.  selection field  -(1) In SAA Advanced Common User Access architecture, a set 
  16169.    of related choices. See also entry field. (2) In SAA Basic Common User 
  16170.    Access architecture, an area of a panel that cannot be scrolled and contains 
  16171.    a fixed number of choices. 
  16172.  
  16173.  semantics  -The relationships between symbols and their meanings. 
  16174.  
  16175.  semaphore  -An object used by applications for signalling purposes and for 
  16176.    controlling access to serially reusable resources. 
  16177.  
  16178.  separator  -In SAA Advanced Common User Access architecture, a line or color 
  16179.    boundary that provides a visual distinction between two adjacent areas. 
  16180.  
  16181.  serial dialog box  -See modal dialog box. 
  16182.  
  16183.  serialization  -The consecutive ordering of items. 
  16184.  
  16185.  serialize  -To ensure that one or more events occur in a specified sequence. 
  16186.  
  16187.  serially reusable resource (SRR)  -A logical resource or object that can be 
  16188.    accessed by only one task at a time. 
  16189.  
  16190.  session  -(1) A routing mechanism for user interaction via the console; a 
  16191.    complete environment that determines how an application runs and how users 
  16192.    interact with the application. OS/2 can manage more than one session at a 
  16193.    time, and more than one process can run in a session. Each session has its 
  16194.    own set of environment variables that determine where OS/2 looks for 
  16195.    dynamic-link libraries and other important files. (2) (D of C) In the OS/2 
  16196.    operating system, one instance of a started program or command prompt. Each 
  16197.    session is separate from all other sessions that might be running on the 
  16198.    computer. The operating system is responsible for coordinating the resources 
  16199.    that each session uses, such as computer memory, allocation of processor 
  16200.    time, and windows on the screen. 
  16201.  
  16202.  Settings Notebook  -A control window that is used to display the settings for 
  16203.    an object and to enable the user to change them. 
  16204.  
  16205.  shadow  -An object that refers to another object. A shadow is not a copy of 
  16206.    another object, but is another representation of the object. 
  16207.  
  16208.  shadow box  -The area on the screen that follows mouse movements and shows 
  16209.    what shape the window will take if the mouse button is released. 
  16210.  
  16211.  shared data  -Data that is used by two or more programs. 
  16212.  
  16213.  shared memory  -In the OS/2 operating system, a segment that can be used by 
  16214.    more than one program. 
  16215.  
  16216.  shear  -In computer graphics, the forward or backward slant of a graphics 
  16217.    symbol or string of such symbols relative to a line perpendicular to the 
  16218.    baseline of the symbol. 
  16219.  
  16220.  shell  -(1) A software interface between a user and the operating system of a 
  16221.    computer. Shell programs interpret commands and user interactions on devices 
  16222.    such as keyboards, pointing devices, and touch-sensitive screens, and 
  16223.    communicate them to the operating system. (2) Software that allows a kernel 
  16224.    program to run under different operating-system environments. 
  16225.  
  16226.  shutdown  -The process of ending operation of a system or a subsystem, 
  16227.    following a defined procedure. 
  16228.  
  16229.  sibling processes  -Child processes that have the same parent process. 
  16230.  
  16231.  sibling windows  -Child windows that have the same parent window. 
  16232.  
  16233.  simple list  -A list of like values; for example, a list of user names. 
  16234.    Contrast with mixed list. 
  16235.  
  16236.  single-byte character set (SBCS)  -A character set in which each character is 
  16237.    represented by a one-byte code.  Contrast with double-byte character set. 
  16238.  
  16239.  slider box  -In SAA Advanced Common User Access architecture: a part of the 
  16240.    scroll bar that shows the position and size of the visible information in a 
  16241.    window relative to the total amount of information available. Also known as 
  16242.    thumb mark. 
  16243.  
  16244.  SOM  -System Object Model. 
  16245.  
  16246.  source file  -A file that contains source statements for items such as 
  16247.    high-level language programs and data description specifications. 
  16248.  
  16249.  source statement  -A statement written in a programming language. 
  16250.  
  16251.  specific dynamic-link module  -A dynamic-link module created for the exclusive 
  16252.    use of an application. 
  16253.  
  16254.  spin button  -In SAA Advanced Common User Access architecture, a type of entry 
  16255.    field that shows a scrollable ring of choices from which a user can select a 
  16256.    choice. After the last choice is displayed, the first choice is displayed 
  16257.    again.  A user can also type a choice from the scrollable ring into the 
  16258.    entry field without interacting with the spin button. 
  16259.  
  16260.  spline  -A sequence of one or more B╨Æzier curves. 
  16261.  
  16262.  spooler  -A program that intercepts the data going to printer devices and 
  16263.    writes it to disk. The data is printed or plotted when it is complete and 
  16264.    the required device is available.  The spooler prevents output from 
  16265.    different sources from being intermixed. 
  16266.  
  16267.  stack  -A list constructed and maintained so that the next data element to be 
  16268.    retrieved is the most recently stored. This method is characterized as 
  16269.    last-in-first-out (LIFO). 
  16270.  
  16271.  standard window  -A collection of window elements that form a panel. The 
  16272.    standard window can include one or more of the following window elements: 
  16273.    sizing borders, system menu icon, title bar, maximize/minimize/restore 
  16274.    icons, action bar and pull-downs, scroll bars, and client area. 
  16275.  
  16276.  static control  -The means by which the application presents descriptive 
  16277.    information (for example, headings and descriptors) to the user. The user 
  16278.    cannot change this information. 
  16279.  
  16280.  static storage  -(1) A read/write storage unit in which data is retained in 
  16281.    the absence of control signals. (A)  Static storage may use dynamic 
  16282.    addressing or sensing circuits. (2) Storage other than dynamic storage. (A)
  16283.  
  16284.  style  -See window style. 
  16285.  
  16286.  subclass  -A class that is a child of another class. See also Inheritance. 
  16287.  
  16288.  subdirectory  -In an IBM personal computer, a file referred to in a root 
  16289.    directory that contains the names of other files stored on the diskette or 
  16290.    fixed disk. 
  16291.  
  16292.  swapping  -(1) A process that interchanges the contents of an area of real 
  16293.    storage with the contents of an area in auxiliary storage. (I)  (A)  (2) In 
  16294.    a system with virtual storage, a paging technique that writes the active 
  16295.    pages of a job to auxiliary storage and reads pages of another job from 
  16296.    auxiliary storage into real storage. (3) The process of temporarily removing 
  16297.    an active job from main storage, saving it on disk, and processing another 
  16298.    job in the area of main storage formerly occupied by the first job. 
  16299.  
  16300.  switch  -(1) In SAA usage, to move the cursor from one point of interest to 
  16301.    another;  for example, to move from one screen or window to another or from 
  16302.    a place within a displayed image to another place on the same displayed 
  16303.    image. (2) In a computer program, a conditional instruction and an indicator 
  16304.    to be interrogated by that instruction. (3) A device or programming 
  16305.    technique for making a selection, for example, a toggle, a conditional jump. 
  16306.  
  16307.  switch list  -See Task List. 
  16308.  
  16309.  symbolic identifier  -A text string that equates to an integer value in an 
  16310.    include file, which is used to identify a programming object. 
  16311.  
  16312.  symbols  -In Information Presentation Facility, a document element used to 
  16313.    produce characters that cannot be entered from the keyboard. 
  16314.  
  16315.  synchronous  -Pertaining to two or more processes that depend upon the 
  16316.    occurrence of specific events such as common timing signals. (T)  See also 
  16317.    asynchronous. 
  16318.  
  16319.  System Menu  -In the Presentation Manager, the pull-down in the top left 
  16320.    corner of a window that allows it to be moved and sized with the keyboard. 
  16321.  
  16322.  System Object Model (SOM)  -A mechanism for language-neutral, object-oriented 
  16323.    programming in the OS/2 environment. 
  16324.  
  16325.  system queue  -The master queue for all pointer device or keyboard events. 
  16326.  
  16327.  system-defined messages  -Messages that control the operations of applications 
  16328.    and provides input an other information for applications to process. 
  16329.  
  16330.  Systems Application Architecture (SAA)  -A set of IBM software interfaces, 
  16331.    conventions, and protocols that provide a framework for designing and 
  16332.    developing applications that are consistent across systems. 
  16333.  
  16334.  
  16335. ΓòÉΓòÉΓòÉ <hidden> Glossary - T ΓòÉΓòÉΓòÉ
  16336.  
  16337.  table tags  -In Information Presentation Facility, a document element that 
  16338.    formats text in an arrangement of rows and columns. 
  16339.  
  16340.  tag  -(1) One or more characters attached to a set of data that contain 
  16341.    information about the set, including its identification. (I)  (A)  (2) In 
  16342.    Generalized Markup Language markup, a name for a type of document or 
  16343.    document element that is entered in the source document to identify it. 
  16344.  
  16345.  target object  -An object to which the user is transferring information. 
  16346.  
  16347.  Task List  -In the Presentation Manager, the list of programs that are active. 
  16348.    The list can be used to switch to a program and to stop programs. 
  16349.  
  16350.  terminate-and-stay-resident (TSR)  -Pertaining to an application that modifies 
  16351.    an operating system interrupt vector to point to its own location (known as 
  16352.    hooking an interrupt). 
  16353.  
  16354.  text  -Characters or symbols. 
  16355.  
  16356.  text cursor  -A symbol displayed in an entry field that indicates where typed 
  16357.    input will appear. 
  16358.  
  16359.  text window  -Also known as the VIO window. 
  16360.  
  16361.  text-windowed application  -The environment in which the operating system 
  16362.    performs advanced-video input and output operations. 
  16363.  
  16364.  thread  -A unit of execution within a process. It uses the resources of the 
  16365.    process. 
  16366.  
  16367.  thumb mark  -The portion of the scroll bar that describes the range and 
  16368.    properties of the data that is currently visible in a window. Also known as 
  16369.    a slider box. 
  16370.  
  16371.  thunk  -Term used to describe the process of address conversion, stack and 
  16372.    structure realignment, etc., necessary when passing control between 16-bit 
  16373.    and 32-bit modules. 
  16374.  
  16375.  tilde  -A mark used to denote the character that is to be used as a mnemonic 
  16376.    when selecting text items within a menu. 
  16377.  
  16378.  time slice  -(1) An interval of time on the processing unit allocated for use 
  16379.    in performing a task. After the interval has expired, processing-unit time 
  16380.    is allocated to another task, so a task cannot monopolize processing-unit 
  16381.    time beyond a fixed limit. (2) In systems with time sharing, a segment of 
  16382.    time allocated to a terminal job. 
  16383.  
  16384.  time-critical process  -A process that must be performed within a specified 
  16385.    time after an event has occurred. 
  16386.  
  16387.  timer  -A facility provided under the Presentation Manager, whereby 
  16388.    Presentation Manager will dispatch a message of class WM_TIMER to a 
  16389.    particular window at specified intervals. This capability may be used by an 
  16390.    application to perform a specific processing task at predetermined 
  16391.    intervals, without the necessity for the application to explicitly keep 
  16392.    track of the passage of time. 
  16393.  
  16394.  timer tick  -See clock tick. 
  16395.  
  16396.  title bar  -In SAA Advanced Common User Access architecture, the area at the 
  16397.    top of each window that contains the window title and system menu icon. When 
  16398.    appropriate, it also contains the minimize, maximize, and restore icons. 
  16399.    Contrast with panel title. 
  16400.  
  16401.  TLB  -Translation lookaside buffer. 
  16402.  
  16403.  transaction  -An exchange between a workstation and another device that 
  16404.    accomplishes a particular action or result. 
  16405.  
  16406.  transform  -(1) The action of modifying a picture by scaling, shearing, 
  16407.    reflecting, rotating, or translating. (2) The object that performs or 
  16408.    defines such a modification; also referred to as a transformation. 
  16409.  
  16410.  Translation lookaside buffer (TLB)  -A hardware-based address caching 
  16411.    mechanism for paging information. 
  16412.  
  16413.  Tree  -In the Presentation Manager, the window in the File Manager that shows 
  16414.    the organization of drives and directories. 
  16415.  
  16416.  truncate  -(1) To terminate a computational process in accordance with some 
  16417.    rule (A)  (2) To remove the beginning or ending elements of a string. (3) To 
  16418.    drop data that cannot be printed or displayed in the line width specified or 
  16419.    available. (4) To shorten a field or statement to a specified length. 
  16420.  
  16421.  TSR  -Terminate-and-stay-resident. 
  16422.  
  16423.  unnamed pipe  -A circular buffer, created in memory, used by related processes 
  16424.    to communicate with one another. Contrast with named pipe. 
  16425.  
  16426.  unordered list  -In Information Presentation Facility, a vertical arrangement 
  16427.    of items in a list, with each item in the list preceded by a special 
  16428.    character or bullet. 
  16429.  
  16430.  update region  -A system-provided area of dynamic storage containing one or 
  16431.    more (not necessarily contiguous) rectangular areas of a window that are 
  16432.    visually invalid or incorrect, and therefore are in need of repainting. 
  16433.  
  16434.  user interface  -Hardware, software, or both that allows a user to interact 
  16435.    with and perform operations on a system, program, or device. 
  16436.  
  16437.  User Shell  -A component of OS/2 that uses a graphics-based, windowed 
  16438.    interface to allow the user to manage applications and files installed and 
  16439.    running under OS/2. 
  16440.  
  16441.  utility program  -(1) A computer program in general support of computer 
  16442.    processes; for example, a diagnostic program, a trace program, a sort 
  16443.    program. (T)  (2) A program designed to perform an everyday task such as 
  16444.    copying data from one storage device to another. (A)
  16445.  
  16446.  
  16447. ΓòÉΓòÉΓòÉ <hidden> Glossary - U ΓòÉΓòÉΓòÉ
  16448.  
  16449. There are no glossary terms for this starting letter. 
  16450.  
  16451.  
  16452. ΓòÉΓòÉΓòÉ <hidden> Glossary - V ΓòÉΓòÉΓòÉ
  16453.  
  16454.  value set control  -A visual component that enables a user to select one 
  16455.    choice from a group of mutually exclusive choices. 
  16456.  
  16457.  vector font  -A set of symbols, each of which is created as a series of lines 
  16458.    and curves. Synonymous with outline font. Contrast with image font. 
  16459.  
  16460.  VGA  -Video graphics array. 
  16461.  
  16462.  view  -A way of looking at an object's information. 
  16463.  
  16464.  viewing pipeline  -The series of transformations applied to a graphic object 
  16465.    to map the object to the device on which it is to be presented. 
  16466.  
  16467.  viewing window  -A clipping boundary that defines the visible part of model 
  16468.    space. 
  16469.  
  16470.  VIO  -Video Input/Output. 
  16471.  
  16472.  virtual memory (VM)  -Synonymous with virtual storage. 
  16473.  
  16474.  virtual storage  -(1) The storage space that may be regarded as addressable 
  16475.    main storage by the user of a computer system in which virtual addresses are 
  16476.    mapped into real addresses. The size of virtual storage is limited by the 
  16477.    addressing scheme of the computer system and by the amount of auxiliary 
  16478.    storage available, not by the actual number of main storage 
  16479.    locations. (I)  (A)  (2) Addressable space that is apparent to the user as 
  16480.    the processor storage space, from which the instructions and the data are 
  16481.    mapped into the processor storage locations. (3) Synonymous with virtual 
  16482.    memory. 
  16483.  
  16484.  visible region  -A window's presentation space, clipped to the boundary of the 
  16485.    window and the boundaries of any overlying window. 
  16486.  
  16487.  volume  -(1) A file-system driver that uses a block device driver for input 
  16488.    and output operations to a local or remote device. (I)  (2) A portion of 
  16489.    data, together with its data carrier, that can be handled conveniently as a 
  16490.    unit. 
  16491.  
  16492.  
  16493. ΓòÉΓòÉΓòÉ <hidden> Glossary - W ΓòÉΓòÉΓòÉ
  16494.  
  16495.  wildcard character  -Synonymous with global file-name character. 
  16496.  
  16497.  window  -(1) A portion of a display surface in which display images pertaining 
  16498.    to a particular application can be presented. Different applications can be 
  16499.    displayed simultaneously in different windows. (A)  (2) An area of the 
  16500.    screen with visible boundaries within which information is displayed. A 
  16501.    window can be smaller than or the same size as the screen. Windows can 
  16502.    appear to overlap on the screen. 
  16503.  
  16504.  window class  -The grouping of windows whose processing needs conform to the 
  16505.    services provided by one window procedure. 
  16506.  
  16507.  window coordinates  -A set of coordinates by which a window position or size 
  16508.    is defined; measured in device units, or pels. 
  16509.  
  16510.  window handle  -Unique identifier of a window, generated by Presentation 
  16511.    Manager when the window is created, and used by applications to direct 
  16512.    messages to the window. 
  16513.  
  16514.  window procedure  -Code that is activated in response to a message. The 
  16515.    procedure controls the appearance and behavior of its associated windows. 
  16516.  
  16517.  window rectangle  -The means by which the size and position of a window is 
  16518.    described in relation to the desktop window. 
  16519.  
  16520.  window resource  -A read-only data segment stored in the .EXE file of an 
  16521.    application o the .DLL file of a dynamic link library. 
  16522.  
  16523.  window style  -The set of properties that influence how events related to a 
  16524.    particular window will be processed. 
  16525.  
  16526.  window title  -In SAA Advanced Common User Access architecture, the area in 
  16527.    the title bar that contains the name of the application and the OS/2 
  16528.    operating system file name, if applicable. 
  16529.  
  16530.  Workplace Shell  -The OS/2 object-oriented, graphical user interface. 
  16531.  
  16532.  workstation  -(1) A display screen together with attachments such as a 
  16533.    keyboard, a local copy device, or a tablet. (2) (D of C) One or more 
  16534.    programmable or nonprogrammable devices that allow a user to do work. 
  16535.  
  16536.  world coordinates  -A device-independent Cartesian coordinate system used by 
  16537.    the application program for specifying graphical input and output. (I)  (A)
  16538.  
  16539.  world-coordinate space  -Coordinate space in which graphics are defined before 
  16540.    transformations are applied. 
  16541.  
  16542.  WYSIWYG  -What-You-See-Is-What-You-Get. A capability of a text editor to 
  16543.    continually display pages exactly as they will be printed. 
  16544.  
  16545.  
  16546. ΓòÉΓòÉΓòÉ <hidden> Glossary - X ΓòÉΓòÉΓòÉ
  16547.  
  16548. There are no glossary terms for this starting letter. 
  16549.  
  16550.  
  16551. ΓòÉΓòÉΓòÉ <hidden> Glossary - Y ΓòÉΓòÉΓòÉ
  16552.  
  16553. There are no glossary terms for this starting letter. 
  16554.  
  16555.  
  16556. ΓòÉΓòÉΓòÉ <hidden> Glossary - Z ΓòÉΓòÉΓòÉ
  16557.  
  16558.  z-order  -The order in which sibling windows are presented. The topmost 
  16559.    sibling window obscures any portion of the siblings that it overlaps; the 
  16560.    same effect occurs down through the order of lower sibling windows. 
  16561.  
  16562.  zooming  -The progressive scaling of an entire display image in order to give 
  16563.    the visual impression of movement of all or part of a display group toward 
  16564.    or away from an observer. (I)  (A)
  16565.  
  16566.  8.3 file-name format  -A file-naming convention in which file names are 
  16567.    limited to eight characters before and three characters after a single dot. 
  16568.    Usually pronounced "eight-dot-three." See also non-8.3 file-name format. 
  16569.