home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / VSCPPv4.zip / VACPP / IBMCPP / HELP / TOOLINFO.INF (.txt) < prev    next >
OS/2 Help File  |  1995-03-10  |  434KB  |  16,499 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.    o  Introduction 
  103.  
  104.       This chapter contains information about all chapters in the book and the 
  105.       function of the tools. 
  106.  
  107.    o  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.    o  Dialog Editor 
  113.  
  114.       This chapter describes the Dialog Editor and how it is used to create and 
  115.       modify dialog boxes. 
  116.  
  117.    o  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.    o  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.    o  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.    o  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.    o  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.    o  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.    o  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.    o  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.    o  Message Segment Binder (MSGBIND) 
  159.  
  160.       This chapter describes MSGBIND, which binds a message segment to an 
  161.       executable program. 
  162.  
  163.    o  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.    o  Program Maintenance Utility (NMAKE) 
  170.  
  171.       This chapter describes how NMAKE automates the process of building an 
  172.       application from project files. 
  173.  
  174.    o  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.    o  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.    o  T Terminal Emulator 
  187.  
  188.       This chapter discusses how the T Terminal Emulator communicates with the 
  189.       machine being debugged. 
  190.  
  191.    o  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.    o  Selected messages can be bound to the message segment of an executable 
  332.       file using the MSGBIND program. 
  333.  
  334.    o  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.    o  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.    o  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 the header of the 
  547.            file that contains the compressed data. Drive letters are not 
  548.            permitted. Unless this path is overridden with the UNPACK command, 
  549.            it will be the destination path when the file is uncompressed. 
  550.            Headerpath must end with a back slash (\). 
  551.  
  552.       /H:headerfile 
  553.            Specifies the name of the file to be placed in the header of the 
  554.            compressed file. This file name will be used as the destination file 
  555.            for the uncompressed data and cannot be overridden. 
  556.  
  557.            If a header file name is not specified, PACK automatically uses 
  558.            sourcefile as the name of the file that is placed in the header of 
  559.            the compressed file. 
  560.  
  561.       /H:headerpath\headerfile 
  562.            Specifies that both a destination path and a destination file name 
  563.            are to be placed in the header of the file that has the compressed 
  564.            data. 
  565.  
  566.  /D:headerdate       Records the date in the header of the file that has the 
  567.                      compressed data, and also in the destination file when it 
  568.                      is uncompressed. 
  569.  
  570.                      The date must follow the format /D:MM-DD-YYYY (for 
  571.                      example: /D:08-20-1991 and /D:12-30-2010) 
  572.  
  573.  /T:headertime       Records the time in the header of the file that has the 
  574.                      compressed data, and also in the destination file when it 
  575.                      is uncompressed. 
  576.  
  577.                      The time must follow the format /T:HH.MM (for example 
  578.                      /T:02.06 and /T:14.54). Hour 00 represents 12 a.m. and 
  579.                      hour 12 represents 12 p.m. 
  580.  
  581.  /C                  Specifies that the current path be placed in the header of 
  582.                      the file that contains the compressed data. When the 
  583.                      UNPACK command is used, this path will be the destination 
  584.                      path for the file that contains the uncompressed data. 
  585.  
  586.                      You cannot use /C when the headerpath is used. 
  587.  
  588.  /A                  Adds data from sourcefile to the data in packedfile. 
  589.  
  590.                      The source file can be either in a compressed or 
  591.                      uncompressed state. If the source file is in an 
  592.                      uncompressed state, the data is compressed before being 
  593.                      added to the file containing the compressed data. 
  594.  
  595.  /R                  Removes the file specified by sourcefile from the file 
  596.                      that contains only compressed data. The sourcefile 
  597.                      parameter must specify the path and file name exactly as 
  598.                      they appear in the header of the file with the compressed 
  599.                      data; otherwise, the following error message appears on 
  600.                      the screen. 
  601.  
  602.                                           The specified file to remove was not found.
  603.  
  604.                      The /R parameter is valid only when used in conjunction 
  605.                      with sourcefile and packedfile. 
  606.  
  607.  Note:  To display the path and file-name information stored in the header of 
  608.         the file that contains the compressed data, use the UNPACK command and 
  609.         specify the SHOW option. For information about the SHOW option, see the 
  610.         UNPACK command in the online OS/2 Command Reference. 
  611.  
  612.  You can also get end-to-end compressed data by using global file-name 
  613.  characters. For example: 
  614.  
  615.     PACK *.EXE BUNDLE
  616.  
  617.  
  618. ΓòÉΓòÉΓòÉ 4.1.2. Starting PACK: Method 2 ΓòÉΓòÉΓòÉ
  619.  
  620. You can start PACK with a single command from the command line. You can type 
  621. the name of a single file that contains a list of all the files you want to 
  622. compress. 
  623.  
  624. Include the drive and path if the files are not in the working directory. You 
  625. can specify file names with any combination of uppercase and lowercase letters. 
  626. File-name extensions are not required; however, if you specify a file name that 
  627. has an extension, also type the extension. 
  628.  
  629. The command-line syntax is as follows: 
  630.  
  631.   PACK listfile [packedfile] /L
  632.     [/H:headerpath\
  633.     |/H:headerfile
  634.     |/H:headerpath\ headerfile]
  635.     [/D:headerdate]
  636.     [/T:headertime]
  637.     [/C]
  638.  
  639. where: 
  640.  
  641.  listfile            Specifies the name of the file that contains a list of 
  642.                      files that are to be compressed. When naming a list file, 
  643.                      do not use global file-name characters. 
  644.  
  645.                      For information about list files, see Creating a List 
  646.                      File. 
  647.  
  648.  packedfile          Specifies the name of the file that will contain the 
  649.                      compressed data. Files that contain compressed data can be 
  650.                      recognized by the @ symbol as the last character in the 
  651.                      file name. If you do not specify this parameter, PACK 
  652.                      places the compressed data in sourcefile and modifies its 
  653.                      name to contain the @ symbol. 
  654.  
  655.  /L                  Indicates that filename is a list file. A list file is not 
  656.                      compressed; it simply contains a listing of the names of 
  657.                      the files that are to be compressed. 
  658.  
  659.  /H:headerpath\ or /H:headerfile or /H:headerpath\ headerfile These parameters 
  660.                      can be used separately or they can be paired. 
  661.  
  662.       /H:headerpath\ 
  663.            Specifies the destination path (drive letters are not permitted) to 
  664.            be placed in the header of the file that contains the compressed 
  665.            data. Unless this path is overridden with the UNPACK command, it 
  666.            will be the destination path when the file is uncompressed. 
  667.            Headerpath must end with a back slash (\). 
  668.  
  669.       /H:headerfile 
  670.            Specifies the name of the file to be placed in the header of the 
  671.            compressed file. This file name will be used as the destination file 
  672.            for the uncompressed data and cannot be overridden. 
  673.  
  674.            If a header file name is not specified, PACK automatically uses 
  675.            sourcefile as the name of the file that is placed in the header of 
  676.            the compressed file. 
  677.  
  678.       /H:headerpath\ headerfile 
  679.            Specifies that both a destination path and a destination file name 
  680.            are to be placed in the header of the file that has the compressed 
  681.            data. 
  682.  
  683.  /D:headerdate       Records the date in the header of the file that has the 
  684.                      compressed data, and also in the destination file when it 
  685.                      is uncompressed. 
  686.  
  687.                      The date must follow the format /D:MM-DD-YYYY. For 
  688.                      example: /D:08-20-1991 and /D:12-30-2010. 
  689.  
  690.  /T:headertime       Records the time in the header of the file that has the 
  691.                      compressed data, and also in the destination file when it 
  692.                      is uncompressed. 
  693.  
  694.                      The time must follow the format /T:HH.MM. For example 
  695.                      /T:02.06 and /T:14.54. Hour 00 represents 12 a.m. and hour 
  696.                      12 represents 12 p.m. 
  697.  
  698.  /C                  Specifies that the current path be placed in the header of 
  699.                      the file that contains the compressed data. When the 
  700.                      UNPACK command is used, this path will be the destination 
  701.                      path for the file that contains the uncompressed data. 
  702.  
  703.                      You cannot use /C when the headerpath is used. 
  704.  
  705.  Note:  The path and file-name information stored in the header of the file 
  706.         that contains the compressed data can be displayed by using the /SHOW 
  707.         option available with UNPACK. For information about the /SHOW option, 
  708.         see the UNPACK command in the on line OS/2 Command Reference. 
  709.  
  710.  
  711. ΓòÉΓòÉΓòÉ 4.2. Creating a List File ΓòÉΓòÉΓòÉ
  712.  
  713. To use a list file with PACK, you must first create a file that contains the 
  714. names of the files you want to compress. You can give the list file any name. 
  715. Following is an example of specifying a list file at the command line. 
  716.  
  717.   PACK DEVICE.LST DEVICE.DRV /L
  718.  
  719. The /L indicates that DEVICE.LST is a list file. If the list file is not in the 
  720. working directory, you must specify the drive and path. Global file-name 
  721. characters are not permitted in the list-file name. DEVICE.DRV is the 
  722. destination file for the end-to-end-compressed data. (End-to-end compressed 
  723. data is the data from each of the files contained in the list file. This data 
  724. is stored in a contiguous format in the destination file.) 
  725.  
  726. The syntax used in the list file is similar to that used in the command line. 
  727. The syntax for a single line in the list file follows: 
  728.  
  729.   sourcefile
  730.     [/H:headerpath\
  731.     |/H:headerfile
  732.     |/H:headerpath\ headerfile]
  733.     [/D:headerdate]
  734.     [/T:headertime]
  735.     [/C]
  736.  
  737. When using the list-file method (method 2), global file-name characters are not 
  738. permitted in the source-file name. Notice also that "PACK" is excluded and 
  739. packedfile is not permitted in the list file, because they were specified on 
  740. the command line. You can include comments or blank lines by entering a 
  741. semicolon as the first character of the line. An example of a list file 
  742. follows. 
  743.  
  744.   ;This is a comment
  745.   C:\OS2\COMMAND.COM
  746.   CONFIG.SYS /H:CONFIG.BAK /C
  747.   \OS2\INSTALL\DDINSTAL.EXE
  748.    /H:\OS2\DDINSTAL.TMP
  749.    /D:10-15-91 /T:11.45
  750.  
  751.  
  752. ΓòÉΓòÉΓòÉ 4.3. Starting UNPACK ΓòÉΓòÉΓòÉ
  753.  
  754. UNPACK restores a file of compressed data to its original size and copies it to 
  755. a specified drive and path. To start the UNPACK command, type: 
  756.  
  757.   UNPACK sourcefile
  758.   [destinationdrive:] [destinationpath]
  759.   [/SHOW] [/N:singlefile]
  760.   [/V] [/F]
  761.  
  762. where: 
  763.  
  764.  sourcefile          Specifies the name of an existing file that contains 
  765.                      compressed data.  If this file contains one or more files 
  766.                      of compressed data, UNPACK restores each file within the 
  767.                      file. 
  768.  
  769.  destinationdrive:   Specifies the name of the drive where you want UNPACK to 
  770.                      copy one or more restored files. 
  771.  
  772.                      When you specify a destination drive but not a path, 
  773.                      UNPACK uses the path information stored in the header of 
  774.                      the file that contains the compressed data. 
  775.  
  776.  destinationpath     Specifies the name of the directory (and its 
  777.                      subdirectories) where you want UNPACK to copy one or more 
  778.                      restored files. 
  779.  
  780.                      When specified, the destination path overrides the path 
  781.                      information stored in the header of the file that contains 
  782.                      the compressed data. 
  783.  
  784.  /SHOW               Displays the destination path and file-name information 
  785.                      that are saved in the header of each file containing 
  786.                      compressed data. 
  787.  
  788.  /N:singlefile       Extracts and uncompresses one file from a file that 
  789.                      contains multiple files of compressed data. 
  790.  
  791.  /V                  Verifies that sectors written to the target disk are 
  792.                      recorded properly.  This parameter lets you know that 
  793.                      critical data has been correctly recorded. 
  794.  
  795.                      This parameter causes UNPACK to run slower because a check 
  796.                      is made for each entry recorded on the disk. 
  797.  
  798.  /F                  Specifies that files with extended attributes should not 
  799.                      be unpacked or copied if the destination file system does 
  800.                      not support extended attributes. 
  801.  
  802.  
  803. ΓòÉΓòÉΓòÉ 5. Dialog Editor ΓòÉΓòÉΓòÉ
  804.  
  805. You use the Dialog Editor to create and modify dialog boxes, and to create and 
  806. modify the controls and text within dialog boxes. As you create the dialog box 
  807. and its controls, you see them on the screen as the user will see them when 
  808. your program is run. You can place each dialog box and its controls where you 
  809. want them on the screen. In addition, you can test the dialog box before you 
  810. incorporate it into your application. 
  811.  
  812. Each dialog box and control can have either an integer identifier or a symbolic 
  813. identifier that equates to an integer identifier. You use the identifier in 
  814. your application to refer to the dialog box or control. If you intend to use 
  815. symbolic identifiers in your application, you must enter the symbolic and 
  816. integer identifiers in an include file.  If you do not use symbolic names, the 
  817. Dialog Editor supplies an integer identifier for each control and for the 
  818. dialog box itself.  You can use the Dialog Editor to create the include file, 
  819. or you can use a text editor to create the include file before using the Dialog 
  820. Editor. 
  821.  
  822. It is good programming practice to plan the resources that your application 
  823. will use and to choose a naming and numbering convention for the symbolic or 
  824. integer identifiers before you create them.  Keep the include file separate 
  825. from other include files used by your application.  Include files used by the 
  826. Dialog Editor can contain only #define statements that define their symbolic 
  827. identifiers and equivalent integers. 
  828.  
  829. Although the Dialog Editor draws dialog boxes and controls on the screen so you 
  830. can see what they look like when used by your application, it does not save 
  831. them as graphics.  Instead, the Dialog Editor saves them in an ASCII-text 
  832. format file that has a .DLG extension.  Refer to the dialog template section of 
  833. this chapter. 
  834.  
  835. The Dialog Editor also creates a compiled form of the .DLG file in a resource 
  836. file with a .RES extension. The .DLG and .RES files can contain more than one 
  837. dialog box.  The resource file can contain other application resources, such as 
  838. icons, bit maps, and string tables.  It is attached to the executable (.EXE) 
  839. file of the application during the compile and link process. 
  840.  
  841.  
  842. ΓòÉΓòÉΓòÉ 5.1. Designing Dialog Boxes ΓòÉΓòÉΓòÉ
  843.  
  844. Dialog boxes should be designed to clearly identify the information that the 
  845. user is required to complete. The following are a few Common User Access* 
  846. guidelines: 
  847.  
  848.    o  Lay out the controls in columns, starting at the upper-left corner, for 
  849.       left-to-right or top-to-bottom scanning. 
  850.    o  Vertically and horizontally align selection and entry fields so that the 
  851.       cursor moves in a straight line. 
  852.    o  Arrange the controls in the sequence in which the user would complete 
  853.       them. 
  854.    o  If there are only a few entry fields, locate them at the top of the 
  855.       dialog box. 
  856.    o  Make groups of controls obvious by use of group boxes and white space. 
  857.    o  Align group boxes, where possible.  Group boxes can be extended to the 
  858.       right to line up with other group boxes. 
  859.    o  Use field identifiers to identify the purpose of single and multiple 
  860.       groups of choices. 
  861.  
  862.  
  863. ΓòÉΓòÉΓòÉ 5.2. Creating a Dialog Box ΓòÉΓòÉΓòÉ
  864.  
  865. To run the Dialog Editor, select Dialog Editor from the Development Tools 
  866. folder. The main window appears, displaying the menu bar choices File, Edit, 
  867. Control, Arrange, Options, and Help. On line help that tells you how to use the 
  868. editor is available on most Dialog Editor windows. 
  869.  
  870. To create a new dialog box, start with either one of the following steps: 
  871.  
  872.    o  Select New Dialog from the Edit menu.  The editor opens new files with 
  873.       the extensions .RES and .DLG. This also opens a new include file. 
  874.    o  Select New from the File menu.  This opens new files with the extensions 
  875.       .RES and .DLG. You can open a new include file or an existing one. 
  876.  
  877.  The above steps have the same effect. 
  878.  
  879.  When you edit a dialog box, the names of the resource and include files are 
  880.  shown in the title bar of the Dialog Editor. If you are editing a new file 
  881.  that has not yet been named or saved, (Untitled) appears in the title bar in 
  882.  place of a name. If (Untitled) appears in the title bar in place of a name, 
  883.  there are unsaved changes. 
  884.  
  885.  The Dialog Box ID field appears in the status area. A default integer number 
  886.  is supplied in the entry field. Type a symbolic identifier for the dialog box, 
  887.  such as MYDIALOG. Tab to the integer field and type the integer number. Press 
  888.  Enter to place them both in the include file. 
  889.  
  890.  The new dialog box appears in the lower-left corner of the editor screen 
  891.  enclosed by a frame. The frame contains eight small squares called drag 
  892.  handles, which allow you to change the width and height of the selected item. 
  893.  This indicates that the dialog box is selected for editing.  If you are 
  894.  creating a new dialog box, the dialog is automatically selected; at all other 
  895.  times, before you edit the dialog box or a control, you must click on it to 
  896.  select it. 
  897.  
  898.  To continue creating the new dialog box, follow these steps: 
  899.  
  900.    1. Make the dialog box larger by clicking on one of its drag handles with 
  901.       the left mouse button and dragging until the box is the size you want it 
  902.       to be. This can be done in one operation by clicking on the upper-right 
  903.       corner of the frame and dragging diagonally upwards and to the right. 
  904.  
  905.       Information about the item you are editing is displayed in the Selected 
  906.       Item Status box in the left half of the status area.  As you move the 
  907.       shadow box, the x-y-coordinates change.  These are the coordinates of the 
  908.       origin of the dialog box relative to the origin of the window.  The 
  909.       cx-cy-coordinates are the width and height of the dialog box.  The 
  910.       symbolic identifier is also shown. 
  911.  
  912.    2. Select Styles from the Edit menu. The Dialog Box Styles pop-up window 
  913.       appears. 
  914.  
  915.    3. Click on the text entry field in the status area, and then type the 
  916.       dialog box title (for instance, Sample dialog box) into the field. 
  917.  
  918.    4. Press Enter and the title appears at the top of your dialog box. 
  919.  
  920.  You can reposition the entire dialog box by moving the pointer inside the top 
  921.  area enclosed by the frame, holding the left mouse button down, and dragging 
  922.  the shadow box across the screen.  When the shadow box is in the position 
  923.  where you want the dialog box to appear, release the mouse button.  The dialog 
  924.  box appears in that position. Alternatively, you can move the dialog box using 
  925.  the keyboard arrow keys.  You can reposition the dialog box at any time during 
  926.  the edit. 
  927.  
  928.  
  929. ΓòÉΓòÉΓòÉ 5.2.1. Using a Grid ΓòÉΓòÉΓòÉ
  930.  
  931. Before you start adding controls to the dialog box, you might want to first 
  932. select the grid option to make laying out your dialog easier. 
  933.  
  934. You can use a mouse to place controls in a dialog box and to move the controls 
  935. in line with each other.  However, you can more accurately position the 
  936. controls by using the keyboard arrow keys or mouse after grid values have been 
  937. set. 
  938.  
  939. The Settings-change dialog lets you set the number of character spaces (in 
  940. dialog units) by which you can move dialog boxes and controls when using the 
  941. Dialog Editor. 
  942.  
  943. To set the grid size, follow these steps: 
  944.  
  945.    1. Select Settings from the Arrange menu. The Settings-change dialog is 
  946.       displayed. The initial grid setting for both x and y is 1 unit. 
  947.  
  948.    2. Change the x-setting to 10 and the y-setting to 5.  Click on OK. 
  949.  
  950.  The horizontal (x) and vertical (y) values are in dialog units. A horizontal 
  951.  dialog unit is 0.25 of the standard character size. A vertical dialog unit is 
  952.  0.125 of the standard character size.  For example, if you move a control to 
  953.  the left or the right (using the mouse or keyboard arrow keys) with x set at 
  954.  20, it moves in steps of twenty dialog units. 
  955.  
  956.  When you subsequently position dialog boxes or controls, the objects move by 
  957.  the specified number of dialog units on an invisible grid. Large values make 
  958.  it easier to align controls, while small values allow you to position controls 
  959.  in the dialog box more precisely. 
  960.  
  961.  Now that the grid is in place, you are ready to start adding controls. 
  962.  
  963.  
  964. ΓòÉΓòÉΓòÉ 5.2.2. Ordering Control Groups ΓòÉΓòÉΓòÉ
  965.  
  966. This option allows you to gather controls into groups and to change the order 
  967. in which the tab keys and arrow keys move the selection cursor around the 
  968. controls. 
  969.  
  970. When you use group boxes to group controls, always create the group box before 
  971. the controls that are to go inside it. 
  972.  
  973. It is good practice to put group markers around all separate groups of 
  974. controls, including putting a marker before the first control in the list. 
  975.  
  976. The list box shows the order in which the selection cursor moves between the 
  977. controls when the user presses the arrow and tab keys. (The coordinate position 
  978. of a control when displayed in the dialog box does not affect the order.) 
  979. Initially, the controls are listed in the order in which they were created. 
  980.  
  981. There are three functions involved in grouping controls: 
  982.  
  983.    o  Setting Group Markers 
  984.    o  Setting Tab Markers 
  985.    o  Moving Control Order 
  986.  
  987.  Setting Group Markers 
  988.  
  989.  To set up groups in a dialog that has various types of controls, follow these 
  990.  steps: 
  991.  
  992.    1. Select Order Groups from the Arrange menu.  The Groups - order dialog is 
  993.       displayed. 
  994.  
  995.    2. Click on the first radio button in the list box. 
  996.  
  997.    3. Click on the Group Marker push button.  A group marker is now displayed 
  998.       between the Text control and the first radio button in the list. 
  999.  
  1000.    4. Scroll down the list and click on the first push button in the list. 
  1001.       Click on the Group Marker push button.  This has organized your controls 
  1002.       into groups of text, radio buttons, check boxes, and push buttons. 
  1003.  
  1004.  Setting Tab Markers 
  1005.  
  1006.  After setting group markers, you will want to set tab-stops.  The controls 
  1007.  marked with an asterisk already have tab-stops. 
  1008.  
  1009.  To make the tab-stop at only the first control in each group, delete the 
  1010.  tab-stops from the second and third radio button and check box, following 
  1011.  these steps: 
  1012.  
  1013.    1. Click on the second radio button in the list to mark it. 
  1014.  
  1015.    2. Click on the Delete Tab push button. 
  1016.  
  1017.    3. Repeat the above steps for the third radio button, and then perform the 
  1018.       same operation for the second and third check box in the list.  When this 
  1019.       is complete, press Enter. 
  1020.  
  1021.  Moving Control Order 
  1022.  
  1023.  You can move controls in the list and then see during testing how the changes 
  1024.  affect the movement of the cursor. To change the position of a control in the 
  1025.  list, follow these steps: 
  1026.  
  1027.    1. Click on the name of the control to select it. 
  1028.  
  1029.    2. Position the pointer in the list where you want the name to appear. The 
  1030.       pointer changes shape to a short horizontal line when it is over a place 
  1031.       where you can insert the name. 
  1032.  
  1033.    3. To insert the control name, click the mouse button. 
  1034.  
  1035.  After grouping controls, you might want to test or edit the dialog, or enter 
  1036.  additional controls. 
  1037.  
  1038.  
  1039. ΓòÉΓòÉΓòÉ 5.2.3. Adding Controls ΓòÉΓòÉΓòÉ
  1040.  
  1041. The control menu lists, in alphabetic order, all the controls that you can put 
  1042. in a dialog box. To add controls, follow these steps: 
  1043.  
  1044.    1. Select a control from the Control menu or click on an icon on the Control 
  1045.       Palette at the right side of the window. 
  1046.  
  1047.       The pointer becomes a small plus sign (+) in a square. The center marks 
  1048.       the position where the lower-left corner of the frame for the control 
  1049.       will be set. 
  1050.  
  1051.    2. Click the mouse to position the control. 
  1052.  
  1053.    3. A dialog might appear (depending on the type of control) in which you 
  1054.       must enter data or check preferences to define the control. Complete this 
  1055.       and close the dialog. 
  1056.  
  1057.  For an example of adding controls in a typical dialog, see Adding Controls 
  1058.  Example. 
  1059.  
  1060.  You might want to test the dialog. 
  1061.  
  1062.  For detailed descriptions of individual controls and how they work, see the 
  1063.  individual controls in the on line help (while using the Dialog Editor) by 
  1064.  following these steps: 
  1065.  
  1066.    1. Select Help Index from the Help menu (or press F1 and select Help Index). 
  1067.  
  1068.    2. Select Options or press Alt-O. 
  1069.  
  1070.    3. Select Contents or press Ctrl-C. 
  1071.  
  1072.    4. Select Control Menu for an alphabetic list of controls, or select Control 
  1073.       Palette for the icons as they appear on the Control Palette. 
  1074.  
  1075.    5. Select the control you want to read about. 
  1076.  
  1077.  
  1078. ΓòÉΓòÉΓòÉ 5.2.4. Adding Controls Example ΓòÉΓòÉΓòÉ
  1079.  
  1080. The control menu lists, in alphabetic order, all the controls that you can put 
  1081. in a dialog box. The sample dialog is Sample Dialog Template File. To add 
  1082. controls for a sample dialog, follow these steps: 
  1083.  
  1084.    1. Select Text from the Control menu or select a control by clicking on its 
  1085.       icon on the Control Palette at the right side of the window. 
  1086.  
  1087.       The pointer becomes a small plus sign (+) in a square.  The center marks 
  1088.       the position where the center of the control will be. 
  1089.  
  1090.    2. Position the pointer inside the dialog box near the upper-left corner and 
  1091.       click the mouse. 
  1092.  
  1093.    3. Type Student Level: in the Text entry field. Observe that the next 
  1094.       sequential integer is supplied in the Symbol entry field.  Press Enter. 
  1095.  
  1096.    4. Replace the symbol with ID_GRAD and press Enter. 
  1097.  
  1098.       The Dialog editor assigns the next integer to the symbolic identifier you 
  1099.       entered and places it in the include file. This is another technique for 
  1100.       entering symbolic identifiers. 
  1101.  
  1102.    5. To view or change the include file at any time, select Symbols from the 
  1103.       Edit menu. The Symbols dialog appears. 
  1104.  
  1105.       The symbolic and integer identifier for the dialog box and the text 
  1106.       control are displayed in the list box. The dialog allows you to add, 
  1107.       delete, and change the identifiers and to view the hexadecimal 
  1108.       equivalents of the integers. 
  1109.  
  1110.    6. Select the OK push button to remove the dialog and register any changes. 
  1111.       Select Cancel if you have not made any changes. 
  1112.  
  1113.    7. In your dialog box, the static control is not large enough for you to see 
  1114.       all the text. To remedy this, click on the text, and a frame appears 
  1115.       around it. Drag the right-hand edge of the frame to the right to enlarge 
  1116.       the field. 
  1117.  
  1118.       When you release the mouse button, you should be able to see all the tex. 
  1119.       When a control has a frame around it, it is selected and you can use a 
  1120.       shadow box to position it, as you did with the dialog box. 
  1121.  
  1122.    8. To add another control, select Radio Button from the Control menu and 
  1123.       position the cursor just beneath the Student Level text.  Press Enter. 
  1124.  
  1125.    9. Type Elementary in the Button Text entry field and press Enter. Drag the 
  1126.       right edge of the frame that surrounds the radio button until you can see 
  1127.       all of the text. 
  1128.  
  1129.   10. Select Radio Button again and type Intermediate in the Text entry field. 
  1130.       Position this radio button below the first one. 
  1131.  
  1132.   11. Select Radio Button again and type Advanced in the Text entry field. 
  1133.       Position this radio button below the other two. 
  1134.  
  1135.   12. Select Group Box from the Control menu. Position the cursor to the right 
  1136.       of the column of radio buttons and press Enter. 
  1137.  
  1138.   13. Type Media in the Text entry field and press Enter to title the group 
  1139.       box. 
  1140.  
  1141.   14. Click on the lower-right corner of the group box frame and drag it 
  1142.       diagonally down and to the right to enlarge it.  The bottom of the group 
  1143.       box frame should be lower than the last of the radio buttons, and the 
  1144.       right-hand side of the group box should be almost at the far right of the 
  1145.       dialog box.  This is to make room for a group of check boxes that will go 
  1146.       inside the group box. 
  1147.  
  1148.       When you use group boxes to group controls, you always create the group 
  1149.       box before the controls that are to go inside it. 
  1150.  
  1151.   15. Select Check Box from the Control menu. Position the cursor inside the 
  1152.       group box in line with the first radio button in the list, and click the 
  1153.       mouse. 
  1154.  
  1155.   16. Type TextBooks in the Button Text entry field and press Enter. Enlarge 
  1156.       the frame of the check box until all of the text is displayed. 
  1157.  
  1158.   17. Select Check Box again and position the cursor below the first check box. 
  1159.       Type Video in the Text entry field and click Enter. Enlarge the check box 
  1160.       frame until all of the text is displayed. 
  1161.  
  1162.   18. Select Check Box again and position the cursor below the previous two 
  1163.       check boxes. Type Diskettes in the Text entry field. 
  1164.  
  1165.       In the left-hand side of the dialog box, you should now have a column of 
  1166.       radio buttons with a heading of Student Level, and on the right a group 
  1167.       box with a heading of Media that contains three check boxes. 
  1168.  
  1169.   19. Finally, add three push buttons to the dialog box.  Select Pushbutton 
  1170.       from the Control menu. Position the cursor in the lower-left side of the 
  1171.       dialog box and click the mouse.  Type OK in the Text entry field and 
  1172.       press Enter. 
  1173.  
  1174.   20. Position another push button to the right of the first one (in the lower 
  1175.       middle of the dialog box) and type Cancel in the Text entry field. 
  1176.  
  1177.   21. Select a third push button and position it to the right of the second. 
  1178.       Type Help in the Text entry field. 
  1179.  
  1180.  The dialog box and its controls are now complete. 
  1181.  
  1182.  Try selecting each of the controls, and observe the information in the 
  1183.  Selected Item Status. It holds information about each control that you edit. 
  1184.  
  1185.  You might now want to test the dialog box. 
  1186.  
  1187.  
  1188. ΓòÉΓòÉΓòÉ 5.2.5. Selecting Color and Font ΓòÉΓòÉΓòÉ
  1189.  
  1190. The Presentation Parameters dialog allows you to select the color and font for 
  1191. individual controls or for an entire dialog box. 
  1192.  
  1193. You can select all of the following: 
  1194.  
  1195.    o  Foreground Color 
  1196.    o  Background Color 
  1197.    o  Foreground Color Highlight 
  1198.    o  Background Color Highlight 
  1199.    o  Disabled (greyed out) Foreground Color 
  1200.    o  Disabled (greyed out) Background Color 
  1201.    o  Font Size 
  1202.    o  Font Name 
  1203.  
  1204.  To set presentation parameters, follow these steps: 
  1205.  
  1206.    1. Select a control or the dialog box. 
  1207.  
  1208.    2. Select Presentation Parameters from the Edit menu. 
  1209.  
  1210.    3. Type the number, from 1 to 255 parts of each color, in the appropriate 
  1211.       fields. 
  1212.  
  1213.    4. Type the font size and name, if you want to change the default, in the 
  1214.       last two fields. 
  1215.  
  1216.    5. Select OK or press Enter to close the dialog. 
  1217.  
  1218.  You might now want to test the dialog. 
  1219.  
  1220.  
  1221. ΓòÉΓòÉΓòÉ 5.2.6. Arranging Controls ΓòÉΓòÉΓòÉ
  1222.  
  1223. The Arrange menu allows you to arrange and align controls in a logical and 
  1224. easy-to-understand layout. 
  1225.  
  1226.  Align             Aligns controls along an edge. 
  1227.  
  1228.  Even spacing      Evenly spaces controls 
  1229.  
  1230.  Same size         Sets controls to the same size. 
  1231.  
  1232.  Push buttons      Arranges push buttons. 
  1233.  
  1234.  Order groups      Displays the Groups-order dialog, so you can change the 
  1235.                    order of controls and groups. 
  1236.  
  1237.  Settings          Displays the Settings-change dialog, so you can change the 
  1238.                    grid and spacing constants. 
  1239.  
  1240.  
  1241. ΓòÉΓòÉΓòÉ 5.3. Changing the Dialog Box ΓòÉΓòÉΓòÉ
  1242.  
  1243. To change the properties of a dialog box or a single control, use the following 
  1244. functions of the Edit menu: 
  1245.  
  1246.    o  Select New Dialog to create another dialog box in the same resource file. 
  1247.       Your existing dialog box will stay in memory. 
  1248.  
  1249.    o  Select Select Dialog to switch to another open dialog box. 
  1250.  
  1251.    o  Select Symbols to define symbols. 
  1252.  
  1253.  Eight of the editing functions require that you first select the control to be 
  1254.  edited. The selected control will appear in the drag window, surrounded by 
  1255.  eight dots, one in each corner and one at the midpoint of each side. 
  1256.  
  1257.  The following functions require that a control must first be selected: 
  1258.  
  1259.    o  Select Cut to cut a control you would like to move or delete. 
  1260.  
  1261.    o  Select Copy to copy to the clipboard a control you would like to 
  1262.       duplicate elsewhere in the same dialog or in another dialog. 
  1263.  
  1264.    o  Select Paste to place a control you have marked with Cut or Copy. 
  1265.  
  1266.    o  Select Clear to erase a control. 
  1267.  
  1268.    o  Select Duplicate to create another control in this dialog box that is 
  1269.       identical to the selected control. 
  1270.  
  1271.    o  Select Styles to define the style of the selected control. 
  1272.  
  1273.    o  Select Presentation parameters to select the colors and fonts. 
  1274.  
  1275.    o  Select Size to text to adjust the size of an entry field to the text 
  1276.       inside. 
  1277.  
  1278.  
  1279. ΓòÉΓòÉΓòÉ 5.3.1. Using the Options Menu ΓòÉΓòÉΓòÉ
  1280.  
  1281. On the Options menu, a check mark next to each option shows whether it is 
  1282. selected (on) or not (off). 
  1283.  
  1284. To toggle your selection of options on and off, use the following functions of 
  1285. the Options menu: 
  1286.  
  1287.    o  Select Test mode to test the dialog. 
  1288.  
  1289.    o  Select Hex mode to toggle between hexadecimal and decimal display of ID 
  1290.       Values of symbols. 
  1291.  
  1292.    o  Select Translate mode to toggle translate mode on and off. 
  1293.  
  1294.    o  Select Enable 2.x styles to use controls and their styles which are 
  1295.       specific to OS/2 2.x, but not prior releases. 
  1296.  
  1297.    o  Select Show status area to toggle display of the status area on and off. 
  1298.  
  1299.  
  1300. ΓòÉΓòÉΓòÉ 5.3.2. Testing the Dialog Box ΓòÉΓòÉΓòÉ
  1301.  
  1302. To test the dialog box, select Test Mode from the Options menu.  The dialog box 
  1303. is displayed as it will appear to the user in a program.  In test mode, you can 
  1304. select controls, and their appearance changes in the same way as they do in an 
  1305. application.  To return to work mode, click on Test Mode again to de select it. 
  1306.  
  1307. If you want to make changes, you can edit the dialog box. 
  1308.  
  1309.  
  1310. ΓòÉΓòÉΓòÉ 5.3.3. Ending an Edit Session ΓòÉΓòÉΓòÉ
  1311.  
  1312. To end the edit session, select Close from the system pull-down menu.  You see 
  1313. prompts for the file names of the files you want to save. 
  1314.  
  1315. If you want to edit the same file the next time you use the editor, select Open 
  1316. from the File menu. 
  1317.  
  1318.  
  1319. ΓòÉΓòÉΓòÉ 5.4. Dialog Templates ΓòÉΓòÉΓòÉ
  1320.  
  1321. The Dialog Editor creates an ASCII text file that has the file-name extension 
  1322. .DLG. The compiled form of this file, created using the Resource Compiler, has 
  1323. the file-name extension .RES. 
  1324.  
  1325. The .DLG file contains a series of statements, collectively termed a dialog 
  1326. template, that define each dialog box and each control in each dialog box. The 
  1327. statement for each dialog box contains the data required to create it, namely 
  1328. its class, size, position, window text, and any other special information 
  1329. required for the window. 
  1330.  
  1331. Normally, the template consists of a dialog box window followed by the controls 
  1332. contained within it, which are child windows. 
  1333.  
  1334. The first statement in the template is the DLGINCLUDE statement, which 
  1335. specifies the file name of the include file. 
  1336.  
  1337. The next statement is the DLGTEMPLATE statement, which specifies the symbolic 
  1338. identifier of the dialog box (MYDIALOG). The DLGTEMPLATE statement also 
  1339. specifies any loading and memory options. The actual dialog template is 
  1340. contained within the first BEGIN and last END statement. There is a CONTROL 
  1341. statement for each of the controls in the dialog box. The CONTROL statement is 
  1342. a general statement that is followed by parameters that further specify the 
  1343. control, such as: 
  1344.  
  1345.    o  Text, where appropriate.  For example, the text OK is defined for one of 
  1346.       the push buttons. 
  1347.    o  Application-defined symbolic or integer identifiers for each control. 
  1348.       Your application uses the identifier to track the responses from 
  1349.       controls.  For example, ID_NULL is the identifier of the text control. 
  1350.    o  The types and positions of the various controls.  For example, the group 
  1351.       box control is a control window of window class WC_STATIC. The Cancel and 
  1352.       Help push buttons are of window class WC_BUTTON. 
  1353.    o  The appearance and operation of the dialog box and its controls, which 
  1354.       are specified in detail by combinations of style parameters. For example, 
  1355.       the check boxes have a class style of BS_CHECKBOX, and radio buttons have 
  1356.       a class style of BS_RADIOBUTTON.  You can also specify appropriate WS_* 
  1357.       styles. 
  1358.  
  1359.  If necessary, you can use a text editor to edit the .DLG file, for example, to 
  1360.  fine-tune the dialog template produced by the dialog box editor.  You can even 
  1361.  use a text editor to produce your own .DLG file. The Dialog Editor uses the 
  1362.  general CONTROL statement with window classes and control styles to define 
  1363.  controls. 
  1364.  
  1365.  You can use the CONTROL statement in the same way to define your controls, or 
  1366.  you can use any of several predefined control statements that give you the 
  1367.  same result.  For example, the predefined control statement PUSHBUTTON gives 
  1368.  you a WC_BUTTON class window with default styles of BS_PUSHBUTTON and 
  1369.  WS_TABSTOP. 
  1370.  
  1371.  The predefined controls are described in the following sections. 
  1372.  
  1373.  
  1374. ΓòÉΓòÉΓòÉ 5.4.1. AUTOCHECKBOX Statement ΓòÉΓòÉΓòÉ
  1375.  
  1376. The AUTOCHECKBOX statement creates an automatic-check-box control. The control 
  1377. is a small rectangle (check box) that contains a check when the user selects 
  1378. it. The specified text is displayed to the right of the check box.  A check 
  1379. appears in the square when the user first selects the control and disappears 
  1380. the next time the user selects it. The AUTOCHECKBOX statement, which you can 
  1381. use only in a DIALOG or WINDOW statement, defines the text, identifier, 
  1382. coordinates, dimensions, and attributes of a control window.  The predefined 
  1383. class for this control is WC_BUTTON. If you do not specify the style, the 
  1384. default style is BS_AUTOCHECKBOX and WS_TABSTOP. 
  1385.  
  1386.  
  1387. ΓòÉΓòÉΓòÉ 5.4.2. AUTORADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  1388.  
  1389. The AUTORADIOBUTTON statement creates an automatic-radio-button control.  This 
  1390. control is a small circle with the given text displayed to its right.  The 
  1391. control highlights the circle and sends a message to its parent window when the 
  1392. user selects the button.  The control also removes the selection from any other 
  1393. automatic-radio-button controls in the same group.  When the user selects the 
  1394. button again, the control removes the highlight before sending a message.  The 
  1395. AUTORADIOBUTTON statement, which you can use only in a DIALOG or WINDOW 
  1396. statement, defines the text, identifier, coordinates, dimensions, and 
  1397. attributes of a control window.  The predefined class for this control is 
  1398. WC_BUTTON.  If you do not specify a style, the default style is 
  1399. BS_AUTORADIOBUTTON. 
  1400.  
  1401.  
  1402. ΓòÉΓòÉΓòÉ 5.4.3. CHECKBOX Statement ΓòÉΓòÉΓòÉ
  1403.  
  1404. The CHECKBOX statement creates a check-box control.  The control is a small 
  1405. rectangle (check box) that has the specified text displayed to the right.  The 
  1406. control highlights the rectangle and sends a message to its parent window when 
  1407. the user selects the control.  The CHECKBOX statement, which you can use only 
  1408. in a DIALOG or WINDOW statement, defines the text, identifier, coordinates, 
  1409. dimensions, and attributes of a control window.  The predefined class for this 
  1410. control is WC_BUTTON.  If you do not specify a style, the default style is 
  1411. BS_CHECKBOX and WS_TABSTOP. 
  1412.  
  1413.  
  1414. ΓòÉΓòÉΓòÉ 5.4.4. COMBOBOX Statement ΓòÉΓòÉΓòÉ
  1415.  
  1416. The COMBOBOX statement creates a combination-box control.  This control 
  1417. combines a list-box control with an entry-field control.  It allows you to 
  1418. place the selected item from a list box into an entry field. The COMBOBOX 
  1419. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  1420. text, identifier, coordinates, dimensions, and attributes of a control window. 
  1421. The predefined class for this control is WC_COMBOBOX. If you do not specify a 
  1422. style, the default style is CBS_SIMPLE, WS_GROUP, WS_TABSTOP, and WS_VISIBLE. 
  1423.  
  1424.  
  1425. ΓòÉΓòÉΓòÉ 5.4.5. CONTAINER Statement ΓòÉΓòÉΓòÉ
  1426.  
  1427. The CONTAINER statement creates a container control within a dialog window. 
  1428. The container control is a visual component that holds objects.  The CONTAINER 
  1429. statement defines the identifier, coordinates, dimensions, and attributes of a 
  1430. container control.  The predefined class for this control is WC_CONTAINER.  If 
  1431. you do not specify a style, the default style is WS_TABSTOP, WS_VISIBLE, and 
  1432. CCS_SINGLESEL. 
  1433.  
  1434. Example 
  1435.  
  1436. This example creates a container control at position (30,30) within the dialog 
  1437. window.  The container has a width of 70 character units and a height of 25 
  1438. character units.  Its resource ID is 301.  The default style CCS_SINGLESEL has 
  1439. been overridden by the style specification CCS_MULTIPLESEL.  The default styles 
  1440. WS_TABSTOP and WS_GROUP are both in effect, though only the latter is 
  1441. specified. 
  1442.  
  1443. #define IDC_CONTAINER    301
  1444. #define IDD_CONTAINERDLG 504
  1445. DIALOG "Container", IDD_CONTAINERDLG, 23, 6, 120, 280, FS_NOBYTEALIGN |
  1446.         WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  1447.   BEGIN
  1448.      CONTAINER   IDC_CONTAINER, 30, 30, 70, 200, CCS_MULTIPLESEL |
  1449.                        WS_GROUP
  1450.   END
  1451.  
  1452.  
  1453. ΓòÉΓòÉΓòÉ 5.4.6. DEFPUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  1454.  
  1455. The DEFPUSHBUTTON statement creates a default push button control. The control 
  1456. is a round-cornered rectangle containing the given text. The rectangle has a 
  1457. bold outline to represent that it is the default response for the user.  The 
  1458. control sends a message to its parent window when the user chooses the control. 
  1459. The DEFPUSHBUTTON statement, which you can use only in a DIALOG or WINDOW 
  1460. statement, lets you define the coordinates, dimensions, and attributes of the 
  1461. default push button control.  The predefined class for this control is 
  1462. WC_BUTTON.  If you do not specify a style, the default style is BS_PUSHBUTTON, 
  1463. BS_DEFAULT, and WS_TABSTOP. 
  1464.  
  1465.  
  1466. ΓòÉΓòÉΓòÉ 5.4.7. EDITTEXT or ENTRYFIELD Statement ΓòÉΓòÉΓòÉ
  1467.  
  1468. The EDITTEXT or ENTRYFIELD statement creates an entry-field control.  This 
  1469. control is a rectangle in which the user can type and edit text. The control 
  1470. displays a pointer when the user selects the control.  The user can then use 
  1471. the keyboard to enter text or edit the existing text.  Editing keys include the 
  1472. Backspace and Delete keys.  By using the mouse or the direction-arrow keys, the 
  1473. user can select the character or characters to delete or select the place to 
  1474. insert new characters. 
  1475.  
  1476. The EDITTEXT or ENTRYFIELD statement defines the text, identifier, coordinates, 
  1477. dimensions, and attributes of a control window.  The predefined class for this 
  1478. control is WC_ENTRYFIELD.  If you do not specify a style, the default style is 
  1479. ES_AUTOSCROLL and WS_TABSTOP. The EDITTEXT control statement is identical to 
  1480. the ENTRYFIELD control statement. Use the EDITTEXT or ENTRYFIELD statement only 
  1481. in a DIALOG or WINDOW statement. 
  1482.  
  1483.  
  1484. ΓòÉΓòÉΓòÉ 5.4.8. FRAME Statement ΓòÉΓòÉΓòÉ
  1485.  
  1486. The FRAME statement defines a frame window.  The statement defines the title, 
  1487. identifier, position, and dimensions of the frame window, as well as the window 
  1488. style.  The FRAME statement is most often used in a WINDOWTEMPLATE statement, 
  1489. and typically, only one FRAME statement is used.  The FRAME statement, in turn, 
  1490. typically contains at least one WINDOW statement that defines the client window 
  1491. belonging to the frame window. 
  1492.  
  1493. The frame window has no default style.  You must use the framectl field to 
  1494. define additional frame controls, such as a title bar and system menu, to be 
  1495. created when the frame window is created.  If the text field is not empty, the 
  1496. statement automatically adds a title-bar control to the frame window, whether 
  1497. or not you specify the FCF_TITLEBAR style.  Frame controls are given default 
  1498. styles and control identifiers based on their class.  For example, a title-bar 
  1499. control receives the identifier FID_TITLEBAR. 
  1500.  
  1501. The FRAME statement can actually contain any combination of CONTROL, DIALOG, 
  1502. and WINDOW statements. Typically, a FRAME statement contains one WINDOW 
  1503. statement. 
  1504.  
  1505. Example 
  1506.  
  1507. This example creates a standard frame window, with title bar, a system menu, 
  1508. minimize and maximize boxes, and a vertical scroll bar.  The FRAME statement 
  1509. contains a WINDOW statement defining the client window belonging to the frame 
  1510. window. 
  1511.  
  1512. WINDOWTEMPLATE 1
  1513. BEGIN
  1514.     FRAME "My Window", 1, 10, 10, 320, 130, 0,
  1515.             FCF_STANDARD | FCF_VERTSCROLL
  1516.     BEGIN
  1517.         WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass"
  1518.     END
  1519. END
  1520.  
  1521.  
  1522. ΓòÉΓòÉΓòÉ 5.4.9. GROUPBOX Statement ΓòÉΓòÉΓòÉ
  1523.  
  1524. The GROUPBOX statement creates a group-box control.  The control is a rectangle 
  1525. that groups other controls together.  A border is drawn around the groups, and 
  1526. text is displayed in the upper-left corner. The GROUPBOX statement, which you 
  1527. can use only in a DIALOG or WINDOW statement, defines the text, identifier, 
  1528. coordinates, dimensions, and attributes of a group-box control.  The predefined 
  1529. class for this control is WC_STATIC.  If you do not specify a style, the 
  1530. default style is SS_GROUPBOX and WS_TABSTOP. 
  1531.  
  1532.  
  1533. ΓòÉΓòÉΓòÉ 5.4.10. ICON Statement (Control) ΓòÉΓòÉΓòÉ
  1534.  
  1535. This form of the ICON statement creates an icon control.  This control is an 
  1536. icon displayed in a dialog box.  The ICON statement, which you can use only in 
  1537. a DIALOG or WINDOW statement, defines the icon-resource identifier, 
  1538. icon-control identifier, position, and attributes of a control window.  The 
  1539. predefined class for this control is WC_STATIC.  If you do not specify a style, 
  1540. the default style is SS_ICON.  For the ICON statement, the width and height 
  1541. fields are ignored; the icon automatically sizes itself. 
  1542.  
  1543.  
  1544. ΓòÉΓòÉΓòÉ 5.4.11. LISTBOX Statement ΓòÉΓòÉΓòÉ
  1545.  
  1546. The LISTBOX statement creates commonly used controls for a dialog box or 
  1547. window.  The control is a rectangle containing a list of user-selectable 
  1548. strings, such as file names. 
  1549.  
  1550. The LISTBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  1551. defines the identifier, coordinates, dimensions, and attributes of a control 
  1552. window.  The predefined class for this control is WC_LISTBOX.  If you do not 
  1553. specify a style, the default style is WS_TABSTOP. 
  1554.  
  1555.  
  1556. ΓòÉΓòÉΓòÉ 5.4.12. MLE Statement ΓòÉΓòÉΓòÉ
  1557.  
  1558. The MLE statement creates a multiple-line entry-field control.  The control is 
  1559. a rectangle in which the user can type and edit multiple lines of text.  The 
  1560. control displays a pointer when the user selects it.  The user can then use the 
  1561. keyboard to enter text or edit the existing text.  Editing keys include the 
  1562. Backspace and Delete keys. By using the mouse or the direction-arrow keys, the 
  1563. user can select the character or characters to delete or select the place to 
  1564. insert new characters.  The MLE statement, which you can use only in a DIALOG 
  1565. or WINDOW statement, defines the text, identifier, coordinates, dimensions, and 
  1566. attributes of a control window.  The predefined class for this control is 
  1567. WC_MLE.  If you do not specify a style, the default style is MLS_BORDER, 
  1568. WS_GROUP, and WS_TABSTOP. If the MLS_READONLY style is not specified, the user 
  1569. can edit the text. 
  1570.  
  1571.  
  1572. ΓòÉΓòÉΓòÉ 5.4.13. NOTEBOOK Statement ΓòÉΓòÉΓòÉ
  1573.  
  1574. The NOTEBOOK statement creates a notebook control within the dialog window. 
  1575. This control is used to organize information on individual pages so that it can 
  1576. be located and displayed easily. The NOTEBOOK statement defines the identifier, 
  1577. coordinates, dimensions, and attributes of a notebook control.  The predefined 
  1578. class for this control is WC_NOTEBOOK.  If you do not specify a style, the 
  1579. default style is WS_TABSTOP and WS_VISIBLE. The NOTEBOOK statement is used only 
  1580. in a DIALOG or WINDOW statement. 
  1581.  
  1582. Example 
  1583.  
  1584. This example creates a notebook control at position (20, 20) within the dialog 
  1585. window.  The notebook has a width of 200 character units and a height of 32 
  1586. character units.  Its resource ID is 201. The tabs style BKS_ROUNDEDTABS 
  1587. specification overrides the notebook default style of square tabs. The default 
  1588. styles WS_TABSTOP and WS_GROUP are both in effect, though only the latter is 
  1589. specified. 
  1590.  
  1591. #define    IDC_NOTEBOOK     201
  1592. #define    IDD_NOTEBOOKDLG  503
  1593. DIALOG "Notebook", IDD_NOTEBOOKDLG, 11, 11, 420, 420, FS_NOBYTEALIGN |
  1594.         WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  1595.   BEGIN
  1596.     NOTEBOOK   IDC_NOTEBOOK, 20, 20, 200, 400, BKS_ROUNDEDTABS | WS_GROUP
  1597.   END
  1598.  
  1599.  
  1600. ΓòÉΓòÉΓòÉ 5.4.14. PUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  1601.  
  1602. The PUSHBUTTON statement creates a push button control.  The control is a 
  1603. round-cornered rectangle containing the given text.  The control sends a 
  1604. message to its parent whenever the user chooses the control. The PUSHBUTTON 
  1605. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  1606. text, identifier, coordinates, dimensions, and attributes of a control window. 
  1607. The predefined class for this control is WC_BUTTON. If you do not specify a 
  1608. style, the default style is BS_PUSHBUTTON and WS_TABSTOP. 
  1609.  
  1610.  
  1611. ΓòÉΓòÉΓòÉ 5.4.15. RADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  1612.  
  1613. The RADIOBUTTON statement creates a radio-button control.  The control is a 
  1614. small circle that has the given text displayed to its right.  The control 
  1615. highlights the circle and sends a message to its parent window when the user 
  1616. selects the button.  The control removes the highlight and sends a message when 
  1617. the button is next selected.  The RADIOBUTTON statement, which you can use only 
  1618. in a DIALOG or WINDOW statement, defines the text, identifier, coordinates, 
  1619. dimensions, and attributes of a control window.  The predefined class for this 
  1620. control is WC_BUTTON.  If you do not specify a style, the default style is 
  1621. BS_RADIOBUTTON. 
  1622.  
  1623.  
  1624. ΓòÉΓòÉΓòÉ 5.4.16. SLIDER Statement ΓòÉΓòÉΓòÉ
  1625.  
  1626. The SLIDER statement creates a slider control within the dialog window.  This 
  1627. control lets the user set, display, or modify a value by moving a slider arm 
  1628. along a linear slider shaft. The SLIDER statement defines the identifier, 
  1629. coordinates, dimensions, and attributes of a slider control.  The predefined 
  1630. class for this control is WC_SLIDER.  If you do not specify a style, the 
  1631. default style is WS_TABSTOP and WS_VISIBLE. The SLIDER statement is used only 
  1632. in a DIALOG or WINDOW statement. 
  1633.  
  1634.  
  1635. ΓòÉΓòÉΓòÉ 5.4.17. SPINBUTTON Statement ΓòÉΓòÉΓòÉ
  1636.  
  1637. The SPINBUTTON statement creates a spin button control within the dialog 
  1638. window.  This control gives the user quick access to a finite set of data.  The 
  1639. SPINBUTTON statement defines the identifier, coordinates, dimensions, and 
  1640. attributes of a spin button control.  The predefined class for this control is 
  1641. WC_SPINBUTTON. If you do not specify a style, the default style is WS_TABSTOP, 
  1642. WS_VISIBLE, and SPBS_MASTER. The SPINBUTTON statement is used only in a DIALOG 
  1643. or WINDOW statement. 
  1644.  
  1645.  
  1646. ΓòÉΓòÉΓòÉ 5.4.18. Static Text Statements: LTEXT, CTEXT and RTEXT ΓòÉΓòÉΓòÉ
  1647.  
  1648. Each of these statements creates a static text control.  The control is a 
  1649. simple rectangle displaying the given text, which is either aligned to one edge 
  1650. or centered in the rectangle.  The text is formatted before it is displayed. 
  1651. Words that would extend past the end of a line are automatically wrapped to the 
  1652. beginning of the next line.  These three statements, which you can use only in 
  1653. a DIALOG or WINDOW statement, define the text, identifier, coordinates, 
  1654. dimensions, and attributes of a static text control.  The predefined class for 
  1655. this control is WC_STATIC.  If you do not specify a style, the default style is 
  1656. SS_TEXT, WS_GROUP, and the appropriate alignment flag (DT_LEFT, DT_CENTER, or 
  1657. DT_RIGHT respectively). 
  1658.  
  1659.  
  1660. ΓòÉΓòÉΓòÉ 5.4.19. VALUESET Statement ΓòÉΓòÉΓòÉ
  1661.  
  1662. The VALUESET statement creates a value-set control within the dialog window. 
  1663. This control lets a user select one choice from a group of mutually exclusive 
  1664. choices.  The VALUESET statement defines the identifier, coordinates, 
  1665. dimensions, and attributes of a value-set control.  The predefined class for 
  1666. this control is WC_VALUESET.  If you do not specify a style, the default style 
  1667. is WS_TABSTOP and WS_VISIBLE. The VALUESET statement is used only in a DIALOG 
  1668. or WINDOW statement. 
  1669.  
  1670. Example 
  1671.  
  1672. This example creates a value-set control at position (40, 40) within the dialog 
  1673. window.  The value set control has a width of 220 character and a height of 20 
  1674. character units.  Its resource ID is 302.  The style specification VS_ICON 
  1675. creates a control to show items in icon form.  The default styles WS_TABSTOP 
  1676. and WS_VISIBLE are both in effect, though only WS_TABSTOP is specified. 
  1677.  
  1678. #define    IDC_VALUESET     302
  1679. #define    IDD_VALUESETDLG  501
  1680. DIALOG "Value set", IDD_VALUESETDLG, 11, 11, 260, 240, FS_NOBYTEALIGN |
  1681.         WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  1682.   BEGIN
  1683.     VALUESET  IDC_VALUESET, 40, 40, 220, 160, VS_ICON | WS_TABSTOP
  1684.   END
  1685.  
  1686. A dialog template can be in either of the following: 
  1687.  
  1688.    o  A resource.res file (generated from the .DLG file by the Resource 
  1689.       Compiler) 
  1690.    o  A block of memory that has the DLGTEMPLATE data structure, in which case 
  1691.       you use WinCreateDlg to create the dialog box from the template. 
  1692.  
  1693.  The dialog template uses device-independent dialog units for the coordinate 
  1694.  system that define the layout of controls in the dialog box. 
  1695.  
  1696.  A dialog unit is expressed in terms of the default standard character size, 
  1697.  which can vary from device to device.  You do not need to put code in your 
  1698.  application to reformat the dialog box when displaying it on different 
  1699.  devices. (Dialogs might need editing if a different system font is loaded.)  A 
  1700.  horizontal dialog unit is 0.25 of the standard character size. A vertical 
  1701.  dialog unit is 0.125 of the standard character size. Dialog units are 
  1702.  expressed as offsets from the origin (lower-left corner) of the dialog box. 
  1703.  
  1704.  A dialog template is a general structure.  It could be termed a window 
  1705.  template, because you can use it to define any window in an application.  If 
  1706.  you prefer, use the statement WINDOWTEMPLATE instead of DLGTEMPLATE, because 
  1707.  it is functionally identical. This could reduce the initialization phase of 
  1708.  the application to registering the application window classes and calling 
  1709.  WinLoadDlg to load the template. 
  1710.  
  1711.  If you use the Dialog Editor to define a standard window, you will have to 
  1712.  edit the resulting .DLG file to ensure that you have a client window and the 
  1713.  required parent-child relationships.  You will also have to use WinLoadMenu in 
  1714.  your application, to create a menu bar for the window, because you cannot 
  1715.  create menus using the Dialog Editor. 
  1716.  
  1717.  The .RES file is an object-format compiled version of the .DLG file, created 
  1718.  when the Dialog Editor compiles the dialogs. The Dialog Editor uses the .RES 
  1719.  file as input on any subsequent edit of the same dialog.  This means that, if 
  1720.  you use a text editor to fine-tune a .DLG file, and you want subsequently to 
  1721.  re-edit the dialog using the Dialog Editor, you must first use the Resource 
  1722.  Compiler to generate a new .RES file from the .DLG file. 
  1723.  
  1724.  Your application can use either the .RES file output by the Dialog Editor or a 
  1725.  .RES file created from the .DLG file and the other resources. If your 
  1726.  application uses the .DLG file, it must be included by the resource script 
  1727.  file of your application. 
  1728.  
  1729.  The rcinclude statement includes the .DLG file created by the Dialog Editor; 
  1730.  for example: 
  1731.  
  1732.   rcinclude dbe.dlg /* Includes .DLG file */
  1733.  
  1734.  The corresponding .H file created by the Dialog Editor must also be included 
  1735.  in the .RC file. 
  1736.  
  1737.  Using OS/2-defined control windows, OS/2 draws and operates the controls 
  1738.  specified in the resource file for your application. Controls are windows and 
  1739.  can be used within any other window. 
  1740.  
  1741.  
  1742. ΓòÉΓòÉΓòÉ 5.4.20. Sample Dialog Template File ΓòÉΓòÉΓòÉ
  1743.  
  1744. The following dialog template is used for the dialog described in Adding 
  1745. Controls Example. 
  1746.  
  1747.             DLGINCLUDE 1 "DBE.H"
  1748.  
  1749.  
  1750.             DLGTEMPLATE mydialog LOADONCALL MOVEABLE DISCARDABLE
  1751.  
  1752.             BEGIN
  1753.  
  1754.                       DIALOG "Sample Dialog Box", mydialog, 11, 8, 170, 105,
  1755.                           FS_NOBYTEALIGN | FS_DLGBORDER | WS_VISIBLE |
  1756.                           WS_SAVEBITS, FCF_TITLEBAR
  1757.  
  1758.                       BEGIN
  1759.  
  1760.                                 CONTROL "Student Level:", id_null, -1, 94, 63, 9, WC_STATIC,
  1761.                                     SS_TEXT | DT_LEFT | DT_TOP | WS_GROUP | WS_VISIBLE
  1762.  
  1763.                                 CONTROL "Elementary", 258, 7, 82, 62, 11, WC_BUTTON,
  1764.                                     BS_RADIOBUTTON | WS_GROUP | WS_TABSTOP | WS_VISIBLE
  1765.  
  1766.                                 CONTROL "Intermediate", 259, 7, 67, 73, 9, WC_BUTTON,
  1767.                                     BS_RADIOBUTTON | WS_VISIBLE
  1768.  
  1769.                                 CONTROL "Advanced", 260, 7, 51, 52, 13, WC_BUTTON,
  1770.                                     BS_RADIOBUTTON | WS_VISIBLE
  1771.  
  1772.                                 CONTROL "Media", 261, 87, 48, 75, 54, WC_STATIC,
  1773.                                     SS_GROUPBOX | WS_GROUP | WS_VISIBLE
  1774.  
  1775.                                 CONTROL "Textbooks", 262, 97, 83, 60, 10, WC_BUTTON,
  1776.                                     BS_CHECKBOX | WS_TABSTOP | WS_VISIBLE
  1777.  
  1778.                                 CONTROL "Video", 263, 97, 68, 46, 10, WC_BUTTON,
  1779.                                     BS_CHECKBOX | WS_VISIBLE
  1780.  
  1781.                                 CONTROL "CBT", 264, 97, 53, 32, 10, WC_BUTTON,
  1782.                                     BS_CHECKBOX | WS_VISIBLE
  1783.  
  1784.                                 CONTROL "OK", 265, 7, 20, 38, 12, WC_BUTTON,
  1785.                                     BS_PUSHBUTTON | WS_GROUP | WS_TABSTOP | WS_VISIBLE
  1786.  
  1787.                                 CONTROL "Cancel", 266, 61, 20, 38, 12, WC_BUTTON,
  1788.                                     BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE
  1789.  
  1790.                                 CONTROL "Help", 267, 117, 20, 38, 12, WC_BUTTON,
  1791.                                     BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE
  1792.  
  1793.                       END
  1794.  
  1795.             END
  1796.  
  1797.  
  1798. ΓòÉΓòÉΓòÉ 6. Executable File Header Utility (EXEHDR) ΓòÉΓòÉΓòÉ
  1799.  
  1800. The Executable File Header Utility (EXEHDR) displays and modifies the contents 
  1801. of an executable-file header.  EXEHDR generates an Output listing showing the 
  1802. contents of the file header and information about each object or segment in the 
  1803. file.  Options are provided that let you change values in the file header. 
  1804.  
  1805. Uses of EXEHDR include: 
  1806.  
  1807.    o  Determining whether a file is an application or a dynamic link library 
  1808.    o  Viewing and changing the attributes set by the module definition file 
  1809.    o  Viewing the number and size of code and data segments. 
  1810.  
  1811.  You can use EXEHDR with DOS or OS/2 applications and dynamic-link libraries. 
  1812.  
  1813.  
  1814. ΓòÉΓòÉΓòÉ 6.1. Syntax ΓòÉΓòÉΓòÉ
  1815.  
  1816. EXEHDR [options] filename
  1817.  
  1818.  <options> 
  1819.       Options used to modify Output or change the file header. 
  1820.  
  1821.  <filename> 
  1822.       One or more names of applications or dynamic-link library files. 
  1823.  
  1824.       Regardless of options, EXEHDR always creates an Output listing of the 
  1825.       file header. 
  1826.  
  1827.  
  1828. ΓòÉΓòÉΓòÉ 6.1.1. Help ΓòÉΓòÉΓòÉ
  1829.  
  1830. To display EXEHDR help, type EXEHDR /? at the command prompt.  The appropriate 
  1831. copyright statement appears along with a brief list of EXEHDR options. 
  1832.  
  1833. Usage: EXEHDR [options] filename...
  1834. Valid options are:
  1835.   /?
  1836.   /HEAP:(0H - ffffH)
  1837.   /HELP
  1838.   /MAX:(0H - ffffH)
  1839.   /MIN:(0H - ffffH)
  1840.   /NEWFILES
  1841.   /NOLOGO
  1842.   /PMTYPE:(PM | VIO | NOVIO |
  1843.                  WINDOWAPI | WINDOWCOMPAT |
  1844.                  NOTWINDOWCOMPAT)
  1845.   /RESETERROR
  1846.   /STACK:(0H - ffffH)
  1847.   /VERBOSE
  1848.  
  1849.  
  1850. ΓòÉΓòÉΓòÉ 6.2. Options ΓòÉΓòÉΓòÉ
  1851.  
  1852. Usage Notes: 
  1853.  
  1854.    o  Option characters are not case sensitive: /R and /r are equivalent. 
  1855.    o  Options can be shortened to the fewest characters that uniquely identify 
  1856.       them.  The characters in brackets can be omitted: /N and /NOLOGO are 
  1857.       equivalent. 
  1858.    o  Although use of the minimum one-letter abbreviations is allowed, if a 
  1859.       future release has an additional option starting with the same letter, 
  1860.       the one-letter option will no longer be usable. 
  1861.  
  1862.  
  1863. ΓòÉΓòÉΓòÉ 6.2.1. Formats Affected by Options ΓòÉΓòÉΓòÉ
  1864.  
  1865. The EXEHDR options that can change executable files are MIN, MAX, STACK, 
  1866. PMTYPE, HEAP, RESETERROR, and NEWFILES. 
  1867.  
  1868. Executable headers are used by the operating system to determine 
  1869. characteristics of the executable file, such as stack size, entry point, number 
  1870. of objects (or segments), and so on. EXEHDR recognizes three different kinds of 
  1871. executable headers:  DOS (generated by DOS linker), OS/2 16-bit (generated by 
  1872. LINK), and OS/2 32-bit (generated by LINK386). 
  1873.  
  1874. An X in the following table indicates which option changes which executable 
  1875. header: 
  1876.  
  1877. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1878. ΓöéOption         ΓöéDOS            ΓöéOS/2 16-bit    ΓöéOS/2 32-bit    Γöé
  1879. Γöé               Γöé               Γöé(LINK)         Γöé(LINK386)      Γöé
  1880. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1881. ΓöéHEAP           Γöé               ΓöéX              ΓöéX              Γöé
  1882. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1883. ΓöéMAX            ΓöéX              Γöé               Γöé               Γöé
  1884. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1885. ΓöéMIN            ΓöéX              Γöé               Γöé               Γöé
  1886. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1887. ΓöéNEWFILES       Γöé               ΓöéX              Γöé               Γöé
  1888. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1889. ΓöéPMTYPE         Γöé               ΓöéX              ΓöéX              Γöé
  1890. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1891. ΓöéRESETERROR     Γöé               ΓöéX              ΓöéX              Γöé
  1892. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1893. ΓöéSTACK          ΓöéX              ΓöéX              Γöé               Γöé
  1894. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1895.  
  1896. For compatibility purposes, executable files generated by either of the OS/2 
  1897. link utilities include both a DOS header and an OS/2 header. For example, if 
  1898. you use /STACK on an executable generated by OS/2 LINK (16-bit), the DOS header 
  1899. and the OS/2 header will be changed. 
  1900.  
  1901.  
  1902. ΓòÉΓòÉΓòÉ 6.2.1.1. /HEA[P] ΓòÉΓòÉΓòÉ
  1903.  
  1904. Set Heap Allocation (/HEAP) 
  1905.  
  1906. Syntax:  /HEA[P]:nnnn 
  1907.  
  1908. This option sets the size of the local heap and is applicable to OS/2 
  1909. applications only. The field <nnnn> contains the local heap size in bytes. 
  1910.  
  1911. You can specify <nnnn> in decimal, octal, or hexadecimal radix using standard C 
  1912. language notation. 
  1913.  
  1914.  
  1915. ΓòÉΓòÉΓòÉ 6.2.1.2. /HEL[P] and /? ΓòÉΓòÉΓòÉ
  1916.  
  1917. Display Help (/HELP or /?) 
  1918.  
  1919. Syntax:  /HEL[P]   OR   /? 
  1920.  
  1921. This option displays a brief summary of EXEHDR syntax. 
  1922.  
  1923.  
  1924. ΓòÉΓòÉΓòÉ 6.2.1.3. /MA[X] ΓòÉΓòÉΓòÉ
  1925.  
  1926. Set Maximum Allocation (/MAX) 
  1927.  
  1928. Syntax:  /MA[X]:nnnn 
  1929.  
  1930. This option sets the maximum allocation of memory for the program. The field 
  1931. <nnnn> contains the maximum number of 16-byte paragraphs required to load and 
  1932. run the program. This value must be equal to or greater than the minimum 
  1933. allocation. 
  1934.  
  1935. Compare to /MI. 
  1936.  
  1937. The Maximum Allocation option is equivalent to the LINK386 /CP option. 
  1938.  
  1939. Refer to Set Max Allocation Space (/CP) (in LINK386 Help) 
  1940.  
  1941. You can specify <nnnn> in decimal, octal, or hexadecimal radix using standard C 
  1942. language notation. 
  1943.  
  1944.  
  1945. ΓòÉΓòÉΓòÉ 6.2.1.4. /MI[N] ΓòÉΓòÉΓòÉ
  1946.  
  1947. Set Minimum Allocation (/MIN) 
  1948.  
  1949. Syntax:  /MI[N]:nnnn 
  1950.  
  1951. This option sets the minimum allocation of memory for the program. The field 
  1952. <nnnn> contains the minimum number of 16-byte paragraphs required to load and 
  1953. run the program. This value must be equal to or less than the maximum 
  1954. allocation. 
  1955.  
  1956. Compare to /MA. 
  1957.  
  1958. You can specify <nnnn> in decimal, octal, or hexadecimal radix using standard C 
  1959. language notation. 
  1960.  
  1961.  
  1962. ΓòÉΓòÉΓòÉ 6.2.1.5. /NE[WFILES] ΓòÉΓòÉΓòÉ
  1963.  
  1964. New Files (/NEWFILES) 
  1965.  
  1966. Syntax:  /NE[WFILES] 
  1967.  
  1968. This option enables long file name support for OS/2 16-bit LINK files. OS/2 
  1969. 32-bit LINK386 files have long file name support. 
  1970.  
  1971.  
  1972. ΓòÉΓòÉΓòÉ 6.2.1.6. /NO[LOGO] ΓòÉΓòÉΓòÉ
  1973.  
  1974. Suppress Sign-On Banner (/NOLOGO) 
  1975.  
  1976. Syntax:  /NO[LOGO] 
  1977.  
  1978. This option suppresses the sign-on banner displayed by EXEHDR when it starts. 
  1979.  
  1980.  
  1981. ΓòÉΓòÉΓòÉ 6.2.1.7. /P[MTYPE] ΓòÉΓòÉΓòÉ
  1982.  
  1983. Set Application Type (/PMTYPE) 
  1984.  
  1985. Syntax:  /P[MTYPE]:type 
  1986.  
  1987. This option specifies the type of application.  It pertains only to OS/2 
  1988. applications.  The /PMTYPE option in EXEHDR is equivalent to either the NAME 
  1989. Statement in the module-definition file or the Name Application Type (/PM) in 
  1990. LINK386. 
  1991.  
  1992. A keyword in <type> is equivalent to a keyword in a NAME statement, as shown in 
  1993. the following list: 
  1994.  
  1995.  Field Keyword       Equiv. Keyword 
  1996.  
  1997.  PM                  WINDOWAPI 
  1998.  
  1999.  VIO                 WINDOWCOMPAT 
  2000.  
  2001.  NOVIO               NOTWINDOWCOMPAT 
  2002.  
  2003.  The NAME statement keyword is also accepted. 
  2004.  
  2005.  
  2006. ΓòÉΓòÉΓòÉ 6.2.1.8. /R[ESETERROR] ΓòÉΓòÉΓòÉ
  2007.  
  2008. Reset LINK386 Error (/RESETERROR) 
  2009.  
  2010. Syntax:  /R[ESETERROR] 
  2011.  
  2012. This option clears an error flag stored in OS/2 applications. The error flag is 
  2013. set by LINK386 when the link has unresolved external references or duplicate 
  2014. symbol definitions (any LINK386 error messages starting with L2xxx). 
  2015.  
  2016. OS/2 does not load the application if the error flag is set. This option allows 
  2017. you to attempt to run a program with LINK386 errors and is useful during 
  2018. application development. 
  2019.  
  2020.  
  2021. ΓòÉΓòÉΓòÉ 6.2.1.9. /S[TACK] ΓòÉΓòÉΓòÉ
  2022.  
  2023. Set Stack Allocation (/STACK) 
  2024.  
  2025. Syntax:  /S[TACK]:nnnn 
  2026.  
  2027. This option sets the size of the stack.  The field <nnnn> contains the stack 
  2028. size in bytes.  This option is equivalent to the Control Stack Size (/ST) (in 
  2029. LINK386 Help). 
  2030.  
  2031. You can specify <nnnn> in decimal, octal, or hexadecimal radix using standard C 
  2032. language notation. 
  2033.  
  2034.  
  2035. ΓòÉΓòÉΓòÉ 6.2.1.10. /V[ERBOSE] ΓòÉΓòÉΓòÉ
  2036.  
  2037. Display in Verbose Mode (/VERBOSE) 
  2038.  
  2039. Syntax:  /V[ERBOSE] 
  2040.  
  2041. This option displays the executable-file header in verbose mode. 
  2042.  
  2043.  
  2044. ΓòÉΓòÉΓòÉ 6.3. Output ΓòÉΓòÉΓòÉ
  2045.  
  2046. EXEHDR lists the current contents of the file header and information about each 
  2047. object (or segment) in the file. To redirect this output to a printer or disk 
  2048. file, use the operating system redirection operator. 
  2049.  
  2050. The output is in two parts: a Header Listing giving the contents of the file 
  2051. header; and an Object or Segment Listing giving attributes of all objects (or 
  2052. segments) in the file.  If the /VERBOSE option is specified, additional output 
  2053. is generated. 
  2054.  
  2055.  
  2056. ΓòÉΓòÉΓòÉ 6.3.1. Header Listing ΓòÉΓòÉΓòÉ
  2057.  
  2058. The header listing is comprised of the following fields: 
  2059.  
  2060.  <Module> Name of Application 
  2061.  
  2062.       This field lists the name of the application as specified in the NAME 
  2063.       statement of the module-definition file. 
  2064.  
  2065.       If no module definition was used to create the executable file, this 
  2066.       field displays the name assumed by default. 
  2067.  
  2068.       If a module definition was used to create the file, but the LIBRARY 
  2069.       statement appeared instead of the NAME statement (thus specifying a 
  2070.       dynamic-link library), the name of the library is given and EXEHDR uses 
  2071.       the word "Library" instead of "Module" to identify the field. 
  2072.  
  2073.  <Description> Description of Application 
  2074.  
  2075.       This field gives the contents, if any, of the DESCRIPTION statement of 
  2076.       the module-definition file used to create the file being examined. 
  2077.  
  2078.  <Data> Type of Automatic Data Object 
  2079.  
  2080.       This field indicates the type of automatic data segment in a program: 
  2081.       SHARED, NONSHARED, or NONE.  This type can be specified in a 
  2082.       module-definition file.  The defaults are NONSHARED for applications and 
  2083.       SHARED for dynamic-link libraries. 
  2084.  
  2085.  <Initial CS:IP> Program Starting Address 
  2086.  
  2087.       This field gives the program starting address (if an application is being 
  2088.       examined) or address of the initialization routine (if a dynamic-link 
  2089.       library is being examined). 
  2090.  
  2091.  <Initial SS:SP> Initial Stack Pointer 
  2092.  
  2093.       This field gives the value of the initial stack pointer. 
  2094.  
  2095.  <Extra Stack Allocation> Additional stack allocation 
  2096.  
  2097.       This field gives the value of the extra stack location. 
  2098.  
  2099.  <DGROUP> Automatic-Data-Object Number 
  2100.  
  2101.  
  2102. ΓòÉΓòÉΓòÉ 6.3.2. Object or Segment Listing ΓòÉΓòÉΓòÉ
  2103.  
  2104. The object listing is comprised of the following fields: 
  2105.  
  2106.  no.         Object index number, starting with 1, in decimal 
  2107.  
  2108.  type        Identification of the object as a code or data object 
  2109.  
  2110.              A code object is comprised of segments with class name ending in 
  2111.              CODE. All other objects are data objects. 
  2112.  
  2113.  address     Location, within the file, of the contents of the object (in 
  2114.              hexadecimal) 
  2115.  
  2116.  file        Size of the object (in bytes), as contained in the file (in 
  2117.              hexadecimal) 
  2118.  
  2119.  mem         Size of the object (in bytes), as it is stored in memory (in 
  2120.              hexadecimal) 
  2121.  
  2122.              If the value of this field is greater than the value of <file>, 
  2123.              the operating system pads the additional space with zero values at 
  2124.              load time. 
  2125.  
  2126.  flags       Object attributes 
  2127.  
  2128.              If the /VERBOSE option is not used, only nondefault attributes are 
  2129.              listed.  Attributes are given in the form specified in the 
  2130.              module-definition file. 
  2131.  
  2132.  
  2133. ΓòÉΓòÉΓòÉ 6.3.3. Output Example ΓòÉΓòÉΓòÉ
  2134.  
  2135. The following output is generated by EXEHDR for the executable file 
  2136. LINK386.EXE: 
  2137.  
  2138. Module:                    LINK386
  2139. Description:               Operating System/2 32-bit LX Linker
  2140. Data:                      NONSHARED
  2141. Initial CS:IP:            seg   2 offset 6c78
  2142. Initial SS:SP:            seg   4 offset 0000
  2143. Extra stack allocation:    4000 bytes
  2144. DGROUP:                    seg   4
  2145.  
  2146. no. type address  file  mem   flags
  2147.   1 CODE 00006000 0f7d6 0f7d7
  2148.   2 CODE 00015a00 08e40 08e40
  2149.   3 DATA 0001ea00 02865 02865
  2150.   4 DATA 00021400 02337 08bd0
  2151.  
  2152.  
  2153. ΓòÉΓòÉΓòÉ 6.3.4. Verbose Output ΓòÉΓòÉΓòÉ
  2154.  
  2155. When you specify the /VERBOSE option, EXEHDR generates additional output: 
  2156.  
  2157.    o  DOS-specific header information. All OS/2 executable files have a DOS 
  2158.       header, whether bound or not.  If the program is not bound, the DOS 
  2159.       portion typically consists of a stub that simply terminates the program. 
  2160.  
  2161.    o  OS/2-specific header information. The object-table display in verbose 
  2162.       mode is described below. 
  2163.  
  2164.    o  File addresses and lengths of the various tables in the executable file. 
  2165.       For each table, the following is generated: 
  2166.  
  2167.         -  Name of the table 
  2168.         -  Address of the table within the file 
  2169.         -  Length of the table in hexadecimal radix 
  2170.         -  Length of the table in decimal radix 
  2171.  
  2172.    o  Object table with complete attributes, not just the nondefault 
  2173.       attributes. The /VERBOSE option displays two additional attributes: 
  2174.  
  2175.         -  The RELOCS attribute is displayed for each object that has address 
  2176.            relocations. Relocations occur in each object that references 
  2177.            objects in other objects or makes dynamic-link references. 
  2178.         -  The ITERATED attribute is displayed for each object that has 
  2179.            iterated data. Iterated data consist of a special code that packs 
  2180.            repeated bytes. 
  2181.  
  2182.    o  Run-time relocations and fixups. 
  2183.  
  2184.    o  All exported entry points. 
  2185.  
  2186.  
  2187. ΓòÉΓòÉΓòÉ 7. Font Editor ΓòÉΓòÉΓòÉ
  2188.  
  2189. You can use the OS/2 Font Editor to design and save your own fonts for use in 
  2190. applications. 
  2191.  
  2192. A font is a set of alphanumeric characters, punctuation marks, and other 
  2193. symbols that share a common typeface design and line weight. An application 
  2194. loads a font from a dynamic-link library file (.DLL file). 
  2195.  
  2196. The Font Editor allows you to edit an enlarged version of each character in an 
  2197. editing window, using the mouse to switch the enlarged representation of pels 
  2198. to black or white. 
  2199.  
  2200. You can change a series of pels by dragging the mouse pointer through them 
  2201. while holding down the mouse button. An enlarged scale version of the character 
  2202. is shown in a viewing window to the right of the edit window. 
  2203.  
  2204.  
  2205. ΓòÉΓòÉΓòÉ 7.1. Using the Font Editor ΓòÉΓòÉΓòÉ
  2206.  
  2207. To run the Font Editor, select Font Editor from the PM Development Tools 
  2208. folder. 
  2209.  
  2210. Select one of the options in the File menu to open a new or existing font. The 
  2211. letter A appears in both the editing and viewing windows. The rest of the font 
  2212. appears in the character selection scroll box at the bottom of the Font Editor 
  2213. window. 
  2214.  
  2215. To edit any other character in the font, select it from the character selection 
  2216. scroll box.  The character appears in the editing and viewing windows. 
  2217.  
  2218. Font Editing Functions 
  2219.  
  2220.       Functions for defining fonts are found on the Header menu. 
  2221.  
  2222.       Functions for editing character width are found on the Width and Shift 
  2223.       menus. 
  2224.  
  2225.  
  2226. ΓòÉΓòÉΓòÉ 7.1.1. Defining Fonts ΓòÉΓòÉΓòÉ
  2227.  
  2228. Use the Header menu to define the typestyle that you want to create: 
  2229.  
  2230.    o  Select Naming to specify the identification details such as the type-face 
  2231.       name. 
  2232.  
  2233.    o  Select General to specify spacing (fixed or proportional), type face 
  2234.       style, line width, and type weight. 
  2235.  
  2236.    o  Select Sizes to specify the font character dimensions. 
  2237.  
  2238.    o  Select Relations to specify the position of characters. 
  2239.  
  2240.    o  Select Definition to change character spacing in a proportional font. 
  2241.  
  2242.  
  2243. ΓòÉΓòÉΓòÉ 7.1.2. Editing Character Width ΓòÉΓòÉΓòÉ
  2244.  
  2245. The Width and Shift menus allow you to change the width of individual 
  2246. characters. 
  2247.  
  2248. The Width Menu 
  2249.  
  2250. Use the Width menu to alter the width of a single character. This menu is 
  2251. enabled only when you are editing a proportional space font. You can make a 
  2252. character wider or narrower by adding or deleting columns of pels from the 
  2253. right, the left, or both sides. You may also use the Set Character Increment 
  2254. option to set the width of a character. On-line help panels describe how to 
  2255. perform these functions. 
  2256.  
  2257. The Shift Menu 
  2258.  
  2259. Use the Shift menu to insert a one-pel-wide row or column into (or delete from) 
  2260. the character that you are editing. When you select shift, the pointer becomes 
  2261. a flat horizontal or vertical bar when inside the edit window.  This enables 
  2262. you to position it exactly where you want the operation to take place. 
  2263.  
  2264. To cancel a shift you have selected before execution, select Cancel Choice. 
  2265.  
  2266.  
  2267. ΓòÉΓòÉΓòÉ 7.1.3. Font Resource Files ΓòÉΓòÉΓòÉ
  2268.  
  2269. The Font Editor creates a file with a .FNT extension. The .FNT file is not 
  2270. referred to in the same resource file as other resources. 
  2271.  
  2272. Instead, it has its own resource file that contains a single-line statement 
  2273. that has a similar format to the ICON, POINTER, and BITMAP statements, for 
  2274. example: 
  2275.  
  2276. FONT  101      myfont.fnt     /* Font */
  2277.  
  2278. The FONT keyword identifies the resource type. 
  2279.  
  2280. The resource type is followed by an integer identifier that is used by the 
  2281. application to identify the resource. The integer is used as a parameter to the 
  2282. WinCreateStdWindow call. You cannot use a symbolic name for a font. 
  2283.  
  2284. The integer identifier can be followed by loading and memory options. Again, 
  2285. the example lets them default. 
  2286.  
  2287. The last part of the statement is the file name of the resource created by the 
  2288. Font Editor. A full path name must be given if it is not in the current 
  2289. directory. 
  2290.  
  2291. Producing a font file uses a process similar to binding resources to an .EXE 
  2292. file. You bind one or more .FNT files to a dummy .DLL, to produce a file 
  2293. containing the font or fonts. The final file should have the extension .FON. 
  2294.  
  2295. The .FON file created by the process is installed on the system and becomes a 
  2296. public font, a font that can be used by any application in the system. 
  2297.  
  2298. A font not installed on the system is called a private font. Before your 
  2299. application can use the font, your application must use GpiLoadFonts to load 
  2300. the .FON file. 
  2301.  
  2302.  
  2303. ΓòÉΓòÉΓòÉ 8. Forwarded Entry Point (FWDSTAMP) ΓòÉΓòÉΓòÉ
  2304.  
  2305. FWDSTAMP adds entry points, called forwarders, to a dynamic link library file 
  2306. (.DLL). Forwarders point to API functions or other exported code or data. They 
  2307. contain an import reference so that the final target address of the forwarded 
  2308. entry is contained in a different module. A forwarder might be called an 
  2309. imported export. 
  2310.  
  2311. When a file has a fix-up to a forwarded entry point, the loader resolves that 
  2312. fix-up to the address of the entry point that the forwarder imports, by 
  2313. traversing the chain of forwarders until the end of the chain (a nonforwarded 
  2314. export) is reached.  All forwarders are implicitly exported. 
  2315.  
  2316. The imported entry point that a forwarder refers to may itself be another 
  2317. forwarder. The loader will process a chain of forwarders until a nonforwarder 
  2318. entry point is encountered. 
  2319.  
  2320. There is no run-time cost to forwarders; however, there is a slight load-time 
  2321. cost as the loader resolves forwarder chains with their final addresses. 
  2322.  
  2323.  
  2324. ΓòÉΓòÉΓòÉ 8.1. Using Forwarders ΓòÉΓòÉΓòÉ
  2325.  
  2326. You use forwarders to combine several DLLs into one without having to relink 
  2327. old applications. For example, if MOUCALLS and VIOCALLS were combined into a 
  2328. single DLL called NEWLIB.DLL, then MOUCALLS and VIOCALLS could be replaced with 
  2329. special DLLs containing forwarders to NEWLIB.DLL. 
  2330.  
  2331. Important Notes 
  2332.  
  2333.    o  FWDSTAMP parses only the IMPORTS and EXPORTS section of the module 
  2334.       definition file.  FWDSTAMP does not verify the syntax of the other 
  2335.       sections. 
  2336.  
  2337.    o  When exported names already exist in the input file, their attributes are 
  2338.       kept, such as resident or nonresident names table, and ordinal numbers. 
  2339.       Any new conflicting attributes are ignored. 
  2340.  
  2341.    o  If there is no exported name, FWDSTAMP adds the one defined by the 
  2342.       EXPORTS statement in the module definition file. 
  2343.  
  2344.  
  2345. ΓòÉΓòÉΓòÉ 8.1.1. Starting FWDSTAMP ΓòÉΓòÉΓòÉ
  2346.  
  2347. You can start FWDSTAMP and specify all input from the command line.  An example 
  2348. of the syntax follows: 
  2349.  
  2350.    FWDSTAMP [options] infile deffile outfile
  2351.  
  2352.  [options]   Specifies one of the following: 
  2353.  
  2354.       /?          Displays FWDSTAMP help panel. 
  2355.  
  2356.       /V          Increases the level of information FWDSTAMP should output. 
  2357.  
  2358.  infile      Specifies the name of the dynamic link library file that LINK386 
  2359.              created.  Use the file-name extension of DLL. 
  2360.  
  2361.  deffile     Specifies the name of the module definition file (.DEF) that 
  2362.              contains the forwarders. (See Example). 
  2363.  
  2364.  outfile     Specifies the name of the .DLL file that will contain the added 
  2365.              forwarders. 
  2366.  
  2367.  
  2368. ΓòÉΓòÉΓòÉ 8.1.2. Example ΓòÉΓòÉΓòÉ
  2369.  
  2370. Forwarders are specified in the module definition file so that an exported 
  2371. name, which is also imported, is a forwarder. For example: 
  2372.  
  2373.         IMPORTS
  2374.             VIOMODEWAIT=NEWLIB.123
  2375.         EXPORTS
  2376.             VIOMODEWAIT @ 25
  2377.  
  2378. In the example, a forwarder entry point for VIOMODEWAIT is created and contains 
  2379. an import reference to NEWLIB.123. 
  2380.  
  2381.  
  2382. ΓòÉΓòÉΓòÉ 9. Icon Editor ΓòÉΓòÉΓòÉ
  2383.  
  2384. The Icon Editor lets you create your own art (icons, pointers, and bit maps) 
  2385. and save them for use by applications. 
  2386.  
  2387. Icons, pointers, and bit maps produced by the Icon Editor are graphic symbols 
  2388. comprised of pels (also known as pixels) in any of the following display 
  2389. states: 
  2390.  
  2391.    o  Black 
  2392.    o  White 
  2393.    o  Color 
  2394.    o  Screen (background color) 
  2395.    o  Inverse screen (inverse of background color) 
  2396.  
  2397.  An application can use an icon to represent a minimized standard window.  For 
  2398.  example, an application that lists telephone numbers could use a telephone 
  2399.  icon when minimized.  An application can also use icons as warning symbols in 
  2400.  message boxes (for example, an exclamation mark or an upraised hand). 
  2401.  
  2402.  An application can associate a pointer with the mouse or similar pointing 
  2403.  device, so that the user can move the pointer around the screen, to select 
  2404.  controls or text.  A pointer could also be used in an interactive graphics 
  2405.  application to draw graphics on the screen. For example, a free-hand graphics 
  2406.  drawing application could use a pencil shape to represent the pointer. 
  2407.  
  2408.  
  2409. ΓòÉΓòÉΓòÉ 9.1. Using the Icon Editor ΓòÉΓòÉΓòÉ
  2410.  
  2411. To run the Icon Editor, select the Development Tools folder and then select 
  2412. Icon Editor. 
  2413.  
  2414. The Icon Editor display consists of three parts: the information panel, the 
  2415. palette window, and the editing window. 
  2416.  
  2417. The information panel at the top of the Icon Editor window displays the 
  2418. following information: 
  2419.  
  2420.    o  A picture of a two-button mouse, showing the colors currently selected 
  2421.       for each button 
  2422.  
  2423.    o  An actual-size image of the current figure that you are editing 
  2424.  
  2425.    o  The status area, showing the following: 
  2426.  
  2427.         -  Size (defined as 32 x 32 for icons and pointers; user-defined for 
  2428.            bit maps) 
  2429.         -  Pen location 
  2430.         -  Pen size (from 1 x 1 to 9 x 9) 
  2431.         -  Hotspot (for icons and pointers, but not bit maps) 
  2432.         -  Figure type (icon, pointer, or bit map) 
  2433.         -  Form name 
  2434.  
  2435.  The palette window, in the lower right corner, displays the colors that are 
  2436.  available for use during editing. The colors currently selected are marked 
  2437.  with frames. 
  2438.  
  2439.  The editing window is the largest part of your working area.  Use the mouse or 
  2440.  keyboard to move the pointer, clicking or dragging the pointer to paint the 
  2441.  enlarged representation of pels with the selected color. 
  2442.  
  2443.  
  2444. ΓòÉΓòÉΓòÉ 9.1.1. Creating a Figure ΓòÉΓòÉΓòÉ
  2445.  
  2446. The Edit menu includes the functions used to select an icon, pointer, or bit 
  2447. map for editing, and to save it after you are through. 
  2448.  
  2449. Selecting your icon, pointer, or bit map 
  2450.  
  2451.    1. To create a new icon, pointer, or bit map, select New from the File menu. 
  2452.       The New Figure pop-up window appears, prompting you for further 
  2453.       information. 
  2454.  
  2455.       Select the figure type:  Icon, Pointer, or Bit map. For a bit map you 
  2456.       must specify the width and height in pels. Select Enter. 
  2457.  
  2458.       You can also create new art by modifying or editing an existing art of 
  2459.       the same type. 
  2460.  
  2461.    2. To edit existing art, select Open from the File menu. You will be 
  2462.       prompted for a name. 
  2463.  
  2464.       Note:  Unless you have turned off Safe Prompting (which is described 
  2465.       under Setting Preferences) on the Options menu, you will be prompted to 
  2466.       save if you select Open or New while there is unsaved art on your screen. 
  2467.  
  2468.    3. If you started Iconedit from a command prompt and specified multiple 
  2469.       files, you can use the Next option on the File menu to select the next 
  2470.       file. 
  2471.  
  2472.       The Next option will be greyed out if you did not start from the command 
  2473.       line and specify multiple files. 
  2474.  
  2475.  Saving your icon, pointer, or bit map 
  2476.  
  2477.  To save your art, select either of the following: 
  2478.  
  2479.    o  Select Save to save it under its current file name. If this is new art, 
  2480.       you will be prompted for a name. 
  2481.  
  2482.    o  Select Save As to save the art under a different name. You will be 
  2483.       prompted for a new name. 
  2484.  
  2485.  
  2486. ΓòÉΓòÉΓòÉ 9.1.2. Editing Art ΓòÉΓòÉΓòÉ
  2487.  
  2488. To edit your art, use the functions of the Edit menu. 
  2489.  
  2490. Select Undo to restore the art to the way it was before the most recent editing 
  2491. operation. 
  2492.  
  2493. Four of the editing functions require that you first mark the area to be 
  2494. edited, using Select or Select All. 
  2495.  
  2496. If you choose Select, the cursor changes to a plus (+) inside a square. Hold 
  2497. the left mouse button down to anchor one corner, and then drag the mouse. 
  2498. Release the button to anchor the opposite corner of the rectangular area you 
  2499. want to edit. 
  2500.  
  2501. If you choose Select All, the entire figure is selected. 
  2502.  
  2503. Selected Edit Menu Functions 
  2504.  
  2505. The following functions all require that an area must first be selected: 
  2506.  
  2507.    o  Select Fill to fill the selected area with the current palette color. 
  2508.       For additional information, see Filling Areas With Color. 
  2509.  
  2510.    o  Select Cut to cut an area you would like to move or delete. 
  2511.  
  2512.    o  Select Copy to copy an area you would like to duplicate elsewhere in the 
  2513.       same file or in another file. 
  2514.  
  2515.    o  Select Paste to place an area you have marked with Cut or Copy.  Drag the 
  2516.       outlined area that you have marked to the place you would like to paste 
  2517.       it. 
  2518.  
  2519.    o  Select Clear to erase all drawing within an area you have selected and 
  2520.       leave transparent pels. If you have used Select All, this will clear your 
  2521.       entire icon, pointer, or bit map. 
  2522.  
  2523.    o  Select Stretch Paste to paste the clipboard contents into your art, 
  2524.       stretching and positioning to fit. 
  2525.  
  2526.    o  Select Flip Horizontal to flip the art on its horizontal axis, reversing 
  2527.       bottom and top. 
  2528.  
  2529.    o  Select Flip Vertical to flip the art on its vertical axis, reversing left 
  2530.       and right.  You can create a symmetrical drawing by copying one side of 
  2531.       the art to the other side, and then flipping one of them. 
  2532.  
  2533.    o  Select Circle to inscribe a circle or ellipse within the selected area. 
  2534.  
  2535.  
  2536. ΓòÉΓòÉΓòÉ 9.1.3. Using Options ΓòÉΓòÉΓòÉ
  2537.  
  2538. The choices on the Options menu enable you to test your art and vary your 
  2539. editing environment. To change an option, from the Options menu select: 
  2540.  
  2541.  Test 
  2542.       To test view the pointer or icon you are editing. The pointer or icon 
  2543.       will be displayed, actual size, as the pointer until you toggle back by 
  2544.       again selecting Test from the Options menu. 
  2545.  
  2546.  Grid 
  2547.       To superimpose a grid over the editing window. This can be useful when 
  2548.       you want to draw a symmetrical figure. Each cell of the grid represents 
  2549.       one pel in the figure. 
  2550.  
  2551.  X background 
  2552.       To make the transparent pels (where the background is visible) apparent 
  2553.       when editing an icon or pointer.  All screen or inverse screen colors 
  2554.       will be shown with an X.  This option does not apply to bit maps because 
  2555.       they have no transparent pels. 
  2556.  
  2557.  Draw Straight 
  2558.       To temporarily restrict your drawing to drawing straight vertical and 
  2559.       horizontal lines.  Even if you deviate from the horizontal row, a 
  2560.       horizontal line is produced when the mouse pointer is dragged across the 
  2561.       editing window.  Dragging the mouse up or down produces straight vertical 
  2562.       lines. 
  2563.  
  2564.  Changing Pen Shape 
  2565.       See Changing Pen Shape and Size 
  2566.  
  2567.  Changing Pen Size 
  2568.       See Changing Pen Shape and Size 
  2569.  
  2570.  Setting Preferences 
  2571.       See Setting Preferences 
  2572.  
  2573.  Defining a Hotspot 
  2574.       See Defining a Hotspot 
  2575.  
  2576.  
  2577. ΓòÉΓòÉΓòÉ 9.1.3.1. Changing Pen Shape and Size ΓòÉΓòÉΓòÉ
  2578.  
  2579. You can change the shape and size of the pen by using choices on the Options 
  2580. menu. 
  2581.  
  2582. Changing Pen Shape 
  2583.  
  2584. Before you select Pen Shape, you must first select the shape using the Select 
  2585. function on the Edit Menu. See Editing Art for information about Select. Then 
  2586. select Set Pen Shape on the Options menu. 
  2587.  
  2588. Changing Pen Size 
  2589.  
  2590. Select Pen size on the Options menu to specify how many pels the pointer paints 
  2591. at a time. You can select any of nine square pen sizes: 
  2592.  
  2593. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2594. Γöé 1x1       Γöé 4x4       Γöé 7x7       Γöé
  2595. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2596. Γöé 2x2       Γöé 5x5       Γöé 8x8       Γöé
  2597. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2598. Γöé 3x3       Γöé 6x6       Γöé 9x9       Γöé
  2599. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2600.  
  2601. Shortcut: Select a pen size by pressing Ctrl and the size, such as Ctrl+6 for a 
  2602. 6 x6 pen size. 
  2603.  
  2604.  
  2605. ΓòÉΓòÉΓòÉ 9.1.3.2. Setting Preferences ΓòÉΓòÉΓòÉ
  2606.  
  2607. To change your preferences, select Preferences from the Options menu.  Then 
  2608. select any of the following: 
  2609.  
  2610.  Safe Prompting 
  2611.       To be warned before destructive operations such as file overwrites. 
  2612.  
  2613.  Suppress Warnings 
  2614.       To suppress display of informational messages. 
  2615.  
  2616.  Save State on Exit 
  2617.       To save settings for your next session. 
  2618.  
  2619.  Display Status Area 
  2620.       To toggle on and off the picture of the mouse and art from the status 
  2621.       area. 
  2622.  
  2623.  Reset Options and Modes 
  2624.       To deselect the following items: 
  2625.  
  2626.       Select 
  2627.       Hotspot 
  2628.       Color Fill 
  2629.       Find Color The palette will not be reset. 
  2630.  
  2631.  
  2632. ΓòÉΓòÉΓòÉ 9.1.3.3. Defining a Hotspot ΓòÉΓòÉΓòÉ
  2633.  
  2634. The Hotspot is the pel where mouse input for an icon or pointer is directed. 
  2635. The default hotspot location is 16 x 16, the center of the icon or pointer. 
  2636. Bit maps do not have hotspots. 
  2637.  
  2638. Select Hotspot from the Options menu to designate this pel. The cursor changes 
  2639. shape, and the screen coordinates of the current hotspot are displayed in the 
  2640. information window. When you click on a new hotspot, the screen coordinates of 
  2641. the new hotspot are displayed. 
  2642.  
  2643. Select Hotspot again to return to editing. 
  2644.  
  2645. When an application uses WinQueryPointerPos to query the screen position of a 
  2646. pointer, the OS/2 operating system returns the coordinates of the pointer hot 
  2647. spot. 
  2648.  
  2649.  
  2650. ΓòÉΓòÉΓòÉ 9.1.3.4. Selecting Colors ΓòÉΓòÉΓòÉ
  2651.  
  2652. Use the Palette to select a new drawing color, using the left or right mouse 
  2653. button. 
  2654.  
  2655. The currently selected color for the right mouse button is framed on the 
  2656. palette in red; the color for the left mouse button is framed in green. The 
  2657. currently selected colors for both mouse buttons are also displayed at the left 
  2658. side of the status area. 
  2659.  
  2660. Changing Palettes or Palette Colors 
  2661.  
  2662. To change palettes or palette colors, select the Palette menu.  On the Palette 
  2663. menu, you can: 
  2664.  
  2665.    o  Select New to create a new palette.  The default palette will appear for 
  2666.       you to edit. 
  2667.  
  2668.    o  Select Open to open an existing palette. 
  2669.  
  2670.    o  Select Save to save your current palette. If it is a new palette, you 
  2671.       will be prompted for a name. 
  2672.  
  2673.    o  Select Save As to save the palette under a different name. You will be 
  2674.       prompted for a new name. 
  2675.  
  2676.    o  Select Edit Color to edit a color in your palette. 
  2677.  
  2678.    o  Select Swap colors to swap the colors of the left and right mouse 
  2679.       buttons.  A submenu will appear, asking whether you want to preserve 
  2680.       these colors in your art.  Unless you choose Preserve Figure, the colors 
  2681.       in your art will be changed accordingly. 
  2682.  
  2683.    o  Select Set default palette to save the existing palette as your default 
  2684.       palette. 
  2685.  
  2686.  
  2687. ΓòÉΓòÉΓòÉ 9.2. Editing Palette Colors ΓòÉΓòÉΓòÉ
  2688.  
  2689. You can change the colors that appear on your palette. To edit palette colors, 
  2690. follow these steps: 
  2691.  
  2692.    1. Select the color to be edited with the mouse. A frame appears around it 
  2693.       on the palette. 
  2694.  
  2695.    2. Select Edit color from the Palette menu. 
  2696.  
  2697.       Shortcuts: 
  2698.  
  2699.         o  Double-click on the color to be edited. 
  2700.         o  To select a color that you have already used in your art, use Find 
  2701.            color on the Tools menu. 
  2702.  
  2703.           The Edit color window will appear. 
  2704.  
  2705.    3. You can change the way you define palette colors by checking Dynamic 
  2706.       editing and Important and choosing between RGB and HSV terms. 
  2707.  
  2708.         o  Dynamic editing, when checked, will make your art change dynamically 
  2709.            as you edit individual colors, so that you can see how the changes 
  2710.            will affect your art. 
  2711.  
  2712.         o  Important, when checked, will require that the color be accurately 
  2713.            rendered, without dithering (approximating the color). 
  2714.  
  2715.         o  Every color can be described numerically in either RGB or HSV terms. 
  2716.  
  2717.                 RGB     As proportions of primary colors red, blue, and green 
  2718.  
  2719.                 HSV     In terms of hue, saturation, and value 
  2720.  
  2721.               To toggle between RGB and HSV, select the appropriate radio 
  2722.               button. 
  2723.  
  2724.    4. Use the scroll bars to change RGB or HSV values, or change these numbers 
  2725.       from the keyboard. 
  2726.  
  2727.    5. Select OK to save the edited color. 
  2728.  
  2729.  
  2730. ΓòÉΓòÉΓòÉ 9.2.1. Filling Areas With Color ΓòÉΓòÉΓòÉ
  2731.  
  2732. There are two different ways to fill an area with color: 
  2733.  
  2734.    o  To fill an irregularly-shaped area with the current palette color, select 
  2735.       Color fill from the Tools menu. 
  2736.  
  2737.       After you click on a specific pel, all adjoining areas that are the same 
  2738.       color as that pel will be colored with the selected color. 
  2739.  
  2740.    o  To fill a previously-selected area with the current palette color, select 
  2741.       Fill from the Edit menu. You must first select an area. See Editing Art 
  2742.       for information about Select and Select All. 
  2743.  
  2744.  Note:  To select a color that you have already used in your art, use Find 
  2745.         color on the Tools menu. A question-mark-arrow cursor will appear. 
  2746.  
  2747.  Click on a specific pel of that color, and that color is selected. 
  2748.  
  2749.  
  2750. ΓòÉΓòÉΓòÉ 9.2.2. Creating Icons for Specific Displays ΓòÉΓòÉΓòÉ
  2751.  
  2752. Although the Icon Editor edits and saves a device-independent form of the icon, 
  2753. the Device menu enables you to create versions of the icon for specific display 
  2754. devices.  The Device menu displays a choice of three functions:  create a new 
  2755. device form, select an existing form, and delete a form. 
  2756.  
  2757. An independent form is automatically created when you create a new icon or 
  2758. pointer and all other forms are derived from it.  If you select any of the 
  2759. other device forms listed in the menu, a new form is created for the specified 
  2760. device.  The Custom option enables you to create an icon or pointer for any 
  2761. other device. 
  2762.  
  2763. Select List to view a list of all existing forms, including custom and standard 
  2764. forms.  Any item on this list can be selected and edited or deleted.  However, 
  2765. you must have at least one device-independent form.  Select Add in the list 
  2766. dialog to add a new device form. 
  2767.  
  2768. Several icon bit maps can be saved in a single icon resource; when the icon is 
  2769. saved, all versions are saved with it in a format that includes a device 
  2770. resolution tag for each version.  When the icon is loaded from a resource file, 
  2771. the display device resolution is matched against the device for which each 
  2772. device-dependent icon was intended. If a match is found, that icon is used.  If 
  2773. no match is found, the application uses the device-independent icon, which 
  2774. always exists. 
  2775.  
  2776. Figure files can contain any of the following forms to support multiple 
  2777. devices: 
  2778.  
  2779.    o  Independent 
  2780.    o  CGA (2 colors) 
  2781.    o  EGA (16 colors) 
  2782.    o  VGA (16 colors) 
  2783.    o  XGA/8514 (256 colors) 
  2784.    o  XGA/8514 (16 colors) 
  2785.    o  XGA/8514 Small Color Form (16 colors) 
  2786.    o  XGA/8514 Small BW Form 
  2787.    o  Custom 
  2788.  
  2789.  Device-dependent icons are icons that are designed for a particular display 
  2790.  resolution. 
  2791.  
  2792.  An application can display icons or bit maps in dialog boxes or windows. 
  2793.  
  2794.  The file name extension depends on the type of resource you are creating.  The 
  2795.  Icon Editor produces a file with any of the following extensions: 
  2796.  
  2797.       .ICO for icons 
  2798.       .PTR for pointers 
  2799.       .BMP for bit maps 
  2800.  
  2801.  The .ICO, .PTR, or .BMP files must be referred to in the resource script file 
  2802.  for your application.  The external files containing icons, pointers, and bit 
  2803.  maps are all referenced in the resource script file by single-line statements 
  2804.  that have a similar format.  For example: 
  2805.  
  2806.   ICON    ID_MAINWND myprog.ico   /* Icon    */
  2807.  
  2808.   POINTER ID_PTR     mypoint.ptr  /* Pointer */
  2809.  
  2810.   BITMAP  ID_BMP     mybtmp.bmp   /* bit map  */
  2811.  
  2812.  ICON, POINTER, and BITMAP keywords identify the resource type. 
  2813.  
  2814.  The resource type is followed by a symbolic name or integer identifier that is 
  2815.  used by your application to identify the resource.  For example, with ICON, 
  2816.  the ID_MAINWND identifier can be used by the application in the control data 
  2817.  parameter of the WinCreateWindow call (or as a parameter to the 
  2818.  WinCreateStdWindow call) that creates the frame of the main window of your 
  2819.  application. The OS/2 operating system then associates the icon with the main 
  2820.  window. 
  2821.  
  2822.  The symbolic name or identifier can be followed by any loading and memory 
  2823.  options. The options are not used in the example, as it lets the options 
  2824.  default. 
  2825.  
  2826.  The last part of the statement is the file name and file type of the resource 
  2827.  created by the Icon Editor.  A fully qualified path name must be given if the 
  2828.  file is not in the current directory.  An icon that it used for a minimized 
  2829.  application main window should have the same file name as the executable file 
  2830.  of the application. 
  2831.  
  2832.  
  2833. ΓòÉΓòÉΓòÉ 9.3. Using a Command Line ΓòÉΓòÉΓòÉ
  2834.  
  2835. If you start the Icon Editor from a command line, rather than from an icon, you 
  2836. have an additional option available. You can load more than one file at a time 
  2837. by specifying the files on the command line. For instance, the following 
  2838. command would load the two specified icons, a bit map, and a pointer: 
  2839.  
  2840. ICONEDIT Ruth.ico gurp.ico alex.bmp pamela.ptr 
  2841.  
  2842. If you specify multiple files when you start the Icon Editor from the command 
  2843. line, you can use the Next option on the File Menu to select the next file. 
  2844. This option is available only if you specify multiple files from the command 
  2845. line. 
  2846.  
  2847.  
  2848. ΓòÉΓòÉΓòÉ 10. Link for Object and Library Files (LINK386) ΓòÉΓòÉΓòÉ
  2849.  
  2850. LINK386 is used to combine object files and standard library files into a 
  2851. single file: an executable file, a dynamic-link library, or a device driver. 
  2852. The output file from LINK386 is not constrained to specific memory addresses. 
  2853. Thus, the operating system can load and execute this file at any convenient 
  2854. address. 
  2855.  
  2856. LINK386 Input 
  2857.  
  2858. LINK386 uses the following files as input: 
  2859.  
  2860.    o  One or more object files that are linked with any optional library files 
  2861.       to form the executable file. Object files usually have a .OBJ extension. 
  2862.  
  2863.       LINK386 accepts object files compiled or assembled for 8088, 80286, 
  2864.       80386, 80486, or PENTIUM* microprocessors. Object files must be in the 
  2865.       Object Module Format (OMF), which is based on the Intel* 8086 OMF, and 
  2866.       Tool Interface Standards Portable Formats Specification. 
  2867.  
  2868.    o  One or more library files.  The library files contain object modules that 
  2869.       are linked to the object files to form the executable file. Library files 
  2870.       usually have a .LIB extension. 
  2871.  
  2872.       Library files are used to resolve external references in your object 
  2873.       files. 
  2874.  
  2875.    o  A module definition file.  The module definition file provides 
  2876.       information to LINK386 about the executable file or dynamic link library 
  2877.       file it is creating.  The module definition file usually has a .DEF 
  2878.       extension. 
  2879.  
  2880.  LINK386 Output 
  2881.  
  2882.  LINK386 can produce dynamic-link libraries (.DLL) and device drivers (.SYS), 
  2883.  in addition to executable files (.EXE). For additional information, see Output 
  2884.  Files. 
  2885.  
  2886.  LINK386 displays all of its output messages on the standard output device. 
  2887.  
  2888.  LINK386 Features 
  2889.  
  2890.  LINK386 creates the executable file and map file in the current directory 
  2891.  unless you enter an explicit path. 
  2892.  
  2893.  LINK386 looks in several locations for object, library, and module-definition 
  2894.  files. See Where LINK386 Looks for Files. 
  2895.  
  2896.  File names are not case sensitive; for example, abc.exe and ABC.EXE refer to 
  2897.  the same file. 
  2898.  
  2899.  If you enter a file name without an extension, LINK386 adds a Default Filename 
  2900.  Extension that depends on the type of file expected. 
  2901.  
  2902.  If you leave a field blank (but define the field with a comma), LINK386 uses a 
  2903.  default for the field.  If you end the LINK386 command with a semicolon (;), 
  2904.  LINK386 uses Filename Defaults for all remaining fields. 
  2905.  
  2906.  If you do not give all file names or do not end the command line with a 
  2907.  semicolon, LINK386 prompts you for the omitted files. 
  2908.  
  2909.  
  2910. ΓòÉΓòÉΓòÉ 10.1. Starting LINK386 ΓòÉΓòÉΓòÉ
  2911.  
  2912. Some commands and applications call LINK386 for you, or you can run LINK386 by 
  2913. typing LINK386 at the operating-system prompt. Supply input to LINK386 by any 
  2914. of three methods: 
  2915.  
  2916.    o  Enter the input directly on the command line. 
  2917.  
  2918.    o  Respond to prompts generated by LINK386. 
  2919.  
  2920.    o  Put your input in a response file, and enter the file name on the command 
  2921.       line. 
  2922.  
  2923.  You can press Ctrl+C at any time to interrupt LINK386 and return to the 
  2924.  operating system. 
  2925.  
  2926.  To display LINK386 help, type LINK386 /? at the prompt. A copyright statement 
  2927.  appears along with a list of valid LINK386 options. 
  2928.  
  2929.  
  2930. ΓòÉΓòÉΓòÉ 10.1.1. Syntax ΓòÉΓòÉΓòÉ
  2931.  
  2932.       LINK386 [options] objfiles [,exefile, mapfile, libraries, deffile] 
  2933.  
  2934.       OR 
  2935.  
  2936.       LINK386 @responsefile 
  2937.  
  2938.  SYNTAX DEFINITIONS 
  2939.  
  2940.  The LINK386 command line includes the following fields: 
  2941.  
  2942.  <options> 
  2943.       Options modifying actions of LINK386. Options can appear anywhere on the 
  2944.       command line except immediately after the commas used to separate fields. 
  2945.       See Options and Using LINK386 Options. 
  2946.  
  2947.  <Object Files> 
  2948.       Object files to be linked. Separate multiple file names by plus (+) or 
  2949.       space characters. At least one name must be entered. Library files can 
  2950.       also be entered. See Entering Library Files as Object Files. 
  2951.  
  2952.  <exefile> 
  2953.       Output of file.  LINK386 produces either an executable file, a 
  2954.       dynamic-link library, or a device driver. 
  2955.  
  2956.  <mapfile> 
  2957.       Map file created that lists modules in <exefile>. Use the /M option to 
  2958.       include public symbols in this file. Enter NUL if you do not want a map 
  2959.       file. See List Public Symbols (/M). 
  2960.  
  2961.  <libraries> 
  2962.       Standard or import (not dynamic-link) libraries to be used in resolving 
  2963.       external references.  Separate multiple file names by plus (+) or space 
  2964.       characters. Some libraries are searched by default. You can also specify 
  2965.       a path to a directory -- LINK386 will search for libraries in a path 
  2966.       specified on the <libraries> line before searching directories given by 
  2967.       the LIB environment variable. See Linking with an Import Library, Default 
  2968.       Libraries and Specifying Library Directories. 
  2969.  
  2970.  <deffile> 
  2971.       Module definition file. 
  2972.  
  2973.  SYNTAX EXAMPLES 
  2974.  
  2975.  The following command links the object files FUN.OBJ, TEXT.OBJ, TABLE.OBJ, and 
  2976.  CARE.OBJ. LINK386 searches for unresolved external references in the library 
  2977.  file XLIB.LIB and in the default libraries. By default, the executable file is 
  2978.  named FUN.EXE. LINK386 also produces a map file, FUNLIST.MAP. 
  2979.  
  2980.     LINK386 FUN+TEXT+TABLE+CARE, ,FUNLIST, XLIB.LIB;
  2981.  
  2982.  The following command produces a map file named FUN.MAP because a comma 
  2983.  appears as a placeholder for <mapfile>. 
  2984.  
  2985.     LINK386 FUN,,;
  2986.  
  2987.  The next pair of command lines do not produce a map file because commas do not 
  2988.  appear as placeholders for <mapfile>. 
  2989.  
  2990.   LINK386 FUN,;
  2991.   LINK386 FUN;
  2992.  
  2993.  The following command links the files MAIN.OBJ, GETDATA.OBJ, and PRINTIT.OBJ 
  2994.  into an executable file named MAIN.EXE. A map file named MAIN.MAP is also 
  2995.  produced. 
  2996.  
  2997.     LINK386 MAIN+GETDATA+PRINTIT, , MAIN;
  2998.  
  2999.  The following command links GETDATA.OBJ and PRINTIT.OBJ into an OS/2 
  3000.  dynamic-link library.  MODDEF.DEF must contain a LIBRARY statement to produce 
  3001.  the dynamic-link library. 
  3002.  
  3003.   LINK386 GETDATA+PRINTIT,GETDATA.DLL, , MODDEF
  3004.  
  3005.  
  3006. ΓòÉΓòÉΓòÉ 10.1.2. Object Files ΓòÉΓòÉΓòÉ
  3007.  
  3008. LINK386 accepts object files compiled or assembled for the 8088, 80286, 
  3009. 80386,80486 or PENTIUM microprocessor. LINK386 also accepts standard library 
  3010. files. 
  3011.  
  3012.  
  3013. ΓòÉΓòÉΓòÉ 10.1.3. Output Files ΓòÉΓòÉΓòÉ
  3014.  
  3015. LINK386 Can Produce Three Types of Output Files 
  3016.  
  3017.    o  Executable (.EXE) files that run under OS/2 protected mode 
  3018.  
  3019.       LINK386 produces an executable file whenever you specify a 
  3020.       module-definition file containing a NAME Statement. The module definition 
  3021.       file should not have a LIBRARY Statement, VIRTUAL DEVICE Statement, or 
  3022.       PHYSICAL DEVICE Statement; otherwise, a dynamic-link library or device 
  3023.       driver is produced, as described below. 
  3024.  
  3025.    o  Dynamic-link library (.DLL) files 
  3026.  
  3027.       A dynamic-link library is produced whenever you specify a 
  3028.       module-definition file containing a LIBRARY statement. 
  3029.  
  3030.    o  Device driver (.SYS) files 
  3031.  
  3032.       A virtual or physical device driver is produced whenever you specify a 
  3033.       module-definition file containing the VIRTUAL DEVICE or PHYSICAL DEVICE 
  3034.       statements. 
  3035.  
  3036.  
  3037. ΓòÉΓòÉΓòÉ 10.1.4. Prompts ΓòÉΓòÉΓòÉ
  3038.  
  3039. LINK386 prompts you if any fields have not been entered on the Syntax or in a 
  3040. response file. For each prompt, simply enter the same input that you would 
  3041. enter on the command line and press Enter. 
  3042.  
  3043.  Object Modules [.OBJ]: 
  3044.       <objfiles> 
  3045.  
  3046.  Run File [basename.EXE]: 
  3047.       <exefile> 
  3048.  
  3049.  List File [NUL.MAP]: 
  3050.       <mapfile> 
  3051.  
  3052.  Libraries [.LIB]: 
  3053.       <libraries> 
  3054.  
  3055.  Definitions File [NUL.DEF]: 
  3056.       <deffile> 
  3057.  
  3058.  Special Features 
  3059.  
  3060.    o  To extend input to a new line, type a plus sign (+) as the last character 
  3061.       on the current line. When the same prompt appears on a new line, you can 
  3062.       continue. Do not, however, split a file name across lines. 
  3063.  
  3064.    o  To select the default response to a prompt, press Enter. The next prompt 
  3065.       appears. 
  3066.  
  3067.    o  To select default responses to the current prompt and all remaining 
  3068.       prompts, enter a semicolon (;). Note that at least one object file must 
  3069.       be entered. 
  3070.  
  3071.    o  You can specify options anywhere on any response line, except before a 
  3072.       comma at the end of a line of characters. If you want to specify more 
  3073.       than one option, either group them at the end of a response, or specify 
  3074.       them at the end of several responses. Each option must begin with a slash 
  3075.       (/). 
  3076.  
  3077.  
  3078. ΓòÉΓòÉΓòÉ 10.1.5. Response Files ΓòÉΓòÉΓòÉ
  3079.  
  3080. A response file is a text file used to provide input to LINK386. To use 
  3081. response file input for LINK386, type 
  3082.  
  3083.   LINK386 @responsefile
  3084.  
  3085. The @ symbol tells LINK386 that responsefile is the name of a response file. If 
  3086. the file is not in the working directory, you must specify the path. 
  3087.  
  3088. The field <responsefile> specifies the name of a file containing the same input 
  3089. that would be entered on the command line or entered in response to LINK386 
  3090. prompts.  In this file, each response should appear on a separate line or be 
  3091. separated from other responses by a comma. 
  3092.  
  3093. To operate LINK386 using a response file, you must first create a file that 
  3094. contains the responses you want LINK386 to process. You can give the file any 
  3095. name, and create it with any text editor. 
  3096.  
  3097. Special Features: 
  3098.  
  3099.    o  You can begin using a response file at any point on the LINK386 Syntax or 
  3100.       at any LINK386 prompt. The response file should contain responses to all 
  3101.       remaining fields or prompts. 
  3102.  
  3103.    o  If the file does not contain responses for all the prompts, LINK386 
  3104.       displays the appropriate prompt and waits for you to supply a response. 
  3105.       End the response file with a semicolon. 
  3106.  
  3107.    o  You can use special characters in the response file the same way you 
  3108.       would use them in responses entered at the keyboard. For example, you can 
  3109.       extend input to a new line by using the plus sign (+) and choose default 
  3110.       responses for all remaining prompts by using a semicolon (;). 
  3111.  
  3112.    o  LINK386 displays prompts and the entries from the response file on the 
  3113.       screen. If the entry in the response file is not acceptable, LINK386 
  3114.       pauses and waits for you to enter an acceptable response. The "Run in 
  3115.       Batch Mode (/BAT)" disables the prompt. 
  3116.  
  3117.    o  Options can appear anywhere in the response file. 
  3118.  
  3119.  
  3120. ΓòÉΓòÉΓòÉ 10.1.5.1. Response File Example ΓòÉΓòÉΓòÉ
  3121.  
  3122. FUN TEXT TABLE CARE
  3123. /DEBUG /MAP
  3124. FUNLIST
  3125. GRAF.LIB
  3126.  
  3127. If the text file above were named FUN.LNK, the following command would use this 
  3128. file as a response file: 
  3129.  
  3130. LINK386 @FUN.LNK
  3131.  
  3132. This would cause LINK386 to do the following: 
  3133.  
  3134.    o  Link the four object modules FUN, TEXT, TABLE, and CARE into an 
  3135.       executable file named FUN.EXE 
  3136.  
  3137.    o  Generate the map file FUNLIST.MAP 
  3138.  
  3139.    o  Generate Debugging information 
  3140.  
  3141.    o  Include public symbols and addresses in the map file 
  3142.  
  3143.    o  Link any needed routines from the library file GRAF.LIB 
  3144.  
  3145.  The response file in the following example instructs LINK386 to generate an 
  3146.  executable file called FUN.EXE, and four object modules, FUN, SUN, RUN, and 
  3147.  GAMES. 
  3148.  
  3149.  If you specify the file name, FUNLIST, LINK386 will generate a map file named 
  3150.  FUNLIST.MAP.  Adding the /MAP option will cause LINK386 to include the public 
  3151.  symbols of the application in the map file. 
  3152.  
  3153.   fun+sun+run+game /map
  3154.   fun.exe
  3155.   funlist
  3156.   ;
  3157.  
  3158.  
  3159. ΓòÉΓòÉΓòÉ 10.1.6. Default Libraries ΓòÉΓòÉΓòÉ
  3160.  
  3161. Most compilers embed the names of needed libraries (called default libraries) 
  3162. in object files.  LINK386 searches these libraries. Because of this, you need 
  3163. to explicitly enter library names only in the following cases: 
  3164.  
  3165.    o  You want to use additional libraries. 
  3166.  
  3167.    o  You are using a library not in the current directory and not in a 
  3168.       directory specified by the LIB environment variable. See Where LINK386 
  3169.       Looks for Files. 
  3170.  
  3171.    o  You want to use a library other than the one specified in the object 
  3172.       file. 
  3173.  
  3174.  Explicitly entered libraries are always searched before default libraries.  If 
  3175.  an external reference is resolved by more than one library, the order of 
  3176.  libraries on the command line determines which library is used. 
  3177.  
  3178.  To ignore default libraries use the Ignore Default Libraries (/NOD). But be 
  3179.  careful - most compilers expect their object files to be linked with default 
  3180.  libraries. 
  3181.  
  3182.  
  3183. ΓòÉΓòÉΓòÉ 10.1.7. Entering Library Files as Object Files ΓòÉΓòÉΓòÉ
  3184.  
  3185. You can enter library files in the <objfiles> field.  Be sure to include the 
  3186. .LIB file name extension; otherwise, LINK386 assumes a .OBJ extension. 
  3187.  
  3188. With libraries entered in the <objfiles> field, LINK386 adds every module in 
  3189. the library to your output file.  With libraries entered in the <libraries> 
  3190. field, LINK386 adds only those required to resolve external references. 
  3191.  
  3192. The effect of entering a library this way is the same as if you had entered all 
  3193. of the library's module names into the <objfiles>field. 
  3194.  
  3195.  
  3196. ΓòÉΓòÉΓòÉ 10.1.7.1. Specifying Library Directories ΓòÉΓòÉΓòÉ
  3197.  
  3198. LINK386 searches additional locations for libraries using the drive name or 
  3199. path specification in the <libraries> field on the command line. 
  3200.  
  3201. You can specify up to 32 additional paths.  If you give more than 32 paths, 
  3202. LINK386 ignores the additional paths without displaying an error message. 
  3203.  
  3204.  
  3205. ΓòÉΓòÉΓòÉ 10.1.7.2. Where LINK386 Looks for Files ΓòÉΓòÉΓòÉ
  3206.  
  3207. When searching for an object, library, or module definition file, LINK386 looks 
  3208. in the following locations in this order: 
  3209.  
  3210.    1. The directory specified for the file if a path specification is included. 
  3211.       Default Libraries do not include path specifications. 
  3212.  
  3213.    2. The current directory. 
  3214.  
  3215.    3. Any directories entered on the command line. 
  3216.  
  3217.    4. Any directories given by the LIB environment variable. 
  3218.  
  3219.  If LINK386 cannot locate a file, it prompts you to enter the location. The 
  3220.  "Run in Batch Mode (/BAT)" disables these prompts. 
  3221.  
  3222.  
  3223. ΓòÉΓòÉΓòÉ 10.1.7.3. Library Search Example ΓòÉΓòÉΓòÉ
  3224.  
  3225. LINK386
  3226. Object Modules [.OBJ]: FUN TEXT TABLE CARE
  3227. Run File [FUN.EXE]:
  3228. List File [NUL.MAP]:
  3229. Libraries [.LIB]: C:\TESTLIB\ NEWLIBV3
  3230. Definitions File [NUL.DEF]:
  3231.  
  3232. This example links four object modules to create an executable file named 
  3233. FUN.EXE.  LINK386 searches NEWLIBV3.LIB before searching the default libraries 
  3234. to resolve references. 
  3235.  
  3236. To locate NEWLIBV3.LIB and the default libraries, LINK386 searches the 
  3237. following locations in this order: 
  3238.  
  3239.    1. The current directory 
  3240.  
  3241.    2. The C:\TESTLIB\ directory 
  3242.  
  3243.    3. The locations given by the LIB environment variable 
  3244.  
  3245.  
  3246. ΓòÉΓòÉΓòÉ 10.1.7.4. Filename Defaults ΓòÉΓòÉΓòÉ
  3247.  
  3248. If you do not enter a file name, LINK386 assumes a default: 
  3249.  
  3250.  <options> 
  3251.       No options 
  3252.  
  3253.  <objfiles> 
  3254.       None (This field is required.) 
  3255.  
  3256.  <exefile> 
  3257.       The base name of the first file in <objfiles> with the .EXE extension 
  3258.       added 
  3259.  
  3260.  <mapfile> 
  3261.       The base name in <exefile> with the .MAP extension added 
  3262.  
  3263.  <libraries> 
  3264.       No libraries 
  3265.  
  3266.  <deffile> 
  3267.       No module definition file 
  3268.  
  3269.  
  3270. ΓòÉΓòÉΓòÉ 10.1.7.5. Default Filename Extension ΓòÉΓòÉΓòÉ
  3271.  
  3272. If you do not enter an extension, LINK386 uses a default extension, depending 
  3273. on the type of file. 
  3274.  
  3275.  Object                   .OBJ 
  3276.  Executable               .EXE 
  3277.  Map                      .MAP 
  3278.  Standard Library         .LIB 
  3279.  Dynamic-Link Library     .DLL 
  3280.  Module Definition        .DEF 
  3281.  
  3282.  Overriding Default Extension 
  3283.  
  3284.  Any time you explicitly enter an extension, it overrides the default 
  3285.  extension.  To specify a file name without an extension, just enter a period 
  3286.  (.) after the file name. 
  3287.  
  3288.  
  3289. ΓòÉΓòÉΓòÉ 10.2. Options ΓòÉΓòÉΓòÉ
  3290.  
  3291. The following is a summary of LINK386 options: 
  3292.  
  3293.  /?                                 Display Help 
  3294.  /A[LIGNMENT]                       Align 
  3295.  /BAS[E]                            Base 
  3296.  /BAT[CH]                           Run in Batch Mode 
  3297.  /C[ODEVIEW]                        Prepare for Debugging 
  3298.  /DE[BUG]                           Prepare for Debugging 
  3299.  /DO[SSEG]                          Order Segments 
  3300.  /E[XEPACK]                         Exepack (You can add :1 or :2.) 
  3301.  /EXEPACK                           Exepack 
  3302.  /EXEPACK:1                         Exepack 
  3303.  /E:2                               Exepack 
  3304.  /E:1                               Exepack 
  3305.  /EXE:2                             Exepack 
  3306.  /EXEP                              Exepack 
  3307.  /F[ARCALLTRANSLATION]              Optimize Far Calls 
  3308.  /H[ELP]                            Display Help 
  3309.  /I[NFORMATION]                     Display Process Information 
  3310.  /L[INENUMBERS]                     Include Line Numbers 
  3311.  /M[AP]                             List Public Symbols 
  3312.  /NOD[EFAULTLIBRARYSEARCH]          Ignore Default Libraries 
  3313.  /NOE[XTDICTIONARY]                 Ignore Extended Dictionary 
  3314.  /NOF[ARCALLTRANSLATION]            Disable Far Optimization 
  3315.  /NOI[GNORECASE]                    Preserve Case Sensitivity 
  3316.  /NOL[OGO]                          Disable Sign-On Banner 
  3317.  /NON[ULLSDOSSEG]                   Order Segments without NULLs 
  3318.  /NOO[UTPUTONERROR]                 Does not produce <exefile> if an error 
  3319.                                     occurs during linking. 
  3320.  /NOS[ECTORALIGNCODE]               Disable Automatic Sector Alignment code. 
  3321.  /NOP[ACKCODE]                      Disable Code-Segment Packing 
  3322.  /PACKC[PACKCODE]                   Combine Contiguous Code 
  3323.  /PACKD[ATA]                        Combine Contiguous Data 
  3324.  /PAU[SE]                           Pause during Linking 
  3325.  /PM[TYPE]                          Name Application Type 
  3326.  /RU[NFROMVDM]                      Allow Execution From DOS Command Line 
  3327.  /SE[GMENTS]                        Set Max Number of Segments 
  3328.  /ST[ACK]                           Control Stack Size 
  3329.  /W[ARNFIXUP]                       Warn Fixup 
  3330.  
  3331.  Options Not Supported Under LINK386 
  3332.  
  3333.       /O[VERLAYINTERRUPT] 
  3334.       /CP[ARMAXALLOC] 
  3335.       /PADC[ODE] 
  3336.       /DS[ALLOCATE] 
  3337.       /PADD[ATA] 
  3338.       /Q[UICKLIB] 
  3339.       /HI[GH] 
  3340.       /T[INY] 
  3341.       /INC[REMENTAL] 
  3342.       /NOG[ROUPALIGN] 
  3343.  
  3344.  Specifying LINK386 Options 
  3345.  
  3346.  You can specify options anywhere on the response line, except before a comma 
  3347.  at the end of a line of characters.  If you want to specify more than one 
  3348.  option, either group them at the end of a response, or specify them at the end 
  3349.  of several responses.  Each option must begin with a forward slash (/). 
  3350.  
  3351.  
  3352. ΓòÉΓòÉΓòÉ 10.2.1. Using LINK386 Options ΓòÉΓòÉΓòÉ
  3353.  
  3354.    1. Options always begin with the slash character (/). 
  3355.  
  3356.    2. Options are not case sensitive.  For example, /de and /DE are equivalent. 
  3357.  
  3358.    3. You can specify options in either the short or long form.  The short form 
  3359.       is the shortest sequence of characters that uniquely identifies the 
  3360.       option.  The individual description of each option lists both forms with 
  3361.       the optional part enclosed in brackets.  For example, /BAT[CH] indicates 
  3362.       that either /BAT or /BATCH can be used. 
  3363.  
  3364.    4. Some linker options take numeric arguments.  You can enter numbers in 
  3365.       decimal, octal, or hexadecimal radix using standard C-language syntax. 
  3366.  
  3367.    5. You can also specify options in the LINK386 environment variable. 
  3368.  
  3369.    6. Although use of the minimum one-letter abbreviations is allowed, if a 
  3370.       future release has an additional option starting with the same letter, 
  3371.       the one-letter option will no longer be usable. 
  3372.  
  3373.  
  3374. ΓòÉΓòÉΓòÉ 10.2.2. Recommendations ΓòÉΓòÉΓòÉ
  3375.  
  3376. It is recommended that the ALIGN:2, BASE, FARCALLTRANSLATION, RUNFROMVDM, and 
  3377. EXEPACK:2 options be used when linking all executables.  This will compress 
  3378. them in size and improve their performance. 
  3379.  
  3380. If BASE is used with .EXE files, the /BASE:0x10000 option must be used.  Any 
  3381. other value will produce a warning. 
  3382.  
  3383.  
  3384. ΓòÉΓòÉΓòÉ 10.2.3. Entering Numeric Arguments ΓòÉΓòÉΓòÉ
  3385.  
  3386. Some LINK386 options and module statements take numeric arguments.  LINK386 
  3387. uses C-language syntax allowing you to specify numbers in any of the following 
  3388. forms: 
  3389.  
  3390.    o  Any number not prefixed with 0 or 0x is a decimal number. For example, 
  3391.       1234 is a decimal number. 
  3392.  
  3393.    o  Any number prefixed with 0 (but not 0x) is an octal number. For example, 
  3394.       01234 is an octal number. 
  3395.  
  3396.    o  Any number prefixed with 0x is a hexadecimal number. For example, 0x1234 
  3397.       is a hexadecimal number. 
  3398.  
  3399.  
  3400. ΓòÉΓòÉΓòÉ 10.2.4. Environment Variable ΓòÉΓòÉΓòÉ
  3401.  
  3402. You can use the LINK386 environment variable to cause certain options to be 
  3403. used each time you link.  LINK386 checks the environment variable for options 
  3404. if the variable exists. 
  3405.  
  3406. LINK386 expects to find options listed in the variable exactly as you would 
  3407. type them on the command line.  It does not accept other kinds of arguments; 
  3408. file names in the environment variable cause the following error message: 
  3409.  
  3410. unrecognized option
  3411.  
  3412. Each time you link, you can specify other options in addition to the ones 
  3413. specified in the LINK386 environment variable. If you type an option both on 
  3414. the Syntax and in the environment variable, the effect is the same as if the 
  3415. option were given once. 
  3416.  
  3417. Note:  A command line option overrides the effect of any environment-variable 
  3418. option that it conflicts with.  For example, the command line option /SE:512 
  3419. cancels the effect of the environment-variable option /SE:256. 
  3420.  
  3421. The only way to prevent an option in the environment variable from being used 
  3422. is to reset the environment variable itself. 
  3423.  
  3424.  
  3425. ΓòÉΓòÉΓòÉ 10.2.5. Environment Variable Example ΓòÉΓòÉΓòÉ
  3426.  
  3427. <SET LINK386=/NOI /SE:256 /DEBUG
  3428. <LINK386 TEST;
  3429. <LINK386 /NOD /DEBUG PROG;
  3430.  
  3431. In the example above, the file TEST.OBJ is linked with the options /NOI, 
  3432. /SE:256, and /DEBUG. The file PROG.OBJ is then linked with the option /NOD - in 
  3433. addition to /NOI, /SE:256, and /DEBUG. 
  3434.  
  3435.  
  3436. ΓòÉΓòÉΓòÉ 10.2.5.1. Alignment (/A) ΓòÉΓòÉΓòÉ
  3437.  
  3438. Syntax:  /A[LIGNMENT]:n 
  3439.  
  3440. This option directs LINK386 to set the alignment factor in the executable file 
  3441. to the number given, which must be a power of 2, from 2 to 32768. The default 
  3442. alignment is 512 bytes. Trailing zeroes are truncated to reduce the amount of 
  3443. data stored in a file. 
  3444.  
  3445. Each page starts at a location that is a multiple of n bytes from the beginning 
  3446. of the file.  For example, /A:16 would start pages at multiples of 16 bytes. 
  3447.  
  3448. Link386 produces pages that are a maximum of 4096 bytes in length. Alignment 
  3449. factors greater than 4096 will waste disk space. 
  3450.  
  3451.  
  3452. ΓòÉΓòÉΓòÉ 10.2.5.2. BASE (/BASE) ΓòÉΓòÉΓòÉ
  3453.  
  3454. Syntax: BASE:n 
  3455.  
  3456. Where n is a value rounded up to the nearest multiple of 64K Indicates that 
  3457. each object of the module has a preferred load address starting with object 1 
  3458. at this address, object 2 at the next available multiple of 64K, and so on. 
  3459. Internal relocation records are then applied using this addressing scheme. 
  3460.  
  3461. If the module's objects can be loaded beginning at this preferred address, then 
  3462. no load-time internal relocation records need be applied. 
  3463.  
  3464. If the module's objects cannot be loaded beginning at this preferred address, 
  3465. then the internal relocation records that have been retained in the file data 
  3466. will be applied. 
  3467.  
  3468. .EXE files may specify a base address, but it must be 64K.  If it isn't, a 
  3469. warning will be issued and a base address of 64K will be used anyway. This 
  3470. option provides the same support as the BASE module definition file statement. 
  3471.  
  3472.  
  3473. ΓòÉΓòÉΓòÉ 10.2.5.3. Run in Batch Mode (/BAT) ΓòÉΓòÉΓòÉ
  3474.  
  3475. Syntax:  /BAT[CH] 
  3476.  
  3477. By default, LINK386 prompts you for a new path name whenever it cannot find an 
  3478. object file or library it was directed to use. 
  3479.  
  3480. This option disables such prompting.  Instead, LINK386 generates an error or 
  3481. warning message, as appropriate, and leaves the external reference unresolved. 
  3482. The /BAT option also disables the display of the sign-on banner and the display 
  3483. of input from response files. 
  3484.  
  3485. This option is primarily used when LINK386 is called from a batch file or 
  3486. Description Files. 
  3487.  
  3488. Note:  This option does not affect prompts for Command Line Input. 
  3489.  
  3490.  
  3491. ΓòÉΓòÉΓòÉ 10.2.5.4. Prepare for Debugging (/C) ΓòÉΓòÉΓòÉ
  3492.  
  3493. Syntax:  /C[ODEVIEW] 
  3494.  
  3495. This option works exactly like the Prepare for Debugging (/DE) option. 
  3496.  
  3497. The /C option is used to prepare for debugging with any debugger. With this 
  3498. option, LINK386 imbeds symbolic data and line number information in the 
  3499. executable output file. 
  3500.  
  3501. You can run this executable file outside Debug; the debugging information in 
  3502. the file is ignored.  However, to reduce executable file size, use this option 
  3503. only for debugging.  Then you can link a separate version without the /C option 
  3504. after the program is debugged. 
  3505.  
  3506.  
  3507. ΓòÉΓòÉΓòÉ 10.2.5.5. Prepare for Debugging (/DE) ΓòÉΓòÉΓòÉ
  3508.  
  3509. Syntax:  /DE[BUG] 
  3510.  
  3511. The /DE option is used to prepare for debugging with any debugger.  With this 
  3512. option, LINK386 embeds symbolic data and line number information in the 
  3513. executable output file. 
  3514.  
  3515. You can run this executable file outside Debug; the debugging information in 
  3516. the file is ignored.  However, to reduce executable file size, use this option 
  3517. only for debugging.  Then you can link a separate version without the /DE 
  3518. option after the program is debugged. 
  3519.  
  3520.  
  3521. ΓòÉΓòÉΓòÉ 10.2.5.6. Order Segments (/DO) ΓòÉΓòÉΓòÉ
  3522.  
  3523. Syntax:  /DO[SSEG] 
  3524.  
  3525. This option is automatically enabled by a special object module record in many 
  3526. language libraries.  If you are linking to one of these libraries, you need not 
  3527. specify this option. 
  3528.  
  3529. The /DO option is also enabled by assembly modules that use the Macro Assembler 
  3530. directive .DOSSEG. 
  3531.  
  3532. This option forces segments to be ordered as follows (first to last): 
  3533.  
  3534.    1. All code segments 
  3535.  
  3536.    2. Far data segments 
  3537.  
  3538.    3. Near data (DGROUP) segments, in the following order: 
  3539.  
  3540.         a. Any segments of class BEGDATA (this class name is reserved) 
  3541.         b. Any segments not of class BEGDATA, BSS, or STACK 
  3542.         c. Segments of class BSS 
  3543.         d. Segments of class STACK 
  3544.  
  3545.  In addition, the /DO option causes LINK386 to do the following: 
  3546.  
  3547.    o  Initialize two special variables: 
  3548.  
  3549.             _edata = DGROUP : BSS
  3550.             _end = DGROUP : STACK
  3551.  
  3552.       The variables _edata and _end have special meanings for certain 
  3553.       compilers; avoid using these names in your programs.  Assembly-language 
  3554.       programs can refer to these variables, but should not change them. 
  3555.  
  3556.    o  Insert 16 null bytes at the beginning of the _TEXT segment (if this 
  3557.       segment is defined). 
  3558.  
  3559.  
  3560. ΓòÉΓòÉΓòÉ 10.2.5.7. Exepack (/E) ΓòÉΓòÉΓòÉ
  3561.  
  3562. Syntax:  /E[XEPACK] or /E[EXEPACK]:1 or /E[XEPACK]:2. 
  3563.  
  3564. EXEPACK causes pages of code and data in the file to be compressed. The OS/2 
  3565. Application Loader will automatically decompress these pages when the program 
  3566. is run. 
  3567.  
  3568. /EXEPACK:1 will use the compression algorithm that is compatible with OS/2 2.0, 
  3569. 2.1, and 2.11. 
  3570.  
  3571. /EXEPACK:2 will use a compression algorithm that is incompatible with OS/2 2.0, 
  3572. 2.1, and 2.11. 
  3573.  
  3574. /EXEPACK:2 will produce smaller executables that typically load faster. 
  3575.  
  3576.  
  3577. ΓòÉΓòÉΓòÉ 10.2.5.8. Optimize Far Calls (/F) ΓòÉΓòÉΓòÉ
  3578.  
  3579. Syntax:  /F[ARCALLTRANSLATION] 
  3580.  
  3581. This option causes LINK386 to optimize far-call instructions made from one 
  3582. segment to a target address in the same segment. LINK386 replaces calling 
  3583. sequences such as CALL FAR function with the following: 
  3584.  
  3585. PUSH     CS
  3586. CALL     NEAR function
  3587. NOP
  3588.  
  3589. The new calling sequence is significantly faster when running in protected 
  3590. mode.  Also, a load-time relocation is eliminated, which decreases program file 
  3591. size and speeds program loading. 
  3592.  
  3593. In general, the greatest benefit occurs if you use the "Combine Contiguous 
  3594. Code(/PACKC)" in addition to the /F option. 
  3595.  
  3596. The /F option has no effect on programs that make only near calls. 
  3597.  
  3598. Note:  There is a small risk involved with using the /F option. LINK386 may 
  3599. mistakenly interpret a byte of immediate data in a code segment as a far call 
  3600. if it has to have the far-call opcode (0x9A). 
  3601.  
  3602.  
  3603. ΓòÉΓòÉΓòÉ 10.2.5.9. Display Help (/H or /?) ΓòÉΓòÉΓòÉ
  3604.  
  3605. Syntax:  /H[ELP]   OR    /? 
  3606.  
  3607. These options display a list of valid LINK386 options. 
  3608.  
  3609.  
  3610. ΓòÉΓòÉΓòÉ 10.2.5.10. Display Process Information (/I) ΓòÉΓòÉΓòÉ
  3611.  
  3612. Syntax:  /I[NFORMATION] 
  3613.  
  3614. This option causes LINK386 to display information about the linking process, 
  3615. including the phase of linking and the names of the object files being linked. 
  3616. Use this option to determine the locations of the object files being linked and 
  3617. the order in which they are linked. 
  3618.  
  3619. The output from this option is sent to standard output. 
  3620.  
  3621.  
  3622. ΓòÉΓòÉΓòÉ 10.2.5.11. Include Line Numbers (/L) ΓòÉΓòÉΓòÉ
  3623.  
  3624. Syntax:  /L[INENUMBERS] 
  3625.  
  3626. This option includes source file line numbers and associated addresses in the 
  3627. map file.  In addition, you must give LINK386 an object file (or files) with 
  3628. line number information.  You can use the /Zd option with most compilers to 
  3629. include line numbers in the object file.  If you give LINK386 an object file 
  3630. without line number information, the /L option has no effect. The option for 
  3631. CSET/++ is /ti. 
  3632.  
  3633. The /L option forces LINK386 to create a map file even if you did not 
  3634. explicitly tell LINK386 to create a map file.  By default, the file is given 
  3635. the same base name as the executable file, plus the extension .MAP.  You can 
  3636. override the default name by explicitly specifying a map file name. 
  3637.  
  3638.  
  3639. ΓòÉΓòÉΓòÉ 10.2.5.12. List Public Symbols (/M) ΓòÉΓòÉΓòÉ
  3640.  
  3641. Syntax:  /M[AP][:full] 
  3642.  
  3643. This option lists in the map file all public (global) symbols defined in the 
  3644. object files.  With this option, the map file contains a list of all the 
  3645. symbols sorted by name, and a list of all the symbols sorted by address.  If 
  3646. you don't use this option, the map file contains only a list of segments. 
  3647.  
  3648. With this option, LINK386 creates a map file by default. If you explicitly 
  3649. enter a map file name of NUL, then no map file is created, and this option has 
  3650. no effect. 
  3651.  
  3652. The Map option can be specified as /M:full to produce a comprehensive map 
  3653. showing the composition of each segment. 
  3654.  
  3655.  
  3656. ΓòÉΓòÉΓòÉ 10.2.5.13. Ignore Default Libraries (/NOD) ΓòÉΓòÉΓòÉ
  3657.  
  3658. Syntax:  /NOD[EFAULTLIBRARYSEARCH][:filename] 
  3659.  
  3660. This option tells LINK386 to ignore Default Libraries when resolving external 
  3661. references.  If you specify an object file in <filename>, LINK386 ignores only 
  3662. the default libraries in <filename>. 
  3663.  
  3664. In general, high-level-language programs do not work correctly without standard 
  3665. libraries.  Thus, if you use the /NOD option, you should explicitly specify the 
  3666. name of a standard library in the <libraries> field of the command line. 
  3667.  
  3668.  
  3669. ΓòÉΓòÉΓòÉ 10.2.5.14. Ignore Extended Dictionary (/NOE) ΓòÉΓòÉΓòÉ
  3670.  
  3671. Syntax:  /NOE[XTDICTIONARY] 
  3672.  
  3673. This option prevents LINK386 from searching the extended dictionary, an 
  3674. internal list of symbol locations included with libraries generated with the 
  3675. old LIB utility's /NOE option. 
  3676.  
  3677. Normally, LINK386 uses the extended dictionary to speed up library searches; 
  3678. thus, using /NOE slows LINK386.  This option should be used when a library 
  3679. symbol is redefined.  You need to use this option when LINK386 issues error 
  3680. L2044. 
  3681.  
  3682.  
  3683. ΓòÉΓòÉΓòÉ 10.2.5.15. Disable Far Optimization (/NOF) ΓòÉΓòÉΓòÉ
  3684.  
  3685. Syntax:  /NOF[ARCALLTRANSLATION] 
  3686.  
  3687. Far-call optimization is off by default.  If the LINK386 environment variable 
  3688. or another command (such as ICC) has turned it on, you can use /NOF to turn it 
  3689. off again. 
  3690.  
  3691.  
  3692. ΓòÉΓòÉΓòÉ 10.2.5.16. Preserve Case Sensitivity (/NOI) ΓòÉΓòÉΓòÉ
  3693.  
  3694. Syntax:  /NOI[GNORECASE] 
  3695.  
  3696. This option turns case sensitivity on; that is, LINK386 treats ABC, abc, and 
  3697. Abc as unique names.  By default, case sensitivity is off. 
  3698.  
  3699. This option can be used when you link programs written in case-sensitive 
  3700. languages such as C. 
  3701.  
  3702.  
  3703. ΓòÉΓòÉΓòÉ 10.2.5.17. Disable Sign-On Banner (/NOL) ΓòÉΓòÉΓòÉ
  3704.  
  3705. Syntax:  /NOL[OGO] 
  3706.  
  3707. This option disables the sign-on banner displayed when LINK386 starts. 
  3708.  
  3709.  
  3710. ΓòÉΓòÉΓòÉ 10.2.5.18. Order Segments without NULLs (/NON) ΓòÉΓòÉΓòÉ
  3711.  
  3712. Syntax:  /NON[ULLSDOSSEG] 
  3713.  
  3714. This option arranges segments in a special order.  The /NON option is 
  3715. equivalent to the Order Segments (/DO) except that /NON does NOT insert 16 null 
  3716. bytes at the beginning of the _TEXT segment (if this segment is defined). 
  3717.  
  3718. The /NON option overrides the /DO option when both are used. Therefore, you can 
  3719. use /NON to override the /DO comment record commonly found in standard 
  3720. libraries. 
  3721.  
  3722.  
  3723. ΓòÉΓòÉΓòÉ 10.2.5.19. No Output on Error (/NOO) ΓòÉΓòÉΓòÉ
  3724.  
  3725. Syntax:  /NOO[UTPUTONERROR] 
  3726.  
  3727. This option will keep Link386 from creating the executable if an error is 
  3728. encountered. 
  3729.  
  3730.  
  3731. ΓòÉΓòÉΓòÉ 10.2.5.20. Disable Code-Segment Combining (/NOP) ΓòÉΓòÉΓòÉ
  3732.  
  3733. Syntax:  /NOP[ACKCODE] 
  3734.  
  3735. This option turns code segment combining off. By default, code segment 
  3736. combining is on. 
  3737.  
  3738.  
  3739. ΓòÉΓòÉΓòÉ 10.2.5.21. Disable Sector Alignment of Code (/NOS) ΓòÉΓòÉΓòÉ
  3740.  
  3741. Syntax:  /NOS[ECTORALIGNCODE] 
  3742.  
  3743. Link386 will align passes of code on sector (512 bytes) boundaries.  This helps 
  3744. reduce the time to load the passes. The /NOSECTORALIGNCODE option is provided 
  3745. to turn off this feature.  Pages of code would then be aligned based on the 
  3746. /ALIGN value. 
  3747.  
  3748.  
  3749. ΓòÉΓòÉΓòÉ 10.2.5.22. Combine Contiguous Code (/PACKC) ΓòÉΓòÉΓòÉ
  3750.  
  3751. Syntax:  /PACKC[ODE]:number 
  3752.  
  3753. This option groups neighboring code segments.  Neighboring code segments are 
  3754. assigned the same segment address, and offsets to each routine are adjusted 
  3755. upward as required.  This option is on by default and is used only when you 
  3756. wish to override an environment variable that has turned code combining off. 
  3757. See Environment Variable and Disable Code-Segment Combining (/NOP) 
  3758.  
  3759. The <number> field specifies the maximum size of a code segment grouped by 
  3760. /PACKC.  If you do not use the /PACKC option or if you omit <number>, maximum 
  3761. size defaults to 65530. LINK386 stops adding segments to a group as soon as it 
  3762. cannot add another segment without exceeding <number>. At this point, LINK386 
  3763. forms a new segment. See Entering Numeric Arguments. 
  3764.  
  3765. Code combining generally produces slightly faster and more compact code.  Use 
  3766. the Optimize Far Calls (/F) option to provide the maximum opportunity for 
  3767. combining. 
  3768.  
  3769.  
  3770. ΓòÉΓòÉΓòÉ 10.2.5.23. Combining Contiguous Data (/PACKD) ΓòÉΓòÉΓòÉ
  3771.  
  3772. Syntax:  /PACKD[ATA] [:number] 
  3773.  
  3774. This option groups neighboring data segments.  It functions like the Combine 
  3775. Contiguous Code (/PACKC) option, except that it combines data segments. 
  3776.  
  3777. The <number> field specifies the maximum size of a data segment grouped by 
  3778. /PACKD; if you omit <number>, the maximum size defaults to 65,536.  LINK386 
  3779. stops adding segments to a group as soon as it cannot add another segment 
  3780. without exceeding <number>.  At this point, LINK386 forms a new group. See 
  3781. Entering Numeric Arguments. 
  3782.  
  3783.  
  3784. ΓòÉΓòÉΓòÉ 10.2.5.24. Pause during Linking (/PAU) ΓòÉΓòÉΓòÉ
  3785.  
  3786. Syntax:  /PAU[SE] 
  3787.  
  3788. This option makes LINK386 pause before writing the output file to disk.  The 
  3789. pause allows you to swap disks. 
  3790.  
  3791. With this option, LINK386 displays the following message before it creates the 
  3792. output file: 
  3793.  
  3794. About to generate .EXE file
  3795. Change diskette in drive letter and press Enter
  3796.  
  3797. LINK386 writes the output file when you press Enter. 
  3798.  
  3799. Be sure not to remove a disk containing the map file. If the disk you need to 
  3800. swap contains either of these files, press CTRL+C to terminate the LINK386 
  3801. session, rearrange your files, and link again. 
  3802.  
  3803.  
  3804. ΓòÉΓòÉΓòÉ 10.2.5.25. Name Application Type (/PM) ΓòÉΓòÉΓòÉ
  3805.  
  3806. Syntax:  /PM[TYPE]:type 
  3807.  
  3808. This option specifies the type of application being generated. Using the /PM 
  3809. option is equivalent to including a NAME statement in the module definition 
  3810. file. 
  3811.  
  3812. A keyword in <type> is equivalent to a keyword in a NAME statement as shown in 
  3813. the following list: 
  3814.  
  3815.  PM                  WINDOWAPI 
  3816.  VIO                 WINDOWCOMPAT 
  3817.  NOVIO               NOTWINDOWCOMPAT 
  3818.  
  3819.  
  3820. ΓòÉΓòÉΓòÉ 10.2.5.26. Execute from DOS Command Line (/RU) ΓòÉΓòÉΓòÉ
  3821.  
  3822. Syntax:  /RU[NFROMVDM]: 
  3823.  
  3824. This option allows the program to be executed from a DOS command line, if 
  3825. possible. 
  3826.  
  3827. This option causes LINK386 to insert an alternate DOS stub into the program. 
  3828. The DOS stub is executed if a protect mode program is executed from a DOS 
  3829. command line. The default DOS stub simply prints an error message and returns 
  3830. to the DOS command line. The alternate DOS stub will attempt to start the 
  3831. program in protect mode. 
  3832.  
  3833.  
  3834. ΓòÉΓòÉΓòÉ 10.2.5.27. Set Maximum Number of Segments (/SE) ΓòÉΓòÉΓòÉ
  3835.  
  3836. Syntax:  /SE[GMENTS]:number 
  3837.  
  3838. This option sets the number of logical segments a program can have. You can set 
  3839. <number> to any value in the range 1 to 3,072. See Entering Numeric Arguments. 
  3840.  
  3841. For each logical segment, LINK386 must allocate space to keep track of segment 
  3842. information.  By using a relatively low segment limit as a default (128), 
  3843. LINK386 is able to link faster and allocate less storage space. 
  3844.  
  3845. When you set the segment limit higher than 128, LINK386 allocates more space 
  3846. for segment information.  This option allows you to raise the segment limit for 
  3847. programs with a large number of segments. 
  3848.  
  3849. For programs with fewer than 128 segments, you can keep the storage 
  3850. requirements of LINK386 at the lowest level possible by setting the segment 
  3851. <number> field to reflect the actual number of segments in the program.  If the 
  3852. number of segments allocated is too high for the amount of memory LINK386 has 
  3853. available to it, you see the error message segment limit too high. 
  3854.  
  3855. To specify a number of segments that fits in the amount of memory available, 
  3856. set the segment lower and relink. 
  3857.  
  3858.  
  3859. ΓòÉΓòÉΓòÉ 10.2.5.28. Control Stack Size (/ST) ΓòÉΓòÉΓòÉ
  3860.  
  3861. Syntax:  /ST[ACK] :number 
  3862.  
  3863. This option controls the stack size (in bytes) of your program. You can specify 
  3864. any positive value for <number>. See Entering Numeric Arguments. 
  3865.  
  3866. If your program generates a stack-overflow message, you can increase the size 
  3867. of the stack.  In contrast, if your program uses the stack very little, you may 
  3868. save some space by decreasing the stack size. 
  3869.  
  3870.  
  3871. ΓòÉΓòÉΓòÉ 10.2.5.29. Warning of Fix-ups (/W) ΓòÉΓòÉΓòÉ
  3872.  
  3873. Syntax:  /W[ARNFIXUP] 
  3874.  
  3875. This option directs LINK386 to issue a warning for each segment-relative fix-up 
  3876. of location-type offset when the segment is contained within a group, but not 
  3877. at the beginning.  LINK386 includes the displacement of the segment from the 
  3878. group in determining the final value of the fix-up. 
  3879.  
  3880.  
  3881. ΓòÉΓòÉΓòÉ 10.2.6. /INF and /M Output Example ΓòÉΓòÉΓòÉ
  3882.  
  3883. The following is a sample of LINK386 output when Display Process Information 
  3884. (/I) and List Public Symbols (/M) options are specified: 
  3885.  
  3886.   **** PASS ONE ****
  3887.   TEST.OBJ(test.for)
  3888.   **** LIBRARY SEARCH ****
  3889.   LLIBFOR7.LIB(wr)
  3890.   LLIBFOR7.LIB(fmtout)
  3891.   LLIBFOR7.LIB(ldout)
  3892.   Γöé Γöé Γöé
  3893.   **** ASSIGN ADDRESSES ****
  3894.   1 segment "TEST_TEXT" length 122H bytes
  3895.   2 segment "_DATA" length 912H bytes
  3896.   3 segment "CONST" length 12H bytes
  3897.   Γöé Γöé Γöé
  3898.   **** PASS TWO ****
  3899.   TEST.OBJ(test.for)
  3900.   LLIBFOR7.LIB(wr)
  3901.   LLIBFOR7.LIB(fmtout)
  3902.   LLIBFOR7.LIB(ldout)
  3903.   Γöé Γöé Γöé
  3904.   **** WRITING EXECUTABLE ****
  3905.  
  3906.  
  3907. ΓòÉΓòÉΓòÉ 10.2.7. OS/2 Considerations ΓòÉΓòÉΓòÉ
  3908.  
  3909. In most respects, linking a program for OS/2 is similar to linking a program 
  3910. for DOS. The principal difference is that most programs created for DOS run as 
  3911. stand-alone applications, whereas programs for OS/2 generally call one or more 
  3912. dynamic-link libraries. See What Is a Dynamic-Link Library? and Advantages of 
  3913. Dynamic Linking. 
  3914.  
  3915. Import and Export Definitions 
  3916.  
  3917. Each dynamic-link library (.DLL file) defines export definitions that tell OS/2 
  3918. what functions the library has. Functions not exported can only be called from 
  3919. within the library. Each export definition specifies a function name. 
  3920.  
  3921. Conversely, each executable program (.EXE file) defines import definitions that 
  3922. tell OS/2 which dynamic-link functions the program needs and where they can be 
  3923. found. Otherwise, OS/2 would not know which dynamic-link libraries to load when 
  3924. the program is run. Each import definition specifies a function name and the 
  3925. .DLL file where the function resides. 
  3926.  
  3927. Methods of OS/2 Linking 
  3928.  
  3929. There are two methods of OS/2 Linking: 
  3930.  
  3931.    o  Linking without an Import Library 
  3932.    o  Linking with an Import Library 
  3933.  
  3934.  Linking with an import library requires more steps but has certain advantages. 
  3935.  
  3936.  
  3937. ΓòÉΓòÉΓòÉ 10.2.7.1. What Is a Dynamic-Link Library? ΓòÉΓòÉΓòÉ
  3938.  
  3939. A dynamic-link library contains executable code for common functions, just as 
  3940. an ordinary library does.  Yet code for functions in dynamic-link libraries is 
  3941. not copied into the executable (.EXE) file.  Instead, the library itself is 
  3942. loaded into memory at run time, along with the .EXE file. 
  3943.  
  3944.  
  3945. ΓòÉΓòÉΓòÉ 10.2.7.2. Advantages of Dynamic Linking ΓòÉΓòÉΓòÉ
  3946.  
  3947. Dynamic-link libraries serve much the same purpose that standard libraries do, 
  3948. but they also have the following advantages: 
  3949.  
  3950.    o  Applications link more quickly. With dynamic linking, the executable code 
  3951.       for a dynamic-link function is not copied into the .EXE file of the 
  3952.       application. Instead, only an import definition is copied. 
  3953.  
  3954.    o  Applications require less disk space. With dynamic linking, several 
  3955.       different program applications can access the same dynamic-link function 
  3956.       stored in one place.  Without dynamic linking, the code for the function 
  3957.       would be repeated in every .EXE file. 
  3958.  
  3959.    o  Libraries and applications are independent. Dynamic-link libraries can be 
  3960.       updated any number of times without relinking the applications that use 
  3961.       them.  If you are a user of third-party libraries, this is particularly 
  3962.       convenient.  You receive the updated .DLL file from the third-party 
  3963.       developers, and you only need to copy the new library onto your disk.  At 
  3964.       run time, your applications automatically call the updated library 
  3965.       functions. 
  3966.  
  3967.    o  Code and data segments can be shared. Code and data segments loaded from 
  3968.       a dynamic-link library can be shared.  Without dynamic linking, such 
  3969.       sharing is not possible because each file has its own copy of all the 
  3970.       code and data it uses.  By sharing segments with dynamic linking, you can 
  3971.       use memory more efficiently. 
  3972.  
  3973.  
  3974. ΓòÉΓòÉΓòÉ 10.2.7.3. Linking without an Import Library ΓòÉΓòÉΓòÉ
  3975.  
  3976. The figure below illustrates a simple case in which you create an application 
  3977. that uses a single dynamic-link library (.DLL) file. 
  3978.  
  3979.  
  3980. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3981. Γöé .OBJ and Γöé  Γöé.DEF fileΓöé    Γöé.DEF fileΓöé  Γöé .OBJ and Γöé
  3982. Γöé.LIB filesΓöé  Γöé(LIBRARY)Γöé    Γöé(imports)Γöé  Γöé.LIB filesΓöé
  3983. Γöé          Γöé  Γöé(exports)Γöé    Γöé         Γöé  Γöé          Γöé
  3984. ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ    ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ
  3985.      Γöé             Γöé              Γöé             Γöé
  3986.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ              ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3987.             Γöé                            Γöé
  3988.                                         
  3989.        (1) LINK386                  (2) LINK386
  3990.                                         
  3991.             Γöé                            Γöé
  3992.        ΓöîΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÉ                ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3993.        Γöé.DLL fileΓöé                Γöé .EXE file   Γöé
  3994.        Γöé(library)Γöé                Γöé(application)Γöé
  3995.        ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3996.  
  3997. As depicted above, linking occurs in two steps: 
  3998.  
  3999.    1. Object files (and standard libraries if any) are linked with a module 
  4000.       definition (.DEF) file to create a .DLL file. A .DEF file is used that 
  4001.       defines all functions exported by the .DLL file. 
  4002.  
  4003.    2. Object files (and standard libraries, if any) are linked with a .DEF file 
  4004.       to create an application (.EXE) file. A different .DEF file is used for 
  4005.       this step; it defines all dynamic-link functions imported (used) by the 
  4006.       application. 
  4007.  
  4008.  
  4009. ΓòÉΓòÉΓòÉ 10.2.7.4. Linking with an Import Library ΓòÉΓòÉΓòÉ
  4010.  
  4011. The figure below illustrates a simple case in which you create an application 
  4012. that uses a single dynamic-link library (.DLL) file. 
  4013.  
  4014.  
  4015. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4016. Γöé .OBJ and Γöé   Γöé.DEF fileΓöé       Γöé.LIB fileΓöé   Γöé .OBJ and Γöé
  4017. Γöé.LIB filesΓöé   Γöé(LIBRARY)Γöé       Γöé(imports)Γöé   Γöé.LIB filesΓöé
  4018. Γöé          Γöé   Γöé(exports)Γöé       Γöé         Γöé   Γöé          Γöé
  4019. ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ   ΓööΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÿ       ΓööΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÿ   ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4020.      Γöé            Γöé   Γöé             Γöé   Γöé           Γöé
  4021.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ   Γöé                ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4022.             Γöé         ΓööΓöÇ(2) IMPLIBΓöÇΓöÿ         Γöé
  4023.                                              
  4024.       (1) LINK386                       (3) LINK386
  4025.                                              
  4026.             Γöé                                 Γöé
  4027.        ΓöîΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÉ                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4028.        Γöé.DLL fileΓöé                     Γöé .EXE file   Γöé
  4029.        Γöé(library)Γöé                     Γöé(application)Γöé
  4030.        ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4031.  
  4032. As depicted above, linking occurs in three steps: 
  4033.  
  4034.    1. Object files (and dynamic-link libraries) are linked with a module 
  4035.       definition (.DEF) file to create a .DLL file. A .DEF file is used that 
  4036.       defines all functions exported by the .DLL file. 
  4037.  
  4038.    2. The IMPLIB program is used to generate an import library (.LIB) file. 
  4039.       IMPLIB takes as input the same module definition file used in the first 
  4040.       step.  For each export definition in the .DEF file, IMPLIB generates a 
  4041.       corresponding import definition.  (IMPLIB can also use the .DLL file 
  4042.       generated in step 1 if you use the _export keyword in C declarations to 
  4043.       export functions.) 
  4044.  
  4045.    3. The .LIB file generated by IMPLIB is used as input to LINK386, which 
  4046.       creates an application (.EXE) file.  This .LIB file provides LINK386 with 
  4047.       information about imported dynamic-link functions. 
  4048.  
  4049.  
  4050. ΓòÉΓòÉΓòÉ 10.2.8. Module Definition Files Basics ΓòÉΓòÉΓòÉ
  4051.  
  4052. What Is a Module Definition File? 
  4053.  
  4054. A module definition file describes the names, attributes, exports, imports, and 
  4055. other characteristics of an application or library. You must use module 
  4056. definition files to create most applications for OS/2. You must use module 
  4057. definition files to create all OS/2 dynamic-link libraries and device drivers. 
  4058.  
  4059. Module Statements 
  4060.  
  4061. A module definition file contains one or more Module Statements These 
  4062. statements: 
  4063.  
  4064.    o  Define various attributes of the executable file 
  4065.    o  Define attributes of code and data segments 
  4066.    o  Identify functions that are imported or exported 
  4067.  
  4068.  
  4069. ΓòÉΓòÉΓòÉ 10.2.8.1. Module Definition File Example ΓòÉΓòÉΓòÉ
  4070.  
  4071. The following module definition file gives module definitions for a 
  4072. dynamic-link library.  It includes one source level comment and five 
  4073. statements. 
  4074.  
  4075.   ; Sample module-definition file
  4076.  
  4077.   LIBRARY
  4078.  
  4079.   DESCRIPTION
  4080.    'Sample .DEF file for a dynamic-link library'
  4081.  
  4082.   CODE      PRELOAD
  4083.  
  4084.   STACKSIZE 1024
  4085.  
  4086.   EXPORTS
  4087.    Init    @1
  4088.    Begin   @2
  4089.    Finish  @3
  4090.    Load    @4
  4091.    Print   @5
  4092.  
  4093.  
  4094. ΓòÉΓòÉΓòÉ 10.2.8.2. Module Statement Rules ΓòÉΓòÉΓòÉ
  4095.  
  4096.    o  If you use a NAME, LIBRARY, VIRTUAL DEVICE, or PHYSICAL DEVICE statement, 
  4097.       it must precede all other statements in the module definition file. 
  4098.  
  4099.    o  You can include source level comments in the module definition file by 
  4100.       beginning a line with a semicolon (;). Such lines are ignored. 
  4101.  
  4102.    o  All module definition keywords (such as NAME, LIBRARY, and OLD) must be 
  4103.       entered in uppercase letters. 
  4104.  
  4105.  
  4106. ΓòÉΓòÉΓòÉ 10.2.9. Module Statements ΓòÉΓòÉΓòÉ
  4107.  
  4108. LINK386 has the following module definition file statements: 
  4109.  
  4110.  BASE                  Base 
  4111.  CODE                  Gives default attributes for code segments 
  4112.  DATA                  Gives default attributes for data segments 
  4113.  DESCRIPTION           Describes the module 
  4114.  EXETYPE               Identifies operating system 
  4115.  EXPORTS               Defines exported functions 
  4116.  IMPORTS               Defines imported functions 
  4117.  HEAPSIZE              Specifies local heap size 
  4118.  LIBRARY               Names dynamic-link library 
  4119.  NAME                  Names application 
  4120.  OLD                   Preserves import information 
  4121.  PHYSICAL DEVICE       Names physical device driver 
  4122.  PROTMODE              Specifies DOS protected mode 
  4123.  SEGMENTS              Gives attributes for specific segments 
  4124.  STACKSIZE             Specifies local stack size 
  4125.  STUB                  Adds DOS executable file to module 
  4126.  VIRTUAL DEVICE        Names virtual device driver 
  4127.  
  4128.  
  4129. ΓòÉΓòÉΓòÉ 10.2.10. BASE Statement ΓòÉΓòÉΓòÉ
  4130.  
  4131. Syntax: BASE=n 
  4132.  
  4133. Where n is a value rounded up to the nearest multiple of 64K Indicates that 
  4134. each object of the module has a preferred load address starting with object 1 
  4135. at this address, object 2 at the next available multiple of 64K, and so on. 
  4136. Internal relocation records are then applied using this addressing scheme. 
  4137.  
  4138. If the module's objects can be loaded beginning at this preferred address, then 
  4139. no load-time internal relocation records need be applied. 
  4140.  
  4141. If the module's objects cannot be loaded beginning at this preferred address, 
  4142. then the internal relocation records that have been retained in the file data 
  4143. will be applied. 
  4144.  
  4145. EXE files may specify a base address, but it must be 64K.  If it isn't, a 
  4146. warning will be issued and a base address of 64K will be used anyway. 
  4147.  
  4148.  
  4149. ΓòÉΓòÉΓòÉ 10.2.11. CODE Statement ΓòÉΓòÉΓòÉ
  4150.  
  4151. Syntax: CODE [attribute...] 
  4152.  
  4153. This statement defines the default attributes for code segments within the 
  4154. application or library. One or more attributes can appear following the CODE 
  4155. statement: 
  4156.  
  4157.  PRELOAD or LOADONCALL Sets when code segment is loaded 
  4158.  
  4159.            Note:  OS/2 2.x ignores the preload attribute. 
  4160.  
  4161.  EXECUTEONLY or EXECUTEREAD Sets read/execute status 
  4162.  
  4163.  IOPL or NOIOPL Sets I/O privilege 
  4164.  
  4165.  CONFORMING or NONCONFORMING Determines segment conformance 
  4166.  
  4167.  Attribute Rules: 
  4168.  
  4169.    o  Only one attribute from each pair appears. If you specify neither 
  4170.       attribute from a pair, LINK386 supplies the default, listed second in 
  4171.       each pair above. 
  4172.  
  4173.    o  Attributes can appear in any order. 
  4174.  
  4175.  Example 
  4176.  
  4177.  The following example sets defaults for module code segments so they have I/O 
  4178.  hardware privilege and are not loaded until accessed. 
  4179.  
  4180.   CODE LOADONCALL IOPL
  4181.  
  4182.  
  4183. ΓòÉΓòÉΓòÉ 10.2.11.1. Load Code Attributes ΓòÉΓòÉΓòÉ
  4184.  
  4185. These attributes determine when a code segment is loaded: 
  4186.  
  4187.  PRELOAD        The segment is loaded automatically when the program starts. 
  4188.  
  4189.                 Note:  OS/2 2.x ignores the preload attribute. 
  4190.  
  4191.  LOADONCALL     The segment is not loaded until accessed (default). 
  4192.  
  4193.  
  4194. ΓòÉΓòÉΓòÉ 10.2.11.2. Read/Execute Code Attributes ΓòÉΓòÉΓòÉ
  4195.  
  4196. These attributes determine whether a code segment can be read as well as 
  4197. executed: 
  4198.  
  4199.  EXECUTEONLY    The segment can only be executed. 
  4200.  
  4201.  EXECUTEREAD    The segment can be both executed and read (default). 
  4202.  
  4203.  
  4204. ΓòÉΓòÉΓòÉ 10.2.11.3. I/O Privilege Code Attributes ΓòÉΓòÉΓòÉ
  4205.  
  4206. I/O privilege code attributes determine whether a segment has I/O privilege 
  4207. (that is, whether it can access the hardware directly): 
  4208.  
  4209.  IOPL 
  4210.       The code segment has I/O privilege. 
  4211.  
  4212.  NOIOPL 
  4213.       The code segment does not have I/O privilege (default). 
  4214.  
  4215.  
  4216. ΓòÉΓòÉΓòÉ 10.2.11.4. Conforming Code Attributes ΓòÉΓòÉΓòÉ
  4217.  
  4218. These attributes specify whether a code segment is a conforming segment: 
  4219.  
  4220.  CONFORMING     The segment is conforming. 
  4221.  
  4222.  NONCONFORMING  The segment is nonconforming (default). 
  4223.  
  4224.  The concept of a conforming segment has to do with privilege level (the range 
  4225.  of instructions that the process can execute) and is relevant only when you 
  4226.  are writing device drivers and system level code. A conforming segment can be 
  4227.  called from either Ring 2 or Ring 3, and the segment executes at the privilege 
  4228.  level of the caller. 
  4229.  
  4230.  
  4231. ΓòÉΓòÉΓòÉ 10.2.12. DATA Statement ΓòÉΓòÉΓòÉ
  4232.  
  4233. Syntax: DATA [attribute...] 
  4234.  
  4235. This statement defines the default attributes for data segments within the 
  4236. application or library. One or more attributes can appear following the DATA 
  4237. statement: 
  4238.  
  4239.  PRELOAD or LOADONCALL 
  4240.       Sets when data segment is loaded 
  4241.  
  4242.       Note:  OS/2 2.x ignores the preload attribute. 
  4243.  
  4244.  READONLY or READWRITE 
  4245.       Sets read/write access 
  4246.  
  4247.  NONE, SINGLE, or MULTIPLE 
  4248.       Sets sharing attributes 
  4249.  
  4250.  IOPL or NOIOPL 
  4251.       Sets I/O privilege 
  4252.  
  4253.  SHARED or NONSHARED 
  4254.       Determines whether segment is shared 
  4255.  
  4256.  Attribute Rules 
  4257.  
  4258.    o  Only one attribute out of each group appears; if you specify none of the 
  4259.       attributes in a group, the last attribute listed above for that group is 
  4260.       generally the default.  (The defaults for NONE/SINGLE/MULTIPLE and 
  4261.       SHARED/NONSHARED vary depending on whether you are describing a 
  4262.       dynamic-link library or application.) 
  4263.  
  4264.    o  Attributes can appear in any order. 
  4265.  
  4266.  Example 
  4267.  
  4268.  The following example defines the application data segment so that it is 
  4269.  loaded only when it is accessed and cannot be shared by more than one copy of 
  4270.  the program.  By default, the data segment can be read and written, the 
  4271.  automatic data segment is copied for each instance of the module, and the data 
  4272.  segment has no I/O privilege. 
  4273.  
  4274.   DATA LOADONCALL NONSHARED
  4275.  
  4276.  
  4277. ΓòÉΓòÉΓòÉ 10.2.12.1. Load Data Attributes ΓòÉΓòÉΓòÉ
  4278.  
  4279. These attributes determine when a data segment is loaded: 
  4280.  
  4281.  PRELOAD        The segment is loaded automatically when the program starts. 
  4282.  
  4283.                 Note:  OS/2 2.x ignores the preload attribute. 
  4284.  
  4285.  LOADONCALL     The segment is not loaded until accessed (default). 
  4286.  
  4287.  
  4288. ΓòÉΓòÉΓòÉ 10.2.12.2. Read/Write Data Attributes ΓòÉΓòÉΓòÉ
  4289.  
  4290. These attributes determine the access rights to a data segment: 
  4291.  
  4292.  READONLY       The segment can only be read. 
  4293.  
  4294.  READWRITE      The segment can be both read and written to (default). 
  4295.  
  4296.  
  4297. ΓòÉΓòÉΓòÉ 10.2.12.3. Sharing Data Attributes ΓòÉΓòÉΓòÉ
  4298.  
  4299. These attributes determine how the automatic data segment can be shared: 
  4300.  
  4301.  NONE      No automatic data segment is created. 
  4302.  
  4303.  SINGLE    A single automatic data segment is shared by all instances of the 
  4304.            module.  In this case, the module is said to have solo data.  This 
  4305.            keyword is the default for dynamic-link libraries. 
  4306.  
  4307.  MULTIPLE  The automatic data segment is copied for each instance of the 
  4308.            module.  In this case, the module is said to have instance data. 
  4309.            This keyword is the default for applications. 
  4310.  
  4311.  The automatic data segment is the physical segment represented by the group 
  4312.  name DGROUP.  This segment group makes up the physical segment that contains 
  4313.  the local stack and heap of the application. 
  4314.  
  4315.  
  4316. ΓòÉΓòÉΓòÉ 10.2.12.4. LINK386 -I/O Privilege Data Attributes ΓòÉΓòÉΓòÉ
  4317.  
  4318. These attributes determine whether data segments have I/O privilege (that is, 
  4319. whether they can access the hardware directly): 
  4320.  
  4321.  IOPL      The data segments have I/O privilege. 
  4322.  
  4323.  NOIOPL    The data segments do not have I/O privilege (default). 
  4324.  
  4325.  
  4326. ΓòÉΓòÉΓòÉ 10.2.12.5. Shareable Data Attributes ΓòÉΓòÉΓòÉ
  4327.  
  4328. These attributes determine whether all instances of the program can share a 
  4329. READWRITE data segment: 
  4330.  
  4331.  SHARED         One copy of the data segment is loaded and shared among all 
  4332.                 processes accessing the module (default for dynamic-link 
  4333.                 libraries). 
  4334.  
  4335.  NONSHARED      The segment cannot be shared, and must be loaded separately for 
  4336.                 each process (default for applications). 
  4337.  
  4338.  Under OS/2, this field is ignored if READONLY is specified, since READONLY 
  4339.  data segments are always shared. 
  4340.  
  4341.  
  4342. ΓòÉΓòÉΓòÉ 10.2.13. SEGMENTS Statement ΓòÉΓòÉΓòÉ
  4343.  
  4344. Syntax: 
  4345.  
  4346. SEGMENTS
  4347.          segmentdefinitions
  4348.  
  4349. This statement defines the attributes of one or more segments in the 
  4350. application or library on a segment-by-segment basis. The attributes specified 
  4351. by this statement override defaults set in CODE and DATA statements. 
  4352.  
  4353. The SEGMENTS keyword marks the beginning of the segment definitions. This 
  4354. keyword can be followed by one or more segment definitions, each on a separate 
  4355. line (limited by the number set by the LINK386 /SE option, or 128 if the option 
  4356. is not used). See Set Maximum Number of Segments (/SE). 
  4357.  
  4358. Segment-Definition Syntax 
  4359.  
  4360. ['] segmentname ['] [CLASS 'classname'][attribute...] 
  4361.  
  4362. Each segment definition begins with <segmentname>, optionally enclosed in 
  4363. single quotation marks ('). The quotation marks are required if <segmentname> 
  4364. conflicts with a module definition keyword, such as CODE or DATA. 
  4365.  
  4366. The CLASS keyword specifies the class of the segment.  Single quotation marks 
  4367. (') are required for <classname>. If you do not use the CLASS argument, LINK386 
  4368. assumes that the class is CODE. 
  4369.  
  4370. One or more attributes can follow. The default attribute is listed last. 
  4371.  
  4372.  PRELOAD or LOADONCALL 
  4373.       Determines when segment is loaded 
  4374.  
  4375.       Note:  OS/2 s.x ignores the preload attribute. 
  4376.  
  4377.  READONLY or READWRITE 
  4378.       Sets read/write access 
  4379.  
  4380.  EXECUTEONLY or EXECUTEREAD 
  4381.       Sets read/execute status 
  4382.  
  4383.  IOPL or NOIOPL 
  4384.       Sets I/O privilege 
  4385.  
  4386.  CONFORMING or NONCONFORMING 
  4387.       Determines conformance 
  4388.  
  4389.  MIXED1632 
  4390.       Specify Mixed 16 and 32-Bit Segments 
  4391.  
  4392.  ALIAS 
  4393.       Specify that segment is aliased 
  4394.  
  4395.  SHARED or NONSHARED 
  4396.       Specify that segment is shared 
  4397.  
  4398.  Attribute Rules 
  4399.  
  4400.    o  Only one attribute from each pair appears. If you specify neither 
  4401.       attribute from a pair, LINK386 supplies the default (listed second in 
  4402.       each pair above). 
  4403.  
  4404.    o  Attributes can appear in any order. 
  4405.  
  4406.  Example 
  4407.  
  4408.   SEGMENTS
  4409.     cseg1 CLASS 'mycode' IOPL
  4410.     cseg2 EXECUTEONLY PRELOAD CONFORMING
  4411.     dseg CLASS 'data' LOADONCALL READONLY
  4412.  
  4413.  This example specifies segments named cseg1, cseg2, and dseg. The first 
  4414.  segment is assigned class mycode and the second is assigned CODE by default. 
  4415.  Each segment is given different attributes. 
  4416.  
  4417.  
  4418. ΓòÉΓòÉΓòÉ 10.2.13.1. Load Segments Attributes ΓòÉΓòÉΓòÉ
  4419.  
  4420. These attributes determine when a segment is loaded: 
  4421.  
  4422.  PRELOAD        The segment is loaded automatically when the program starts. 
  4423.  
  4424.                 Note:  OS/2 2.x ignores the preload attribute. 
  4425.  
  4426.  LOADONCALL     The segment is not loaded until accessed (default). 
  4427.  
  4428.  
  4429. ΓòÉΓòÉΓòÉ 10.2.13.2. Read/Write Segments Attributes ΓòÉΓòÉΓòÉ
  4430.  
  4431. These attributes determine the access rights to a data segment: 
  4432.  
  4433.  READONLY       The segment can only be read. 
  4434.  
  4435.  READWRITE      The segment can be both read and written to (default). 
  4436.  
  4437.  
  4438. ΓòÉΓòÉΓòÉ 10.2.13.3. Read/Execute Segments Attributes ΓòÉΓòÉΓòÉ
  4439.  
  4440. These attributes determine whether a code segment can be read as well as 
  4441. executed: 
  4442.  
  4443.  EXECUTEONLY    The segment can only be executed. 
  4444.  
  4445.  EXECUTEREAD    The segment can be both executed and read (default). 
  4446.  
  4447.  
  4448. ΓòÉΓòÉΓòÉ 10.2.13.4. I/O Privilege Segments Attributes ΓòÉΓòÉΓòÉ
  4449.  
  4450. These attributes determine whether a segment has I/O privilege (that is, 
  4451. whether it can access the hardware directly): 
  4452.  
  4453.  IOPL      The segment has I/O privilege. 
  4454.  
  4455.  NOIOPL    The segment does not have I/O privilege (default). 
  4456.  
  4457.  
  4458. ΓòÉΓòÉΓòÉ 10.2.13.5. Conforming Segments Attributes ΓòÉΓòÉΓòÉ
  4459.  
  4460. These attributes specify whether a code segment is a conforming segment: 
  4461.  
  4462.  CONFORMING     The segment is conforming. 
  4463.  
  4464.  NONCONFORMING  The segment is nonconforming (default). 
  4465.  
  4466.  The concept of a conforming segment has to do with privilege level (the range 
  4467.  of instructions that the process can execute). Conforming attributes are 
  4468.  relevant only when you are writing device driver and system-level code.  A 
  4469.  conforming segment can be called from either Ring 2 or Ring 3, and the segment 
  4470.  executes at the privilege level of the caller. 
  4471.  
  4472.  
  4473. ΓòÉΓòÉΓòÉ 10.2.13.6. Specify Mixed 16 and 32-Bit Segments ΓòÉΓòÉΓòÉ
  4474.  
  4475. Sometimes it is necessary to mix 16-bit code with 32-bit code. When you must 
  4476. create groups that allow such mixing, LINK386 requires that you declare the 
  4477. segments in that group as MIXED1632. 
  4478.  
  4479.  
  4480. ΓòÉΓòÉΓòÉ 10.2.13.7. Specify that Segment is Aliased ΓòÉΓòÉΓòÉ
  4481.  
  4482. Segments flagged with the ALIAS keyword can be addressed using the 16-bit 
  4483. segmented method (_far16), or the 32-bit linear method.  The loader must 
  4484. prepare an additional segment selector for each segment designated with the 
  4485. ALIAS keyword.  This new segment selector allows for 16-bit addressing. 
  4486.  
  4487. Example: 
  4488.  
  4489. SEGMENTS _CODE  ALIAS
  4490.  
  4491. The statement above specifies that the segment _CODE can be called using 16-bit 
  4492. far calls and 32-bit near calls. 
  4493.  
  4494.  
  4495. ΓòÉΓòÉΓòÉ 10.2.13.8. Specify that Segment is Shared ΓòÉΓòÉΓòÉ
  4496.  
  4497. These attributes determine if the segment can be shared by other processes. 
  4498.  
  4499.  SHARED         One copy of the data segment is loaded and shared among all 
  4500.                 processes accessing the module (default for dynamic-link 
  4501.                 libraries). 
  4502.  
  4503.  NONSHARED      The segment cannot be shared, and must be loaded separately for 
  4504.                 each process (default for applications). 
  4505.  
  4506.  
  4507. ΓòÉΓòÉΓòÉ 10.2.14. DESCRIPTION Statement ΓòÉΓòÉΓòÉ
  4508.  
  4509. Syntax: DESCRIPTION 'text' 
  4510.  
  4511. This statement inserts the specified text into the application or library. The 
  4512. DESCRIPTION statement is useful for embedding source control or copyright 
  4513. information into an application or library. 
  4514.  
  4515. The <text> field is a one line string enclosed in single quotation marks. 
  4516.  
  4517. Example 
  4518.  
  4519. The following example inserts the text Template Program into the application or 
  4520. library being defined. 
  4521.  
  4522. DESCRIPTION 'Template Program'
  4523.  
  4524.  
  4525. ΓòÉΓòÉΓòÉ 10.2.15. EXETYPE Statement ΓòÉΓòÉΓòÉ
  4526.  
  4527. Syntax: EXETYPE [OS2 | WINDOWS | UNKNOWN] 
  4528.  
  4529. This statement specifies under which operating system the application (or 
  4530. dynamic-link library) is to run. This statement is optional and provides an 
  4531. additional degree of protection against the program being run in an incorrect 
  4532. operating system. 
  4533.  
  4534. The EXETYPE keyword can be followed by a descriptor of the operating system: 
  4535.  
  4536.  OS2             OS/2 applications and dynamic-link libraries (default) 
  4537.  WINDOWS         Windows** applications 
  4538.  UNKNOWN         Other applications 
  4539.  
  4540.  The effect of EXETYPE is to set bits in the header that identify 
  4541.  operating-system type.  Operating-system loaders can check these bits. 
  4542.  
  4543.  
  4544. ΓòÉΓòÉΓòÉ 10.2.16. EXPORTS Statement ΓòÉΓòÉΓòÉ
  4545.  
  4546. Syntax: 
  4547.  
  4548. EXPORTS
  4549.       exportdefinitions
  4550.  
  4551. This statement defines the names and attributes of the functions exported to 
  4552. other modules and of the functions that run with I/O privilege. 
  4553.  
  4554. Note:  The term export refers to the process of making a function available to 
  4555. other run-time modules.  By default, functions are hidden from other modules at 
  4556. run time. 
  4557.  
  4558. Normally, the EXPORTS statement is meaningful only for functions within 
  4559. dynamic-link libraries and for functions that execute with I/O privilege. 
  4560.  
  4561. The EXPORTS keyword marks the beginning of the export definitions. Each 
  4562. definition is entered on a separate line.  You need to give an export 
  4563. definition for each dynamic-link routine you want to make available to other 
  4564. modules. 
  4565.  
  4566. Export-Definition Syntax 
  4567.  
  4568. entryname [=internalname] [@ord[RESIDENTNAME]] [pwords] 
  4569.  
  4570.  <entryname> 
  4571.       The function name as it is known to other modules. 
  4572.  
  4573.  <internalname> 
  4574.       The actual name of the export function as it appears within the module 
  4575.       itself; by default, this name is the same as <entryname>. 
  4576.  
  4577.  <ord> 
  4578.       The function's ordinal position within the module definition table.  If 
  4579.       this field is used, the function's entry point can be invoked by name or 
  4580.       by ordinal.  Use of ordinal positions is faster and may save space. 
  4581.  
  4582.  RESIDENTNAME 
  4583.       Indicates that the function's name be kept resident in memory at all 
  4584.       times. This keyword is applicable only if <ord> is used. If <ord> is not 
  4585.       used, OS/2 automatically keeps the names of all exported functions 
  4586.       resident in memory by default. 
  4587.  
  4588.  <pwords> 
  4589.       The total size of the function's parameters, as measured in words (bytes 
  4590.       divided by two). This field is required only if the function executes 
  4591.       with I/O privilege. When a function with I/O privilege is called, OS/2 
  4592.       consults <pwords> to determine how many words to copy from the caller's 
  4593.       stack to the I/O-privileged function's stack. 
  4594.  
  4595.  Example 
  4596.  
  4597.   EXPORTS
  4598.     SampleRead = read2bin @8
  4599.     StringIn = str1       @4 RESIDENTNAME
  4600.     CharTest  6
  4601.  
  4602.  This example defines three export functions: 
  4603.  
  4604.    o  SampleRead 
  4605.    o  StringIn 
  4606.    o  CharTest 
  4607.  
  4608.  The first two functions can be accessed either by their exported names or by 
  4609.  an ordinal number. Note that in the module's own source code, these functions 
  4610.  are actually defined as read2bin and str1, respectively. The last function 
  4611.  runs with I/O privilege and therefore is given with the total size of the 
  4612.  parameters - six words. 
  4613.  
  4614.  
  4615. ΓòÉΓòÉΓòÉ 10.2.17. IMPORTS Statement ΓòÉΓòÉΓòÉ
  4616.  
  4617. Syntax: 
  4618.  
  4619. IMPORTS
  4620.   importdefinitions
  4621.  
  4622. This statement defines the names of the functions imported for the application 
  4623. or library. 
  4624.  
  4625. Note:  The term import refers to the process of declaring that a symbol is 
  4626. defined in another run-time module (a dynamic-link library). 
  4627.  
  4628. Typically, LINK386 uses an import library to resolve external references to 
  4629. dynamic-link symbols. However, the IMPORTS statement provides an alternative 
  4630. for resolving these references within a module. 
  4631.  
  4632. The IMPORTS keyword marks the beginning of the import definitions. This keyword 
  4633. is followed by one or more import definitions, each on a separate line. Each 
  4634. import definition corresponds to a particular function. 
  4635.  
  4636. Import-Definition Syntax 
  4637.  
  4638. [internalname=]modulename.entry
  4639.  
  4640.  <internalname> 
  4641.       The name that the importing module uses to call the function.  Thus, 
  4642.       <internalname> appears in the source code of the importing module, 
  4643.       although the function can have a different name in the module where it is 
  4644.       defined.  By default, internalname is the same as <entry>. 
  4645.  
  4646.  <modulename> 
  4647.       The name of the application or library that contains the function. 
  4648.  
  4649.  <entry> 
  4650.       The function to be imported; can be a name or an ordinal value.  (Ordinal 
  4651.       values are set in an EXPORTS statement.) If an ordinal value is given, 
  4652.       then <internalname> is required. 
  4653.  
  4654.  Note:  A given function has a name for each of three different contexts.  The 
  4655.  function has a name used by the exporting module (where it is defined), a name 
  4656.  used as an entry point between modules, and a name as it is used by the 
  4657.  importing module (where it is called).  If neither module uses the optional 
  4658.  <internalname> field, the function has the same name in all three contexts. 
  4659.  If either of the modules uses the <internalname> field, the function may have 
  4660.  more than one distinct name. 
  4661.  
  4662.  Syntax: 
  4663.  
  4664.   IMPORTS
  4665.     Sample.SampleRead
  4666.     SampleA.SampleWrite
  4667.     ReadChar = Read.1
  4668.  
  4669.  This example defines three functions to be imported: 
  4670.  
  4671.    o  SampleRead 
  4672.    o  SampleWrite 
  4673.    o  A function that has been assigned an ordinal value of 1 
  4674.  
  4675.  The functions are found in the modules Sample, SampleA, and Read, 
  4676.  respectively. The function from the Read module is referred to as ReadChar in 
  4677.  the importing module.  The original name of the function, as it is defined in 
  4678.  the Read module, may or may not be known. 
  4679.  
  4680.  
  4681. ΓòÉΓòÉΓòÉ 10.2.18. HEAPSIZE Statement ΓòÉΓòÉΓòÉ
  4682.  
  4683. Syntax: HEAPSIZE bytes | MAXVAL 
  4684.  
  4685. This statement defines the size of the application's local heap in bytes. This 
  4686. value affects the size of the automatic data segment. 
  4687.  
  4688. The field <bytes> contains any positive integer.  You can enter <bytes> in 
  4689. decimal, octal, or hexadecimal radix. See Entering Numeric Arguments. 
  4690.  
  4691. Instead of entering a number for <bytes>, you can enter the keyword MAXVAL. 
  4692. This sets the heap size such that the default data segment DGROUP is exactly 
  4693. 64K.  MAXVAL is useful in bound applications in which you want to force a 64K 
  4694. requirement for DGROUP. 
  4695.  
  4696. Example 
  4697.  
  4698. HEAPSIZE 4000
  4699.  
  4700. This example sets the local heap to 4,000 bytes. 
  4701.  
  4702.  
  4703. ΓòÉΓòÉΓòÉ 10.2.19. LIBRARY Statement ΓòÉΓòÉΓòÉ
  4704.  
  4705. Syntax: LIBRARY [libraryname][initialization]  [termination] 
  4706.  
  4707. This statement identifies the executable file as a dynamic-link library and 
  4708. optionally defines the name and library module initialization required. 
  4709.  
  4710. If <libraryname> is given, it becomes the name of the library as it is known by 
  4711. OS/2. This name can be any valid file name. If <libraryname> is not given, the 
  4712. name of the executable file - with the extension removed - becomes the name of 
  4713. the library. 
  4714.  
  4715. If <initialization> is given, it defines the library initialization required 
  4716. and can be one of the values below. If omitted, <initialization> defaults to 
  4717. INITGLOBAL. 
  4718.  
  4719.  INITGLOBAL 
  4720.       The library initialization routine is called only when the library module 
  4721.       is initially loaded into memory. 
  4722.  
  4723.       Using this keyword without a termination flag implies TERMGLOBAL for DLLs 
  4724.       with 32-bit entry points. 
  4725.  
  4726.  INITINSTANCE 
  4727.       The library initialization routine is called each time a new process 
  4728.       gains access to the library. 
  4729.  
  4730.       Using this keyword without a termination flag implies TERMINSTANCE for 
  4731.       DLLs with 32-bit entry points. 
  4732.  
  4733.  If <termination> is given, it defines the library termination required and can 
  4734.  be one of the values below. If omitted, <initialization> defaults to 
  4735.  TERMGLOBAL. The termination flag can only apply to DLLs with 32-bit entry 
  4736.  points. 
  4737.  
  4738.  TERMGLOBAL 
  4739.       The library termination routine is called only when the library module is 
  4740.       unloaded from memory. 
  4741.  
  4742.       Using this keyword without an initialization flag implies INITGLOBAL. 
  4743.  
  4744.  TERMINSTANCE 
  4745.       The library termination routine is called each time a process 
  4746.       relinquishes access to the library. 
  4747.  
  4748.       Using this keyword without an initialization flag implies INITINSTANCE. 
  4749.  
  4750.  If the LIBRARY statement is included in a module definition file, the NAME 
  4751.  statement cannot appear. If no LIBRARY statement appears, the module 
  4752.  definition file describes an application. 
  4753.  
  4754.  The following example assigns the name calendar to the dynamic-link library 
  4755.  and specifies that library initialization be performed each time a new process 
  4756.  gains access. 
  4757.  
  4758.     LIBRARY calendar INITINSTANCE
  4759.  
  4760.  
  4761. ΓòÉΓòÉΓòÉ 10.2.20. NAME Statement ΓòÉΓòÉΓòÉ
  4762.  
  4763. Syntax: NAME [appname][apptype] 
  4764.  
  4765. This statement identifies the executable file as an application and optionally 
  4766. defines the name and type. 
  4767.  
  4768. If <appname> is given, it becomes the name of the application as it is known by 
  4769. OS/2. This name can be any valid file name. If <appname> is not given, the name 
  4770. of the executable file - with the extension removed - becomes the name of the 
  4771. application. 
  4772.  
  4773. If <apptype> is given, it defines the type of application: 
  4774.  
  4775.  WINDOWAPI 
  4776.       Presentation Manager* application. The application uses the API provided 
  4777.       by the Presentation Manager and must be executed in the Presentation 
  4778.       Manager environment. 
  4779.  
  4780.  WINDOWCOMPAT 
  4781.       Application compatible with Presentation Manager. The application can run 
  4782.       inside the Presentation Manager, or it can run in a separate screen 
  4783.       group. An application can be of this type if it uses the proper subset of 
  4784.       OS/2 video, keyboard, and mouse functions supported in the Presentation 
  4785.       Manager applications. 
  4786.  
  4787.  NOTWINDOWCOMPAT 
  4788.       Application that is not compatible with the Presentation Manager and must 
  4789.       operate in a separate screen group from the Presentation Manager. 
  4790.  
  4791.  If the NAME statement appears, the LIBRARY, VIRTUAL DEVICE and PHYSICAL DEVICE 
  4792.  statements cannot appear. If none of these statements appear, the module 
  4793.  definition file is assumed to describe an application. 
  4794.  
  4795.  Example 
  4796.  
  4797.  The following example assigns the name calendar to the application being 
  4798.  defined. 
  4799.  
  4800.   NAME calendar WINDOWCOMPAT
  4801.  
  4802.  This application is Presentation Manager-compatible. 
  4803.  
  4804.  
  4805. ΓòÉΓòÉΓòÉ 10.2.21. OLD Statement ΓòÉΓòÉΓòÉ
  4806.  
  4807. Syntax: OLD 'filename' 
  4808.  
  4809. This statement directs LINK386 to search another dynamic-link module for export 
  4810. ordinals.  Exported names in the current module that match exported names in 
  4811. the OLD module are assigned ordinal values from that module unless one of the 
  4812. following conditions is in effect: 
  4813.  
  4814.    o  The name in the OLD module has no ordinal value assigned. 
  4815.  
  4816.    o  An ordinal value is explicitly assigned in the current module. 
  4817.  
  4818.  This statement is useful for preserving export ordinal values throughout 
  4819.  successive versions of a dynamic-link module.  The OLD statement has no effect 
  4820.  on application modules. 
  4821.  
  4822.  
  4823. ΓòÉΓòÉΓòÉ 10.2.22. PHYSICAL DEVICE Statement ΓòÉΓòÉΓòÉ
  4824.  
  4825. Syntax: PHYSICAL DEVICE [drivername] 
  4826.  
  4827. This statement identifies the executable file as a physical device driver. 
  4828.  
  4829. If <drivername> is given, it becomes the name of the driver as it is known by 
  4830. OS/2. This name can be any valid file name. If <drivername> is not given, the 
  4831. name of the executable file - with the extension removed - becomes the name of 
  4832. the driver. 
  4833.  
  4834.  
  4835. ΓòÉΓòÉΓòÉ 10.2.23. PROTMODE Statement ΓòÉΓòÉΓòÉ
  4836.  
  4837. Syntax: PROTMODE 
  4838.  
  4839. This statement specifies that the module runs only in protected mode and not in 
  4840. Windows or dual mode. This statement is always optional and permits a protected 
  4841. mode only application to omit some information from the executable file header. 
  4842.  
  4843. If this statement is not included in the module definition file, LINK386 
  4844. assumes the application can be run in either real or protected mode. 
  4845.  
  4846.  
  4847. ΓòÉΓòÉΓòÉ 10.2.24. STACKSIZE Statement ΓòÉΓòÉΓòÉ
  4848.  
  4849. Syntax: STACKSIZE number 
  4850.  
  4851. This statement performs the same function as the LINK386 /ST option; if both 
  4852. are used, the STACKSIZE statement overrides the /ST option.  See Control Stack 
  4853. Size (/ST). 
  4854.  
  4855. The field <number> contains a positive integer.  You can specify <number> in 
  4856. decimal, octal, or hexadecimal radix. See Entering Numeric Arguments. 
  4857.  
  4858. Example 
  4859.  
  4860. STACKSIZE 4096
  4861.  
  4862. This example allocates 4,096 bytes of local-stack space. 
  4863.  
  4864.  
  4865. ΓòÉΓòÉΓòÉ 10.2.25. STUB Statement ΓòÉΓòÉΓòÉ
  4866.  
  4867. Syntax: STUB 'filename' 
  4868.  
  4869. This statement adds a DOS executable file to the beginning of the application 
  4870. or library being created. The stub is invoked whenever the module is executed 
  4871. under DOS. Typically, the stub displays a message and terminates execution. By 
  4872. default, LINK386 adds its own standard stub for this purpose. 
  4873.  
  4874. The field <filename> specifies the DOS executable file to be added. LINK386 
  4875. looks for <filename> in the current directory and in the directories specified 
  4876. by the PATH environment variable. 
  4877.  
  4878. Example 
  4879.  
  4880. STUB 'STOPIT.EXE'
  4881.  
  4882. This example appends the DOS executable file STOPIT.EXE to the beginning of the 
  4883. module. STOPIT.EXE is executed when the module is run under DOS. 
  4884.  
  4885.  
  4886. ΓòÉΓòÉΓòÉ 10.2.26. VIRTUAL DEVICE Statement ΓòÉΓòÉΓòÉ
  4887.  
  4888. Syntax: VIRTUAL DEVICE [drivername] 
  4889.  
  4890. This statement identifies the executable file as a virtual device driver. 
  4891.  
  4892. If <drivername> is given, it becomes the name of the driver as it is known by 
  4893. OS/2. This name can be any valid file name. If <drivername> is not given, the 
  4894. name of the executable file - with the extension removed - becomes the name of 
  4895. the driver. 
  4896.  
  4897.  
  4898. ΓòÉΓòÉΓòÉ 11. Make Message File (MKMSGF) ΓòÉΓòÉΓòÉ
  4899.  
  4900. The MKMSGF program reads the input message file that you specify and creates an 
  4901. output message file that DosGetMessage uses to display messages. 
  4902.  
  4903. There are two ways that the output message file can be used: 
  4904.  
  4905.    o  Selected messages can be bound to the message segment of an executable 
  4906.       file using the MSGBIND program. 
  4907.  
  4908.    o  Messages can be accessed directly from the output message file. 
  4909.  
  4910.  See How Message Retrieval Works for additional information. 
  4911.  
  4912.  
  4913. ΓòÉΓòÉΓòÉ 11.1. Syntax ΓòÉΓòÉΓòÉ
  4914.  
  4915. MKMSGF infile outfile [options] 
  4916.  
  4917.    OR 
  4918.  
  4919. MKMSGF @controlfile 
  4920.  
  4921. The infile field specifies the input file that contains message definitions. 
  4922. The input-file name can be any valid OS/2 file name, optionally preceded by a 
  4923. drive letter and a path. 
  4924.  
  4925. The outfile field specifies the output file created by MKMSGF. The output-file 
  4926. name can be any valid OS/2 file name, optionally preceded by a drive letter and 
  4927. a path. 
  4928.  
  4929. To differentiate between the two files, the following convention is 
  4930. recommended, using the same file name. 
  4931.  
  4932.    o  The infile file should have a .TXT extension. 
  4933.    o  The outfile file should have a .MSG extension. 
  4934.  
  4935.  Note:  The output file cannot have the same file name and extension as the 
  4936.         input file. 
  4937.  
  4938.  
  4939. ΓòÉΓòÉΓòÉ 11.1.1. Help ΓòÉΓòÉΓòÉ
  4940.  
  4941. There are two ways to display MKMSGF help. 
  4942.  
  4943. Short Syntax Help 
  4944.  
  4945. To display a short version of MKMSGF syntax help, type MKMSGF at the prompt, 
  4946. with no parameters. The following will be displayed: 
  4947.  
  4948. MKMSGF infile[.ext] outfile[.ext] [/V]
  4949. [/D <DBCS range or country>] [/P <code page>]
  4950. [/L <language id,sub id>]
  4951.  
  4952. Long Help 
  4953.  
  4954. To display a longer version of MKMSGF help, including defaults, country codes, 
  4955. and language IDs, type MKMSGF /? at the prompt. The following will be 
  4956. displayed: 
  4957.  
  4958. Use MKMSGF as follows:
  4959.  
  4960. MKMSGF <inputfile> <outputfile> [/V]
  4961.         [/D <DBCS range or country>]
  4962.         [/P <code page>]
  4963.         [/L <language family id,sub id>]
  4964.  
  4965. where the default values are:
  4966.    code page  -  none
  4967.    DBCS range -  none
  4968. A valid DBCS range is: n10,n11,n20,n21,...,nn0,nn1
  4969. A single number is taken as a DBCS country code.
  4970.  
  4971. The valid OS/2 language/sublanguage ID values are:
  4972.  
  4973. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4974. ΓöéCode  ΓöéFamily  ΓöéSub  ΓöéLanguage               ΓöéPrincipal country Γöé
  4975. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4976. Γöé ARA  Γöé   1    Γöé  2  ΓöéArabic                 ΓöéArab Countries    Γöé
  4977. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4978. Γöé BGR  Γöé   2    Γöé  1  ΓöéBulgarian              ΓöéBulgaria          Γöé
  4979. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4980. Γöé CAT  Γöé   3    Γöé  1  ΓöéCatalan                ΓöéSpain             Γöé
  4981. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4982. Γöé CHT  Γöé   4    Γöé  1  ΓöéTraditional Chinese    ΓöéR.O.C.            Γöé
  4983. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4984. Γöé CHS  Γöé   4    Γöé  2  ΓöéSimplified Chinese     ΓöéP.R.C.            Γöé
  4985. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4986. Γöé CSY  Γöé   5    Γöé  1  ΓöéCzech                  ΓöéCzechoslovakia    Γöé
  4987. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4988. Γöé DAN  Γöé   6    Γöé  1  ΓöéDanish                 ΓöéDenmark           Γöé
  4989. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4990. Γöé DEU  Γöé   7    Γöé  1  ΓöéGerman                 ΓöéGermany           Γöé
  4991. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4992. Γöé DES  Γöé   7    Γöé  2  ΓöéSwiss German           ΓöéSwitzerland       Γöé
  4993. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4994. Γöé EEL  Γöé   8    Γöé  1  ΓöéGreek                  ΓöéGreece            Γöé
  4995. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4996. Γöé ENU  Γöé   9    Γöé  1  ΓöéUS English             ΓöéUnited States     Γöé
  4997. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4998. Γöé ENG  Γöé   9    Γöé  2  ΓöéUK English             ΓöéUnited Kingdom    Γöé
  4999. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5000. Γöé ESP  Γöé  10    Γöé  1  ΓöéCastilian Spanish      ΓöéSpain             Γöé
  5001. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5002. Γöé ESM  Γöé  10    Γöé  2  ΓöéMexican Spanish        ΓöéMexico            Γöé
  5003. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5004. Γöé FIN  Γöé  11    Γöé  1  ΓöéFinnish                ΓöéFinland           Γöé
  5005. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5006. Γöé FRA  Γöé  12    Γöé  1  ΓöéFrench                 ΓöéFrance            Γöé
  5007. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5008. Γöé FRB  Γöé  12    Γöé  2  ΓöéBelgian French         ΓöéBelgium           Γöé
  5009. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5010. Γöé FRC  Γöé  12    Γöé  3  ΓöéCanadian French        ΓöéCanada            Γöé
  5011. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5012. Γöé FRS  Γöé  12    Γöé  4  ΓöéSwiss French           ΓöéSwitzerland       Γöé
  5013. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5014. Γöé HEB  Γöé  13    Γöé  1  ΓöéHebrew                 ΓöéIsrael            Γöé
  5015. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5016. Γöé HUN  Γöé  14    Γöé  1  ΓöéHungarian              ΓöéHungary           Γöé
  5017. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5018. Γöé ISL  Γöé  15    Γöé  1  ΓöéIcelandic              ΓöéIceland           Γöé
  5019. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5020. Γöé ITA  Γöé  16    Γöé  1  ΓöéItalian                ΓöéItaly             Γöé
  5021. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5022. Γöé ITS  Γöé  16    Γöé  2  ΓöéSwiss Italian          ΓöéSwitzerland       Γöé
  5023. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5024. Γöé JPN  Γöé  17    Γöé  1  ΓöéJapanese               ΓöéJapan             Γöé
  5025. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5026. Γöé KOR  Γöé  18    Γöé  1  ΓöéKorean                 ΓöéKorea             Γöé
  5027. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5028. Γöé NLD  Γöé  19    Γöé  1  ΓöéDutch                  ΓöéNetherlands       Γöé
  5029. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5030. Γöé NLB  Γöé  19    Γöé  2  ΓöéBelgian Dutch          ΓöéBelgium           Γöé
  5031. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5032. Γöé NOR  Γöé  20    Γöé  1  ΓöéNorwegian - Bokmal     ΓöéNorway            Γöé
  5033. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5034. Γöé NON  Γöé  20    Γöé  2  ΓöéNorwegian - Nynorsk    ΓöéNorway            Γöé
  5035. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5036. Γöé PLK  Γöé  21    Γöé  1  ΓöéPolish                 ΓöéPoland            Γöé
  5037. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5038. Γöé PTB  Γöé  22    Γöé  1  ΓöéBrazilian Portuguese   ΓöéBrazil            Γöé
  5039. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5040. Γöé PTG  Γöé  22    Γöé  2  ΓöéPortuguese             ΓöéPortugal          Γöé
  5041. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5042. Γöé RMS  Γöé  23    Γöé  1  ΓöéRhaeto-Romanic         ΓöéSwitzerland       Γöé
  5043. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5044. Γöé ROM  Γöé  24    Γöé  1  ΓöéRomanian               ΓöéRomania           Γöé
  5045. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5046. Γöé RUS  Γöé  25    Γöé  1  ΓöéRussian                ΓöéU.S.S.R.          Γöé
  5047. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5048. Γöé SHL  Γöé  26    Γöé  1  ΓöéCroato-Serbian (Lat    ΓöéYugoslavia        Γöé
  5049. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5050. Γöé SHC  Γöé  26    Γöé  2  ΓöéSerbo-Croatian (Cyr    ΓöéYugoslavia        Γöé
  5051. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5052. Γöé SKY  Γöé  27    Γöé  1  ΓöéSlovakian              ΓöéCzechoslovakia    Γöé
  5053. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5054. Γöé SQI  Γöé  28    Γöé  1  ΓöéAlbanian               ΓöéAlbania           Γöé
  5055. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5056. Γöé SVE  Γöé  29    Γöé  1  ΓöéSwedish                ΓöéSweden            Γöé
  5057. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5058. Γöé THA  Γöé  30    Γöé  1  ΓöéThai                   ΓöéThailand          Γöé
  5059. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5060. Γöé TRK  Γöé  31    Γöé  1  ΓöéTurkish                ΓöéTurkey            Γöé
  5061. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5062. Γöé URD  Γöé  32    Γöé  1  ΓöéUrdu                   ΓöéPakistan          Γöé
  5063. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5064. Γöé BAH  Γöé  33    Γöé  1  ΓöéBahasa                 ΓöéIndonesia         Γöé
  5065. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5066.  
  5067.  
  5068. ΓòÉΓòÉΓòÉ 11.1.2. Input Message File ΓòÉΓòÉΓòÉ
  5069.  
  5070. The input message file is a standard ASCII file that contains three types of 
  5071. lines: 
  5072.  
  5073.    o  Comment lines 
  5074.    o  Component identifier line 
  5075.    o  Component message lines 
  5076.  
  5077.  Comment Lines 
  5078.  
  5079.  Comment lines are allowed anywhere in the input message file, except between 
  5080.  the component identifier and the first message. Comment lines must begin with 
  5081.  a semicolon (;) in the first column. 
  5082.  
  5083.  In the Input Message File Example, the comment lines are 
  5084.  
  5085.   ; This is a sample of an input
  5086.   ; message file for component DOS
  5087.   ; starting with three comment lines.
  5088.  
  5089.  Component Identifier Line 
  5090.  
  5091.  The component-identifier line contains a three-character name identifier that 
  5092.  precedes all MKMSGF message numbers. 
  5093.  
  5094.  In the example, the component identifier is DOS. 
  5095.  
  5096.  Component-Message Lines 
  5097.  
  5098.  Each component-message line consists of a message header and an ASCII text 
  5099.  message. 
  5100.  
  5101.  The message header is comprised of the following parts: 
  5102.  
  5103.    o  A three-character component identifier 
  5104.    o  A four-digit message number 
  5105.    o  A single character specifying message type (E, H, I, P, W, ?) 
  5106.    o  A colon (:) 
  5107.    o  Followed by a blank space. 
  5108.  
  5109.  The following message types are used: 
  5110.  
  5111.  Type   Meaning 
  5112.  E      Error 
  5113.  H      Help 
  5114.  I      Information 
  5115.  P      Prompt 
  5116.  W      Warning 
  5117.  ?      no message assigned to this number 
  5118.  
  5119.  The message header must begin in the first column of the line. Only one header 
  5120.  can precede the text of a message, although a message can span multiple lines. 
  5121.  
  5122.  Message numbers can start at any number, but messages must be numbered 
  5123.  sequentially.  If you do not use a message number, you must insert an empty 
  5124.  entry in its place in the text file. An empty entry consists of the message 
  5125.  number, with ? as the message type, and no text. 
  5126.  
  5127.  The character % has a special meaning when used within the text of a message: 
  5128.  
  5129.  %0 is placed at the end of a prompt (type P) to prevent DosGetMessage from 
  5130.  executing a carriage return and line feed.  This allows the user to be 
  5131.  prompted for input on the same line as the message text. 
  5132.  
  5133.  %1 - %9 are used to identify variable string insertion within the text of a 
  5134.  message.  These variables correspond to the Itable and IvCount parameters in 
  5135.  the DosGetMessage call. 
  5136.  
  5137.  Component-Message Example 
  5138.  
  5139.  For example, DOS0100E: is DOS error message 100. For additional examples, see 
  5140.  the Input Message File Example. 
  5141.  
  5142.  
  5143. ΓòÉΓòÉΓòÉ 11.1.3. Output File ΓòÉΓòÉΓòÉ
  5144.  
  5145. The output file contains the indexed message file that DosGetMessage will use. 
  5146. The output-file name can be any valid OS/2 file name, optionally preceded by a 
  5147. drive letter and a path.  The output file cannot have the same name as the 
  5148. input file. 
  5149.  
  5150. To differentiate between the two files, the following convention is 
  5151. recommended, using the same file name. 
  5152.  
  5153.    o  The infile file should have a .TXT extension. 
  5154.    o  The outfile file should have a .MSG extension. 
  5155.  
  5156.  Help-message file names begin with the component identifier, followed by 
  5157.  H.MSG. For example, the help file associated with the component identifier DOS 
  5158.  would be DOSH.MSG. 
  5159.  
  5160.  
  5161. ΓòÉΓòÉΓòÉ 11.2. Options ΓòÉΓòÉΓòÉ
  5162.  
  5163. Text-based messages in different code pages can be created using MKMSGF to 
  5164. display errors, help information, prompt, or provide general information to the 
  5165. application user. 
  5166.  
  5167. MKMSGF uses the following parameter formats to build message files: 
  5168.  
  5169.       MKMSGF infile outfile /Pcodepage 
  5170.  
  5171.       MKMSGF infile outfile /Ddbcsrange or country id 
  5172.  
  5173.       MKMSGF infile outfile /LlangID,VerId 
  5174.  
  5175.       MKMSGF infile outfile /V 
  5176.  
  5177.       MKMSGF infile outfile /? 
  5178.  
  5179.       MKMSGF @controlfile 
  5180.  
  5181.    o  Infile is the ASCII-text source file. 
  5182.  
  5183.       Example: 
  5184.  
  5185.             MSG
  5186.             MSG0001I: (mm%4dd%4yy) %2%4%1%4%3
  5187.             MSG0002I: (dd%4mm%4yy) %1%4%2%4%3
  5188.             MSG0003I: Current date is: %0
  5189.  
  5190.       %0 is a special argument that displays a prompt for user input. 
  5191.  
  5192.       %1 - %9 are the arguments the user can use to insert text in a message. 
  5193.  
  5194.    o  Outfile is the binary output message file. 
  5195.  
  5196.    o  @controlfile is the message definition file. 
  5197.  
  5198.  Options 
  5199.  
  5200.  /P        Code-page ID for the input message file. See /P Option 
  5201.  
  5202.  /D        DbcsRange or country ID for the input message file. See /D Option 
  5203.  
  5204.  /L        Language family ID (one word) and language version ID (one word). 
  5205.            See /L Option 
  5206.  
  5207.  /V        Verbose display of message file control variables as the message 
  5208.            file is being created. See /Verbose Option Output Example 
  5209.  
  5210.  /?        Help display of command syntax for MKMSGF. 
  5211.  
  5212.  Note:  Any combination of /P, /D, /L, and /V switches can be used for either 
  5213.         the command line or @controlfile execution method. 
  5214.  
  5215.  The / switch prefix and the - prefix can be used interchangeably when defining 
  5216.  switches to MKMSGF. 
  5217.  
  5218.  
  5219. ΓòÉΓòÉΓòÉ 11.2.1. /Verbose Option Output Example ΓòÉΓòÉΓòÉ
  5220.  
  5221. Following is a sample of MKMSGF output, using the Verbose option (/V). This 
  5222. output was produced using the following command: 
  5223.  
  5224. mkmsgf myapp.txt myapp.msg /v
  5225.  
  5226.   strIn     = myapp.txt
  5227.   strOut    = myapp.msg
  5228.   StrIncDir = (null)
  5229.   CodePages = 437
  5230.   Language family id = 0 and sub id = 0
  5231.   Language family id and sub id = unspecified
  5232.   flags     = none
  5233.   CP_type   = SBCS
  5234. "myapp.txt": length = 382 bytes.
  5235. 29 messages scanned.  Writing output file...
  5236. Size of table entry: word
  5237.  
  5238.  
  5239. ΓòÉΓòÉΓòÉ 11.2.2. /P Option ΓòÉΓòÉΓòÉ
  5240.  
  5241. The Code-page option (/P) specifies the code-page ID for that input message 
  5242. file. 
  5243.  
  5244. Up to 16 /P combinations can be saved with the message file. 
  5245.  
  5246. /P cannot be used to identify DBCS data. 
  5247.  
  5248.  
  5249. ΓòÉΓòÉΓòÉ 11.2.3. /D Option ΓòÉΓòÉΓòÉ
  5250.  
  5251. The DBCS option (/D) specifies the DBCS Range or country ID for that input 
  5252. message file. 
  5253.  
  5254. Valid DBCS country ID will cause the initialization of valid DBCS ranges to be 
  5255. set up for this file. 
  5256.  
  5257.  
  5258. ΓòÉΓòÉΓòÉ 11.2.4. /L Option ΓòÉΓòÉΓòÉ
  5259.  
  5260. The Language option (/L) specifies the language family ID (one word) and 
  5261. language version ID (one word). 
  5262.  
  5263. Valid combination of language family and language version will be set for this 
  5264. file. 
  5265.  
  5266. A valid language family with invalid or undefined language version id will 
  5267. cause a default value of 1 to be set for language version. 
  5268.  
  5269.  
  5270. ΓòÉΓòÉΓòÉ 11.3. Control Files ΓòÉΓòÉΓòÉ
  5271.  
  5272. The control file (@controlfile) is used to create multiple-code-page message 
  5273. files. The at sign (@) is not part of the file name, but rather, a delimiter 
  5274. required before a control-file name. 
  5275.  
  5276. The control file has the following format: 
  5277.  
  5278. Example: 
  5279.  
  5280. root.in root.out /Pcodepage /Ddbcsrang/ctryid /LlangID,VerId
  5281. sub.001 sub1.out /Pcodepage /Ddbcsrang/ctryid /LlangID,VerId
  5282.                  .
  5283.                  .
  5284. sub.00n subn.out /Pcodepage /Ddbcsrang/ctryid /LlangID,VerId
  5285.  
  5286. The help option (/?) is invalid due to the purpose of the definition file. 
  5287.  
  5288. Note:  Any combination of /P /D /L and /V switches can be used for either the 
  5289.        command line or msg_definition_file execution method. 
  5290.  
  5291.  
  5292. ΓòÉΓòÉΓòÉ 11.3.1. Input Message File Example ΓòÉΓòÉΓòÉ
  5293.  
  5294. Following is an example of an input message file: 
  5295.  
  5296. ; This is a sample of an input
  5297. ; message file for component MAB
  5298. ; starting with three comment lines.
  5299. MAB
  5300. MAB0100E: File not found
  5301. MAB0101?:
  5302. MAB0102H: Usage: del [drive:][path] filename
  5303. MAB0103?:
  5304. MAB0104I: %1 files copied
  5305. MAB0105W: Warning! All data will be destroyed!
  5306. MAB0106?:
  5307. MAB0107?:
  5308. MAB0108P: Do you wish to apply these patches (Y or N)? %0
  5309. MAB0109E: Divide overflow
  5310.  
  5311.  
  5312. ΓòÉΓòÉΓòÉ 12. MAP File to SYM File Creator (MAPSYM) ΓòÉΓòÉΓòÉ
  5313.  
  5314. The MAPSYM program creates .SYM files from .MAP files.  .SYM files are used by 
  5315. the kernel debugger for symbolic debugging. 
  5316.  
  5317. Note:  You must run MAPSYM from the directory in which the file to be converted 
  5318. is located. 
  5319.  
  5320. To create a .SYM file, follow these steps: 
  5321.  
  5322.    1. Make sure you are in the correct directory. 
  5323.  
  5324.    2. At the prompt type the following: 
  5325.  
  5326.             mapsym filename
  5327.  
  5328.       Note that the .MAP extension is not required. 
  5329.  
  5330.  
  5331. ΓòÉΓòÉΓòÉ 12.1. Help ΓòÉΓòÉΓòÉ
  5332.  
  5333. To display MAPSYM help, type MAPSYM at the prompt, with no arguments. The 
  5334. appropriate copyright statement appears, along with the following: 
  5335.  
  5336. usage: mapsym [-aln] mapfile
  5337.  
  5338.  
  5339. ΓòÉΓòÉΓòÉ 12.2. Options ΓòÉΓòÉΓòÉ
  5340.  
  5341. The following options may be used with MAPSYM: 
  5342.  
  5343.  /A   Omits Alphabetical sorting of symbols. 
  5344.  
  5345.  /N   Includes source code line Numbers in *.SYM file. 
  5346.  
  5347.  /L   Produces verbose Listing. 
  5348.  
  5349.  
  5350. ΓòÉΓòÉΓòÉ 13. View and Set Program Type For Executable File (MARKEXE) ΓòÉΓòÉΓòÉ
  5351.  
  5352. The MARKEXE program enables you to view and set the program type for an 
  5353. executable file. The program type identifies the OS/2 sessions in which a 
  5354. program can run. 
  5355.  
  5356. Use MARKEXE with the OS/2 Linear Executable Linker (LINK386) or the OS/2 
  5357. Segmented Executable Linker (LINK) to change or set the program type of 
  5358. programs you have created. 
  5359.  
  5360. You can set DLL initialization and termination and also enable long file name 
  5361. support. When using LINK386, you can set DLL initialization and termination; 
  5362. long file name support is already set. When using LINK, you can set DLL 
  5363. initialization and long file name support. 
  5364.  
  5365.  
  5366. ΓòÉΓòÉΓòÉ 13.1. Command-Line Syntax ΓòÉΓòÉΓòÉ
  5367.  
  5368. MARKEXE uses the following syntax: 
  5369.  
  5370. MARKEXE [/?] [FORCE] [NO] [options] filename...
  5371.  
  5372. Filename is a file name or a list of file names. Global file-name characters 
  5373. (*.EXE) also can be used. For descriptions of the above terms, see Syntax 
  5374. Definitions. If no option is given, DISPLAY is assumed. 
  5375.  
  5376. Typing MARKEXE /? at the command line displays the appropriate copyright 
  5377. statement along with a list of options. 
  5378.  
  5379.   DISPLAY         - display status of flags
  5380.   DLLINIT         - per-process initialization
  5381.   DLLTERM         - per-process termination
  5382.   WINDOWAPI       - window api (PM application)
  5383.   WINDOWCOMPAT    - window compatible application
  5384.   NOTWINDOWCOMPAT - not window compatible application
  5385.   UNSPECIFIED     - unspecified application type
  5386.   LFNS            - long file name support
  5387.  
  5388.  
  5389. ΓòÉΓòÉΓòÉ 13.1.1. Syntax Definitions ΓòÉΓòÉΓòÉ
  5390.  
  5391. MARKEXE has the following keywords, options, and program types. You can also 
  5392. specify any number of files to be viewed or marked. 
  5393.  
  5394. KEYWORDS 
  5395.  
  5396.  FORCE               Marks the executable file with OS/2 as the target 
  5397.                      operating system even though the file was marked for 
  5398.                      another operating system. Using FORCE might produce 
  5399.                      internally inconsistent executable files. 
  5400.  
  5401.  NO                  Sets the command to the opposite condition. This keyword 
  5402.                      does not apply to the DISPLAY, UNSPECIFIED, or WINDOWAPI 
  5403.                      options. 
  5404.  
  5405.  OPTIONS 
  5406.  
  5407.  DISPLAY             Displays the application type in a message; does not make 
  5408.                      any changes. 
  5409.  
  5410.  DLLINIT             Sets per process initialization for the dynamic link 
  5411.                      library. (Use with LINK386 only.) 
  5412.  
  5413.  DLLTERM             Sets per process termination for the dynamic link library. 
  5414.                      (Use with LINK only.) 
  5415.  
  5416.  LFNS                Enables support of long file names.  (Use with LINK only.) 
  5417.  
  5418.  PROGRAM TYPES 
  5419.  
  5420.  MARKEXE does not modify the file if the executable file's program type is the 
  5421.  same as the requested type.  It displays a message instead. 
  5422.  
  5423.  WINDOWAPI           The application is a Presentation Manager application and 
  5424.                      can run in the Presentation Manager session only. 
  5425.  
  5426.  WINDOWCOMPAT        The application can run in a Presentation Manager window 
  5427.                      or in an full-screen session. 
  5428.  
  5429.  NOTWINDOWCOMPAT     The application must run in an OS/2 full-screen session. 
  5430.  
  5431.  UNSPECIFIED         The application type is not known. By default, the OS/2 
  5432.                      operating system will force the program to run in a 
  5433.                      full-screen session. 
  5434.  
  5435.  Note:  Specifying an incorrect program type might cause undesirable results 
  5436.         when you try to run that program. For example, do not change a 
  5437.         WINDOWCOMPAT program to WINDOWAPI.
  5438.  
  5439.  
  5440. ΓòÉΓòÉΓòÉ 13.1.2. Viewing Program Type ΓòÉΓòÉΓòÉ
  5441.  
  5442. To display the program type of an executable file without changing the file, 
  5443. specify only a file name, omitting an option. 
  5444.  
  5445.    MARKEXE filename.exe
  5446.  
  5447. Example 
  5448.  
  5449. To view the program type of MYPROG.EXE, type the following: 
  5450.  
  5451.    MARKEXE myprog.exe
  5452.  
  5453. MARKEXE displays the type in a message that looks like this: 
  5454.  
  5455.    myprog.exe: OS/2 1.x, WINDOWCOMPAT, LFNS
  5456.  
  5457.  
  5458. ΓòÉΓòÉΓòÉ 13.1.3. Setting Program Type ΓòÉΓòÉΓòÉ
  5459.  
  5460. To set the program type of an executable file, specify one of the program 
  5461. types. More than one executable file can be set to the same program type on a 
  5462. single command line. 
  5463.  
  5464.    MARKEXE type filename.exe another.exe
  5465.  
  5466. Examples 
  5467.  
  5468. To set WINDOWCOMPAT as the program type of MYPROG.EXE, type: 
  5469.  
  5470.    MARKEXE WINDOWCOMPAT myprog.exe
  5471.  
  5472. To set WINDOWAPI as the program type of several executable files, type: 
  5473.  
  5474.    MARKEXE WINDOWAPI marion.exe alex.exe
  5475.  
  5476.  
  5477. ΓòÉΓòÉΓòÉ 14. Message Segment Binder (MSGBIND) ΓòÉΓòÉΓòÉ
  5478.  
  5479. The MSGBIND program binds a message segment to an executable program. It does 
  5480. this by reading an input file that specifies the executable files to modify. 
  5481. For each executable file, MSGBIND specifies which message files to scan, and 
  5482. for each message file, it specifies which messages to include in the executable 
  5483. file. Although the resulting executable file will be larger, access to messages 
  5484. will be faster. 
  5485.  
  5486. In the OS/2 operating system, message segment/objects are packed with other 
  5487. application code. If the size of the code segment/object and the bound messages 
  5488. exceeds 64KB, the following statement in the program definition file (.DEF) 
  5489. isolates the application code from the message statement/object: 
  5490.  
  5491.  16 Bit Applications 
  5492.       SEGMENT 
  5493.  
  5494.  32 Bit Applications 
  5495.       SEGMENT '_MSGSEG32' CLASS 'CODE' 
  5496.  
  5497.  
  5498. ΓòÉΓòÉΓòÉ 14.1. Syntax ΓòÉΓòÉΓòÉ
  5499.  
  5500. The MSGBIND command line has the following form: 
  5501.  
  5502. MSGBIND infile
  5503.  
  5504. The infile field specifies the input file that identifies the executable files, 
  5505. output message files, and message numbers that will be bound.  The input-file 
  5506. name can be any valid OS/2 file name and can include an optional file name 
  5507. extension. 
  5508.  
  5509.  
  5510. ΓòÉΓòÉΓòÉ 14.1.1. Input File ΓòÉΓòÉΓòÉ
  5511.  
  5512. The input file contains the following three types of lines: 
  5513.  
  5514.    o  > Executable file 
  5515.  
  5516.    o  < Message file 
  5517.  
  5518.    o  Message numbers. 
  5519.  
  5520.  Executable file 
  5521.  
  5522.  The File in which messages are to be bound is preceded by a greater-than 
  5523.  symbol (>). The name of the file can be any valid OS/2 file name. 
  5524.  
  5525.  Two or more different executable files can be modified by the specifications 
  5526.  found in one input file. MSGBIND continues to use this file until it 
  5527.  encounters another greater-than symbol. 
  5528.  
  5529.  Message file 
  5530.  
  5531.  The message file to be read from is preceded by a less-than sign (<). You 
  5532.  create this file by using the MKMSGF program. The name can be any valid OS/2 
  5533.  file name. All message numbers that follow it are located in the specified 
  5534.  message file and are copied to the current output executable file. MSGBIND 
  5535.  reads the message-number list until it encounters one of the following: the 
  5536.  end of the input file, a new output specification, or a new input message 
  5537.  file. 
  5538.  
  5539.  Message Numbers 
  5540.  
  5541.  The messages in the message file are listed below the message-file name.  Only 
  5542.  those message numbers that you specify will be added. You can also specify an 
  5543.  asterisk (*) to indicate that all messages within the message file will be 
  5544.  added. Message numbers must consist of a three-letter component identifier 
  5545.  followed by a four-digit message number. 
  5546.  
  5547.  See Input Message File for a more detailed description of message numbers. 
  5548.  
  5549.  
  5550. ΓòÉΓòÉΓòÉ 14.1.2. Multiple Code-Page Message Files ΓòÉΓòÉΓòÉ
  5551.  
  5552. Multiple code-page message files can also be bound to an executable file, which 
  5553. enables a user to bind to an application messages for different countries. 
  5554.  
  5555. The following example shows how three messages in two different languages can 
  5556. be bound to an executable file: 
  5557.  
  5558. MSGBIND infile
  5559.  
  5560. where infile consists of the following: 
  5561.  
  5562.  >PROG1.EXE
  5563.  <TEXTUS.MSG
  5564.  MSG0001
  5565.  MSG0002
  5566.  MSG0003
  5567.  <TEXTIT.MSG
  5568.  MSG0001
  5569.  MSG0002
  5570.  MSG0003
  5571.  
  5572. where: 
  5573.  
  5574.    o  PROG1.EXE is the executable file to be modified. 
  5575.  
  5576.    o  TEXTUS.MSG is the file, created using MKMSGF, which contains messages in 
  5577.       US English. 
  5578.  
  5579.    o  TEXTIT.MSG is the file, created using MKMSGF, which contains the same 
  5580.       messages translated into Italian. 
  5581.  
  5582.    o  MSGnnnn defines the messages to be bound to the application: 
  5583.  
  5584.            MSG       Message component ID 
  5585.            0001      Message number 
  5586.  
  5587.  
  5588. ΓòÉΓòÉΓòÉ 14.1.3. Help ΓòÉΓòÉΓòÉ
  5589.  
  5590. To display MSGBIND help, type MSGBIND at the prompt, with no parameters. The 
  5591. following will be displayed: 
  5592.  
  5593. usage: MSGBIND scriptfile
  5594.  
  5595.  
  5596. ΓòÉΓòÉΓòÉ 14.2. How Message Retrieval Works ΓòÉΓòÉΓòÉ
  5597.  
  5598. When an application requests the message retriever for text associated with a 
  5599. message number, a test is made to determine if there is a bound message segment 
  5600. with this executable file.  If true, each bound message segment is searched for 
  5601. a match with the current session's code-page number. 
  5602.  
  5603. If a match is made, then the message number is searched for.  If it is found, 
  5604. the message will be returned to the caller. Otherwise, the search of remaining 
  5605. bound message segments will continue. 
  5606.  
  5607. If no match results from a search of all message segments, the message file on 
  5608. the disk is searched. DosGetMessage will access the message file under any of 
  5609. the following conditions: 
  5610.  
  5611.    o  The message file is in the current directory. 
  5612.    o  The message file is in the path specified in the DPATH environment 
  5613.       variable (protect mode). 
  5614.    o  The message file is in the path specified in the APPEND environment 
  5615.       variable (real mode). 
  5616.    o  The fully-qualified file name is specified in DosGetMessage. 
  5617.  
  5618.  
  5619. ΓòÉΓòÉΓòÉ 14.2.1. Sample Input File ΓòÉΓòÉΓòÉ
  5620.  
  5621. >c:\cmd.exe
  5622. <c:\os20\dosutil.msg
  5623. DOS0100
  5624. DOS0123
  5625. DOS0245
  5626. >c:\format.exe
  5627. <c:\os20\dosutil.msg
  5628. DOS0001
  5629. DOS0006
  5630. <c:\format.msg
  5631. FMT0001
  5632. FMT0002
  5633. <c:\myown.msg
  5634. *
  5635.  
  5636. The first line of a MSGBIND input file specifies that the executable file to 
  5637. modify is CMD.EXE.  The messages DOS0100, DOS0123, and DOS0245 are read from 
  5638. the file DOSUTIL.MSG and added to the CMD.EXE file.  The MSGBIND program then 
  5639. encounters an executable-file option for the FORMAT.EXE file.  The messages 
  5640. DOS0001 and DOS0006 are read from DOSUTIL.MSG and added to FORMAT.EXE.  Next, 
  5641. the messages FMT0001 and FMT0002 are read from the file FORMAT.MSG and added to 
  5642. FORMAT.EXE.  Finally, because an asterisk is specified, all the messages are 
  5643. read from the file MYOWN.MSG and added to FORMAT.EXE. 
  5644.  
  5645. The files DOSUTIL.MSG and FORMAT.MSG in this example are two 
  5646. output-message-file names from the MKMSGF program. 
  5647.  
  5648.  
  5649. ΓòÉΓòÉΓòÉ 15. Object Utility Description ΓòÉΓòÉΓòÉ
  5650.  
  5651. Object Utility/2 provides a facility for registering Workplace Shell classes, 
  5652. creating instances of Workplace Shell classes, and modifying instances of 
  5653. Workplace Shell classes. 
  5654.  
  5655. The following attributes can be set or modified for instances of Workplace 
  5656. Shell objects: 
  5657.  
  5658.    o  Template 
  5659.  
  5660.    o  Copy 
  5661.  
  5662.    o  Delete 
  5663.  
  5664.    o  Rename 
  5665.  
  5666.    o  Print 
  5667.  
  5668.    o  Link 
  5669.  
  5670.    o  Move 
  5671.  
  5672.    o  Drag 
  5673.  
  5674.  The attributes modify the behavior of the objects to allow or not allow the 
  5675.  above actions. For example, the Template attribute allows you to create a 
  5676.  template. Some objects do not allow specific behaviors even if the attribute 
  5677.  is selected. 
  5678.  
  5679.  A Workplace Shell Class must be registered with the Workplace Shell before it 
  5680.  will be recognized by Object Utility/2. After the object class is registered, 
  5681.  an instance of that class can be created. The Object Utility/2 automates these 
  5682.  procedures of object class registration and instantiation.  This tool can 
  5683.  create an instance of an object from a class that has already been 
  5684.  instantiated or can modify an existing instance. 
  5685.  
  5686.  Registration of a class is performed by opening the main view of Object 
  5687.  Utility/2.  The class name and DLL name must be provided.  The class is not 
  5688.  registered if it has been registered previously. 
  5689.  
  5690.  To modify an existing instance, the icon representing the class is dragged to 
  5691.  and dropped on top of Object Utility/2. You can enter the object ID and class 
  5692.  name after opening the main view. 
  5693.  
  5694.  After the item to be installed is dropped, a dialog box is displayed to obtain 
  5695.  registration and instantiation information. 
  5696.  
  5697.  To destroy an object created by this tool, the object can be dragged and 
  5698.  dropped onto the shredder object on the Workplace Shell desktop (if the no 
  5699.  drag and no delete options are not selected and the object allows deletion). A 
  5700.  mechanism to deregister an object class is not provided with this tool. 
  5701.  
  5702.  
  5703. ΓòÉΓòÉΓòÉ 15.1. Class Name ΓòÉΓòÉΓòÉ
  5704.  
  5705. Class name is a list of all the registered classes that have DLLs available on 
  5706. your system.  OS/2 allows classes to be registered without the DLLs available, 
  5707. but Object Utility/2 does not.  You can select a class from the list or enter 
  5708. one manually.  This field is required when registering a new class, modifying 
  5709. an existing instance that was not dropped on Object Utility/2, or creating a 
  5710. new instance. 
  5711.  
  5712.  
  5713. ΓòÉΓòÉΓòÉ 15.2. DLL Name ΓòÉΓòÉΓòÉ
  5714.  
  5715. The DLL name must be a fully qualified path and file name if the DLL is not 
  5716. located in a DLL search path. This field is required if you are registering a 
  5717. class. 
  5718.  
  5719.  
  5720. ΓòÉΓòÉΓòÉ 15.3. Object ID ΓòÉΓòÉΓòÉ
  5721.  
  5722. The Object ID must be enclosed in angle brackets(<>). This field is required 
  5723. when you modify an existing object that was not dropped on Object Utility/2. 
  5724. You are warned if you try to create an instance that is not a template, without 
  5725. an Object ID.  You may create the new instance without an object ID. The Object 
  5726. ID must be unique, if specified, when creating an instance. Templates cannot 
  5727. have an object ID.  Instances with an object ID cannot be made into a template. 
  5728.  
  5729.  
  5730. ΓòÉΓòÉΓòÉ 15.4. Title Field ΓòÉΓòÉΓòÉ
  5731.  
  5732. The Title field is required when creating a new object. You can alter the title 
  5733. of an existing object by providing a different title in this field. 
  5734.  
  5735.  
  5736. ΓòÉΓòÉΓòÉ 15.5. Location Field ΓòÉΓòÉΓòÉ
  5737.  
  5738. You can select an existing location from the location list or enter a location 
  5739. manually. The location must be an object ID that represents a folder (enclosed 
  5740. in angle brackets) or a fully qualified path name. 
  5741.  
  5742.  
  5743. ΓòÉΓòÉΓòÉ 15.6. Options ΓòÉΓòÉΓòÉ
  5744.  
  5745.  Create Instance Creates an instance of the class. 
  5746.  
  5747.  Template  Creates a template of the class in the Templates folder. 
  5748.  
  5749.  No Copy   Removes Copy from the pop-up menu. 
  5750.  
  5751.  No delete Removes Delete from the pop-up menu. 
  5752.  
  5753.  No Rename Removes Rename from the pop-up menu. 
  5754.  
  5755.  No Print  Removes Print from the pop-up menu. 
  5756.  
  5757.  No Link   Removes Link from the pop-up menu. 
  5758.  
  5759.  No Move   Removes Move from the pop-up menu. 
  5760.  
  5761.  No drag   Prevents dragging of the object. 
  5762.  
  5763.  
  5764. ΓòÉΓòÉΓòÉ 16. Program Maintenance Utility (NMAKE) ΓòÉΓòÉΓòÉ
  5765.  
  5766. The Program Maintenance Utility (NMAKE) automates the process of updating 
  5767. project files.  NMAKE compares the modification dates for one set of files (the 
  5768. target files) with those of another set of files (the dependent files).  If any 
  5769. dependent files have changed more recently than the target files, NMAKE 
  5770. executes a series of commands to bring the targets up-to-date. 
  5771.  
  5772.  
  5773. ΓòÉΓòÉΓòÉ 16.1. Why Use NMAKE? ΓòÉΓòÉΓòÉ
  5774.  
  5775. The most common use of NMAKE is to automate the process of updating a project 
  5776. after you make a change to a source file.  Large projects tend to have many 
  5777. source files.  Often, only a few of your source files need to be compiled when 
  5778. you make a change.  You set up a special text file called a "description" file 
  5779. (or "makefile") that tells NMAKE: 
  5780.  
  5781.    o  Which files depend on others 
  5782.    o  Which commands, such as compile and link commands, need to be carried out 
  5783.       to bring your program up-to-date 
  5784.  
  5785.  This use of NMAKE is only one example of its power.  By building suitable 
  5786.  description files, you can use NMAKE to 
  5787.  
  5788.    o  Make backups 
  5789.    o  Configure data files 
  5790.    o  Run programs when data files are modified 
  5791.  
  5792.  
  5793. ΓòÉΓòÉΓòÉ 16.2. Running NMAKE ΓòÉΓòÉΓòÉ
  5794.  
  5795. Run NMAKE by typing NMAKE on the operating-system command line.  Supply input 
  5796. to NMAKE by either of two methods: 
  5797.  
  5798.    o  Enter the input directly on the command line. 
  5799.    o  Put your input into a command file (a text file, also called a response 
  5800.       file) and enter the file name on the command line. 
  5801.  
  5802.  Press CTRL+C at any time during an NMAKE run to return to the operating 
  5803.  system. 
  5804.  
  5805.  Note:  Under the OS/2 operating system, do not use the ampersand character (&) 
  5806.         to combine the NMAKE command with the CD, CHDIR, or SET command. 
  5807.  
  5808.  
  5809. ΓòÉΓòÉΓòÉ 16.2.1. Using the Command Line ΓòÉΓòÉΓòÉ
  5810.  
  5811. When using NMAKE at the command line, keep the following in mind: 
  5812.  
  5813.    o  All fields are optional. 
  5814.    o  NMAKE always looks first in the current directory for a description file 
  5815.       called MAKEFILE. If MAKEFILE does not exist, NMAKE uses the <filename> 
  5816.       given with the /F (specify description file) option. 
  5817.  
  5818.  
  5819. ΓòÉΓòÉΓòÉ 16.2.1.1. Command-Line Syntax ΓòÉΓòÉΓòÉ
  5820.  
  5821. NMAKE [options] [macrodefinitions] [targets] [/F filname]
  5822.  
  5823.  <options> 
  5824.       Specifies options that modify NMAKE's actions. 
  5825.  
  5826.  <macrodefinitions> 
  5827.       Lists macro definitions for NMAKE to use.  Macro definitions that contain 
  5828.       spaces must be enclosed by double quotation marks. 
  5829.  
  5830.  <targets> 
  5831.       Specifies the names of one or more target files to build. If you do not 
  5832.       list any targets, NMAKE builds the first target in the description file. 
  5833.  
  5834.  /F <filename> 
  5835.       Gives the name of the description file where you specify file 
  5836.       dependencies and which commands to execute when a file is out-of-date. 
  5837.  
  5838.  The following example: 
  5839.  
  5840.   NMAKE /S "program = flash" SORT.EXE SEARCH.EXE
  5841.  
  5842.    o  Invokes NMAKE with the /S option 
  5843.    o  Defines a macro, assigning the string "flash" to the macro "program" 
  5844.    o  Specifies two targets: SORT.EXE and SEARCH.EXE 
  5845.  
  5846.  By default, NMAKE uses the file named MAKEFILE as the description file. 
  5847.  
  5848.  
  5849. ΓòÉΓòÉΓòÉ 16.2.1.2. Command-Line Help ΓòÉΓòÉΓòÉ
  5850.  
  5851. To display NMAKE help, type NMAKE /? at the prompt.  The appropriate copyright 
  5852. statement appears, along with the following: 
  5853.  
  5854. Usage:
  5855.     NMAKE @commandfile
  5856.     NMAKE /help
  5857.     NMAKE [/nologo] [/acdeinpqrst?] [/f makefile] [/x stderrfile] 
  5858.  
  5859.     [macrodefs][targets]
  5860.  
  5861. Where the options stand for
  5862.  /a    force All targets to be built
  5863.  /c    Cryptic mode; suppress sign-on banner & warning messages
  5864.  /d    Display modification dates
  5865.  /e    Environment variables override macros in the makefile
  5866.  /i    Ignore exit codes of commands invoked
  5867.  /n    No execute mode; display commands only
  5868.  /p    Print macro definitions & target descriptions
  5869.  /q    Query if target is up to date; for use in batch files
  5870.  /r    inference Rules from 'tools.ini' to be ignored
  5871.  /s    Silent execution of commands
  5872.  /t    Touch targets with current date & time
  5873.  /?    Help message
  5874.  /help  Help message
  5875.  /nologo do not display sign-on banner
  5876.  
  5877.  
  5878. ΓòÉΓòÉΓòÉ 16.2.2. Using NMAKE Command Files ΓòÉΓòÉΓòÉ
  5879.  
  5880. A command file is a response file used to extend command-line input to NMAKE. 
  5881.  
  5882. You can split input to NMAKE between the command line and a command file. Use 
  5883. the name of a command file (preceded by @) where you normally type the input 
  5884. information on the command line. 
  5885.  
  5886. Why Use a Command File? 
  5887.  
  5888. Use a command file for 
  5889.  
  5890.    o  Complex and long commands you type frequently 
  5891.    o  Strings of command-line arguments, such as macro definitions, that exceed 
  5892.       the limit for command-line length 
  5893.  
  5894.       Note:  A command file is not the same as a description file. For 
  5895.              information about description files, see Description Files 
  5896.  
  5897.  
  5898.  Command File Syntax 
  5899.  
  5900.  To provide input to NMAKE with a command file, type 
  5901.  
  5902.   NMAKE @commandfile
  5903.  
  5904.  In the <commandfile> field, enter the name of a file containing the same 
  5905.  information as is normally entered on the command line. 
  5906.  
  5907.  NMAKE treats line breaks that occur between arguments as spaces. Macro 
  5908.  definitions can span multiple lines if you end each line except the last with 
  5909.  a backslash (\).  Macro definitions that contain spaces must be enclosed by 
  5910.  quotation marks, just as if they were entered directly on the command line. 
  5911.  
  5912.  Example 
  5913.  
  5914.  The following is a command file called UPDATE: 
  5915.  
  5916.   /S "program \
  5917.   = flash" SORT.EXE SEARCH.EXE
  5918.  
  5919.  You can use this command file by typing the following command: 
  5920.  
  5921.   NMAKE @UPDATE
  5922.  
  5923.  This runs NMAKE using: 
  5924.  
  5925.    o  The /S option 
  5926.    o  The macro definition "program = flash" 
  5927.    o  The targets specified as SORT.EXE and SEARCH.EXE 
  5928.    o  The description file MAKEFILE by default 
  5929.  
  5930.  Note that the backslash allows the macro definition to span two lines. 
  5931.  
  5932.  
  5933. ΓòÉΓòÉΓòÉ 16.3. Options ΓòÉΓòÉΓòÉ
  5934.  
  5935. The following describes the options you can use with NMAKE. 
  5936.  
  5937. Keep the following in mind when using options: 
  5938.  
  5939.    o  Option characters are not case sensitive; /I and /i are equivalent. 
  5940.    o  You can use either a slash or dash before the option characters; -a and 
  5941.       /a are equivalent. 
  5942.  
  5943.  
  5944. ΓòÉΓòÉΓòÉ 16.3.1. Produce Error File (/X) ΓòÉΓòÉΓòÉ
  5945.  
  5946. Syntax: /X stderrfile 
  5947.  
  5948. This option produces a standard error file. 
  5949.  
  5950.  
  5951. ΓòÉΓòÉΓòÉ 16.3.2. Build All Targets (/A) ΓòÉΓòÉΓòÉ
  5952.  
  5953. Syntax: /A 
  5954.  
  5955. This option builds all specified targets even if they are not out-of-date with 
  5956. respect to their dependent files. 
  5957.  
  5958. See Description Files. 
  5959.  
  5960.  
  5961. ΓòÉΓòÉΓòÉ 16.3.3. Suppress Messages (/C) ΓòÉΓòÉΓòÉ
  5962.  
  5963. Syntax: /C 
  5964.  
  5965. This option suppresses display of the NMAKE sign-on banner, nonfatal error 
  5966. messages, and warning messages.  To suppress the sign-on banner without 
  5967. suppressing other messages, use the /NOLOGO option. 
  5968.  
  5969.  
  5970. ΓòÉΓòÉΓòÉ 16.3.4. Display Modification Dates (/D) ΓòÉΓòÉΓòÉ
  5971.  
  5972. Syntax: /D 
  5973.  
  5974. This option displays the modification date of each file when the dates of 
  5975. target and dependent files are checked. 
  5976.  
  5977. See Description Files. 
  5978.  
  5979.  
  5980. ΓòÉΓòÉΓòÉ 16.3.5. Override Environment Variables (/E) ΓòÉΓòÉΓòÉ
  5981.  
  5982. Syntax: /E 
  5983.  
  5984. This option disables inherited macro redefinition. 
  5985.  
  5986. NMAKE inherits all current environment variables as macros, which can be 
  5987. redefined in a description file. The /E option disables any redefinition - the 
  5988. inherited macro always has the value of the environment variable. 
  5989.  
  5990.  
  5991. ΓòÉΓòÉΓòÉ 16.3.6. Specify Description File (/F) ΓòÉΓòÉΓòÉ
  5992.  
  5993. Syntax: /F filename 
  5994.  
  5995. This option specifies <filename> as the name of the description file to use. 
  5996. If a dash (-) is entered instead of a file name, NMAKE reads a description file 
  5997. from the standard input device, typically the keyboard. 
  5998.  
  5999. If a filename is not specified, it defaults to MAKEFILE. 
  6000.  
  6001.  
  6002. ΓòÉΓòÉΓòÉ 16.3.7. Display Help (/HELP or /?) ΓòÉΓòÉΓòÉ
  6003.  
  6004. Syntax:   /HELP    OR   /? 
  6005.  
  6006. This option displays a brief summary of NMAKE syntax. 
  6007.  
  6008.  
  6009. ΓòÉΓòÉΓòÉ 16.3.8. Ignore Exit Codes (/I) ΓòÉΓòÉΓòÉ
  6010.  
  6011. Syntax: /I 
  6012.  
  6013. This option ignores exit codes (also called error level or return codes) 
  6014. returned by programs such as compilers or linkers called by NMAKE.  If this 
  6015. option is not specified, NMAKE ends when any program returns a nonzero exit 
  6016. code. 
  6017.  
  6018.  
  6019. ΓòÉΓòÉΓòÉ 16.3.9. Display Commands (/N) ΓòÉΓòÉΓòÉ
  6020.  
  6021. Syntax: /N 
  6022.  
  6023. This option causes NMAKE commands to be displayed but not executed.  Use the /N 
  6024. option to: 
  6025.  
  6026.    o  Check which targets are out-of-date with respect to their dependents 
  6027.  
  6028.    o  Debug description files 
  6029.  
  6030.  
  6031. ΓòÉΓòÉΓòÉ 16.3.10. Suppress Sign-On Banner (/NOLOGO) ΓòÉΓòÉΓòÉ
  6032.  
  6033. Syntax: /NOLOGO 
  6034.  
  6035. This option suppresses the sign-on banner display when NMAKE is started.  If 
  6036. you want to suppress nonfatal error messages and warnings as well, use the 
  6037. suppress messages (/C) option. 
  6038.  
  6039.  
  6040. ΓòÉΓòÉΓòÉ 16.3.11. Print Macro and Target Definitions (/P) ΓòÉΓòÉΓòÉ
  6041.  
  6042. Syntax: /P 
  6043.  
  6044. This option writes out all macro definitions and target definitions. Output is 
  6045. sent to the standard output device (typically the display). 
  6046.  
  6047.  
  6048. ΓòÉΓòÉΓòÉ 16.3.12. Return Exit Code (/Q) ΓòÉΓòÉΓòÉ
  6049.  
  6050. Syntax: /Q 
  6051.  
  6052. This option causes NMAKE to return either of the following: 
  6053.  
  6054.    o  A 0 exit code if all targets built during-an-NMAKE run are up-to-date 
  6055.    o  A nonzero exit code if they are not up-to-date 
  6056.  Use this option to run NMAKE from within a batch file. 
  6057.  
  6058.  
  6059. ΓòÉΓòÉΓòÉ 16.3.13. Ignore TOOLS.INI File (/R) ΓòÉΓòÉΓòÉ
  6060.  
  6061. Syntax: /R 
  6062.  
  6063. This option ignores the following: 
  6064.  
  6065.    o  All inference rules and macros contained in the TOOLS.INI file 
  6066.    o  All predefined inference rules and macros 
  6067.  
  6068.  
  6069. ΓòÉΓòÉΓòÉ 16.3.14. Suppress Command Display (/S) ΓòÉΓòÉΓòÉ
  6070.  
  6071. Syntax: /S 
  6072.  
  6073. This option suppresses the display of commands as they are executed by NMAKE. 
  6074. It does not suppress the display of messages generated by the commands 
  6075. themselves. 
  6076.  
  6077. The /N command (Display Commands) takes precedence over the /S option.  If you 
  6078. use /N and /S together, commands are displayed but not executed. 
  6079.  
  6080.  
  6081. ΓòÉΓòÉΓòÉ 16.3.15. Change Target Modification Dates (/T) ΓòÉΓòÉΓòÉ
  6082.  
  6083. Syntax: /T 
  6084.  
  6085. This option changes or "touches" the modification dates for out-of-date target 
  6086. files to the current date. No commands are executed, and the target file is 
  6087. left unchanged. 
  6088.  
  6089.  
  6090. ΓòÉΓòÉΓòÉ 16.4. Description Files ΓòÉΓòÉΓòÉ
  6091.  
  6092. NMAKE uses a description file to determine what to do.  In its simplest form, a 
  6093. description file tells NMAKE which files depend on others and which commands 
  6094. need to be executed if a file changes. 
  6095.  
  6096. A description file looks like this: 
  6097.  
  6098.  
  6099. targets...: dependents...Γöé
  6100.      command             Γöé ΓöÇΓöÇdescription block
  6101.         :                Γöé
  6102.  
  6103. targets... : dependents...
  6104.      command
  6105.  
  6106.  
  6107. ΓòÉΓòÉΓòÉ 16.4.1. Description Blocks ΓòÉΓòÉΓòÉ
  6108.  
  6109. A dependent relationship between files is defined in a description block.  A 
  6110. "description block" indicates the relationship among various parts of the 
  6111. program.  It contains commands to bring all components up to date.  The 
  6112. description file can contain up to 1048 description blocks. 
  6113.  
  6114. Description File                       Description Block
  6115. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6116. Γöé Description  Γöé     Γöé                Γöé                           Γöé
  6117. Γöé   Block 1    Γöé     Γöé                Γöétargets... : dependents... Γöé
  6118. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                Γöé command                   Γöé
  6119. Γöé Descr Blk 2  Γöé                      Γöé command                   Γöé
  6120. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                Γöé command                   Γöé
  6121. Γöé      :       Γöé     Γöé                Γöé    :                      Γöé
  6122. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ     Γöé                Γöé                           Γöé
  6123. Γöé Descr Blk n  Γöé     Γöé                Γöé                           Γöé
  6124. Γöé              Γöé     Γöé                Γöé                           Γöé
  6125. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6126.  
  6127.  
  6128. ΓòÉΓòÉΓòÉ 16.4.2. Special Features ΓòÉΓòÉΓòÉ
  6129.  
  6130. The following are special features of description blocks: 
  6131.  
  6132.    o  Description files can contain macro definitions and use macros in 
  6133.       description blocks. Macros allow easy substitution of one text string for 
  6134.       another. 
  6135.  
  6136.    o  Description files can contain inference rules.  Inference rules allow 
  6137.       NMAKE to infer which commands to execute based on the file-name 
  6138.       extensions used for targets and dependents. 
  6139.  
  6140.    o  You can specify directories for NMAKE to search for dependent files by 
  6141.       using the following syntax: 
  6142.  
  6143.             targets : {directory1;directory2...}dependents
  6144.  
  6145.       NMAKE searches the current directory first, then <directory1>, 
  6146.       <directory2>, and so on. 
  6147.  
  6148.    o  A command can be placed on the same line as the target and dependent 
  6149.       files by using a semicolon (;) as depicted below: 
  6150.  
  6151.             targets... : dependents... ; command
  6152.  
  6153.    o  A long command can span several lines if each line ends with a backslash 
  6154.       ( \ ): 
  6155.  
  6156.             command \
  6157.               continuation of command
  6158.  
  6159.    o  The execution of a command can be modified if you precede the command 
  6160.       with special characters. 
  6161.  
  6162.    o  If you do not specify a command in a description block, NMAKE looks for 
  6163.       an inference rule to build the target. 
  6164.  
  6165.    o  DOS and OS/2 wild card characters (* and ?) can be used in description 
  6166.       blocks.  For example, the following description block compiles all source 
  6167.       files with the .C extension: 
  6168.  
  6169.             ASTRO.EXE : *.C
  6170.               ICC $**
  6171.  
  6172.    o  NMAKE will expand the *.C specification into the complete list of C files 
  6173.       in the current directory.  $** is a complete list of dependents specified 
  6174.       for the current target. 
  6175.  
  6176.    o  NMAKE uses several punctuation characters in its syntax. To use one of 
  6177.       these characters as a literal character, place an escape character ( ^ ) 
  6178.       in front of it. For a list of punctuation characters, see Escape 
  6179.       Characters. 
  6180.  
  6181.    o  Normally a target file can appear in only one description block.  A 
  6182.       special syntax allows you to use a target in several description blocks. 
  6183.  
  6184.    o  A special syntax allows you to determine the drive, path, base name, and 
  6185.       extension of the first dependent file in a description block. 
  6186.  
  6187.  
  6188. ΓòÉΓòÉΓòÉ 16.4.3. Targets in Several Description Blocks ΓòÉΓòÉΓòÉ
  6189.  
  6190. Using a file as a target in more than one description block causes NMAKE to 
  6191. end.  You can overcome this limitation by using two colons (::) as the 
  6192. target/dependent separator instead of one colon. 
  6193.  
  6194. The following description block is permissible: 
  6195.  
  6196. X :: A
  6197.   command
  6198. X :: B
  6199.   command
  6200.  
  6201. The following causes NMAKE to end: 
  6202.  
  6203. X : A
  6204.   command
  6205. X : B
  6206.   command
  6207.  
  6208. It is permissible to use single colons if the target/dependent lines are 
  6209. grouped above the same commands. The following is permissible: 
  6210.  
  6211. X : A
  6212. X : B
  6213.   command
  6214. Double Colon (::) Target/Dependent Separator Example 
  6215.  
  6216. TARGET.LIB :: A.ASM B.ASM C.ASM
  6217.   ML A.ASM B.ASM C.ASM
  6218.   LIB TARGET -+A.OBJ -+B.OBJ -+C.OBJ;
  6219.  
  6220. TARGET.LIB :: D.C E.C
  6221.   ICC /C D.C E.C
  6222.   LIB TARGET -+D.OBJ -+E.OBJ;
  6223.  
  6224. These two description blocks both update the library named TARGET.LIB.  If any 
  6225. of the assembly-language files have changed more recently than the library 
  6226. file, NMAKE executes the commands in the first block to assemble the source 
  6227. files and update the library.  Similarly, if any of the C-language files have 
  6228. changed, NMAKE executes the second group of commands to compile the C files and 
  6229. update the library. 
  6230.  
  6231.  
  6232. ΓòÉΓòÉΓòÉ 16.5. Macros ΓòÉΓòÉΓòÉ
  6233.  
  6234. Macros provide a convenient way to replace one string with another in the 
  6235. description file.  The text is automatically replaced each time NMAKE is run. 
  6236. This feature makes it easy to change text throughout the description file 
  6237. without having to edit every line that uses the text.  Two common uses of 
  6238. macros are: 
  6239.  
  6240. Two Common Uses of Macros 
  6241.  
  6242.    o  To create a standard description file for several projects. The macro 
  6243.       represents the file names in commands.  These file names are defined when 
  6244.       you run NMAKE.  When you switch to a different project, changing the 
  6245.       macro changes the file names NMAKE uses throughout the description file. 
  6246.  
  6247.    o  To control the options that NMAKE passes to the compiler, assembler, or 
  6248.       linker.  When using a macro to specify the options, you can quickly 
  6249.       change the options throughout the description file in one easy step. 
  6250.  
  6251.  A macro can be defined : 
  6252.  
  6253.       In a Description File 
  6254.       On the Command Line 
  6255.       In TOOLS.INI 
  6256.       Through inheritance from Environment Variables 
  6257.  
  6258.  
  6259. ΓòÉΓòÉΓòÉ 16.5.1. Macros Example ΓòÉΓòÉΓòÉ
  6260.  
  6261. program = FLASH
  6262. c = LINK
  6263. options =
  6264.  
  6265. $(program).EXE : $(program).OBJ
  6266.   $c $(options) $(program).OBJ;
  6267.  
  6268. The example above defines three macros.  The description block executes the 
  6269. following commands: 
  6270.  
  6271. FLASH.EXE : FLASH.OBJ
  6272.   LINK  FLASH.OBJ;
  6273.  
  6274.  
  6275. ΓòÉΓòÉΓòÉ 16.5.2. Special Features ΓòÉΓòÉΓòÉ
  6276.  
  6277. Macros have the following special features: 
  6278.  
  6279.    o  When using a macro, you can substitute text in the macro itself. 
  6280.  
  6281.    o  Several macros have been predefined for special purposes. 
  6282.  
  6283.    o  If a macro is defined more than once, precedence rules govern which 
  6284.       definition is used. 
  6285.  
  6286.    o  You can also put macros into your TOOLS.INI file. 
  6287.  
  6288.  
  6289. ΓòÉΓòÉΓòÉ 16.5.3. Macros in a Description File ΓòÉΓòÉΓòÉ
  6290.  
  6291. Before using a macro, you need to define it, either on the NMAKE command line 
  6292. or in your description file.  Description file macro definitions look like 
  6293. this: 
  6294.  
  6295. macroname = macrostring
  6296.  
  6297. Macro names can be any combination of alphanumeric characters and the 
  6298. underscore character ( _ ), and they are case-sensitive. A macro string can be 
  6299. any string of characters. 
  6300.  
  6301. The first character of the macro name must be the first character on the line. 
  6302. NMAKE ignores any spaces before or after the equal sign ( = ). 
  6303.  
  6304. The macro string can be a null string and can contain embedded spaces. Do not 
  6305. enclose the macro string in quotation marks; quotation marks are used only when 
  6306. you define macros on the command line. 
  6307.  
  6308.  
  6309. ΓòÉΓòÉΓòÉ 16.5.4. Macros on the Command Line ΓòÉΓòÉΓòÉ
  6310.  
  6311. Before using a macro, you need to define it, either on the NMAKE command line 
  6312. or in your description file.  Command-line macro definitions look like this: 
  6313.  
  6314. macroname=macrostring
  6315.  
  6316. No spaces can surround the equal sign.  If you embed spaces, NMAKE might 
  6317. misinterpret your macro.  If your macro string contains embedded spaces, 
  6318. enclose it in double quotation marks ( " ) like this: 
  6319.  
  6320. macroname="macro string"
  6321.  
  6322. or simply enclose the entire macro definition in double quotation marks ( " ) 
  6323. like this: 
  6324.  
  6325. "macroname = macro string"
  6326.  
  6327. Macro names can be any combination of alphanumeric characters and the 
  6328. underscore character ( _ ), and they are case-sensitive. A macro string can be 
  6329. any string of characters or a null string. 
  6330.  
  6331.  
  6332. ΓòÉΓòÉΓòÉ 16.5.5. Inherited Macros ΓòÉΓòÉΓòÉ
  6333.  
  6334. NMAKE inherits all current environment variables as macros. For example, if you 
  6335. have a PATH environment variable defined as PATH = C:\TOOLS\BIN, the string 
  6336. C:\TOOLS\BIN is substituted when you use PATH in the description file. 
  6337.  
  6338. You can redefine inherited macros by including a line such as the example above 
  6339. in a description file.  While NMAKE is executing, the macro takes on the 
  6340. redefined definition.  When NMAKE terminates, however, the environment variable 
  6341. resumes its original value. 
  6342.  
  6343. The Override Environment Variables (/E) option disables inherited macro 
  6344. redefinition. If you use this option, NMAKE ignores any attempt to redefine an 
  6345. inherited macro. 
  6346.  
  6347.  
  6348. ΓòÉΓòÉΓòÉ 16.5.6. Defined Macros ΓòÉΓòÉΓòÉ
  6349.  
  6350. After you have defined a macro, you can use it anywhere in your description 
  6351. file with the following syntax: 
  6352.  
  6353. $(macroname)
  6354.  
  6355. The parentheses are not required if the macro name is only one character long. 
  6356. To use a dollar sign ( $ ) without using a macro, enter two dollar signs ( $$ 
  6357. ), or use the caret ( ^ ) before the dollar sign as an escape character. 
  6358.  
  6359. When NMAKE runs, it replaces all occurrences of $(macroname) with the defined 
  6360. macro string. If the macro is undefined, nothing is substituted. After a macro 
  6361. is defined, you can cancel it only with the !UNDEF directive. 
  6362.  
  6363.  
  6364. ΓòÉΓòÉΓòÉ 16.5.7. Macro Substitutions ΓòÉΓòÉΓòÉ
  6365.  
  6366. Just as you use macros to substitute text within a description file, you use 
  6367. the following syntax to substitute text within a macro: 
  6368.  
  6369. $(macroname: string1 = string2)
  6370.  
  6371. Every occurrence of <string1> is replaced by <string2> in <macroname>.  Spaces 
  6372. between the colon and <string1> are considered part of <string1>.  If <string2> 
  6373. is a null string, all occurrences of <string1> are deleted from the macro.  The 
  6374. colon ( : ) must immediately follow <macroname>. 
  6375.  
  6376. Note:  The replacement of <string1> with <string2> in the macro is not a 
  6377.        permanent change.  If you use the macro again without a substitution, 
  6378.        you get the original unchanged macro. 
  6379.  
  6380.  Example 
  6381.  
  6382.   SOURCES = ONE.C TWO.C THREE.C
  6383.   PROGRAM.EXE : $(SOURCES:.C=.OBJ)
  6384.     LINK $**;
  6385.  
  6386.  The example above defines a macro called SOURCES, which contains the names of 
  6387.  three C source files.  With this macro, the target/dependent line substitutes 
  6388.  the .OBJ extension for the .C extension.  Thus, NMAKE executes the following 
  6389.  command: 
  6390.  
  6391.   LINK ONE.OBJ TWO.OBJ THREE.OBJ;
  6392.  
  6393.  Note:  $** is a special macro that translates to all dependent files for a 
  6394.         given target. 
  6395.  
  6396.  
  6397. ΓòÉΓòÉΓòÉ 16.6. Special Macros ΓòÉΓòÉΓòÉ
  6398.  
  6399. NMAKE predefines several macros.  The first six macros below return one or more 
  6400. file specifications for the files in the target/dependent line of a description 
  6401. block.  Except where noted, the file specification includes the path of the 
  6402. file, the base file name, and the file-name extension. 
  6403.  
  6404.  Macro          Value 
  6405.  
  6406.  $@             The specification of the target file. 
  6407.  
  6408.  $*             The base name (without extension) of the target file. Path 
  6409.                 information is also returned if the path was specified as part 
  6410.                 of the target file name. This macro cannot be used in a 
  6411.                 dependent list. 
  6412.  
  6413.  $**            The specifications of the dependent files. 
  6414.  
  6415.  $?             The specifications for only those dependent files that are 
  6416.                 out-of-date with respect to the targets. 
  6417.  
  6418.  $<             The specification of a single dependent file that is 
  6419.                 out-of-date with respect to the targets. This macro is used 
  6420.                 only in inference rules. 
  6421.  
  6422.  $$@            The file specification of the target that NMAKE is currently 
  6423.                 evaluating.  This is a dynamic dependency parameter, used only 
  6424.                 in dependent lists. 
  6425.  
  6426.  $(CC)          The string ICC, which is the command to run the C Set ++ 
  6427.                 Compiler.  You can redefine this macro to use a different 
  6428.                 command. 
  6429.  
  6430.  $(AS)          The string MASM, which is the command to run the Macro 
  6431.                 Assembler (MASM).  You can redefine this macro to use a 
  6432.                 different command. 
  6433.  
  6434.  $(MAKE)        The command name used to run NMAKE.  This macro is used to 
  6435.                 invoke NMAKE recursively.  If you redefine this macro, NMAKE 
  6436.                 issues a warning message. 
  6437.  
  6438.                 Note:  NMAKE executes the command line in which $(MAKE) 
  6439.                        appears, even if the display commands (/N) option is on. 
  6440.  
  6441.  $(MAKEFLAGS)   The NMAKE options currently in effect.  You cannot redefine 
  6442.                 this macro. 
  6443.  
  6444.  Note:  The special macros $** and $$@ are the only exceptions to the rule that 
  6445.         macro names longer than one character must be enclosed in parentheses. 
  6446.  
  6447.  You can append characters to any of the first six macros in this list to 
  6448.  modify the meaning of the macro. However, you cannot use macro substitutions 
  6449.  in these macros. 
  6450.  
  6451.  
  6452. ΓòÉΓòÉΓòÉ 16.6.1. Special Macros Examples ΓòÉΓòÉΓòÉ
  6453.  
  6454. TRIG.LIB : SIN.OBJ COS.OBJ ARCTAN.OBJ
  6455.   !LIB TRIG.LIB -+$?;
  6456.  
  6457. In the example above, the macro $? represents the names of all dependent files 
  6458. that are out-of-date with respect to the target file.  The exclamation point ( 
  6459. ! ) preceding the LIB command causes NMAKE to execute the LIB command once for 
  6460. each dependent file in the list.  As a result of this description, the LIB 
  6461. command is executed up to three times, each time replacing a module with a 
  6462. newer version. 
  6463.  
  6464. DIR=C:\INCLUDE
  6465. $(DIR)\GLOBALS.H : GLOBALS.H
  6466.  COPY GLOBALS.H $@
  6467. $(DIR)\TYPES.H : TYPES.H
  6468.  COPY TYPES.H $@
  6469. $(DIR)\MACROS.H : MACROS.H
  6470.  COPY MACROS.H $@
  6471.  
  6472. The example above shows how to update a group of include files. Each of the 
  6473. files GLOBALS.H, TYPES.H, and MACROS.H in the directory C:\INCLUDE depends on 
  6474. its counterpart in the current directory.  If one of the include files is 
  6475. out-of-date, NMAKE replaces it with the file of the same name from the current 
  6476. directory. 
  6477.  
  6478. The following description file, which uses the special macro $$@, is 
  6479. equivalent: 
  6480.  
  6481. DIR=C:\INCLUDE
  6482. $(DIR)\GLOBALS.H $(DIR)\TYPES.H $(DIR)\MACROS.H : $$(@F)
  6483. !COPY $? $@
  6484.  
  6485. The special macro $$(@F) signifies the file name (without the path) of the 
  6486. current target. 
  6487.  
  6488. When NMAKE evaluates the description block, it evaluates the three targets, one 
  6489. at a time, with respect to their dependents.  Thus, NMAKE first checks whether 
  6490. C:\INCLUDE\GLOBALS.H is out-of-date compared with GLOBALS.H in the current 
  6491. directory.  If so, it executes the command to copy the dependent file GLOBALS.H 
  6492. to the target.  NMAKE repeats the procedure for the other two targets. 
  6493.  
  6494. Note that on the command line, the macro $? refers to the dependent for this 
  6495. target.  The macro $@ specifies the full file specification of the target file. 
  6496.  
  6497.  
  6498. ΓòÉΓòÉΓòÉ 16.6.2. File-Specification Parts ΓòÉΓòÉΓòÉ
  6499.  
  6500. A full file specification gives the base name of the file, the file-name 
  6501. extension, and the path.  The path provides the disk-drive identifier and the 
  6502. sequence of directories needed to locate the file on the disk. 
  6503.  
  6504. For example, the file specification 
  6505.  
  6506. C:\SOURCE\PROG\SORT.OBJ
  6507.  
  6508. has the following parts: 
  6509.  
  6510. Path Name            C:\SOURCE\PROG
  6511. Base File Name       SORT
  6512. File-Name Extension  .OBJ
  6513.  
  6514.  
  6515. ΓòÉΓòÉΓòÉ 16.6.3. Characters That Modify Special Macros ΓòÉΓòÉΓòÉ
  6516.  
  6517. The following six macros all resolve to a file specification (or possibly 
  6518. several file specifications for $** and $?): 
  6519.  
  6520.      $*     $@     $**     $<     $?     $$@
  6521.  
  6522. You can append characters to any of these macros to modify the file name 
  6523. returned by the macro.  Depending on which character you use, parts of the full 
  6524. file specification are returned: 
  6525.  
  6526.                                Appended Character
  6527.      File Part Returned      D        F       B       R
  6528.  
  6529.      File Path               Yes      No      No      Yes
  6530.      Base File Name          No       Yes     Yes     Yes
  6531.      File Name Extension     No       Yes     No      No
  6532.  
  6533.  
  6534. ΓòÉΓòÉΓòÉ 16.6.4. Modified Special Macros Example ΓòÉΓòÉΓòÉ
  6535.  
  6536. If the macro $@ has the value 
  6537.  
  6538. C:\SOURCE\PROG\SORT.OBJ
  6539.  
  6540. then the following values are returned for the modified macro: 
  6541.  
  6542.  Macro     Value 
  6543.  
  6544.  $(@D)     C:\SOURCE\PROG 
  6545.  
  6546.  $(@F)     SORT.OBJ 
  6547.  
  6548.  $(@B)     SORT 
  6549.  
  6550.  $(@R)     C:\SOURCE\PROG\SORT 
  6551.  
  6552.  Note:  Modified macros are always longer than a single character - they must 
  6553.         be enclosed by parentheses when used. 
  6554.  
  6555.  
  6556. ΓòÉΓòÉΓòÉ 16.6.5. Macro Precedence Rules ΓòÉΓòÉΓòÉ
  6557.  
  6558. When the same macro is defined in more than one place, the definition with the 
  6559. highest priority is used: 
  6560.  
  6561.   Priority
  6562.                                       Definition
  6563.  
  6564.   1 (Highest)
  6565.                                       Command line
  6566.  
  6567.   2
  6568.                                       Description file
  6569.  
  6570.   3
  6571.                                       Environment variables
  6572.  
  6573.   4
  6574.                                       TOOLS.INI file
  6575.  
  6576.   5 (Lowest)
  6577.                                       Predefined macros (such as CC and AS)
  6578.  
  6579.  If you invoke NMAKE with the Overriding Macro Definitions (/E) option, macros 
  6580.  defined by environment variables take precedence over those defined in a 
  6581.  description file. 
  6582.  
  6583.  
  6584. ΓòÉΓòÉΓòÉ 16.7. Inference Rules ΓòÉΓòÉΓòÉ
  6585.  
  6586. Inference rules are templates from which NMAKE infers what to do with a 
  6587. description block when no commands are given.  Only those extensions defined in 
  6588. a .SUFFIXES list can have inference rules.  The extensions .C, .OBJ, .ASM, and 
  6589. .EXE are automatically included in .SUFFIXES. 
  6590.  
  6591. When NMAKE encounters a description block with no commands, it looks for an 
  6592. inference rule that specifies how to create the target from the dependent 
  6593. files, given the two file extensions. Similarly, if a dependent file does not 
  6594. exist, NMAKE looks for an inference rule that specifies how to create the 
  6595. dependent from another file with the same base name. 
  6596.  
  6597. NMAKE applies an inference rule only if the base name of the file it is trying 
  6598. to create matches the base name of a file that already exists. 
  6599.  
  6600. In effect, inference rules are useful only when there is a one-to-one 
  6601. correspondence between the files with the "from" extension and the files with 
  6602. the "to" extension.  You cannot, for example, define an inference rule that 
  6603. inserts a number of modules into a library. 
  6604.  
  6605. The use of inference rules eliminates the need to put the same commands in 
  6606. several description blocks.  For example, you can use inference rules to 
  6607. specify a single ICC command that changes any C source file (with a .C 
  6608. extension) to an object file (with a .OBJ extension). 
  6609.  
  6610. You define an inference rule by including text of the following form in your 
  6611. description file or in your TOOLS.INI file - see "Special Features". 
  6612.  
  6613. .fromext.toext:
  6614. commands
  6615. :
  6616.  
  6617. The elements of the inference rule are: 
  6618.  
  6619.  <fromext> 
  6620.       The file-name extension for dependent files to build a target 
  6621.  <toext> 
  6622.       The file-name extension for target files to be built 
  6623.  <commands> 
  6624.       The commands to build the <toext> target from the <fromext> dependent. 
  6625.  
  6626.  For example, an inference rule to convert C source files (with the .C 
  6627.  extension) to C object files (with the .OBJ extension) is 
  6628.  
  6629.   .C.OBJ:
  6630.    ICC $<
  6631.  
  6632.  Note:  The special macro $< represents the name of a dependent out-of-date 
  6633.         relative to the target. 
  6634.  
  6635.  
  6636. ΓòÉΓòÉΓòÉ 16.7.1. Special Features ΓòÉΓòÉΓòÉ
  6637.  
  6638.    o  You can specify a path where NMAKE should look for target and dependent 
  6639.       files used in inference rules. 
  6640.  
  6641.    o  Inference rules are predefined for compiling and linking C programs, and 
  6642.       for assembling programs. 
  6643.  
  6644.    o  NMAKE looks for inference rules in the TOOLS.INI file if it cannot find a 
  6645.       rule in a description file. 
  6646.  
  6647.    o  Only those extensions defined in a .SUFFIXES list can have inference 
  6648.       rules.  The extensions .C, .OBJ, .ASM, and .EXE are automatically 
  6649.       included in .SUFFIXES. 
  6650.  
  6651.  
  6652. ΓòÉΓòÉΓòÉ 16.8. Inference Rules Example ΓòÉΓòÉΓòÉ
  6653.  
  6654. .OBJ.EXE:
  6655.   LINK $<;
  6656.  
  6657. EXAMPLE1.EXE: EXAMPLE1.OBJ
  6658.  
  6659. EXAMPLE2.EXE: EXAMPLE2.OBJ
  6660.   LINK /CO EXAMPLE2,,,LIBV3.LIB
  6661.  
  6662. The first line above defines an inference rule that causes the LINK command to 
  6663. create an executable file whenever a change is made in the corresponding object 
  6664. file.  The file name in the inference rule is specified with the special macro 
  6665. $< so that the rule applies to any .OBJ file with an out-of-date executable 
  6666. file. 
  6667.  
  6668. When NMAKE does not find any commands in the first description block, it checks 
  6669. for a rule that might apply and finds the rule defined on the first two lines 
  6670. of the description file.  NMAKE applies the rule, replacing $< with 
  6671. EXAMPLE1.OBJ when it executes the command, so that the LINK command becomes 
  6672.  
  6673. LINK EXAMPLE1.OBJ;
  6674.  
  6675. NMAKE does not search for an inference rule when examining the second 
  6676. description block, because a command is explicitly given. 
  6677.  
  6678.  
  6679. ΓòÉΓòÉΓòÉ 16.8.1. Inference-Rule Path Specifications ΓòÉΓòÉΓòÉ
  6680.  
  6681. When defining an inference rule, you can indicate to NMAKE where to look for 
  6682. target and dependent files.  Use the following syntax: 
  6683.  
  6684. {frompath}.fromext{topath}.toext
  6685.  commands
  6686.  :
  6687.  
  6688. NMAKE looks in the directory specified by <frompath> for files with the 
  6689. <fromext> extension.  It executes the commands to build files with the <toext> 
  6690. extension in the directory specified by <topath>. 
  6691.  
  6692.  
  6693. ΓòÉΓòÉΓòÉ 16.8.2. Predefined Inference Rules ΓòÉΓòÉΓòÉ
  6694.  
  6695. NMAKE predefines three inference rules: 
  6696.  
  6697. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6698. ΓöéInference Rule      ΓöéDefault             ΓöéCommand Action      Γöé
  6699. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6700. Γöé.C.OBJ              Γöé$(CC) $(CFLAGS) /C  ΓöéICC /C $*.C         Γöé
  6701. Γöé                    Γöé$*.C                Γöé                    Γöé
  6702. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6703. Γöé.C.EXE              Γöé$(CC) $(CFLAGS) $*.CΓöéICC $*.C            Γöé
  6704. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6705. Γöé.ASM.OBJ            Γöé$(AS) $(AFLAGS) $*; ΓöéMASM $*;            Γöé
  6706. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6707. NOTE 
  6708.  
  6709.    1. The first two rules automatically compile and link C programs. 
  6710.  
  6711.    2. The last rule automatically assembles programs. 
  6712.  
  6713.  
  6714. ΓòÉΓòÉΓòÉ 16.9. Directives ΓòÉΓòÉΓòÉ
  6715.  
  6716. Using directives, you can construct description files similar to batch files. 
  6717. NMAKE provides directives that: 
  6718.  
  6719.    o  Conditionally execute commands 
  6720.  
  6721.    o  Display error messages 
  6722.  
  6723.    o  Include the contents of other files 
  6724.  
  6725.    o  Turn some NMAKE options on or off 
  6726.  
  6727.  Each directive begins with an exclamation point ( ! ) in the first column of 
  6728.  the description file.  Spaces can be placed between the exclamation point and 
  6729.  the directive keyword. 
  6730.  
  6731.  The list below describes the directives: 
  6732.  
  6733.  !IF <expression> 
  6734.       Executes the statements between the !IF keyword and the next !ELSE or 
  6735.       !ENDIF directive if <expression> evaluates to a nonzero value. 
  6736.  
  6737.       The <expression> used with the !IF directive can consist of integer 
  6738.       constants, string constants, or exit codes returned by programs.  Integer 
  6739.       constants can use the C unary operators for numerical negation ( - ), 
  6740.       one's complement ( ~ ), and logical negation ( ! ).  You can also use any 
  6741.       of the C binary operators listed below: 
  6742.  
  6743.       Operator       Description 
  6744.  
  6745.       +              Addition 
  6746.  
  6747.       -              Subtraction 
  6748.  
  6749.       *              Multiplication 
  6750.  
  6751.       /              Division 
  6752.  
  6753.       %              Modulus 
  6754.  
  6755.       &              Bitwise AND 
  6756.  
  6757.       |              Bitwise OR 
  6758.  
  6759.       ^^             Bitwise XOR 
  6760.  
  6761.       &&             Logical AND 
  6762.  
  6763.       ||             Logical OR 
  6764.  
  6765.       <<             Left shift 
  6766.  
  6767.       >>             Right shift 
  6768.  
  6769.       ==             Equality 
  6770.  
  6771.       !=             Inequality 
  6772.  
  6773.       <              Less than 
  6774.  
  6775.       >              Greater than 
  6776.  
  6777.       <=             Less than or equal to 
  6778.  
  6779.       >=             Greater than or equal to 
  6780.  
  6781.       Note: 
  6782.  
  6783.       You can use parentheses to group expressions. 
  6784.  
  6785.       Values are assumed to be decimal values unless specified with a leading 0 
  6786.       (octal) or leading 0x (hexadecimal). 
  6787.  
  6788.       Strings are enclosed by quotation marks ( " ).  You can use the equality 
  6789.       ( ==) and inequality ( != ) operators to compare two strings. 
  6790.  
  6791.       You can invoke a program in an expression by enclosing the program name 
  6792.       in square brackets ( [ ] ).  The exit code returned by the program is 
  6793.       used in the expression. 
  6794.  
  6795.  !ELSE 
  6796.       Executes the statements between the !ELSE and !ENDIF directives if the 
  6797.       statements preceding the !ELSE directive were not executed. 
  6798.  
  6799.  !ENDIF 
  6800.       Marks the end of the !IF, !IFDEF, or !IFNDEF block of statements. 
  6801.  
  6802.  !IFDEF <macroname> 
  6803.       Executes the statements between the !IFDEF keyword and the next !ELSE or 
  6804.       !ENDIF directive if <macroname> is defined in the description file.  If a 
  6805.       macro has been defined as null, it is still considered to be defined. 
  6806.  
  6807.  !IFNDEF <macroname> 
  6808.       Executes the statements between the !IFNDEF keyword and the next !ELSE or 
  6809.       !ENDIF directive if <macroname> is not defined in the description file. 
  6810.  
  6811.  !UNDEF <macroname> 
  6812.       Undefines a previously defined macro. 
  6813.  
  6814.  !ERROR <text> 
  6815.       Prints text and then stops execution. 
  6816.  
  6817.  !INCLUDE <filename> 
  6818.       Reads and evaluates the file <filename> before continuing with the 
  6819.       current description file.  If <filename> is enclosed by angle brackets 
  6820.       (<>), NMAKE searches for the file in the directories specified by the 
  6821.       INCLUDE macro; otherwise, it looks only in the current directory.  The 
  6822.       INCLUDE macro is initially set to the value of the INCLUDE environment 
  6823.       variable. 
  6824.  
  6825.  !CMDSWITCHES {+|-}<opt> 
  6826.       Turns on or off one of four NMAKE options: /D, /I, /N, and /S.  If no 
  6827.       options are specified, the options are reset to the values they had when 
  6828.       NMAKE was started. To turn an option on, precede it with a plus sign (+); 
  6829.       to turn it off, precede it with a minus sign (-). This directive updates 
  6830.       the MAKEFLAGS macro. 
  6831.  
  6832.       See Special Macros. 
  6833.  
  6834.  
  6835. ΓòÉΓòÉΓòÉ 16.9.1. Directives Example ΓòÉΓòÉΓòÉ
  6836.  
  6837. !INCLUDE <INFRULES.TXT>
  6838. !CMDSWITCHES +D
  6839. WINNER.EXE:WINNER.OBJ
  6840. !IFDEF DEBUG
  6841. ! IF "$(DEBUG)"=="y"
  6842.      LINK /CO WINNER.OBJ;
  6843. ! ELSE
  6844.      LINK WINNER.OBJ;
  6845. ! ENDIF
  6846. !ELSE
  6847. ! ERROR Macro named DEBUG is not defined.
  6848. !ENDIF
  6849.  
  6850. The directives in this example do the following: 
  6851.  
  6852.    o  The !INCLUDE directive causes the file INFRULES.TXT to be read and 
  6853.       evaluated as if it were part of the description file. 
  6854.  
  6855.    o  The !CMDSWITCHES directive turns on the /D option, which displays the 
  6856.       dates of the files as they are checked. 
  6857.  
  6858.    o  If WINNER.EXE is out-of-date with respect to WINNER.OBJ, the !IFDEF 
  6859.       directive checks to see whether the macro DEBUG is defined.  If it is 
  6860.       defined, the !IF directive checks to see whether it is set to y.  If it 
  6861.       is, the linker is invoked with the /CO option; otherwise, it is invoked 
  6862.       without the /CO. If the DEBUG macro is not defined, the !ERROR directive 
  6863.       prints the message and NMAKE stops executing. 
  6864.  
  6865.  
  6866. ΓòÉΓòÉΓòÉ 16.9.2. Pseudotargets ΓòÉΓòÉΓòÉ
  6867.  
  6868. A "pseudotarget" is a target in a description block that is not a file. 
  6869. Instead, it is a name that serves as a "handle" for building a group of files 
  6870. or executing a group of commands.  In the following example, UPDATE is a 
  6871. pseudotarget: 
  6872.  
  6873. UPDATE: *.*
  6874.   !copy $** A:\PRODUCT
  6875.  
  6876. When NMAKE evaluates a pseudotarget, it always considers the dependents to be 
  6877. out-of-date.  In the description above, NMAKE copies each of the dependent 
  6878. files to the specified drive and directory. 
  6879.  
  6880. NMAKE predefines several pseudotargets for special purposes. 
  6881.  
  6882. See Predefined Pseudotargets. 
  6883.  
  6884.  
  6885. ΓòÉΓòÉΓòÉ 16.9.3. Predefined Pseudotargets ΓòÉΓòÉΓòÉ
  6886.  
  6887. NMAKE predefines several pseudotargets that provide special rules within a 
  6888. description file: 
  6889.  
  6890.  
  6891. ΓòÉΓòÉΓòÉ 16.9.3.1. .SILENT Pseudotarget ΓòÉΓòÉΓòÉ
  6892.  
  6893. Syntax:  .SILENT : dependents... 
  6894.  
  6895. This pseudotarget suppresses the display of executed commands for a single 
  6896. description block.  The /S option does the same thing for all description 
  6897. blocks. 
  6898.  
  6899. See Suppress Command Display (/S). 
  6900.  
  6901.  
  6902. ΓòÉΓòÉΓòÉ 16.9.3.2. .IGNORE Pseudotarget ΓòÉΓòÉΓòÉ
  6903.  
  6904. Syntax:  .IGNORE : dependents... 
  6905.  
  6906. This pseudotarget ignores exit codes returned by programs for a single 
  6907. description block.  The /I option does the same thing for all description 
  6908. blocks. 
  6909.  
  6910. See Ignore Exit Codes (/I). 
  6911.  
  6912.  
  6913. ΓòÉΓòÉΓòÉ 16.9.3.3. .SUFFIXES Pseudotarget ΓòÉΓòÉΓòÉ
  6914.  
  6915. Syntax:  .SUFFIXES : extensions... 
  6916.  
  6917. This pseudotarget defines file extensions to try when NMAKE needs to build a 
  6918. target file for which no dependents are specified. NMAKE searches the current 
  6919. directory for a file with the same name as the target file and an extension in 
  6920. <extensions...>.  If NMAKE finds such a file, and if an inference rule applies 
  6921. to the file, NMAKE treats the file as a dependent of the target. 
  6922.  
  6923. The .SUFFIXES pseudotarget is predefined as 
  6924.  
  6925. .SUFFIXES : .OBJ .EXE .C .ASM
  6926.  
  6927. To add extensions to the list, specify .SUFFIXES : followed by the new 
  6928. extensions.  To clear the list, specify 
  6929.  
  6930. .SUFFIXES:
  6931.  
  6932. Note:  Only those extensions specified in .SUFFIXES can have inference rules. 
  6933.        NMAKE ignores inference rules unless the extensions have been specified 
  6934.        in a .SUFFIXES list. 
  6935.  
  6936.  
  6937. ΓòÉΓòÉΓòÉ 16.9.3.4. .PRECIOUS Pseudotarget ΓòÉΓòÉΓòÉ
  6938.  
  6939. Syntax:  .PRECIOUS : targets... 
  6940.  
  6941. This pseudotarget tells NMAKE not to delete a target even if the commands that 
  6942. build it are terminated or interrupted. This pseudotarget overrides the NMAKE 
  6943. default.  By default, NMAKE deletes the target if it cannot be sure that the 
  6944. target was built successfully. 
  6945.  
  6946. For example, 
  6947.  
  6948. .PRECIOUS : TOOLS.LIB
  6949. TOOLS.LIB : A2Z.OBJ Z2A.OBJ
  6950.  command
  6951.   :
  6952.  
  6953. If the commands to build TOOLS.LIB are interrupted, leaving an incomplete file, 
  6954. NMAKE does not delete the partially built TOOLS.LIB. 
  6955.  
  6956. Note:  The pseudotarget .PRECIOUS is useful only in limited circumstances. 
  6957.        Most professional development tools have their own interrupt handlers 
  6958.        and "clean up" when errors occur. 
  6959.  
  6960.  
  6961. ΓòÉΓòÉΓòÉ 16.10. In-Line Files ΓòÉΓòÉΓòÉ
  6962.  
  6963. You may need to issue a command in the description file with a list of 
  6964. arguments exceeding the command-line limit of the operating system. Just as 
  6965. NMAKE supports the use of command files, it can also generate in-line files 
  6966. which are read as response files by other programs. 
  6967.  
  6968. To generate an in-line file, use the following syntax for your description 
  6969. block: 
  6970.  
  6971. target : dependents
  6972.   command @<<[filename]
  6973. in-line file text
  6974. << [KEEP | NOKEEP]
  6975.  
  6976. All of the text between the two sets of double less than signs (<<) is placed 
  6977. into an in-line file and given the name <filename>.  You can refer to the 
  6978. in-line file at a later time by using <filename>.  If <filename> is not given, 
  6979. NMAKE gives the file a unique name in the directory specified by the TMP 
  6980. environment variable if it is defined.  Otherwise, NMAKE creates a unique file 
  6981. name in the current directory. 
  6982.  
  6983. The in-line file can be temporary or permanent.  If you do not specify 
  6984. otherwise, or if you specify the keyword NOKEEP, the in-line file is temporary. 
  6985. Specify KEEP to retain the file. 
  6986.  
  6987. Note:  The at sign (@) is not part of the NMAKE syntax but is the typical 
  6988.        character used by utilities (such as LINK386) to designate a file as a 
  6989.        response file. 
  6990.  
  6991.  
  6992. ΓòÉΓòÉΓòÉ 16.10.1. In-Line Files Example ΓòÉΓòÉΓòÉ
  6993.  
  6994. MATH.LIB :  ADD.OBJ SUB.OBJ MUL.OBJ DIV.OBJ
  6995.   LIB @<<
  6996. MATH.LIB
  6997. -+ADD.OBJ-+SUB.OBJ-+MUL.OBJ-+DIV.OBJ
  6998. listing
  6999. <<
  7000.  
  7001. The above example creates an in-line file and uses it to invoke the Library 
  7002. Manager (LIB).  The in-line file is used as a response file by (LIB).  It 
  7003. specifies which library to use, the commands to execute, and the listing file 
  7004. to produce.  The in-line file contains the following: 
  7005.  
  7006.           MATH.LIB
  7007.           -+ADD.OBJ-+SUB.OBJ-+MUL.OBJ-+DIV.OBJ
  7008.           listing
  7009.  
  7010. Because no file name is listed after the LIB command, the in-line file is given 
  7011. a unique name and placed into the current directory (or the directory defined 
  7012. by the TMP environment variable). 
  7013.  
  7014.  
  7015. ΓòÉΓòÉΓòÉ 16.10.2. Escape Characters ΓòÉΓòÉΓòÉ
  7016.  
  7017. NMAKE uses the following punctuation characters in its syntax: 
  7018.  
  7019. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7020. Γöé(     Γöé)     Γöé#     Γöé$     Γöé^     Γöé\     Γöé
  7021. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7022. Γöé{     Γöé}     Γöé!     Γöé@     Γöé-     Γöé      Γöé
  7023. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7024.  
  7025. To use one of these characters in a command and not have it interpreted by 
  7026. NMAKE, use a caret ( ^ ) in front of the character. 
  7027.  
  7028. For example, 
  7029.  
  7030. BIG^#.C
  7031.  
  7032. is treated as 
  7033.  
  7034. BIG#.C
  7035.  
  7036. With the caret, you can include a literal newline character in a description 
  7037. file.  This capability is useful in macro definitions, as in the following 
  7038. example: 
  7039.  
  7040. XYZ=abc^<ENTER>
  7041. def
  7042.  
  7043. The effect is equivalent to the effect of assigning the C-style string abc\ndef 
  7044. to the XYZ macro.  Note that this effect differs from the effect of using the 
  7045. backslash ( \ ) to continue a line. A newline character that follows a 
  7046. backslash is replaced with a space. 
  7047.  
  7048. NMAKE ignores a caret that is not followed by any of the characters it uses in 
  7049. its syntax.  A caret that appears within quotation marks is not treated as an 
  7050. escape character. 
  7051.  
  7052. Note:  The escape character cannot be used in the command portion of a 
  7053.        dependency block. 
  7054.  
  7055.  
  7056. ΓòÉΓòÉΓòÉ 16.11. Characters That Modify Commands ΓòÉΓòÉΓòÉ
  7057.  
  7058. Any of three characters can be placed in front of a command to modify how the 
  7059. command is run: 
  7060.  
  7061.  - (dash)       Turns off error checking for the command 
  7062.  
  7063.  @ (at sign)    Suppresses display of the command 
  7064.  
  7065.  ! (exclamation point) Executes the command for each dependent file 
  7066.  
  7067.  NOTE 
  7068.  
  7069.    1. Spaces can separate the modifying character from the command. Any command 
  7070.       on a separate line  - whether modified or not - must be indented by one 
  7071.       or more spaces or tabs. 
  7072.  
  7073.    2. You can use more than one character to modify a single command. 
  7074.  
  7075.  
  7076. ΓòÉΓòÉΓòÉ 16.11.1. Turn Error Checking Off (-) ΓòÉΓòÉΓòÉ
  7077.  
  7078. Syntax:  -[n] command 
  7079.  
  7080. The /I option globally turns command error-checking off.  The dash (-) command 
  7081. modifier overrides the global setting to turn error checking off for commands 
  7082. individually.  This modifier is used in two ways: 
  7083.  
  7084.    o  A dash without a number turns off all error checking. 
  7085.  
  7086.    o  A dash followed by a number causes NMAKE to abort only if the exit code 
  7087.       returned by the command is greater than the number. 
  7088.  
  7089.  See Ignore Exit Codes (/I). 
  7090.  
  7091.  
  7092. ΓòÉΓòÉΓòÉ 16.11.2. Dash Command Modifier Examples ΓòÉΓòÉΓòÉ
  7093.  
  7094. LIGHT.LST : LIGHT.TXT
  7095.   - FLASH LIGHT.TXT
  7096.  
  7097. In the example above, NMAKE never ends, regardless of the exit code returned by 
  7098. FLASH. 
  7099.  
  7100. LIGHT.LST : LIGHT.TXT
  7101.   -1 FLASH LIGHT.TXT
  7102.  
  7103. In the example above, NMAKE ends if the exit code returned by FLASH is greater 
  7104. than 1. 
  7105.  
  7106.  
  7107. ΓòÉΓòÉΓòÉ 16.11.3. Suppress Command Display (@) ΓòÉΓòÉΓòÉ
  7108.  
  7109. Syntax:  @ command 
  7110.  
  7111. The /S option globally suppresses the display of commands while NMAKE is 
  7112. running.  The at sign (@) modifier suppresses the display for individual 
  7113. commands. 
  7114.  
  7115. Note:  Regardless of the /S option or the @ modifier, output generated by the 
  7116.        command itself always appears. 
  7117.  
  7118.  See Suppress Command Display (/S). 
  7119.  
  7120.  
  7121. ΓòÉΓòÉΓòÉ 16.11.4. At Sign (@) Command Modifier Example ΓòÉΓòÉΓòÉ
  7122.  
  7123. Suppress Command Display (@) 
  7124.  
  7125. SORT.EXE:SORT.OBJ
  7126.   @ ECHO sorting
  7127.  
  7128. The command line calling the ECHO command is not displayed.  The output of the 
  7129. ECHO command, however, is displayed. 
  7130.  
  7131.  
  7132. ΓòÉΓòÉΓòÉ 16.11.5. Execute Command for Dependents (!) ΓòÉΓòÉΓòÉ
  7133.  
  7134. Syntax:  ! command 
  7135.  
  7136. The exclamation-point command modifier causes the command to be executed for 
  7137. each dependent file if the command uses one of the special macros $? or $**. 
  7138. The $? macro refers to all dependent files out-of-date with respect to the 
  7139. target.  The $** macro refers to all dependent files in the description block. 
  7140.  
  7141. See Special Macros. 
  7142.  
  7143.  
  7144. ΓòÉΓòÉΓòÉ 16.11.6. Exclamation Point (!) Command Modifier Examples ΓòÉΓòÉΓòÉ
  7145.  
  7146. LEAP.TXT : HOP.ASM SKIP.BAS JUMP.C
  7147.   ! print $** lpt1:
  7148.  
  7149. The example above executes the following three commands, regardless of the 
  7150. modification dates of the dependent file: 
  7151.  
  7152. print HOP.ASM lpt1:
  7153. print SKIP.BAS lpt1:
  7154. print JUMP.C lpt1:
  7155.  
  7156. LEAP.TXT : HOP.ASM SKIP.BAS JUMP.C
  7157.   ! print $? lpt1:
  7158.  
  7159. The example above executes the print command only for those dependent files 
  7160. with modification dates later than that of the LEAP.TXT file. If HOP.ASM and 
  7161. JUMP.C have modification dates later than LEAP.TXT, the following two commands 
  7162. are executed: 
  7163.  
  7164. print HOP.ASM lpt1:
  7165. print JUMP.C lpt1:
  7166.  
  7167.  
  7168. ΓòÉΓòÉΓòÉ 16.11.7. EXTMAKE Syntax ΓòÉΓòÉΓòÉ
  7169.  
  7170. Description files can use a special syntax to determine the drive, path, base 
  7171. name, and extension of the first dependent file in a description block.  This 
  7172. syntax is called the "extmake" syntax. 
  7173.  
  7174. The characters %s represent the complete file specification of the first 
  7175. dependent file.  Various parts of the file specification are represented using 
  7176. the syntax 
  7177.  
  7178. %|partsF
  7179.  
  7180. where <parts> is a combination of the following letters: 
  7181.  
  7182.  d  Drive 
  7183.  p  Path 
  7184.  f  Base name 
  7185.  e  Extension 
  7186.  
  7187.  For example, to specify the drive and path name of the first dependent file in 
  7188.  a description block, use:
  7189.  
  7190.   %|dpF 
  7191.  
  7192.  The percent symbol (%) is a replacement in DOS and OS/2 command lines.  To use 
  7193.  the percent symbol in command-line arguments, use a double percent (%%). 
  7194.  
  7195.  
  7196. ΓòÉΓòÉΓòÉ 16.12. Macros and Inference Rules in TOOLS.INI ΓòÉΓòÉΓòÉ
  7197.  
  7198. You can place either macros or inference rules in your TOOLS.INI file.  NMAKE 
  7199. looks for the TOOLS.INI file first in the current directory and then in the 
  7200. directory indicated by the INIT environment variable. 
  7201.  
  7202. If NMAKE finds a TOOLS.INI file, it looks for the following tag: 
  7203.  
  7204. [nmake]
  7205.  
  7206. You can place macros and inference rules below this tag in the same format you 
  7207. would use in a description file. 
  7208.  
  7209. If a macro or inference rule is defined in both the TOOLS.INI file and the 
  7210. description file, the definition in the description file takes precedence. 
  7211. Also, if you use the /R option, the TOOLS.INI file is ignored. 
  7212.  
  7213.  
  7214. ΓòÉΓòÉΓòÉ 16.12.1. TOOLS.INI Example ΓòÉΓòÉΓòÉ
  7215.  
  7216. [nmake]
  7217. CFLAGS=/ss /ms /Gd-
  7218. .C.OBJ:
  7219.   $(CC) -c $(CFLAGS) $*.C
  7220.  
  7221. These lines in the TOOLS.INI file do the following: 
  7222.  
  7223.    o  Define the CFLAGS macro as "/ss /ms /Gd-" 
  7224.  
  7225.    o  Redefine the predefined inference rule to build .OBJ files from .C source 
  7226.       files 
  7227.  
  7228.  
  7229. ΓòÉΓòÉΓòÉ 17. Quick Information (KwikINF) ΓòÉΓòÉΓòÉ
  7230.  
  7231. KwikINF provides you with a quick and convenient method of accessing 
  7232. information in online documents stored in the OS/2 BOOKSHELF from anywhere on 
  7233. the desktop, with the exception of DOS or WIN-OS/2 sessions. When KwikINF has 
  7234. been started, you can open a dialog with KwikINF by pressing a user-selectable 
  7235. hot key. Until you configure KwikINF, your KwikINF hot key is ALT+Q. The 
  7236. KwikINF window includes a Configure push button. This opens another dialog with 
  7237. KwikINF:  the Configure KwikINF window. The KwikINF window also allows you to 
  7238. initiate searches for text strings in online documents of choice. 
  7239.  
  7240.  
  7241. ΓòÉΓòÉΓòÉ 17.1. Automatic Text Retrieval ΓòÉΓòÉΓòÉ
  7242.  
  7243. The KwikINF window includes a Search String entry field. You can specify the 
  7244. text string you want KwikINF to search for. Or, under certain conditions, this 
  7245. entry field automatically contains the word located under the cursor when you 
  7246. press your KwikINF hot key. This text retrieval feature is available from OS/2 
  7247. full-screen and Presentation Manager (PM) multi-line entry (MLE) fields. This 
  7248. feature is also available from PM AVIO and VIO windows. Communication Manager's 
  7249. 3270 emulator is a common example of a PM AVIO window. An OS/2 Window is a VIO 
  7250. window. This means that if, for example, you open an OS/2 Window and start an 
  7251. OS/2 text-based application, KwikINF will automatically retrieve the word under 
  7252. the cursor when you press your KwikINF hot key. This automatic text-retrieval 
  7253. feature is not available from graphic-text PM windows. 
  7254.  
  7255.  
  7256. ΓòÉΓòÉΓòÉ 17.2. BOOKSHELF Online Documents ΓòÉΓòÉΓòÉ
  7257.  
  7258. The KwikINF window includes a Volume to Search list box of all online documents 
  7259. stored in the OS/2 BOOKSHELF subdirectories. KwikINF initiates searches for 
  7260. information in any online document in this list. 
  7261.  
  7262. The BOOKSHELF is an environment variable, set in CONFIG.SYS, that contains a 
  7263. list of subdirectories containing online documents created as viewable .INF 
  7264. files with the Information Presentation Facility (IPF). The BOOKSHELF 
  7265. environment variable is set as follows: 
  7266.  
  7267. SET BOOKSHELF=<subdirectory>;...;<subdirectory>; 
  7268.  
  7269. Online documents for OS/2 (for example, the Command Reference) are stored in 
  7270. the \OS2\BOOK subdirectory of the drive on which OS/2 is installed.  Online 
  7271. documents for the OS/2 Toolkit (for example, the Programming References) are 
  7272. stored in the \TOOLKIT\BOOK subdirectory of the drive specified during 
  7273. installation of the online programming information. As an example, after 
  7274. installation of OS/2 and the Toolkit, the BOOKSHELF environment variable is set 
  7275. as follows: 
  7276.  
  7277. SET BOOKSHELF=C:\OS2\BOOK;D:\TOOLKIT\BOOK; 
  7278.  
  7279. Where c: is the drive where OS/2 is installed and D: is the drive where the 
  7280. Toolkit is installed. 
  7281.  
  7282. The online document where KwikINF looks for the Search String is selected from 
  7283. the Volume to Search list box by KwikINF or by you. KwikINF selects the Volume 
  7284. to Search by looking for the text string that has a matching entry in the 
  7285. KwikINF index file or, if there is no matching entry in the index file, in the 
  7286. Default Volume you have selected in the Configure KwikINF window. 
  7287.  
  7288.  
  7289. ΓòÉΓòÉΓòÉ 17.2.1. Index Files for Rapid Search ΓòÉΓòÉΓòÉ
  7290.  
  7291. The KwikINF index file provides a rapid-search mechanism for locating specific 
  7292. kinds of information in online documents in the BOOKSHELF. The KwikINF index 
  7293. file consists of one or more concatenated files stored in the BOOKSHELF and 
  7294. defined by the HELPNDX variable in CONFIG.SYS as shown in the following 
  7295. example: 
  7296.  
  7297. SET HELPNDX=EPMKWHLP.NDX
  7298.  
  7299. where EPMKWHLP.NDX is the KwikINF index file for the OS/2 Toolkit. 
  7300.  
  7301. As an example, the following excerpt from the KwikINF index file for the OS/2 
  7302. Toolkit: 
  7303.  
  7304. EXTENSIONS: *
  7305. DESCRIPTION: IBM Developer's Toolkit for OS/2
  7306. (IPF*, view ipfc20.inf ~)
  7307. (WinCreateWindow, view pmwin.inf ~)
  7308.  
  7309. is used by KwikINF to quickly locate Search String entries with the prefix IPF 
  7310. in the IPF-viewable file IPFC20.INF. and to quickly locate the specific Search 
  7311. String entry WinCreateWindow in the IPF-viewable file PMWIN.INF. 
  7312.  
  7313. The first token in a rapid-search string is a specific text string (for 
  7314. example, WinCreateWindow) or prefix wildcard (for example, IPF*).  It is also 
  7315. used as the text-string you want VIEW.EXE to locate within the online document. 
  7316. The second token is the name of the IPF file viewer (VIEW.EXE). The third token 
  7317. is a parameter for VIEW.EXE: the name of the .INF file that contains the online 
  7318. document.  Currently, the fourth token is not being used and it is treated as a 
  7319. comment. 
  7320.  
  7321.  
  7322. ΓòÉΓòÉΓòÉ 17.2.2. Enabling Online Documents ΓòÉΓòÉΓòÉ
  7323.  
  7324. You can enable any online document for KwikINF by: 
  7325.  
  7326.    1. Creating the online document as a viewable .INF file using the 
  7327.       Information Presentation Facility (IPF). 
  7328.  
  7329.    2. Appending the name of the subdirectory where it is stored to the 
  7330.       BOOKSHELF in CONFIG.SYS. 
  7331.  
  7332.    3. Creating an index file to support the KwikINF rapid-search mechanism, 
  7333.       storing it in the BOOKSHELF, and adding it to the HELPNDX variable in 
  7334.       CONFIG.SYS. 
  7335.  
  7336.  For example, you can enable your online document MYDOC stored in MYSUBDIR 
  7337.  subdirectory for KwikINF by: 
  7338.  
  7339.    1. Compiling the tagged source for MYDOC with the IPF compiler by entering: 
  7340.  
  7341.             IPFC MYDOC /INF
  7342.  
  7343.    2. Modifying the BOOKSHELF statement in CONFIG.SYS as follows: 
  7344.  
  7345.             SET BOOKSHELF=...;C:\MYSUBDIR;
  7346.  
  7347.    3. Creating MYINDEX file in MYSUBDIR as shown below: 
  7348.  
  7349.             /* C style comments and blank lines are acceptable */
  7350.             /* specific file extensions may be specified here  */
  7351.             EXTENSIONS: *
  7352.             /* a title may be placed here                      */
  7353.             DESCRIPTION: Any custom KwikINF index file
  7354.             /* rapid-search strings                            */
  7355.             (thisfunction, view mydoc.inf ~)
  7356.             (my*, view mydoc.inf ~)
  7357.  
  7358.    4. Modifying the HELPNDX variable in CONFIG.SYS as follows: 
  7359.  
  7360.             SET HELPNDX=EPMKWHLP.NDX+MYINDEX.NDX
  7361.  
  7362.  For more information on creating an IPF-viewable online document, see the IPF 
  7363.  Reference in the Toolkit Information folder. 
  7364.  
  7365.  
  7366. ΓòÉΓòÉΓòÉ 17.3. Using KwikINF ΓòÉΓòÉΓòÉ
  7367.  
  7368. KwikINF is installed as a program object in the OS/2 Toolkit Information 
  7369. folder.  You start KwikINF by double-clicking on the KwikINF object or by 
  7370. entering KwikINF from the command line of an OS/2 Window. You can start KwikINF 
  7371. automatically when you start OS/2 by placing a shadow of the KwikINF object in 
  7372. the Startup folder in the OS/2 System folder on the desktop. You shadow an 
  7373. object by pressing CTRL + SHIFT while dragging the object. 
  7374.  
  7375. KwikINF installs a PM system hook to monitor keystrokes in PM sessions and OS/2 
  7376. character device monitors to monitor keystrokes in OS/2 full-screen sessions. 
  7377. KwikINF will install only one copy of the hook and monitors, even if you 
  7378. attempt to re-start KwikINF. 
  7379.  
  7380. When KwikINF has been started, you can initiate searches for text strings in 
  7381. online documents of choice by pressing a user-selectable hot key. 
  7382.  
  7383. Note:  You cannot initiate searches for text strings in online documents from 
  7384.        DOS or WIN-OS/2 sessions. 
  7385.  
  7386.  Until you configure KwikINF, your KwikINF hot key is ALT+Q. You configure 
  7387.  KwikINF by pressing your KwikINF hot key and then pressing the Configure push 
  7388.  button to open the Configure KwikINF window. 
  7389.  
  7390.  Note:  When you start KwikINF by double-clicking on the KwikINF object in the 
  7391.         Toolkit Information folder, a message box tells you what hot key opens 
  7392.         the KwikINF window. This technique can also be used to determine what 
  7393.         your current KwikINF hot key is, after KwikINF has been started. 
  7394.  
  7395.  How you initiate a search for information in online documents is dependent on 
  7396.  where you are on the desktop when you press the KwikINF hot key: 
  7397.  
  7398.    o  From an OS/2 full-screen session, a PM VIO or AVIO window, or PM MLE: 
  7399.       position the cursor on the string you want to search for and press the 
  7400.       KwikINF hot key. KwikINF retrieves the word at the cursor. If you have 
  7401.       configured KwikINF to display the KwikINF window when the KwikINF hot key 
  7402.       is pressed, KwikINF automatically places the retrieved word in the Search 
  7403.       String entry field of the KwikINF window. When you press the Search push 
  7404.       button or Enter, KwikINF displays the information. If you have configured 
  7405.       KwikINF to bypass the KwikINF window when the KwikINF hot key is pressed, 
  7406.       KwikINF automatically displays the information. 
  7407.  
  7408.       If no word is under the cursor, the previous Search String is used. If no 
  7409.       previous Search String exists, KwikINF displays the Contents of the 
  7410.       Default volume to search. 
  7411.  
  7412.    o  From a graphic-text PM window: press the KwikINF hot key, then type the 
  7413.       string you want to search for in the Search String entry field of the 
  7414.       KwikINF window. The KwikINF text-retrieval feature is not available from 
  7415.       graphic-text PM windows. 
  7416.  
  7417.  The online document where KwikINF looks for the text string is selected from 
  7418.  the Volume to Search list box by KwikINF or by you. To open the online 
  7419.  document to the panel that contains the information, press the Search push 
  7420.  button or press Enter. 
  7421.  
  7422.  
  7423. ΓòÉΓòÉΓòÉ 17.3.1. KwikINF From the Command Line ΓòÉΓòÉΓòÉ
  7424.  
  7425. You can start, terminate, and configure KwikINF from the command line in an 
  7426. OS/2 Window by entering: 
  7427.  
  7428. KwikINF [no options] [/C] [/T] [/?]
  7429.  
  7430. where: 
  7431.  
  7432.  no options  starts KwikINF. After entering this command, the default KwikINF 
  7433.              hot key (ALT + Q) is enabled. 
  7434.  
  7435.  /T          terminates KwikINF and disables the KwikINF hot key. 
  7436.  
  7437.  /C          opens the Configure KwikINF window. Use this window to select 
  7438.              another KwikINF hot key, to select a default online document from 
  7439.              the BOOKSHELF to search, and to select the activation behavior of 
  7440.              the KwikINF window. 
  7441.  
  7442.  /?          displays the following information. 
  7443.  
  7444.                            Usage: KwikINF [Option]
  7445.                             Option    Description
  7446.                               /C      Configure KwikINF
  7447.                               /T      Terminate KwikINF
  7448.                               /?      This short help list
  7449.  
  7450.  
  7451. ΓòÉΓòÉΓòÉ 17.3.2. Configuring KwikINF ΓòÉΓòÉΓòÉ
  7452.  
  7453. You configure KwikINF through the Configure KwikINF window. KwikINF displays 
  7454. this window when you press the Configure push button on the KwikINF window or 
  7455. when you enter the following from the command line of an OS/2 Window: 
  7456.  
  7457. KwikINF /C
  7458.  
  7459. The Configure KwikINF window allows you to: 
  7460.  
  7461.    o  Select another KwikINF hot key. 
  7462.  
  7463.    o  Specify the number of OS/2 full-screen sessions enabled for KwikINF. 
  7464.  
  7465.    o  Specify the name of the default online document KwikINF searches. 
  7466.  
  7467.    o  Select the activation behavior of the KwikINF window. 
  7468.  
  7469.  Use the push buttons on the Configure KwikINF window as follows: 
  7470.  
  7471.    o  Press OK to enable your configuration choices. 
  7472.  
  7473.    o  Press Cancel to cancel your configuration choices. This closes the 
  7474.       Configure KwikINF window. 
  7475.  
  7476.    o  Press Help to get general help for the current window. 
  7477.  
  7478.  
  7479. ΓòÉΓòÉΓòÉ 17.3.3. Activation Key Sequence ΓòÉΓòÉΓòÉ
  7480.  
  7481. The Activation Key Sequence provides a selectable list of KwikINF hot keys. To 
  7482. access the list, single-click on the down arrow. Select the KwikINF hot key of 
  7483. your choice from the following list: 
  7484.  
  7485.  CTRL   + A 
  7486.  
  7487.  CTRL   + H 
  7488.  
  7489.  CTRL   + Q 
  7490.  
  7491.  ALT    + A 
  7492.  
  7493.  ALT    + Q (this is the default hot key) 
  7494.  
  7495.  The KwikINF hot key initiates searches for information in online documents 
  7496.  from anywhere on the desktop, with the exception of DOS or WIN-OS/2 sessions. 
  7497.  
  7498.  
  7499. ΓòÉΓòÉΓòÉ 17.3.4. Full Screen Sessions ΓòÉΓòÉΓòÉ
  7500.  
  7501. Use the Number of Fullscreen Sessions to Monitor spin button to specify the 
  7502. number of OS/2 full-screen sessions enabled for KwikINF.  KwikINF is 
  7503. implemented as a PM system hook to monitor keystrokes in PM sessions and as 
  7504. OS/2 character device monitors to monitor keystrokes in OS/2 full-screen 
  7505. sessions.  For OS/2 full-screen sessions, KwikINF will monitor only the number 
  7506. of sessions specified here. 
  7507.  
  7508.  
  7509. ΓòÉΓòÉΓòÉ 17.3.5. Default Volume to Search ΓòÉΓòÉΓòÉ
  7510.  
  7511. Use the Default Volume to Search single selection list box to specify which 
  7512. online document in the BOOKSHELF you want KwikINF to search by default. 
  7513. KwikINF looks for the Search String in this online document, when there is no 
  7514. matching entry in the KwikINF index file. Select the online document, then 
  7515. select the OK push button to activate the selection. 
  7516.  
  7517.  
  7518. ΓòÉΓòÉΓòÉ 17.3.6. Activation Behavior ΓòÉΓòÉΓòÉ
  7519.  
  7520. Use the Activation Behavior radio buttons to select the behavior of the KwikINF 
  7521. window. The KwikINF window can be displayed or bypassed when the user presses 
  7522. the KwikINF hot key after KwikINF has been installed. 
  7523.  
  7524.    o  Select the Display KwikINF Window radio button to tell KwikINF that you 
  7525.       always want the KwikINF window to be displayed when you press the KwikINF 
  7526.       hot key to initiate searches for information.  This is the default 
  7527.       behavior of the KwikINF window. 
  7528.  
  7529.       When the you press the KwikINF hot key, you can initiate a search for the 
  7530.       text string that may be automatically displayed in the Search String 
  7531.       entry field or for the text string that you enter into this field. You 
  7532.       can also specify which online document in the BOOKSHELF KwikINF searches 
  7533.       for the text string. 
  7534.  
  7535.    o  Select the Bypass KwikINF Window radio button to tell KwikINF that you do 
  7536.       not want the KwikINF window to be displayed when you press the KwikINF 
  7537.       hot key to initiate searches for information. This is typically used when 
  7538.       working under conditions where the KwikINF automatic text-retrieval 
  7539.       feature is available. 
  7540.  
  7541.       When you press the KwikINF hot key, KwikINF automatically looks for the 
  7542.       text string under the cursor in the online document that has a matching 
  7543.       entry in the KwikINF index file or, if there is no matching entry in the 
  7544.       index file, in the Default volume selected from the Configure KwikINF 
  7545.       window. 
  7546.  
  7547.       You configure KwikINF by pressing the Configure push button in the 
  7548.       KwikINF window. To configure KwikINF when this window is bypassed, press 
  7549.       SHIFT + your KwikINF hotkey to display the Configure KwikINF window. 
  7550.  
  7551.  
  7552. ΓòÉΓòÉΓòÉ 17.4. Searching Using the KwikINF Window ΓòÉΓòÉΓòÉ
  7553.  
  7554. If you have configured KwikINF to display the KwikINF window (this is the 
  7555. default condition), the KwikINF window is displayed when you press your KwikINF 
  7556. hot key. 
  7557.  
  7558. The KwikINF window allows you to search for a text string in an online document 
  7559. in the OS/2 BOOKSHELF.  The text string is typed by you in the Search String 
  7560. entry field or is automatically retrieved by KwikINF, under certain conditions, 
  7561. from under the cursor when you press your KwikINF hot key. 
  7562.  
  7563. The online document that KwikINF searches for the text string is selected from 
  7564. the Volume to Search list box by KwikINF or by you.  KwikINF selects the Volume 
  7565. to Search by looking for the text string that has a matching entry in the 
  7566. KwikINF index file or, if there is no matching entry in the index file, in the 
  7567. Default Volume you have selected in the Configure KwikINF window.  Or you can 
  7568. override KwikINF's selection of the Volume to Search by making your own 
  7569. selection from the list box. 
  7570.  
  7571. To initiate the search for the text string in the online document, press the 
  7572. Search push button or press Enter. If the search is successful, KwikINF opens 
  7573. the online document to the online panel that contains the information and 
  7574. displays a window with a title bar that matches the search string. 
  7575.  
  7576. If the search is not successful, you can search any online document for the 
  7577. information by following this procedure: 
  7578.  
  7579.    o  Clear the Search String entry field. 
  7580.  
  7581.    o  Select an online document from the Volume to Search list box.  The 
  7582.       Contents window of the online document appears. 
  7583.  
  7584.    o  Select Services from the menu bar. 
  7585.  
  7586.    o  Select Search from the Services pull down menu.  The Search help window 
  7587.       appears. 
  7588.  
  7589.    o  Type the text string, then select the All libraries radio button. 
  7590.  
  7591.    o  Select the Search push button or press Enter. 
  7592.  
  7593.  Use the push buttons on the KwikINF window as follows: 
  7594.  
  7595.    o  Press Search to initiate the search for the text string in the Search 
  7596.       String entry field in the selected online document. 
  7597.  
  7598.    o  Press Cancel to cancel the request to search for the text string and to 
  7599.       close the KwikINF window. 
  7600.  
  7601.    o  Press Configure to display the Configure KwikINF window. 
  7602.  
  7603.    o  Press Help to get general help for the current window. 
  7604.  
  7605.  
  7606. ΓòÉΓòÉΓòÉ 17.4.1. Search String Entry Field ΓòÉΓòÉΓòÉ
  7607.  
  7608. KwikINF searches for the text string in this entry field in the selected online 
  7609. document in the OS/2 BOOKSHELF. 
  7610.  
  7611. Under certain conditions, KwikINF automatically retrieves the word under the 
  7612. cursor when you press your KwikINF hot key. Letters, numbers, underscores, and 
  7613. the pound sign are retrievable by KwikINF. Blank spaces and other special 
  7614. characters are used as delimiters and are not retrievable by KwikINF. 
  7615.  
  7616. You may also type any text string you want into this field. All characters are 
  7617. valid in the entry field to allow for special search criteria. 
  7618.  
  7619.  
  7620. ΓòÉΓòÉΓòÉ 17.4.2. VOLUME TO SEARCH List Box ΓòÉΓòÉΓòÉ
  7621.  
  7622. The KwikINF window includes a list box of all online documents stored in the 
  7623. OS/2 BOOKSHELF subdirectories.  KwikINF initiates searches for information in 
  7624. any online document in this list. The online document where KwikINF looks for 
  7625. the Search String is selected from the Volume to Search list box by KwikINF or 
  7626. by you.  KwikINF selects the Volume to Search by looking for the text string 
  7627. that has a matching entry in the KwikINF index file or, if there is no matching 
  7628. entry in the index file, in the Default Volume you have selected in the 
  7629. Configure KwikINF window. Or you can override KwikINF's selection of the Volume 
  7630. to Search by making your own selection from the list box. 
  7631.  
  7632. You can also open and display the Contents of an online document by 
  7633. double-clicking on an entry in this list box. 
  7634.  
  7635.  
  7636. ΓòÉΓòÉΓòÉ 17.4.3. KwikINF Keys Help ΓòÉΓòÉΓòÉ
  7637.  
  7638. Use your KwikINF hot key (ALT+Q or the hot key you select from the Configure 
  7639. KwikINF window) to display the KwikINF window. You can also use your KwikINF 
  7640. hot key to initiate a search for a text string automatically, when you 
  7641. configure KwikINF to bypass the KwikINF window. 
  7642.  
  7643. To re-configure KwikINF, when you have configured KwikINF to bypass the KwikINF 
  7644. window, press SHIFT + your KwikINF hot key. 
  7645.  
  7646. To determine what your KwikINF hot key is, double-click on the KwikINF program 
  7647. object in the OS/2 Toolkit Information folder. 
  7648.  
  7649.  
  7650. ΓòÉΓòÉΓòÉ 18. Resource Compiler ΓòÉΓòÉΓòÉ
  7651.  
  7652. The OS/2 Resource Compiler (RC) is an application-development tool that lets 
  7653. you add application resources, such as message strings, pointers, menus, and 
  7654. dialog boxes, to the executable file of your application. The Resource Compiler 
  7655. is primarily intended to prepare data for OS/2 applications that use functions 
  7656. such as WinLoadString, WinLoadPointer, WinLoadMenu, and WinLoadDlg.  These 
  7657. functions load resources from the executable file of your application or 
  7658. another specified executable file.  The application can then use the loaded 
  7659. resources as needed. 
  7660.  
  7661. The Resource Compiler and the resource functions let you quickly define and/or 
  7662. modify application resources without recompiling the application itself.  That 
  7663. is, RC can modify the resources in an executable file at any time without 
  7664. affecting the rest of the file. This means that you can create custom 
  7665. applications from a single executable file - you just use RC to add the custom 
  7666. resources you need to each application. 
  7667.  
  7668. The Resource Compiler is especially important for international applications 
  7669. because it lets you define all language-dependent data, such as message 
  7670. strings, as resources.  Preparing the application for a new language is simply 
  7671. a matter of adding new resources to the existing executable file. 
  7672.  
  7673. Note:  Make sure the file RCPP.EXE (the Resource Compiler preprocessor) is 
  7674.        available for the use of the Resource Compiler. It can be in the current 
  7675.        directory, or in a directory to which there is a path. 
  7676.  
  7677.  
  7678. ΓòÉΓòÉΓòÉ 18.1. Command-Line Options ΓòÉΓòÉΓòÉ
  7679.  
  7680. The following options can be specified on the Resource Compiler command line: 
  7681.  
  7682.  -d<defname>[=<value>] Define macro to preprocessor 
  7683.  -i <pathspec>       Include file path 
  7684.  -r                  Create .res file 
  7685.  -p                  Pack - 386 resources will not cross 64K boundaries. 
  7686.  -cp (or -k)  {<codepage>|<lbs,lbe>...} -DBCS code page or lead byte 
  7687.                      information 
  7688.  -x[{1|2}]           Exepack - compress resources, using method 1 or 2. 
  7689.  -cc <countrycode>   Country code 
  7690.  -h                  Access Help 
  7691.  
  7692.  Leave a blank after the letter when using option -cc, -D, -I , -cp or -k. 
  7693.  Upper or lowercase can be used. 
  7694.  
  7695.  
  7696. ΓòÉΓòÉΓòÉ 18.1.1. Explanation of Command-Line Options. ΓòÉΓòÉΓòÉ
  7697.  
  7698. The -D option is useful for passing conditional-compilation flags to the 
  7699. preprocessor. The <defname> is a sequence of letters, underscore symbols, and 
  7700. digits which does not begin with a digit. The <value> is a sequence of symbols 
  7701. which you want to substitute for the <defname> wherever it appears in the input 
  7702. script file.  If you omit the =<value>, the <defname> will be set to the 
  7703. default value 1. For example, the option -D_3d is equivalent to including at 
  7704. the beginning of the input file this line: 
  7705.  
  7706. #define   _3d     1 
  7707.  
  7708. You can use the -D option up to eight times to define different macros from the 
  7709. command line. 
  7710.  
  7711. The -I option defines paths for files to be included with the source file. The 
  7712. <pathspec> is any path where you want RC to search for files included by the 
  7713. preprocessor #include directive.  The <pathspec> must not contain embedded 
  7714. blanks.  To include more than one path, code the -I option once for each path. 
  7715. The preprocessor reads paths from the INCLUDE environment after reading the 
  7716. paths you provide with -I options. 
  7717.  
  7718. The -r switch will create in your current directory a binary resource file 
  7719. containing the resources you compile.  The -r switch takes no argument.  The 
  7720. name given to this binary resource file will be the same as the name of the 
  7721. input resource script file except that the extension will be .RES instead of 
  7722. .RC. When you use -r, you do not bind resources to an executable file. 
  7723.  
  7724. The -p switch is used only when binding resources to an executable.  It 
  7725. positions resources so that they do not cross 64K boundaries. 
  7726.  
  7727. The -cp or -k option is used to specify code page information for the resource 
  7728. script file to be compiled. The <codepage> is a numeric code page value from 
  7729. the Code Page Table. Instead of specifying a code page, you may provide a 
  7730. sequence of pairs of DBCS lead byte code points.  Each pair of numbers gives 
  7731. the lower and upper limit of a range of code points which are to be interpreted 
  7732. as DBCS lead bytes. The code page must be valid for the country code in effect: 
  7733. either the default country code or the country specified using the -CC option. 
  7734.  
  7735. The -CC option allows you to specify a country code for the resource script 
  7736. file to be compiled. The <countrycode> is a number from the table.  For more 
  7737. information see Code Page Table. 
  7738.  
  7739. The -X option is used only when binding resources to an executable.  It causes 
  7740. resources to be compressed.  These resources will be decompressed automatically 
  7741. when the resource is accessed. 
  7742.  
  7743. The -X1 option causes Resource Compiler to use the compression algorithm that 
  7744. is compatible with OS/2 2.0, 2.1, and 2.11. 
  7745.  
  7746. The -X2 option causes Resource Compiler to use a compression algorithm that is 
  7747. incompatible with OS/2 2.0, 2.1 and 2.11.  The -X2 option will produce smaller 
  7748. executable files that can access resources faster. 
  7749.  
  7750. -x with no number defaults to -X1. 
  7751.  
  7752. When you give the -h switch, Resource Compiler will display on your screen a 
  7753. summary of the available options and environment variables that it uses.  When 
  7754. you give -h, Resource Compiler does not read any input files.  This is 
  7755. equivalent to entering on the command line "RC" with no operands. 
  7756.  
  7757.  
  7758. ΓòÉΓòÉΓòÉ 18.1.2. Help ΓòÉΓòÉΓòÉ
  7759.  
  7760. To display Resource Compiler help, type RC at the prompt, with no parameters. 
  7761. The appropriate copyright statement will be displayed, along with a list of 
  7762. Resource Compiler options. You can also display this list by using the 
  7763. command-line option -h. 
  7764.  
  7765. Usage:  rc [<options>] <.RC input file>[<.EXE output file>]
  7766.  
  7767.   -d defname        - Preprocessor define
  7768.   -Ddefname         - Preprocessor define
  7769.   -i                - Include file path
  7770.   -r                - Create .res file
  7771.   -x[1|2]           - Exepack-compress resources using method 1or 2
  7772.   -cc cc            - country code
  7773.   -p                - Pack - 386 resources will not cross 64K boundaries
  7774.   -cp cp | lb,tb,...- DBCS codepage or lead/trail byte information
  7775.   -h                - Access Help
  7776.  
  7777. Environment variables:
  7778.   DBCS=cp | lb,tb,...
  7779.   TMP=temporary file path
  7780.   TEMP=temporary file path
  7781.   INCLUDE=include file path
  7782.  
  7783. Note:  Option -X2 will produce executable files that are incompatible with OS/2 
  7784.        2.0, 2.1, and 2.11.
  7785.  
  7786.  
  7787. ΓòÉΓòÉΓòÉ 18.2. Resource Script Files ΓòÉΓòÉΓòÉ
  7788.  
  7789. This topic describes the resource script file used to define your application 
  7790. resources and explains how to compile the file and add the resources to your 
  7791. executable file. 
  7792.  
  7793. Use the Resource Compiler to perform the following actions: 
  7794.  
  7795.    o  Create a resource script file. 
  7796.  
  7797.    o  Compile the file. 
  7798.  
  7799.    o  Add the file to the executable file of your application (optional). 
  7800.  
  7801.  The following sections describe the resource script file and the RC program. 
  7802.  
  7803.  Resource Script Files 
  7804.  
  7805.  A resource script file consists of one or more resource statements that define 
  7806.  the type, identifier, and data for each resource.  For example, the following 
  7807.  multiple-line resource statement defines a menu to be used with an 
  7808.  application: 
  7809.  
  7810.     MENU 1
  7811.     BEGIN
  7812.         MENUITEM "Alpha", 101
  7813.         MENUITEM "Beta", 102
  7814.     END
  7815.  
  7816.  A resource script file is a text file you can create by using an ordinary text 
  7817.  editor.  Since some resources may contain binary data that cannot be created 
  7818.  using a text editor, many resource statements let you specify additional files 
  7819.  to include when compiling the resource script file. For example, the following 
  7820.  statement defines an icon and specifies the file MYICON.ICO as containing the 
  7821.  icon data: 
  7822.  
  7823.     ICON 1 myicon.ico
  7824.  
  7825.  Directives 
  7826.  
  7827.  A resource script file can also contain directives. For example, the following 
  7828.  directive includes the header file OS2.H when RC processes the resource script 
  7829.  file: 
  7830.  
  7831.     #include <os2.h>
  7832.  
  7833.  Resource script files typically have the .RC filename extension. .RC is the 
  7834.  default extension; use it for all your resource script files. 
  7835.  
  7836.  Note:  Although the Resource Compiler is C-like in syntax, it is not a C 
  7837.         compiler. Use only the Resource Compiler statements. 
  7838.  
  7839.  
  7840. ΓòÉΓòÉΓòÉ 18.3. Directives ΓòÉΓòÉΓòÉ
  7841.  
  7842. A directive is a Resource Compiler statement that carries out a task such as 
  7843. including a header file, defining constants, or conditionally compiling 
  7844. portions of the resource script file. 
  7845.  
  7846. Directives 
  7847.  
  7848.       elif Directive 
  7849.       else Directive 
  7850.       endif Directive 
  7851.       if Directive 
  7852.       ifdef Directive 
  7853.       ifndef Directive 
  7854.  
  7855.  
  7856. ΓòÉΓòÉΓòÉ 18.3.1. Using the Resource Compiler ΓòÉΓòÉΓòÉ
  7857.  
  7858. The Resource Compiler (RC) compiles a resource script file to create a new file 
  7859. called a binary resource file. 
  7860.  
  7861. The binary resource file can be added to the executable file of the 
  7862. application, replacing any existing resources in that file. 
  7863.  
  7864. You can start RC in any of three ways. 
  7865.  
  7866.    o  Compile and add a resource definition file to an executable file 
  7867.    o  Compile a resource script file 
  7868.    o  Add a binary resource file to an executable file 
  7869.  
  7870.  The RC command line has the following three basic forms: 
  7871.  
  7872.     rc resource-script-file [executable-file]
  7873.  
  7874.     rc resource-file [executable-file]
  7875.  
  7876.     rc -r  resource-script-file [resource-file]
  7877.  
  7878.  Note:  The third option does not add to the executable file.
  7879.  
  7880.  The resource-script-file field must be the filename of the resource script 
  7881.  file to be compiled.  If the file is not in the current directory, you must 
  7882.  provide a full path.  If you provide a filename without specifying a filename 
  7883.  extension, RC automatically appends the .RC extension to the name. 
  7884.  
  7885.  The executable-file field must be the name of the executable file to receive 
  7886.  the compiled resources.  This is a file having a filename extension of either 
  7887.  .EXE or .DLL.  If the file is not in the current directory, you must provide a 
  7888.  full path.  If you omit the executable-file field, RC adds the compiled 
  7889.  resources to the executable file that has the same name as the resource script 
  7890.  file but which has the .EXE filename extension.  If you specify the 
  7891.  executable-file field but omit the filename extension, RC will append the .EXE 
  7892.  extension.  If this executable file does not exist, RC displays an error 
  7893.  message. 
  7894.  
  7895.  The -r option directs RC to compile the resource script file without adding it 
  7896.  to an executable file.  You can use this option to prepare a binary resource 
  7897.  file that you can add to an executable file at a later time.  If you do not 
  7898.  explicitly name a binary resource file along with the -r option, RC uses the 
  7899.  same name as the resource script file but with the .RES filename extension. 
  7900.  
  7901.  The resource-file field must be the name of the binary resource file to be 
  7902.  added to the executable file.  If the binary resource file does not already 
  7903.  exist, RC creates it; otherwise, RC replaces the existing file.  If the file 
  7904.  is not in the current directory, you must provide a full path.  The binary 
  7905.  resource file must have the .RES filename extension. 
  7906.  
  7907.  For example, to compile the resource script file EXAMPLE.RC, and add the 
  7908.  result to the executable file EXAMPLE.EXE, use the following command: 
  7909.  
  7910.     rc example
  7911.  
  7912.  You do not need to specify the .RC extension. RC creates the binary resource 
  7913.  file EXAMPLE.RES and adds the compiled resource to the executable file 
  7914.  EXAMPLE.EXE. 
  7915.  
  7916.  To compile the resource script file EXAMPLE.RC into a binary resource file 
  7917.  without adding the resources to an executable file, use the following command: 
  7918.  
  7919.     rc -r example
  7920.  
  7921.  The compiler creates the binary resource file EXAMPLE.RES. To create a binary 
  7922.  resource file that has a name different from the resource script file, use the 
  7923.  following command: 
  7924.  
  7925.     rc -r example newfile.res
  7926.  
  7927.  To add the compiled resources in the binary resource file EXAMPLE.RES to an 
  7928.  executable file, use the following command: 
  7929.  
  7930.     rc example.res
  7931.  
  7932.  To specify the name of the executable file, if the name is different from the 
  7933.  resource file, use the following command: 
  7934.  
  7935.     rc example.res newfile.exe
  7936.  
  7937.  To add the compiled resources to a dynamic-link-library (.DLL) file, use the 
  7938.  following command: 
  7939.  
  7940.     rc example.res dynalink.dll
  7941.  
  7942.  In addition to -r, RC offers two other command-line options: -cp and -cc.  The 
  7943.  -cp option lets you specify a code-page identifier or DBCS lead byte 
  7944.  information. The -cc option lets you specify a country code. The syntax is as 
  7945.  follows: 
  7946.  
  7947.     -cp {codepage-id | lead-byte-start, lead-byte-end,...}
  7948.     -cc country-code
  7949.  The lead-byte-start and lead-byte-end fields give the upper and lower limits 
  7950.  of each interval of DBCS lead bytes which you are defining for the code page. 
  7951.  You may specify these values instead of a codepage-id. 
  7952.  
  7953.  The codepage-id or country-code field contains one of the valid code page or 
  7954.  country codes, for example: 
  7955.  
  7956.  
  7957. ΓòÉΓòÉΓòÉ 18.3.2. Code Page Table ΓòÉΓòÉΓòÉ
  7958.  
  7959. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7960. ΓöéCODE-PAGE ID        ΓöéCOUNTRY CODE        ΓöéMEANING             Γöé
  7961. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7962. Γöé932                 Γöé81                  ΓöéJapan               Γöé
  7963. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7964. Γöé934                 Γöé82                  ΓöéKorea               Γöé
  7965. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7966. Γöé936                 Γöé86                  ΓöéChina               Γöé
  7967. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7968. Γöé938                 Γöé88                  ΓöéTaiwan              Γöé
  7969. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7970.  
  7971.  
  7972. ΓòÉΓòÉΓòÉ 18.4. Defining Constants ΓòÉΓòÉΓòÉ
  7973.  
  7974. The -d option lets you define up to eight symbolic constants on the command 
  7975. line.  The syntax is as follows: 
  7976.  
  7977.   -d defname[=value]
  7978.  
  7979. In the previous example, defname is a name, and value is an integer constant, 
  7980. or an expression. The -d option is useful for passing conditional-compilation 
  7981. flags to the RC preprocessor. 
  7982.  
  7983. The following example specifies a Japanese code-page identifier and also 
  7984. defines two symbolic constants to be passed to the preprocessor as 
  7985. conditional-compilation flags. 
  7986.  
  7987.   rc -cp 932 -d DEBUG -d VERSION=2 example
  7988.  
  7989. Note:  To process directives in the resource script file, RC uses the files 
  7990. RCPP.EXE and RCPP.ERR.  Be sure that these files are in the current directory 
  7991. or in a directory specified by your PATH environment variable.  RC creates many 
  7992. temporary files and writes them to the directory indicated by the TMP or TEMP 
  7993. environment variable.  If RC cannot write these temporary files to this 
  7994. directory, it writes them to the current directory. 
  7995.  
  7996.  
  7997. ΓòÉΓòÉΓòÉ 18.4.1. About Resource Statements ΓòÉΓòÉΓòÉ
  7998.  
  7999. Each resource statement consists of one or more keywords, numbers, character 
  8000. strings, constants, or filenames.  You combine these to define the resource 
  8001. type, identifier, and data. 
  8002.  
  8003. Keywords are words that have a special meaning to the Resource Compiler. In a 
  8004. statement, keywords specify the resource type, the load and memory options, and 
  8005. the beginning and end of nested statements. You can use the RC keywords only as 
  8006. specified in the statement syntax. 
  8007.  
  8008. Keywords, except for those specifying directives, can be any combination of 
  8009. uppercase and lowercase letters.  Note that the curly braces, { and }, are 
  8010. reserved characters.  You can use them in place of the BEGIN and END keywords. 
  8011.  
  8012. Numbers are integers that represent coordinates, dimensions, styles, and other 
  8013. numeric data.  You can specify numbers in decimal, octal, or hexadecimal 
  8014. notation: 
  8015.  
  8016.       Decimal numbers must contain decimal digits but can start with a minus 
  8017.       sign (-) when they represent a negative number. 
  8018.       Hexadecimal numbers must contain hexadecimal digits (uppercase or 
  8019.       lowercase) and must start with the characters 0x. 
  8020.       Octal numbers are similar to hexadecimal numbers, except that a lowercase 
  8021.       letter o replaces the x. 
  8022.  
  8023.  The following example shows several numbers represented in decimal, octal, and 
  8024.  hexadecimal notation: 
  8025.  
  8026.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8027.   ΓöéDECIMAL             ΓöéOCTAL               ΓöéHEXADECIMAL         Γöé
  8028.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8029.   Γöé1                   Γöé0o1                 Γöé0x1                 Γöé
  8030.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8031.   Γöé10                  Γöé0o12                Γöé0xA                 Γöé
  8032.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8033.   Γöé255                 Γöé0o377               Γöé0xFF                Γöé
  8034.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8035.   Γöé-1                  Γöé0o177777            Γöé0xFFFF              Γöé
  8036.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8037.   Γöé65535               Γöé0o177777            Γöé0xFFFF              Γöé
  8038.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8039.  
  8040.  Statements that create controls in dialog windows and menu items in menus 
  8041.  require that you specify an identifier for each control or menu item. 
  8042.  Statements that create controls also require you to specify coordinates and 
  8043.  dimensions.  You specify identifiers, coordinates, and dimensions using 
  8044.  integers in the range -32768 through 32767.  Optionally, you can use simple 
  8045.  expressions that evaluate to integers from 0 through 65535; this lets you 
  8046.  specify identifiers, dimensions, and coordinates that are relative to those of 
  8047.  the corresponding dialog window or menu. 
  8048.  
  8049.  Character strings represent names, labels, titles, and messages. A character 
  8050.  string consists of one or more characters enclosed in double quotation marks. 
  8051.  Character values must be in the range 1 through 255. If a double quotation 
  8052.  mark (") is required in a string, you must include the double quotation mark 
  8053.  twice.  The meaning of each character value (that is, the character each value 
  8054.  represents) depends on the code page (character set) defined for the resource 
  8055.  script file. 
  8056.  
  8057.  The Resource Compiler interprets the backslash (\) as an escape character in 
  8058.  character strings.  You can include any ASCII character in a character string 
  8059.  by specifying either \xdd, where dd is the hexadecimal representation of an 
  8060.  ASCII character, or \nnn, where nnn is the octal representation of an ASCII 
  8061.  character.  If a backslash is required in a string, you must include the 
  8062.  backslash twice. 
  8063.  
  8064.  Constants are names that have been assigned values by using the define 
  8065.  directive.  A constant can represent a number, a character string, or other 
  8066.  data.  Most resource statements in a resource script file use constants, and 
  8067.  many use the constants defined in the OS/2 header files (for example, os2.h). 
  8068.  For this reason, you should always use the include directive to include OS2.H 
  8069.  in your resource script file. 
  8070.  
  8071.  Filenames are OS/2 filenames.  If the specified file is not in the current 
  8072.  directory, you must specify the drive, directory, and filename. 
  8073.  
  8074.  Resource statements have three basic forms: 
  8075.  
  8076.       Single-line statements 
  8077.       Multiple-line statements 
  8078.       Directives 
  8079.  
  8080.  Single-line statements consist of a keyword identifying the resource type, a 
  8081.  constant or number specifying the resource identifier, and a filename 
  8082.  specifying the file containing the resource data. For example, this ICON 
  8083.  statement defines an icon resource: 
  8084.  
  8085.     ICON 1 myicon.ico
  8086.  
  8087.  The icon resource has the icon identifier 1. The file MYICON.ICO contains the 
  8088.  icon data. 
  8089.  
  8090.  Multiple-line statements consist of a keyword identifying the resource type, a 
  8091.  constant or number specifying the resource identifier, and, between the BEGIN 
  8092.  and END keywords, additional resource statements that define the resource 
  8093.  data. For example, this MENU statement defines a menu resource: 
  8094.  
  8095.     MENU 1
  8096.     BEGIN
  8097.         MENUITEM "Alpha", 101
  8098.         MENUITEM "Beta",  102
  8099.     END
  8100.  
  8101.  The menu identifier is 1.  The menu contains two MENUITEM statements that 
  8102.  define the contents of the menu. 
  8103.  
  8104.  In multiple-line statements such as DLGTEMPLATE and WINDOWTEMPLATE, RC allows 
  8105.  any level of nested statements.  For example, the DLGTEMPLATE and 
  8106.  WINDOWTEMPLATE statements typically contain a single DIALOG or FRAME 
  8107.  statement.  These statements can contain any number of WINDOW and CONTROL 
  8108.  statements; the WINDOW and CONTROL statements can contain additional WINDOW 
  8109.  and CONTROL statements; and so on.  The nested statements let you define 
  8110.  controls and other child windows for the dialog boxes and windows.  If a 
  8111.  nested statement creates a child window or control, the parent and owner of 
  8112.  the new window is the window created by the containing statement.  (FRAME 
  8113.  statements occasionally create frame controls whose parent and owner windows 
  8114.  are not the same.) 
  8115.  
  8116.  Directives consist of the reserved character # in the first column of a line, 
  8117.  followed by the directive keyword and any additional numbers, character 
  8118.  strings, or filenames. 
  8119.  
  8120.  
  8121. ΓòÉΓòÉΓòÉ 18.4.2. Binary Resource Files ΓòÉΓòÉΓòÉ
  8122.  
  8123. The binary resource file created by the Resource Compiler consists of one or 
  8124. more resource entries, each in the following form: 
  8125.  
  8126.   struct {
  8127.       UCHAR  fResType;
  8128.       USHORT usResType;
  8129.       UCHAR  fResID;
  8130.       USHORT resid;
  8131.       USHORT fsOptions;
  8132.       ULONG  cb;
  8133.       BYTE   bytes[1];
  8134.   };
  8135.  
  8136. The fields in each entry have the following meanings: 
  8137.  
  8138.  fRestype              Specifies whether the resource-type identifier is a 
  8139.                        string or an integer. For OS/2, the resource type is 
  8140.                        always an integer and this field is set to 0xFF. 
  8141.  
  8142.  usResType             Specifies the resource-type identifier. This value is an 
  8143.                        integer in the range -32768 through 32767. The following 
  8144.                        resource types are predefined: 
  8145.  
  8146.  RT_ACCELTABLE         Accelerator table 
  8147.  
  8148.  RT_BITMAP             Bitmap 
  8149.  
  8150.  RT_CHARTBL            Character table 
  8151.  
  8152.  RT_DIALOG             Dialog template 
  8153.  
  8154.  RT_DISPLAYINFO        Display information 
  8155.  
  8156.  RT_DLGINCLUDE         Dialog include-file name 
  8157.  
  8158.  RT_FKALONG            Long-form function-key area 
  8159.  
  8160.  RT_FKASHORT           Short-form function-key area 
  8161.  
  8162.  RT_FONT               Font 
  8163.  
  8164.  RT_FONTDIR            Font directory 
  8165.  
  8166.  RT_HELPSUBTABLE       Help subtable 
  8167.  
  8168.  RT_HELPTABLE          Help table 
  8169.  
  8170.  RT_KEYTBL             Key table 
  8171.  
  8172.  RT_MENU               Menu template 
  8173.  
  8174.  RT_MESSAGE            Error-message table 
  8175.  
  8176.  RT_POINTER            Mouse-pointer shape 
  8177.  
  8178.  RT_RCDATA             Binary data 
  8179.  
  8180.  RT_STRING             String table 
  8181.  
  8182.  RT_VKEYTBL            Virtual key table 
  8183.  
  8184.  fResID                Specifies whether the resource identifier is a string or 
  8185.                        an integer.  For OS/2, the resource identifier is always 
  8186.                        an integer and this field is set to 0xFF. 
  8187.  
  8188.  resid                 Specifies the resource identifier.  This value is an 
  8189.                        integer in the range -32768 through 32767. 
  8190.  
  8191.  fsOptions             Specifies the load and memory options.  This value can 
  8192.                        be a combination of the following: 
  8193.  
  8194.       0x0010      MOVEABLE resource.  If not given, the resource is FIXED. 
  8195.       0x0040      PRELOAD resource.  If not given, the resource is LOADONCALL. 
  8196.       0x1000      DISCARDABLE resource. 
  8197.  
  8198.  cb                    Specifies the size of the resource (in bytes). 
  8199.  
  8200.  bytes                 Contains the resource. 
  8201.  
  8202.  Note:  There is a size limitation of 65,280 bytes for a binary resource file. 
  8203.  
  8204.  
  8205. ΓòÉΓòÉΓòÉ 18.5. Statements ΓòÉΓòÉΓòÉ
  8206.  
  8207. The following statements and directives are used by the Resource Compiler (RC): 
  8208.  
  8209.       ACCELTABLE Statement 
  8210.       ASSOCTABLE Statement 
  8211.       AUTOCHECKBOX Statement 
  8212.       AUTORADIOBUTTON Statement 
  8213.       BITMAP Statement 
  8214.       CHECKBOX Statement 
  8215.       CODEPAGE Statement 
  8216.       COMBOBOX Statement 
  8217.       CONTAINER Statement 
  8218.       CONTROL Statement 
  8219.       CTEXT Statement 
  8220.       CTLDATA Statement 
  8221.       DEFAULTICON Statement 
  8222.       define Directive 
  8223.       DEFPUSHBUTTON Statement 
  8224.       DIALOG Statement 
  8225.       DLGINCLUDE Statement 
  8226.       DLGTEMPLATE Statement 
  8227.       EDITTEXT Statement 
  8228.       elif Directive 
  8229.       else Directive 
  8230.       endif Directive 
  8231.       ENTRYFIELD Statement 
  8232.       FONT Statement 
  8233.       FRAME Statement 
  8234.       GROUPBOX Statement 
  8235.       HELPITEM Statement 
  8236.       HELPSUBITEM Statement 
  8237.       HELPSUBTABLE Statement 
  8238.       HELPTABLE Statement 
  8239.       ICON Statement (Resource) 
  8240.       ICON Statement (Control) 
  8241.       if Directive 
  8242.       ifdef Directive 
  8243.       ifndef Directive 
  8244.       include Directive 
  8245.       LISTBOX Statement 
  8246.       LTEXT Statement 
  8247.       MENU Statement 
  8248.       MENUITEM Statement 
  8249.       MESSAGETABLE Statement 
  8250.       MLE Statement 
  8251.       NOTEBOOK Statement 
  8252.       POINTER Statement 
  8253.       PRESPARAMS Statement 
  8254.       PUSHBUTTON Statement 
  8255.       RADIOBUTTON Statement 
  8256.       RCDATA Statement 
  8257.       RCINCLUDE Statement 
  8258.       RESOURCE Statement 
  8259.       RTEXT Statement 
  8260.       SLIDER Statement 
  8261.       SPINBUTTON Statement 
  8262.       STRINGTABLE Statement 
  8263.       SUBITEMSIZE Statement 
  8264.       SUBMENU Statement 
  8265.       undef Directive 
  8266.       VALUESET Statement 
  8267.       WINDOW Statement 
  8268.       WINDOWTEMPLATE Statement 
  8269.  
  8270.  
  8271. ΓòÉΓòÉΓòÉ 18.5.1. ACCELTABLE Statement ΓòÉΓòÉΓòÉ
  8272.  
  8273. Syntax: 
  8274.  
  8275.   ACCELTABLE acceltable-id [mem-option][code-page]
  8276.   BEGIN
  8277.   key-value, command[, accelerator-options]...
  8278.       .
  8279.       .
  8280.       .
  8281.   END
  8282.  
  8283. Description 
  8284.  
  8285. The ACCELTABLE statement creates a table of accelerators for an application. 
  8286. An accelerator is a keystroke that gives the user a quick way to choose a 
  8287. command from a menu or carry out some other task.  An accelerator table can be 
  8288. loaded when needed from the executable file by using the WinLoadAccelTable 
  8289. function. 
  8290.  
  8291. You can provide any number of ACCELTABLE statements in a resource script file. 
  8292. Each statement must specify a unique table identifier.  You can provide any 
  8293. number of accelerator definitions in an accelerator table; however, no two 
  8294. definitions in a table can specify the same key. 
  8295.  
  8296. Each accelerator definition must specify a key value and command. The 
  8297. WinSetAccelTable function used in the application translates the accelerator 
  8298. keystroke into a WM_COMMAND, WM_HELP, or WM_SYSCOMMAND message that has the 
  8299. corresponding command value.  The message type depends on the 
  8300. accelerator-option field. 
  8301.  
  8302.  acceltable-id     Specifies the accelerator-table identifier.  This value must 
  8303.                    be an integer in the range -32768 through 32767, or a simple 
  8304.                    expression that evaluates to a value in that range.  Each 
  8305.                    accelerator table in a resource script file must have a 
  8306.                    unique identifier. 
  8307.  mem-option        Specifies how the system manages the resource when it is in 
  8308.                    memory.  This value must be one of the following: 
  8309.  
  8310.       OPTION         Meaning 
  8311.       FIXED          System keeps the resource at a fixed memory location. 
  8312.       MOVEABLE       System moves the resource as necessary to compact memory. 
  8313.                      This is the default option. 
  8314.       DISCARDABLE    System discards the resource if it is no longer needed. 
  8315.  code-page         Specifies a code page value. For a list of valid code pages 
  8316.                    see CODEPAGE Statement. 
  8317.  key-value         Specifies the character, scan, or virtual-key code of the 
  8318.                    accelerator key.  The meaning depends on the 
  8319.                    accelerator-options field.  The key-value field must be a 
  8320.                    single character enclosed in double-quotation marks or an 
  8321.                    integer in the range 0 through 255. If you specify an 
  8322.                    integer, you must specify the CHAR, SCANCODE, or VIRTUALKEY 
  8323.                    accelerator option; otherwise, the default option is CHAR. 
  8324.                    Integers must be in decimal or hexadecimal notation. 
  8325.  command           Specifies the command value for the corresponding 
  8326.                    WM_COMMAND, WM_HELP, or WM_SYSCOMMAND message.  This value 
  8327.                    must be an integer in the range -32768 through 32767, or a 
  8328.                    simple expression that evaluates to an integer in that 
  8329.                    range. 
  8330.  accelerator-options Specifies the accelerator type.  This value can be a 
  8331.                    combination of the following: 
  8332.  
  8333.       VIRTUALKEY      Specifies that the key-value field is a virtual-key code. 
  8334.       SCANCODE        Specifies that the key-value field is a keyboard scan 
  8335.                       code. 
  8336.       CHAR            Specifies that the key-value field is a character code. 
  8337.       SHIFT           Specifies that the user must press the Shift key and the 
  8338.                       key corresponding to the key-value field to generate the 
  8339.                       accelerator. 
  8340.       CONTROL         Specifies that the user must press the Ctrl key and the 
  8341.                       key corresponding to the key-value field to generate the 
  8342.                       accelerator. 
  8343.       ALT             Specifies that the user must press the Alt key and the 
  8344.                       key corresponding to the key-value field to generate the 
  8345.                       accelerator. 
  8346.       LONEKEY         Specifies that the user needs to press only the key 
  8347.                       corresponding to the key-value field to generate the 
  8348.                       accelerator. 
  8349.       SYSCOMMAND      Specifies that the accelerator translates to a 
  8350.                       WM_SYSCOMMAND message.  If you do not include this 
  8351.                       option, the accelerator translates to a WM_COMMAND 
  8352.                       message. 
  8353.       HELP            Specifies that the accelerator translates to a WM_HELP 
  8354.                       message.  If you do not include this option, the 
  8355.                       accelerator translates to a WM_COMMAND message. 
  8356.  
  8357.  Note:  VIRTUALKEY, SCANCODE, and CHAR are mutually exclusive. SYSCOMMAND and 
  8358.  HELP are also mutually exclusive. 
  8359.  
  8360.  Comments 
  8361.  
  8362.  If two accelerators use the same key with different Shift, Control, or ALT 
  8363.  options, you should specify the more restrictive accelerator first in the 
  8364.  table.  For example, you should place Shift+Enter before Enter. 
  8365.  
  8366.  If you include the OS2.H header file, you can use the following constants to 
  8367.  specify the accelerator options: 
  8368.  
  8369.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8370.   ΓöéAF_ALT              ΓöéAF_CHAR             ΓöéAF_CONTROL          Γöé
  8371.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8372.   ΓöéAF_HELP             ΓöéAF_LONEKEY          ΓöéAF_SCANCODE         Γöé
  8373.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8374.   ΓöéAF_SHIFT            ΓöéAF_SYSCOMMAND       ΓöéAF_VIRTUALKEY       Γöé
  8375.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8376.  
  8377.  To combine these constants, you must use the bitwise OR (|) operator. 
  8378.  
  8379.  Example 
  8380.  
  8381.  This example creates an accelerator table whose accelerator-table identifier 
  8382.  is 1.  The table contains two accelerators:  Ctrl+S and Ctrl+G.  These 
  8383.  accelerators generate WM_COMMAND messages with values of 101 and 102, 
  8384.  respectively, when the user presses the corresponding keys. 
  8385.  
  8386.     ACCELTABLE 1
  8387.     BEGIN
  8388.         "S", 101, CONTROL
  8389.         "G", 102, CONTROL
  8390.     END
  8391.  
  8392.  
  8393. ΓòÉΓòÉΓòÉ 18.5.2. ASSOCTABLE Statement ΓòÉΓòÉΓòÉ
  8394.  
  8395. Syntax: 
  8396.  
  8397.   ASSOCTABLE assoctable-id [load-option][mem-option][code-page]
  8398.   BEGIN
  8399.   association-name, file-match-string[, extended-attribute-flag]
  8400.     [, icon-filename]
  8401.     .
  8402.     .
  8403.     .
  8404.   END
  8405.  
  8406. Description 
  8407.  
  8408. The ASSOCTABLE statement defines a file-association table for an application. 
  8409. This table associates the data files that an application creates with the 
  8410. executable file of the application.  When the user selects one of these data 
  8411. files from File Manager, the associated application begins executing. 
  8412.  
  8413. A file-association table can also associate icons with the data files that an 
  8414. application creates.  The shell uses these icons to identify the data files 
  8415. graphically.  Because a file-association table associates icons by file type, 
  8416. all data files having the same file type have the same icon. 
  8417.  
  8418. You can provide any number of ASSOCTABLE statements in a resource script file, 
  8419. but each statement must specify a unique assoctable-id value.  The 
  8420. file-association tables are written not only to the resources within your 
  8421. executable file, but also to the .ASSOC extended attribute.  However, only the 
  8422. last file-association table specified in the resource script file is actually 
  8423. written to the extended attribute. 
  8424.  
  8425.  assoctable-id     Specifies the association-table identifier.  This value must 
  8426.                    be an integer in the range -32768 through 32767, or a simple 
  8427.                    expression that evaluates to a value in that range. 
  8428.  load-option       Specifies when the system loads the resource from the 
  8429.                    executable file into memory.  This value must be one of the 
  8430.                    following: 
  8431.  
  8432.       PRELOAD        System loads the resource when the application starts. 
  8433.       LOADONCALL     System loads the resource when the application calls the 
  8434.                      DosGetResource or DosGetResource2 function.  This is the 
  8435.                      default option. 
  8436.  mem-option        Specifies how the system manages the resource when it is in 
  8437.                    memory.  This value must be one of the following: 
  8438.  
  8439.       FIXED          System keeps the resource at a fixed memory location. 
  8440.       MOVEABLE       System moves the resource as necessary to compact memory. 
  8441.                      This is the default option. 
  8442.       DISCARDABLE    System discards the resource if it is no longer needed. 
  8443.  code-page         Specifies a code page value.  For a list of valid code pages 
  8444.                    see CODEPAGE Statement. 
  8445.  association-name  Specifies the name of the file type the application 
  8446.                    recognizes.  This field must contain zero or more characters 
  8447.                    enclosed in double quotation marks. 
  8448.  
  8449.                    Character values must be in the range 1 through 255.  If a 
  8450.                    double quotation mark is required in the name, you must 
  8451.                    include the double quotation mark twice. 
  8452.  file-match-string Specifies the file-matching string of a particular type of 
  8453.                    data file that the application creates. This field must 
  8454.                    contain zero or more characters enclosed in double quotation 
  8455.                    marks. You can only use characters that are valid in OS/2 
  8456.                    filenames and extensions and the OS/2 wildcard characters 
  8457.                    question mark (?) and asterisk (*). 
  8458.  extended-attribute-flag Specifies the extended-attribute options. This value 
  8459.                    can be a combination of the following: 
  8460.  
  8461.       EAF_DEFAULTOWNER      Specifies that the application containing the 
  8462.                             file-association table starts when the user selects 
  8463.                             any file matching the file-match-string field from 
  8464.                             File Manager. 
  8465.       EAF_REUSEICON         Specifies that the icon defined in the previous 
  8466.                             entry of the file-association table is used as the 
  8467.                             icon for the current data-file type. 
  8468.       EAF_UNCHANGEABLE      Specifies that the entry should not be edited. 
  8469.  icon-filename     Specifies the name of the file containing an icon. File 
  8470.                    Manager uses this icon to represent all application-created 
  8471.                    data files matching the file-match-string field.  The file 
  8472.                    must be in the current directory. 
  8473.  
  8474.  
  8475. ΓòÉΓòÉΓòÉ 18.5.3. AUTOCHECKBOX Statement ΓòÉΓòÉΓòÉ
  8476.  
  8477. Syntax: 
  8478.  
  8479.   AUTOCHECKBOX text, id, x, y, width, height[, style]
  8480.  
  8481. The AUTOCHECKBOX statement creates an automatic-check-box control. The control 
  8482. is a small rectangle (check box) that contains an X when the user selects it. 
  8483. The specified text is displayed to the right of the check box.  An X appears in 
  8484. the square when the user first selects the control and disappears the next time 
  8485. the user selects it.  The AUTOCHECKBOX statement, which you can use only in a 
  8486. DIALOG or WINDOW statement, defines the text, identifier, dimensions, and 
  8487. attributes of a control window.  The predefined class for this control is 
  8488. WC_BUTTON. If you do not specify the style, the default style is 
  8489. BS_AUTOCHECKBOX and WS_TABSTOP. 
  8490.  
  8491.  text    Specifies text that is displayed to the right of the control.  This 
  8492.          field must contain zero or more characters enclosed in double 
  8493.          quotation marks.  Character values must be in the range 1 through 255. 
  8494.          If a double quotation mark is required in the text, you must include 
  8495.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  8496.          indicates that the following character is used as a mnemonic character 
  8497.          for the control.  When the control is displayed, the tilde is not 
  8498.          shown, but the mnemonic character is underlined.  The user can choose 
  8499.          the control by pressing the key corresponding to the underlined 
  8500.          mnemonic character. 
  8501.  id      Specifies the control identifier.  This value must be an integer in 
  8502.          the range -32768 through 32767, or a simple expression that evaluates 
  8503.          to a value in that range. 
  8504.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  8505.          This value must be an integer in the range -32768 through 32767 or an 
  8506.          expression consisting of integers and the addition (+) or subtraction 
  8507.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8508.          relative to the origin of the dialog box, window, or control 
  8509.          containing the specified control. 
  8510.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  8511.          This value must be an integer in the range -32768 through 32767 or an 
  8512.          expression consisting of integers and the addition (+) or subtraction 
  8513.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8514.          relative to the origin of the dialog box, window, or control 
  8515.          containing the specified control. 
  8516.  width   Specifies the width of the control.  This value must be an integer in 
  8517.          the range 0 through 65535 or an expression consisting of integers and 
  8518.          the addition (+) or subtraction (-) operator.  The width is in 
  8519.          n-character units. 
  8520.  height  Specifies the height of the control.  This value must be an integer in 
  8521.          the range 0 through 65535 or an expression consisting of integers and 
  8522.          the addition (+) or subtraction (-) operator.  The height is in 
  8523.          1/8-character units. 
  8524.  style   Specifies the control styles.  This value can be a combination of the 
  8525.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  8526.          operator to combine styles. 
  8527.  
  8528.  Example 
  8529.  
  8530.  This example creates an automatic-check-box control that is labeled "Italic." 
  8531.  
  8532.     AUTOCHECKBOX "Italic", 101, 10, 10, 100, 100
  8533.  
  8534.  
  8535. ΓòÉΓòÉΓòÉ 18.5.4. AUTORADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  8536.  
  8537. Syntax: 
  8538.  
  8539. AUTORADIOBUTTON text, id, x, y, width, height[, style]
  8540.  
  8541. The AUTORADIOBUTTON statement creates an automatic-radio-button control.  This 
  8542. control is a small circle with the given text displayed to its right.  The 
  8543. control highlights the circle and sends a message to its parent window when the 
  8544. user selects the button.  The control also removes the selection from any other 
  8545. automatic-radio-button controls in the same group.  When the user selects the 
  8546. button again, the control removes the highlight before sending a message.  The 
  8547. AUTORADIOBUTTON statement, which you can use only in a DIALOG or WINDOW 
  8548. statement, defines the text, identifier, dimensions, and attributes of a 
  8549. control window.  The predefined class for this control is WC_BUTTON.  If you do 
  8550. not specify a style, the default style is BS_AUTORADIOBUTTON. 
  8551.  
  8552.  text    Specifies text that is displayed to the right of the control.  This 
  8553.          field must contain zero or more characters enclosed in double 
  8554.          quotation marks.  Character values must be in the range 1 through 255. 
  8555.          If a double quotation mark is required in the text, you must include 
  8556.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  8557.          indicates that the following character is used as a mnemonic character 
  8558.          for the control.  When the control is displayed, the tilde is not 
  8559.          shown, but the mnemonic character is underlined. The user can choose 
  8560.          the control by pressing the key corresponding to the underlined 
  8561.          mnemonic character. 
  8562.  id      Specifies the control identifier.  This value must be an integer in 
  8563.          the range -32768 through 32767, or a simple expression that evaluates 
  8564.          to a value in that range. 
  8565.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  8566.          This value must be an integer in the range 32768 through 32767 or an 
  8567.          expression consisting of integers and the addition (+) or subtraction 
  8568.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8569.          relative to the origin of the dialog box, window, or control 
  8570.          containing the specified control. 
  8571.  y       This value must be an integer in the range -32768 through 32767 or an 
  8572.          expression consisting of integers and the addition (+) or subtraction 
  8573.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8574.          relative to the origin of the dialog box, window, or control 
  8575.          containing the specified control. 
  8576.  width   Specifies the width of the control.  This value must be an integer in 
  8577.          the range 0 through 65535 or an expression consisting of integers and 
  8578.          the addition (+) or subtraction (-) operator.  The width is in 
  8579.          n-character units. 
  8580.  height  Specifies the height of the control.  This value must be an integer in 
  8581.          the range 0 through 65535 or an expression consisting of integers and 
  8582.          the addition (+) or subtraction (-) operator.  The height is in 
  8583.          1/8-character units. 
  8584.  style   Specifies the control styles.  This value can be a combination of the 
  8585.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  8586.          operator to combine styles. 
  8587.  
  8588.  Example 
  8589.  
  8590.  This example creates an automatic-radio-button control that is labeled 
  8591.  "Italic." 
  8592.  
  8593.     AUTORADIOBUTTON "Italic", 101, 10, 10, 24, 50
  8594.  
  8595.  
  8596. ΓòÉΓòÉΓòÉ 18.5.5. BITMAP Statement ΓòÉΓòÉΓòÉ
  8597.  
  8598. Syntax: 
  8599.  
  8600. BITMAP bitmap-id [load-option] [mem-option] [codepage] filename
  8601.  
  8602. The BITMAP statement defines a bit map resource for an application.  A bit map 
  8603. resource, typically created using the Icon Editor, is a custom bit map that an 
  8604. application uses in its display or as an item in a menu.  The BITMAP statement 
  8605. copies the bit-map resource from the file specified in the filename field and 
  8606. adds it to the application's other resources.  A bit-map resource can be loaded 
  8607. from the executable file when needed by using the GpiLoadBitmap function. 
  8608.  
  8609. You can provide any number of BITMAP statements in a resource script file, but 
  8610. each statement must specify a unique bitmap-id value. 
  8611.  
  8612.  bitmap-id         Specifies the bit-map-resource identifier.  This value must 
  8613.                    be an integer in the range -32768 through 32767 or a simple 
  8614.                    expression that evaluates to a value in that range. 
  8615.  load-option       Specifies when the system loads the resource from the 
  8616.                    executable file into memory.  This value must be one of the 
  8617.                    following: 
  8618.  
  8619.       PRELOAD        System loads the resource when the application starts. 
  8620.       LOADONCALL     System loads the resource when the application calls the 
  8621.                      GpiLoadBitmap function.  This is the default option. 
  8622.  mem-option        Specifies how the system manages the resource when it is in 
  8623.                    memory.  This value must be one of the following: 
  8624.  
  8625.       FIXED          System keeps the resource at a fixed memory location. 
  8626.       MOVEABLE       System moves the resource as necessary to compact memory. 
  8627.                      This is the default option. 
  8628.       DISCARDABLE    System discards the resource if it is no longer needed. 
  8629.  codepage          Specifies a code page value. For a list of valid code pages 
  8630.                    see CODEPAGE Statement. 
  8631.  filename          Specifies the name of the file containing the icon resource. 
  8632.                    If the file is not in the current directory, filename must 
  8633.                    be preceded by a full path. 
  8634.  
  8635.  Example 
  8636.  
  8637.  This example defines a bit map whose bit-map identifier is 12. The bit-map 
  8638.  resource is copied from the file CUSTOM.BMP. 
  8639.  
  8640.     BITMAP 12 custom.bmp
  8641.  
  8642.  
  8643. ΓòÉΓòÉΓòÉ 18.5.6. CHECKBOX Statement ΓòÉΓòÉΓòÉ
  8644.  
  8645. Syntax: 
  8646.  
  8647. CHECKBOX text, id, x, y, width, height[, style]
  8648.  
  8649. The CHECKBOX statement creates a check-box control.  The control is a small 
  8650. rectangle (check box) that has the specified text displayed to the right.  The 
  8651. control highlights the rectangle and sends a message to its parent window when 
  8652. the user selects the control.  The CHECKBOX statement, which you can use only 
  8653. in a DIALOG or WINDOW statement, defines the text, identifier, dimensions, and 
  8654. attributes of a control window.  The predefined class for this control is 
  8655. WC_BUTTON.  If you do not specify a style, the default style is BS_CHECKBOX and 
  8656. WS_TABSTOP. 
  8657.  
  8658.  text    Specifies text that is displayed to the right of the control.  This 
  8659.          field must contain zero or more characters enclosed in double 
  8660.          quotation marks.  Character values must be in the range 1 through 255. 
  8661.          If a double quotation mark is required in the text, you must include 
  8662.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  8663.          indicates that the following character is used as a mnemonic character 
  8664.          for the control.  When the control is displayed, the tilde is not 
  8665.          shown, but the mnemonic character is underlined.  The user can choose 
  8666.          the control by pressing the key corresponding to the underlined 
  8667.          mnemonic character. 
  8668.  id      Specifies the control identifier.  This value must be an integer in 
  8669.          the range -32768 through 32767, or a simple expression that evaluates 
  8670.          to a value in that range. 
  8671.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  8672.          This value must be an integer in the range -32768 through 32767 or an 
  8673.          expression consisting of integers and the addition (+) or subtraction 
  8674.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8675.          relative to the origin of the dialog box, window, or control 
  8676.          containing the specified control. 
  8677.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  8678.          This value must be an integer in the range -32768 through 32767 or an 
  8679.          expression consisting of integers and the addition (+) or subtraction 
  8680.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8681.          relative to the origin of the dialog box, window, or control 
  8682.          containing the specified control. 
  8683.  width   Specifies the width of the control.  This value must be an integer in 
  8684.          the range 0 through 65535 or an expression consisting of integers and 
  8685.          the addition (+) or subtraction (-) operator.  The width is in 
  8686.          n-character units. 
  8687.  height  Specifies the height of the control.  This value must be an integer in 
  8688.          the range 0 through 65535 or an expression consisting of integers and 
  8689.          the addition (+) or subtraction (-) operator.  The height is in 
  8690.          1/8-character units. 
  8691.  style   Specifies the control styles.  This value can be a combination of the 
  8692.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  8693.          operator to combine styles. 
  8694.  
  8695.  Example 
  8696.  
  8697.  This example creates a check-box control that is labeled "Italic." 
  8698.  
  8699.     CHECKBOX "Italic", 101, 10, 10, 100, 100
  8700.  
  8701.  
  8702. ΓòÉΓòÉΓòÉ 18.5.7. CODEPAGE Statement ΓòÉΓòÉΓòÉ
  8703.  
  8704. Syntax: 
  8705.  
  8706. CODEPAGE codepage-id
  8707.  
  8708. The CODEPAGE statement sets the code page for all subsequent resources.  The 
  8709. code page specifies the character set used for characters in the resource. 
  8710.  
  8711. If the CODEPAGE statement is not given in a resource script file, RC uses the 
  8712. code page set up for the individual system.  If more than one CODEPAGE 
  8713. statement is given in the file, each CODEPAGE statement applies to the resource 
  8714. statements between it and the next CODEPAGE statement. 
  8715.  
  8716.  codepage-id       Identifies the code page to be used for subsequent 
  8717.                    resources. This value can be one of the following: 
  8718.  
  8719.       437  United States 
  8720.       850  Multilingual 
  8721.       860  Portuguese 
  8722.       863  Canadian French 
  8723.       865  Norwegian 
  8724.       932  Japanese 
  8725.       934  Korean 
  8726.       936  Chinese 
  8727.       938  Taiwan 
  8728.  
  8729.  Comments 
  8730.  
  8731.  You may also specify a code page by placing a code-page identifier in the 
  8732.  load-options or memory-options field of any RC statement that uses those 
  8733.  fields. 
  8734.  
  8735.  Example 
  8736.  
  8737.  In this example, the code page for the character-string resources is set to 
  8738.  Portuguese (860). 
  8739.  
  8740.     CODEPAGE 860
  8741.  
  8742.     STRINGTABLE
  8743.     BEGIN
  8744.         1 "Filename not found"
  8745.         2 "Cannot open file for reading"
  8746.     END
  8747.  
  8748.  
  8749. ΓòÉΓòÉΓòÉ 18.5.8. COMBOBOX Statement ΓòÉΓòÉΓòÉ
  8750.  
  8751. Syntax: 
  8752.  
  8753.   COMBOBOX text, id, x, y, width, height[, style]
  8754.  
  8755. The COMBOBOX statement creates a combination-box control.  This control 
  8756. combines a list-box control with an entry-field control.  It allows the user to 
  8757. place the selected item from a list box into an entry field. 
  8758.  
  8759. The COMBOBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  8760. defines the text, identifier, dimensions, and attributes of a control window. 
  8761. The predefined class for this control is WC_COMBOBOX. If you do not specify a 
  8762. style, the default style is CBS_SIMPLE, WS_GROUP, WS_TABSTOP, and WS_VISIBLE. 
  8763.  
  8764.  text    Specifies text that is displayed in the entry field of the control. 
  8765.          This field must contain zero or more characters enclosed in double 
  8766.          quotation marks.  Character values must be in the range 1 through 255. 
  8767.          If a double quotation mark is required in the text, you must include 
  8768.          the double quotation mark twice. 
  8769.  id      Specifies the control identifier.  This value must be an integer in 
  8770.          the range -32768 through 32767, or a simple expression that evaluates 
  8771.          to a value in that range. 
  8772.  x       Specifies the x-coordinate of the lower-left corner of the control 
  8773.          This value must be an integer in the range -32768 through 32767 or an 
  8774.          expression consisting of integers and the addition (+) or subtraction 
  8775.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8776.          relative to the origin of the dialog box, window, or control 
  8777.          containing the specified control. 
  8778.  y       Specifies the y-coordinate of the lower-left corner of the control 
  8779.          This value must be an integer in the range -32768 through 32767 or an 
  8780.          expression consisting of integers and the addition (+) or subtraction 
  8781.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8782.          relative to the origin of the dialog box, window, or control 
  8783.          containing the specified control. 
  8784.  width   Specifies the width of the control.  This value must be an integer in 
  8785.          the range 0 through 65535 or an expression consisting of integers and 
  8786.          the addition (+) or subtraction (-) operator.  The width is in 
  8787.          n-character units. 
  8788.  height  Specifies the height of the control.  This value must be an integer in 
  8789.          the range 0 through 65535 or an expression consisting of integers and 
  8790.          the addition (+) or subtraction (-) operator.  The height is in 
  8791.          1/8-character units. 
  8792.  style   Specifies the control styles.  This value can be a combination of the 
  8793.          styles specified for WC_COMBOBOX. You can use the bitwise OR (|) 
  8794.          operator to combine styles. 
  8795.  
  8796.  Example 
  8797.  
  8798.  This example creates a combination-box control. 
  8799.  
  8800.     COMBOBOX "", 101, 10, 10, 24, 50
  8801.  
  8802.  
  8803. ΓòÉΓòÉΓòÉ 18.5.9. CONTAINER Statement ΓòÉΓòÉΓòÉ
  8804.  
  8805. Syntax: 
  8806.  
  8807. CONTAINER  id, x, y, width, height [,style]
  8808.  
  8809. The CONTAINER statement creates a container control within a dialog window. 
  8810. The container control is a visual component that holds objects.  The CONTAINER 
  8811. statement defines the identifier, position, dimensions, and attributes of a 
  8812. container control. The predefined class for this control is WC_CONTAINER.  If 
  8813. you do not specify a style, the default style is WS_TABSTOP, WS_VISIBLE, and 
  8814. CCS_SINGLESEL. 
  8815.  
  8816.  id      Specifies the control identifier.  This value is any integer -32768 
  8817.          through 32767, or a simple expression that evaluates to a value in 
  8818.          that range. 
  8819.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  8820.          This value is any integer -32768 through 32767 or an expression 
  8821.          consisting of integers and the addition (+) or subtraction (-) 
  8822.          operator.  The coordinate is assumed to be in dialog units and is 
  8823.          relative to the origin of the dialog window containing the container 
  8824.          control. 
  8825.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  8826.          This value is any integer -32768 through 32767 or an expression 
  8827.          consisting of integers and the addition (+) or subtraction (-) 
  8828.          operator.  The coordinate is assumed to be in dialog units and is 
  8829.          relative to the origin of the dialog window containing the container 
  8830.          control. 
  8831.  width   Specifies the width of the control.  This value is any integer 0 
  8832.          through 65535, or an expression consisting of integers and the 
  8833.          addition (+) or subtraction (-) operator. The width is in n-character 
  8834.          units. 
  8835.  height  Specifies the height of the control.  This value is any integer 0 
  8836.          through 65535, or an expression consisting of integers and the 
  8837.          addition (+) or subtraction (-) operator. The height is in 
  8838.          1/8-character units. 
  8839.  style   Specifies the control styles.  This value can be a combination of the 
  8840.          styles specified for WC_CONTAINER. Use the bitwise OR (|) operator to 
  8841.          combine styles. 
  8842.  
  8843.  Comments 
  8844.  
  8845.  A CONTAINER statement is only used in a DIALOG or WINDOW statement. 
  8846.  
  8847.  Example 
  8848.  
  8849.  This example creates a container control at position (30,30) within the dialog 
  8850.  window.  The container has a width of 70 character units and a height of 25 
  8851.  character units.  Its resource ID is 301.  The default style CCS_SINGLESEL has 
  8852.  been overridden by the style specification CCS_MULTIPLESEL.  The default 
  8853.  styles WS_TABSTOP and WS_GROUP are both in effect, though only the latter is 
  8854.  specified. 
  8855.  
  8856.   #define IDC_CONTAINER    301
  8857.   #define IDD_CONTAINERDLG 504
  8858.   DIALOG "Container", IDD_CONTAINERDLG, 23, 6, 120, 280, FS_NOBYTEALIGN |
  8859.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  8860.     BEGIN
  8861.        CONTAINER   IDC_CONTAINER, 30, 30, 70, 200, CCS_MULTIPLESEL |
  8862.                          WS_GROUP
  8863.     END
  8864.  
  8865.  
  8866. ΓòÉΓòÉΓòÉ 18.5.10. CONTROL Statement ΓòÉΓòÉΓòÉ
  8867.  
  8868. Syntax: 
  8869.  
  8870.   CONTROL text, id, x, y, width, height, class[, style]
  8871.   [ data-definitions ]
  8872.   [ BEGIN
  8873.   control-definition
  8874.       .
  8875.       .
  8876.       .
  8877.   END ]
  8878.  
  8879. The CONTROL statement defines a control as belonging to the specified class. 
  8880. The statement defines the position and dimensions of the control within the 
  8881. parent window, as well as the control style.  The CONTROL statement is most 
  8882. often used in a DIALOG or WINDOW statement. 
  8883.  
  8884. Typically, several CONTROL statements are used in each DIALOG statement, and 
  8885. each CONTROL statement must have a unique id value. The optional BEGIN and END 
  8886. statements enclose any CONTROL statements that may be given with the control. 
  8887. CONTROL statements given in this manner represent child windows belonging to 
  8888. the control created by the CONTROL statement. 
  8889.  
  8890.  text    Specifies text that is displayed to the right of the control.  This 
  8891.          field must contain zero or more characters enclosed in double 
  8892.          quotation marks.  Character values must be in the range 1 through 255. 
  8893.          If a double quotation mark is required in the text, you must include 
  8894.          the double quotation mark twice.  In the appropriate styles, a tilde ( 
  8895.          ~ ) character in the text indicates that the following character is 
  8896.          used as a mnemonic character for the control.  When the control is 
  8897.          displayed, the tilde is not shown, but the mnemonic character is 
  8898.          underlined.  The user can choose the control by pressing the key 
  8899.          corresponding to the underlined mnemonic character. 
  8900.  id      Specifies the control identifier.  This value must be an integer in 
  8901.          the range -32768 through 32767, or a simple expression that evaluates 
  8902.          to a value in that range. 
  8903.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  8904.          This value must be an integer in the range -32768 through 32767 or an 
  8905.          expression consisting of integers and the addition (+) or subtraction 
  8906.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8907.          relative to the origin of the parent window. 
  8908.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  8909.          This value must be an integer in the range -32768 through 32767 or an 
  8910.          expression consisting of integers and the addition (+) or subtraction 
  8911.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8912.          relative to the origin of the parent window. 
  8913.  width   Specifies the width of the control.  This value must be an integer in 
  8914.          the range 0 through 65535 or an expression consisting of integers and 
  8915.          the addition (+) or subtraction (-) operator.  The value is in 
  8916.          n-character units. 
  8917.  height  Specifies the height of the control.  This value must be an integer in 
  8918.          the range 0 through 65535 or an expression consisting of integers and 
  8919.          the addition (+) or subtraction (-) operator.  The value is in 
  8920.          1/8-character units. 
  8921.  class   Specifies the control class.  This value can be one of the control 
  8922.          classes specified in the "Control Classes" table, in the Presentation 
  8923.          Manager Programming Reference, or the name of the control class, 
  8924.          enclosed in double quotation marks. 
  8925.  style   Specifies the control style.  This value can be a combination of 
  8926.          control styles. You can use the bitwise OR (|) operator to combine 
  8927.          styles. 
  8928.  data-definitions Specifies a CTLDATA and/or PRESPARAMS statement. These 
  8929.          statements define control and presentation data for the control. For 
  8930.          more information, see CTLDATA Statement and PRESPARAMS Statement. 
  8931.  control-definition Specifies a CONTROL statement or any one of several 
  8932.          predefined control statements. These statements define the style, 
  8933.          position, and dimensions of controls in the control. 
  8934.  
  8935.  Comments 
  8936.  
  8937.  The CONTROL statement can actually contain any combination of CONTROL, DIALOG, 
  8938.  and WINDOW statements.  But typically, a CONTROL statement contains no such 
  8939.  statements. 
  8940.  
  8941.  Example 
  8942.  
  8943.  This example creates a pushbutton control with the WS_TABSTOP and WS_VISIBLE 
  8944.  styles. 
  8945.  
  8946.     CONTROL "OK", 101, 10, 10, 20, 50, WC_BUTTON, BS_PUSHBUTTON |
  8947.                                                   WS_TABSTOP    |
  8948.                                                   WS_VISIBLE
  8949.  
  8950.  
  8951. ΓòÉΓòÉΓòÉ 18.5.11. CTEXT Statement ΓòÉΓòÉΓòÉ
  8952.  
  8953. Syntax: 
  8954.  
  8955.   CTEXT text, id, x, y, width, height[, style]
  8956.  
  8957. The CTEXT statement creates a centered-text control.  The control is a simple 
  8958. rectangle displaying the given text centered in the rectangle.  The text is 
  8959. formatted before it is displayed.  Words that would extend past the end of a 
  8960. line are automatically wrapped to the beginning of the next line.  The CTEXT 
  8961. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  8962. text, identifier, dimensions, and attributes of the control.  The predefined 
  8963. class for this control is WC_STATIC.  If you do not specify a style, the 
  8964. default style is SS_TEXT, DT_CENTER, and WS_GROUP. 
  8965.  
  8966.  text    Specifies text that is centered in the rectangular area of the 
  8967.          control.  This field must contain zero or more characters enclosed in 
  8968.          double quotation marks.  Character values must be in the range 1 
  8969.          through 255.  If a double quotation mark is required in the text, you 
  8970.          must include the double quotation mark twice. 
  8971.  id      Specifies the control identifier.  This value must be an integer in 
  8972.          the range -32768 through 32767, or a simple expression that evaluates 
  8973.          to a value in that range. 
  8974.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  8975.          This value must be an integer in the range -32768 through 32767 or an 
  8976.          expression consisting of integers and the addition (+) or subtraction 
  8977.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8978.          relative to the origin of the dialog box, window, or control 
  8979.          containing the specified control. 
  8980.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  8981.          This value must be an integer in the range -32768 through 32767 or an 
  8982.          expression consisting of integers and the addition (+) or subtraction 
  8983.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  8984.          relative to the origin of the dialog box, window, or control 
  8985.          containing the specified control. 
  8986.  width   Specifies the width of the control.  This value must be an integer in 
  8987.          the range 0 through 65 535 or an expression consisting of integers and 
  8988.          the addition (+) or subtraction (-) operator.  The width is in 
  8989.          n-character units. 
  8990.  height  Specifies the height of the control.  This value must be an integer in 
  8991.          the range 0 through 65 535 or an expression consisting of integers and 
  8992.          the addition (+) or subtraction (-) operator.  The height is in 
  8993.          1/8-character units. 
  8994.  style   Specifies the control styles.  This value can be a combination of the 
  8995.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  8996.          operator to combine styles. 
  8997.  
  8998.  Example 
  8999.  
  9000.  This example creates a centered-text control that is labeled "Filename." 
  9001.  
  9002.     CTEXT "Filename", 101, 10, 10, 100, 100
  9003.  
  9004.  
  9005. ΓòÉΓòÉΓòÉ 18.5.12. CTLDATA Statement ΓòÉΓòÉΓòÉ
  9006.  
  9007. Syntax: 
  9008.  
  9009.   CTLDATA word-value[, word-value][...]
  9010.  
  9011.   CTLDATA string
  9012.  
  9013.   CTLDATA MENU
  9014.   BEGIN
  9015.   menuitem-definition
  9016.      .
  9017.      .
  9018.      .
  9019.   END
  9020.  
  9021. The CTLDATA statement defines control data for a custom dialog box, window, or 
  9022. control.  The statement has three basic forms to permit specifying a menu or 
  9023. specifying data in words or characters.  The data can be in any format, since 
  9024. only your window procedure will use it. The window procedure of the dialog box, 
  9025. window, or control receives this data when the item is created.  It is up to 
  9026. the window procedure to process the data. 
  9027.  
  9028.  word-value     Specifies a 16-bit value.  This value must be an integer in the 
  9029.                 range -32768 through 32767.  It must be in decimal notation. 
  9030.  string         Specifies a string of 8-bit characters.  This field must 
  9031.                 contain zero or more characters enclosed in double quotation 
  9032.                 marks.  Character values must be in the range 1 through 255. 
  9033.                 If a double quotation mark is required in the string, you must 
  9034.                 include the double quotation mark twice. 
  9035.  menuitem-definition Specifies a MENUITEM or SUBMENU statement.  These 
  9036.                 statements define the individual commands or submenus in the 
  9037.                 given menu. For details about these statements, see MENUITEM 
  9038.                 Statement and SUBMENU Statement. 
  9039.  
  9040.  Comments 
  9041.  
  9042.  CTLDATA is often used to supply data that controls the subsequent operation of 
  9043.  the custom window.  For example, the CTLDATA statement may contain extended 
  9044.  style bits - that is, style bits designed specifically for your customized 
  9045.  window. 
  9046.  
  9047.  You should reserve the CTLDATA statement for window classes that you create 
  9048.  yourself. 
  9049.  
  9050.  Example 
  9051.  
  9052.  This example creates a menu for the window created with the WINDOW statement. 
  9053.  
  9054.     WINDOWTEMPLATE 1
  9055.     BEGIN
  9056.         WINDOW "Sample", 1, 0, 0, 100, 100, "MYCLASS", 0, FCF_STANDARD
  9057.         CTLDATA MENU
  9058.         BEGIN
  9059.             MENUITEM "Exit", 101
  9060.         END
  9061.     END
  9062.  
  9063.  
  9064. ΓòÉΓòÉΓòÉ 18.5.13. DEFAULTICON STATEMENT ΓòÉΓòÉΓòÉ
  9065.  
  9066. This statement installs the named icon file definition under the ICON Extended 
  9067. Attribute of the program file.  An icon with an icon-id of 1 is the default 
  9068. icon by default, unless you supply a different icon. 
  9069.  
  9070. Example DEFAULTICON filename.ico 
  9071.  
  9072.  
  9073. ΓòÉΓòÉΓòÉ 18.5.14. define Directive ΓòÉΓòÉΓòÉ
  9074.  
  9075. Syntax: 
  9076.  
  9077.   define name value
  9078.  
  9079. The define directive assigns the given value to the specified name. All 
  9080. subsequent occurrences of the name are replaced by the value. 
  9081.  
  9082.  name    Specifies the name to be defined.  This value is any combination of 
  9083.          letters, digits, and punctuation. 
  9084.  value   Specifies any integer, character string, or line of text. This value 
  9085.          can contain another defined name, which creates a level of nested 
  9086.          defines.  You are limited to 64 levels of nested defines. 
  9087.  
  9088.  Example 
  9089.  
  9090.  This example assigns values to the names "NONZERO" and "USERCLASS". 
  9091.  
  9092.     #define     NONZERO     1
  9093.     #define     USERCLASS   "MyControlClass"
  9094.  
  9095.  
  9096. ΓòÉΓòÉΓòÉ 18.5.15. DEFPUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  9097.  
  9098. Syntax: 
  9099.  
  9100. DEFPUSHBUTTON text, id, x, y, width, height[, style]
  9101.  
  9102. The DEFPUSHBUTTON statement creates a default pushbutton control. The control 
  9103. is a round-cornered rectangle containing the given text. The rectangle has a 
  9104. bold outline to represent that it is the default response for the user.  The 
  9105. control sends a message to its parent window when the user chooses the control. 
  9106. The DEFPUSHBUTTON statement, which you can use only in a DIALOG or WINDOW 
  9107. statement, defines the text, identifier, dimensions, and attributes of the 
  9108. control.  The predefined class for this control is WC_BUTTON.  If you do not 
  9109. specify a style, the default style is BS_PUSHBUTTON, BS_DEFAULT, and 
  9110. WS_TABSTOP. 
  9111.  
  9112.  text    Specifies text that is centered in the rectangular area of the 
  9113.          control.  This field must contain zero or more characters enclosed in 
  9114.          double quotation marks.  Character values must be in the range 1 
  9115.          through 255.  If a double quotation mark is required in the text, you 
  9116.          must include the double quotation mark twice.  A tilde ( ~ ) character 
  9117.          in the text indicates that the following character is used as a 
  9118.          mnemonic character for the control.  When the control is displayed, 
  9119.          the tilde is not shown, but the mnemonic character is underlined. The 
  9120.          user can choose the control by pressing the key corresponding to the 
  9121.          underlined mnemonic character. 
  9122.  id      Specifies the control identifier.  This value must be an integer in 
  9123.          the range -32768 through 32767, or a simple expression that evaluates 
  9124.          to a value in that range. 
  9125.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  9126.          This value must be an integer in the range -32768 through 32767 or an 
  9127.          expression consisting of integers and the addition (+) or subtraction 
  9128.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  9129.          relative to the origin of the dialog box, window, or control 
  9130.          containing the specified control. 
  9131.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  9132.          This value must be an integer in the range -32768 through 32767 or an 
  9133.          expression consisting of integers and the addition (+) or subtraction 
  9134.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  9135.          relative to the origin of the dialog box, window, or control 
  9136.          containing the specified control. 
  9137.  width   Specifies the width of the control.  This value must be an integer in 
  9138.          the range 0 through 65 535 or an expression consisting of integers and 
  9139.          the addition (+) or subtraction (-) operator.  The width is in 
  9140.          n-character units. 
  9141.  height  Specifies the height of the control.  This value must be an integer in 
  9142.          the range 0 through 65 535 or an expression consisting of integers and 
  9143.          the addition (+) or subtraction (-) operator.  The height is in 
  9144.          1/8-character units. 
  9145.  style   Specifies the control styles.  This value can be a combination of the 
  9146.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  9147.          operator to combine styles. 
  9148.  
  9149.  Example 
  9150.  
  9151.  This example creates a default pushbutton control that is labeled "Cancel." 
  9152.  
  9153.   DEFPUSHBUTTON "Cancel", 101, 10, 10, 24, 50
  9154.  
  9155.  
  9156. ΓòÉΓòÉΓòÉ 18.5.16. DIALOG Statement ΓòÉΓòÉΓòÉ
  9157.  
  9158. Syntax: 
  9159.  
  9160. DIALOG text, id, x, y, width, height[, style[,
  9161. framectl]][data-definitions]
  9162. BEGIN
  9163. control-definition
  9164.     .
  9165.     .
  9166.     .
  9167. END
  9168.  
  9169. The DIALOG statement defines a window that an application can use to create 
  9170. dialog boxes.  The statement defines the position and dimensions of the dialog 
  9171. box on the screen, as well as the dialog-box style.  The DIALOG statement is 
  9172. most often used in a DLGTEMPLATE statement. 
  9173.  
  9174. Typically, you use only one DIALOG statement in each DLGTEMPLATE statement, and 
  9175. the DIALOG statement contains at least one control definition. 
  9176.  
  9177.  text        Specifies the dialog-box title if the style specifies a title bar. 
  9178.              This field must contain zero or more characters enclosed in double 
  9179.              quotation marks.  Character values must be in the range 1 through 
  9180.              255.  If a double quotation mark is required in the title, you 
  9181.              must include the double quotation mark twice. 
  9182.  id          Specifies the dialog-box identifier.  This value must be an 
  9183.              integer in the range -32768 through 32767, or a simple expression 
  9184.              that evaluates to a value in that range. 
  9185.  x           Specifies the x-coordinate of the lower-left corner of the dialog 
  9186.              box.  This value must be an integer in the range -32768 through 
  9187.              32767 or an expression consisting of integers and the addition (+) 
  9188.              or subtraction (-) operator.  The value is in dialog units, but 
  9189.              its exact meaning depends on the dialog style.  See the "Comments" 
  9190.              section for details. 
  9191.  y           Specifies the y-coordinate of the lower-left corner of the dialog 
  9192.              box.  This value must be an integer in the range -32768 through 
  9193.              32767 or an expression consisting of integers and the addition (+) 
  9194.              or subtraction (-) operator.  The value is in dialog units, but 
  9195.              its exact meaning depends on the dialog style.  See the "Comments" 
  9196.              section for details. 
  9197.  width       Specifies the width of the dialog box.  This value must be an 
  9198.              integer in the range 0 through 65 535 or an expression consisting 
  9199.              of integers and the addition (+) or subtraction (-) operator.  The 
  9200.              value is in n-character units. 
  9201.  height      Specifies the height of the dialog box.  This value must be an 
  9202.              integer in the range 0 through 65 535 or an expression consisting 
  9203.              of integers and the addition (+) or subtraction (-) operator.  The 
  9204.              value is in 1/8-character units. 
  9205.  style       Specifies the dialog-box style.  This value can be any of the 
  9206.              window, dialog-box, or frame styles. You can use the bitwise OR 
  9207.              (|) operator to combine styles. 
  9208.  framectl    Specifies the styles for frame controls belonging to the dialog 
  9209.              box.  This value can be any of the frame-control styles specified 
  9210.              in the "Frame-Control Flags" table in the Presentation Manager 
  9211.              Programming Reference. You can use the bitwise OR (|) operator to 
  9212.              combine styles. 
  9213.  data-definitions Specifies a CTLDATA and/or PRESPARAMS statement. These 
  9214.              statements define control and presentation data for the dialog 
  9215.              box.  For more information, see CTLDATA Statement and PRESPARAMS 
  9216.              Statement. 
  9217.  control-definition Specifies a CONTROL statement or any one of several 
  9218.              predefined control statements.  These statements define the style, 
  9219.              position, and dimensions of controls in the dialog box. 
  9220.  
  9221.  Comments 
  9222.  
  9223.  The exact meaning of the coordinates depends on the style defined by the style 
  9224.  field.  For dialog boxes with FS_SCREENALIGN style, the coordinates are 
  9225.  relative to the origin of the display screen.  For dialog boxes with the style 
  9226.  FS_MOUSEALIGN, the coordinates are relative to the position of the mouse 
  9227.  pointer at the time the dialog box is created.  For all other dialog boxes, 
  9228.  the coordinates are relative to the origin of the parent window. 
  9229.  
  9230.  The DIALOG statement can actually contain any combination of CONTROL, DIALOG, 
  9231.  and WINDOW statements.  Typically, a DIALOG statement contains one or more 
  9232.  CONTROL statements. 
  9233.  
  9234.  Example 
  9235.  
  9236.  This example creates a dialog box that is labeled "Disk Error." 
  9237.  
  9238.   DLGTEMPLATE 1
  9239.   BEGIN
  9240.       DIALOG  "Disk Error", 100, 10, 10, 300, 110
  9241.       BEGIN
  9242.           CTEXT "Select One:", 1, 10, 80, 280, 12
  9243.           RADIOBUTTON "Retry", 2, 75, 50, 60, 12
  9244.           RADIOBUTTON "Abort", 3, 75, 30, 60, 12
  9245.           RADIOBUTTON "Ignore", 4, 75, 10, 60, 12
  9246.       END
  9247.   END
  9248.  
  9249.  
  9250. ΓòÉΓòÉΓòÉ 18.5.17. DLGINCLUDE Statement ΓòÉΓòÉΓòÉ
  9251.  
  9252. Syntax: 
  9253.  
  9254. DLGINCLUDE id filename
  9255.  
  9256. The DLGINCLUDE statement adds the specified filename to the resource file.  The 
  9257. DLGINCLUDE statement is typically used to let the application access the 
  9258. definitions file for the dialog box with the corresponding identifier.  The 
  9259. file named by filename must contain the define directives used by the dialog 
  9260. box. 
  9261.  
  9262. You can provide any number of DLGINCLUDE statements in a resource script file, 
  9263. but each must have a unique identifier. 
  9264.  
  9265.  id          Specifies the dialog-box identifier.  This value must be an 
  9266.              integer in the range -32768 through 32767, or a simple expression 
  9267.              that evaluates to a value in that range. 
  9268.  filename    Specifies the name of the file containing the define directives. 
  9269.              If the file is not in the current directory, filename must be 
  9270.              preceded by a full path. 
  9271.  
  9272.  Example 
  9273.  
  9274.  This example includes the name of the definition file dlgdef.h. The dialog-box 
  9275.  identifier is 5. 
  9276.  
  9277.   DLGINCLUDE 5 \\INCLUDE\\DLGREF.H
  9278.  
  9279.  
  9280. ΓòÉΓòÉΓòÉ 18.5.18. DLGTEMPLATE Statement ΓòÉΓòÉΓòÉ
  9281.  
  9282. Syntax: 
  9283.  
  9284. DLGTEMPLATE dialog-id  [load-option]  [mem-option][codepage]
  9285. BEGIN
  9286. dialog-definition
  9287.     .
  9288.     .
  9289.     .
  9290. END
  9291.  
  9292. The DLGTEMPLATE statement creates a dialog-box template.  A dialog-box template 
  9293. consists of a series of statements that define the identifier, load and memory 
  9294. options, dialog-box dimensions, and controls in the dialog box.  The dialog-box 
  9295. template can be loaded from the executable file by using the WinLoadDlg 
  9296. function. 
  9297.  
  9298. You can provide any number of dialog-box templates in a resource script file, 
  9299. but each template must have a unique dialog-id value. 
  9300.  
  9301.  dialog-id         Specifies the dialog-box identifier.  This value must be an 
  9302.                    integer in the range -32768 through 32767, or a simple 
  9303.                    expression that evaluates to a value in that range. 
  9304.  load-option       Specifies when the system loads the resource from the 
  9305.                    executable file into memory.  This value must be one of the 
  9306.                    following: 
  9307.  
  9308.       PRELOAD        System loads the resource when the application starts. 
  9309.       LOADONCALL     System loads the resource when the application calls the 
  9310.                      WinLoadDlg function.  This is the default option. 
  9311.  mem-option        Specifies how the system manages the resource when it is in 
  9312.                    memory.  This value must be one or more of the following: 
  9313.  
  9314.       FIXED          System keeps the resource at a fixed memory location. 
  9315.       MOVEABLE       System moves the resource as necessary to compact memory. 
  9316.       DISCARDABLE    System discards the resource if it is no longer needed. 
  9317.                    The default setting is MOVEABLE and DISCARDABLE. 
  9318.  codepage          Specifies a code-page value.  For a list of valid code pages 
  9319.                    see CODEPAGE Statement. 
  9320.  dialog-definition Specifies a DIALOG statement. The statement defines the 
  9321.                    dimensions and style of the given dialog box. For details 
  9322.                    about the statement, see DIALOG Statement. 
  9323.  
  9324.  Comments 
  9325.  
  9326.  A DLGTEMPLATE statement can actually contain DIALOG, CONTROL, and WINDOW 
  9327.  statements.  Typically, you include only one DIALOG statement. 
  9328.  
  9329.  Example 
  9330.  
  9331.  This example uses a DLGTEMPLATE statement to create a dialog box. 
  9332.  
  9333.   DLGTEMPLATE ID_GETTIMER
  9334.   BEGIN
  9335.       DIALOG "Timer", 1, 10, 10, 100, 40
  9336.       BEGIN
  9337.           LTEXT "Time (0 - 15):", 4, 8, 24, 72, 12
  9338.           ENTRYFIELD "0", ID_TIME, 80, 28, 16, 8, ES_MARGIN
  9339.           DEFPUSHBUTTON "Enter", ID_TIMEOK, 10, 6, 36, 12
  9340.           PUSHBUTTON "Cancel", ID_TIMECANCEL, 52, 6, 40, 12
  9341.       END
  9342.   END
  9343.  
  9344.  
  9345. ΓòÉΓòÉΓòÉ 18.5.19. EDITTEXT Statement ΓòÉΓòÉΓòÉ
  9346.  
  9347. Syntax: 
  9348.  
  9349. EDITTEXT text, id, x, y, width, height [,style]
  9350.  
  9351. The EDITTEXT statement creates an entry-field control.  This control is a 
  9352. rectangle in which the user can type and edit text. The control displays a 
  9353. pointer when the user selects the control.  The user can then use the keyboard 
  9354. to enter text or edit the existing text.  Editing keys include the BACKSPACE 
  9355. and DELETE keys.  By using the mouse or the DIRECTION keys, the user can select 
  9356. the character or characters to delete or select the place to insert new 
  9357. characters. 
  9358.  
  9359. The EDITTEXT statement defines the text, identifier, dimensions, and attributes 
  9360. of a control window.  The predefined class for this control is WC_ENTRYFIELD. 
  9361. If you do not specify a style, the default style is ES_AUTOSCROLL and 
  9362. WS_TABSTOP. 
  9363.  
  9364.  text    Specifies text that is displayed in the rectangular area of the 
  9365.          control.  This field must contain zero or more characters enclosed in 
  9366.          double quotation marks.  Character values must be in the range 1 
  9367.          through 255.  If a double quotation mark is required in the text, you 
  9368.          must include the double quotation mark twice. 
  9369.  id      Specifies the control identifier.  This value is any integer -32768 
  9370.          through 32767, or a simple expression that evaluates to a value in 
  9371.          that range. 
  9372.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  9373.          This value is any integer -32768 through 32767, or an expression 
  9374.          consisting of integers and the addition (+) or subtraction (-) 
  9375.          operator.  The coordinate is assumed to be in dialog units and is 
  9376.          relative to the origin of the dialog window. 
  9377.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  9378.          This value is any integer -32768 through 32767, or an expression 
  9379.          consisting of integers and the addition (+) or subtraction (-) 
  9380.          operator.  The coordinate is assumed to be in dialog units and is 
  9381.          relative to the origin of the dialog window. 
  9382.  width   Specifies the width of the control.  This value is any integer 0 
  9383.          through 65 535, or an expression consisting of integers and the 
  9384.          addition (+) or subtraction (-) operator. The width is in n-character 
  9385.          units. 
  9386.  height  Specifies the height of the control.  This value is any integer 0 
  9387.          through 65 535, or an expression consisting of integers and the 
  9388.          addition (+) or subtraction (-) operator. The height is in 
  9389.          1/8-character units. 
  9390.  style   Specifies the control styles.  This value can be a combination of the 
  9391.          styles specified for WC_ENTRYFIELD.  You can use the bitwise OR ( | ) 
  9392.          operator to combine styles. 
  9393.  
  9394.  Comments 
  9395.  
  9396.  The EDITTEXT control statement is identical to the ENTRYFIELD control 
  9397.  statement. 
  9398.  
  9399.  Use the EDITTEXT statement only in a DIALOG or WINDOW statement. 
  9400.  
  9401.  Example 
  9402.  
  9403.  This example creates an entry-field control that is not labeled. 
  9404.  
  9405.      EDITTEXT "", 101, 10, 10, 24, 50
  9406.  
  9407.  
  9408. ΓòÉΓòÉΓòÉ 18.5.20. elif Directive ΓòÉΓòÉΓòÉ
  9409.  
  9410. Syntax: 
  9411.  
  9412. elif constant-expression
  9413.  
  9414. The elif directive marks an optional clause of a conditional-compilation block 
  9415. defined by a ifdef, ifndef, or if directive.  The directive controls 
  9416. conditional compilation of the resource file by checking the specified constant 
  9417. expression.  If the constant expression is nonzero, elif directs the compiler 
  9418. to continue processing statements up to the next endif, else, or elif directive 
  9419. and then skip to the statement after endif.  If the constant expression is 
  9420. zero, elif directs the compiler to skip to the next endif, else, or elif 
  9421. directive.  You can use any number of elif directives in a conditional block. 
  9422.  
  9423.  constant-expression   Specifies the expression to be checked.  This value is a 
  9424.                        defined name, an integer constant, or an expression 
  9425.                        consisting of names, integers, and arithmetic and 
  9426.                        relational operators. 
  9427.  
  9428.  Example 
  9429.  
  9430.  In this example, elif directs the compiler to process the second BITMAP 
  9431.  statement only if the value assigned to the name "Version" is less than 7. 
  9432.  The elif directive itself is processed only if Version is greater than or 
  9433.  equal to 3. 
  9434.  
  9435.   #if Version < 3
  9436.   BITMAP 1 errbox.bmp
  9437.   #elif Version < 7
  9438.   BITMAP 1 userbox.bmp
  9439.   #endif
  9440.  
  9441.  
  9442. ΓòÉΓòÉΓòÉ 18.5.21. else Directive ΓòÉΓòÉΓòÉ
  9443.  
  9444. Syntax:   else 
  9445.  
  9446. The else directive marks an optional clause of a conditional-compilation block 
  9447. defined by a ifdef, ifndef, or if directive.  The else directive must be the 
  9448. last directive before the endif directive. 
  9449.  
  9450. This directive has no arguments. 
  9451.  
  9452. Example 
  9453.  
  9454. This example compiles the second BITMAP statement only if the name "DEBUG" is 
  9455. not defined. 
  9456.  
  9457.     #ifdef DEBUG
  9458.         BITMAP 1 errbox.bmp
  9459.     #else
  9460.         BITMAP 1 userbox.bmp
  9461.     #endif
  9462.  
  9463.  
  9464. ΓòÉΓòÉΓòÉ 18.5.22. endif Directive ΓòÉΓòÉΓòÉ
  9465.  
  9466. Syntax: endif 
  9467.  
  9468. The endif directive marks the end of a conditional-compilation block defined by 
  9469. a ifdef directive.  One endif is required for each if, ifdef, or ifndef 
  9470. directive. 
  9471.  
  9472. This directive has no arguments. 
  9473.  
  9474.  
  9475. ΓòÉΓòÉΓòÉ 18.5.23. ENTRYFIELD Statement ΓòÉΓòÉΓòÉ
  9476.  
  9477. ENTRYFIELD text, id, x, y, width, height , [style]
  9478.  
  9479. The ENTRYFIELD statement creates an entry-field control.  This control is a 
  9480. rectangle in which the user can type and edit text.  The control displays a 
  9481. pointer when the user selects the control.  The user can then use the keyboard 
  9482. to enter text or edit the existing text. Editing keys include the BACKSPACE and 
  9483. DELETE keys.  By using the mouse or the DIRECTION keys, the user can select the 
  9484. character or characters to delete or select the place to insert new characters. 
  9485. The ENTRYFIELD statement, which you can use only in a DIALOG or WINDOW 
  9486. statement, defines the text, identifier, dimensions, and attributes of a 
  9487. control window.  The predefined class for this control is WC_ENTRYFIELD.  If 
  9488. you do not specify a style, the default style is ES_AUTOSCROLL and WS_TABSTOP. 
  9489.  
  9490.  text    Specifies text that is displayed in the rectangular area of the 
  9491.          control.  This field must contain zero or more characters enclosed in 
  9492.          double quotation marks.  Character values must be in the range 1 
  9493.          through 255.  If a double quotation mark is required in the text, you 
  9494.          must include the double quotation mark twice. 
  9495.  id      Specifies the control identifier.  This value must be an integer in 
  9496.          the range -32768 through 32767, or a simple expression that evaluates 
  9497.          to a value in that range. 
  9498.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  9499.          This value must be an integer in the range -32768 through 32767 or an 
  9500.          expression consisting of integers and the addition (+) or subtraction 
  9501.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  9502.          relative to the origin of the dialog box, window, or control 
  9503.          containing the specified control. 
  9504.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  9505.          This value must be an integer in the range -32768 through 32767 or an 
  9506.          expression consisting of integers and the addition (+) or subtraction 
  9507.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  9508.          relative to the origin of the dialog box, window, or control 
  9509.          containing the specified control. 
  9510.  width   Specifies the width of the control.  This value must be an integer in 
  9511.          the range 0 through 65 535 or an expression consisting of integers and 
  9512.          the addition (+) or subtraction (-) operator.  The width is in 
  9513.          n-character units. 
  9514.  height  Specifies the height of the control.  This value must be an integer in 
  9515.          the range 0 through 65 535 or an expression consisting of integers and 
  9516.          the addition (+) or subtraction (-) operator.  The height is in 
  9517.          1/8-character units. 
  9518.  style   Specifies the control styles.  This value can be a combination of the 
  9519.          styles specified for WC_ENTRYFIELD. You can use the bitwise OR (|) 
  9520.          operator to combine styles. 
  9521.  
  9522.  Example 
  9523.  
  9524.  This example creates an entry-field control that is not labeled. 
  9525.  
  9526.   ENTRYFIELD "", 101, 10, 10, 24, 50
  9527.  
  9528.  
  9529. ΓòÉΓòÉΓòÉ 18.5.24. FONT Statement ΓòÉΓòÉΓòÉ
  9530.  
  9531. Syntax: 
  9532.  
  9533. FONT font-id  [load-option][ mem-option] [codepage]  filename
  9534.  
  9535. The FONT statement defines a font resource for an application. A font resource, 
  9536. typically created by using the OS/2 Font Editor, is a bit map defining the 
  9537. shape of the individual characters in a character set.  The FONT statement 
  9538. copies the font resource from the file specified in the filename field and adds 
  9539. it to the other resources of the application.  A font resource can be loaded 
  9540. from the executable file when needed by using the GpiLoadFonts function. 
  9541.  
  9542. You can provide any number of FONT statements in a resource script file, but 
  9543. each statement must specify a unique font-id value. 
  9544.  
  9545.  font-id           Specifies the font-resource identifier.  This value must be 
  9546.                    an integer in the range -32768 through 32767, or a simple 
  9547.                    expression that evaluates to a value in that range. 
  9548.  load-option       Specifies when the system loads the resource from the 
  9549.                    executable file into memory.  This value must be one of the 
  9550.                    following: 
  9551.  
  9552.       PRELOAD        System loads the resource when the application starts. 
  9553.       LOADONCALL     System loads the resource when the application calls the 
  9554.                      GpiLoadFonts function.  This is the default option. 
  9555.  mem-option        Specifies how the system manages the resource when it is i 
  9556.                    memory.  This value must be one or more of the following: 
  9557.  
  9558.       FIXED          System keeps the resource at a fixed memory location. 
  9559.       MOVEABLE       System moves the resource as necessary to compact memory. 
  9560.       DISCARDABLE    System discards the resource if it is no longer needed. 
  9561.                    The default setting is MOVEABLE and DISCARDABLE. 
  9562.  codepage          Specifies a code page value.  For a list of valid code pages 
  9563.                    see CODEPAGE Statement. 
  9564.  filename          Specifies the name of the file containing the font resource. 
  9565.                    If the file is not in the current directory, filename must 
  9566.                    be preceded by a full path. 
  9567.  
  9568.  Example 
  9569.  
  9570.  This example defines a font whose font identifier is 5. The font resource is 
  9571.  copied from the file cmroman.fon. 
  9572.  
  9573.   FONT 5 cmroman.fon
  9574.  
  9575.  
  9576. ΓòÉΓòÉΓòÉ 18.5.25. FRAME Statement ΓòÉΓòÉΓòÉ
  9577.  
  9578. Syntax: 
  9579.  
  9580. FRAME text, id, x, y, width, height[, style[, framectl]]
  9581.   data-definitions
  9582. [ BEGIN
  9583. window-definition
  9584.     .
  9585.     .
  9586.     .
  9587. END ]
  9588.  
  9589. The FRAME statement defines a frame window.  The statement defines the title, 
  9590. identifier, position, and dimensions of the frame window, as well as the window 
  9591. style.  The FRAME statement is most often used in a WINDOWTEMPLATE statement, 
  9592. and typically, only one FRAME statement is used.  The FRAME statement, in turn, 
  9593. typically contains at least one WINDOW statement that defines the client window 
  9594. belonging to the frame window. 
  9595.  
  9596. The frame window has no default style.  You must use the framectl field to 
  9597. define additional frame controls, such as a title bar and system menu, to be 
  9598. created when the frame window is created.  If the text field is not empty, the 
  9599. statement automatically adds a title-bar control to the frame window, whether 
  9600. or not you specify the FCF_TITLEBAR style.  Frame controls are given default 
  9601. styles and control identifiers depending on their class.  For example, a 
  9602. title-bar control receives the identifier FID_TITLEBAR. 
  9603.  
  9604.  text        Specifies the title of the frame window.  This field must contain 
  9605.              zero or more characters enclosed in double quotation marks. 
  9606.              Character values must be in the range 1 through 255.  If a double 
  9607.              quotation mark is required in the name, you must include the 
  9608.              double quotation mark twice. 
  9609.  id          Specifies the window identifier.  This value must be an integer in 
  9610.              the range -32768 through 32767, or a simple expression that 
  9611.              evaluates to a value in that range. 
  9612.  x           Specifies the x-coordinate of the lower-left corner of the window. 
  9613.              This value must be an integer in the range -32768 through 32767 or 
  9614.              an expression consisting of integers and the addition (+) or 
  9615.              subtraction (-) operator.  The coordinate is assumed to be in 
  9616.              dialog units and is relative to the origin of the dialog box, 
  9617.              window, or control containing the specified window. 
  9618.  y           Specifies the y-coordinate of the lower-left corner of the window. 
  9619.              This value must be an integer in the range -32768 through 32767 or 
  9620.              an expression consisting of integers and the addition (+) or 
  9621.              subtraction (-) operator.  The coordinate is assumed to be in 
  9622.              dialog units and is relative to the origin of the dialog box, 
  9623.              window, or control containing the specified window. 
  9624.  width       Specifies the width of the window.  This value must be an integer 
  9625.              in the range 0 through 65 535 or an expression consisting of 
  9626.              integers and the addition (+) or subtraction (-) operator.  The 
  9627.              width is in n-character units. 
  9628.  height      Specifies the height of the window.  This value must be a integer 
  9629.              in the range 0 through 65 535 or an expression consisting of 
  9630.              integers and the addition (+) or subtraction (-) operator.  The 
  9631.              height is in 1/8-character units. 
  9632.  style       Specifies the frame and window styles.  This value can be a 
  9633.              combination of frame styles. You can use the bitwise OR (|) 
  9634.              operator to combine styles. 
  9635.  framectl    Specifies the styles of frame controls belonging to the frame 
  9636.              window.  This value can be a combination of the styles specified 
  9637.              in the "Frame-Control Styles" table in the Presentation Manager 
  9638.              Programmers Reference. You can use the bitwise OR (|) operator to 
  9639.              combine styles. 
  9640.  data-definitions Specifies a CTLDATA and/or PRESPARAMS statement.  These 
  9641.              statements define control and presentation data for the frame 
  9642.              window.  For more information, see CTLDATA Statement and 
  9643.              PRESPARAMS Statement. 
  9644.  window-definition Specifies a WINDOW statement or any one of several 
  9645.              predefined control statements.  These statements define the style, 
  9646.              position, and dimensions of windows or controls in the frame 
  9647.              window. 
  9648.  
  9649.  Comments 
  9650.  
  9651.  The FRAME statement can actually contain any combination of CONTROL, DIALOG, 
  9652.  and WINDOW statements.  Typically, a FRAME statement contains one WINDOW 
  9653.  statement. 
  9654.  
  9655.  Example 
  9656.  
  9657.  This example creates a standard frame window, with a title bar, a system menu, 
  9658.  minimize and maximize boxes, and a vertical scroll bar. The FRAME statement 
  9659.  contains a WINDOW statement defining the client window belonging to the frame 
  9660.  window. 
  9661.  
  9662.   WINDOWTEMPLATE 1
  9663.   BEGIN
  9664.       FRAME "My Window", 1, 10, 10, 320, 130, 0,
  9665.               FCF_STANDARD | FCF_VERTSCROLL
  9666.       BEGIN
  9667.           WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass"
  9668.       END
  9669.   END
  9670.  
  9671.  
  9672. ΓòÉΓòÉΓòÉ 18.5.26. GROUPBOX Statement ΓòÉΓòÉΓòÉ
  9673.  
  9674. Syntax: 
  9675.  
  9676. GROUPBOX text, id, x, y, width, height [, style]
  9677.  
  9678. The GROUPBOX statement creates a group-box control.  The control is a rectangle 
  9679. that groups other controls together.  The controls are grouped by drawing a 
  9680. border around them and displaying the given text in the upper-left corner.  The 
  9681. GROUPBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  9682. defines the text, identifier, dimensions, and attributes of a control window. 
  9683. The predefined class for this control is WC_STATIC.  If you do not specify a 
  9684. style, the default style is SS_GROUPBOX and WS_TABSTOP. 
  9685.  
  9686.  text    Specifies text that appears in the upper-left corner of the control. 
  9687.          This field must contain zero or more characters enclosed in double 
  9688.          quotation marks.  Character values must be in the range 1 through 255. 
  9689.          If a double quotation mark is required in the text, you must include 
  9690.          the double quotation mark twice. 
  9691.  id      Specifies the control identifier.  This value must be an integer in 
  9692.          the range -32768 through 32767, or a simple expression that evaluates 
  9693.          to a value in that range. 
  9694.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  9695.          This value must be an integer in the range -32768 through 32767 or an 
  9696.          expression consisting of integers and the addition (+) or subtraction 
  9697.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  9698.          relative to the origin of the dialog box, window, or control 
  9699.          containing the specified control. 
  9700.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  9701.          This value must be an integer in the range -32768 through 32767 or an 
  9702.          expression consisting of integers and the addition (+) or subtraction 
  9703.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  9704.          relative to the origin of the dialog box, window, or control 
  9705.          containing the specified control. 
  9706.  width   Specifies the width of the control.  This value must be an integer in 
  9707.          the range 0 through 65 535 or an expression consisting of integers and 
  9708.          the addition (+) or subtraction (-) operator.  The width is in 
  9709.          n-character units. 
  9710.  height  Specifies the height of the control.  This value must be an integer in 
  9711.          the range 0 through 65 535 or an expression consisting of integers and 
  9712.          the addition (+) or subtraction (-) operator.  The height is in 
  9713.          1/8-character units. 
  9714.  style   Specifies the control styles.  This value can be a combination of the 
  9715.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  9716.          operator to combine styles. 
  9717.  
  9718.  Example 
  9719.  
  9720.  This example creates a group-box control that is labeled "Options." 
  9721.  
  9722.   GROUPBOX "Options", 101, 10, 10, 100, 100
  9723.  
  9724.  
  9725. ΓòÉΓòÉΓòÉ 18.5.27. HELPITEM Statement ΓòÉΓòÉΓòÉ
  9726.  
  9727. Syntax: 
  9728.  
  9729. HELPITEM application-window-id, help-subtable-id, extended-helppanel-id
  9730.  
  9731. The HELPITEM statement defines the help items in a help table.  The statement, 
  9732. permitted only in a HELPTABLE statement, specifies the resource identifier of 
  9733. an application window for which help is provided, and the resource identifiers 
  9734. of the help subtable and extended help panel associated with the application 
  9735. window. 
  9736.  
  9737. You can provide any number of HELPITEM statements in a HELPTABLE statement. 
  9738. You should provide one HELPITEM statement for each application window for which 
  9739. help is provided. 
  9740.  
  9741.  application-window-id    Specifies the resource identifier of an application 
  9742.                           window for which help is provided. 
  9743.  help-subtable-id         Specifies the resource identifier of the help 
  9744.                           subtable associated with the specified application 
  9745.                           window. 
  9746.  extended-helppanel-id    Specifies the resource identifier of the extended 
  9747.                           help panel associated with the specified application 
  9748.                           window. 
  9749.  
  9750.  Example 
  9751.  
  9752.  This example defines a help item that associates a help subtable called 
  9753.  IDSUB_FILEMENU and an extended help panel called IDEXT_APPHLP with an 
  9754.  application window called IDWIN_FILEMENU. 
  9755.  
  9756.   HELPITEM IDWIN_FILEMENU, IDSUB_FILEMENU, IDEXT_APPHLP
  9757.  
  9758.  
  9759. ΓòÉΓòÉΓòÉ 18.5.28. HELPSUBITEM Statement ΓòÉΓòÉΓòÉ
  9760.  
  9761. Syntax: 
  9762.  
  9763. HELPSUBITEM child-window-id, helppanel-id [ , integer...]
  9764.  
  9765. The HELPSUBITEM statement defines the help subitems in a help subtable.  This 
  9766. statement, which is permitted only in a HELPSUBTABLE statement, specifies the 
  9767. identifier of a child window for which help is provided, the identifier of the 
  9768. help panel associated with the child window, and one or more optional, 
  9769. application-defined integers. 
  9770.  
  9771. You can provide any number of HELPSUBITEM statements in a HELPSUBTABLE 
  9772. statement.  You should provide one HELPSUBITEM statement for each child window 
  9773. for which help is provided. 
  9774.  
  9775.  child-window-id     Specifies the resource identifier of the child window for 
  9776.                      which help is provided. 
  9777.  helppanel-id        Specifies the resource identifier of the help panel 
  9778.                      associated with the specified child window. 
  9779.  integer             Specifies optional, application-defined integers.  If you 
  9780.                      use this field, you must include the SUBITEMSIZE statement 
  9781.                      in the help subtable to specify the size, in words, of 
  9782.                      each help subitem in the help subtable. For details about 
  9783.                      this statement, see SUBITEMSIZE Statement. 
  9784.  
  9785.  Example 
  9786.  
  9787.  This example defines a help subitem that associates a child window called 
  9788.  IDCLD_FILEMENU with a help panel called IDHP_FILEMENU. 
  9789.  
  9790.   HELPSUBITEM IDCLD_FILEMENU, IDHP_FILEMENU
  9791.  
  9792.  
  9793. ΓòÉΓòÉΓòÉ 18.5.29. HELPSUBTABLE Statement ΓòÉΓòÉΓòÉ
  9794.  
  9795. Syntax: 
  9796.  
  9797. HELPSUBTABLE helpsubtable-id
  9798.  SUBITEMSIZE size
  9799. BEGIN
  9800. helpsubitem-definition
  9801.     .
  9802.     .
  9803.     .
  9804. END
  9805.  
  9806. The HELPSUBTABLE statement defines the contents of a help-subtable resource.  A 
  9807. help-subtable resource contains a help-subitem entry for each item that can be 
  9808. selected in an application window.  Each of these items should be a child 
  9809. window of the application window specified in the help-table resource.  The 
  9810. help subtable should contain a help subitem for each control, child window, and 
  9811. menu item in the application window. 
  9812.  
  9813. You can provide any number of HELPSUBTABLE statements in a resource script 
  9814. file, but each statement must specify a unique helpsubtable-id value.  You can 
  9815. also provide any number of helpsubitem-definition statements in the help 
  9816. subtable.  These specify the child window for which help is provided, the help 
  9817. panel containing the help text for the child window, and one or more 
  9818. application-defined integers. 
  9819.  
  9820. If you include optional integers in the helpsubitem-definition statements, you 
  9821. must also include a SUBITEMSIZE statement to specify the size, in words, of 
  9822. each help subitem.  All help subitems in a help subtable must be the same size. 
  9823. The default size is two words per help subitem. 
  9824.  
  9825.  helpsubtable-id 
  9826.       Specifies the resource identifier of the help subtable.  This value must 
  9827.       be an integer in the range -32768 through 32767, or a simple expression 
  9828.       that evaluates to a value in that range. 
  9829.  helpsubitem-definition 
  9830.       Specifies a HELPSUBITEM statement.  A HELPSUBITEM statement specifies a 
  9831.       child window, the help panel associated with the child window, and one or 
  9832.       more optional, application-defined integers.  For details about this 
  9833.       statement, see HELPSUBITEM Statement. 
  9834.  
  9835.  Example 
  9836.  
  9837.  This example creates a help-subtable resource whose help-subtable identifier 
  9838.  is IDSUB_FILEMENU.  Each HELPSUBITEM statement specifies a child window and a 
  9839.  help panel. 
  9840.  
  9841.   HELPSUBTABLE IDSUB_FILEMENU
  9842.   BEGIN
  9843.       HELPSUBITEM IDCLD_OPEN, IDPNL_OPEN
  9844.       HELPSUBITEM IDCLD_SAVE, IDPNL_SAVE
  9845.   END
  9846.  
  9847.  
  9848. ΓòÉΓòÉΓòÉ 18.5.30. HELPTABLE Statement ΓòÉΓòÉΓòÉ
  9849.  
  9850. Syntax: 
  9851.  
  9852. HELPTABLE helptable-id
  9853. BEGIN
  9854. helpitem-definition
  9855.     .
  9856.     .
  9857.     .
  9858. END
  9859.  
  9860. The HELPTABLE statement defines the contents of a help-table resource. A 
  9861. help-table resource contains a help-item entry for each application window, 
  9862. dialog box, and message box for which help is provided. 
  9863.  
  9864. You can provide any number of HELPTABLE statements in a resource script file, 
  9865. but each statement must specify a unique helptable-id value.  You can also 
  9866. provide any number of helpitem-definition statements in the help table.  These 
  9867. specify the application windows for which help is provided, the help subtables 
  9868. associated with each application window, and the extended help panels 
  9869. associated with each application window. 
  9870.  
  9871.  helptable-id          Specifies the resource identifier of the help table. 
  9872.                        This value must be an integer in the range -32768 
  9873.                        through 32767, or a simple expression that evaluates to 
  9874.                        a value in that range. 
  9875.  helpitem-definition   Specifies a HELPITEM statement. A HELPITEM statement 
  9876.                        specifies an application window and the associated help 
  9877.                        subtable and extended help panel. For details about this 
  9878.                        statement, see HELPITEM Statement. 
  9879.  
  9880.  Example 
  9881.  
  9882.  This example creates a help-table resource whose help-table identifier is 1. 
  9883.  Each HELPITEM statement specifies an application window, a help subtable, and 
  9884.  an extended help panel. 
  9885.  
  9886.   HELPTABLE 1
  9887.   BEGIN
  9888.       HELPITEM IDWIN_FILEMENU, IDSUB_FILEMENU, IDEXT_APPHLP
  9889.       HELPITEM IDWIN_EDITMENU, IDSUB_EDITMENU, IDEXT_APPHLP
  9890.   END
  9891.  
  9892.  
  9893. ΓòÉΓòÉΓòÉ 18.5.31. ICON Statement (Resource) ΓòÉΓòÉΓòÉ
  9894.  
  9895. Syntax: 
  9896.  
  9897. ICON icon-id  [load-option]  [ mem-option] [codepage] filename
  9898.  
  9899. This form of the ICON statement defines an icon resource for an application. 
  9900. An icon resource, typically created by using Icon Editor, is a bit map defining 
  9901. the shape of the icon to be used for a given application.  The ICON statement 
  9902. copies the icon resource from the file specified in the filename field and adds 
  9903. it to the application's other resources.  An icon resource can be loaded when 
  9904. creating a window by using the WinCreateStdWindow function with the FS_ICON 
  9905. style. 
  9906.  
  9907. You can provide any number of ICON statements in a resource script file, but 
  9908. each statement must specify a unique icon-id value. 
  9909.  
  9910.  icon-id           Specifies the icon-resource identifier.  This value must be 
  9911.                    an integer in the range -32768 through 32767, or a simple 
  9912.                    expression that evaluates to a value in that range.  A 
  9913.                    icon-id of 1 has a special meaning; for details, see the 
  9914.                    "Comment" section. 
  9915.  load-option       Specifies when the system loads the resource from the 
  9916.                    executable file into memory.  This value must be one of the 
  9917.                    following: 
  9918.  
  9919.       PRELOAD        System loads the resource when the application starts. 
  9920.       LOADONCALL     System loads the resource when the application calls the 
  9921.                      WinCreateStdWindow function.  This is the default option. 
  9922.  mem-option        Specifies how the system manages the resource when it is in 
  9923.                    memory.  This value must be one or more of the following: 
  9924.  
  9925.       FIXED          System keeps the resource at a fixed memory location. 
  9926.       MOVEABLE       System moves the resource as necessary to compact memory. 
  9927.       DISCARDABLE    System discards the resource if it is no longer needed. 
  9928.                    The default setting is MOVEABLE and DISCARDABLE. 
  9929.  codepage          Specifies a code page value.  For a list of valid code pages 
  9930.                    see CODEPAGE Statement. 
  9931.  filename          Specifies the name of the file containing the icon resource. 
  9932.                    If the file is not in the current directory, filename must 
  9933.                    be preceded by a full path. 
  9934.  
  9935.  Comments 
  9936.  
  9937.  An icon with an icon-id of 1 is the default icon.  The RC program writes the 
  9938.  icon not only to the resources in your executable file, but also as the .ICON 
  9939.  extended attribute.  File Manager will display this icon next to the name of 
  9940.  the executable file. 
  9941.  
  9942.  Example 
  9943.  
  9944.  This example defines an icon whose icon identifier is 11.  The icon resource 
  9945.  is copied from the file custom.ico. 
  9946.  
  9947.   ICON 11 custom.ico
  9948.  
  9949.  
  9950. ΓòÉΓòÉΓòÉ 18.5.32. ICON Statement (Control) ΓòÉΓòÉΓòÉ
  9951.  
  9952. Syntax: 
  9953.  
  9954. ICON icon-id, id, x, y, width, height , [style]
  9955.  
  9956. This form of the ICON statement creates an icon control.  This control is an 
  9957. icon displayed in a dialog box.  The ICON statement, which you can use only in 
  9958. a DIALOG or WINDOW statement, defines the icon-resource identifier, 
  9959. icon-control identifier, position, and attributes of a control window.  The 
  9960. predefined class for this control is WC_STATIC.  If you do not specify a style, 
  9961. the default style is SS_ICON.  For the ICON statement, the width and height 
  9962. fields are ignored; the icon automatically sizes itself. 
  9963.  
  9964.  icon-id   Specifies the resource identifier of an icon that is defined 
  9965.            elsewhere in the resource file. 
  9966.  id        Specifies the control identifier.  This value must be an integer in 
  9967.            the range -32768 through 32767, or a simple expression that 
  9968.            evaluates to a value in that range. 
  9969.  x         Specifies the x-coordinate of the lower-left corner of the control. 
  9970.            This value must be an integer in the range -32768 through 32767 or 
  9971.            an expression consisting of integers and the addition (+) or 
  9972.            subtraction (-) operator.  The coordinate is assumed to be in dialog 
  9973.            units and is relative to the origin of the dialog box, window, or 
  9974.            control containing the specified control. 
  9975.  y         Specifies the y-coordinate of the lower-left corner of the control. 
  9976.            This value must be an integer in the range -32768 through 32767 or 
  9977.            an expression consisting of integers and the addition (+) or 
  9978.            subtraction (-) operator.  The coordinate is assumed to be in dialog 
  9979.            units and is relative to the origin of the dialog box, window, or 
  9980.            control containing the specified control. 
  9981.  width     Specifies a reserved value.  Can be set to zero. 
  9982.  height    Specifies a reserved value.  Can be set to zero. 
  9983.  style     Specifies the control styles.  This value can be a combination of 
  9984.            the styles specified for WC_STATIC. You can use the bitwise OR (|) 
  9985.            operator to combine styles. 
  9986.  
  9987.  Example 
  9988.  
  9989.  This example creates an icon control whose icon identifier is 99. 
  9990.  
  9991.   ICON 99, 101, 10, 10, 0, 0
  9992.  
  9993.  
  9994. ΓòÉΓòÉΓòÉ 18.5.33. if Directive ΓòÉΓòÉΓòÉ
  9995.  
  9996. Syntax: 
  9997.  
  9998. if constant-expression
  9999.  
  10000. The if directive controls conditional compilation of the resource file by 
  10001. checking the specified constant expression.  If the constant expression is 
  10002. nonzero, if directs the compiler to continue processing statements up to the 
  10003. next endif, else, or elif directive and then skip to the statement after the 
  10004. endif directive.  If the constant expression is zero, if directs the compiler 
  10005. to skip to the next endif, else, or elif directive. 
  10006.  
  10007.  constant-expression   Specifies the expression to be checked.  This value is a 
  10008.                        defined name, an integer constant, or an expression 
  10009.                        consisting of names, integers, and arithmetic and 
  10010.                        relational operators. 
  10011.  
  10012.  Example 
  10013.  
  10014.  This example compiles the BITMAP statement only if the value assigned to the 
  10015.  name "Version" is less than 3. 
  10016.  
  10017.   #if Version < 3
  10018.   BITMAP 1 errbox.bmp
  10019.   #endif
  10020.  
  10021.  
  10022. ΓòÉΓòÉΓòÉ 18.5.34. ifdef Directive ΓòÉΓòÉΓòÉ
  10023.  
  10024. Syntax: ifdef name 
  10025.  
  10026. The ifdef directive controls conditional compilation of the resource file by 
  10027. checking the specified name.  If the name has been defined by using a define 
  10028. directive or by using the -d command-line option of rc, ifdef directs the 
  10029. compiler to continue with the statement immediately after the ifdef directive. 
  10030. If the name has not been defined, ifdef directs the compiler to skip all 
  10031. statements up to the next endif directive. 
  10032.  
  10033.  name    Specifies the name to be checked by the directive. 
  10034.  
  10035.  Example 
  10036.  
  10037.  This example compiles the BITMAP statement only if the name "Debug" is 
  10038.  defined. 
  10039.  
  10040.   #ifdef Debug
  10041.   BITMAP 1 errbox.bmp
  10042.   #endif
  10043.  
  10044.  
  10045. ΓòÉΓòÉΓòÉ 18.5.35. ifndef Directive ΓòÉΓòÉΓòÉ
  10046.  
  10047. Syntax: ifndef name 
  10048.  
  10049. The ifndef directive controls conditional compilation of the resource file by 
  10050. checking the specified name.  If the name has not been defined or if its 
  10051. definition has been removed by using the undef directive, ifndef directs the 
  10052. compiler to continue processing statements up to the next endif, else, or elif 
  10053. directive and then skip to the statement after the endif directive.  If the 
  10054. name is defined, ifndef directs the compiler to skip to the next endif, else, 
  10055. or elif directive. 
  10056.  
  10057.  name    Specifies the name to be checked by the directive. 
  10058.  
  10059.  Example 
  10060.  
  10061.  This example compiles the BITMAP statement only if the name "Optimize" is not 
  10062.  defined. 
  10063.  
  10064.   #ifndef Optimize
  10065.   BITMAP 1 errbox.bmp
  10066.   #endif
  10067.  
  10068.  
  10069. ΓòÉΓòÉΓòÉ 18.5.36. include Directive ΓòÉΓòÉΓòÉ
  10070.  
  10071. Syntax: 
  10072.  
  10073. include filename
  10074.  
  10075. The include directive causes RC to process the file specified in the filename 
  10076. field.  This file should be a header file that defines the constants used in 
  10077. the resource script file.  Only the define directives in the specified file are 
  10078. processed; all other statements are ignored. 
  10079.  
  10080.  filename    Specifies the OS/2 name of the file to be included.  This value 
  10081.              must be an ASCII string enclosed either in double quotation marks 
  10082.              (if the file is in the current directory) or in less-than and 
  10083.              greater-than characters (<>) (if the file is in the directory 
  10084.              specified by -i command-line options or by the INCLUDE environment 
  10085.              variable).  You must give a full path enclosed in double quotation 
  10086.              marks if the file is not in the current directory or in the 
  10087.              directory specified by -i command-line  options or by the INCLUDE 
  10088.              environment variable. 
  10089.  
  10090.  Comments 
  10091.  
  10092.  The filename field is handled as a C string.  Therefore, you must include two 
  10093.  backslashes wherever one is required in the path.  (As an alternative, you can 
  10094.  use a single forward slash (/) instead of two backslashes.) 
  10095.  
  10096.  Example 
  10097.  
  10098.  This example processes the header files OS2.H and HEADERS\MYDEFS.H\I while 
  10099.  compiling the resource script file. 
  10100.  
  10101.   #include <os2.h>
  10102.   #include "headers\\\\mydefs.h"
  10103.  
  10104.  
  10105. ΓòÉΓòÉΓòÉ 18.5.37. LISTBOX Statement ΓòÉΓòÉΓòÉ
  10106.  
  10107. Syntax: 
  10108.  
  10109. LISTBOX id, x, y, width, height[, style]
  10110.  
  10111. The LISTBOX statement creates commonly used controls for a dialog box or 
  10112. window.  The control is a rectangle containing a list of user-selectable 
  10113. strings, such as filenames. 
  10114.  
  10115. The LISTBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  10116. defines the identifier, dimensions, and attributes of a control window.  The 
  10117. predefined class for this control is WC_LISTBOX.  If you do not specify a 
  10118. style, the default style is WS_TABSTOP. 
  10119.  
  10120.  id      Specifies the control identifier.  This value must be an integer in 
  10121.          the range -32768 through 32767, or a simple expression that evaluates 
  10122.          to a value in that range. 
  10123.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10124.          This value must be an integer in the range -32768 through 32767 or an 
  10125.          expression consisting of integers and the addition (+) or subtraction 
  10126.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10127.          relative to the origin of the dialog box, window, or control 
  10128.          containing the specified control. 
  10129.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10130.          This value must be an integer in the range -32768 through 32767 or an 
  10131.          expression consisting of integers and the addition (+) or subtraction 
  10132.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10133.          relative to the origin of the dialog box, window, or control 
  10134.          containing the specified control. 
  10135.  width   Specifies the width of the control.  This value must be an integer in 
  10136.          the range 0 through 65 535 or an expression consisting of integers and 
  10137.          the addition (+) or subtraction (-) operator.  The width is in 
  10138.          n-character units. 
  10139.  height  Specifies the height of the control.  This value must be an integer in 
  10140.          the range 0 through 65 535 or an expression consisting of integers and 
  10141.          the addition (+) or subtraction (-) operator.  The height is in 
  10142.          1/8-character units. 
  10143.  style   Specifies the control styles.  This value can be a combination of the 
  10144.          styles specified for WC_LISTBOX. You can use the bitwise OR (|) 
  10145.          operator to combine styles. 
  10146.  
  10147.  Example 
  10148.  
  10149.  This example creates a list-box control whose identifier is 101. 
  10150.  
  10151.   LISTBOX 101, 10, 10, 100, 100
  10152.  
  10153.  
  10154. ΓòÉΓòÉΓòÉ 18.5.38. LTEXT Statement ΓòÉΓòÉΓòÉ
  10155.  
  10156. Syntax: 
  10157.  
  10158. LTEXT text, id, x, y, width, height[ , style]
  10159.  
  10160. The LTEXT statement creates a left-aligned text control.  The control is a 
  10161. simple rectangle displaying the given text left-aligned in the rectangle.  The 
  10162. text is formatted before it is displayed.  Words that would extend past the end 
  10163. of a line are automatically wrapped to the beginning of the next line.  The 
  10164. LTEXT statement, which you can use only in a DIALOG or WINDOW statement, 
  10165. defines the text, identifier, dimensions, and attributes of the control.  The 
  10166. predefined class for this control is WC_STATIC.  If you do not specify a style, 
  10167. the default style is SS_TEXT, DT_LEFT, and WS_GROUP. 
  10168.  
  10169.  text    Specifies text that is left-aligned in the rectangular area of the 
  10170.          control.  This field must contain zero or more characters enclosed in 
  10171.          double quotation marks.  Character values must be in the range 1 
  10172.          through 255.  If a double quotation mark is required in the text, you 
  10173.          must include the double quotation mark twice. 
  10174.  id      Specifies the control identifier.  This value must be an integer in 
  10175.          the range -32768 through 32767, or a simple expression that evaluates 
  10176.          to a value in that range. 
  10177.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10178.          This value must be an integer in the range -32768 through 32767 or an 
  10179.          expression consisting of integers and the addition (+) or subtraction 
  10180.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10181.          relative to the origin of the dialog box, window, or control 
  10182.          containing the specified control. 
  10183.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10184.          This value must be an integer in the range -32768 through 32767 or an 
  10185.          expression consisting of integers and the addition (+) or subtraction 
  10186.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10187.          relative to the origin of the dialog box, window, or control 
  10188.          containing the specified control. 
  10189.  width   Specifies the width of the control.  This value must be an integer in 
  10190.          the range 0 through 65 535 or an expression consisting of integers and 
  10191.          the addition (+) or subtraction (-) operator.  The width is in 
  10192.          n-character units. 
  10193.  height  Specifies the height of the control.  This value must be an integer in 
  10194.          the range 0 through 65 535 or an expression consisting of integers and 
  10195.          the addition (+) or subtraction (-) operator.  The height is in 
  10196.          1/8-character units. 
  10197.  style   Specifies the control styles.  This value can be a combination of the 
  10198.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  10199.          operator to combine styles. 
  10200.  
  10201.  Example 
  10202.  
  10203.  This example creates a left-aligned text control that is labeled "Filename." 
  10204.  
  10205.   LTEXT "Filename", 101, 10, 10, 100, 100
  10206.  
  10207.  
  10208. ΓòÉΓòÉΓòÉ 18.5.39. MENU Statement ΓòÉΓòÉΓòÉ
  10209.  
  10210. Syntax: 
  10211.  
  10212. MENU menu-id  [load-option][ mem-option][codepage]
  10213. BEGIN
  10214. menuitem-definition
  10215.     .
  10216.     .
  10217.     .
  10218. END
  10219.  
  10220. The MENU statement defines the contents of a menu resource.  A menu resource is 
  10221. a collection of information that defines the appearance and function of an 
  10222. application menu.  A menu is a special input tool that lets a user choose 
  10223. commands from a list of command names.  A menu resource can be loaded from the 
  10224. executable file when needed by using the WinLoadMenu function. 
  10225.  
  10226. You can provide any number of MENU statements in a resource script file, but 
  10227. each statement must specify a unique menu-id value.  You can provide any number 
  10228. of menuitem-definition statements in the menu. These define the submenus and 
  10229. menu items (commands) in the menu.  The order of the statements defines the 
  10230. order of the menu items. 
  10231.  
  10232.  menu-id               Specifies the menu-resource identifier.  This value must 
  10233.                        be an integer in the range -32768 through 32767, or a 
  10234.                        simple expression that evaluates to a value in that 
  10235.                        range. 
  10236.  load-option           Specifies when the system loads the resource from the 
  10237.                        executable file into memory.  This value must be one of 
  10238.                        the following: 
  10239.  
  10240.       PRELOAD        System loads the resource when the application starts. 
  10241.       LOADONCALL     System loads the resource when the application calls the 
  10242.                      WinLoadMenu function. This is the default option. 
  10243.  mem-option            Specifies how the system manages the resource when it is 
  10244.                        in memory.  This value must be one or more of the 
  10245.                        following: 
  10246.  
  10247.       FIXED          System keeps the resource at a fixed memory location. 
  10248.       MOVEABLE       System moves the resource as necessary to compact memory. 
  10249.       DISCARDABLE    System discards the resource if it is no longer needed. 
  10250.                        The default setting is MOVEABLE and DISCARDABLE. 
  10251.  codepage              Specifies a codepage value.  For a list of valid code 
  10252.                        pages see CODEPAGE Statement. 
  10253.  menuitem-definition   Specifies a PRESPARAMS, MENUITEM, or SUBMENU statement. 
  10254.                        You can use one or more PRESPARAMS statements to control 
  10255.                        the appearance of a menu, such as the font and the 
  10256.                        foreground and background colors.  If used, PRESPARAMS 
  10257.                        statements must be the first statements following the 
  10258.                        BEGIN keyword.  For details about the PRESPARAMS 
  10259.                        statement, see PRESPARAMS Statement. 
  10260.  
  10261.                        MENUITEM and SUBMENU statements define the individual 
  10262.                        commands or submenus in the given menu.  For details 
  10263.                        about these statements, see MENUITEM Statement and 
  10264.                        SUBMENU Statement. 
  10265.  
  10266.  Example 
  10267.  
  10268.  This example creates a menu resource whose menu identifier is 1. The menu 
  10269.  contains a menu item named Alpha and a submenu named Beta. The submenu 
  10270.  contains two menu items, Item 1 and Item 2. 
  10271.  
  10272.   MENU 1
  10273.   BEGIN
  10274.       MENUITEM "Alpha", 100
  10275.       SUBMENU "Beta", 101
  10276.       BEGIN
  10277.           MENUITEM "Item 1", 200
  10278.           MENUITEM "Item 2", 201, , MIA_CHECKED
  10279.       END
  10280.   END
  10281.  
  10282.  
  10283. ΓòÉΓòÉΓòÉ 18.5.40. MENUITEM Statement ΓòÉΓòÉΓòÉ
  10284.  
  10285. Syntax: 
  10286.  
  10287. MENUITEM text, menu-id[,  menuitem-style][,menuitem-attribute]
  10288.  
  10289. MENUITEM SEPARATOR 
  10290.  
  10291. The MENUITEM statement creates a menu item for a menu.  The statement, 
  10292. permitted only in a MENU or SUBMENU statement, defines the text, identifier, 
  10293. and attributes of a menu item.  The system displays the text when it displays 
  10294. the corresponding menu.  If the user chooses the menu item, the system 
  10295. generates a WM_COMMAND message that includes the specified menu-item identifier 
  10296. and sends it to the window owning the menu. 
  10297.  
  10298. You can provide any number of MENUITEM statements, but each must have a unique 
  10299. menu-id value. 
  10300.  
  10301. The alternative form of the MENUITEM statement, MENUITEM SEPARATOR, creates a 
  10302. menu separator.  A menu separator is a horizontal dividing bar between two menu 
  10303. items in a submenu.  The separator is not active - that is, the user cannot 
  10304. choose it, it has no text associated with it, and it has no identifier. 
  10305.  
  10306.  text              Specifies the text of the menu item.  This field must 
  10307.                    contain zero or more characters enclosed in double quotation 
  10308.                    marks.  Character values must be in the range 1 through 255. 
  10309.                    If a double quotation mark is required in the string, you 
  10310.                    must include the double quotation mark twice.  The tilde 
  10311.                    character ( ~ ) and the \t and \a character combinations 
  10312.                    have special meanings in the string; for details, see the 
  10313.                    "Comments" section. 
  10314.  
  10315.                    If the menuitem-style field is MIS_BITMAP, item-name must be 
  10316.                    a bit-map identifier instead of a name. The bit-map 
  10317.                    identifier must have been previously defined using a BITMAP 
  10318.                    statement, must be preceded by the \b character, and must be 
  10319.                    enclosed in double quotation marks. 
  10320.  menu-id           Specifies the menu-item identifier.  This value must be an 
  10321.                    integer in the range -32768 through 32767, or a simple 
  10322.                    expression that evaluates to a value in that range.  Each 
  10323.                    identifier must be unique. 
  10324.  menuitem-style    Specifies the menu-item style.  This value can be a 
  10325.                    combination of the following: 
  10326.  
  10327.       MIS_BITMAP          Specifies that item-name is a bit map identifier. 
  10328.       MIS_BREAK           Specifies that the menu has multiple columns of items 
  10329.                           in one pull-down menu or multiple lines of menus in 
  10330.                           the top-level menu. 
  10331.       MIS_BREAKSEPARATOR  Specifies that the menu has a vertical line between 
  10332.                           the columns in a pull-down menu. 
  10333.       MIS_BUTTONSEPARATOR Specifies that the user can activate the menu item 
  10334.                           only by using the mouse.  The text is centered in the 
  10335.                           item, rather than left justified.  This option is 
  10336.                           used for the Help item on the right side of the menu 
  10337.                           bar. 
  10338.       MIS_HELP            Specifies that the menu item generates a WM_HELP 
  10339.                           message. 
  10340.       MIS_OWNERDRAW       Specifies that the menu item is drawn by the owner 
  10341.                           window. 
  10342.       MIS_SEPARATOR       Specifies that the menu item is a menu separator. 
  10343.                           Although the item-name and menu-id fields are 
  10344.                           ignored, you must still give values if you specify 
  10345.                           this style. 
  10346.       MIS_STATIC          Specifies that the user cannot choose the menu item. 
  10347.       MIS_SUBMENU         Specifies that the MENUITEM statement is to be 
  10348.                           treated as a SUBMENU statement.  When you specify 
  10349.                           this option, you must follow the MENUITEM statement 
  10350.                           with a BEGIN and END clause, as in a SUBMENU 
  10351.                           statement.  You may include a PRESPARAMS statement 
  10352.                           immediately after the BEGIN keyword. 
  10353.       MIS_SYSCOMMAND      Specifies that the menu item generates a 
  10354.                           WM_SYSCOMMAND message. 
  10355.       MIS_TEXT            Specifies that item-name is a character string.  This 
  10356.                           is the default option. 
  10357.  menuitem-attribute Specifies the menu-item attributes.  This value can be a 
  10358.                    combination of the following: 
  10359.  
  10360.       MIA_CHECKED         Places a check mark next to the menu-item name. 
  10361.       MIA_DISABLED        Disables the menu item, preventing the system from 
  10362.                           generating a message when the user chooses the 
  10363.                           command. 
  10364.       MIA_FRAMED          Places a frame (heavy border) around the menu item. 
  10365.       MIA_HILITED         Places a highlight on the menu-item name when it is 
  10366.                           displayed, by inverting the name and background. 
  10367.       MIA_NODISMISS       Causes a submenu or menu item to remain displayed 
  10368.                           after the user chooses an item. 
  10369.  
  10370.  Comments 
  10371.  
  10372.  You can use the \t or \a character combination in any item name. The \t 
  10373.  character inserts a tab when the name is displayed and is typically used to 
  10374.  separate the menu-item name from the name of an accelerator key.  The \a 
  10375.  character aligns to the right all text that follows it.  These characters are 
  10376.  intended to be used for menu items in submenus only.  The width of the 
  10377.  displayed submenu is always adjusted so that there is at least one space (and 
  10378.  usually more) between any pieces of text separated by a \t or a \a.  (When 
  10379.  compiling the menu resource, the compiler stores the \t and \a characters as 
  10380.  control characters.  For example, the \t is stored as 0x09.) 
  10381.  
  10382.  A tilde ( ~ ) character in the item name indicates that the following 
  10383.  character is used as a mnemonic character for the item. When the menu is 
  10384.  displayed, the tilde is not shown, but the mnemonic character is underlined. 
  10385.  The user can choose the menu item by pressing the key corresponding to the 
  10386.  underlined mnemonic character. 
  10387.  
  10388.  Example 
  10389.  
  10390.  This example creates a menu item named Alpha.  The item identifier is 101. 
  10391.  
  10392.   MENUITEM "Alpha", 101
  10393.  
  10394.  This example creates a menu item named Beta.  The item identifier is 102. The 
  10395.  menu item has a text style and a checked attribute. 
  10396.  
  10397.   MENUITEM "Beta", 102, MIS_TEXT, MIA_CHECKED
  10398.  
  10399.  This example creates a menu separator between menu items named Gamma and 
  10400.  Delta. 
  10401.  
  10402.   MENUITEM "Gamma", 103
  10403.   MENUITEM SEPARATOR
  10404.   MENUITEM "Delta", 104
  10405.  
  10406.  This example creates a menu item that has a bit map instead of a name. The 
  10407.  bit-map identifier, 1, is first defined using a BITMAP statement. The 
  10408.  identifier for the menu item is 301.  Note that a sign must be placed in front 
  10409.  of the bit map identifier in the MENUITEM statement. 
  10410.  
  10411.   BITMAP 1 mybitmap.bmp
  10412.  
  10413.   MENUITEM "#1", 301, MIS_BITMAP
  10414.  
  10415.  
  10416. ΓòÉΓòÉΓòÉ 18.5.41. MESSAGETABLE Statement ΓòÉΓòÉΓòÉ
  10417.  
  10418. Syntax: 
  10419.  
  10420. MESSAGETABLE  [load-option]  [ mem-option][codepage]
  10421. BEGIN
  10422. string-id string-definition
  10423.     .
  10424.     .
  10425.     .
  10426. END
  10427.  
  10428. The MESSAGETABLE statement creates one or more string resources for an 
  10429. application.  A string resource is a null-terminated character string that has 
  10430. a unique string identifier.  A string resource can be loaded from the 
  10431. executable file when needed by using the DosGetResource function with the 
  10432. RT_MESSAGE resource type. RT_MESSAGE resources are bundled together in groups 
  10433. of 16, with any missing IDs replaced with zero length strings. Each group, or 
  10434. bundle, is assigned a unique sequential ID. The resource string ID is not 
  10435. necessarily the same as the ID specified when using DosGetResource. The formula 
  10436. for calculating the ID of the resource bundle, for use in DosGetResource, is as 
  10437. follows: 
  10438.  
  10439. bundle ID = ( id / 16) +1,
  10440. where id is the string ID assigned in the RC file. 
  10441.  
  10442. Thus, bundle 1 contains strings 0 to 15, bundle 2 contains strings 16 to 31, 
  10443. and so on. Once the address of the bundle has been returned by DosGetResource 
  10444. (using the calculated ID), the buffer can be parsed to locate the particular 
  10445. string within the bundle. The number of the string is calculated by the 
  10446. formula: 
  10447.  
  10448. string = id % 16
  10449. (string = remainder for id/16). 
  10450.  
  10451. The buffer returned consists of the CodePage of the strings in the first 
  10452. USHORT, followed by the 16 strings in the bundle. The first BYTE of each string 
  10453. is the length of the string (including the null terminator), followed by the 
  10454. string and the terminator. A zero length string is represented by two bytes: 
  10455. 01 (string length) followed by the null terminator. 
  10456.  
  10457. You can provide any number of MESSAGETABLE statements in a resource script 
  10458. file.  The compiler treats all the strings from the various MESSAGETABLE 
  10459. statements as if they belonged to a single statement. This means that no two 
  10460. strings in a resource script file can have the same string identifier. 
  10461.  
  10462. Although the MESSAGETABLE and STRINGTABLE statements are nearly identical, most 
  10463. applications use the STRINGTABLE statement instead of the MESSAGETABLE 
  10464. statement to create string resources. 
  10465.  
  10466.  load-option    Specifies when the system loads the resource from the 
  10467.                 executable file into memory.  This value must be one of the 
  10468.                 following: 
  10469.  
  10470.       PRELOAD        System loads the resource when the application starts. 
  10471.       LOADONCALL     System loads the resource when the application calls the 
  10472.                      DosGetResource or DosGetResource2 function.  This is the 
  10473.                      default option. 
  10474.  mem-option     Specifies how the system manages the resource when it is in 
  10475.                 memory.  This value must be one or more of the following: 
  10476.  
  10477.       FIXED          System keeps the resource at a fixed memory location. 
  10478.       MOVEABLE       System moves the resource as necessary to compact memory. 
  10479.       DISCARDABLE    System discards the resource if it is no longer needed. 
  10480.                 The default setting is MOVEABLE and DISCARDABLE. 
  10481.  codepage       Specifies a code page value.  See CODEPAGE Statement for a list 
  10482.                 of valid code pages. 
  10483.  string-id      Specifies the character-string identifier.  This value must be 
  10484.                 an integer in the range -32768 through 32767, or a simple 
  10485.                 expression that evaluates to a value in that range.  The value 
  10486.                 can be specified in decimal or hexadecimal notation.  Each 
  10487.                 string identifier in a resource script file must be unique. 
  10488.  string-definition Specifies a character string.  This field must contain zero 
  10489.                 or more characters enclosed in double quotation marks. 
  10490.                 Character values must be in the range 1 through 255.  If a 
  10491.                 double quotation mark is required in the string, you must 
  10492.                 provide the double quotation mark twice. 
  10493.  
  10494.  Comments 
  10495.  
  10496.  You can continue a string on multiple lines by terminating the line with a 
  10497.  backslash (\) or by terminating the line with a double quotation mark (") and 
  10498.  then starting the next line with a double quotation mark. 
  10499.  
  10500.  Example 
  10501.  
  10502.  This example creates two string resources whose string identifiers are 1 and 
  10503.  2. 
  10504.  
  10505.   MESSAGETABLE
  10506.   BEGIN
  10507.       1 "Filename not found"
  10508.       2 "Cannot open file for reading"
  10509.   END
  10510.  
  10511.  
  10512. ΓòÉΓòÉΓòÉ 18.5.42. MLE Statement ΓòÉΓòÉΓòÉ
  10513.  
  10514. Syntax: 
  10515.  
  10516. MLE text, id, x, y, width, height[, style]
  10517.  
  10518. The MLE statement creates a multiple-line entry-field control.  The control is 
  10519. a rectangle in which the user can type and edit multiple lines of text.  The 
  10520. control displays a pointer when the user selects it.  The user can then use the 
  10521. keyboard to enter text or edit the existing text.  Editing keys include the 
  10522. BACKSPACE and DELETE keys. By using the mouse or the DIRECTION keys, the user 
  10523. can select the character or characters to delete or select the place to insert 
  10524. new characters.  The MLE statement, which you can use only in a DIALOG or 
  10525. WINDOW statement, defines the text, identifier, dimensions, and attributes of a 
  10526. control window.  The predefined class for this control is WC_MLE.  If you do 
  10527. not specify a style, the default style is MLS_BORDER, WS_GROUP, and WS_TABSTOP. 
  10528.  
  10529.  text    Specifies text that is displayed in the rectangular area of the 
  10530.          control.  If the MLS_READONLY style is not specified, the user can 
  10531.          edit the text.  This field must contain zero or more characters 
  10532.          enclosed in double quotation marks.  Character values must be in the 
  10533.          range 1 through 255.  If a double quotation mark is required in the 
  10534.          text, you must include the double quotation mark twice. 
  10535.  id      Specifies the control identifier.  This value must be an integer in 
  10536.          the range -32768 through 32767, or a simple expression that evaluates 
  10537.          to a value in that range. 
  10538.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10539.          This value must be an integer in the range -32768 through 32767 or an 
  10540.          expression consisting of integers and the addition (+) or subtraction 
  10541.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10542.          relative to the origin of the dialog box, window, or control 
  10543.          containing the specified control. 
  10544.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10545.          This value must be an integer in the range -32768 through 32767 or an 
  10546.          expression consisting of integers and the addition (+) or subtraction 
  10547.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10548.          relative to the origin of the dialog box, window, or control 
  10549.          containing the specified control. 
  10550.  width   Specifies the width of the control.  This value must be an integer in 
  10551.          the range 0 through 65 535 or an expression consisting of integers and 
  10552.          the addition (+) or subtraction (-) operator.  The width is in 
  10553.          n-character units. 
  10554.  height  Specifies the height of the control.  This value must be an integer in 
  10555.          the range 0 through 65 535 or an expression consisting of integers and 
  10556.          the addition (+) or subtraction (-) operator.  The height is in 
  10557.          1/8-character units. 
  10558.  style   Specifies the control styles.  This value can be a combination of the 
  10559.          styles specified for WC_MLE. You can use the bitwise OR (|) operator 
  10560.          to combine styles. 
  10561.  
  10562.  Example 
  10563.  
  10564.  This example creates a multiple-line entry-field control that is not labeled. 
  10565.  
  10566.   MLE "", 101, 10, 10, 50, 100
  10567.  
  10568.  
  10569. ΓòÉΓòÉΓòÉ 18.5.43. NOTEBOOK Statement ΓòÉΓòÉΓòÉ
  10570.  
  10571. Syntax: 
  10572.  
  10573. NOTEBOOK   id, x, y, width, height[, style]
  10574.  
  10575. The NOTEBOOK statement creates a notebook control within the dialog window. 
  10576. This control is used to organize information on individual pages so that it can 
  10577. be located and displayed easily. The NOTEBOOK statement defines the identifier, 
  10578. position, dimensions, and attributes of a notebook control. The predefined 
  10579. class for this control is WC_NOTEBOOK. If you do not specify a style, the 
  10580. default style is WS_TABSTOP and WS_VISIBLE. 
  10581.  
  10582.  id      Specifies the control identifier.  The value is any integer -32768 
  10583.          through 32767, or a simple expression that evaluates to a value in 
  10584.          that range. 
  10585.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10586.          The value is any integer -32768 through 32767 or an expression 
  10587.          consisting of integers and the addition (+) or subtraction (-) 
  10588.          operator.  The coordinate is assumed to be in dialog units and is 
  10589.          relative to the origin of the dialog window. 
  10590.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10591.          The value is any integer -32768 through 32767 or an expression 
  10592.          consisting of integers and the addition (+) or subtraction (-) 
  10593.          operator.  The coordinate is assumed to be in dialog units and is 
  10594.          relative to the origin of the dialog window. 
  10595.  width   Specifies the width of the control.  The value is any integer 0 
  10596.          through 65 535 or an expression consisting of integers and the 
  10597.          addition (+) or subtraction (-) operator. The width is in n-character 
  10598.          units. 
  10599.  height  Specifies the height of the control.  The value is any integer 0 
  10600.          through 65535 or an expression consisting of integers and the 
  10601.          addition (+) or subtraction (-) operator. The height is in 
  10602.          1/8-character units. 
  10603.  style   Specifies the control styles.  This value can be a combination of the 
  10604.          styles specified for WC_NOTEBOOK.  You can use the bitwise OR ( | ) 
  10605.          operator to combine styles. 
  10606.  
  10607.  Comments 
  10608.  
  10609.  The NOTEBOOK statement is used only in a DIALOG or WINDOW statement. 
  10610.  
  10611.  Example 
  10612.  
  10613.  This example creates a notebook control at position (20, 20) within the dialog 
  10614.  window.  The notebook has a width of 200 character units and a height of 50 
  10615.  character units.  Its resource ID is 201. The tabs style BKS_ROUNDEDTABS 
  10616.  specification overrides the notebook default style of square tabs. The default 
  10617.  styles WS_TABSTOP and WS_GROUP are both in effect, though only the latter is 
  10618.  specified. 
  10619.  
  10620.   #define    IDC_NOTEBOOK     201
  10621.   #define    IDD_NOTEBOOKDLG  503
  10622.   DIALOG "Notebook", IDD_NOTEBOOKDLG, 11, 11, 420, 420, FS_NOBYTEALIGN |
  10623.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  10624.     BEGIN
  10625.       NOTEBOOK   IDC_NOTEBOOK, 20, 20, 200, 400, BKS_ROUNDEDTABS | WS_GROUP
  10626.     END
  10627.  
  10628.  
  10629. ΓòÉΓòÉΓòÉ 18.5.44. POINTER Statement ΓòÉΓòÉΓòÉ
  10630.  
  10631. Syntax: 
  10632.  
  10633. POINTER pointer-id  [load-option]  [ mem-option]
  10634. [codepage]  filename
  10635.  
  10636. The POINTER statement defines a pointer resource for an application. A pointer 
  10637. resource, typically created by using the OS/2 Icon Editor, is a bit map 
  10638. defining the shape of the mouse pointer on the screen. The POINTER statement 
  10639. copies the pointer resource from the file specified in the filename field and 
  10640. adds it to the application's other resources.  A pointer resource can be loaded 
  10641. from the executable file when needed by using the WinLoadPointer function. 
  10642.  
  10643. You can provide any number of POINTER statements in a resource script file, but 
  10644. each statement must specify a unique pointer-id value. 
  10645.  
  10646.  pointer-id        Specifies the pointer-resource identifier.  This value must 
  10647.                    be an integer in the range -32768 through 32767, or a simple 
  10648.                    expression that evaluates to a value in that range. 
  10649.  load-option       Specifies when the system loads the resource from the 
  10650.                    executable file into memory.  This value must be one of the 
  10651.                    following: 
  10652.  
  10653.       PRELOAD        System loads the resource when the application starts. 
  10654.       LOADONCALL     System loads the resource when the application calls the 
  10655.                      WinLoadPointer function.  This is the default option. 
  10656.  mem-option        Specifies how the system manages the resource when it is in 
  10657.                    memory.  This value must be one or more of the following: 
  10658.  
  10659.       FIXED          System keeps the resource at a fixed memory location. 
  10660.       MOVEABLE       System moves the resource as necessary to compact memory. 
  10661.       DISCARDABLE    System discards the resource if it is no longer needed. 
  10662.                    The default setting is MOVEABLE and DISCARDABLE. 
  10663.  codepage          Specifies a code page value.  See CODEPAGE Statement for a 
  10664.                    list of valid code pages. 
  10665.  filename          Specifies the name of the file containing the pointer 
  10666.                    resource. If the file is not in the current directory, 
  10667.                    filename must be preceded by a full path. 
  10668.  
  10669.  Example 
  10670.  
  10671.  This example defines a pointer whose pointer identifier is 10. The pointer 
  10672.  resource is copied from the file custom.cur. 
  10673.  
  10674.   POINTER 10 custom.cur
  10675.  
  10676.  
  10677. ΓòÉΓòÉΓòÉ 18.5.45. PRESPARAMS Statement ΓòÉΓòÉΓòÉ
  10678.  
  10679. Syntax: 
  10680.  
  10681. PRESPARAMS presparam, value, presparam, value, ...
  10682.  
  10683. The PRESPARAMS statement defines presentation fields that customize a dialog 
  10684. box, menu, window, or control.  PRESPARAMS data is a series of types and 
  10685. values.  The window procedure of the dialog box, menu, window or control 
  10686. receives and processes this data when the item is created.  The data for custom 
  10687. controls can be in any format. 
  10688.  
  10689.  presparam   Specifies a presentation-field type. 
  10690.  value       Specifies the presentation-field value. 
  10691.  
  10692.  Comments 
  10693.  
  10694.  PRESPARAMS is often used to supply data to control the appearance of the 
  10695.  customized window when it is first created.  For example, the PRESPARAMS 
  10696.  statement may specify the colors to be used in the window. 
  10697.  
  10698.  Example 
  10699.  
  10700.  This example creates a menu resource with a menu identifier of 1. The 
  10701.  PRESPARAMS statement specifies that the following three menu items be 
  10702.  displayed in the 12-point Helvetica font. 
  10703.  
  10704.   MENU 1
  10705.   BEGIN
  10706.       PRESPARAMS PP_FONTNAMESIZE, "12.Helv"
  10707.       MENUITEM "New", 100
  10708.       MENUITEM "Open", 101
  10709.       MENUITEM "Save", 102
  10710.   END
  10711.  
  10712.  
  10713. ΓòÉΓòÉΓòÉ 18.5.46. PUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  10714.  
  10715. Syntax: 
  10716.  
  10717. PUSHBUTTON text, id, x, y, width, height[, style]
  10718.  
  10719. The PUSHBUTTON statement creates a pushbutton control.  The control is a 
  10720. round-cornered rectangle containing the given text.  The control sends a 
  10721. message to its parent whenever the user chooses the control. The PUSHBUTTON 
  10722. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  10723. text, identifier, dimensions, and attributes of a control window.  The 
  10724. predefined class for this control is WC_BUTTON. If you do not specify a style, 
  10725. the default style is BS_PUSHBUTTON and WS_TABSTOP. 
  10726.  
  10727.  text    Specifies text that is centered in the rectangular area of the 
  10728.          control.  This field must contain zero or more characters enclosed in 
  10729.          double quotation marks.  Character values must be in the range 1 
  10730.          through 255.  If a double quotation mark is required in the text, you 
  10731.          must include the double quotation mark twice.  A tilde ( ~ ) character 
  10732.          in the text indicates that the following character is used as a 
  10733.          mnemonic character for the control.  When the control is displayed, 
  10734.          the tilde is not shown, but the mnemonic character is underlined. The 
  10735.          user can choose the control by pressing the key corresponding to the 
  10736.          underlined mnemonic character. 
  10737.  id      Specifies the control identifier.  This value must be an integer in 
  10738.          the range -32768 through 32767, or a simple expression that evaluates 
  10739.          to a value in that range. 
  10740.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10741.          This value must be an integer in the range -32768 through 32767 or an 
  10742.          expression consisting of integers and the addition (+) or subtraction 
  10743.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10744.          relative to the origin of the dialog box, window, or control 
  10745.          containing the specified control. 
  10746.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10747.          This value must be an integer in the range -32768 through 32767 or an 
  10748.          expression consisting of integers and the addition (+) or subtraction 
  10749.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10750.          relative to the origin of the dialog box, window, or control 
  10751.          containing the specified control. 
  10752.  width   Specifies the width of the control.  This value must be an integer in 
  10753.          the range 0 through 65 535 or an expression consisting of integers and 
  10754.          the addition (+) or subtraction (-) operator.  The width is in 
  10755.          n-character units. 
  10756.  height  Specifies the height of the control.  This value must be an integer in 
  10757.          the range 0 through 65 535 or an expression consisting of integers and 
  10758.          the addition (+) or subtraction (-) operator.  The height is in 
  10759.          1/8-character units. 
  10760.  style   Specifies the control styles.  This value can be a combination of the 
  10761.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  10762.          operator to combine styles. 
  10763.  
  10764.  Example 
  10765.  
  10766.  This example creates a pushbutton control that is labeled "OK." 
  10767.  
  10768.   PUSHBUTTON "OK", 101, 10, 10, 100, 100
  10769.  
  10770.  
  10771. ΓòÉΓòÉΓòÉ 18.5.47. RADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  10772.  
  10773. Syntax: 
  10774.  
  10775. RADIOBUTTON text, id, x, y, width, height[, style]
  10776.  
  10777. The RADIOBUTTON statement creates a radio-button control.  The control is a 
  10778. small circle that has the given text displayed to its right.  The control 
  10779. highlights the circle and sends a message to its parent window when the user 
  10780. selects the button.  The control removes the highlight and sends a message when 
  10781. the button is next selected.  The RADIOBUTTON statement, which you can use only 
  10782. in a DIALOG or WINDOW statement, defines the text, identifier, dimensions, and 
  10783. attributes of a control window.  The predefined class for this control is 
  10784. WC_BUTTON.  If you do not specify a style, the default style is BS_RADIOBUTTON. 
  10785.  
  10786.  text    Specifies text that is displayed to the right of the control.  This 
  10787.          field must contain zero or more characters enclosed in double 
  10788.          quotation marks.  Character values must be in the range 1 through 255. 
  10789.          If a double quotation mark is required in the text, you must include 
  10790.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  10791.          indicates that the following character is used as a mnemonic character 
  10792.          for the control.  When the control is displayed, the tilde is not 
  10793.          shown, but the mnemonic character is underlined.  The user can choose 
  10794.          the control by pressing the key corresponding to the underlined 
  10795.          mnemonic character. 
  10796.  id      Specifies the control identifier.  This value must be an integer in 
  10797.          the range -32768 through 32767, or a simple expression that evaluates 
  10798.          to a value in that range. 
  10799.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10800.          This value must be an integer in the range -32768 through 32767 or an 
  10801.          expression consisting of integers and the addition (+) or subtraction 
  10802.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10803.          relative to the origin of the dialog box, window, or control 
  10804.          containing the specified control. 
  10805.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10806.          This value must be an integer in the range -32768 through 32767 or an 
  10807.          expression consisting of integers and the addition (+) or subtraction 
  10808.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10809.          relative to the origin of the dialog box, window, or control 
  10810.          containing the specified control. 
  10811.  width   Specifies the width of the control.  This value must be an integer in 
  10812.          the range 0 through 65 535 or an expression consisting of integers and 
  10813.          the addition (+) or subtraction (-) operator.  The width is in 
  10814.          n-character units. 
  10815.  height  Specifies the height of the control.  This value must be an integer in 
  10816.          the range 0 through 65 535 or an expression consisting of integers and 
  10817.          the addition (+) or subtraction (-) operator.  The height is in 
  10818.          1/8-character units. 
  10819.  style   Specifies the control styles.  This value can be a combination of the 
  10820.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  10821.          operator to combine styles. 
  10822.  
  10823.  Example 
  10824.  
  10825.  This example creates a radio-button control that is labeled "Italic." 
  10826.  
  10827.   RADIOBUTTON "Italic", 101, 10, 10, 24, 50
  10828.  
  10829.  
  10830. ΓòÉΓòÉΓòÉ 18.5.48. RCDATA Statement ΓòÉΓòÉΓòÉ
  10831.  
  10832. Syntax: 
  10833.  
  10834. RCDATA resource-id
  10835. BEGIN
  10836. data-definition  , data-definition   ...
  10837.     .
  10838.     .
  10839.     .
  10840. END
  10841.  
  10842. The RCDATA statement defines a custom-data resource for an application.  The 
  10843. custom data can be in whatever format the application requires.  You can 
  10844. provide any number of RCDATA statements in a resource script file, but each 
  10845. statement must specify a unique resource-id value.  A custom-data resource can 
  10846. be loaded from the executable file when needed by using the DosGetResource or 
  10847. DosGetResource2 functions with the RT_RCDATA resource type. 
  10848.  
  10849.  resource-id       Specifies the custom-data identifier.  This value must be an 
  10850.                    integer in the range -32768 through 32767, or a simple 
  10851.                    expression that evaluates to a value in that range. 
  10852.  data-definition   Specifies the custom data.  The data may be simple 
  10853.                    expressions or strings. 
  10854.  
  10855.  Example 
  10856.  
  10857.  This example defines custom data that has a resource identifier of 5. 
  10858.  
  10859.   RCDATA 5
  10860.   BEGIN
  10861.       "E. A. Poe", 1849, -32, 3L, 0x8000000l, 3+4+5
  10862.   END
  10863.  
  10864.  
  10865. ΓòÉΓòÉΓòÉ 18.5.49. RCINCLUDE Statement ΓòÉΓòÉΓòÉ
  10866.  
  10867. Syntax: 
  10868.  
  10869. RCINCLUDE filename
  10870.  
  10871. The RCINCLUDE statement causes RC to process the resource script file specified 
  10872. in the filename field along with the current resource script file.  The 
  10873. contents of both files are compiled by RC and the results are placed in one 
  10874. binary resource file and/or executable file. 
  10875.  
  10876.  filename    Specifies the name of the resource script file to be included. If 
  10877.              the file is not in the current directory, filename must be 
  10878.              preceded by a full path. 
  10879.  
  10880.  Comments 
  10881.  
  10882.  RCINCLUDE statements are processed before any other processing is done, 
  10883.  including preprocessing by RCPP.EXE, which removes comments, replaces values 
  10884.  in the define directives, and so on. 
  10885.  
  10886.  When specifying a high performance file system (HPFS) file name on an 
  10887.  RCINCLUDE statement, enclose the path and file name in double quotes; for 
  10888.  example: 
  10889.  
  10890.      RCINCLUDE "d:\project\long dialog.dlg"
  10891.  
  10892.  Double quotes enables the Resource Compiler to recognize a name containing 
  10893.  embedded blank characters. 
  10894.  
  10895.  Example 
  10896.  
  10897.  This example includes the file DIALOGS.RC as part of the current resource 
  10898.  script file. 
  10899.  
  10900.   RCINCLUDE dialogs.rc
  10901.  
  10902.  
  10903. ΓòÉΓòÉΓòÉ 18.5.50. RESOURCE Statement ΓòÉΓòÉΓòÉ
  10904.  
  10905. Syntax: 
  10906.  
  10907. RESOURCE type-id resource-id  [load-option]
  10908. [mem-option][code page]  filename
  10909.  
  10910. The RESOURCE statement defines a custom resource for an application. A custom 
  10911. resource can be any data in any format.  The RESOURCE statement copies the 
  10912. custom resource from the specified file and adds it to the application's other 
  10913. resources.  A custom resource can be loaded from the executable file when 
  10914. needed by using the DosGetResource or DosGetResource2 function and specifying 
  10915. the resource's type and resource identifier. 
  10916.  
  10917. You can provide any number of RESOURCE statements in a resource script file, 
  10918. but each statement must specify a unique combination of type-id and resource-id 
  10919. values.  That is, RESOURCE statements having the same type-id value are 
  10920. permitted as long as the resource-id value for each is unique. 
  10921.  
  10922.  type-id           Specifies the custom-resource type.  This value must be an 
  10923.                    integer in the range 256 through 65 535, or a simple 
  10924.                    expression that evaluates to a value in that range.  (Values 
  10925.                    0 through 255 are reserved.) 
  10926.  resource-id       Specifies the custom-resource identifier.  This value must 
  10927.                    be an integer in the range -32768 through 32767, or a simple 
  10928.                    expression that evaluates to a value in that range. 
  10929.  load-option       Specifies when the system loads the resource from the 
  10930.                    executable file into memory.  This value must be one of the 
  10931.                    following: 
  10932.  
  10933.       PRELOAD        System loads the resource when the application starts. 
  10934.       LOADONCALL     System loads the resource when the application calls the 
  10935.                      DosGetResource or DosGetResource2 function.  This is the 
  10936.                      default option. 
  10937.  mem-option        Specifies how the system manages the resource when it is in 
  10938.                    memory.  This value must be one or more of the following: 
  10939.  
  10940.       FIXED          System keeps the resource at a fixed memory location. 
  10941.       MOVEABLE       System moves the resource as necessary to compact memory. 
  10942.       DISCARDABLE    System discards the resource if it is no longer needed. 
  10943.                    The default setting is MOVEABLE and DISCARDABLE. 
  10944.  codepage          Specifies a code page value. See CODEPAGE Statement. for a 
  10945.                    list of valid code pages. 
  10946.  filename          Specifies the name of the file containing the custom 
  10947.                    resource. If the file is not in the current directory, 
  10948.                    filename must be preceded by a full path. 
  10949.  
  10950.  Example 
  10951.  
  10952.  This example defines a custom resource whose type identifier is 300 and whose 
  10953.  resource identifier is 14.  The custom resource is copied from the file 
  10954.  CUSTOM.RES. 
  10955.  
  10956.   RESOURCE 300 14 custom.res
  10957.  
  10958.  
  10959. ΓòÉΓòÉΓòÉ 18.5.51. RTEXT Statement ΓòÉΓòÉΓòÉ
  10960.  
  10961. Syntax: 
  10962.  
  10963. RTEXT text, id, x, y, width, height[, style]
  10964.  
  10965. The RTEXT statement creates a right-aligned text control.  The control is a 
  10966. simple rectangle displaying the given text right-aligned in the rectangle.  The 
  10967. text is formatted before it is displayed.  Words that would extend past the end 
  10968. of a line are automatically wrapped to the beginning of the next line.  The 
  10969. RTEXT statement, which you can use only in a DIALOG or WINDOW statement, 
  10970. defines the text, identifier, dimensions, and attributes of the control.  The 
  10971. predefined class for the control is WC_STATIC.  If you do not specify a style, 
  10972. the default style is SS_TEXT, DT_RIGHT, and WS_GROUP. 
  10973.  
  10974.  text    Specifies text that is right-aligned in the rectangular area of the 
  10975.          control.  This field must contain zero or more characters enclosed in 
  10976.          double quotation marks.  Character values must be in the range 1 
  10977.          through 255.  If a double quotation mark is required in the text, you 
  10978.          must include the double quotation mark twice. 
  10979.  id      Specifies the control identifier.  This value must be an integer in 
  10980.          the range -32768 through 32767, or a simple expression that evaluates 
  10981.          to a value in that range. 
  10982.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10983.          This value must be an integer in the range -32768 through 32767 or an 
  10984.          expression consisting of integers and the addition (+) or subtraction 
  10985.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10986.          relative to the origin of the dialog box, window, or control 
  10987.          containing the specified control. 
  10988.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10989.          This value must be an integer in the range -32768 through 32767 or an 
  10990.          expression consisting of integers and the addition (+) or subtraction 
  10991.          (-) operator.  The coordinate is assumed to be in dialog units and is 
  10992.          relative to the origin of the dialog box, window, or control 
  10993.          containing the specified control. 
  10994.  width   Specifies the width of the control.  This value must be an integer in 
  10995.          the range 0 through 65 535 or an expression consisting of integers and 
  10996.          the addition (+) or subtraction (-) operator.  The width is in 
  10997.          n-character units. 
  10998.  height  Specifies the height of the control.  This value must be an integer in 
  10999.          the range 0 through 65 535 or an expression consisting of integers and 
  11000.          the addition (+) or subtraction (-) operator.  The height is in 
  11001.          1/8-character units. 
  11002.  style   Specifies the control styles.  This value can be a combination of the 
  11003.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  11004.          operator to combine styles. 
  11005.  
  11006.  Example 
  11007.  
  11008.  This example creates a right-aligned text control that is labeled "Filename." 
  11009.  
  11010.   RTEXT "Filename", 101, 10, 10, 100, 100
  11011.  
  11012.  
  11013. ΓòÉΓòÉΓòÉ 18.5.52. SLIDER Statement ΓòÉΓòÉΓòÉ
  11014.  
  11015. Syntax: 
  11016.  
  11017. SLIDER   id, x, y, width, height[, style]
  11018.  
  11019. The SLIDER statement creates a slider control within the dialog window.  This 
  11020. control lets the user set, display, or modify a value by moving a slider arm 
  11021. along a slider shaft.  The SLIDER statement defines the identifier, position, 
  11022. dimensions, and attributes of a slider control.  The predefined class for this 
  11023. control is WC_SLIDER.  If you do not specify a style, the default style is 
  11024. WS_TABSTOP and WS_VISIBLE. 
  11025.  
  11026.  id      Specifies the control identifier.  The value is any integer -32768 
  11027.          through 32767, or a simple expression that evaluates to a value in 
  11028.          that range. 
  11029.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11030.          The value is any integer -32768 through 32767 or an expression 
  11031.          consisting of integers and the addition (+) or subtraction (-) 
  11032.          operator.  The coordinate is assumed to be in dialog units and is 
  11033.          relative to the origin of the dialog window. 
  11034.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11035.          The value is any integer -32768 through 32767 or an expression 
  11036.          consisting of integers and the addition (+) or subtraction (-) 
  11037.          operator.  The coordinate is assumed to be in dialog units and is 
  11038.          relative to the origin of the dialog window. 
  11039.  width   Specifies the width of the control.  The value is any integer 0 
  11040.          through 65 535 or an expression consisting of integers and the 
  11041.          addition (+) or subtraction (-) operator. The width is in n-character 
  11042.          units. 
  11043.  height  Specifies the height of the control.  The value is any integer 0 
  11044.          through 65 535 or an expression consisting of integers and the 
  11045.          addition (+) or subtraction (-) operator. The height is in 
  11046.          1/8-character units. 
  11047.  style   Specifies the control styles.  The value can be any combination of the 
  11048.          styles specified for WC_SLIDER.  You can use the bitwise OR ( | ) 
  11049.          operator to combine styles. 
  11050.  
  11051.  Comments 
  11052.  
  11053.  The SLIDER statement is only used in a DIALOG or WINDOW statement. 
  11054.  
  11055.  Example 
  11056.  
  11057.  This example creates a slider control at position (40, 30) within the dialog 
  11058.  window.  The slider has a width of 120 character units and a height of 2 
  11059.  character units.  Its resource ID is 101. The style specification 
  11060.  SLS_BUTTONSLEFT adds buttons to the left of the slider shaft.  The default 
  11061.  styles WS_TABSTOP and WS_VISIBLE are both in effect, though only the latter is 
  11062.  specified. 
  11063.  
  11064.   #define    IDC_SLIDER       101
  11065.   #define    IDD_SLIDERDLG    502
  11066.   DIALOG "Slider", IDD_SLIDERDLG, 11, 11, 200, 240, FS_NOBYTEALIGN |
  11067.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  11068.     BEGIN
  11069.       SLIDER   IDC_SLIDER, 40, 30, 120, 16, SLS_BUTTONSLEFT | WS_VISIBLE
  11070.     END
  11071.  
  11072.  
  11073. ΓòÉΓòÉΓòÉ 18.5.53. SPINBUTTON Statement ΓòÉΓòÉΓòÉ
  11074.  
  11075. Syntax: 
  11076.  
  11077. SPINBUTTON   id, x, y, width, height[, style]
  11078.  
  11079. The SPINBUTTON statement creates a spinbutton control within the dialog window. 
  11080. This control gives the user quick access to a finite set of data.  The 
  11081. SPINBUTTON statement defines the identifier, position, dimensions, and 
  11082. attributes of a spinbutton control.  The predefined class for this control is 
  11083. WC_SPINBUTTON. If you do not specify a style, the default style is WS_TABSTOP, 
  11084. WS_VISIBLE, and SPBS_MASTER. 
  11085.  
  11086.  id      Specifies the control identifier.  The value is any integer -32768 
  11087.          through 32767, or a simple expression that evaluates to a value in 
  11088.          that range. 
  11089.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11090.          The value is any integer -32768 through 32767 or an expression 
  11091.          consisting of integers and the addition (+) or subtraction (-) 
  11092.          operator.  The coordinate is assumed to be in dialog units and is 
  11093.          relative to the origin of the dialog window. 
  11094.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11095.          The value is any integer -32768 through 32767 or an expression 
  11096.          consisting of integers and the addition (+) or subtraction (-) 
  11097.          operator.  The coordinate is assumed to be in dialog units and is 
  11098.          relative to the origin of the dialog window. 
  11099.  width   Specifies the width of the control.  The value is any integer 0 
  11100.          through 65 535 or an expression consisting of integers and the 
  11101.          addition (+) or subtraction (-) operator. The width is in n-character 
  11102.          units. 
  11103.  height  Specifies the height 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 height is in 
  11106.          1/8-character units. 
  11107.  style   Specifies the control styles.  The value is any combination of the 
  11108.          styles specified for WC_SPINBUTTON.  You can use the bitwise OR ( | ) 
  11109.          operator to combine styles. 
  11110.  
  11111.  Comments 
  11112.  
  11113.  The SPINBUTTON statement is used only in a DIALOG or WINDOW statement. 
  11114.  
  11115.  Example 
  11116.  
  11117.  This example creates a spinbutton control at position (80, 20) within the 
  11118.  dialog window.  The spinbutton has a width of 60 character units and a height 
  11119.  of 3 character units.  Its resource ID is 302. The style specification 
  11120.  SPBS_NUMERICONLY creates a control which accepts only the digits 0-9 and 
  11121.  virtual keys.  The default styles SPBS_MASTER, WS_TABSTOP, and WS_VISIBLE are 
  11122.  all in effect, though only WS_TABSTOP is specified. 
  11123.  
  11124.   #define    IDC_SPINBUTTON   302
  11125.   #define    IDD_SPINDLG    502
  11126.   DIALOG "Spin button", IDD_SPINDLG, 11, 11, 200, 240, FS_NOBYTEALIGN |
  11127.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  11128.     BEGIN
  11129.       SPINBUTTON  IDC_SPINBUTTON, 80, 20, 60, 24, SPBS_NUMERICONLY | WS_TABSTOP
  11130.     END
  11131.  
  11132.  
  11133. ΓòÉΓòÉΓòÉ 18.5.54. STRINGTABLE Statement ΓòÉΓòÉΓòÉ
  11134.  
  11135. Syntax: 
  11136.  
  11137. STRINGTABLE  [load-option]  [mem-option][codepage]
  11138. BEGIN
  11139. string-id string-definition
  11140.     .
  11141.     .
  11142.     .
  11143. END
  11144.  
  11145. The STRINGTABLE statement creates one or more string resources for an 
  11146. application.  A string resource is a null-terminated character string that has 
  11147. a unique string identifier.  A string resource can be loaded from the 
  11148. executable file when needed by using the WinLoadString or with DosGetResource 
  11149. with the RT_STRING resource type. RT_STRING resources are bundled together in 
  11150. groups of 16, with any missing IDs replaced with zero length strings. Each 
  11151. group, or bundle, is assigned a unique sequential ID. The resource string ID is 
  11152. not necessarily the same as the ID specified when using DosGetResource. The 
  11153. formula for calculating the ID of the resource bundle, for use in 
  11154. DosGetResource, is as follows: 
  11155.  
  11156. bundle ID = ( id / 16) +1
  11157. where id is the string ID assigned in the RC file. 
  11158.  
  11159. Thus, bundle 1 contains strings 0 to 15, bundle 2 contains strings 16 to 31, 
  11160. and so on. Once the address of the bundle has been returned by DosGetResource 
  11161. (using the calculated ID), the buffer can be parsed to locate the particular 
  11162. string within the bundle. The number of the string is calculated by the 
  11163. formula: 
  11164.  
  11165. string = id % 16
  11166. (string = remainder for id/16). 
  11167.  
  11168. The buffer returned consists of the CodePage of the strings in the first 
  11169. USHORT, followed by the 16 strings in the bundle. The first BYTE of each string 
  11170. is the length of the string (including the null terminator), followed by the 
  11171. string and the terminator. A zero length string is represented by two bytes: 
  11172. 01 (string length) followed by the null terminator. 
  11173.  
  11174. You can provide any number of STRINGTABLE statements in a resource script file. 
  11175. The compiler treats all the strings from the various STRINGTABLE statements as 
  11176. if they belonged to a single statement.  This means that no two strings in a 
  11177. resource script file can have the same string identifier. 
  11178.  
  11179.  load-option    Specifies when the system loads the resource from the 
  11180.                 executable file into memory.  This value must be one of the 
  11181.                 following: 
  11182.  
  11183.       PRELOAD        System loads the resource when the application starts. 
  11184.       LOADONCALL     System loads the resource when the application calls the 
  11185.                      WinLoadString function. This is the default option. 
  11186.  mem-option     Specifies how the system manages the resource when it is in 
  11187.                 memory.  This value must be one or more of the following: 
  11188.  code-page      Specifies a code page value.  See CODEPAGE Statement for a list 
  11189.                 of valid code page values. 
  11190.  
  11191.       FIXED          System keeps the resource at a fixed memory location. 
  11192.       MOVEABLE       System moves the resource as necessary to compact memory. 
  11193.       DISCARDABLE    System discards the resource if it is no longer needed. 
  11194.                 The default setting is MOVEABLE and DISCARDABLE. 
  11195.  string-id      Specifies the character-string identifier.  This value must be 
  11196.                 an integer in the range -32768 through 32767, or a simple 
  11197.                 expression that evaluates to a value in that range.  The value 
  11198.                 can be specified in decimal or hexadecimal notation.  Each 
  11199.                 string identifier in a resource script file must be unique. 
  11200.  string-definition Specifies a character string.  This field must contain zero 
  11201.                 or more characters enclosed in double quotation marks. 
  11202.                 Character values must be in the range 1 through 255.  If a 
  11203.                 double quotation mark is required in the string, you must 
  11204.                 include the double quotation mark twice. 
  11205.  
  11206.  Comments 
  11207.  
  11208.  You can continue a string on multiple lines by terminating the line with a 
  11209.  backslash (\) or by terminating the line with a double quotation mark (") and 
  11210.  then starting the next line with a double quotation mark. 
  11211.  
  11212.  Example 
  11213.  
  11214.  This example creates two string resources whose string identifiers are 1 and 
  11215.  2. 
  11216.  
  11217.   #define IDS_HELLO    1
  11218.   #define IDS_GOODBYE  2
  11219.  
  11220.   STRINGTABLE
  11221.   BEGIN
  11222.       IDS_HELLO   "Hello"
  11223.       IDS_GOODBYE "Goodbye"
  11224.   END
  11225.  
  11226.  
  11227. ΓòÉΓòÉΓòÉ 18.5.55. SUBITEMSIZE Statement ΓòÉΓòÉΓòÉ
  11228.  
  11229. Syntax: 
  11230.  
  11231. SUBITEMSIZE  size
  11232.  
  11233. The SUBITEMSIZE statement specifies the size, in words, of each help subitem in 
  11234. a help subtable.  The minimum size is two words, and each help subitem in a 
  11235. help subtable must be the same size.  When used, the SUBITEMSIZE statement must 
  11236. appear after the HELPSUBTABLE statement and before the BEGIN keyword. 
  11237.  
  11238. You do not need to use the SUBITEMSIZE statement if the help subitems are the 
  11239. default size (2). 
  11240.  
  11241.  size    Specifies the size of each help subitem.  This value must be an 
  11242.          integer. 
  11243.  
  11244.  Example 
  11245.  
  11246.  The SUBITEMSIZE statement in this example specifies that each HELPSUBITEM 
  11247.  statement contains three words. 
  11248.  
  11249.   HELPSUBTABLE 1
  11250.   SUBITEMSIZE 3
  11251.   BEGIN
  11252.       HELPSUBITEM IDCLD_FILEMENU, IDHP_FILEMENU, 5
  11253.       HELPSUBITEM IDCLD_HELPMENU, IDHP_HELPMENU, 6
  11254.   END
  11255.  
  11256.  
  11257. ΓòÉΓòÉΓòÉ 18.5.56. SUBMENU Statement ΓòÉΓòÉΓòÉ
  11258.  
  11259. Syntax: 
  11260.  
  11261. SUBMENU text, submenu-id [, menuitem-style]
  11262. BEGIN
  11263. menuitem-definition
  11264.     .
  11265.     .
  11266.     .
  11267. END
  11268.  
  11269. The SUBMENU statement creates a submenu for a given menu.  A submenu is a 
  11270. vertical list of menu items from which the user can choose a command. 
  11271.  
  11272. You can provide any number of SUBMENU statements in a MENU statement, but each 
  11273. SUBMENU statement must specify a unique submenu-id value. You can provide any 
  11274. number of menuitem-definition statements in the SUBMENU statement.  These 
  11275. define the menu items (commands) in the menu.  The order of the statements 
  11276. determines the order of the menu items. 
  11277.  
  11278.  text                  Specifies the text of the submenu.  This field must 
  11279.                        contain zero or more characters enclosed in double 
  11280.                        quotation marks.  Character values must be in the range 
  11281.                        1 through 255.  If a double quotation mark is required 
  11282.                        in the string, you must include the double quotation 
  11283.                        mark twice.  A tilde ( ~ ) character in the item name 
  11284.                        indicates that the following character is used as a 
  11285.                        mnemonic character for the item.  When the menu is 
  11286.                        displayed, the tilde is not shown, but the mnemonic 
  11287.                        character is underlined.  The user can choose the menu 
  11288.                        item by pressing the key corresponding to the underlined 
  11289.                        mnemonic character. 
  11290.  submenu-id            Specifies the submenu identifier. This value must be an 
  11291.                        integer in the range -32768 through 32767, or a simple 
  11292.                        expression that evaluates to a value in that range. 
  11293.  menuitem-style        Specifies the submenu style. This value can be a 
  11294.                        combination of MIS_ values. For details on the MIS_ 
  11295.                        values, see MENUITEM Statement. 
  11296.  menuitem-definition   Specifies a PRESPARAMS or MENUITEM statement.  You can 
  11297.                        use the PRESPARAMS statement to control the appearance 
  11298.                        of a submenu, such as the font and the foreground and 
  11299.                        background colors.  If used, the PRESPARAMS statement 
  11300.                        must immediately follow the BEGIN keyword.  For details 
  11301.                        about the PRESPARAMS statement, see PRESPARAMS 
  11302.                        Statement. 
  11303.  
  11304.                        The MENUITEM statement defines an individual command in 
  11305.                        the given menu.  For details, see MENUITEM Statement. 
  11306.  
  11307.  Example 
  11308.  
  11309.  This example creates a submenu named Elements.  Its identifier is 2. The 
  11310.  submenu contains three menu items, which are created by using MENUITEM 
  11311.  statements. 
  11312.  
  11313.   SUBMENU "Elements", 2
  11314.   BEGIN
  11315.       MENUITEM "Oxygen", 200
  11316.       MENUITEM "Carbon", 201, , MIA_CHECKED
  11317.       MENUITEM "Hydrogen", 202
  11318.   END
  11319.  
  11320.  
  11321. ΓòÉΓòÉΓòÉ 18.5.57. undef Directive ΓòÉΓòÉΓòÉ
  11322.  
  11323. Syntax: undef name 
  11324.  
  11325. This directive removes the current definition of the specified name.  All 
  11326. subsequent occurrences of the name are processed without replacement. 
  11327.  
  11328.  name    Specifies the name to be removed.  This value is any combination of 
  11329.          letters, digits, and punctuation. 
  11330.  
  11331.  Example 
  11332.  
  11333.  This example removes the definitions for the names "nonzero" and "USERCLASS". 
  11334.  
  11335.   #undef     nonzero
  11336.   #undef     USERCLASS
  11337.  
  11338.  
  11339. ΓòÉΓòÉΓòÉ 18.5.58. VALUESET Statement ΓòÉΓòÉΓòÉ
  11340.  
  11341. Syntax: 
  11342.  
  11343. VALUESET   id, x, y, width, height[, style]
  11344.  
  11345. The VALUESET statement creates a value set control within the dialog window. 
  11346. This control lets a user select one choice from a group of mutually exclusive 
  11347. choices.  The VALUESET statement defines the identifier, position, dimensions, 
  11348. and attributes of a value set control.  The predefined class for this control 
  11349. is WC_VALUESET.  If you do not specify a style, the default style is WS_TABSTOP 
  11350. and WS_VISIBLE. 
  11351.  
  11352.  id      Specifies the control identifier.  The value is any integer -32768 
  11353.          through 32767, or a simple expression that evaluates to a value in 
  11354.          that range. 
  11355.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11356.          The value is any integer -32768 through 32767 or an expression 
  11357.          consisting of integers and the addition (+) or subtraction (-) 
  11358.          operator.  The coordinate is assumed to be in dialog units and is 
  11359.          relative to the origin of the dialog window. 
  11360.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11361.          The value is any integer -32768 through 32767 or an expression 
  11362.          consisting of integers and the addition (+) or subtraction (-) 
  11363.          operator.  The coordinate is assumed to be in dialog units and is 
  11364.          relative to the origin of the dialog window. 
  11365.  width   Specifies the width of the control.  The value is any integer 0 
  11366.          through 65 535 or an expression consisting of integers and the 
  11367.          addition (+) or subtraction (-) operator. The width is in n-character 
  11368.          units. 
  11369.  height  Specifies the height of the control.  The value is any integer 0 
  11370.          through 65 535 or an expression consisting of integers and the 
  11371.          addition (+) or subtraction (-) operator. The height is in 
  11372.          1/8-character units. 
  11373.  style   Specifies the control styles. The value is any combination of the 
  11374.          styles specified for WC_VALUESET. You can use the bitwise OR ( | ) 
  11375.          operator to combine styles. 
  11376.  
  11377.  Comments 
  11378.  
  11379.  The VALUESET statement is used only in a DIALOG or WINDOW statement. 
  11380.  
  11381.  Example 
  11382.  
  11383.  This example creates a value set control at position (40, 40) within the 
  11384.  dialog window.  The value set control has a width of 220 character and a 
  11385.  height of 20 character units.  Its resource ID is 302.  The style 
  11386.  specification VS_ICON creates a control to show items in icon form.  The 
  11387.  default styles WS_TABSTOP and WS_VISIBLE are both in effect, though only 
  11388.  WS_TABSTOP is specified. 
  11389.  
  11390.   #define    IDC_VALUESET     302
  11391.   #define    IDD_VALUESETDLG  501
  11392.   DIALOG "Value set", IDD_VALUESETDLG, 11, 11, 260, 240, FS_NOBYTEALIGN |
  11393.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  11394.     BEGIN
  11395.       VALUESET  IDC_VALUESET, 40, 40, 220, 160, VS_ICON | WS_TABSTOP
  11396.     END
  11397.  
  11398.  
  11399. ΓòÉΓòÉΓòÉ 18.5.59. WINDOW Statement ΓòÉΓòÉΓòÉ
  11400.  
  11401. Syntax: 
  11402.  
  11403. WINDOW text, id, x, y, width, height, class[ , style[  , framectl]]
  11404.   data-definitions
  11405. [ BEGIN
  11406. control-definition
  11407.     .
  11408.     .
  11409.     .
  11410. END ]
  11411.  
  11412. The WINDOW statement creates a window of the specified class.  The statement 
  11413. defines the position and dimensions of the window relative to its parent 
  11414. window, as well as the window-box style.  The WINDOW statement is typically 
  11415. used in a WINDOWTEMPLATE or FRAME statement. 
  11416.  
  11417. Typically, only one WINDOW statement is used in a FRAME statement.  It defines 
  11418. the client window belonging to the corresponding frame window. The optional 
  11419. BEGIN and END keywords enclose any CONTROL statements that are given with the 
  11420. window.  CONTROL statements given in this manner represent child windows 
  11421. belonging to the window created by the WINDOW statement. 
  11422.  
  11423.  text              Specifies the window title if the style specifies a title 
  11424.                    bar. This field must contain zero or more characters 
  11425.                    enclosed in double quotation marks.  The character values 
  11426.                    must be in the range 1 through 255.  If a double quotation 
  11427.                    mark is required in the title, you must include the double 
  11428.                    quotation mark twice. 
  11429.  id                Specifies the window identifier.  This value must be an 
  11430.                    integer in the range -32768 through 32767, or a simple 
  11431.                    expression that evaluates to a value in that range. 
  11432.  x                 Specifies the x-coordinate of the lower-left corner of the 
  11433.                    window. This value must be an integer in the range -32768 
  11434.                    through 32767 or an expression consisting of integers and 
  11435.                    the addition (+) or subtraction (-) operator.  The value is 
  11436.                    in dialog units.  The position is relative to the origin of 
  11437.                    the parent window. 
  11438.  y                 Specifies the y-coordinate of the lower-left corner of the 
  11439.                    window. This value must be an integer in the range -32768 
  11440.                    through 32767 or an expression consisting of integers and 
  11441.                    the addition (+) or subtraction (-) operator.  The value is 
  11442.                    in dialog units.  The position is relative to the origin of 
  11443.                    the parent window. 
  11444.  width             Specifies the width of the window.  This value must be an 
  11445.                    integer in the range 0 through 65 535 or an expression 
  11446.                    consisting of integers and the addition (+) or subtraction 
  11447.                    (-) operator.  The value is in n-character units. 
  11448.  height            Specifies the height of the window.  This value must be an 
  11449.                    integer in the range 0 through 65 535 or an expression 
  11450.                    consisting of integers and the addition (+) or subtraction 
  11451.                    (-) operator.  The value is in 1/8-character units. 
  11452.  class             Specifies the window class.  This value can be one of the 
  11453.                    control classes specified in the "Control Classes" table in 
  11454.                    the Presentation Manager Programmer Reference or the name of 
  11455.                    the window class, enclosed in double quotation marks. 
  11456.  style             Specifies the window style.  This value can be any of the 
  11457.                    window, dialog box, or frame styles specified. 
  11458.  framectl          Specifies the style of the frame controls belonging to the 
  11459.                    window.  This value can be a combination of the styles 
  11460.                    specified in the table, "Frame-Control Styles." You can use 
  11461.                    the bitwise OR (|) operator to combine styles. 
  11462.  data-definitions  Specifies a CTLDATA and/or PRESPARAMS statement. These 
  11463.                    statements define control and presentation data for the 
  11464.                    window. For more information, see CTLDATA Statement and 
  11465.                    PRESPARAMS Statement. 
  11466.  control-definition Specifies a CONTROL statement or any one of several 
  11467.                    predefined control statements. These statements define the 
  11468.                    style, position, and dimensions of controls in the window. 
  11469.  
  11470.  Comments 
  11471.  
  11472.  The WINDOW statement can actually contain any combination of CONTROL, DIALOG, 
  11473.  and WINDOW statements. Typically, a WINDOW statement contains one or no such 
  11474.  statements. 
  11475.  
  11476.  Example 
  11477.  
  11478.  This example creates a client window belonging to the frame window. The client 
  11479.  window belongs to the "MyClientClass" window class and has the standard window 
  11480.  identifier FID_CLIENT. 
  11481.  
  11482.   WINDOWTEMPLATE 1
  11483.   BEGIN
  11484.       FRAME "My Window", 1, 10, 10, 320, 130,
  11485.                0, FCF_STANDARD | FCF_VERTSCROLL
  11486.       BEGIN
  11487.           WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass"
  11488.       END
  11489.   END
  11490.  
  11491.  
  11492. ΓòÉΓòÉΓòÉ 18.5.60. WINDOWTEMPLATE Statement ΓòÉΓòÉΓòÉ
  11493.  
  11494. Syntax: 
  11495.  
  11496. WINDOWTEMPLATE window-id  [load-option]  [ mem-option][code-page]
  11497. BEGIN
  11498. window-definition
  11499.     .
  11500.     .
  11501.     .
  11502. END
  11503.  
  11504. The WINDOWTEMPLATE statement creates a window template.  A window template 
  11505. consists of a series of statements that define the window identifier, load and 
  11506. memory options, window dimensions, and controls in the window.  The window 
  11507. template can be loaded from the executable file by using the WinLoadDlg 
  11508. function. 
  11509.  
  11510. You can provide any number of window templates in a resource script file, but 
  11511. each template must have a unique window-id value. 
  11512.  
  11513.  window-id           Specifies the window identifier.  This value must be an 
  11514.                      integer in the range -32768 through 32767, or a simple 
  11515.                      expression that evaluates to a value in that range. 
  11516.  load-option         Specifies when the system loads the resource from the 
  11517.                      executable file into memory.  This value must be one of 
  11518.                      the following: 
  11519.  
  11520.       PRELOAD        System loads the resource when the application starts. 
  11521.       LOADONCALL     System loads the resource when the application calls the 
  11522.                      WinLoadDlg function. This is the default option. 
  11523.  mem-option          Specifies how the system manages the resource when it is 
  11524.                      in memory.  This value must be one or more of the 
  11525.                      following: 
  11526.  
  11527.       FIXED          System keeps the resource at a fixed memory location. 
  11528.       MOVEABLE       System moves the resource as necessary to compact memory. 
  11529.       DISCARDABLE    System discards the resource if it is no longer needed. 
  11530.                      The default setting is MOVEABLE and DISCARDABLE. 
  11531.  code-page           Specifies a code page value.  See CODEPAGE Statement for a 
  11532.                      list of valid code pages. 
  11533.  window-definition   Specifies a WINDOW statement.  The statement defines the 
  11534.                      dimensions and style of the given window.  For details 
  11535.                      about the statement, see WINDOW Statement. 
  11536.  
  11537.  Comments 
  11538.  
  11539.  A WINDOWTEMPLATE statement can contain DIALOG, CONTROL, and WINDOW statements. 
  11540.  Typically, only one WINDOW statement is used in the WINDOWTEMPLATE statement. 
  11541.  
  11542.  
  11543. ΓòÉΓòÉΓòÉ 19. T Terminal Emulator ΓòÉΓòÉΓòÉ
  11544.  
  11545. The Kernel Debugger uses the T Terminal Emulator to communicate with the 
  11546. machine to be debugged, also known as the MUT (Machine Under Test). 
  11547.  
  11548. You can also use T to send and receive ASCII files. 
  11549.  
  11550. All functions of T are listed on the Help menu. Press F1 to view the Help menu, 
  11551. which is shown below. 
  11552.  
  11553.   TERMINAL - OS/2 ASCII Terminal Program
  11554.  
  11555.   Version 2.00.00
  11556.  
  11557.  F1 or ALT-H   Help
  11558.  F2            Terminal Setup
  11559.  F3            Sending Files
  11560.  F4            Pausing and Scrolling
  11561.  F6            Receiving Files
  11562.  F8  or ALT-X  Exit terminal program
  11563.  
  11564.  
  11565. ΓòÉΓòÉΓòÉ 19.1. Command-Line Syntax ΓòÉΓòÉΓòÉ
  11566.  
  11567. To display help for command-line syntax, type T -? at the prompt. 
  11568.  
  11569. OS/2 Terminal program
  11570. Version 2.00.00
  11571. November 1, 1991
  11572.  
  11573. Valid command line switches:
  11574.   -L[ines]X      X={lines}
  11575.   -C[om]N        N={1..8}
  11576.   -Q[uiet]       enter quiet mode
  11577.   -V[tp]:name    name=vtp server
  11578.   -S[end]:name   name=auto-send file name
  11579.   -R[emark]:text text=status line remark (20 chars max)
  11580.  
  11581.  
  11582. ΓòÉΓòÉΓòÉ 19.1.1. Command-Line Options ΓòÉΓòÉΓòÉ
  11583.  
  11584. Use command line options when invoking T to specify the screen size and the COM 
  11585. port to be used: 
  11586.  
  11587.  -L[ines]X      Where x = {25, 43, 50} 
  11588.  
  11589.  -C[om]N        Where n = {1,2,3} 
  11590.  
  11591.  -?             To display these options 
  11592.  
  11593.  
  11594. ΓòÉΓòÉΓòÉ 19.2. Terminal Setup ΓòÉΓòÉΓòÉ
  11595.  
  11596. All terminal setup functions are listed here. Press F2 from the program's main 
  11597. screen to view the Terminal Setup menu. 
  11598.  
  11599. The Terminal Setup Options are as follows: 
  11600.  
  11601.    o  Help (press F1) 
  11602.    o  Port setup (Press F2) 
  11603.    o  Terminal emulation (Press F3) 
  11604.    o  Keyboard macros (Press F4) 
  11605.    o  Bells & Whistles (Press F5) 
  11606.    o  Exit setup mode (Press Esc or F8) 
  11607.  
  11608.  You must press Esc to return to the main screen before continuing with any 
  11609.  functions other than the above setup functions. 
  11610.  
  11611.  
  11612. ΓòÉΓòÉΓòÉ 19.2.1. Setup Terminal Emulation ΓòÉΓòÉΓòÉ
  11613.  
  11614. To set up terminal emulation, follow these steps: 
  11615.  
  11616.    1. Press F2 at the main screen. The Terminal Setup dialog will be displayed. 
  11617.  
  11618.    2. Press F3. The Terminal Emulation Setup dialog will be displayed. 
  11619.  
  11620.    Terminal Emulation Setup
  11621.    Emulator status: None loaded.
  11622.  
  11623.    Help:                       F1
  11624.    Z19 emulator:               F2
  11625.  
  11626.    Exit emulator setup mode:   Esc, F8
  11627.  
  11628.  
  11629. ΓòÉΓòÉΓòÉ 19.2.2. Setup Bells & Whistles ΓòÉΓòÉΓòÉ
  11630.  
  11631. To change bells and whistles, follow these steps: 
  11632.  
  11633.    1. Press F2 at the main screen. The Terminal Setup dialog will be displayed. 
  11634.  
  11635.    2. Press F5. The Bells & Whistles Setup dialog will be displayed. 
  11636.  
  11637.    3. Make your selections. 
  11638.  
  11639.   Bells and Whistles Setup
  11640.  
  11641.   Filter NULL characters: Yes
  11642.   Disable beeps:          No
  11643.  
  11644.                         Background:   Foreground:
  11645.   Normal screen:        Black         White
  11646.   Status line:          Blue          Bright White
  11647.   Scroll screen:        Blue          Red
  11648.   Scroll status line:   White         Blue
  11649.   Help screen:          Blue          Bright White
  11650.   Menu:                 Blue          Bright White
  11651.   Menu highlight:       Cyan          Black
  11652.  
  11653.   Next Value:
  11654.  
  11655.  
  11656. ΓòÉΓòÉΓòÉ 19.2.3. Setting Communications Parameters ΓòÉΓòÉΓòÉ
  11657.  
  11658. To change communications parameters, follow these steps: 
  11659.  
  11660.    1. Press F2 at the main screen. The Terminal Setup dialog will be displayed. 
  11661.  
  11662.    2. Press F2. The Current COM2 Port Parameters dialog will be displayed. 
  11663.  
  11664.              Current COM2 Port parameters:
  11665.  
  11666.              Baud Rate:                   9600
  11667.              Parity:                      NONE
  11668.              Data Bits:                      8
  11669.              Stop Bits:                      1
  11670.              Write Timeout (sec.):        1.00
  11671.              Read Timeout (sec.):         0.10
  11672.              Handshaking:             XON/XOFF
  11673.  
  11674.              Next Value: ->   Previous Value: <-
  11675.              Next Field: Dn   Previous Field: Up
  11676.              Don't Change:   Esc
  11677.              Accept Changes: Enter
  11678.  
  11679.    3. Use the Up Arrow and Down Arrow cursor keys to scroll backward and 
  11680.       forward through the parameter list, and the -> and <- keys to scroll 
  11681.       through allowable values for each parameter. 
  11682.  
  11683.    4. Press Escape to exit this dialog without changing values, or press Enter 
  11684.       to save these values and exit the dialog. 
  11685.  
  11686.  Note:  The communications port may be changed from the command line by using 
  11687.         the -c option. See Command-Line Options 
  11688.  
  11689.  
  11690. ΓòÉΓòÉΓòÉ 19.3. Sending Files ΓòÉΓòÉΓòÉ
  11691.  
  11692. To send a file, follow these steps: 
  11693.  
  11694.    1. Press F3. The Send File Control dialog will be displayed. 
  11695.  
  11696.              Send File Control
  11697.  
  11698.              Send file name:
  11699.              SEND.TXT
  11700.  
  11701.              Don't send file:               Esc
  11702.              Accept changes and send file:  Enter
  11703.  
  11704.    2. Enter the filename in the Send File name field. 
  11705.  
  11706.    3. Press Enter to send the file and exit the dialog, or press Escape to exit 
  11707.       this dialog without sending a file. 
  11708.  
  11709.  
  11710. ΓòÉΓòÉΓòÉ 19.4. Pausing and Scrolling ΓòÉΓòÉΓòÉ
  11711.  
  11712. To enter Scroll Mode and pause display of communications, follow these steps: 
  11713.  
  11714.    1. Press F4.  A status line will appear at the bottom of the screen. 
  11715.  
  11716.             F1=Help  ESC=Active mode  Screen Top is 100%
  11717.             through the buffer.  Scroll Mode
  11718.  
  11719.    2. Press F1 to display the Scroll Mode commands. 
  11720.  
  11721.              Screen Scroll Mode
  11722.  
  11723.              F1 or ALT-H       Help
  11724.              Dn                Down a line
  11725.              Up                Up a line
  11726.              PgUp              Up a page
  11727.              PgDn              Down a page
  11728.              ESC or Enter      Return to active mode
  11729.  
  11730.    3. Select a scroll mode command. 
  11731.  
  11732.  
  11733. ΓòÉΓòÉΓòÉ 19.5. Receiving Files ΓòÉΓòÉΓòÉ
  11734.  
  11735. To receive a file, follow these steps: 
  11736.  
  11737.    1. Press F6. The Capture File Control dialog will be displayed. 
  11738.  
  11739.              Capture File Control
  11740.  
  11741.              Capture file name:
  11742.              Capture.Txt
  11743.  
  11744.              Capture entire buffer: F3
  11745.              START Capture:         F5
  11746.              Delete file:           F9
  11747.              Don't Change:          Esc
  11748.              Accept Changes:        Enter
  11749.  
  11750.    2. Select an item from the Capture File Control menu. 
  11751.  
  11752.  
  11753. ΓòÉΓòÉΓòÉ 20. Workplace Class List ΓòÉΓòÉΓòÉ
  11754.  
  11755. The Workplace Class List is a tool that creates a workplace object class and an 
  11756. instance of a workplace object class. Workplace objects are constructed using 
  11757. the SOM protocol and are instances of one of the following workplace object 
  11758. classes: 
  11759.  
  11760.  Predefined   These classes are defined by the system. Examples of predefined 
  11761.               workplace object classes are WPObject, WPFileSys, and WPAbstract. 
  11762.  Subclass     These classes are derived from existing predefined workplace 
  11763.               object classes. They add or remove function; however, they retain 
  11764.               the basic behavior of that class. 
  11765.  Replaced     These classes replace the class being subclassed. They modify the 
  11766.               behavior of an instance of a predefined workplace object class 
  11767.               without the instance being aware of the new class. 
  11768.  
  11769.  
  11770. ΓòÉΓòÉΓòÉ 20.1. Starting Workplace Class List ΓòÉΓòÉΓòÉ
  11771.  
  11772. To start Workplace Class List, select the PM Development Tools folder, and then 
  11773. select Workplace Class List. A window appears.  The window contains a list of 
  11774. the workplace object classes currently registered in the OS/2 Workplace Shell. 
  11775. Using the window, you can: 
  11776.  
  11777.    o  Create an instance of a workplace object class 
  11778.    o  Replace a workplace object class 
  11779.    o  Unreplace a workplace object class 
  11780.    o  Add a workplace object class 
  11781.    o  Delete a workplace object class 
  11782.  
  11783.  
  11784. ΓòÉΓòÉΓòÉ 20.1.1. Creating an Object Class Instance ΓòÉΓòÉΓòÉ
  11785.  
  11786. To create an instance of a workplace object class: 
  11787.  
  11788.    1. Select the class from the list in the Workplace Object Class window. 
  11789.    2. Display the pop-up menu by clicking mouse button 2. 
  11790.    3. Select the Create Instance choice. 
  11791.  
  11792.       Note:  Only an instance of a physical workplace object class can be 
  11793.              created. In other words, you cannot create instances of WPObject 
  11794.              or WPClass because they are not physical classes. 
  11795.  
  11796.  
  11797.    4. Fill-in the following input fields: 
  11798.  
  11799.  Object Title          The text string you assign to the object. The text 
  11800.                        string becomes the object title and appears under the 
  11801.                        object when the object is displayed on the Workplace 
  11802.                        Shell. When the object is in an opened state, the text 
  11803.                        string appears in the title bar of the window. 
  11804.  Class of new object   The name of the class of which the object you selected 
  11805.                        is a member. 
  11806.  Parameters            A series of keyname=value pairs (separated by 
  11807.                        semicolons) that change the behavior of the object. Each 
  11808.                        object class defines the keynames and parameters it 
  11809.                        expects to see. All parameters have safe defaults, so it 
  11810.                        is never required to pass parameters to an object. 
  11811.  Location              A real name specified by a fully qualified file 
  11812.                        specification, such as C:\OS2\DLL\MINXOBJ.DLL, or a 
  11813.                        logical name specified by a predefined symbol. 
  11814.  
  11815.  Examples of logical names include the following: 
  11816.  
  11817.  LOCATION_NOWHERE                Hidden folder 
  11818.  LOCATION_DESKTOP                OS/2 Desktop (Workplace) 
  11819.  LOCATION_SYSTEM                 OS/2 System folder 
  11820.  LOCATION_TEMPLATES              Template folder 
  11821.  LOCATION_SYSTEMSETUP            System setup folder 
  11822.  LOCATION_STARTUP                Startup folder 
  11823.  LOCATION_INFORMATION            Information folder 
  11824.  LOCATION_INFORMATION            Information folder 
  11825.  LOCATION_DRIVES                 Drives folder 
  11826.  
  11827.  
  11828. ΓòÉΓòÉΓòÉ 20.1.2. Replacing a Workplace Object Class ΓòÉΓòÉΓòÉ
  11829.  
  11830. To replace an existing registered class: 
  11831.  
  11832.    1. Select the class from the list in the Workplace Object Class window. 
  11833.    2. Display the pop-up menu by single-clicking mouse button 2. 
  11834.    3. Select the Replace choice. Note that only classes that have already been 
  11835.       registered are valid. 
  11836.    4. Fill-in the following input fields: Original class and Replacement class. 
  11837.  
  11838.  Note:  The replacement class must be a descendant of the original class. 
  11839.         Replacing an object class is useful for modifying the behavior of 
  11840.         objects which are instances of the original class but are not aware of 
  11841.         the replacement class. 
  11842.  
  11843.  Original class        The name of the object class being replaced in the 
  11844.                        Workplace. 
  11845.  Replacement class     The name of the object class replacing the original 
  11846.                        class. 
  11847.  
  11848.  
  11849. ΓòÉΓòÉΓòÉ 20.1.3. Unreplaceing a Workplace Object Class ΓòÉΓòÉΓòÉ
  11850.  
  11851. To return a replaced class to its original class: 
  11852.  
  11853.    1. Select the replaced class from the list on the workplace object class 
  11854.       window. 
  11855.    2. Display the pop-up menu by clicking mouse button 2. 
  11856.    3. Select the Unreplace choice. Note that only classes that have already 
  11857.       been replaced are valid. 
  11858.    4. Fill-in the following input fields: 
  11859.  
  11860.  Original class        The name of the replaced object class being returned to 
  11861.                        its original object class in the Workplace. 
  11862.  Replacement class     The name of the replaced object class being returned to 
  11863.                        its original object class. 
  11864.  
  11865.  
  11866. ΓòÉΓòÉΓòÉ 20.1.4. Adding a Workplace Object Class ΓòÉΓòÉΓòÉ
  11867.  
  11868. To add a class to the Workplace Shell: 
  11869.  
  11870.    1. Display the pop-up menu by clicking mouse button 2. 
  11871.    2. Select the Add Class choice. 
  11872.    3. Fill-in the following input fields: 
  11873.  
  11874.  New class name      The name of object class you want to add to the Workplace. 
  11875.                      Type the class name exactly as it is built, 
  11876.                      case-sensitive. 
  11877.  Library module      The name of the dynamic link library (DLL) that holds the 
  11878.                      object definition. Type the library name with complete 
  11879.                      file specification information. 
  11880.  
  11881.                      Note:  The DLL must be created by the IBM System Object 
  11882.                             Model. 
  11883.  
  11884.  
  11885. ΓòÉΓòÉΓòÉ 20.1.5. Deleting an Object Class ΓòÉΓòÉΓòÉ
  11886.  
  11887. To delete a class from the Workplace Shell: 
  11888.  
  11889.    1. Select the class you want to delete from the list in the Workplace Object 
  11890.       Class window. 
  11891.    2. Display the pop-up menu by clicking mouse button 2. 
  11892.    3. Select the Delete a Class choice. 
  11893.    4. Fill-in the name of the class you want to delete from the Workplace. 
  11894.  
  11895.  Note:  You cannot delete system predefined classes, such as WPObject or 
  11896.         WPClass. 
  11897.  
  11898.  
  11899. ΓòÉΓòÉΓòÉ 21. Error Messages ΓòÉΓòÉΓòÉ
  11900.  
  11901.  
  11902. ΓòÉΓòÉΓòÉ 21.1. LINK386 Error Messages ΓòÉΓòÉΓòÉ
  11903.  
  11904. Format of Error Messages 
  11905.  
  11906. There are three types of LINK386 error messages: 
  11907.  
  11908.    o  Fatal errors cause LINK386 to stop running. They have the following 
  11909.       format: location : fatal error L1xxx : message text 
  11910.  
  11911.    o  Nonfatal errors indicate problems in the executable file. LINK386 
  11912.       produces the executable file and sets the error bit in the header for the 
  11913.       OS/2 environment. This means that the executable file cannot be run from 
  11914.       OS/2. Nonfatal error messages have the following format: 
  11915.  
  11916.            location : error L2xxx : message text 
  11917.  
  11918.    o  Warnings indicate possible problems in the executable file. LINK386 
  11919.       produces the executable file, but does not set the error bit in the 
  11920.       header for the OS/2 environment. Warnings have the following format: 
  11921.  
  11922.            location : warning L4xxx : message text 
  11923.  
  11924.  In all these messages, location is the input file associated with the error, 
  11925.  or it is LINK386 itself if there is no input file. The message text is the 
  11926.  actual text message that LINK386 generates. When the input file is a module 
  11927.  definition file, the line number is included, as in this example: 
  11928.  
  11929.   myfile.def(3): fatal error L1030: missing internal name
  11930.  
  11931.  When the input file is an object file or library file and has a module name, 
  11932.  the module name is enclosed in parentheses, as in the following examples: 
  11933.  
  11934.   SLIBCE.LIB(_file)
  11935.   MAIN.OBJ(main.c)
  11936.   TEXT.OBJ
  11937.  
  11938.  Error Message Descriptions 
  11939.  
  11940.       Fatal Error Messages (part 1) 1001 - 1049 
  11941.       Fatal Error Messages (part 2) 1050 - 1098 
  11942.       Fatal Error Messages (part 3) 1100 - 1130 
  11943.       Nonfatal Error Messages 2000 - 2063 
  11944.       Warning Error Messages 4000 - 4094 
  11945.  
  11946.  
  11947. ΓòÉΓòÉΓòÉ 21.1.1. Fatal Error Messages (Part 1) 1001 - 1049 ΓòÉΓòÉΓòÉ
  11948.  
  11949.  L1001     option : option name ambiguous 
  11950.            Explanation: A unique option name does not appear after the option 
  11951.            indicator (/). 
  11952.            Example: The command 
  11953.  
  11954.                           LINK386 /N main;
  11955.            produces this error because LINK386 cannot tell which of the seven 
  11956.            options beginning with the letter N is intended. 
  11957.            Action: Retry using the correct minimum option abbreviation. 
  11958.  
  11959.  L1004     option : invalid numeric value 
  11960.            Explanation: An incorrect value appeared for one of the LINK386 
  11961.            options. This might be because a character string has been entered 
  11962.            for an option that requires a numeric value or because the proper 
  11963.            numeric prefix (for example, 0x for hexadecimal) was not used for a 
  11964.            numeric value. 
  11965.            Action: Retry with a numeric value. 
  11966.  
  11967.  L1006     option : stack size exceeds 65,535 bytes 
  11968.            Explanation: The size you specified for the stack in the /STACK 
  11969.            option of the link command is more than 65,535 bytes. 
  11970.            Action: Retry with a stack size of less than or equal to 65,535 
  11971.            bytes. 
  11972.  
  11973.  L1008     option : segment limit set too high 
  11974.            Explanation: The specified limit on the /SEGMENTS option is greater 
  11975.            than 16 375. 
  11976.            Action: Retry with a limit in the range 1 to 16 375. 
  11977.  
  11978.  L1020     no object modules specified 
  11979.            Explanation: You did not specify any object file names to the 
  11980.            linker. 
  11981.            Action: Restart LINK386, including at least one object file name. 
  11982.  
  11983.  L1021     cannot nest response files 
  11984.            Explanation: A response file has been named within another response 
  11985.            file. You have used @filename within the response file. The @ symbol 
  11986.            is reserved by LINK386 to signify a response file name. 
  11987.            Action: Edit the response file to remove the nested response file. 
  11988.  
  11989.  L1022     response line too long 
  11990.            Explanation: A line in an automatic response file is longer than 256 
  11991.            characters. 
  11992.            Action: Edit the line to make it shorter than 256 characters. 
  11993.            Response files can contain more than one line. 
  11994.  
  11995.  L1023     terminated by user 
  11996.            Explanation: You pressed Ctrl+C or Ctrl+Break. 
  11997.            Action: Your action has terminated LINK386. Restart if necessary. 
  11998.  
  11999.  L1030     missing internal name 
  12000.            Explanation: You have not specified an internal name for an import 
  12001.            in the module definition file. 
  12002.            Action: Edit the module definition file, giving an internal name so 
  12003.            that LINK386 can identify references to the import. 
  12004.  
  12005.  L1031     module description redefined 
  12006.            Explanation: You have used the DESCRIPTION keyword for a module in 
  12007.            the module definition file more than once. 
  12008.            Action: Edit the module definition file, deleting the extra 
  12009.            descriptions. 
  12010.  
  12011.  L1032     module name redefined 
  12012.            Explanation: You have defined a module name more than once with the 
  12013.            NAME or LIBRARY keyword in the module definition file. 
  12014.            Action: Edit the module definition file, checking the module name 
  12015.            definitions. 
  12016.  
  12017.  L1033     input line too long; number characters allowed 
  12018.            Explanation: The input line contains more than number characters. 
  12019.            Action: Retry the command with fewer characters on the input line. 
  12020.  
  12021.  L1040     too many exported entries 
  12022.            Explanation: You have tried to export more than 65535 names. 
  12023.            Action: Retry with fewer names, creating an additional executable 
  12024.            module if necessary. 
  12025.  
  12026.  L1041     resident-name table overflow 
  12027.            Explanation: The total length of all your resident-names, together 
  12028.            with an overhead of 3 bytes for each name, is greater than the 
  12029.            LINK386 limit. The internal LINK386 limit is  65,534 for LINK386 
  12030.            versions prior to 2.01.012 and is 1,048,576 for LINK386 version 
  12031.            2.01.012 and later versions. 
  12032.            Action: Reduce the number or the length of your resident names. 
  12033.  
  12034.  L1042     nonresident-name table overflow 
  12035.            Explanation: The total length of all your nonresident-names, 
  12036.            together with an overhead of 3 bytes for each name, is greater than 
  12037.            65,534 for versions prior to 2.01.012 and is 1,048,576 for LINK386 
  12038.            version 2.01.012 and later versions. 
  12039.            Action: Reduce the number or the length of your nonresident-names. 
  12040.  
  12041.  L1043     relocation table overflow 
  12042.            Explanation: There are more than 65,535 load-time relocations for a 
  12043.            single segment. 
  12044.            Action: Reduce the number of relocations in the source files and 
  12045.            recompile or reassemble them. Interframe references generate 
  12046.            load-time relocations. 
  12047.  
  12048.  L1044     imported-name table overflow 
  12049.            Explanation: The total length of all your imported-names, together 
  12050.            with an overhead of 1 byte for each name, is greater than 65,535 
  12051.            bytes. 
  12052.            Action: Reduce the number or the length of your imported-names. 
  12053.  
  12054.  L1045     too many TYPDEF records 
  12055.            Explanation: An object module contains more than 255 TYPDEF records. 
  12056.            These records describe communal variables. This error can only 
  12057.            appear with programs produced by compilers that support communal 
  12058.            variables. 
  12059.            Action: Reduce the number of TYPDEF records, breaking the module 
  12060.            into smaller parts, if necessary. 
  12061.  
  12062.  L1046     too many external symbols in one module 
  12063.            Explanation: An object module specifies more than the limit of 1023 
  12064.            external symbols. 
  12065.            Action: Reduce the number of external symbols, breaking the module 
  12066.            into smaller parts, if necessary. 
  12067.  
  12068.  L1047     too many group, segment, and class names in one module 
  12069.            Explanation: The program module contains too many group, segment, 
  12070.            and class names. 
  12071.            Action: Reduce the number of groups, segments, or classes, and 
  12072.            re-create the object files. 
  12073.  
  12074.  L1048     too many segments in one module 
  12075.            Explanation: An object module has more than 255 segments. 
  12076.            Action: Reduce the number of segments, splitting the module or 
  12077.            combining some segments. 
  12078.  
  12079.  L1049     too many segments 
  12080.            Explanation: The program has more than the maximum number of 
  12081.            segments. The /SEGMENTS option specifies the maximum allowed number; 
  12082.            the maximum is 16375. 
  12083.            Action: Restart LINK386 using the /SEGMENTS option with an 
  12084.            appropriate number of segments. 
  12085.  
  12086.  
  12087. ΓòÉΓòÉΓòÉ 21.1.2. Fatal Error Messages (Part 2) 1050 - 1098 ΓòÉΓòÉΓòÉ
  12088.  
  12089.  L1050     too many groups in one module 
  12090.            Explanation: LINK386 found more than 32 group definitions (GRPDEF) 
  12091.            in a single module. 
  12092.            Action: Reduce the number of group definitions by splitting the 
  12093.            module, by eliminating one or more group definitions, or combining 
  12094.            group definitions. 
  12095.  
  12096.  L1051     too many groups 
  12097.            Explanation: The program defines more than 32 groups in addition to 
  12098.            DGROUP. 
  12099.            Action: Reduce the number of group definitions by splitting the 
  12100.            module, by eliminating one or more group definitions, or combining 
  12101.            group definitions. 
  12102.  
  12103.  L1052     too many libraries 
  12104.            Explanation: You tried to link with more than 32 libraries. 
  12105.            Action: Combine libraries, or use modules that require fewer 
  12106.            libraries. 
  12107.  
  12108.  L1053     out of memory for symbol table 
  12109.            Explanation: The program has more symbolic information, such as 
  12110.            public, external, segment, group, class, and file names, than the 
  12111.            amount that could fit in available real memory. 
  12112.            Action: Combine modules or segments and recreate the object files. 
  12113.            Eliminate as many public symbols as possible or use shorter names. 
  12114.  
  12115.  L1054     requested segment limit too high 
  12116.            Explanation: There is not enough memory to allocate the necessary 
  12117.            tables for the amount of segments requested. 
  12118.            Action: Reduce the number of segments by combining or creating 
  12119.            additional executable modules. 
  12120.  
  12121.  L1057     data record too large 
  12122.            Explanation: A LEDATA record (in an object module) contained more 
  12123.            than 1024 bytes of data. This is a translator (compiler or 
  12124.            assembler) error. 
  12125.            Action: Note which translator (compiler or assembler) produced the 
  12126.            incorrect object module and the circumstances, and contact your 
  12127.            supplier. 
  12128.  
  12129.  L1060     program exceeds number bytes 
  12130.            Explanation: There is not enough memory to process all segments. 
  12131.            Action: Reduce the number of segments by combining or creating 
  12132.            additional executable modules. 
  12133.  
  12134.  L1063     out of memory for debugging information 
  12135.            Explanation: LINK386 was given too many object files with debug 
  12136.            information, and ran out of space to store them. 
  12137.            Action: Reduce the number of object files that have debug 
  12138.            information. 
  12139.  
  12140.  L1064     out of memory - name heap exhausted 
  12141.            Explanation: The linker ran out of heap space; name = near or far. 
  12142.            Action: Reduce the number of background processes or install more 
  12143.            memory. 
  12144.  
  12145.  L1070     name: segment size exceeds 64K 
  12146.            Explanation: A single segment contains more than 64K of code or 
  12147.            data. This could be because you attempted to combine identically 
  12148.            named segments. 
  12149.            Action: Try compiling (or assembling) and linking using a larger 
  12150.            memory model or breaking up the named segment. 
  12151.  
  12152.  L1071     segment _TEXT larger than 65,520 bytes 
  12153.            Explanation: This error is likely to occur only in small-model C 
  12154.            programs, but it can occur when any program with a segment named 
  12155.            _TEXT is linked using the /DOSSEG option of the LINK386 command. 
  12156.            Small-model C programs must reserve code addresses 0 and 1; the 
  12157.            reserve is increased to 16 for alignment purposes. 
  12158.            Action: Make the program source code smaller, or change to a larger 
  12159.            memory model. 
  12160.  
  12161.  L1072     common area longer than 65,536 bytes 
  12162.            Explanation: The program has more than 64K of communal variables. 
  12163.            This error occurs only with programs produced by compilers that 
  12164.            support communal variables. 
  12165.            Action: Rewrite your program using fewer or smaller communal 
  12166.            variables. 
  12167.  
  12168.  L1073     file-segment limit exceeded 
  12169.            Explanation: There are more than 255 physical or file segments. 
  12170.            Action: Reduce the number of physical or file segments. You could 
  12171.            use the Combine Contiguous Data (/PACKD) option for combining data 
  12172.            segments or the Combine Contiguous Code (/PACKC) option for 
  12173.            combining code segments. 
  12174.  
  12175.  L1074     name: group larger than 64K 
  12176.            Explanation: A group contains segments that total more than 65,536 
  12177.            bytes. 
  12178.            Action: Reduce the number or size of segments or remove segments 
  12179.            from the group. 
  12180.  
  12181.  L1075     entry table larger than 65,535 bytes 
  12182.            Explanation: You have exceeded a linker table size limit because of 
  12183.            an excessive number of entry names. 
  12184.            Action: Reduce the number of names in the modules that you are 
  12185.            linking or create additional executable modules. 
  12186.  
  12187.  L1076     name: segment size exceeds numberM 
  12188.            Explanation: The named segment is larger than the specified size. 
  12189.            Action: Break the segment into smaller segments and try again. 
  12190.  
  12191.  L1077     common area longer than 4G-1 bytes 
  12192.            Explanation: The space for the C languages common area is too big. 
  12193.            Action: If the load module is an .EXE, consider putting some 
  12194.            routines in .DLL; otherwise, link without debugging information or 
  12195.            create additional executable modules. 
  12196.  
  12197.  L1080     cannot open list file 
  12198.            Explanation: The disk or a directory is full, or an invalid file 
  12199.            name was specified. 
  12200.            Action: Check that the file name specified is correct. Delete or 
  12201.            move files to make space and restart LINK386. 
  12202.  
  12203.  L1081     out of space for run file 
  12204.            Explanation: The disk on which the .EXE file is being written is 
  12205.            full. 
  12206.            Action: Delete or move files to make space and restart LINK386. 
  12207.  
  12208.  L1082     name: stub file not found 
  12209.            Explanation: The stub file specified in the module definition file 
  12210.            could not be found. 
  12211.            Action: Check that the correct path to the stub file has been 
  12212.            specified. 
  12213.  
  12214.  L1083     cannot open run file - reason 
  12215.            Explanation: The run file could not be opened for the stated reason. 
  12216.            Action: Correct the problem and restart LINK386. 
  12217.  
  12218.  L1088     out of space for list file 
  12219.            Explanation: The disk on which the listing file is being written is 
  12220.            full. 
  12221.            Action: Delete or move files to make space and restart LINK386. 
  12222.  
  12223.  L1089     filename: cannot open response file 
  12224.            Explanation: LINK386 cannot find the specified response file. This 
  12225.            usually indicates a typing error. 
  12226.            Action: Include the drive specifier or path, or both, for the 
  12227.            response file. 
  12228.  
  12229.  L1091     unexpected end-of-file on library 
  12230.            Explanation: The disk containing the library has probably been 
  12231.            removed or is corrupted. 
  12232.            Action: Replace the disk containing the library and restart LINK386. 
  12233.  
  12234.  L1092     cannot open module definition file 
  12235.            Explanation: The specified module definition file cannot be opened, 
  12236.            or an invalid file name was specified. 
  12237.            Action: Check that the specified file name is correct. Include the 
  12238.            drive specifier or path, or both, for the module definition file. 
  12239.  
  12240.  L1093     name: object not found 
  12241.            Explanation: LINK386 could not open the object module you specified. 
  12242.            Action: Specify full path name or directory in which object module 
  12243.            resides. 
  12244.  
  12245.  L1096     unexpected end-of-file 
  12246.            Explanation: LINK386 encountered an end-of-file character while 
  12247.            reading an input file AND expected more information. 
  12248.            Action: Check input files for errors and relink. 
  12249.  
  12250.  L1097     I/O error - string 
  12251.            Explanation: The linker encountered the I/O error shown while 
  12252.            reading from a file. 
  12253.            Action: Make sure the file is not corrupted or on a bad disk sector 
  12254.            and relink. 
  12255.  
  12256.  L1098     cannot open include file filename - reason 
  12257.            Explanation: LINK386 could not open the include file for the stated 
  12258.            reason. 
  12259.            Action: Correct the problem and restart LINK386. 
  12260.  
  12261.  
  12262. ΓòÉΓòÉΓòÉ 21.1.3. Fatal Error Messages (Part 3) 1100 - 1130 ΓòÉΓòÉΓòÉ
  12263.  
  12264.  L1100     stub .EXE file invalid 
  12265.            Explanation: The stub file specified in the module definition file 
  12266.            is not a valid .EXE file. 
  12267.            Action: Ensure that the stub file is an executable file. 
  12268.  
  12269.  L1101     invalid object module 
  12270.            Explanation: One of the object modules was incorrectly formed during 
  12271.            compilation or assembly. 
  12272.            Action: Recompile or reassemble your source code. If the error 
  12273.            persists, contact your supplier. 
  12274.  
  12275.  L1102     unexpected end-of-file 
  12276.            Explanation: An invalid format for a library was found. 
  12277.            Action: Restore the library file from your backup disk and restart 
  12278.            LINK386. If this does not work, rebuild your library or contact your 
  12279.            supplier. 
  12280.  
  12281.  L1103     name: attempt to access data outside segment bounds 
  12282.            Explanation: A data record in an object module specified data 
  12283.            extending beyond the end of a segment. This is a translator error. 
  12284.            Action: Note which translator (compiler or assembler) produced the 
  12285.            incorrect object module and the circumstances, and contact your 
  12286.            supplier. 
  12287.  
  12288.  L1104     filename: not valid library 
  12289.            Explanation: The specified file is not a valid library file. This 
  12290.            error causes LINK386 to stop running. 
  12291.            Action: Ensure that the named file is a valid library file and 
  12292.            restart LINK386. If this does not work, rebuild your library or 
  12293.            contact your supplier. 
  12294.  
  12295.  L1105     invalid object due to aborted incremental compile 
  12296.            Explanation: An object file from an aborted compile is trying to be 
  12297.            linked. 
  12298.            Action: Recompile the source that produced the bad compile and then 
  12299.            relink. 
  12300.  
  12301.  L1106     unknown COMDAT allocation type for name; record ignored 
  12302.            Explanation: The COMDAT (record in .OBJ) allocation type for the 
  12303.            named COMDAT was not valid. 
  12304.            Action: Recompile or reassemble .OBJ and try again. If that does not 
  12305.            work, contact your supplier. 
  12306.  
  12307.  L1107     unknown COMDAT selection type for name; record ignored 
  12308.            Explanation: The COMDAT (record in .OBJ) selection type for the 
  12309.            named COMDAT is not valid. 
  12310.            Action: Recompile or reassemble .OBJ and try again. If that does not 
  12311.            work, contact your supplier. 
  12312.  
  12313.  L1108     invalid format of debugging information 
  12314.            Explanation: An error was detected in a segment that contains debug 
  12315.            information. 
  12316.            Action: Recompile or reassemble and try again. If that does not 
  12317.            work, try relinking without using the /DE or /CO options. 
  12318.  
  12319.  L1113     unresolved COMDEF; internal error 
  12320.            Explanation: LINK386 encountered a COMDEF (record in .OBJ) in pass 2 
  12321.            that was not defined in pass 1. 
  12322.            Action: Recompile or reassemble and try again. If that does not 
  12323.            work, contact your supplier. 
  12324.  
  12325.  L1114     unresolved COMDAT name: internal error 
  12326.            Explanation: LINK386 found specified COMDAT in pass 2 that does not 
  12327.            correspond to COMDATs found in pass 1. 
  12328.            Action: Recompile or reassemble and try again. If that does not 
  12329.            work, contact your supplier. 
  12330.  
  12331.  L1117     unallocated COMDAT name; internal error 
  12332.            Explanation: The linker encountered COMDAT in pass 2 for which space 
  12333.            was not allocated during pass 1. 
  12334.            Action: Recompile or reassemble and try again. If that does not 
  12335.            work, contact your supplier. 
  12336.  
  12337.  L1121     name: group larger than 4G-1 bytes 
  12338.            Explanation: The group indicated is too large. 
  12339.            Action: Recompile or reassemble and try again. Remove segments from 
  12340.            the group or create additional executables if necessary. 
  12341.  
  12342.  L1123     name: segment defined both 16- and 32-bit 
  12343.            Explanation: The segment named was defined as both 16-bit and 
  12344.            32-bit. 
  12345.            Action: Create two segments (one for 16-bit, one for 32-bit), or 
  12346.            make sure the segment is defined one way and relink. 
  12347.  
  12348.  L1126     conflicting IOPL-parameter-words value 
  12349.            Explanation: The IOPL parameter words in the .DEF file does not 
  12350.            exactly match those in the corresponding EXPDEF object record. 
  12351.            Action: Make sure .DEF file coincides with that defined in .OBJ. 
  12352.            Relink. 
  12353.  
  12354.  L1128     too many nested include files in module-definition file 
  12355.            Explanation: The .DEF file exceeded a nesting level. 
  12356.            Action: Combine some nestings into one .DEF file and try again. 
  12357.  
  12358.  L1129     missing or bad include file name 
  12359.            Explanation: LINK386 could not find a file included by .DEF file. 
  12360.            Action: Make sure the file exists and can be located and that any 
  12361.            path is specified correctly. Try again. 
  12362.  
  12363.  L1130     internal fix-up applied to undefined area at offset in object number 
  12364.            Explanation: LINK386 attempted to apply an internal fix-up beyond 
  12365.            the defined limits of the object. 
  12366.            Action: This is probably a compiler or assembler error. Revise the 
  12367.            source file and re-create the object file. If that does not work, 
  12368.            contact your supplier. 
  12369.  
  12370.  
  12371. ΓòÉΓòÉΓòÉ 21.1.4. Fatal Error Messages (Part 4) 1200 - 1218 ΓòÉΓòÉΓòÉ
  12372.  
  12373.  L1200     out of memory for page range information 
  12374.            Explanation: The total size of all page range information is greater 
  12375.            than the internal limit in LINK386. 
  12376.            Action: Reduce the size of the executable, consider using dynamic 
  12377.            link libraries to split the program into smaller modules. 
  12378.  
  12379.  L1201     out of memory for contribution information 
  12380.            Explanation: The total size of the contribution information is 
  12381.            greater than the internal limit in LINK386. 
  12382.            Action: Reduce the size of the executable, consider using dynamic 
  12383.            link libraries to split the program into smaller modules. 
  12384.  
  12385.  L1202     out of memory for executable string information 
  12386.            Explanation: The total size of all executable string information is 
  12387.            greater than the internal limit in LINK386. 
  12388.            Action: Reduce the size of the executable, consider using dynamic 
  12389.            link libraries to split the program into smaller modules. 
  12390.  
  12391.  L1203     out of memory for identifier mangler DLL information 
  12392.            Explanation: The total size of all identifier mangler DLL 
  12393.            information is greater than the internal limit in LINK386. 
  12394.            Action: Reduce the size of the executable, consider using dynamic 
  12395.            link libraries to split the program into smaller modules. 
  12396.  
  12397.  L1204     out of memory for object page table information 
  12398.            Explanation: The total size of the object page table information is 
  12399.            greater than the internal limit in LINK386. 
  12400.            Action: Reduce the size of the executable, consider using dynamic 
  12401.            link libraries to split the program into smaller modules. 
  12402.  
  12403.  L1205     out of memory for fixup record information 
  12404.            Explanation: The total size of all fixup record information is 
  12405.            greater than the internal limit in LINK386. 
  12406.            Action: Reduce the size of the executable, consider using dynamic 
  12407.            link libraries to split the program into smaller modules. 
  12408.  
  12409.  L1206     out of memory for fix up page table information 
  12410.            Explanation: The total size of all fix up page table information is 
  12411.            greater than the internal limit in LINK386. 
  12412.            Action: Reduce the size of the executable, consider using dynamic 
  12413.            link libraries to split the program into smaller modules. 
  12414.  
  12415.  L1207     out of memory for import module information 
  12416.            Explanation: The total size of the import module information is 
  12417.            greater than the internal limit in LINK386. 
  12418.            Action: Reduce the size of the executable, consider using dynamic 
  12419.            link libraries to split the program into smaller modules. 
  12420.  
  12421.  L1208     out of memory for page directory information 
  12422.            Explanation: The total size of the page directory is greater than 
  12423.            the internal limit in LINK386. 
  12424.            Action: Reduce the size of the executable, consider using dynamic 
  12425.            link libraries to split the program into smaller modules. 
  12426.  
  12427.  L1209     out of memory for object page directory information 
  12428.            Explanation: The total size of the object page director is greater 
  12429.            than the internal limit in LINK386. 
  12430.            Action: Reduce the size of the executable, consider using dynamic 
  12431.            link libraries to split the program into smaller modules. 
  12432.  
  12433.  L1210     out of memory for module reference table information 
  12434.            Explanation: The total size of the module reference table is greater 
  12435.            than the internal limit in LINK386. 
  12436.            Action: Reduce the size of the executable, consider using dynamic 
  12437.            link libraries to split the program into smaller modules. 
  12438.  
  12439.  L1211     out of memory for chained relocation hash buckets 
  12440.            Explanation: The total size of the relocation bucket is greater than 
  12441.            the internal limit in LINK386. 
  12442.            Action: Reduce the size of the executable, consider using dynamic 
  12443.            link libraries to split the program into smaller modules. 
  12444.  
  12445.  L1212     out of memory for chained relocation hash tables 
  12446.            Explanation: The total size of the relocation hash tables is greater 
  12447.            than the internal limit in LINK386. 
  12448.            Action: Reduce the size of the executable, consider using dynamic 
  12449.            link libraries to split the program into smaller modules. 
  12450.  
  12451.  L1213     out of memory for entry point information 
  12452.            Explanation: The total size of the entry point information is 
  12453.            greater than the internal limit in LINK386. 
  12454.            Action: Reduce the size of the executable, consider using dynamic 
  12455.            link libraries to split the program into smaller modules. 
  12456.  
  12457.  L1214     out of memory for entry table area 
  12458.            Explanation: The total size of the entry table are is greater than 
  12459.            the internal limit in LINK386. 
  12460.            Action: Reduce the size of the executable, consider using dynamic 
  12461.            link libraries to split the program into smaller modules. 
  12462.  
  12463.  L1215     out of memory for imported names information 
  12464.             Explanation: The total size of the imported names information is 
  12465.            greater than the internal limit in LINK386. 
  12466.            Action: Reduce the size of the executable, consider using dynamic 
  12467.            link libraries to split the program into smaller modules. 
  12468.  
  12469.  L1216     out of memory for comdat iterated data 
  12470.            Explanation: The total size of all comdat iterated is greater than 
  12471.            the internal limit in LINK386. 
  12472.            Action: Reduce the size of the executable, consider using dynamic 
  12473.            link libraries to split the program into smaller modules. 
  12474.  
  12475.  L1217     out of memory for back patch information 
  12476.            Explanation: The total size of the back patch information is greater 
  12477.            than the internal limit in LINK386. 
  12478.            Action: Reduce the size of the executable, consider using dynamic 
  12479.            link libraries to split the program into smaller modules. 
  12480.  
  12481.  L1218     out of memory for property list tables 
  12482.            Explanation: The total size of the property list table is greater 
  12483.            than the internal limit in LINK386. 
  12484.            Action: Reduce the size of the executable, consider using dynamic 
  12485.            link libraries to split the program into smaller modules. 
  12486.  
  12487.  
  12488. ΓòÉΓòÉΓòÉ 21.1.5. Nonfatal Error Messages 2000 - 2063 ΓòÉΓòÉΓòÉ
  12489.  
  12490.  L2000     imported starting address 
  12491.            Explanation:  A MODEND, or starting address record, referred to an 
  12492.            imported name. Imported program-starting addresses are not 
  12493.            supported. 
  12494.            Action: The starting address record must refer to a non imported 
  12495.            name. Edit the source file and recompile or reassemble. 
  12496.  
  12497.  L2002     fix-up overflow at location in segment name 
  12498.            Explanation: A fix up overflow occurred near location, in the named 
  12499.            segment. See Conditions That Can Cause LINK386 Error 2002. 
  12500.            Action: Revise the source file and re-create the object file. If 
  12501.            that does not work, contact your supplier. 
  12502.  
  12503.  L2003     inter segment self-relative fix-up at location in segment name 
  12504.            Explanation: LINK386 detected an inter segment self-relative fix-up. 
  12505.            A self-relative fix-up cannot be in another segment. This is 
  12506.            probably caused by a near reference to procedure located in another 
  12507.            segment. 
  12508.            Action: Revise the source file and re-create the object file. If 
  12509.            that does not work, contact your supplier. 
  12510.  
  12511.  L2005     fix-up type unsupported at location in segment name 
  12512.            Explanation:  LINK386 detected an unsupported fix up type. This is 
  12513.            probably a compiler or assembler error. 
  12514.            Action: Revise the source file and re-create the object file. If 
  12515.            that does not work, contact your supplier. 
  12516.  
  12517.  L2010     too many fix-ups in LIDATA record 
  12518.            Explanation:  There are more fix ups applying to a LIDATA record 
  12519.            than will fit into the LINK386's 1024 byte buffer. The buffer is 
  12520.            divided between the data in the LIDATA record itself and the 
  12521.            run-time relocation items.  These are 8 bytes each, so the maximum 
  12522.            varies from 0 to 128.  This is probably a compiler error. 
  12523.            Action: Revise the source file and re-create the object file. If 
  12524.            that does not work, contact your supplier. 
  12525.  
  12526.  L2011     name: NEAR/HUGE conflict 
  12527.            Explanation:  There are conflicting NEAR and HUGE attributes for a 
  12528.            communal variable. This error can occur only with programs produced 
  12529.            by compilers that support communal variables. 
  12530.            Action: Specify only one of these attributes. 
  12531.  
  12532.  L2012     name: array-element size mismatch 
  12533.            Explanation: A far communal array has been declared with two or more 
  12534.            different array-element sizes (for example, an array declared once 
  12535.            as an array of characters and once as an array of real numbers). 
  12536.            This error occurs only when using compilers that support far 
  12537.            communal arrays. 
  12538.            Action: Match the definitions and re-create the object module or 
  12539.            modules. 
  12540.  
  12541.  L2013     LIDATA record too large 
  12542.            Explanation: A LIDATA record in an object module contains more than 
  12543.            512 bytes of data. It is likely that one of your assembler modules 
  12544.            contains a complex structure definition or a series of deeply-nested 
  12545.            DUP operators. (LIDATA is a DOS term.) 
  12546.            Example: The following structure definition causes this error: 
  12547.  
  12548.                       alpha   DB     10DUP(11 DUP(12 DUP(13 DUP(...))))
  12549.  
  12550.            Action: Simplify the structure definition and reassemble the module. 
  12551.  
  12552.  L2022     name (alias internalname) : export undefined 
  12553.            Explanation: A name has been directed to be exported but is not 
  12554.            defined anywhere. 
  12555.            Action: Edit the source file and define the export. 
  12556.  
  12557.  L2023     name (alias internalname) : export imported 
  12558.            Explanation: An imported name has been directed to be exported. 
  12559.            Items that are not in the source file itself cannot be exported. You 
  12560.            cannot export this imported name. 
  12561.            Action: Edit the source file to not export the imported name. 
  12562.  
  12563.  L2024     name: special symbol already defined 
  12564.            Explanation: Your program defined a symbol name that LINK386 already 
  12565.            used for one of its low-level symbols.  For example, the linker 
  12566.            generates special names for overlay support. 
  12567.            Action: Edit the source file and choose another name for the symbol. 
  12568.  
  12569.  L2025     name: symbol defined more than once 
  12570.            Explanation: A symbol has been defined more than once in the object 
  12571.            file. 
  12572.            Action: Edit the source file, removing the extra symbol definition. 
  12573.  
  12574.  L2026     entry ordinal number, name name : multiple definitions for same 
  12575.            ordinal 
  12576.            Explanation: More than one entry point name has been assigned to the 
  12577.            same ordinal in the module definition file. 
  12578.            Action: Edit the module definition file to correct the usage of the 
  12579.            ordinal. 
  12580.  
  12581.  L2027     number: ordinal too large for export 
  12582.            Explanation: You tried to export more than 3072 names or indicated 
  12583.            too large of an ordinal. 
  12584.            Action: Edit the source file or define smaller ordinals in the 
  12585.            module definition file. 
  12586.  
  12587.  L2029     string: unresolved external 
  12588.            Explanation: A symbol declared to be external in one or more modules 
  12589.            was not found among the given objects and libraries. 
  12590.            Action: Supply files that will resolve these external calls. 
  12591.  
  12592.  L2030     starting address not code (use class `CODE') 
  12593.            Explanation: You specified a starting address to LINK386 that is not 
  12594.            within a segment of type 'CODE.' 
  12595.            Action: Reclassify the segment to CODE, or correct the starting 
  12596.            point. 
  12597.  
  12598.  L2044     string: symbol multiple defines, use /NOE 
  12599.            Explanation: The symbol shown was defined more than once, perhaps 
  12600.            for different things. 
  12601.            Action: Recompile with the /NOEXDICTIONARY option. 
  12602.  
  12603.  L2047     IOPL attribute conflict - segment: name in group:name 
  12604.            Explanation: The segment indicated within the group shown has 
  12605.            different IOPL attributes from the rest of the segments in the 
  12606.            group. 
  12607.            Action: Remove the segment from the group or make sure all segments 
  12608.            have the same IOPL attributes. Relink. 
  12609.  
  12610.  L2050     use16/use32 attribute conflict - segment:name in group:name 
  12611.            Explanation: The segment indicated within the group shown has a 
  12612.            different USE16/USE32 attribute from the rest of the segments in the 
  12613.            group. 
  12614.            Action: Remove the segment from the group or make sure all segments 
  12615.            have the same USE16/USE32 attribute. 
  12616.  
  12617.  L2052     name: unresolved external - possible calling convention mismatch 
  12618.            Explanation: LINK386 encountered an undefined external, which could 
  12619.            be a fast-call/C-call mismatch. 
  12620.            Action: Make sure the external is defined and called the same way 
  12621.            (for example, all C-calls). 
  12622.  
  12623.  L2053     call gates are NOT allowed in 32-bit object if its size exceeds 64K 
  12624.            - memory object number number 
  12625.            Explanation: The memory object indicated is larger than 64K and uses 
  12626.            call gates. 
  12627.            Action: Remove the call gates or break the object into smaller 
  12628.            portions.  Relink. 
  12629.  
  12630.  L2054     data for invalid page in segment name 
  12631.            Explanation: LINK386 encountered data past the defined end of 
  12632.            initialized data in the segment indicated. 
  12633.            Action:  The .OBJ is probably corrupted. Recompile or reassemble and 
  12634.            try again.  If that does not work, contact your supplier. 
  12635.  
  12636.  L2055     fix-up for invalid page at location in segment name 
  12637.            Explanation: LINK386 encountered a fixup past the defined end of 
  12638.            initialized data in the segment indicated. 
  12639.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  12640.            try again.  If that does not work, contact your 
  12641.  
  12642.  L2056     object type conflict - segment: name in group: name 
  12643.            Explanation: The segment indicated within the group shown has a 
  12644.            different TYPE attribute from the rest of the segments in the group. 
  12645.            Action: Remove the segment from the group or make sure all segments 
  12646.            have the same TYPE attribute. 
  12647.  
  12648.  L2057     duplicate of name with different size found; record ignored 
  12649.            Explanation: LINK386 encountered two COMDAT records with the 
  12650.            selection type "SAME SIZE." The records have the same name but have 
  12651.            different sizes. 
  12652.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  12653.            try again.  If that does not work, contact your 
  12654.  
  12655.  L2058     different duplicate of name found; record ignored 
  12656.            Explanation: LINK386 encountered two COMDAT records with the 
  12657.            selection type "EXACT." The records have the same name but have 
  12658.            different sizes. 
  12659.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  12660.            try again.  If that does not work, contact your 
  12661.  
  12662.  L2059     size of the data block associated with name exceeds 4G 
  12663.            Explanation: LINK386 encountered a continuation COMDAT record whose 
  12664.            additional size made the communal data too large. 
  12665.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  12666.            try again.  If that does not work, contact your 
  12667.  
  12668.  L2061     no space for the data block associated with record name inside the 
  12669.            segment name 
  12670.            Explanation: While being allocated space for a COMDAT record inside 
  12671.            the segment indicated, the segment grew larger than 64K. 
  12672.            Action: Make the segment smaller or move communal data into a 
  12673.            different segment. 
  12674.  
  12675.  L2062     continuation of COMDAT name has conflicting attributes; record 
  12676.            ignored 
  12677.            Explanation: While concatenating the COMDAT record indicated, 
  12678.            LINK386 found attributes that differ from those defined in the 
  12679.            initial COMDAT record. 
  12680.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  12681.            try again.  If that does not work, contact your 
  12682.  
  12683.  L2063     name allocated in undefined segment 
  12684.            Explanation: LINK386 encountered a COMDAT record in an undefined 
  12685.            explicit allocation segment. 
  12686.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  12687.            try again.  If that does not work, contact your supplier. 
  12688.  
  12689.  
  12690. ΓòÉΓòÉΓòÉ 21.1.6. Warning Error Messages 4000 - 4087 ΓòÉΓòÉΓòÉ
  12691.  
  12692.  L4000     seg disp. included near location in segment name 
  12693.            Explanation: This error is caused by using the LINK386 Warning of 
  12694.            Fix-ups (/W) option. 
  12695.            Action: The segment name and the location offset is displayed. 
  12696.  
  12697.  L4001     frame-relative fix-up, frame ignored near location in segment name 
  12698.            Explanation: A fix up occurred with a frame segment different from 
  12699.            the target segment where either the frame or the target segment is 
  12700.            not absolute. Such a fix-up is meaningless in the OS/2 environment, 
  12701.            so the target segment is assumed for the frame segment. This error 
  12702.            sometimes occurs if a 32-bit data item is referenced as if it were 
  12703.            in a 16-bit segment or a 16-bit segment referenced as if it were in 
  12704.            a 32-bit segment. 
  12705.            Action: Check that this is acceptable. 
  12706.  
  12707.  L4002     frame-relative absolute fix-up near location in segment name 
  12708.            Explanation: A fix up occurred with a frame segment different from 
  12709.            the target segment where both frame and target segments are 
  12710.            absolute. This fix up is processed using base-offset arithmetic, but 
  12711.            the warning is issued because the fix up might not be valid in the 
  12712.            OS/2 environment. This error sometimes occurs if a 32-bit data item 
  12713.            is referenced as if it were in a 16-bit segment or a 16-bit segment 
  12714.            referenced as if it were in a 32-bit segment. 
  12715.            Action: Check that this is acceptable. 
  12716.  
  12717.  L4003     intersegment self-relative fix up at location in segment name 
  12718.            Explanation: LINK386 found an intersegment self-relative fix-up at 
  12719.            the specified location. This might cause a problem with the 
  12720.            executable file. 
  12721.            Action: The error might have been caused by the way the program was 
  12722.            written or when it was compiled or assembled. 
  12723.  
  12724.  L4004     possible fix-up overflow at location in segment name 
  12725.            Explanation: LINK386 found a possible fix-up overflow at the 
  12726.            specified location. This might cause a problem with the executable 
  12727.            file. 
  12728.            Action: The error might have been caused by the way the program was 
  12729.            written or when it was compiled or assembled. 
  12730.  
  12731.  L4005     32-bit fix-up in 16-bit record ignored at location in segment name 
  12732.            Explanation: LINK386 encountered a 32-bit fix-up in a 16-bit record 
  12733.            at the specified location. This might cause a problem with the 
  12734.            executable file. 
  12735.            Action: The error might have been caused by the way the program was 
  12736.            written or when it was compiled or assembled. 
  12737.  
  12738.  L4006     illegal 16-bit flat-relative offset fix-up at location in object 
  12739.            name 
  12740.            Explanation: LINK386 encountered an illegal 16-bit flat relative 
  12741.            offset fix-up at the specified location. This might cause a problem 
  12742.            with the executable file. This error sometimes occurs if a 32-bit 
  12743.            data item is referenced as if it were in a 16-bit segment or a 
  12744.            16-bit segment referenced as if it were in a 32-bit segment. 
  12745.            Action: The error might have been caused by the way the program was 
  12746.            written or when it was compiled or assembled. 
  12747.  
  12748.  L4007     illegal 16-bit flat-relative pointer fix-up at location in object 
  12749.            name 
  12750.            Explanation: LINK386 encountered an illegal 16-bit flat-relative 
  12751.            pointer fix-up at the specified location. This error sometimes 
  12752.            occurs if a 32-bit data item is referenced as if it were in a 16-bit 
  12753.            segment or a 16-bit segment referenced as if it were in a 32-bit 
  12754.            segment. 
  12755.            Action: The error might have been caused by the way the program was 
  12756.            written or when it was compiled or assembled. 
  12757.  
  12758.  L4008     aliased fix-up to non-alias object near location in object name 
  12759.            Explanation: LINK386 encountered an aliased fix-up to a non-alias 
  12760.            object at the specified location. This error sometimes occurs if a 
  12761.            32-bit data item is referenced as if it were in a 16-bit segment or 
  12762.            a 16-bit segment referenced as if it were in a 32-bit segment. 
  12763.            Action: The error might have been caused by the way the program was 
  12764.            written or when it was compiled or assembled. 
  12765.  
  12766.  L4009     illegal target of flat-relative fix-up ignored at number in segment 
  12767.            name 
  12768.            Explanation: LINK386 encountered an illegal flat-relative fix-up at 
  12769.            the specified location. 
  12770.            Action: The error might have been caused by the way the program was 
  12771.            written or when it was compiled or assembled. 
  12772.  
  12773.  L4010     invalid alignment specification; assuming number 
  12774.            Explanation: The number following the /ALIGNMENT option is not a 
  12775.            power of 2, or is not in numerical form. The maximum alignment value 
  12776.            is 4096. 
  12777.            Action: If the default alignment of 512 is not acceptable, restart 
  12778.            LINK386 using a valid number. 
  12779.  
  12780.  L4017     name: unrecognized option name; option ignored 
  12781.            Explanation: The option specified is not valid for LINK386. 
  12782.            Action: Specify a valid option or remove the unrecognized option and 
  12783.            relink. 
  12784.  
  12785.  L4018     missing or bad application type; option name ignored 
  12786.            Explanation: The /PMTYPE option was specified without an application 
  12787.            type or with an invalid application type. 
  12788.            Action: Relink with an application type of PM, VIO, or NOVIO. 
  12789.  
  12790.  L4020     name: code segment size exceeds 65,500 
  12791.            Explanation: The code segment indicated is larger than 65,500 bytes 
  12792.            and might not be reliable. 
  12793.            Action: Break the segment into smaller segments and try again. 
  12794.  
  12795.  L4021     no stack segment 
  12796.            Explanation: The program does not contain a stack segment defined 
  12797.            with the STACK combine type. Normally, every .EXE program should 
  12798.            have a stack segment with the combine type specified as STACK. 
  12799.            Action: You can ignore this message if you have a specific reason 
  12800.            for not defining a stack or for defining one without the STACK 
  12801.            combine type. 
  12802.  
  12803.  L4022     name1, name2: groups overlap 
  12804.            Explanation: Two groups are defined in such a way that one starts in 
  12805.            the middle of another. This can occur if you defined segments in a 
  12806.            module definition file or assembly file and did not correctly order 
  12807.            the segments by class. 
  12808.            Action: Edit the source file and reorder the segments in the group. 
  12809.  
  12810.  L4023     name (alias): export internal name conflict 
  12811.            Explanation: An exported name, or its associated internal name, 
  12812.            conflicts with an already defined public symbol. 
  12813.            Action: Edit the source file using new names. 
  12814.  
  12815.  L4024     name: multiple definitions for export name 
  12816.            Explanation: The module named has been exported more than once with 
  12817.            different internal names. All internal names except the first one 
  12818.            are ignored. 
  12819.            Action: Edit the source file using new names. 
  12820.  
  12821.  L4025     modname impname (intname): import internal name conflict 
  12822.            Explanation: An imported name, or its associated internal name, is 
  12823.            also defined as an exported name. The import name is ignored. The 
  12824.            conflict could come from a definition in either the module 
  12825.            definition file or an object file. 
  12826.            Action: Edit the source file or module definition file using new 
  12827.            names. 
  12828.  
  12829.  L4026     modname impname (intname): self-imported 
  12830.            Explanation: The module definition file directed that a name be 
  12831.            imported from the module being produced. 
  12832.            Action: Edit the module definition file. 
  12833.  
  12834.  L4027     name: multiple definitions for import internal name 
  12835.            Explanation: An imported name, or its associated internal name, is 
  12836.            imported more than once. The imported name is ignored after the 
  12837.            first mention. 
  12838.            Action: Check that the name has been defined correctly. 
  12839.  
  12840.  L4028     name: segment already defined 
  12841.            Explanation: A segment is defined more than once with the same name 
  12842.            in the module definition file. Segments must have unique names for 
  12843.            LINK386. All definitions with the same name are ignored after the 
  12844.            first mention. 
  12845.            Action: Check that the segment has been defined correctly. 
  12846.  
  12847.  L4029     name: DGROUP segment converted to type data 
  12848.            Explanation: A segment that is a member of DGROUP has been defined 
  12849.            as type CODE in a module definition file or object file. This 
  12850.            probably happened because a CLASS keyword in a SEGMENTS statement 
  12851.            was not given. 
  12852.            Action: Check the module definition file syntax. 
  12853.  
  12854.  L4030     name: segment attributes changed to conform with automatic data 
  12855.            segment 
  12856.            Explanation: The segment named is defined in DGROUP, but the shared 
  12857.            attribute is in conflict with the instance attribute. 
  12858.            Example:  The shared attribute is NONSHARED and the instance 
  12859.            attribute is SINGLE, or the shared attribute is SHARED and the 
  12860.            instance attribute is MULTIPLE. The bad segment is forced to have 
  12861.            the right shared attribute and the link continues. 
  12862.            Action: Check that the LINK386 action is acceptable. 
  12863.  
  12864.  L4031     name: segment declared in more than one group 
  12865.            Explanation: A segment is declared to be a member of two different 
  12866.            groups. 
  12867.            Action: Correct the source file and re-create the object files. 
  12868.  
  12869.  L4032     name: code-group size exceeds 65500 bytes 
  12870.            Explanation: The code group indicated is larger than 65500 bytes and 
  12871.            therefore might not be reliable. 
  12872.            Action: Break the group into smaller groups or remove one or more 
  12873.            segments and try again. 
  12874.  
  12875.  L4036     no automatic data segment 
  12876.            Explanation: The program or dynamic link library did not define a 
  12877.            group named DGROUP. This is recognized by LINK386 as the automatic 
  12878.            data segment. 
  12879.            Action: Edit the source file. 
  12880.  
  12881.  L4038     program has no starting address 
  12882.            Explanation: The program did not contain a starting address. 
  12883.            Physical Device Drivers do not have program starting addresses, so 
  12884.            this error can be ignored when linking Physical Device Drives. 
  12885.            Action: Recompile the program and try again. 
  12886.  
  12887.  L4044     CODE segment :name in DATA group:name; assuming DATA 
  12888.            Explanation: A CODE statement in a module definition file was used 
  12889.            to define default attributes for a DATA segment. 
  12890.            Action: Define a CODE statement and relink. 
  12891.  
  12892.  L4045     name of output file is name 
  12893.            Explanation: A dynamic link library file was created without 
  12894.            specifying an extension.  In such cases, LINK386 supplies an 
  12895.            extension of .DLL.  This is to warn you in case you expected an .EXE 
  12896.            file to be generated 
  12897.            Action: No action. 
  12898.  
  12899.  L4046     DATA segment: name in CODE group: name; assuming CODE 
  12900.            Explanation: A DATA statement in a module definition file was used 
  12901.            to define default attributes for a CODE segment. 
  12902.            Action: Define a DATA statement and relink. 
  12903.  
  12904.  L4048     ignoring non-zero heap size 
  12905.            Explanation: The module definition file does not contain a HEAPSIZE 
  12906.            statement. 
  12907.            Action: Edit the file and relink. 
  12908.  
  12909.  L4049     ignoring non-zero stack size 
  12910.            Explanation: The module definition file does not contain a STACKSIZE 
  12911.            statement. 
  12912.            Action: Edit the file and relink. 
  12913.  
  12914.  L4051     filename: cannot find library 
  12915.            Explanation: LINK386 could not find the specified library file. 
  12916.            Action: Enter a new file name, a new path specification, or both. 
  12917.  
  12918.  L4053     VM.TMP :illegal file name; ignored 
  12919.            Explanation: VM.TMP cannot be used for an object file name. 
  12920.            Action: Rename the file and restart LINK386. 
  12921.  
  12922.  L4054     filename: cannot find file 
  12923.            Explanation: LINK386 could not find the specified file. 
  12924.            Action: Enter a new file name, a new path specification, or both. 
  12925.  
  12926.  L4067     changing default resolution for weak external name from oldname to 
  12927.            newname 
  12928.            Explanation: LINK386 encountered a redefinition of a default 
  12929.            resolution and is changing it to the value indicated. 
  12930.            Action: If the change is OK, no action is required; otherwise, fix 
  12931.            the module definition file and try again. 
  12932.  
  12933.  L4068     ignoring stack size greater than 64K 
  12934.            Explanation: LINK386 encountered a stack greater than 64K or zero 
  12935.            and is assuming a stack size of 65,534. 
  12936.            Action: Edit the file and relink. 
  12937.  
  12938.  L4069     filename truncated to name 
  12939.            Explanation: LINK386 encountered a file name greater than 256 bytes 
  12940.            (including terminating null) and truncated it to the size indicated. 
  12941.            Action: Edit the file and relink. 
  12942.  
  12943.  L4071     application type not specified; assuming name 
  12944.            Explanation: An application type of WINDOWAPI, WINDOWCOMPAT, 
  12945.            NOTWINDOWCOMPAT, or PRIVATE was not specified. LINK386 is assuming 
  12946.            the application type indicated. 
  12947.            Action: Edit the file and relink. 
  12948.  
  12949.  L4072     changing application type from oldname to newname 
  12950.            Explanation: The application type specified with /PMTYPE is 
  12951.            different from that in .DEF file. LINK386 is using the application 
  12952.            type indicated. 
  12953.            Action: Edit the file and relink. 
  12954.  
  12955.  L4073     name: 32-bit aliased data segment size exceeds 64K 
  12956.            Explanation: The segment indicated is greater than 64K in length and 
  12957.            is a 32-bit aliased data segment 
  12958.            Action: If this is expected, do nothing; if not, break into smaller 
  12959.            segments. 
  12960.  
  12961.  L4074     attribute conflict for segment name; ignoring attribute type 
  12962.            Explanation: The segment indicated for the .DEF file is defined with 
  12963.            conflicting characteristics. LINK386 is ignoring the attribute 
  12964.            indicated. 
  12965.            Action: Edit the file and relink. 
  12966.  
  12967.  L4075     object type conflict - assuming name 
  12968.            Explanation: The .DEF files specified conflicting attributes for an 
  12969.            object; only one of the following attributes are allowed: RESIDENT, 
  12970.            NONPERMANENT, PERMANENT, CONTIGUOUS, or DYNAMIC. LINK386 is assuming 
  12971.            the attribute indicated. 
  12972.            Action: Edit the file and relink. 
  12973.  
  12974.  L4077     symbol name not defined; ordered allocation ignored 
  12975.            Explanation: While doing ordered allocation of COMDAT records, 
  12976.            LINK386 encountered an undefined COMDAT record; ordered allocation 
  12977.            is determined from the .DEF file. 
  12978.            Action: Edit the file and relink. 
  12979.  
  12980.  L4079     symbol name already defined for ordered allocation; duplicate 
  12981.            ignored 
  12982.            Explanation: While processing ORDER list in .DEF file, LINK386 
  12983.            encountered a COMDAT record already defined for ordered allocation. 
  12984.            Action: Edit the file and relink. 
  12985.  
  12986.  L4080     changing substitute name for alias name from name to name 
  12987.            Explanation: LINK386 encountered an alias redefiniton and is 
  12988.            changing it to the values indicated. 
  12989.            Action: If this is OK, no action is required. Otherwise, edit the 
  12990.            file and relink. 
  12991.  
  12992.  L4082     name ignored for module with 16-bit starting address 
  12993.            Explanation: LINK386 encountered a DLL module with a 16-bit entry 
  12994.            point requesting termination. Only modules with 32-bit entry points 
  12995.            can specify DLL termination. 
  12996.            Action: Remove the termination request from the module definition 
  12997.            file. 
  12998.  
  12999.  L4083     invalid base address specification; assuming number 
  13000.            Explanation: The base address specified with the /BASE option or in 
  13001.            the module definition file is illegal, and LINK386 is assuming the 
  13002.            given value. 
  13003.            Action: Change the base address if necessary; otherwise, ignore the 
  13004.            message. 
  13005.  
  13006.  L4084     module name truncated to string 
  13007.            Explanation: The module name was truncated to the number of 
  13008.            characters indicated. 
  13009.            Action: If this action is satisfactory, no action is required. 
  13010.            Otherwise, edit the module definition file and shorten the name. 
  13011.  
  13012.  L4085     name (alias alias name): forwarder entry created for imported export 
  13013.            Explanation: LINK386 created a forwarder entry within the entry 
  13014.            table for the named export. 
  13015.            Action: If this action is satisfactory, no action is required. 
  13016.  
  13017.  L4087     internal fix-up applied to uninitialized area at offset in object 
  13018.            number 
  13019.            Explanation: LINK386 attempted to apply an internal fix-up beyond 
  13020.            the initialize limits of the object. 
  13021.            Action: If this is acceptable, no action is required. If the problem 
  13022.            continues, you might want to disable based addressing. 
  13023.  
  13024.  L4090     cannot load identifier manipulation DLL name 
  13025.            Explanation:  LINK386 detected an error while trying to load an 
  13026.            identifier manipulator dynamic link library.  This DLL was specified 
  13027.            in an object file, and is used by LINK386 to demangle a compiler 
  13028.            generated mangled name into a function prototype when printing an 
  13029.            error message.  Error messages will not be demangled for this object 
  13030.            file. 
  13031.            Action:  Make sure the appropriate identifier manipulator DLL is in 
  13032.            the LIBPATH. 
  13033.  
  13034.  L4091     cannot locate procedure in identifier manipulation DLL name 
  13035.            Explanation: LINK386 detected an error while trying to load a 
  13036.            procedure from an identifier manipulator dynamic link library.  This 
  13037.            DLL was specified in an object file, and is used by LINK386 to 
  13038.            demangle a compiler generated mangled name into a function prototype 
  13039.            when printing an error message.  Error messages will not be 
  13040.            demangled for this object file. 
  13041.            Action: Make sure the appropriate identifier manipulator DLL is in 
  13042.            the LIBPATH. 
  13043.  
  13044.  L4092     too many identifier manipulation DLLs 
  13045.            Explanation: Too many identifier manipulator dynamic link libraries 
  13046.            have been specified.  These DLLs are specified in object files, and 
  13047.            are used by LINK386 to demangle compiler generated mangled names 
  13048.            into function prototypes when printing an error messages. Error 
  13049.            messages may not be demangled for some object files. 
  13050.            Action: Reduce the number of different compilers used to create the 
  13051.            objects. 
  13052.  
  13053.  L4093     cannot initialize identifier manipulation DLL name 
  13054.            Explanation: LINK386 detected an error while trying to initialize an 
  13055.            identifier manipulator dynamic link library.  This DLL was specified 
  13056.            in an object file, and is used by LINK386 to demangle a compiler 
  13057.            generated mangled name into a function prototype when printing an 
  13058.            error message. Error messages will not be demangled for this object 
  13059.            file. 
  13060.            Action: Make sure the appropriate identifier manipulator DLL is in 
  13061.            the LIBPATH. 
  13062.  
  13063.  L4094     increasing stack size from number to number 
  13064.            Explanation: The stack size specified by either 
  13065.  
  13066.              1. size of a segment with combine type stack 
  13067.              2. STACKSIZE statement in the .DEF file 
  13068.              3. /STACK LINK386 command line option 
  13069.  
  13070.            will cause a system error if the program is executed on an OS/2 2.x 
  13071.            system.  LINK386 has changed the stacksize to a larger value to 
  13072.            preserve compatibility. 
  13073.            Action: No action required, LINK386 has corrected the problem.  To 
  13074.            eliminate the warning message, restart LINK386 and specify the new 
  13075.            stack size. 
  13076.  
  13077.  
  13078. ΓòÉΓòÉΓòÉ 21.1.7. Conditions That Can Cause LINK386 Error 2002 ΓòÉΓòÉΓòÉ
  13079.  
  13080. LINK386 Error 2002 can be caused by the following conditions: 
  13081.  
  13082.    o  A group is larger than 64K. 
  13083.    o  The program contains an intersegment short jump or intersegment short 
  13084.       call. 
  13085.    o  The name of a data item in the program conflicts with that of a 
  13086.       subroutine in a library included in the link. 
  13087.    o  An EXTRN declaration in an assembler language source file appeared inside 
  13088.       the body of a segment, as in the following example: 
  13089.  
  13090.             code    SEGMENT public  'CODE'
  13091.                     EXTRN   main:far
  13092.             start   PROC    far
  13093.                     call    main
  13094.                     ret
  13095.             start   ENDP
  13096.             code    ENDS
  13097.  
  13098.       The following construction is preferred: 
  13099.  
  13100.                     EXTRN   main:far
  13101.             code    SEGMENT public  'CODE'
  13102.             start   PROC    far
  13103.                     call    main
  13104.                     ret
  13105.             start   ENDP
  13106.             code    ENDS
  13107.  
  13108.  
  13109. ΓòÉΓòÉΓòÉ 22. Make Message File (MKMSGF) Error Messages ΓòÉΓòÉΓòÉ
  13110.  
  13111.  MKMSGF: Codepage %s is all zeroes 
  13112.            Explanation: The code-page ID specified with the /P option is zero. 
  13113.            The message file is built with a code-page of zero. 
  13114.            Action: Retry the command using the correct code-page specification. 
  13115.  
  13116.  MKMSGF: Codepage %s error in numeric conversion 
  13117.            Explanation: The code-page ID specified with the /P option is not 
  13118.            numeric. The message file is built with a code-page of zero. 
  13119.            Action: Retry the command using the correct code-page specification. 
  13120.  
  13121.  MKMSGF: Codepage %s is too large 
  13122.            Explanation: The code-page ID specified with the /P option is too 
  13123.            large. The message file is built with a code-page of zero. 
  13124.            Action: Retry the command using the correct code-page specification. 
  13125.  
  13126.  MKMSGF: Country %u is not supported 
  13127.            Explanation: The country ID specified within the /D option is not 
  13128.            supported. MKMSGF processing is stopped. 
  13129.            Action: Retry the command using the correct country code 
  13130.            specification. 
  13131.  
  13132.  MKMSGF: DBCS code page not found 
  13133.            Explanation: No DBCS code page has been found that supports the DBCS 
  13134.            range specified in the /D option.  MKMSGF processing is stopped. 
  13135.            Action: Retry the command using the correct DBCS ranges or country 
  13136.            ID for the input message file. 
  13137.  
  13138.  MKMSGF: Error reading input file 
  13139.            Explanation: Error during input from source file. 
  13140.            Action: Make sure the source message file exists and that the drive 
  13141.            is ready.  Retry the command. 
  13142.  
  13143.  MKMSGF: Error writing output file 
  13144.            Explanation: Error during output to target file. 
  13145.            Action: Make sure there is sufficient disk space or that the drive 
  13146.            is ready.  Retry the command. 
  13147.  
  13148.  MKMSGF: File not found 
  13149.            Explanation: Input file could not be found. 
  13150.            Action: Retry the command, using the correct source message file 
  13151.            name. 
  13152.  
  13153.  MKMSGF: Infile[.ext] outfile[.ext] [/V] 
  13154.  [/D <DBCS range or country>] [/P <code page>] [/L <language id,sub id>] 
  13155.            Explanation: This is the proper syntax for MKMSGF.  It is displayed 
  13156.            when no operands are specified on the command line and after some 
  13157.            syntax errors. 
  13158.            Action: None. 
  13159.  
  13160.  MKMSGF: Input file same as output file 
  13161.            Explanation: The input and output file names are the same. 
  13162.            Processing is stopped. 
  13163.            Action: Correct the command line or the control file and restart 
  13164.            MKMSGF. 
  13165.  
  13166.  MKMSGF: Insufficient storage 
  13167.            Explanation: Not enough storage to execute program or too many 
  13168.            messages in the file.  Message limit is about 6000. 
  13169.            Action: Reduce the number of programs running in your system, or 
  13170.            reduce the size of the message file by either deleting messages or 
  13171.            by reducing the size of each message.  Retry the command. 
  13172.  
  13173.  MKMSGF: Invalid language or sub id 
  13174.            Explanation: The language family ID specified with the /L option is 
  13175.            not supported. 
  13176.            Action: Retry the command using the correct language family ID. 
  13177.  
  13178.  MKMSGF: Invalid message file format 
  13179.            Explanation: Input file is not a recognizable message text file. 
  13180.            Action: If an incorrect file name was entered, retry the command 
  13181.            with the correct source message file name. 
  13182.  
  13183.  MKMSGF: Language family %s is all zeroes 
  13184.            Explanation: The language family ID specified with the /L option is 
  13185.            zero. The message file is built with a language family ID of zero. 
  13186.            Action: Retry the command using the correct language family ID. 
  13187.  
  13188.  MKMSGF: Language family %s error in numeric conversion 
  13189.            Explanation: The language family ID specified with the /L option is 
  13190.            not numeric.  The message file is built with a language family ID of 
  13191.            zero. 
  13192.            Action: Retry the command using the correct language family ID. 
  13193.  
  13194.  MKMSGF: Language family %s is too large 
  13195.            Explanation: The language family ID specified with the /L option is 
  13196.            not supported.  The message file is built with a language family ID 
  13197.            of zero. 
  13198.            Action: Retry the command using the correct language family ID. 
  13199.  
  13200.  MKMSGF: Message ID out of sequence 
  13201.            Explanation: A message was detected that was out of the required 
  13202.            sequential order. 
  13203.            Action: Correct the error by editing your source message file and 
  13204.            renumbering the messages. You might also want to delete or insert 
  13205.            the appropriate message numbers to achieve the required sequential 
  13206.            order. 
  13207.  
  13208.  MKMSGF: Message XXXX too long 
  13209.            Explanation: The message was too long to be processed (limit is 
  13210.            approximately 2K characters). 
  13211.            Action: Correct the error by editing your source message file and 
  13212.            making the message shorter. Then, retry the command. 
  13213.  
  13214.  MKMSGF: More than NN codepages entered 
  13215.            Explanation: A maximum of NN code-page IDs may specified for a 
  13216.            single message fil   e, Only the first NN will be accepted. 
  13217.            Action: Retry the command using the correct code-page 
  13218.            specifications. 
  13219.  
  13220.  MKMSGF: No sub id using 1 default 
  13221.            Explanation: The language version ID specified with the /L option is 
  13222.            either invalid or not supported.  The message file is built using 
  13223.            the default value shown. 
  13224.            Action: Retry the command using the correct language version ID. 
  13225.  
  13226.  MKMSGF: Sub id %s error in numeric conversion 
  13227.            Explanation: The language version specified with the /L option is 
  13228.            not numeric. The message file is built with a default language 
  13229.            version. 
  13230.            Action: Retry the command using the correct language version ID. 
  13231.  
  13232.  MKMSGF: Syntax error 
  13233.            Explanation: You entered the command incorrectly. 
  13234.            Action: Retry the command using proper syntax. To display the proper 
  13235.            syntax, type MKMSGF at the command line. 
  13236.  
  13237.  
  13238. ΓòÉΓòÉΓòÉ 22.1. Message Segment Binder (MSGBIND) Error Messages ΓòÉΓòÉΓòÉ
  13239.  
  13240.  MSGBIND: I/O error seeking infile 
  13241.            Explanation: A disk error occurred while seeking either the message 
  13242.            file or the .EXE file. 
  13243.            Action: Run CHKDSK on the drive containing the file and restart 
  13244.            MSGBIND. 
  13245.  
  13246.  MSGBIND: I/O error writing file 
  13247.            Explanation: A disk error occurred while writing messages to the 
  13248.            .EXE file. 
  13249.            Action: Run CHKDSK on the drive containing the .EXE file, and 
  13250.            restart MSGBIND. 
  13251.  
  13252.  MSGBIND: Must specify .EXE file before message file 
  13253.            Explanation: The input file was in error. 
  13254.            Action: Correct input file. 
  13255.  
  13256.  MSGBIND: Must specify message file before message number 
  13257.            Explanation: The input file was in error. 
  13258.            Action: Correct the input file. 
  13259.  
  13260.  MSGBIND: Out of memory, needed xxxx bytes 
  13261.            Explanation: There was not enough memory available to run MSGBIND. 
  13262.            Action: Reduce the number of programs presently running in your 
  13263.            system and restart MSGBIND. 
  13264.  
  13265.  MSGBIND: Premature EOF during copy 
  13266.            Explanation: The .EXE file was not built correctly. 
  13267.            Action: Rebuild the .EXE file and restart MSGBIND. 
  13268.  
  13269.  MSGBIND: Unable to create temp file-MSGBIND.TMP 
  13270.            Explanation: An error occurred while creating the intermediary file 
  13271.            MSGBIND.TMP. 
  13272.            Action: Delete or move files to make disk space available. If 
  13273.            MSGBIND.TMP is present as a read-only file, it must first be 
  13274.            deleted. Restart MSGBIND. 
  13275.  
  13276.  MSGBIND: Unable to open xxxxxxxx 
  13277.            Explanation: The input file specified was not found or an error 
  13278.            occurred when opening the message file. 
  13279.            Action: Restart MSGBIND using the correct input file name or a 
  13280.            backup copy of the message file. 
  13281.  
  13282.  Number of Message Files exceeded. Only nnn allowed 
  13283.            Explanation: The number of message files specified in the input file 
  13284.            exceeds the maximum number of files that MSGBIND can process at one 
  13285.            time. 
  13286.            Action: Correct the input file or combine message files, and then 
  13287.            restart MSGBIND. 
  13288.  
  13289.  Reading messages from xxxxxxxx 
  13290.            Explanation: Messages from the displayed message file are being read 
  13291.            into memory. 
  13292.            Action: None. This message is for information only. 
  13293.  
  13294.  Reading messages from xxxxxxxx -file not found 
  13295.            Explanation: The message file was not found in the path specified in 
  13296.            the input file. 
  13297.            Action: Edit the input file, correcting the path or file name, or 
  13298.            both.  Restart MSGBIND. 
  13299.  
  13300.  Reading messages from xxxxxxxx -not created with MKMSGF program 
  13301.            Explanation: The message file displayed was not created using the 
  13302.            MKMSGF program. 
  13303.            Action: Convert the source message file to a formatted message file 
  13304.            using the MKMSGF program, and restart MSGBIND. See the Make Message 
  13305.            File (MKMSGF). 
  13306.  
  13307.  Reading messages from xxxxxxxx -not enough memory 
  13308.            Explanation: There was not enough memory available to store the 
  13309.            messages. 
  13310.            Action: Reduce the number of programs running in your system, and 
  13311.            restart MSGBIND. 
  13312.  
  13313.  The object that would contain the bound messages would be too large. Refer to 
  13314.  the Toolkit Documentation for more information. 
  13315.            Explanation: (self explanatory) 
  13316.            Action: Do one or more, of the following: 
  13317.  
  13318.    1. Modify the module definition file to isolate the message object, and then 
  13319.       relink the application. 
  13320.    2. Reduce the number of messages to be bound to the application as specified 
  13321.       in the input file. 
  13322.    3. Reduce the size of the messages and rebuild the message file with MKMSGF. 
  13323.    4. Then restart MSGBIND. 
  13324.  
  13325.  Unable to bind message nnnn, message segment would exceed 64K. The remaining 
  13326.  messages will NOT be bound. 
  13327.            Explanation: (self explanatory) 
  13328.            Action: Do one or more, of the following: 
  13329.  
  13330.    1. Modify the module definition file to isolate the message object, and then 
  13331.       relink the application. 
  13332.    2. Reduce the number of messages to be bound to the application as specified 
  13333.       in the input file. 
  13334.    3. Reduce the size of the messages and rebuild the message file with MKMSGF. 
  13335.    4. Then restart MSGBIND. 
  13336.  
  13337.  Unable to locate call to Dos32GetMessage, messages will not be bound. 
  13338.            Explanation: The executable file to be modified makes no function 
  13339.            calls to the message retriever, or was not linked with the correct 
  13340.            library file. 
  13341.            Action: If the application does use the message retriever function, 
  13342.            such as DosGetMessage, relink the application using the correct 
  13343.            library file, and then restart MSGBIND. 
  13344.  
  13345.            If not, messages cannot be bound to the application. 
  13346.  
  13347.  Updating xxxxxxxx 
  13348.            Explanation: The .EXE file name displayed is being updated with the 
  13349.            requested messages. 
  13350.            Action: None. This message is for information only. 
  13351.  
  13352.  Updating xxxxxxxx -file not found 
  13353.            Explanation: The .EXE file name was not found in the path specified 
  13354.            in the input file. 
  13355.            Action: Edit the input file, correcting the path or file name, or 
  13356.            both.  Restart MSGBIND. 
  13357.  
  13358.  Updating xxxxxxxx -not linked with MSGSEG.OBJ 
  13359.            Explanation: The .EXE file name displayed made no DosGetMessage 
  13360.            functions, or the .EXE file was not linked with the correct library. 
  13361.            Messages can only be bound to applications that call message 
  13362.            retriever functions, such as DosGetMessage. 
  13363.            Action: If the .EXE file does make calls to message retriever 
  13364.            functions, relink the application using the correct library, and 
  13365.            restart MSGBIND. 
  13366.  
  13367.  usage: MSGBIND scriptfile 
  13368.            Explanation: The command was entered incorrectly. 
  13369.            Action: Restart MSGBIND. Refer to Syntax for the correct syntax. 
  13370.  
  13371.  Warning: No msgseg data found in new executable 
  13372.            Explanation: The executable file to be modified makes no function 
  13373.            calls to the message retriever, or was not linked with the correct 
  13374.            library file. 
  13375.            Action: If the application does use the message retriever function, 
  13376.            such as DosGetMessage, relink the application using the correct 
  13377.            library file, and then restart MSGBIND. 
  13378.  
  13379.            If not, messages cannot be bound to the application. 
  13380.  
  13381.  WARNING: Skipping messages for this file 
  13382.            Explanation: The .EXE file was in error, so the messages were not 
  13383.            bound to it. Either the .EXE file does not exist, or it has not been 
  13384.            linked with the correct library. 
  13385.            Action: If the .EXE file name is correct, relink the application 
  13386.            using the correct library, and restart MSGBIND. 
  13387.  
  13388.  WARNING: Skipping message numbers for this file 
  13389.            Explanation: The message file was in error, so all messages from 
  13390.            this message file were ignored. The message file might not exist, 
  13391.            might not be formatted correctly, or there might not be enough 
  13392.            memory to store all the messages. 
  13393.            Action: If the message file name is correct and has been correctly 
  13394.            formatted, check the memory available for the file. Restart MSGBIND. 
  13395.  
  13396.  WARNING: xxxx is an invalid message number 
  13397.            Explanation: The message number specified was not found in the 
  13398.            message file. 
  13399.            Action: Edit the input file and correct any message numbers that are 
  13400.            in error. Restart MSGBIND. 
  13401.  
  13402.  Writing messages 
  13403.            Explanation: The .EXE file is being updated with the messages 
  13404.            requested. 
  13405.            Action: None. This message is for information only. 
  13406.  
  13407.  
  13408. ΓòÉΓòÉΓòÉ 22.2. Resource Compiler Error Messages ΓòÉΓòÉΓòÉ
  13409.  
  13410. The error messages produced by the resource compiler utility (RC) and its 
  13411. preprocessor are listed below. 
  13412.  
  13413. RC Preprocessor Fatal Error Messages 
  13414.  
  13415. Error Message Descriptions 
  13416.  
  13417.  C1012 
  13418.            bad parenthesis nesting - missing symbol 
  13419.            Explanation: You wrote an expression which was missing the given 
  13420.            left or right parenthesis symbol. 
  13421.            Action: Rewrite the expression with balanced parentheses. 
  13422.  C1014 
  13423.            too many include files 
  13424.            Explanation: You might have tried to include a file recursively. 
  13425.            Action: Remove the include directive for any file which has already 
  13426.            been included to the preprocessor. 
  13427.  C1015 
  13428.            cannot open include file 'filename' 
  13429.            Explanation: The preprocessor could not locate the given include 
  13430.            file. 
  13431.            Action: If the include file is not in the current directory or in a 
  13432.            directory named in the INCLUDE environment variable, or in a 
  13433.            directory specified by a -i option, you must provide the full path 
  13434.            and include file name. 
  13435.  C1016 
  13436.            #if[n]def expected an identifier 
  13437.            Explanation:You wrote an ifdef or ifndef directive with no macro 
  13438.            name. 
  13439.            Action: Supply the missing name. 
  13440.  C1017 
  13441.            invalid integer constant expression 
  13442.            Explanation: You used an incorrect expression where an integer 
  13443.            constant was expected. 
  13444.            Action: Supply a correct expression to the directive. 
  13445.  C1018 
  13446.            unexpected #elif 
  13447.            Explanation: You used a directive in an incorrect context. 
  13448.            Action: Correct the logic of the if directives. 
  13449.  C1019 
  13450.            unexpected #else 
  13451.            Explanation: You used a directive in an incorrect context. 
  13452.            Action: Correct the logic of the if directives. 
  13453.  C1020 
  13454.            unexpected #endif 
  13455.            Explanation: You used a directive in an incorrect context. 
  13456.            Action: Correct the logic of the if directives. 
  13457.  C1021 
  13458.            bad preprocessor command 'command' 
  13459.            Explanation: The given command is not a recognized directive.  You 
  13460.            might have misspelled the directive. 
  13461.            Action: Use the correct spelling for the directive. 
  13462.  C1022 
  13463.            expected #endif 
  13464.            Explanation: You wrote an if directive but omitted any endif. 
  13465.            Action: Supply the missing endif directive. 
  13466.  C1056 
  13467.            compiler limit 'name' out of macro expansion space 
  13468.            Explanation: The macro called name expanded to a length exceeding 
  13469.            2042 bytes. 
  13470.            Action: Revise your definition of the macro so that its value is 
  13471.            shorter than the length limit. 
  13472.  C1065 
  13473.            compiler limit 'name' macro definition too big 
  13474.            Explanation: The macro called name expanded to a length exceeding 
  13475.            2042 bytes. 
  13476.            Action: Revise your definition of the macro so that its value is 
  13477.            shorter than the length limit. 
  13478.  
  13479.            Resource Compiler Preprocessor Error Messages 
  13480.  C2001 
  13481.            newline in constant 
  13482.            Explanation: You wrote a string literal constant without the closing 
  13483.            double quotation mark. 
  13484.            Action: Provide the ending double quote for the string. 
  13485.  C2004 
  13486.            expected defined(id) 
  13487.            Explanation: You wrote an if defined directive but omitted the macro 
  13488.            name. 
  13489.            Action: Supply the missing macro name. 
  13490.  C2006 
  13491.            #include expected a file name,found text 
  13492.            Explanation: The preprocessor found the given text instead of an 
  13493.            include file name. 
  13494.            Action Supply the correct include file name. 
  13495.  C2007 
  13496.            #define syntax 
  13497.            Explanation: The syntax of your define directive is incorrect. 
  13498.            Action: Use the correct form as described for the define directive. 
  13499.  C2014 
  13500.            preprocessor command must start as first non-white space 
  13501.            Explanation: You wrote a directive with text on the line before the 
  13502.            number sign (#). 
  13503.            Action: Put the number sign at the beginning of a line. 
  13504.  
  13505.            RC Preprocessor warnings 
  13506.  C4005 
  13507.            name redefinition 
  13508.            Explanation: You attempted to redefine the macro name to a value 
  13509.            different from its current definition. 
  13510.            Action: To use a different macro value, define it as a macro using 
  13511.            another macro name. 
  13512.  C4067 
  13513.            unexpected characters following include directive -newline expected 
  13514.            Explanation: You specified a filename to an include directive 
  13515.            without surrounding the name by double quotation marks or angle 
  13516.            brackets. 
  13517.            Action: Use double quotation marks or angle brackets around the 
  13518.            include filename. 
  13519.  C4067 
  13520.            unexpected characters following 'endif' directive - newline expected 
  13521.            Explanation: No characters should appear on the line of an endif or 
  13522.            else directive after the directive keyword. 
  13523.            Action: Remove the extra characters. 
  13524.  C4067 
  13525.            unexpected characters following 'else' directive-newline expected. 
  13526.            Explanation: No characters should appear on the line of an endif or 
  13527.            else directive after the directive keyword. 
  13528.            Action: Remove the extra characters. 
  13529.  C4067 
  13530.            unexpected characters following 'undef' directive - newline expected 
  13531.            Explanation: You can undefine only one macro on an undef directive. 
  13532.            Action:Use separate undef directive to undefine more than one macro. 
  13533.  
  13534.  Accelerator type required (CHAR, SCANCODE, or VIRTUALKEY) 
  13535.            Explanation: An acceloption has not been specified in the 
  13536.            accelerator table to define the type of accelerator. If the 
  13537.            accelerator character code is something other than a single 
  13538.            character or a character preceded by a caret ( ^ ), an acceloption 
  13539.            is required. 
  13540.            Action: Check accelerator table syntax. 
  13541.  BEGIN expected in accelerator table 
  13542.            Explanation: BEGIN keyword missing from accelerator table. 
  13543.            Action: Check syntax. 
  13544.  BEGIN expected in dialog or window template 
  13545.            Explanation: BEGIN keyword missing from dialog or window template. 
  13546.            Action: Check syntax. 
  13547.  BEGIN expected in menu 
  13548.            Explanation: BEGIN keyword missing from menu. 
  13549.            Action: Check syntax. 
  13550.  BEGIN expected in message table 
  13551.            Explanation: BEGIN keyword missing from message table. 
  13552.            Action: Check syntax. 
  13553.  BEGIN expected in RCData 
  13554.            Explanation: BEGIN keyword missing from RCData table. 
  13555.            Action: Check syntax. 
  13556.  BEGIN expected in String Table 
  13557.            Explanation: BEGIN keyword missing from string table. 
  13558.            Action: Check syntax. 
  13559.  Cannot re-use message constants 
  13560.            Explanation: Message identifier has been used more than once in 
  13561.            message table. 
  13562.            Action: Check message table syntax. 
  13563.  Cannot re-use string constants 
  13564.            Explanation: Message identifier has been used more than once in 
  13565.            string table. 
  13566.            Action: Check string table syntax. 
  13567.  Comma expected after item string 
  13568.            Explanation: A comma must be used to separate the menu item 
  13569.            identifier and the menu item string. 
  13570.            Action: Check menu syntax. 
  13571.  Control character out of range ( ^A - ^Z) 
  13572.            Explanation: Accelerator character codes that use the Ctrl key, and 
  13573.            are therefore preceded by a caret ( ^ ), must use alphabetic keys. 
  13574.            Action: Check accelerator table syntax. 
  13575.  END expected in dialog 
  13576.            Explanation: END keyword missing from dialog template. 
  13577.            Action: Check syntax. 
  13578.  END expected in menu 
  13579.            Explanation: END keyword missing from menu. 
  13580.            Action: Check syntax. 
  13581.  Error creating temp file 
  13582.            Explanation: Temporary files are created by the resource compiler 
  13583.            during the compilation process. 
  13584.            Action: Check that there is sufficient disk space to run the 
  13585.            resource compiler, and restart the resource compiler. 
  13586.  Expected comma in accelerator table 
  13587.            Explanation: Commas are used in the accelerator table to separate 
  13588.            the accelerator key, the accelerator command, and the accelerator 
  13589.            options. 
  13590.            Action: Check accelerator table syntax. 
  13591.  Expected ID value for menu item 
  13592.            Explanation: A selection identifier is needed for each item within a 
  13593.            menu. 
  13594.            Action: Check menu syntax. 
  13595.  Expected menu string 
  13596.            Explanation: A character string should be specified in the menu 
  13597.            definition to describe the menu selection. 
  13598.            Action: Check menu syntax. The string should be enclosed in double 
  13599.            quotation marks. 
  13600.  Expected numeric command value 
  13601.            Explanation: A number should be used in the accelerator table to 
  13602.            identify the message that is generated by an accelerator key. 
  13603.            Action: Check accelerator table syntax. 
  13604.  Expected numeric constant in message table 
  13605.            Explanation: The identifier that precedes a message definition must 
  13606.            be an integer. 
  13607.            Action: Check message definition syntax. 
  13608.  Expected numeric constant in string table 
  13609.            Explanation: The identifier that precedes a string definition must 
  13610.            be an integer. 
  13611.            Action: Check string definition syntax. 
  13612.  Expected numerical dialog constant 
  13613.            Explanation: Integers are required in dialog and window templates to 
  13614.            specify the coordinates and dimensions of the dialog box. 
  13615.            Action: Check syntax of dialog box definition. 
  13616.  Expected string in message table 
  13617.            Explanation: A character string was not found in the message table. 
  13618.            Action: Check syntax. The string should be enclosed in double 
  13619.            quotation marks. 
  13620.  Expected string in string table 
  13621.            Explanation: A character string was not found in the string table. 
  13622.            Action: Check string table syntax. The string should be enclosed in 
  13623.            double quotation marks. 
  13624.  Expected string or constant accelerator command 
  13625.            Explanation: The accelerator character code is missing. 
  13626.            Action: Check accelerator table syntax. 
  13627.  File not found 
  13628.            Explanation: The resource compiler could not find the .RC or .RES 
  13629.            file that you requested. 
  13630.            Action: Check that the file is in the current directory and check 
  13631.            the path to the directory. 
  13632.  Illegal empty BEGIN/END block found, resource not written 
  13633.            Explanation: A BEGIN/END block with no DIALOG, CONTROL, or WINDOW 
  13634.            statements in it was found in the dialog template. 
  13635.            Action: Delete unwanted BEGIN/END blocks. 
  13636.  Invalid accelerator 
  13637.            Explanation: The character code specified as an accelerator key must 
  13638.            be a valid keyboard operation. 
  13639.            Action: Check accelerator key definition syntax. 
  13640.  Invalid accelerator option 
  13641.            Explanation: The accelerator option must be a valid keyword. 
  13642.            Action: Check syntax. 
  13643.  Invalid control character 
  13644.            Explanation: The accelerator key definition can include a caret 
  13645.            ( ^) to specify that the key should be used with the Ctrl key. 
  13646.            Action: Check accelerator key definition syntax. 
  13647.  Invalid Type 
  13648.            Explanation: The resource type must be a valid keyword. 
  13649.            Action: Check resource definition syntax. 
  13650.  Non-numeric template ID in dialog or window template 
  13651.            Explanation: The resource identifier must be an integer. 
  13652.            Action: Check dialog or window template syntax. 
  13653.  Only one top level window allowed 
  13654.            Explanation: Only one DIALOG, CONTROL, or WINDOW statement is 
  13655.            allowed within the dialog or window template. 
  13656.            Action: Check dialog or window template syntax. 
  13657.  Resource Type keyword expected 
  13658.            Explanation: The resource type must be specified in the resource 
  13659.            script file. 
  13660.            Action: Check resource definition syntax. 
  13661.  String literal too long 
  13662.            Explanation: Strings cannot be longer than 255 characters. 
  13663.            Action: Edit the string. 
  13664.  Text string or ordinal expected in control 
  13665.            Explanation: A text string can be specified in the DIALOG statement 
  13666.            of a dialog template to give it a title.  If a title is not 
  13667.            required, double quotation marks must be used with no characters 
  13668.            between them (" "). 
  13669.            Action: Edit DIALOG statement. 
  13670.  Unbalanced parentheses 
  13671.            Explanation: The left and right parentheses have not been matched. 
  13672.            Action: Edit the parentheses. 
  13673.  Undefined keyword or key name 
  13674.            Explanation: An invalid keyword or key name has been used. 
  13675.            Action: Check syntax. 
  13676.  Unexpected end of file in string literal 
  13677.            Explanation: The double quotation marks have not been closed at the 
  13678.            end of a character string. 
  13679.            Action: Edit the string. 
  13680.  Unexpected value in RCData 
  13681.            Explanation: The variable defined in RCData must be a string or a 
  13682.            number. 
  13683.            Action: Check the RCData syntax. 
  13684.  Unknown dialog or window token 
  13685.            Explanation: The dialog and window templates must use only the 
  13686.            DIALOG, WINDOW, or CONTROL keywords. 
  13687.            Action: Check the dialog or window template syntax. 
  13688.  Unknown menu sub type 
  13689.            Explanation: Items within a menu can be specified only with the 
  13690.            MENUITEM and SUBMENU keywords. 
  13691.            Action: Check menu definition syntax. 
  13692.  
  13693.  
  13694. ΓòÉΓòÉΓòÉ 22.3. NMAKE Error Messages ΓòÉΓòÉΓòÉ
  13695.  
  13696. This section provides a convenient reference to the many error messages that 
  13697. can be encountered when using the NMAKE facility. 
  13698.  
  13699. Error Message Descriptions 
  13700.  
  13701.  NMAKE Fatal Error Messages          (Part 1) 1000 - 1098 
  13702.  
  13703.  NMAKE Warnings                      (Part 2) 4001 - 4008 
  13704.  
  13705.  NMAKE Informational Messages        (Part 3)   2 -   6 
  13706.  
  13707.  
  13708. ΓòÉΓòÉΓòÉ 22.3.1. Fatal Error Messages (Part 1) 1000 - 1098 ΓòÉΓòÉΓòÉ
  13709.  
  13710.  U1000     syntax error : ')' missing in macro invocation 
  13711.            Explanation: A left parenthesis appeared without a matching right 
  13712.            parenthesis in a macro invocation.  The correct form is $(name). 
  13713.            Action: Add the right parenthesis in the proper syntax. 
  13714.  
  13715.  U1001     syntax error : illegal character 'character' in macro 
  13716.            Explanation: A non-alphanumeric character other than underscore 
  13717.            appeared in a macro. 
  13718.            Action: Use only characters valid for a macro name. 
  13719.  
  13720.  U1002     syntax error : bad macro invocation '$' 
  13721.            Explanation: A single dollar sign ($) appeared without a macro name 
  13722.            associated with it.  The correct form is $(name). 
  13723.            Action: Use a defined macro name. 
  13724.  
  13725.  U1003     syntax error : '=' missing in macro 
  13726.            Explanation: The = sign was missing in a macro definition. The 
  13727.            correct form is 'name = value'. 
  13728.            Action: Insert an equals sign (=) and retry. 
  13729.  
  13730.  U1004     syntax error : macro name missing 
  13731.            Explanation: A macro invocation appeared without a name. The correct 
  13732.            form is $(name). 
  13733.            Action: Supply the macro name and retry. 
  13734.  
  13735.  U1005     syntax error : text must follow ':' in macro 
  13736.            Explanation: A string substitution was specified for a macro, but 
  13737.            the string to be changed in the macro was not specified. 
  13738.            Action: Specify the string to be substituted. 
  13739.  
  13740.  U1006     syntax error : missing closing double quotation mark 
  13741.            Explanation: An opening double quotation mark appeared without a 
  13742.            closing quotation mark. 
  13743.            Action: Edit the line and add the closing quotation mark. 
  13744.  
  13745.  U1007     double quotation mark not allowed in name 
  13746.            Explanation: You used a ' " ' symbol inside a macro name. 
  13747.            Action: Correct the name without the quotation mark. 
  13748.  
  13749.  U1017     unknown directive 'directive' 
  13750.            Explanation: The directive specified is not a recognized directive. 
  13751.            Action: Check your spelling of the intended directive. 
  13752.  
  13753.  U1018     directive and/or expression part missing 
  13754.            Explanation: The directive is incompletely specified.  The 
  13755.            expression part is required. 
  13756.            Action: Supply the expression and retry the directive. 
  13757.  
  13758.  U1019     too many nested if blocks 
  13759.            Explanation: You exceeded the limit of 16 levels of nested !IF 
  13760.            directives. 
  13761.            Action: Simplify your nesting logic to fewer than 16 levels. 
  13762.  
  13763.  U1020     EOF found before next directive 
  13764.            Explanation: A directive, such as !ENDIF, was missing. 
  13765.            Action: Insert the required directive and retry. 
  13766.  
  13767.  U1021     syntax error : else unexpected 
  13768.            Explanation: An !ELSE directive was found that was not expected, or 
  13769.            was placed in a syntactically incorrect place. 
  13770.            Action: Correct the position of the !ELSE directive. 
  13771.  
  13772.  U1022     missing terminating character for string/program invocation : 
  13773.            'character' 
  13774.            Explanation: The closing double quotation mark in a string 
  13775.            comparison in an !IF directive was missing.  Or else the closing 
  13776.            bracket ( ] ) in a program invocation in a directive is missing. 
  13777.            Action: Insert the proper termination character. 
  13778.  
  13779.  U1023     syntax error present in expression 
  13780.            Explanation: An expression is incorrect. 
  13781.            Action: Check the allowed operators and operator precedence for the 
  13782.            expression. 
  13783.  
  13784.  U1024     illegal argument to !CMDSWITCHES 
  13785.            Explanation: An unrecognized !CMDSWITCHES option was specified. 
  13786.            Action: Use the correct !CMDSWITCHES option. 
  13787.  
  13788.  U1031     file name missing (or macro is null) 
  13789.            Explanation: An !INCLUDE directive was found, but the name of the 
  13790.            file to include is missing. 
  13791.            Action: Supply the name of the file to be included. 
  13792.  
  13793.  U1033     syntax error : 'string' unexpected 
  13794.            Explanation: The specified string is not part of the valid syntax 
  13795.            for a makefile. 
  13796.            Action: Correct the line according to the proper syntax. 
  13797.  
  13798.  U1034     syntax error : separator missing 
  13799.            Explanation: The colon that separates targets from dependents is 
  13800.            missing. 
  13801.            Action: Insert a colon after the target list. 
  13802.  
  13803.  L1035     syntax error : expected ':' or '=' separator 
  13804.            Explanation: Either a colon, implying a dependency line, or an = 
  13805.            sign, implying a macro definition, was expected. 
  13806.            Action: Insert the proper separator in the line. 
  13807.  
  13808.  U1036     syntax error : too many names to left of '=' 
  13809.            Explanation: Only one string is allowed to the left of a macro 
  13810.            definition. 
  13811.            Action: Remove the incorrect text before the = sign. 
  13812.  
  13813.  U1037     syntax error : target name missing 
  13814.            Explanation: A colon (:) was found before a target name was found. 
  13815.            At least one target is required. 
  13816.            Action: Insert the correct target name before the colon. 
  13817.  
  13818.  U1038     internal error : lexer 
  13819.            Explanation: The lexer encountered an unexpected condition. 
  13820.            Action: Note the circumstances of the failure and contact IBM 
  13821.            Support. 
  13822.  
  13823.  U1039     internal error : parser 
  13824.            Explanation: The parser encountered an unexpected condition. 
  13825.            Action: Note the circumstances of the failure and contact IBM 
  13826.            Support. 
  13827.  
  13828.  U1040     internal error : macro expansion 
  13829.            Explanation: An unexpected condition was found during macro 
  13830.            expansion. 
  13831.            Action: Note the circumstances of the failure and contact IBM 
  13832.            Support. 
  13833.  
  13834.  U1041     internal error : target building 
  13835.            Explanation: An unexpected condition was found during target 
  13836.            building. 
  13837.            Action: Note the circumstances of the failure and contact IBM 
  13838.            Support. 
  13839.  
  13840.  U1042     internal error : expression stack overflow 
  13841.            Explanation: An expression was too complex to decode using internal 
  13842.            memory space. 
  13843.            Action: Note the circumstances of the failure and contact IBM 
  13844.            Support. 
  13845.  
  13846.  U1043     internal error : temp file limit exceeded 
  13847.            Explanation: NMAKE required too many temporary files. 
  13848.            Action: Note the circumstances of the failure and contact IBM 
  13849.            Support. 
  13850.  
  13851.  U1044     internal error : too many levels of recursion building a target 
  13852.            Explanation: Recursive invocations of NMAKE exceeded available 
  13853.            memory. 
  13854.            Action: Note the circumstances of the failure and contact IBM 
  13855.            Support. 
  13856.  
  13857.  U1045     messagetext 
  13858.            Explanation: NMAKE encountered an unexpected condition. 
  13859.            Action: Note the text of the message and contact IBM Support. 
  13860.  
  13861.  U1046     internal error : out of search handles 
  13862.            Explanation: NMAKE exceeded an internal limit on handles. 
  13863.            Action: Note the circumstances of the failure and contact IBM 
  13864.            Support. 
  13865.  
  13866.  U1049     macro too long (max allowed size : 64K) 
  13867.            Explanation: One of your macros expanded to longer than 65 535 
  13868.            bytes. 
  13869.            Action: Recode the macro definition so that it is less than 64K. 
  13870.  
  13871.  U1050     user-specified text 
  13872.            Explanation: The message specified with the !ERROR directive is 
  13873.            displayed. 
  13874.            Action: Action depends on the defined error condition. 
  13875.  
  13876.  U1051     out of memory 
  13877.            Explanation: NMAKE ran out of space in the far heap. 
  13878.            Action: Note the circumstances of the failure and contact IBM 
  13879.            Support. 
  13880.  
  13881.  U1052     file 'filename' not found 
  13882.            Explanation: The file was not found. 
  13883.            Action: Specify the filename properly in the makefile. 
  13884.  
  13885.  U1053     file 'filename' unreadable 
  13886.            Explanation: The filename cannot be read. 
  13887.            Action: Be sure that the file has the appropriate attributes to be 
  13888.            read. 
  13889.  
  13890.  U1054     cannot create in-line file 'filename' 
  13891.            Explanation: The program was unable to generate the specified 
  13892.            in-line file as a uniquely-named temporary file. 
  13893.            Action: Be sure your file system has enough space for temporary 
  13894.            files. 
  13895.  
  13896.  U1055     out of environment space 
  13897.            Explanation: The environment space limit was reached. 
  13898.            Action: Restart NMAKE with a larger environment space. 
  13899.  
  13900.  U1056     cannot find command processor 
  13901.            Explanation: The command processor CMD.EXE could not be found. 
  13902.            Action: Be sure that the COMSPEC environment variable points to a 
  13903.            command processor on your file system. 
  13904.  
  13905.  U1057     cannot delete temporary file 'filename' 
  13906.            Explanation: The program was unable to delete the specified file. 
  13907.            Action: The file needs to exist and have the write attribute. 
  13908.  
  13909.  U1058     terminated by user 
  13910.            Explanation: You pressed Ctrl+Break to stop NMAKE. 
  13911.            Action: None, the program has stopped. 
  13912.  
  13913.  U1060     unable to close file : 'filename' 
  13914.            Explanation: NMAKE was unable to close filename. 
  13915.            Action: Look for the named file with write attribute on your file 
  13916.            system. 
  13917.  
  13918.  U1061     /F option requires a file name 
  13919.            Explanation: You coded command-line option /f but failed to follow 
  13920.            it with the name of a description file. 
  13921.            Action: Specify the description file name after the option. 
  13922.  
  13923.  U1062     missing file name with /X option 
  13924.            Explanation: You coded command-line option /x but failed to follow 
  13925.            it with the name of a file to receive redirected stderr output. 
  13926.            Action: Give an output error file name after the option. 
  13927.  
  13928.  U1063     missing macro name before '=' 
  13929.            Explanation: You coded '=' in a command line macro definition, but 
  13930.            failed to supply the name of the macro. 
  13931.            Action: Give the macro name in the definition. 
  13932.  
  13933.  U1064     MAKEFILE not found and no target specified 
  13934.            Explanation: You invoked NMAKE without a /f option, and no file 
  13935.            named MAKEFILE was present. 
  13936.            Action: Either create a file named MAKEFILE, or use the /f switch. 
  13937.  
  13938.  U1065     incorrect option 'option' 
  13939.            Explanation: NMAKE does not use the option which you specified. 
  13940.            Action: Use a valid command line option. 
  13941.  
  13942.  U1070     cycle in macro definition 'macroname' 
  13943.            Explanation: A cycle was detected in the macro definition specified. 
  13944.            Action: Rewrite the macro to avoid the circular definition. 
  13945.  
  13946.  U1071     cycle in dependency tree for target 'targetname' 
  13947.            Explanation: A cycle was detected in the target dependency tree. 
  13948.            Action: Check the dependency lists descending from the given target 
  13949.            and remove the circular dependency. 
  13950.  
  13951.  U1072     cycle in include files : 'filenames' 
  13952.            Explanation: A cycle was detected in the tree of included files. 
  13953.            Action: Check the file names included by the given include file and 
  13954.            remove the circular inclusion. 
  13955.  
  13956.  U1073     don't know how to make 'filename' 
  13957.            Explanation: The specified target does not exist and there are no 
  13958.            commands to execute or inference rules given for it.  Hence NMAKE 
  13959.            cannot build it. 
  13960.            Action: Correct the specification of the file, which should exist on 
  13961.            your file system. 
  13962.  
  13963.  U1076     name too long 
  13964.            Explanation: The macro name, target name, or build command name 
  13965.            would overflow an internal buffer. 
  13966.            Action: Reduce the length of the specified name. 
  13967.  
  13968.  U1077     'program' : return code 'value' 
  13969.            Explanation: The invocation of NMAKE failed with a nonzero return 
  13970.            value. 
  13971.            Action: Determine the cause of failure of the specified program. 
  13972.  
  13973.  U1078     constant overflow at 'directive' 
  13974.            Explanation: A constant in 'directive' expression was too big. 
  13975.            Action: Reduce the size of the specified constant to a value within 
  13976.            the range of a signed long integer, -2147483648 <= value <= 
  13977.            2147483647. 
  13978.  
  13979.  U1079     illegal expression : divide by zero present 
  13980.            Explanation: An expression contains a division by zero. 
  13981.            Action: Remove the undefined division by zero from the expression. 
  13982.  
  13983.  U1080     operator and/or operand out of place : usage illegal 
  13984.            Explanation: The expression uses an operand or operator incorrectly. 
  13985.            Action: Check the allowed set of operators and their precedence. 
  13986.  
  13987.  U1081     'program' : program not found 
  13988.            Explanation: NMAKE could not find the external command or program. 
  13989.            Action: Be sure that the program is located in the PATH. 
  13990.  
  13991.  U1082     'command' : cannot execute command: out of memory 
  13992.            Explanation: NMAKE ran out of memory while running command. 
  13993.            Action: Make more memory available while running NMAKE. 
  13994.  
  13995.  U1083     target macro 'macroname' expands to nothing 
  13996.            Explanation: The expansion of the given macro is a null string. 
  13997.            Action: Correct the definition of the macro. 
  13998.  
  13999.  U1084     cannot create temporary file 'filename' 
  14000.            Explanation: NMAKE was unable to open the specified temporary file. 
  14001.            Action: Check the filename specification for validity. 
  14002.  
  14003.  U1085     cannot mix implicit and explicit rules 
  14004.            Explanation: A regular target was specified along with the target 
  14005.            for a rule (which has the form .sufx1.sufx2). 
  14006.            Action: Separate targets built by implicit and explicit inference 
  14007.            rules into different lists. 
  14008.  
  14009.  U1086     inference rule cannot have dependents 
  14010.            Explanation: Dependents are not allowed in the definition of an 
  14011.            inference rule. 
  14012.            Action: Remove the dependents list from the rule. 
  14013.  
  14014.  U1087     cannot have : and :: dependents for same target 
  14015.            Explanation: A target cannot have both a single-colon and 
  14016.            double-colon dependency. 
  14017.            Action: Choose either single-colon or double-colon separator for the 
  14018.            target. 
  14019.  
  14020.  U1088     invalid separator on inference rule : '::' 
  14021.            Explanation: Inference rules can use only a single-colon separator. 
  14022.            Action: Use a single-colon dependency for the target. 
  14023.  
  14024.  U1089     cannot have build commands for pseudotarget 'targetname' 
  14025.            Explanation: Pseudotargets (for example, .PRECIOUS, .SUFFIXES) 
  14026.            cannot have build commands specified. 
  14027.            Action: Remove the build commands from the specification of 
  14028.            targetname. 
  14029.  
  14030.  U1090     cannot have dependents for pseudotarget 'targetname' 
  14031.            Explanation: The specified pseudotarget, for example, .SILENT, 
  14032.            .IGNORE) cannot have a dependent. 
  14033.            Action: Remove the dependent from the specification of targetname. 
  14034.  
  14035.  U1092     too many names in rule 
  14036.            Explanation: The rules cannot have more than one pair of extensions 
  14037.            (ext1.ext2) as a target for the rule. 
  14038.            Action: Use only one pair of extensions in any inference rule. 
  14039.  
  14040.  U1093     cannot mix special pseudotargets 
  14041.            Explanation: It is illegal to list two or more pseudotargets 
  14042.            together. 
  14043.            Action: Use only one pseudotarget in any list. 
  14044.  
  14045.  U1094     syntax error : only [no]keep allowed here 
  14046.            Explanation: In a context where only KEEP or NOKEEP is accepted to 
  14047.            indicate the desired disposition of the inline file, you used an 
  14048.            incorrect string. 
  14049.            Action: Use the correct syntax for In-Line Files. 
  14050.  
  14051.  U1095     expanded command line 'string' too long 
  14052.            Explanation: After macro expansion, the command line length exceeds 
  14053.            1024 bytes. 
  14054.            Action: Rewrite the command line to stay within a 1024-byte limit. 
  14055.  
  14056.  U1097     extmake syntax usage error, no dependent 
  14057.            Explanation: You used the extmake file syntax on a description block 
  14058.            which had no dependent files. 
  14059.            Action: Specify one or more dependent files for the block. 
  14060.  
  14061.  U1098     extmake syntax in 'string' incorrect 
  14062.            Explanation: The given string contains an extmake syntax error. 
  14063.            Action: Correct the string according to the proper syntax. 
  14064.  
  14065.  
  14066. ΓòÉΓòÉΓòÉ 22.3.2. Warnings (Part 2) 4001 - 4008 ΓòÉΓòÉΓòÉ
  14067.  
  14068.  U4001     command file can be invoked only from command line 
  14069.            Explanation: You used an @ symbol on an argument in a command file. 
  14070.            You cannot invoke another command file from within a command file. 
  14071.            Action: If the you want '@' to be part of an argument in a command 
  14072.            file, you must enclose that argument in quotation marks. 
  14073.  
  14074.  U4002     no match found for wild card 'string' 
  14075.            Explanation: NMAKE expanded wildcards in the given string, but found 
  14076.            no files matching the specification. 
  14077.            Action: Check the existence of desired files on your file system. 
  14078.  
  14079.  U4004     too many rules for target 'targetname' 
  14080.            Explanation: You specified too many inference rules for the 
  14081.            specified targetname. 
  14082.            Action: Revise your rules specification for targetname. 
  14083.  
  14084.  U4005     ignoring rule 'string' (extension not in .SUFFIXES) 
  14085.            Explanation: You specified an inference rule with a suffix which was 
  14086.            not in the .SUFFIXES list. 
  14087.            Action: To use the suffix, be sure to include it in the .SUFFIXES 
  14088.            list. 
  14089.  
  14090.  U4006     special macro undefined : 'macroname' 
  14091.            Explanation: You specified the undefined macro macroname. 
  14092.            Action: NMAKE will ignore the undefined macroname.  You may use only 
  14093.            predefined special macros. 
  14094.  
  14095.  U4007     file name 'filename' too long; truncating to 8.3 
  14096.            Explanation: The specified filename is too long for a FAT file 
  14097.            system name. 
  14098.            Action: NMAKE will shorten the filename to at most an 
  14099.            eight-character name and 3-character extension. 
  14100.  
  14101.  U4008     removed target 'filename' 
  14102.            Explanation: While deleting non-precious files, NMAKE erased the 
  14103.            specified filename which was a target. 
  14104.            Action: Check your lists of targets and dependent files to be sure 
  14105.            that filename is not needed. 
  14106.  
  14107.  
  14108. ΓòÉΓòÉΓòÉ 22.3.3. Informational Messages (Part 3) 2-6 ΓòÉΓòÉΓòÉ
  14109.  
  14110.  Message 2 'filename' is up-to-date. 
  14111.            Explanation: The specified target filename is no older than any of 
  14112.            its dependent files. 
  14113.            Action: NMAKE does not need to rebuild this target. 
  14114.  
  14115.  Message 3 **'file1' newer than 'file2' 
  14116.            Explanation: While reporting creation times of files, NMAKE notes 
  14117.            that file1 was created after file2. 
  14118.            Action: [none] 
  14119.  
  14120.  Message 5 touch 'filename' 
  14121.            Explanation: You specified option /t to touch targets with the 
  14122.            current date and time. 
  14123.            Action: NMAKE has updated the creation time of filename. 
  14124.  
  14125.  Message 6 'filename' target does not exist 
  14126.            Explanation: The specified filename could not be found. 
  14127.            Action: NMAKE will rebuild the target. 
  14128.  
  14129.  
  14130. ΓòÉΓòÉΓòÉ 23. Glossary ΓòÉΓòÉΓòÉ
  14131.  
  14132. This glossary defines many of the terms used in this book. It includes terms 
  14133. and definitions from the IBM Dictionary of Computing, as well as terms specific 
  14134. to the OS/2 operating system and the Presentation Manager. It is not a complete 
  14135. glossary for the entire OS/2 operating system; nor is it a complete dictionary 
  14136. of computer terms. 
  14137.  
  14138. Other primary sources for these definitions are: 
  14139.  
  14140.    o  The American National Standard Dictionary for Information Systems, ANSI 
  14141.       X3.172-1990, copyrighted 1990 by the American National Standards 
  14142.       Institute, 11 West 42nd Street, New York, New York 10036. These 
  14143.       definitions are identified by the symbol (A) after the definition. 
  14144.  
  14145.    o  The Information Technology Vocabulary, developed by Subcommittee 1, Joint 
  14146.       Technical Committee 1, of the International Organization for 
  14147.       Standardization and the International Electrotechnical Commission 
  14148.       (ISO/IEC JTC1/SC1). Definitions of published parts of this vocabulary are 
  14149.       identified by the symbol (I) after the definition; definitions taken from 
  14150.       draft international standards, committee drafts, and working papers being 
  14151.       developed by ISO/IEC JTC1/SC1 are identified by the symbol (T) after the 
  14152.       definition, indicating that final agreement has not yet been reached 
  14153.       among the participating National Bodies of SC1. 
  14154.  
  14155.  
  14156. ΓòÉΓòÉΓòÉ 23.1. Glossary Listing ΓòÉΓòÉΓòÉ
  14157.  
  14158. Select a starting letter of glossary terms: 
  14159.  
  14160.  A    N 
  14161.  B    O 
  14162.  C    P 
  14163.  D    Q 
  14164.  E    R 
  14165.  F    S 
  14166.  G    T 
  14167.  H    U 
  14168.  I    V 
  14169.  J    W 
  14170.  K    X 
  14171.  L    Y 
  14172.  M    Z 
  14173.  
  14174.  
  14175. ΓòÉΓòÉΓòÉ <hidden> Glossary - A ΓòÉΓòÉΓòÉ
  14176.  
  14177.  accelerator  -In SAA Common User Access architecture, a key or combination of 
  14178.    keys that invokes an application-defined function. 
  14179.  
  14180.  accelerator table  -A table used to define which key strokes are treated as 
  14181.    accelerators and the commands they are translated into. 
  14182.  
  14183.  access mode  -The manner in which an application gains access to a file it has 
  14184.    opened. Examples of access modes are read-only, write-only, and read/write. 
  14185.  
  14186.  access permission  -All access rights that a user has regarding an object. (I)
  14187.  
  14188.  action  -One of a set of defined tasks that a computer performs. Users request 
  14189.    the application to perform an action in several ways, such as typing a 
  14190.    command, pressing a function key, or selecting the action name from an 
  14191.    action bar or menu. 
  14192.  
  14193.  action bar  -In SAA Common User Access architecture, the area at the top of a 
  14194.    window that contains choices that give a user access to actions available in 
  14195.    that window. 
  14196.  
  14197.  action point  -The current position on the screen at which the pointer is 
  14198.    pointing. Contrast with hot spot and input focus. 
  14199.  
  14200.  active program  -A program currently running on the computer.  An active 
  14201.    program can be interactive (running and receiving input from the user) or 
  14202.    noninteractive (running but not receiving input from the user). See also 
  14203.    interactive program and noninteractive program. 
  14204.  
  14205.  active window  -The window with which the user is currently interacting. 
  14206.  
  14207.  address space  -(1) The range of addresses available to a program. (A)  (2) 
  14208.    The area of virtual storage available for a particular job. 
  14209.  
  14210.  alphanumeric video output  -Output to the logical video buffer when the video 
  14211.    adapter is in text mode and the logical video buffer is addressed by an 
  14212.    application as a rectangular array of character cells. 
  14213.  
  14214.  American National Standard Code for Information Interchange  -The standard 
  14215.    code, using a coded character set consisting of 7-bit coded characters (8 
  14216.    bits including parity check), that is used for information interchange among 
  14217.    data processing systems, data communication systems, and associated 
  14218.    equipment. The ASCII set consists of control characters and graphic 
  14219.    characters. (A) 
  14220.  
  14221.    Note:  IBM has defined an extension to ASCII code (characters 128-255). 
  14222.  
  14223.  anchor  -A window procedure that handles Presentation Manager* message 
  14224.    conversions between an icon procedure and an application. 
  14225.  
  14226.  anchor block  -An area of Presentation-Manager-internal resources to allocated 
  14227.    process or thread that calls WinInitialize. 
  14228.  
  14229.  anchor point  -A point in a window used by a program designer or by a window 
  14230.    manager to position a subsequently appearing window. 
  14231.  
  14232.  ANSI  -American National Standards Institute. 
  14233.  
  14234.  APA  -All points addressable. 
  14235.  
  14236.  API  -Application programming interface. 
  14237.  
  14238.  application  -A collection of software components used to perform specific 
  14239.    types of work on a computer; for example, a payroll application, an airline 
  14240.    reservation application, a network application. 
  14241.  
  14242.  application object  -In SAA Advanced Common User Access architecture, a form 
  14243.    that an application provides for a user; for example, a spreadsheet form. 
  14244.    Contrast with user object. 
  14245.  
  14246.  application programming interface (API)  -A functional interface supplied by 
  14247.    the operating system or by a separately orderable licensed program that 
  14248.    allows an application program written in a high-level language to use 
  14249.    specific data or functions of the operating system or the licensed program. 
  14250.  
  14251.  application-modal  -Pertaining to a message box or dialog box for which 
  14252.    processing must be completed before further interaction with any other 
  14253.    window owned by the same application may take place. 
  14254.  
  14255.  area  -In computer graphics, a filled shape such as a solid rectangle. 
  14256.  
  14257.  ASCII  -American National Standard Code for Information Interchange. 
  14258.  
  14259.  ASCIIZ  -A string of ASCII characters that is terminated with a byte 
  14260.    containing the value 0. 
  14261.  
  14262.  aspect ratio  -In computer graphics, the width-to-height ratio of an area, 
  14263.    symbol, or shape. 
  14264.  
  14265.  asynchronous (ASYNC)  -(1) Pertaining to two or more processes that do not 
  14266.    depend upon the occurrence of specific events such as common timing 
  14267.    signals. (T)  (2) Without regular time relationship;  unexpected or 
  14268.    unpredictable with respect to the execution of program instructions. See 
  14269.    also synchronous. 
  14270.  
  14271.  atom  -A constant that represents a string. As soon as a string has been 
  14272.    defined as an atom, the atom can be used in place of the string to save 
  14273.    space. Strings are associated with their respective atoms in an atom table. 
  14274.    See also integer atom. 
  14275.  
  14276.  atom table  -A table used to relate atoms with the strings that they 
  14277.    represent. Also in the table is the mechanism by which the presence of a 
  14278.    string can be checked. 
  14279.  
  14280.  atomic operation  -An operation that completes its work on an object before 
  14281.    another operation can be performed on the same object. 
  14282.  
  14283.  attribute  -A characteristic or property that can be controlled, usually to 
  14284.    obtain a required appearance;  for example, the color of a line. See also 
  14285.    graphics attributes and segment attributes. 
  14286.  
  14287.  automatic link  -In Information Presentation Facility (IPF), a link that 
  14288.    begins a chain reaction at the primary window. When the user selects the 
  14289.    primary window, an automatic link is activated to display secondary windows. 
  14290.  
  14291.  AVIO  -Advanced Video Input/Output. 
  14292.  
  14293.  
  14294. ΓòÉΓòÉΓòÉ <hidden> Glossary - B ΓòÉΓòÉΓòÉ
  14295.  
  14296.  B╨Æzier curve  -(1) A mathematical technique of specifying smooth continous 
  14297.    lines and surfaces, which require a starting point and a finishing point 
  14298.    with several intermediate points that influence or control the path of the 
  14299.    linking curve. Named after Dr. P. B╨Æzier. (2) (D of C) In the AIX Graphics 
  14300.    Library, a cubic spline approximation to a set of four control points that 
  14301.    passes through the first and fourth control points and that has a continuous 
  14302.    slope where two spline segments meet. Named after Dr. P. B╨Æzier. 
  14303.  
  14304.  background  -(1) In multiprogramming, the conditions under which low-priority 
  14305.    programs are executed. Contrast with foreground. (2) An active session that 
  14306.    is not currently displayed on the screen. 
  14307.  
  14308.  background color  -The color in which the background of a graphic primitive is 
  14309.    drawn. 
  14310.  
  14311.  background mix  -An attribute that determines how the background of a graphic 
  14312.    primitive is combined with the existing color of the graphics presentation 
  14313.    space. Contrast with mix. 
  14314.  
  14315.  background program  -In multiprogramming, a program that executes with a low 
  14316.    priority. Contrast with foreground program. 
  14317.  
  14318.  bit map  -A representation in memory of the data displayed on an APA device, 
  14319.    usually the screen. 
  14320.  
  14321.  block  -(1) A string of data elements recorded or transmitted as a unit. The 
  14322.    elements may be characters, words, or logical records. (T)  (2) To record 
  14323.    data in a block. (3) A collection of contiguous records recorded as a unit. 
  14324.    Blocks are separated by interblock gaps and each block may contain one or 
  14325.    more records. (A)
  14326.  
  14327.  block device  -A storage device that performs I/O operations on blocks of data 
  14328.    called sectors. Data on block devices can be randomly accessed. Block 
  14329.    devices are designated by a drive letter (for example, C:). 
  14330.  
  14331.  blocking mode  -A condition set by an application that determines when its 
  14332.    threads might block. For example, an application might set the Pipemode 
  14333.    parameter for the DosCreateNPipe function so that its threads perform I/O 
  14334.    operations to the named pipe block when no data is available. 
  14335.  
  14336.  border  -A visual indication (for example, a separator line or a background 
  14337.    color) of the boundaries of a window. 
  14338.  
  14339.  boundary determination  -An operation used to compute the size of the smallest 
  14340.    rectangle that encloses a graphics object on the screen. 
  14341.  
  14342.  breakpoint  -(1) A point in a computer program where execution may be halted. 
  14343.    A breakpoint is usually at the beginning of an instruction where halts, 
  14344.    caused by external intervention, are convenient for resuming 
  14345.    execution. (T)  (2) A place in a program, specified by a command or a 
  14346.    condition, where the system halts execution and gives control to the 
  14347.    workstation user or to a specified program. 
  14348.  
  14349.  broken pipe  -When all of the handles that access one end of a pipe have been 
  14350.    closed. 
  14351.  
  14352.  bucket  -One or more fields in which the result of an operation is kept. 
  14353.  
  14354.  buffer  -(1) A portion of storage used to hold input or output data 
  14355.    temporarily. (2) To allocate and schedule the use of buffers. (A)
  14356.  
  14357.  button  -A mechanism used to request or initiate an action. See also barrel 
  14358.    buttons, bezel buttons, mouse button, push button, and radio button. 
  14359.  
  14360.  byte pipe  -Pipes that handle data as byte streams. All unnamed pipes are byte 
  14361.    pipes. Named pipes can be byte pipes or message pipes. See byte stream. 
  14362.  
  14363.  byte stream  -Data that consists of an unbroken stream of bytes. 
  14364.  
  14365.  
  14366. ΓòÉΓòÉΓòÉ <hidden> Glossary - C ΓòÉΓòÉΓòÉ
  14367.  
  14368.  cache  -A high-speed buffer storage that contains frequently accessed 
  14369.    instructions and data; it is used to reduce access time. 
  14370.  
  14371.  cached micro presentation space  -A presentation space from a 
  14372.    Presentation-Manager-owned store of micro presentation spaces. It can be 
  14373.    used for drawing to a window only, and must be returned to the store when 
  14374.    the task is complete. 
  14375.  
  14376.  CAD  -Computer-Aided Design. 
  14377.  
  14378.  call  -(1) The action of bringing a computer program, a routine, or a 
  14379.    subroutine into effect, usually by specifying the entry conditions and 
  14380.    jumping to an entry point. (I)  (A)  (2) To transfer control to a procedure, 
  14381.    program, routine, or subroutine. 
  14382.  
  14383.  calling sequence  -A sequence of instructions together with any associated 
  14384.    data necessary to execute a call. (T)
  14385.  
  14386.  Cancel  -An action that removes the current window or menu without processing 
  14387.    it, and returns the previous window. 
  14388.  
  14389.  cascaded menu  -In the OS/2 operating system, a menu that appears when the 
  14390.    arrow to the right of a cascading choice is selected. It contains a set of 
  14391.    choices that are related to the cascading choice. Cascaded menus are used to 
  14392.    reduce the length of a menu. See also cascading choice. 
  14393.  
  14394.  cascading choice  -In SAA Common User Access architecture, a choice in a menu 
  14395.    that, when selected, produces a cascaded menu containing other choices.  An 
  14396.    arrow () appears to the right of the cascading choice. 
  14397.  
  14398.  CASE statement  -In PM programming, provides the body of a window procedure. 
  14399.    There is usually one CASE statement for each message type supported by an 
  14400.    application. 
  14401.  
  14402.  CGA  -Color graphics adapter. 
  14403.  
  14404.  chained list  -A list in which the data elements may be dispersed but in which 
  14405.    each data element contains information for locating the 
  14406.    next. (T)Synonymous with linked list. 
  14407.  
  14408.  character  -A letter, digit, or other symbol. 
  14409.  
  14410.  character box  -In computer graphics, the boundary that defines, in world 
  14411.    coordinates, the horizontal and vertical space occupied by a single 
  14412.    character from a character set. See also character mode. Contrast with 
  14413.    character cell. 
  14414.  
  14415.  character cell  -The physical, rectangular space in which any single character 
  14416.    is displayed on a screen or printer device. Position is addressed by row and 
  14417.    column coordinates. Contrast with character box. 
  14418.  
  14419.  character code  -The means of addressing a character in a character set, 
  14420.    sometimes called code point. 
  14421.  
  14422.  character device  -A device that performs I/O operations on one character at a 
  14423.    time. Because character devices view data as a stream of bytes, 
  14424.    character-device data cannot be randomly accessed. Character devices include 
  14425.    the keyboard, mouse, and printer, and are referred to by name. 
  14426.  
  14427.  character mode  -A mode that, in conjunction with the font type, determines 
  14428.    the extent to which graphics characters are affected by the character box, 
  14429.    shear, and angle attributes. 
  14430.  
  14431.  character set  -(1) An ordered set of unique representations called 
  14432.    characters; for example, the 26 letters of English alphabet, Boolean 0 and 
  14433.    1, the set of symbols in the Morse code, and the 128 ASCII 
  14434.    characters. (A)  (2) All the valid characters for a programming language or 
  14435.    for a computer system. (3) A group of characters used for a specific reason; 
  14436.    for example, the set of characters a printer can print. 
  14437.  
  14438.  check box  -In SAA Advanced Common User Access architecture, a square box with 
  14439.    associated text that represents a choice. When a user selects a choice, an X 
  14440.    appears in the check box to indicate that the choice is in effect. The user 
  14441.    can clear the check box by selecting the choice again. Contrast with radio 
  14442.    button. 
  14443.  
  14444.  check mark  - (1) (D of C) In SAA Advanced Common User Access architecture, a 
  14445.    symbol that shows that a choice is currently in effect. (2) The symbol that 
  14446.    is used to indicate a selected item on a pull-down menu. 
  14447.  
  14448.  child process  -In the OS/2 operating system, a process started by another 
  14449.    process, which is called the parent process. Contrast with parent process. 
  14450.  
  14451.  child window  -A window that appears within the border of its parent window 
  14452.    (either a primary window or another child window). When the parent window is 
  14453.    resized, moved, or destroyed, the child window also is resized, moved, or 
  14454.    destroyed; however, the child window can be moved or resized independently 
  14455.    from the parent window, within the boundaries of the parent window. Contrast 
  14456.    with parent window. 
  14457.  
  14458.  choice  -(1) An option that can be selected. The choice can be presented as 
  14459.    text, as a symbol (number or letter), or as an icon (a pictorial symbol). 
  14460.    (2) (D of C) In SAA Common User Access architecture, an item that a user can 
  14461.    select. 
  14462.  
  14463.  chord  -(1) To press more than one button on a pointing device while the 
  14464.    pointer is within the limits that the user has specified for the operating 
  14465.    environment. (2) (D of C) In graphics, a short line segment whose end points 
  14466.    lie on a circle. Chords are a means for producing a circular image from 
  14467.    straight lines. The higher the number of chords per circle, the smoother the 
  14468.    circular image. 
  14469.  
  14470.  class  -In object-oriented design or programming, a group of objects that 
  14471.    share a common definition and that therefore share common properties, 
  14472.    operations, and behavior. Members of the group are called instances of the 
  14473.    class. 
  14474.  
  14475.  class method  -In System Object Model, an action that can be performed on a 
  14476.    class object. Synonymous with factory method. 
  14477.  
  14478.  class object  -In System Object Model, the run-time implementation of a class. 
  14479.  
  14480.  class style  -The set of properties that apply to every window in a window 
  14481.    class. 
  14482.  
  14483.  client  -(1) A functional unit that receives shared services from a 
  14484.    server. (T)  (2) A user, as in a client process that uses a named pipe or 
  14485.    queue that is created and owned by a server process. 
  14486.  
  14487.  client area  -The part of the window, inside the border, that is below the 
  14488.    menu bar. It is the user's work space, where a user types information and 
  14489.    selects choices from selection fields.  In primary windows, it is where an 
  14490.    application programmer presents the objects that a user works on. 
  14491.  
  14492.  client program  -An application that creates and manipulates instances of 
  14493.    classes. 
  14494.  
  14495.  client window  -The window in which the application displays output and 
  14496.    receives input. This window is located inside the frame window, under the 
  14497.    window title bar and any menu bar, and within any scroll bars. 
  14498.  
  14499.  clip limits  -The area of the paper that can be reached by a printer or 
  14500.    plotter. 
  14501.  
  14502.  clipboard  -In SAA Common User Access architecture, an area of computer 
  14503.    memory, or storage, that temporarily holds data. Data in the clipboard is 
  14504.    available to other applications. 
  14505.  
  14506.  clipping  -In computer graphics, removing those parts of a display image that 
  14507.    lie outside a given boundary. (I)  (A)
  14508.  
  14509.  clipping area  -The area in which the window can paint. 
  14510.  
  14511.  clipping path  -A clipping boundary in world-coordinate space. 
  14512.  
  14513.  clock tick  -The minimum unit of time that the system tracks. If the system 
  14514.    timer currently counts at a rate of X Hz, the system tracks the time every 
  14515.    1/X of a second. Also known as time tick. 
  14516.  
  14517.  CLOCK$  -Character-device name reserved for the system clock. 
  14518.  
  14519.  code page  -An assignment of graphic characters and control-function meanings 
  14520.    to all code points. 
  14521.  
  14522.  code point  -(1) Synonym for character code. (2) (D of C) A 1-byte code 
  14523.    representing one of 256 potential characters. 
  14524.  
  14525.  code segment  -An executable section of programming code within a load module. 
  14526.  
  14527.  color dithering  -See dithering. 
  14528.  
  14529.  color graphics adapter (CGA)  -An adapter that simultaneously provides four 
  14530.    colors and is supported by all IBM Personal Computer and Personal System/2 
  14531.    models. 
  14532.  
  14533.  command  -The name and parameters associated with an action that a program can 
  14534.    perform. 
  14535.  
  14536.  command area  -An area composed of a command field prompt and a command entry 
  14537.    field. 
  14538.  
  14539.  command entry field  -An entry field in which users type commands. 
  14540.  
  14541.  command line  -On a display screen, a display line, sometimes at the bottom of 
  14542.    the screen, in which only commands can be entered. 
  14543.  
  14544.  command mode  -A state of a system or device in which the user can enter 
  14545.    commands. 
  14546.  
  14547.  command prompt  -A field prompt showing the location of the command entry 
  14548.    field in a panel. 
  14549.  
  14550.  Common Programming Interface (CPI)  -Definitions of those application 
  14551.    development languages and services that have, or are intended to have, 
  14552.    implementations on and a high degree of commonality across the SAA 
  14553.    environments. One of the three SAA architectural areas. See also Common User 
  14554.    Access architecture. 
  14555.  
  14556.  Common User Access (CUA) architecture  - Guidelines for the dialog between a 
  14557.    human and a workstation or terminal. One of the three SAA architectural 
  14558.    areas. See also Common Programming Interface. 
  14559.  
  14560.  compile  -To translate a program written in a higher-level programming 
  14561.    language into a machine language program. 
  14562.  
  14563.  composite window  -A window composed of other windows (such as a frame window, 
  14564.    frame-control windows, and a client window) that are kept together as a unit 
  14565.    and that interact with each other. 
  14566.  
  14567.  computer-aided design (CAD)  -The use of a computer to design or change a 
  14568.    product, tool, or machine, such as using a computer for drafting or 
  14569.    illustrating. 
  14570.  
  14571.  COM1, COM2, COM3  -Character-device names reserved for serial ports 1 through 
  14572.    3. 
  14573.  
  14574.  CON  -Character-device name reserved for the console keyboard and screen. 
  14575.  
  14576.  conditional cascaded menu  -A pull-down menu associated with a menu item that 
  14577.    has a cascade mini-push button beside it in an object's pop-up menu. The 
  14578.    conditional cascaded menu is displayed when the user selects the mini-push 
  14579.    button. 
  14580.  
  14581.  container  -In SAA Common User Access architecture, an object that holds other 
  14582.    objects. A folder is an example of a container object. See also folder and 
  14583.    object. 
  14584.  
  14585.  contextual help  -In SAA Common User Access Architecture, help that gives 
  14586.    specific information about the item the cursor is on. The help is contextual 
  14587.    because it provides information about a specific item as it is currently 
  14588.    being used. Contrast with extended help. 
  14589.  
  14590.  contiguous  -Touching or joining at a common edge or boundary, for example, an 
  14591.    unbroken consecutive series of storage locations. 
  14592.  
  14593.  control  -In SAA Advanced Common User Access architecture, a component of the 
  14594.    user interface that allows a user to select choices or type information; for 
  14595.    example, a check box, an entry field, a radio button. 
  14596.  
  14597.  control area  -A storage area used by a computer program to hold control information. (I)  (A)
  14598.  
  14599.  Control Panel  -In the Presentation Manager, a program used to set up user 
  14600.    preferences that act globally across the system. 
  14601.  
  14602.  Control Program  -(1) The basic functions of the operating system, including 
  14603.    DOS emulation and the support for keyboard, mouse, and video input/output. 
  14604.    (2) A computer program designed to schedule and to supervise the execution 
  14605.    of programs of a computer system. (I)  (A)
  14606.  
  14607.  control window  -A window that is used as part of a composite window to 
  14608.    perform simple input and output tasks. Radio buttons and check boxes are 
  14609.    examples. 
  14610.  
  14611.  control word  -An instruction within a document that identifies its parts or 
  14612.    indicates how to format the document. 
  14613.  
  14614.  coordinate space  -A two-dimensional set of points used to generate output on 
  14615.    a video display of printer. 
  14616.  
  14617.  Copy  -A choice that places onto the clipboard, a copy of what the user has 
  14618.    selected. See also Cut and Paste. 
  14619.  
  14620.  correlation  -The action of determining which element or object within a 
  14621.    picture is at a given position on the display. This follows a pick 
  14622.    operation. 
  14623.  
  14624.  coverpage window  -A window in which the application's help information is 
  14625.    displayed. 
  14626.  
  14627.  CPI  -Common Programming Interface. 
  14628.  
  14629.  critical extended attribute  -An extended attribute that is necessary for the 
  14630.    correct operation of the system or a particular application. 
  14631.  
  14632.  critical section  -(1) In programming languages, a part of an asynchronous 
  14633.    procedure that cannot be executed simultaneously with a certain part of 
  14634.    another asynchronous procedure. (I)
  14635.  
  14636.    Note:  Part of the other asynchronous procedure also is a critical section. 
  14637.    (2) A section of code that is not reentrant; that is, code that can be 
  14638.    executed by only one thread at a time. 
  14639.  
  14640.  CUA architecture  -Common User Access architecture. 
  14641.  
  14642.  current position  -In computer graphics, the position, in user coordinates, 
  14643.    that becomes the starting point for the next graphics routine, if that 
  14644.    routine does not explicitly specify a starting point. 
  14645.  
  14646.  cursor  -A symbol displayed on the screen and associated with an input device. 
  14647.    The cursor indicates where input from the device will be placed. Types of 
  14648.    cursors include text cursors, graphics cursors, and selection cursors. 
  14649.    Contrast with pointer and input focus. 
  14650.  
  14651.  Cut  -In SAA Common User Access architecture, a choice that removes a selected 
  14652.    object, or a part of an object, to the clipboard, usually compressing the 
  14653.    space it occupied in a window. See also Copy and Paste. 
  14654.  
  14655.  
  14656. ΓòÉΓòÉΓòÉ <hidden> Glossary - D ΓòÉΓòÉΓòÉ
  14657.  
  14658.  daisy chain  -A method of device interconnection for determining interrupt 
  14659.    priority by connecting the interrupt sources serially. 
  14660.  
  14661.  data segment  -A nonexecutable section of a program module; that is, a section 
  14662.    of a program that contains data definitions. 
  14663.  
  14664.  data structure  -The syntactic structure of symbolic expressions and their 
  14665.    storage-allocation characteristics. (T)
  14666.  
  14667.  data transfer  -The movement of data from one object to another by way of the 
  14668.    clipboard or by direct manipulation. 
  14669.  
  14670.  DBCS  -Double-byte character set. 
  14671.  
  14672.  DDE  -Dynamic data exchange. 
  14673.  
  14674.  deadlock  -(1) Unresolved contention for the use of a resource. (2) An error 
  14675.    condition in which processing cannot continue because each of two elements 
  14676.    of the process is waiting for an action by, or a response from, the other. 
  14677.    (3) An impasse that occurs when multiple processes are waiting for the 
  14678.    availability of a resource that will not become available because it is 
  14679.    being held by another process that is in a similar wait state. 
  14680.  
  14681.  debug  -To detect, diagnose, and eliminate errors in programs. (T)
  14682.  
  14683.  decipoint  -In printing, one tenth of a point.  There are 72 points in an 
  14684.    inch. 
  14685.  
  14686.  default procedure  -A function provided by the Presentation Manager Interface 
  14687.    that may be used to process standard messages from dialogs or windows. 
  14688.  
  14689.  default value  -A value assumed when no value has been specified. Synonymous 
  14690.    with assumed value. For example, in the graphics programming interface, the 
  14691.    default line-type is `solid'. 
  14692.  
  14693.  definition list  -A type of list that pairs a term and its description. 
  14694.  
  14695.  delta  -An application-defined threshold, or number of container items, from 
  14696.    either end of the list. 
  14697.  
  14698.  descendant  -See child process. 
  14699.  
  14700.  descriptive text  -Text used in addition to a field prompt to give more 
  14701.    information about a field. 
  14702.  
  14703.  Deselect all  -A choice that cancels the selection of all of the objects that 
  14704.    have been selected in that window. 
  14705.  
  14706.  Desktop Manager  -In the Presentation Manager, a window that displays a list 
  14707.    of groups of programs, each of which can be started or stopped. 
  14708.  
  14709.  desktop window  -The window, corresponding to the physical device, against 
  14710.    which all other types of windows are established. 
  14711.  
  14712.  detached process  -A background process that runs independent of the parent 
  14713.    process. 
  14714.  
  14715.  detent  -A point on a slider that represents an exact value to which a user 
  14716.    can move the slider arm. 
  14717.  
  14718.  device context  -A logical description of a data destination such as memory, 
  14719.    metafile, display, printer, or plotter. See also direct device context, 
  14720.    information device context, memory device context, metafile device context, 
  14721.    queued device context, and screen device context. 
  14722.  
  14723.  device driver  -A file that contains the code needed to attach and use a 
  14724.    device such as a display, printer, or plotter. 
  14725.  
  14726.  device space  -(1) Coordinate space in which graphics are assembled after all 
  14727.    GPI transformations have been applied. Device space is defined in 
  14728.    device-specific units. (2) (D of C) In computer graphics, a space defined by 
  14729.    the complete set of addressable points of a display device. (A)
  14730.  
  14731.  dialog  -The interchange of information between a computer and its user 
  14732.    through a sequence of requests by the user and the presentation of responses 
  14733.    by the computer. 
  14734.  
  14735.  dialog box  -In SAA Advanced Common User Access architecture, a movable 
  14736.    window, fixed in size, containing controls that a user uses to provide 
  14737.    information required by an application so that it can continue to process a 
  14738.    user request. See also message box, primary window, secondary window. Also 
  14739.    known as a pop-up window. 
  14740.  
  14741.  Dialog Box Editor  -A WYSIWYG editor that creates dialog boxes for 
  14742.    communicating with the application user. 
  14743.  
  14744.  dialog item  -A component (for example, a menu or a button) of a dialog box. 
  14745.    Dialog items are also used when creating dialog templates. 
  14746.  
  14747.  dialog procedure  -A dialog window that is controlled by a window procedure. 
  14748.    It is responsible for responding to all messages sent to the dialog window. 
  14749.  
  14750.  dialog tag language  -A markup language used by the DTL compiler to create 
  14751.    dialog objects. 
  14752.  
  14753.  dialog template  -The definition of a dialog box, which contains details of 
  14754.    its position, appearance, and window ID, and the window ID of each of its 
  14755.    child windows. 
  14756.  
  14757.  direct device context  -A logical description of a data destination that is a 
  14758.    device other than the screen (for example, a printer or plotter), and where 
  14759.    the output is not to go through the spooler. Its purpose is to satisfy 
  14760.    queries. See also device context. 
  14761.  
  14762.  direct manipulation  -The user's ability to interact with an object by using 
  14763.    the mouse, typically by dragging an object around on the Desktop and 
  14764.    dropping it on other objects. 
  14765.  
  14766.  direct memory access (DMA)  -A technique for moving data directly between main 
  14767.    storage and peripheral equipment without requiring processing of the data by 
  14768.    the processing unit.(T)
  14769.  
  14770.  directory  -A type of file containing the names and controlling information 
  14771.    for other files or other directories. 
  14772.  
  14773.  display point  -Synonym for pel. 
  14774.  
  14775.  dithering  -(1) The process used in color displays whereby every other pel is 
  14776.    set to one color, and the intermediate pels are set to another. Together 
  14777.    they produce the effect of a third color at normal viewing distances. This 
  14778.    process can only be used on solid areas of color; it does not work, for 
  14779.    example, on narrow lines. (2) (D of C ) In computer graphics, a technique of 
  14780.    interleaving dark and light pixels so that the resulting image looks 
  14781.    smoothly shaded when viewed from a distance. 
  14782.  
  14783.  DMA  -Direct memory access. 
  14784.  
  14785.  DOS Protect Mode Interface (DPMI)  -An interface between protect mode and real 
  14786.    mode programs. 
  14787.  
  14788.  double-byte character set (DBCS)  -A set of characters in which each character 
  14789.    is represented by two bytes.  Languages such as Japanese, Chinese, and 
  14790.    Korean, which contain more characters than can be represented by 256 code 
  14791.    points, require double-byte character sets. Since each character requires 
  14792.    two bytes, the entering, displaying, and printing of DBCS characters 
  14793.    requires hardware and software that can support DBCS. 
  14794.  
  14795.  doubleword  -A contiguous sequence of bits or characters that comprises two 
  14796.    computer words and is capable of being addressed as a unit. (A)
  14797.  
  14798.  DPMI  -DOS Protect Mode Interface. 
  14799.  
  14800.  drag  -In SAA Common User Access, to use a pointing device to move an object; 
  14801.    for example, clicking on a window border, and dragging it to make the window 
  14802.    larger. 
  14803.  
  14804.  dragging  -(1) In computer graphics, moving an object on the display screen as 
  14805.    if it were attached to the pointer. (2) (D of C) In computer graphics, 
  14806.    moving one or more segments on a display surface by translating. (I)  (A)
  14807.  
  14808.  drawing chain  -See segment chain. 
  14809.  
  14810.  drop  -To fix the position of an object that is being dragged, by releasing 
  14811.    the select button of the pointing device. 
  14812.  
  14813.  drop  -To fix the position of an object that is being dragged, by releasing 
  14814.    the select button of the pointing device. See also drag. 
  14815.  
  14816.  DTL  -Dialog tag language. 
  14817.  
  14818.  dual-boot function  -A feature of the OS/2 operating system that allows the 
  14819.    user to start DOS from within the operating system, or an OS/2 session from 
  14820.    within DOS. 
  14821.  
  14822.  duplex  -Pertaining to communication in which data can be sent and received at 
  14823.    the same time. Synonymous with full duplex. 
  14824.  
  14825.  dynamic data exchange (DDE)  -A message protocol used to communicate between 
  14826.    applications that share data. The protocol uses shared memory as the means 
  14827.    of exchanging data between applications. 
  14828.  
  14829.  dynamic data formatting  -A formatting procedure that enables you to 
  14830.    incorporate text, bit maps or metafiles in an IPF window at execution time. 
  14831.  
  14832.  dynamic link library  -A collection of executable programming code and data 
  14833.    that is bound to an application at load time or run time, rather than during 
  14834.    linking. The programming code and data in a dynamic link library can be 
  14835.    shared by several applications simultaneously. 
  14836.  
  14837.  dynamic linking  -The process of resolving external references in a program 
  14838.    module at load time or run time rather than during linking. 
  14839.  
  14840.  dynamic segments  -Graphics segments drawn in exclusive-OR mix mode so that 
  14841.    they can be moved from one screen position to another without affecting the 
  14842.    rest of the displayed picture. 
  14843.  
  14844.  dynamic storage  -(1) A device that stores data in a manner that permits the 
  14845.    data to move or vary with time such that the specified data is not always 
  14846.    available for recovery. (A)  (2) A storage in which the cells require 
  14847.    repetitive application of control signals in order to retain stored data. 
  14848.    Such repetitive application of the control signals is called a refresh 
  14849.    operation. A dynamic storage may use static addressing or sensing 
  14850.    circuits. (A)  (3) See also static storage. 
  14851.  
  14852.  dynamic time slicing  -Varies the size of the time slice depending on system 
  14853.    load and paging activity. 
  14854.  
  14855.  dynamic-link module  -A module that is linked at load time or run time. 
  14856.  
  14857.  
  14858. ΓòÉΓòÉΓòÉ <hidden> Glossary - E ΓòÉΓòÉΓòÉ
  14859.  
  14860.  EBCDIC  -Extended binary-coded decimal interchange code. A coded character set 
  14861.    consisting of 8-bit coded characters (9 bits including parity check), used 
  14862.    for information interchange among data processing systems, data 
  14863.    communications systems, and associated equipment. 
  14864.  
  14865.  edge-triggered  -Pertaining to an event semaphore that is posted then reset 
  14866.    before a waiting thread gets a chance to run. The semaphore is considered to 
  14867.    be posted for the rest of that thread's waiting period; the thread does not 
  14868.    have to wait for the semaphore to be posted again. 
  14869.  
  14870.  EGA  -Extended graphics adapter. 
  14871.  
  14872.  element  -An entry in a graphics segment that comprises one or more graphics 
  14873.    orders and that is addressed by the element pointer. 
  14874.  
  14875.  EMS  -Expanded Memory Specification. 
  14876.  
  14877.  encapsulation  -Hiding an object's implementation, that is, its private, 
  14878.    internal data and methods. Private variables and methods are accessible only 
  14879.    to the object that contains them. 
  14880.  
  14881.  entry field  -In SAA Common User Access architecture, an area where a user 
  14882.    types information. Its boundaries are usually indicated. See also selection 
  14883.    field. 
  14884.  
  14885.  entry panel  -A defined panel type containing one or more entry fields and 
  14886.    protected information such as headings, prompts, and explanatory text. 
  14887.  
  14888.  entry-field control  -The component of a user interface that provides the 
  14889.    means by which the application receives data entered by the user in an entry 
  14890.    field. When it has the input focus, the entry field displays a flashing 
  14891.    pointer at the position where the next typed character will go. 
  14892.  
  14893.  environment segment  -The list of environment variables and their values for a 
  14894.    process. 
  14895.  
  14896.  environment strings  -ASCII text strings that define the value of environment 
  14897.    variables. 
  14898.  
  14899.  environment variables  -Variables that describe the execution environment of a 
  14900.    process. These variables are named by the operating system or by the 
  14901.    application. Environment variables named by the operating system are PATH, 
  14902.    DPATH, INCLUDE, INIT, LIB, PROMPT, and TEMP. The values of environment 
  14903.    variables are defined by the user in the CONFIG.SYS file, or by using the 
  14904.    SET command at the OS/2 command prompt. 
  14905.  
  14906.  error message  -An indication that an error has been detected. (A)
  14907.  
  14908.  event semaphore  -A semaphore that enables a thread to signal a waiting thread 
  14909.    or threads that an event has occurred or that a task has been completed. The 
  14910.    waiting threads can then perform an action that is dependent on the 
  14911.    completion of the signaled event. 
  14912.  
  14913.  exception  -An abnormal condition such as an I/O error encountered in 
  14914.    processing a data set or a file. 
  14915.  
  14916.  exclusive system semaphore  -A system semaphore that can be modified only by 
  14917.    threads within the same process. 
  14918.  
  14919.  executable file  -(1) A file that contains programs or commands that perform 
  14920.    operations or actions to be taken. (2) A collection of related data records 
  14921.    that execute programs. 
  14922.  
  14923.  exit  -To execute an instruction within a portion of a computer program in 
  14924.    order to terminate the execution of that portion. Such portions of computer 
  14925.    programs include loops, subroutines, modules, and so on. (T)  Repeated exit 
  14926.    requests return the user to the point from which all functions provided to 
  14927.    the system are accessible. Contrast with cancel. 
  14928.  
  14929.  expanded memory specification (EMS)  -Enables DOS applications to access 
  14930.    memory above the 1MB real mode addressing limit. 
  14931.  
  14932.  extended attribute  -An additional piece of information about a file object, 
  14933.    such as its data format or category. It consists of a name and a value. A 
  14934.    file object may have more than one extended attribute associated with it. 
  14935.  
  14936.  extended help  -In SAA Common User Access architecture, a help action that 
  14937.    provides information about the contents of the application window from which 
  14938.    a user requested help. Contrast with contextual help. 
  14939.  
  14940.  extended-choice selection  -A mode that allows the user to select more than 
  14941.    one item from a window. Not all windows allow extended choice selection. 
  14942.    Contrast with multiple-choice selection. 
  14943.  
  14944.  extent  -Continuous space on a disk or diskette that is occupied by or 
  14945.    reserved for a particular data set, data space, or file. 
  14946.  
  14947.  external link  -In Information Presentation Facility, a link that connects 
  14948.    external online document files. 
  14949.  
  14950.  
  14951. ΓòÉΓòÉΓòÉ <hidden> Glossary - F ΓòÉΓòÉΓòÉ
  14952.  
  14953.  family-mode application  -An application program that can run in the OS/2 
  14954.    environment and in the DOS environment; however, it cannot take advantage of 
  14955.    many of the OS/2-mode facilities, such as multitasking, interprocess 
  14956.    communication, and dynamic linking. 
  14957.  
  14958.  FAT  -File allocation table. 
  14959.  
  14960.  FEA  -Full extended attribute. 
  14961.  
  14962.  field-level help  -Information specific to the field on which the cursor is 
  14963.    positioned. This help function is "contextual" because it provides 
  14964.    information about a specific item as it is currently used; the information 
  14965.    is dependent upon the context within the work session. 
  14966.  
  14967.  FIFO  -First-in-first-out. (A)
  14968.  
  14969.  file  -A named set of records stored or processed as a unit. (T)
  14970.  
  14971.  file allocation table (FAT)  -In IBM personal computers, a table used by the 
  14972.    operating system to allocate space on a disk for a file, and to locate and 
  14973.    chain together parts of the file that may be scattered on different sectors 
  14974.    so that the file can be used in a random or sequential manner. 
  14975.  
  14976.  file attribute  -Any of the attributes that describe the characteristics of a 
  14977.    file. 
  14978.  
  14979.  File Manager  -In the Presentation Manager, a program that displays 
  14980.    directories and files, and allows various actions on them. 
  14981.  
  14982.  file specification  -The full identifier for a file, which includes its drive 
  14983.    designation, path, file name, and extension. 
  14984.  
  14985.  file system  -The combination of software and hardware that supports storing 
  14986.    information on a storage device. 
  14987.  
  14988.  file system driver (FSD)  -A program that manages file I\O and controls the 
  14989.    format of information on the storage media. 
  14990.  
  14991.  fillet  -A curve that is tangential to the end points of two adjoining lines. 
  14992.    See also polyfillet. 
  14993.  
  14994.  filtering  -An application process that changes the order of data in a queue. 
  14995.  
  14996.  first-in-first-out (FIFO)  -A queuing technique in which the next item to be 
  14997.    retrieved is the item that has been in the queue for the longest time. (A)
  14998.  
  14999.  flag  -(1) An indicator or parameter that shows the setting of a switch. (2) A 
  15000.    character that signals the occurrence of some condition, such as the end of 
  15001.    a word. (A)  (3) (D of C) A characteristic of a file or directory that 
  15002.    enables it to be used in certain ways. See also archive flag, hidden flag, 
  15003.    and read-only flag. 
  15004.  
  15005.  focus  -See input focus. 
  15006.  
  15007.  folder  -A container used to organize objects. 
  15008.  
  15009.  font  -A particular size and style of typeface that contains definitions of 
  15010.    character sets, marker sets, and pattern sets. 
  15011.  
  15012.  Font Editor  -A utility program provided with the IBM Developers Toolkit that 
  15013.    enables the design and creation of new fonts. 
  15014.  
  15015.  foreground program  -(1) The program with which the user is currently 
  15016.    interacting. Also known as interactive program. Contrast with background 
  15017.    program. (2) (D of C) In multiprogramming,  a high-priority program. 
  15018.  
  15019.  frame  -The part of a window that can contain several different visual 
  15020.    elements specified by the application, but drawn and controlled by the 
  15021.    Presentation Manager. The frame encloses the client area. 
  15022.  
  15023.  frame styles  -Standard window layouts provided by the Presentation Manager. 
  15024.  
  15025.  FSD  -File system driver. 
  15026.  
  15027.  full-duplex  -Synonym for duplex. 
  15028.  
  15029.  full-screen application  -An application that has complete control of the 
  15030.    screen. 
  15031.  
  15032.  function  -(1) In a programming language, a block, with or without formal 
  15033.    parameters, whose execution is invoked by means of a call. (2) A set of 
  15034.    related control statements that cause one or more programs to be performed. 
  15035.  
  15036.  function key  -A key that causes a specified sequence of operations to be 
  15037.    performed when it is pressed, for example, F1 and Alt-K. 
  15038.  
  15039.  function key area  -The area at the bottom of a window that contains function 
  15040.    key assignments such as F1=Help. 
  15041.  
  15042.  
  15043. ΓòÉΓòÉΓòÉ <hidden> Glossary - G ΓòÉΓòÉΓòÉ
  15044.  
  15045.  GDT  -Global Descriptor Table. 
  15046.  
  15047.  general protection fault  -An exception condition that occurs when a process 
  15048.    attempts to use storage or a module that has some level of protection 
  15049.    assigned to it, such as I/O privilege level. See also IOPL code segment. 
  15050.  
  15051.  Global Descriptor Table (GDT)  -A table that defines code and data segments 
  15052.    available to all tasks in an application. 
  15053.  
  15054.  global dynamic-link module  -A dynamic-link module that can be shared by all 
  15055.    processes in the system that refer to the module name. 
  15056.  
  15057.  global file-name character  -Either a question mark (?) or an asterisk (*) 
  15058.    used as a variable in a file name or file name extension when referring to a 
  15059.    particular file or group of files. 
  15060.  
  15061.  glyph  -A graphic symbol whose appearance conveys information. 
  15062.  
  15063.  GPI  -Graphics programming interface. 
  15064.  
  15065.  graphic primitive  -In computer graphics, a basic element, such as an arc or a 
  15066.    line, that is not made up of smaller parts and that is used to create 
  15067.    diagrams and pictures. See also graphics segment. 
  15068.  
  15069.  graphics  -(1) A picture defined in terms of graphic primitives and graphics 
  15070.    attributes. (2) (D of C) The making of charts and pictures. (3) Pertaining 
  15071.    to charts, tables, and their creation. (4) See computer graphics, coordinate 
  15072.    graphics, fixed-image graphics, interactive graphics, passive graphics, 
  15073.    raster graphics. 
  15074.  
  15075.  graphics attributes  -Attributes that apply to graphic primitives. Examples 
  15076.    are color, line type, and shading-pattern definition. See also segment 
  15077.    attributes. 
  15078.  
  15079.  graphics field  -The clipping boundary that defines the visible part of the 
  15080.    presentation-page contents. 
  15081.  
  15082.  graphics mode  -One of several states of a display. The mode determines the 
  15083.    resolution and color content of the screen. 
  15084.  
  15085.  graphics model space  -The conceptual coordinate space in which a picture is 
  15086.    constructed after any model transforms have been applied. Also known as 
  15087.    model space. 
  15088.  
  15089.  Graphics programming interface  -The formally defined programming language 
  15090.    that is between an IBM graphics program and the user of the program. 
  15091.  
  15092.  graphics segment  -A sequence of related graphic primitives and graphics 
  15093.    attributes. See also graphic primitive. 
  15094.  
  15095.  graying  -The indication that a choice on a pull-down is unavailable. 
  15096.  
  15097.  group  -A collection of logically connected controls. For example, the buttons 
  15098.    controlling paper size for a printer could be called a group. See also 
  15099.    program group. 
  15100.  
  15101.  
  15102. ΓòÉΓòÉΓòÉ <hidden> Glossary - H ΓòÉΓòÉΓòÉ
  15103.  
  15104.  handle  -(1) An identifier that represents an object, such as a device or 
  15105.    window, to the Presentation Interface. (2) (D of C) In the Advanced DOS and 
  15106.    OS/2 operating systems, a binary value created by the system that identifies 
  15107.    a drive, directory, and file so that the file can be found and opened. 
  15108.  
  15109.  hard error  -An error condition on a network that requires either that the 
  15110.    system be reconfigured or that the source of the error be removed before the 
  15111.    system can resume reliable operation. 
  15112.  
  15113.  header  -(1) System-defined control information that precedes user data. (2) 
  15114.    The portion of a message that contains control information for the message, 
  15115.    such as one or more destination fields, name of the originating station, 
  15116.    input sequence number, character string indicating the type of message, and 
  15117.    priority level for the message. 
  15118.  
  15119.  heading tags  -A document element that enables information to be displayed in 
  15120.    windows, and that controls entries in the contents window controls placement 
  15121.    of push buttons in a window, and defines the shape and size of windows. 
  15122.  
  15123.  heap  -An area of free storage available for dynamic allocation by an 
  15124.    application. Its size varies according to the storage requirements of the 
  15125.    application. 
  15126.  
  15127.  help function  -(1) A function that provides information about a specific 
  15128.    field, an application panel, or information about the help facility. (2) (D 
  15129.    of C) One or more display images that describe how to use application 
  15130.    software or how to do a system operation. 
  15131.  
  15132.  Help index  -In SAA Common User Access architecture, a help action that 
  15133.    provides an index of the help information available for an application. 
  15134.  
  15135.  help panel  -A panel with information to assist users that is displayed in 
  15136.    response to a help request from the user. 
  15137.  
  15138.  help window  -A Common-User-Access-defined secondary window that displays 
  15139.    information when the user requests help. 
  15140.  
  15141.  hidden file  -An operating system file that is not displayed by a directory 
  15142.    listing. 
  15143.  
  15144.  hide button  -In the OS/2 operating system, a small, square button located in 
  15145.    the right-hand corner of the title bar of a window that, when selected, 
  15146.    removes from the screen all the windows associated with that window. 
  15147.    Contrast with maximize button. See also restore button. 
  15148.  
  15149.  hierarchical inheritance  -The relationship between parent and child classes. 
  15150.    An object that is lower in the inheritance hierarchy than another object, 
  15151.    inherits all the characteristics and behaviors of the objects above it in 
  15152.    the hierarchy. 
  15153.  
  15154.  hierarchy  -A tree of segments beginning with the root segment and proceeding 
  15155.    downward to dependent segment types. 
  15156.  
  15157.  high-performance file system (HPFS)  -In the OS/2 operating system, an 
  15158.    installable file system that uses high-speed buffer storage, known as a 
  15159.    cache, to provide fast access to large disk volumes. The file system also 
  15160.    supports the coexistence of multiple, active file systems on a single 
  15161.    personal computer, with the capability of multiple and different storage 
  15162.    devices. File names used with the HPFS can have as many as 254 characters. 
  15163.  
  15164.  hit testing  -The means of identifying which window is associated with which 
  15165.    input device event. 
  15166.  
  15167.  hook  -A point in a system-defined function where an application can supply 
  15168.    additional code that the system processes as though it were part of the 
  15169.    function. 
  15170.  
  15171.  hook chain  -A sequence of hook procedures that are "chained" together so that 
  15172.    each event is passed, in turn, to each procedure in the chain. 
  15173.  
  15174.  hot spot  -The part of the pointer that must touch an object before it can be 
  15175.    selected. This is usually the tip of the pointer. Contrast with action 
  15176.    point. 
  15177.  
  15178.  HPFS  -high-performance file system. 
  15179.  
  15180.  hypergraphic link  -A connection between one piece of information and another 
  15181.    through the use of graphics. 
  15182.  
  15183.  hypertext  -A way of presenting information online with connections between 
  15184.    one piece of information and another, called hypertext links. See also 
  15185.    hypertext link. 
  15186.  
  15187.  hypertext link  -A connection between one piece of information and another. 
  15188.  
  15189.  
  15190. ΓòÉΓòÉΓòÉ <hidden> Glossary - I ΓòÉΓòÉΓòÉ
  15191.  
  15192.  I/O operation  -An input operation to, or output operation from a device 
  15193.    attached to a computer. 
  15194.  
  15195.  I-beam pointer  -A pointer that indicates an area, such as an entry field in 
  15196.    which text can be edited. 
  15197.  
  15198.  icon  -In SAA Advanced Common User Access architecture, a graphical 
  15199.    representation of an object, consisting of an image, image background, and a 
  15200.    label. Icons can represent items (such as a document file) that the user 
  15201.    wants to work on, and actions that the user wants to perform. In the 
  15202.    Presentation Manager, icons are used for data objects, system actions, and 
  15203.    minimized programs. 
  15204.  
  15205.  icon area  -In the Presentation Manager, the area at the bottom of the screen 
  15206.    that is normally used to display the icons for minimized programs. 
  15207.  
  15208.  Icon Editor  -The Presentation Manager-provided tool for creating icons. 
  15209.  
  15210.  IDL  -Interface Definition Language. 
  15211.  
  15212.  image font  -A set of symbols, each of which is described in a rectangular 
  15213.    array of pels. Some of the pels in the array are set to produce the image of 
  15214.    one of the symbols. Contrast with outline font. 
  15215.  
  15216.  implied metaclass  -Subclassing the metaclass of a parent class without a 
  15217.    separate CSC for the resultant metaclass. 
  15218.  
  15219.  indirect manipulation  -Interaction with an object through choices and 
  15220.    controls. 
  15221.  
  15222.  information device context  -A logical description of a data destination other 
  15223.    than the screen (for example, a printer or plotter), but where no output 
  15224.    will occur. Its purpose is to satisfy queries. See also device context. 
  15225.  
  15226.  information panel  -A defined panel type characterized by a body containing 
  15227.    only protected information. 
  15228.  
  15229.  Information Presentation Facility (IPF)  -A facility provided by the OS/2 
  15230.    operating system, by which application developers can produce online 
  15231.    documentation and context-sensitive online help panels for their 
  15232.    applications. 
  15233.  
  15234.  inheritance  -The derivation of new (child) classes from existing (parent) 
  15235.    classes. The new class inherits all the data and methods of the parent class 
  15236.    without having to redefine them. 
  15237.  
  15238.  input focus  -(1) The area of a window where user interaction is possible 
  15239.    using an input device, such as a mouse or the keyboard. (2) The position in 
  15240.    the active window where a user's normal interaction with the keyboard will 
  15241.    appear. 
  15242.  
  15243.  input router  -An internal OS/2 process that removes messages from the system 
  15244.    queue. 
  15245.  
  15246.  input/output control  -A device-specific command that requests a function of a 
  15247.    device driver. 
  15248.  
  15249.  installable file system (IFS)  -A file system in which software is installed 
  15250.    when the operating system is started. 
  15251.  
  15252.  instance  -A single occurrence of an object class that has a particular 
  15253.    behavior. 
  15254.  
  15255.  instruction pointer  -In system/38, a pointer that provides addressability for 
  15256.    a machine interface instruction in a program. 
  15257.  
  15258.  integer atom  -An atom that represents a predefined system constant and 
  15259.    carries no storage overhead. For example, names of window classes provided 
  15260.    by Presentation Manager are expressed as integer atoms. 
  15261.  
  15262.  interactive graphics  -Graphics that can be moved or manipulated by a user at 
  15263.    a terminal. 
  15264.  
  15265.  interactive program  -(1) A program that is running (active) and is ready to 
  15266.    receive (or is receiving) input from a user. (2) A running program that can 
  15267.    receive input from the keyboard or another input device. Compare with active 
  15268.    program and contrast with noninteractive program. 
  15269.  
  15270.    Also known as a foreground program. 
  15271.  
  15272.  interchange file  -A file containing data that can be sent from one 
  15273.    Presentation Manager interface application to another. 
  15274.  
  15275.  Interface Definition Language (IDL)  -Language-neutral interface specification 
  15276.    for a SOM class. 
  15277.  
  15278.  interpreter  -A program that translates and executes each instruction of a 
  15279.    high-level programming language before it translates and executes. 
  15280.  
  15281.  interprocess communication (IPC)  -In the OS/2 operating system, the exchange 
  15282.    of information between processes or threads through semaphores, pipes, 
  15283.    queues, and shared memory. 
  15284.  
  15285.  interval timer  -(1) A timer that provides program interruptions on a 
  15286.    program-controlled basis. (2) An electronic counter that counts intervals of 
  15287.    time under program control. 
  15288.  
  15289.  IOCtl  -Input/output control. 
  15290.  
  15291.  IOPL  -Input/output privilege level. 
  15292.  
  15293.  IOPL code segment  -An IOPL executable section of programming code that 
  15294.    enables an application to directly manipulate hardware interrupts and ports 
  15295.    without replacing the device driver. See also privilege level. 
  15296.  
  15297.  IPC  -Interprocess communication. 
  15298.  
  15299.  IPF  -Information Presentation Facility. 
  15300.  
  15301.  IPF compiler  -A text compiler that interpret tags in a source file and 
  15302.    converts the information into the specified format. 
  15303.  
  15304.  IPF tag language  -A markup language that provides the instructions for 
  15305.    displaying online information. 
  15306.  
  15307.  item  -A data object that can be passed in a DDE transaction. 
  15308.  
  15309.  
  15310. ΓòÉΓòÉΓòÉ <hidden> Glossary - J ΓòÉΓòÉΓòÉ
  15311.  
  15312.  journal  -A special-purpose file that is used to record changes made in the 
  15313.    system. 
  15314.  
  15315.  
  15316. ΓòÉΓòÉΓòÉ <hidden> Glossary - K ΓòÉΓòÉΓòÉ
  15317.  
  15318.  Kanji  -A graphic character set used in Japanese ideographic alphabets. 
  15319.  
  15320.  KBD$  -Character-device name reserved for the keyboard. 
  15321.  
  15322.  kernel  -The part of an operating system that performs basic functions, such 
  15323.    as allocating hardware resources. 
  15324.  
  15325.  kerning  -The design of graphics characters so that their character boxes 
  15326.    overlap. Used to space text proportionally. 
  15327.  
  15328.  keyboard accelerator  -A keystroke that generates a command message for an 
  15329.    application. 
  15330.  
  15331.  keyboard augmentation  -A function that enables a user to press a keyboard key 
  15332.    while pressing a mouse button. 
  15333.  
  15334.  keyboard focus  -A temporary attribute of a window. The window that has a 
  15335.    keyboard focus receives all keyboard input until the focus changes to a 
  15336.    different window. 
  15337.  
  15338.  Keys help  -In SAA Common User Access architecture, a help action that 
  15339.    provides a listing of the application keys and their assigned functions. 
  15340.  
  15341.  
  15342. ΓòÉΓòÉΓòÉ <hidden> Glossary - L ΓòÉΓòÉΓòÉ
  15343.  
  15344.  label  -In a graphics segment, an identifier of one or more elements that is 
  15345.    used when editing the segment. 
  15346.  
  15347.  LAN  -local area network. 
  15348.  
  15349.  language support procedure  -A function provided by the Presentation Manager 
  15350.    Interface for applications that do not, or cannot (as in the case of COBOL 
  15351.    and FORTRAN programs), provide their own dialog or window procedures. 
  15352.  
  15353.  lazy drag  -See pickup and drop. 
  15354.  
  15355.  lazy drag set  -See pickup set. 
  15356.  
  15357.  LDT  -In the OS/2 operating system, Local Descriptor Table. 
  15358.  
  15359.  LIFO stack  -A stack from which data is retrieved in last-in, first-out order. 
  15360.  
  15361.  linear address  -A unique value that identifies the memory object. 
  15362.  
  15363.  linked list  -Synonym for chained list. 
  15364.  
  15365.  list box  -In SAA Advanced Common User Access architecture, a control that 
  15366.    contains scrollable choices from which a user can select one choice. 
  15367.  
  15368.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  15369.    selection list. 
  15370.  
  15371.  list button  -A button labeled with an underlined down-arrow that presents a 
  15372.    list of valid objects or choices that can be selected for that field. 
  15373.  
  15374.  list panel  -A defined panel type that displays a list of items from which 
  15375.    users can select one or more choices and then specify one or more actions to 
  15376.    work on those choices. 
  15377.  
  15378.  load time  -The point in time at which a program module is loaded into main 
  15379.    storage for execution. 
  15380.  
  15381.  load-on-call  -A function of a linkage editor that allows selected segments of 
  15382.    the module to be disk resident while other segments are executing. Disk 
  15383.    resident segments are loaded for execution and given control when any entry 
  15384.    point that they contain is called. 
  15385.  
  15386.  local area network (LAN)  -(1) A computer network located on a user's premises 
  15387.    within a limited geographical area. Communication within a local area 
  15388.    network is not subject to external regulations;  however, communication 
  15389.    across the LAN boundary may be subject to some form of regulation. (T)
  15390.  
  15391.    Note:  A LAN does not use store and forward techniques. (2) A network 
  15392.    inwhich a set of devices are connected to one another for communication and 
  15393.    that can be connected to a larger network. 
  15394.  
  15395.  Local Descriptor Table (LDT)  -Defines code and data segments specific to a 
  15396.    single task. 
  15397.  
  15398.  lock  -A serialization mechanism by means of which a resource is restricted 
  15399.    for use by the holder of the lock. 
  15400.  
  15401.  logical storage device  -A device that the user can map to a physical (actual) 
  15402.    device. 
  15403.  
  15404.  LPT1, LPT2, LPT3  -Character-device names reserved for parallel printers 1 
  15405.    through 3. 
  15406.  
  15407.  
  15408. ΓòÉΓòÉΓòÉ <hidden> Glossary - M ΓòÉΓòÉΓòÉ
  15409.  
  15410.  main window  -The window that is positioned relative to the desktop window. 
  15411.  
  15412.  manipulation button  -The button on a pointing device a user presses to 
  15413.    directly manipulate an object. 
  15414.  
  15415.  map  -(1) A set of values having a defined correspondence with the quantities 
  15416.    or values of another set. (I)  (A)  (2) To establish a set of values having 
  15417.    a defined correspondence with the quantities or values of another set. (I)
  15418.  
  15419.  marker box  -In computer graphics, the boundary that defines, in world 
  15420.    coordinates, the horizontal and vertical space occupied by a single marker 
  15421.    from a marker set. 
  15422.  
  15423.  marker symbol  -A symbol centered on a point. Graphs and charts can use marker 
  15424.    symbols to indicate the plotted points. 
  15425.  
  15426.  marquee box  -The rectangle that appears during a selection technique in which 
  15427.    a user selects objects by drawing a box around them with a pointing device. 
  15428.  
  15429.  Master Help Index  -In the OS/2 operating system, an alphabetic list of help 
  15430.    topics related to using the operating system. 
  15431.  
  15432.  maximize  -To enlarge a window to its largest possible size. 
  15433.  
  15434.  media window  -The part of the physical device (display, printer, or plotter) 
  15435.    on which a picture is presented. 
  15436.  
  15437.  memory block  -Part memory within a heap. 
  15438.  
  15439.  memory device context  -A logical description of a data destination that is a 
  15440.    memory bit map. See also device context. 
  15441.  
  15442.  memory management  -A feature of the operating system for allocating, sharing, 
  15443.    and freeing main storage. 
  15444.  
  15445.  memory object  -Logical unit of memory requested by an application, which 
  15446.    forms the granular unit of memory manipulation from the application 
  15447.    viewpoint. 
  15448.  
  15449.  menu  -In SAA Advanced Common User Access architecture, an extension of the 
  15450.    menu bar that displays a list of choices available for a selected choice in 
  15451.    the menu bar. After a user selects a choice in menu bar, the corresponding 
  15452.    menu appears. Additional pop-up windows can appear from menu choices. 
  15453.  
  15454.  menu bar  -In SAA Advanced Common User Access architecture, the area near the 
  15455.    top of a window, below the title bar and above the rest of the window, that 
  15456.    contains choices that provide access to other menus. 
  15457.  
  15458.  menu button  -The button on a pointing device that a user presses to view a 
  15459.    pop-up menu associated with an object. 
  15460.  
  15461.  message  -(1) In the Presentation Manager, a packet of data used for 
  15462.    communication between the Presentation Manager interface and Presentation 
  15463.    Manager applications (2) In a user interface, information not requested by 
  15464.    users but presented to users by the computer in response to a user action or 
  15465.    internal process. 
  15466.  
  15467.  message box  -(1) A dialog window predefined by the system and used as a 
  15468.    simple interface for applications, without the necessity of creating 
  15469.    dialog-template resources or dialog procedures. (2) (D of C) In SAA Advanced 
  15470.    Common User Access architecture, a type of window that shows messages to 
  15471.    users. See also dialog box, primary window, secondary window. 
  15472.  
  15473.  message filter  -The means of selecting which messages from a specific window 
  15474.    will be handled by the application. 
  15475.  
  15476.  message queue  -A sequenced collection of messages to be read by the 
  15477.    application. 
  15478.  
  15479.  message stream mode  -A method of operation in which data is treated as a 
  15480.    stream of messages.  Contrast with  byte stream. 
  15481.  
  15482.  metacharacter  -See global file-name character. 
  15483.  
  15484.  metaclass  -The conjunction of an object and its class information; that is, 
  15485.    the information pertaining to the class as a whole, rather than to a single 
  15486.    instance of the class. Each class is itself an object, which is an instance 
  15487.    of the metaclass. 
  15488.  
  15489.  metafile  -A file containing a series of attributes that set color, shape and 
  15490.    size, usually of a picture or a drawing. Using a program that can interpret 
  15491.    these attributes, a user can view the assembled image. 
  15492.  
  15493.  metafile device context  -A logical description of a data destination that is 
  15494.    a metafile, which is used for graphics interchange. See also device context. 
  15495.  
  15496.  metalanguage  -A language used to specify another language. For example, data 
  15497.    types can be described using a metalanguage so as to make the descriptions 
  15498.    independent of any one computer language. 
  15499.  
  15500.  method  -A function that defines a behavior for a class or object. 
  15501.  
  15502.  method override  -The replacement, by a child class, of the implementation of 
  15503.    a method inherited from a parent and an ancestor class. 
  15504.  
  15505.  mickey  -A unit of measurement for physical mouse motion whose value depends 
  15506.    on the mouse device driver currently loaded. 
  15507.  
  15508.  micro presentation space  -A graphics presentation space in which a restricted 
  15509.    set of the GPI function calls is available. 
  15510.  
  15511.  minimize  -To remove from the screen all windows associated with an 
  15512.    application and replace them with an icon that represents the application. 
  15513.  
  15514.  mix  -An attribute that determines how the foreground of a graphic primitive 
  15515.    is combined with the existing color of graphics output. Also known as 
  15516.    foreground mix. Contrast with background mix. 
  15517.  
  15518.  mixed character string  -A string containing a mixture of one-byte and Kanji 
  15519.    or Hangeul (two-byte) characters. 
  15520.  
  15521.  mnemonic  -(1) A method of selecting an item on a pull-down by means of typing 
  15522.    the highlighted letter in the menu item. (2) (D of C) In SAA Advanced Common 
  15523.    User Access architecture, usually a single character, within the text of a 
  15524.    choice, identified by an underscore beneath the character. If all characters 
  15525.    in a choice already serve as mnemonics for other choices, another character, 
  15526.    placed in parentheses immediately following the choice, can be used. When a 
  15527.    user types the mnemonic for a choice, the choice is either selected or the 
  15528.    cursor is moved to that choice. 
  15529.  
  15530.  modal dialog box  -In SAA Advanced Common User Access architecture, a type of 
  15531.    movable window, fixed in size, that requires a user to enter information 
  15532.    before continuing to work in the application window from which it was 
  15533.    displayed. Contrast with modeless dialog box. Also known as a serial dialog 
  15534.    box. Contrast with parallel dialog box. 
  15535.  
  15536.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  15537.    pop-up window. 
  15538.  
  15539.  model space  -See graphics model space. 
  15540.  
  15541.  modeless dialog box  -In SAA Advanced Common User Access architecture, a type 
  15542.    of movable window, fixed in size, that allows users to continue their dialog 
  15543.    with the application without entering information in the dialog box. Also 
  15544.    known as a parallel dialog box. Contrast with modal dialog box. 
  15545.  
  15546.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  15547.    pop-up window. 
  15548.  
  15549.  module definition file  -A file that describes the code segments within a load 
  15550.    module. For example, it indicates whether a code segment is loadable before 
  15551.    module execution begins (preload), or loadable only when referred to at run 
  15552.    time (load-on-call). 
  15553.  
  15554.  mouse  -In SAA usage, a device that a user moves on a flat surface to position 
  15555.    a pointer on the screen. It allows a user to select a choice o function to 
  15556.    be performed or to perform operations on the screen, such as dragging or 
  15557.    drawing lines from one position to another. 
  15558.  
  15559.  MOUSE$  -Character-device name reserved for a mouse. 
  15560.  
  15561.  multiple-choice selection  -In SAA Basic Common User Access architecture, a 
  15562.    type of field from which a user can select one or more choices or select 
  15563.    none. See also check box. Contrast with extended-choice selection. 
  15564.  
  15565.  multiple-line entry field  -In SAA Advanced Common User Access architecture, a 
  15566.    control into which a user types more than one line of information. See also 
  15567.    single-line entry field. 
  15568.  
  15569.  multitasking  -The concurrent processing of applications or parts of 
  15570.    applications. A running application and its data are protected from other 
  15571.    concurrently running applications. 
  15572.  
  15573.  mutex semaphore  -(Mutual exclusion semaphore). A semaphore that enables 
  15574.    threads to serialize their access to resources. Only the thread that 
  15575.    currently owns the mutex semaphore can gain access to the resource, thus 
  15576.    preventing one thread from interrupting operations being performed by 
  15577.    another. 
  15578.  
  15579.  muxwait semaphore  -(Multiple wait semaphore). A semaphore that enables a 
  15580.    thread to wait either for multiple event semaphores to be posted or for 
  15581.    multiple mutex semaphores to be released. Alternatively, a muxwait semaphore 
  15582.    can be set to enable a thread to wait for any ONE of the event or mutex 
  15583.    semaphores in the muxwait semaphore's list to be posted or released. 
  15584.  
  15585.  
  15586. ΓòÉΓòÉΓòÉ <hidden> Glossary - N ΓòÉΓòÉΓòÉ
  15587.  
  15588.  named pipe  -A named buffer that provides client-to-server, server-to-client, 
  15589.    or full duplex communication between unrelated processes. Contrast with 
  15590.    unnamed pipe. 
  15591.  
  15592.  national language support (NLS)  -The modification or conversion of a United 
  15593.    States English product to conform to the requirements of another language or 
  15594.    country. This can include the enabling or retrofitting of a product and the 
  15595.    translation of nomenclature, MRI, or documentation of a product. 
  15596.  
  15597.  nested list  -A list that is contained within another list. 
  15598.  
  15599.  NLS  -national language support. 
  15600.  
  15601.  non-8.3 file-name format  -A file-naming convention in which file names can 
  15602.    consist of up to 255 characters. See also 8.3 file-name format. 
  15603.  
  15604.  noncritical extended attribute  -An extended attribute that is not necessary 
  15605.    for the function of an application. 
  15606.  
  15607.  nondestructive read  -Reading that does not erase the data in the source 
  15608.    location. (T)
  15609.  
  15610.  noninteractive program  -A running program that cannot receive input from the 
  15611.    keyboard or other input device. Compare with active program, and contrast 
  15612.    with interactive program. 
  15613.  
  15614.  nonretained graphics  -Graphic primitives that are not remembered by the 
  15615.    Presentation Manager interface when they have been drawn. Contrast with 
  15616.    retained graphics. 
  15617.  
  15618.  null character (NUL)  -(1) Character-device name reserved for a nonexistent 
  15619.    (dummy) device. (2) (D of C) A control character that is used to accomplish 
  15620.    media-fill or time-fill and that may be inserted into or removed from a 
  15621.    sequence of characters without affecting the meaning of the sequence; 
  15622.    however, the control of equipment or the format may be affected by this 
  15623.    character. (I)  (A)
  15624.  
  15625.  null-terminated string  -A string of (n+1) characters where the (n+1)th 
  15626.    character is the `null' character (0x00) Also known as `zero-terminated' 
  15627.    string and 'ASCIIZ' string. 
  15628.  
  15629.  
  15630. ΓòÉΓòÉΓòÉ <hidden> Glossary - O ΓòÉΓòÉΓòÉ
  15631.  
  15632.  object  -A set of data and actions that can be performed on that data. 
  15633.  
  15634.  Object Interface Definition Language (OIDL)  -Specification language used in 
  15635.    SOM Version 1 for defining classes. Replaced by Interface Definition 
  15636.    Language (IDL). 
  15637.  
  15638.  object window  -A window that does not have a parent but which might have 
  15639.    child windows. An object window cannot be presented on a device. 
  15640.  
  15641.  OIDL  -Object Interface Definition Language. 
  15642.  
  15643.  open  -To start working with a file, directory, or other object. 
  15644.  
  15645.  ordered list  -Vertical arrangements of items, with each item in the list 
  15646.    preceded by a number or letter. 
  15647.  
  15648.  outline font  -A set of symbols, each of which is created as a series of lines 
  15649.    and curves.  Synonymous with vector font. Contrast with image font. 
  15650.  
  15651.  output area  -An area of storage reserved for output. (A)
  15652.  
  15653.  owner window  -A window into which specific events that occur in another 
  15654.    (owned) window are reported. 
  15655.  
  15656.  ownership  -The determination of how windows communicate using messages. 
  15657.  
  15658.  owning process  -The process that owns the resources that might be shared with 
  15659.    other processes. 
  15660.  
  15661.  
  15662. ΓòÉΓòÉΓòÉ <hidden> Glossary - P ΓòÉΓòÉΓòÉ
  15663.  
  15664.  page  -(1) A 4KB segment of contiguous physical memory. (2) (D of C) A defined 
  15665.    unit of space on a storage medium. 
  15666.  
  15667.  page viewport  -A boundary in device coordinates that defines the area of the 
  15668.    output device in which graphics are to be displayed. The presentation-page 
  15669.    contents are transformed automatically to the page viewport in device space. 
  15670.  
  15671.  paint  -(1) The action of drawing or redrawing the contents of a window. (2) 
  15672.    In computer graphics, to shade an area of a display image;  for example, 
  15673.    with crosshatching or color. 
  15674.  
  15675.  panel  -In SAA Basic Common User Access architecture, a particular arrangement 
  15676.    of information that is presented in a window or pop-up. If some of the 
  15677.    information is not visible, a user can scroll through the information. 
  15678.  
  15679.  panel area  -An area within a panel that contains related information. The 
  15680.    three major Common User Access-defined panel areas are the action bar, the 
  15681.    function key area, and the panel body. 
  15682.  
  15683.  panel area separator  -In SAA Basic Common User Access architecture, a solid, 
  15684.    dashed, or blank line that provides a visual distinction between two 
  15685.    adjacent areas of a panel. 
  15686.  
  15687.  panel body  -The portion of a panel not occupied by the action bar, function 
  15688.    key area, title or scroll bars. The panel body can contain protected 
  15689.    information, selection fields, and entry fields. The layout and content of 
  15690.    the panel body determine the panel type. 
  15691.  
  15692.  panel body area  -See client area. 
  15693.  
  15694.  panel definition  -A description of the contents and characteristics of a 
  15695.    panel. A panel definition is the application developer's mechanism for 
  15696.    predefining the format to be presented to users in a window. 
  15697.  
  15698.  panel ID  -In SAA Basic Common User Access architecture, a panel identifier, 
  15699.    located in the upper-left corner of a panel.  A user can choose whether to 
  15700.    display the panel ID. 
  15701.  
  15702.  panel title  -In SAA Basic Common User Access architecture, a particular 
  15703.    arrangement of information that is presented in a window or pop-up. If some 
  15704.    of the information is not visible, a user can scroll through the 
  15705.    information. 
  15706.  
  15707.  paper size  -The size of paper, defined in either standard U.S. or European 
  15708.    names (for example, A, B, A4), and measured in inches or millimeters 
  15709.    respectively. 
  15710.  
  15711.  parallel dialog box  -See modeless dialog box. 
  15712.  
  15713.  parameter list  -A list of values that provides a means of associating 
  15714.    addressability of data defined in a called program with data in the calling 
  15715.    program. It contains parameter names and the order in which they are to be 
  15716.    associated in the calling and called program. 
  15717.  
  15718.  parent process  -In the OS/2 operating system, a process that creates other 
  15719.    processes. Contrast with child process. 
  15720.  
  15721.  parent window  -In the OS/2 operating system, a window that creates a child 
  15722.    window. The child window is drawn within the parent window. If the parent 
  15723.    window is moved, resized, or destroyed, the child window also will be moved, 
  15724.    resized, or destroyed. However, the child window can be moved and resized 
  15725.    independently from the parent window, within the boundaries of the parent 
  15726.    window. Contrast with child window. 
  15727.  
  15728.  partition  -(1) A fixed-size division of storage. (2) On an IBM personal 
  15729.    computer fixed disk, one of four possible storage areas of variable size; 
  15730.    one may be accessed by DOS, and each of the others may be assigned to 
  15731.    another operating system. 
  15732.  
  15733.  Paste  -A choice in the Edit pull-down that a user selects to move the 
  15734.    contents of the clipboard into a preselected location. See also Copy and 
  15735.    Cut. 
  15736.  
  15737.  path  -The route used to locate files; the storage location of a file. A fully 
  15738.    qualified path lists the drive identifier, directory name, subdirectory name 
  15739.    (if any), and file name with the associated extension. 
  15740.  
  15741.  PDD  -Physical device driver. 
  15742.  
  15743.  peeking  -An action taken by any thread in the process that owns the queue to 
  15744.    examine queue elements without removing them. 
  15745.  
  15746.  pel  -(1) The smallest area of a display screen capable of being addressed and 
  15747.    switched between visible and invisible states. Synonym for display point, 
  15748.    pixel, and picture element. (2) (D of C) Picture element. 
  15749.  
  15750.  persistent object  -An object whose instance data and state are preserved 
  15751.    between system shutdown and system startup. 
  15752.  
  15753.  physical device driver (PDD)  -A system interface that handles hardware 
  15754.    interrupts and supports a set of input and output functions. 
  15755.  
  15756.  pick  -To select part of a displayed object using the pointer. 
  15757.  
  15758.  pickup  -To add an object or set of objects to the pickup set. 
  15759.  
  15760.  pickup and drop  -A drag operation that does not require the direct 
  15761.    manipulation button to be pressed for the duration of the drag. 
  15762.  
  15763.  pickup set  -The set of objects that have been picked up as part of a pickup 
  15764.    and drop operation. 
  15765.  
  15766.  picture chain  -See segment chain. 
  15767.  
  15768.  picture element  -(1) Synonym for pel. (2) (D of C) In computer graphics, the 
  15769.    smallest element of a display surface that can be independently assigned 
  15770.    color and intensity. (T)  . (3) The area of the finest detail that can be 
  15771.    reproduced effectively on the recording medium. 
  15772.  
  15773.  PID  -Process identification. 
  15774.  
  15775.  pipe  -(1) A named or unnamed buffer used to pass data between processes. A 
  15776.    process reads from or writes to a pipe as if the pipe were a standard-input 
  15777.    or standard-output file. See also named pipe and unnamed pipe. (2) (D of C) 
  15778.    To direct data so that the output from one process becomes the input to 
  15779.    another process. The standard output of one command can be connected to the 
  15780.    standard input of another with the pipe operator (|). 
  15781.  
  15782.  pixel  -(1) Synonym for pel. (2) (D of C) Picture element. 
  15783.  
  15784.  plotter  -An output unit that directly produces a hardcopy record of data on a 
  15785.    removable medium, in the form of a two-dimensional graphic representation. (T)
  15786.  
  15787.  PM  -Presentation Manager. 
  15788.  
  15789.  pointer  -(1) The symbol displayed on the screen that is moved by a pointing 
  15790.    device, such as a mouse. The pointer is used to point at items that users 
  15791.    can select. Contrast with cursor. (2) A data element that indicates the 
  15792.    location of another data element. (T)
  15793.  
  15794.  POINTER$  -Character-device name reserved for a pointer device (mouse screen 
  15795.    support). 
  15796.  
  15797.  pointing device  -In SAA Advanced Common User Access architecture, an 
  15798.    instrument, such as a mouse, trackball, or joystick, used to move a pointer 
  15799.    on the screen. 
  15800.  
  15801.  pointings  -Pairs of x-y coordinates produced by an operator defining 
  15802.    positions on a screen with a pointing device, such as a mouse. 
  15803.  
  15804.  polyfillet  -A curve based on a sequence of lines. The curve is tangential to 
  15805.    the end points of the first and last lines, and tangential also to the 
  15806.    midpoints of all other lines. See also fillet. 
  15807.  
  15808.  polygon  -One or more closed figures that can be drawn filled, outlined, or 
  15809.    filled and outlined. 
  15810.  
  15811.  polyline  -A sequence of adjoining lines. 
  15812.  
  15813.  polymorphism  -The ability to have different implementations of the same 
  15814.    method for two or more classes of objects. 
  15815.  
  15816.  pop  -To retrieve an item from a last-in-first-out stack of items. Contrast 
  15817.    with push. 
  15818.  
  15819.  pop-up menu  -A menu that lists the actions that a user can perform on an 
  15820.    object. The contents of the pop-up menu can vary depending on the context, 
  15821.    or state, of the object. 
  15822.  
  15823.  pop-up window  -(1) A window that appears on top of another window in a 
  15824.    dialog. Each pop-up window must be completed before returning to the 
  15825.    underlying window. (2) (D of C) In SAA Advanced Common User Access 
  15826.    architecture, a movable window, fixed in size, in which a user provides 
  15827.    information required by an application so that it can continue to process a 
  15828.    user request. 
  15829.  
  15830.  presentation drivers  -Special purpose I/O routines that handle field 
  15831.    device-independent I/O requests from the PM and its applications. 
  15832.  
  15833.  Presentation Manager (PM)  -The interface of the OS/2 operating system that 
  15834.    presents, in windows a graphics-based interface to applications and files 
  15835.    installed and running under the OS/2 operating system. 
  15836.  
  15837.  presentation page  -The coordinate space in which a picture is assembled for 
  15838.    display. 
  15839.  
  15840.  presentation space (PS)  -(1) Contains the device-independent definition of a 
  15841.    picture. (2) (D of C) The display space on a display device. 
  15842.  
  15843.  primary window  -In SAA Common User Access architecture, the window in which 
  15844.    the main interaction between the user and the application takes place. In a 
  15845.    multiprogramming environment, each application starts in its own primary 
  15846.    window. The primary window remains for the duration of the application, 
  15847.    although the panel displayed will change as the user's dialog moves forward. 
  15848.    See also secondary window. 
  15849.  
  15850.  primitive  -In computer graphics, one of several simple functions for drawing 
  15851.    on the screen, including, for example, the rectangle, line, ellipse, 
  15852.    polygon, and so on. 
  15853.  
  15854.  primitive attribute  -A specifiable characteristic of a graphic primitive. See 
  15855.    graphics attributes. 
  15856.  
  15857.  print job  -The result of sending a document or picture to be printed. 
  15858.  
  15859.  Print Manager  -In the Presentation Manager, the part of the spooler that 
  15860.    manages the spooling process. It also allows users to view print queues and 
  15861.    to manipulate print jobs. 
  15862.  
  15863.  privilege level  -A protection level imposed by the hardware architecture of 
  15864.    the IBM personal computer.  There are four privilege levels (number 0 
  15865.    through 3).  Only certain types of programs are allowed to execute at each 
  15866.    privilege level.  See also IOPL code segment. 
  15867.  
  15868.  procedure call  -In programming languages, a language construct for invoking 
  15869.    execution of a procedure. 
  15870.  
  15871.  process  -An instance of an executing application and the resources it is 
  15872.    using. 
  15873.  
  15874.  program  -A sequence of instructions that a computer can interpret and 
  15875.    execute. 
  15876.  
  15877.  program details  -Information about a program that is specified in the Program 
  15878.    Manager window and is used when the program is started. 
  15879.  
  15880.  program group  -In the Presentation Manager, several programs that can be 
  15881.    acted upon as a single entity. 
  15882.  
  15883.  program name  -The full file specification of a program. Contrast with program 
  15884.    title. 
  15885.  
  15886.  program title  -The name of a program as it is listed in the Program Manager 
  15887.    window. Contrast with program name. 
  15888.  
  15889.  prompt  -A displayed symbol or message that requests input from the user or 
  15890.    gives operational information; for example, on the display screen of an IBM 
  15891.    personal computer, the DOS A> prompt. The user must respond to the prompt in 
  15892.    order to proceed. 
  15893.  
  15894.  protect mode  -A method of program operation that limits or prevents access to 
  15895.    certain instructions or areas of storage. Contrast with real mode. 
  15896.  
  15897.  protocol  -A set of semantic and syntactic rules that determines the behavior 
  15898.    of functional units in achieving communication. (I)
  15899.  
  15900.  pseudocode  -An artificial language used to describe computer program 
  15901.    algorithms without using the syntax of any particular programming language. (A)
  15902.  
  15903.  pull-down  -(1) An action bar extension that displays a list of choices 
  15904.    available for a selected action bar choice. After users select an action bar 
  15905.    choice, the pull-down appears with the list of choices. Additional pop-up 
  15906.    windows may appear from pull-down choices to further extend the actions 
  15907.    available to users. (2) (D of C) In SAA Common User Access architecture, 
  15908.    pertaining to a choice in an action bar pull-down. 
  15909.  
  15910.  push  -To add an item to a last-in-first-out stack of items. Contrast with 
  15911.    pop. 
  15912.  
  15913.  push button  -In SAA Advanced Common User Access architecture, a rectangle 
  15914.    with text inside. Push buttons are used in windows for actions that occur 
  15915.    immediately when the push button is selected. 
  15916.  
  15917.  putback  -To remove an object or set of objects from the lazy drag set. This 
  15918.    has the effect of undoing the pickup operation for those objects 
  15919.  
  15920.  putdown  -To drop the objects in the lazy drag set on the target object. 
  15921.  
  15922.  
  15923. ΓòÉΓòÉΓòÉ <hidden> Glossary - Q ΓòÉΓòÉΓòÉ
  15924.  
  15925.  queue  -(1) A linked list of elements waiting to be processed in FIFO order. 
  15926.    For example, a queue may be a list of print jobs waiting to be printed. (2) 
  15927.    (D of C) A line or list of items waiting to be processed; for example, work 
  15928.    to be performed or messages to be displayed. 
  15929.  
  15930.  queued device context  -A logical description of a data destination (for 
  15931.    example, a printer or plotter) where the output is to go through the 
  15932.    spooler. See also device context. 
  15933.  
  15934.  
  15935. ΓòÉΓòÉΓòÉ <hidden> Glossary - R ΓòÉΓòÉΓòÉ
  15936.  
  15937.  radio button  -(1) A control window, shaped like a round button on the screen, 
  15938.    that can be in a checked or unchecked state. It is used to select a single 
  15939.    item from a list. Contrast with check box. (2) In SAA Advanced Common User 
  15940.    Access architecture, a circle with text beside it. Radio buttons are 
  15941.    combined to show a user a fixed set of choices from which only one can be 
  15942.    selected. The circle is partially filled when a choice is selected. 
  15943.  
  15944.  RAS  -Reliability, availability, and serviceability. 
  15945.  
  15946.  raster  -(1) In computer graphics, a predetermined pattern of lines that 
  15947.    provides uniform coverage of a display space. (T)  (2) The coordinate grid 
  15948.    that divides the display area of a display device.  (A)
  15949.  
  15950.  read-only file  -A file that can be read from but not written to. 
  15951.  
  15952.  real mode  -A method of program operation that does not limit or prevent 
  15953.    access to any instructions or areas of storage.  The operating system loads 
  15954.    the entire program into storage and gives the program access to all system 
  15955.    resources. Contrast with protect mode. 
  15956.  
  15957.  realize  -To cause the system to ensure, wherever possible, that the physical 
  15958.    color table of a device is set to the closest possible match in the logical 
  15959.    color table. 
  15960.  
  15961.  recursive routine  -A routine that can call itself, or be called by another 
  15962.    routine that was called by the recursive routine. 
  15963.  
  15964.  reentrant  -The attribute of a program or routine that allows the same copy of 
  15965.    the program or routine to be used concurrently by two or more tasks. 
  15966.  
  15967.  reference phrase  -(1) A word or phrase that is emphasized in a 
  15968.    device-dependent manner to inform the user that additional information for 
  15969.    the word or phrase is available. (2) (D of C) In hypertext, text that is 
  15970.    highlighted and preceded by a single-character input field used to signify 
  15971.    the existence of a hypertext link. 
  15972.  
  15973.  reference phrase help  -In SAA Common User Access architecture, highlighted 
  15974.    words or phrases within help information that a user selects to get 
  15975.    additional information. 
  15976.  
  15977.  refresh  -To update a window, with changed information, to its current status. 
  15978.  
  15979.  region  -A clipping boundary in device space. 
  15980.  
  15981.  register  -A part of internal storage having a specified storage capacity and 
  15982.    usually intended for a specific purpose. (T)
  15983.  
  15984.  remote file system  -A file-system driver that gains access to a remote system 
  15985.    without a block device driver. 
  15986.  
  15987.  resource  -The means of providing extra information used in the definition of 
  15988.    a window. A resource can contain definitions of fonts, templates, 
  15989.    accelerators, and mnemonics; the definitions are held in a resource file. 
  15990.  
  15991.  resource file  -A file containing information used in the definition of a 
  15992.    window. Definitions can be of fonts, templates, accelerators, and mnemonics. 
  15993.  
  15994.  restore  -To return a window to its original size or position following a 
  15995.    sizing or moving action. 
  15996.  
  15997.  retained graphics  -Graphic primitives that are remembered by the Presentation 
  15998.    Manager interface after they have been drawn. Contrast with nonretained 
  15999.    graphics. 
  16000.  
  16001.  return code  -(1) A value returned to a program to indicate the results of an 
  16002.    operation requested by that program. (2) A code used to influence the 
  16003.    execution of succeeding instructions.(A) 
  16004.  
  16005.  reverse video  -(1) A form of highlighting a character, field, or cursor by 
  16006.    reversing the color of the character, field, or cursor with its background; 
  16007.    for example, changing a red character on a black background to a black 
  16008.    character on a red background. (2) In SAA Basic Common User Access 
  16009.    architecture, a screen emphasis feature that interchanges the foreground and 
  16010.    background colors of an item. 
  16011.  
  16012.  REXX Language  -Restructured Extended Executor. A procedural language that 
  16013.    provides batch language functions along with structured programming 
  16014.    constructs such as loops; conditional testing and subroutines. 
  16015.  
  16016.  RGB  -(1) Color coding in which the brightness of the additive primary colors 
  16017.    of light, red, green, and blue, are specified as three distinct values of 
  16018.    white light. (2) Pertaining to a color display that accepts signals 
  16019.    representing red, green, and blue. 
  16020.  
  16021.  roman  -Relating to a type style with upright characters. 
  16022.  
  16023.  root segment  -In a hierarchical database, the highest segment in the tree 
  16024.    structure. 
  16025.  
  16026.  round-robin scheduling  -A process that allows each thread to run for a 
  16027.    specified amount of time. 
  16028.  
  16029.  run time  -(1) Any instant at which the execution of a particular computer 
  16030.    program takes place. (T)  (2) The amount of time needed for the execution of 
  16031.    a particular computer program. (T)  (3) The time during which an instruction 
  16032.    in an instruction register is decoded and performed. Synonym for execution 
  16033.    time. 
  16034.  
  16035.  
  16036. ΓòÉΓòÉΓòÉ <hidden> Glossary - S ΓòÉΓòÉΓòÉ
  16037.  
  16038.  SAA  -Systems Application Architecture. 
  16039.  
  16040.  SBCS  -Single-byte character set. 
  16041.  
  16042.  scheduler  -A computer program designed to perform functions such as 
  16043.    scheduling, initiation, and termination of jobs. 
  16044.  
  16045.  screen  -In SAA Basic Common User Access architecture, the physical surface of 
  16046.    a display device upon which information is shown to a user. 
  16047.  
  16048.  screen device context  -A logical description of a data destination that is a 
  16049.    particular window on the screen. See also device context. 
  16050.  
  16051.  SCREEN$  -Character-device name reserved for the display screen. 
  16052.  
  16053.  scroll bar  -In SAA Advanced Common User Access architecture, a part of a 
  16054.    window, associated with a scrollable area, that a user interacts with to see 
  16055.    information that is not currently allows visible. 
  16056.  
  16057.  scrollable entry field  -An entry field larger than the visible field. 
  16058.  
  16059.  scrollable selection field  -A selection field that contains more choices than 
  16060.    are visible. 
  16061.  
  16062.  scrolling  -Moving a display image vertically or horizontally in a manner such 
  16063.    that new data appears at one edge, as existing data disappears at the 
  16064.    opposite edge. 
  16065.  
  16066.  secondary window  -A window that contains information that is dependent on 
  16067.    information in a primary window and is used to supplement the interaction in 
  16068.    the primary window. 
  16069.  
  16070.  sector  -On disk or diskette storage, an addressable subdivision of a track 
  16071.    used to record one block of a program or data. 
  16072.  
  16073.  segment  -See graphics segment. 
  16074.  
  16075.  segment attributes  -Attributes that apply to the segment as an entity, as 
  16076.    opposed to the individual primitives within the segment. For example, the 
  16077.    visibility or detectability of a segment. 
  16078.  
  16079.  segment chain  -All segments in a graphics presentation space that are defined 
  16080.    with the `chained' attribute. Synonym for picture chain. 
  16081.  
  16082.  segment priority  -The order in which segments are drawn. 
  16083.  
  16084.  segment store  -An area in a normal graphics presentation space where retained 
  16085.    graphics segments are stored. 
  16086.  
  16087.  select  -To mark or choose an item. Note that select means to mark or type in 
  16088.    a choice on the screen; enter means to send all selected choices to the 
  16089.    computer for processing. 
  16090.  
  16091.  select button  -The button on a pointing device, such as a mouse, that is 
  16092.    pressed to select a menu choice.  Also known as button 1. 
  16093.  
  16094.  selection cursor  -In SAA Advanced Common User Access architecture, a visual 
  16095.    indication that a user has selected a choice. It is represented by outlining 
  16096.    the choice with a dotted box. See also text cursor. 
  16097.  
  16098.  selection field  -(1) In SAA Advanced Common User Access architecture, a set 
  16099.    of related choices. See also entry field. (2) In SAA Basic Common User 
  16100.    Access architecture, an area of a panel that cannot be scrolled and contains 
  16101.    a fixed number of choices. 
  16102.  
  16103.  semantics  -The relationships between symbols and their meanings. 
  16104.  
  16105.  semaphore  -An object used by applications for signalling purposes and for 
  16106.    controlling access to serially reusable resources. 
  16107.  
  16108.  separator  -In SAA Advanced Common User Access architecture, a line or color 
  16109.    boundary that provides a visual distinction between two adjacent areas. 
  16110.  
  16111.  serial dialog box  -See modal dialog box. 
  16112.  
  16113.  serialization  -The consecutive ordering of items. 
  16114.  
  16115.  serialize  -To ensure that one or more events occur in a specified sequence. 
  16116.  
  16117.  serially reusable resource (SRR)  -A logical resource or object that can be 
  16118.    accessed by only one task at a time. 
  16119.  
  16120.  session  -(1) A routing mechanism for user interaction via the console; a 
  16121.    complete environment that determines how an application runs and how users 
  16122.    interact with the application. OS/2 can manage more than one session at a 
  16123.    time, and more than one process can run in a session. Each session has its 
  16124.    own set of environment variables that determine where OS/2 looks for 
  16125.    dynamic-link libraries and other important files. (2) (D of C) In the OS/2 
  16126.    operating system, one instance of a started program or command prompt. Each 
  16127.    session is separate from all other sessions that might be running on the 
  16128.    computer. The operating system is responsible for coordinating the resources 
  16129.    that each session uses, such as computer memory, allocation of processor 
  16130.    time, and windows on the screen. 
  16131.  
  16132.  Settings Notebook  -A control window that is used to display the settings for 
  16133.    an object and to enable the user to change them. 
  16134.  
  16135.  shadow  -An object that refers to another object. A shadow is not a copy of 
  16136.    another object, but is another representation of the object. 
  16137.  
  16138.  shadow box  -The area on the screen that follows mouse movements and shows 
  16139.    what shape the window will take if the mouse button is released. 
  16140.  
  16141.  shared data  -Data that is used by two or more programs. 
  16142.  
  16143.  shared memory  -In the OS/2 operating system, a segment that can be used by 
  16144.    more than one program. 
  16145.  
  16146.  shear  -In computer graphics, the forward or backward slant of a graphics 
  16147.    symbol or string of such symbols relative to a line perpendicular to the 
  16148.    baseline of the symbol. 
  16149.  
  16150.  shell  -(1) A software interface between a user and the operating system of a 
  16151.    computer. Shell programs interpret commands and user interactions on devices 
  16152.    such as keyboards, pointing devices, and touch-sensitive screens, and 
  16153.    communicate them to the operating system. (2) Software that allows a kernel 
  16154.    program to run under different operating-system environments. 
  16155.  
  16156.  shutdown  -The process of ending operation of a system or a subsystem, 
  16157.    following a defined procedure. 
  16158.  
  16159.  sibling processes  -Child processes that have the same parent process. 
  16160.  
  16161.  sibling windows  -Child windows that have the same parent window. 
  16162.  
  16163.  simple list  -A list of like values; for example, a list of user names. 
  16164.    Contrast with mixed list. 
  16165.  
  16166.  single-byte character set (SBCS)  -A character set in which each character is 
  16167.    represented by a one-byte code.  Contrast with double-byte character set. 
  16168.  
  16169.  slider box  -In SAA Advanced Common User Access architecture: a part of the 
  16170.    scroll bar that shows the position and size of the visible information in a 
  16171.    window relative to the total amount of information available. Also known as 
  16172.    thumb mark. 
  16173.  
  16174.  SOM  -System Object Model. 
  16175.  
  16176.  source file  -A file that contains source statements for items such as 
  16177.    high-level language programs and data description specifications. 
  16178.  
  16179.  source statement  -A statement written in a programming language. 
  16180.  
  16181.  specific dynamic-link module  -A dynamic-link module created for the exclusive 
  16182.    use of an application. 
  16183.  
  16184.  spin button  -In SAA Advanced Common User Access architecture, a type of entry 
  16185.    field that shows a scrollable ring of choices from which a user can select a 
  16186.    choice. After the last choice is displayed, the first choice is displayed 
  16187.    again.  A user can also type a choice from the scrollable ring into the 
  16188.    entry field without interacting with the spin button. 
  16189.  
  16190.  spline  -A sequence of one or more B╨Æzier curves. 
  16191.  
  16192.  spooler  -A program that intercepts the data going to printer devices and 
  16193.    writes it to disk. The data is printed or plotted when it is complete and 
  16194.    the required device is available.  The spooler prevents output from 
  16195.    different sources from being intermixed. 
  16196.  
  16197.  stack  -A list constructed and maintained so that the next data element to be 
  16198.    retrieved is the most recently stored. This method is characterized as 
  16199.    last-in-first-out (LIFO). 
  16200.  
  16201.  standard window  -A collection of window elements that form a panel. The 
  16202.    standard window can include one or more of the following window elements: 
  16203.    sizing borders, system menu icon, title bar, maximize/minimize/restore 
  16204.    icons, action bar and pull-downs, scroll bars, and client area. 
  16205.  
  16206.  static control  -The means by which the application presents descriptive 
  16207.    information (for example, headings and descriptors) to the user. The user 
  16208.    cannot change this information. 
  16209.  
  16210.  static storage  -(1) A read/write storage unit in which data is retained in 
  16211.    the absence of control signals. (A)  Static storage may use dynamic 
  16212.    addressing or sensing circuits. (2) Storage other than dynamic storage. (A)
  16213.  
  16214.  style  -See window style. 
  16215.  
  16216.  subclass  -A class that is a child of another class. See also Inheritance. 
  16217.  
  16218.  subdirectory  -In an IBM personal computer, a file referred to in a root 
  16219.    directory that contains the names of other files stored on the diskette or 
  16220.    fixed disk. 
  16221.  
  16222.  swapping  -(1) A process that interchanges the contents of an area of real 
  16223.    storage with the contents of an area in auxiliary storage. (I)  (A)  (2) In 
  16224.    a system with virtual storage, a paging technique that writes the active 
  16225.    pages of a job to auxiliary storage and reads pages of another job from 
  16226.    auxiliary storage into real storage. (3) The process of temporarily removing 
  16227.    an active job from main storage, saving it on disk, and processing another 
  16228.    job in the area of main storage formerly occupied by the first job. 
  16229.  
  16230.  switch  -(1) In SAA usage, to move the cursor from one point of interest to 
  16231.    another;  for example, to move from one screen or window to another or from 
  16232.    a place within a displayed image to another place on the same displayed 
  16233.    image. (2) In a computer program, a conditional instruction and an indicator 
  16234.    to be interrogated by that instruction. (3) A device or programming 
  16235.    technique for making a selection, for example, a toggle, a conditional jump. 
  16236.  
  16237.  switch list  -See Task List. 
  16238.  
  16239.  symbolic identifier  -A text string that equates to an integer value in an 
  16240.    include file, which is used to identify a programming object. 
  16241.  
  16242.  symbols  -In Information Presentation Facility, a document element used to 
  16243.    produce characters that cannot be entered from the keyboard. 
  16244.  
  16245.  synchronous  -Pertaining to two or more processes that depend upon the 
  16246.    occurrence of specific events such as common timing signals. (T)  See also 
  16247.    asynchronous. 
  16248.  
  16249.  System Menu  -In the Presentation Manager, the pull-down in the top left 
  16250.    corner of a window that allows it to be moved and sized with the keyboard. 
  16251.  
  16252.  System Object Model (SOM)  -A mechanism for language-neutral, object-oriented 
  16253.    programming in the OS/2 environment. 
  16254.  
  16255.  system queue  -The master queue for all pointer device or keyboard events. 
  16256.  
  16257.  system-defined messages  -Messages that control the operations of applications 
  16258.    and provides input an other information for applications to process. 
  16259.  
  16260.  Systems Application Architecture (SAA)  -A set of IBM software interfaces, 
  16261.    conventions, and protocols that provide a framework for designing and 
  16262.    developing applications that are consistent across systems. 
  16263.  
  16264.  
  16265. ΓòÉΓòÉΓòÉ <hidden> Glossary - T ΓòÉΓòÉΓòÉ
  16266.  
  16267.  table tags  -In Information Presentation Facility, a document element that 
  16268.    formats text in an arrangement of rows and columns. 
  16269.  
  16270.  tag  -(1) One or more characters attached to a set of data that contain 
  16271.    information about the set, including its identification. (I)  (A)  (2) In 
  16272.    Generalized Markup Language markup, a name for a type of document or 
  16273.    document element that is entered in the source document to identify it. 
  16274.  
  16275.  target object  -An object to which the user is transferring information. 
  16276.  
  16277.  Task List  -In the Presentation Manager, the list of programs that are active. 
  16278.    The list can be used to switch to a program and to stop programs. 
  16279.  
  16280.  terminate-and-stay-resident (TSR)  -Pertaining to an application that modifies 
  16281.    an operating system interrupt vector to point to its own location (known as 
  16282.    hooking an interrupt). 
  16283.  
  16284.  text  -Characters or symbols. 
  16285.  
  16286.  text cursor  -A symbol displayed in an entry field that indicates where typed 
  16287.    input will appear. 
  16288.  
  16289.  text window  -Also known as the VIO window. 
  16290.  
  16291.  text-windowed application  -The environment in which the operating system 
  16292.    performs advanced-video input and output operations. 
  16293.  
  16294.  thread  -A unit of execution within a process. It uses the resources of the 
  16295.    process. 
  16296.  
  16297.  thumb mark  -The portion of the scroll bar that describes the range and 
  16298.    properties of the data that is currently visible in a window. Also known as 
  16299.    a slider box. 
  16300.  
  16301.  thunk  -Term used to describe the process of address conversion, stack and 
  16302.    structure realignment, etc., necessary when passing control between 16-bit 
  16303.    and 32-bit modules. 
  16304.  
  16305.  tilde  -A mark used to denote the character that is to be used as a mnemonic 
  16306.    when selecting text items within a menu. 
  16307.  
  16308.  time slice  -(1) An interval of time on the processing unit allocated for use 
  16309.    in performing a task. After the interval has expired, processing-unit time 
  16310.    is allocated to another task, so a task cannot monopolize processing-unit 
  16311.    time beyond a fixed limit. (2) In systems with time sharing, a segment of 
  16312.    time allocated to a terminal job. 
  16313.  
  16314.  time-critical process  -A process that must be performed within a specified 
  16315.    time after an event has occurred. 
  16316.  
  16317.  timer  -A facility provided under the Presentation Manager, whereby 
  16318.    Presentation Manager will dispatch a message of class WM_TIMER to a 
  16319.    particular window at specified intervals. This capability may be used by an 
  16320.    application to perform a specific processing task at predetermined 
  16321.    intervals, without the necessity for the application to explicitly keep 
  16322.    track of the passage of time. 
  16323.  
  16324.  timer tick  -See clock tick. 
  16325.  
  16326.  title bar  -In SAA Advanced Common User Access architecture, the area at the 
  16327.    top of each window that contains the window title and system menu icon. When 
  16328.    appropriate, it also contains the minimize, maximize, and restore icons. 
  16329.    Contrast with panel title. 
  16330.  
  16331.  TLB  -Translation lookaside buffer. 
  16332.  
  16333.  transaction  -An exchange between a workstation and another device that 
  16334.    accomplishes a particular action or result. 
  16335.  
  16336.  transform  -(1) The action of modifying a picture by scaling, shearing, 
  16337.    reflecting, rotating, or translating. (2) The object that performs or 
  16338.    defines such a modification; also referred to as a transformation. 
  16339.  
  16340.  Translation lookaside buffer (TLB)  -A hardware-based address caching 
  16341.    mechanism for paging information. 
  16342.  
  16343.  Tree  -In the Presentation Manager, the window in the File Manager that shows 
  16344.    the organization of drives and directories. 
  16345.  
  16346.  truncate  -(1) To terminate a computational process in accordance with some 
  16347.    rule (A)  (2) To remove the beginning or ending elements of a string. (3) To 
  16348.    drop data that cannot be printed or displayed in the line width specified or 
  16349.    available. (4) To shorten a field or statement to a specified length. 
  16350.  
  16351.  TSR  -Terminate-and-stay-resident. 
  16352.  
  16353.  unnamed pipe  -A circular buffer, created in memory, used by related processes 
  16354.    to communicate with one another. Contrast with named pipe. 
  16355.  
  16356.  unordered list  -In Information Presentation Facility, a vertical arrangement 
  16357.    of items in a list, with each item in the list preceded by a special 
  16358.    character or bullet. 
  16359.  
  16360.  update region  -A system-provided area of dynamic storage containing one or 
  16361.    more (not necessarily contiguous) rectangular areas of a window that are 
  16362.    visually invalid or incorrect, and therefore are in need of repainting. 
  16363.  
  16364.  user interface  -Hardware, software, or both that allows a user to interact 
  16365.    with and perform operations on a system, program, or device. 
  16366.  
  16367.  User Shell  -A component of OS/2 that uses a graphics-based, windowed 
  16368.    interface to allow the user to manage applications and files installed and 
  16369.    running under OS/2. 
  16370.  
  16371.  utility program  -(1) A computer program in general support of computer 
  16372.    processes; for example, a diagnostic program, a trace program, a sort 
  16373.    program. (T)  (2) A program designed to perform an everyday task such as 
  16374.    copying data from one storage device to another. (A)
  16375.  
  16376.  
  16377. ΓòÉΓòÉΓòÉ <hidden> Glossary - U ΓòÉΓòÉΓòÉ
  16378.  
  16379. There are no glossary terms for this starting letter. 
  16380.  
  16381.  
  16382. ΓòÉΓòÉΓòÉ <hidden> Glossary - V ΓòÉΓòÉΓòÉ
  16383.  
  16384.  value set control  -A visual component that enables a user to select one 
  16385.    choice from a group of mutually exclusive choices. 
  16386.  
  16387.  vector font  -A set of symbols, each of which is created as a series of lines 
  16388.    and curves. Synonymous with outline font. Contrast with image font. 
  16389.  
  16390.  VGA  -Video graphics array. 
  16391.  
  16392.  view  -A way of looking at an object's information. 
  16393.  
  16394.  viewing pipeline  -The series of transformations applied to a graphic object 
  16395.    to map the object to the device on which it is to be presented. 
  16396.  
  16397.  viewing window  -A clipping boundary that defines the visible part of model 
  16398.    space. 
  16399.  
  16400.  VIO  -Video Input/Output. 
  16401.  
  16402.  virtual memory (VM)  -Synonymous with virtual storage. 
  16403.  
  16404.  virtual storage  -(1) The storage space that may be regarded as addressable 
  16405.    main storage by the user of a computer system in which virtual addresses are 
  16406.    mapped into real addresses. The size of virtual storage is limited by the 
  16407.    addressing scheme of the computer system and by the amount of auxiliary 
  16408.    storage available, not by the actual number of main storage 
  16409.    locations. (I)  (A)  (2) Addressable space that is apparent to the user as 
  16410.    the processor storage space, from which the instructions and the data are 
  16411.    mapped into the processor storage locations. (3) Synonymous with virtual 
  16412.    memory. 
  16413.  
  16414.  visible region  -A window's presentation space, clipped to the boundary of the 
  16415.    window and the boundaries of any overlying window. 
  16416.  
  16417.  volume  -(1) A file-system driver that uses a block device driver for input 
  16418.    and output operations to a local or remote device. (I)  (2) A portion of 
  16419.    data, together with its data carrier, that can be handled conveniently as a 
  16420.    unit. 
  16421.  
  16422.  
  16423. ΓòÉΓòÉΓòÉ <hidden> Glossary - W ΓòÉΓòÉΓòÉ
  16424.  
  16425.  wildcard character  -Synonymous with global file-name character. 
  16426.  
  16427.  window  -(1) A portion of a display surface in which display images pertaining 
  16428.    to a particular application can be presented. Different applications can be 
  16429.    displayed simultaneously in different windows. (A)  (2) An area of the 
  16430.    screen with visible boundaries within which information is displayed. A 
  16431.    window can be smaller than or the same size as the screen. Windows can 
  16432.    appear to overlap on the screen. 
  16433.  
  16434.  window class  -The grouping of windows whose processing needs conform to the 
  16435.    services provided by one window procedure. 
  16436.  
  16437.  window coordinates  -A set of coordinates by which a window position or size 
  16438.    is defined; measured in device units, or pels. 
  16439.  
  16440.  window handle  -Unique identifier of a window, generated by Presentation 
  16441.    Manager when the window is created, and used by applications to direct 
  16442.    messages to the window. 
  16443.  
  16444.  window procedure  -Code that is activated in response to a message. The 
  16445.    procedure controls the appearance and behavior of its associated windows. 
  16446.  
  16447.  window rectangle  -The means by which the size and position of a window is 
  16448.    described in relation to the desktop window. 
  16449.  
  16450.  window resource  -A read-only data segment stored in the .EXE file of an 
  16451.    application o the .DLL file of a dynamic link library. 
  16452.  
  16453.  window style  -The set of properties that influence how events related to a 
  16454.    particular window will be processed. 
  16455.  
  16456.  window title  -In SAA Advanced Common User Access architecture, the area in 
  16457.    the title bar that contains the name of the application and the OS/2 
  16458.    operating system file name, if applicable. 
  16459.  
  16460.  Workplace Shell  -The OS/2 object-oriented, graphical user interface. 
  16461.  
  16462.  workstation  -(1) A display screen together with attachments such as a 
  16463.    keyboard, a local copy device, or a tablet. (2) (D of C) One or more 
  16464.    programmable or nonprogrammable devices that allow a user to do work. 
  16465.  
  16466.  world coordinates  -A device-independent Cartesian coordinate system used by 
  16467.    the application program for specifying graphical input and output. (I)  (A)
  16468.  
  16469.  world-coordinate space  -Coordinate space in which graphics are defined before 
  16470.    transformations are applied. 
  16471.  
  16472.  WYSIWYG  -What-You-See-Is-What-You-Get. A capability of a text editor to 
  16473.    continually display pages exactly as they will be printed. 
  16474.  
  16475.  
  16476. ΓòÉΓòÉΓòÉ <hidden> Glossary - X ΓòÉΓòÉΓòÉ
  16477.  
  16478. There are no glossary terms for this starting letter. 
  16479.  
  16480.  
  16481. ΓòÉΓòÉΓòÉ <hidden> Glossary - Y ΓòÉΓòÉΓòÉ
  16482.  
  16483. There are no glossary terms for this starting letter. 
  16484.  
  16485.  
  16486. ΓòÉΓòÉΓòÉ <hidden> Glossary - Z ΓòÉΓòÉΓòÉ
  16487.  
  16488.  z-order  -The order in which sibling windows are presented. The topmost 
  16489.    sibling window obscures any portion of the siblings that it overlaps; the 
  16490.    same effect occurs down through the order of lower sibling windows. 
  16491.  
  16492.  zooming  -The progressive scaling of an entire display image in order to give 
  16493.    the visual impression of movement of all or part of a display group toward 
  16494.    or away from an observer. (I)  (A)
  16495.  
  16496.  8.3 file-name format  -A file-naming convention in which file names are 
  16497.    limited to eight characters before and three characters after a single dot. 
  16498.    Usually pronounced "eight-dot-three." See also non-8.3 file-name format. 
  16499.