home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tolkit45.zip / os2tk45 / book / toolsref.inf (.txt) < prev    next >
OS/2 Help File  |  1999-05-12  |  554KB  |  21,477 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. About This Book ΓòÉΓòÉΓòÉ
  3.  
  4. This book is a technical reference for the programming tools in the OS/2 
  5. Toolkit. It is intended for use by application programmers creating programs 
  6. using OS/2 system functions. 
  7.  
  8.  
  9. ΓòÉΓòÉΓòÉ 1.1. Who Should Read This Book ΓòÉΓòÉΓòÉ
  10.  
  11. The OS/2 Tools Reference is intended for programmers knowledgeable in at least 
  12. one programming language in which OS/2 programs can be written. 
  13.  
  14.  
  15. ΓòÉΓòÉΓòÉ 1.2. How This Book is Organized ΓòÉΓòÉΓòÉ
  16.  
  17.      Introduction 
  18.  
  19.       This chapter contains information about all chapters in the book and the 
  20.       function of the tools. 
  21.  
  22.      PACK/UNPACK and PACK2/UNPACK2 
  23.  
  24.       This chapter describes the pack, unpack, pack2, and unpack2 tool, which 
  25.       reduces and expands the size of files. 
  26.  
  27.      Dialog Editor 
  28.  
  29.       This chapter describes the Dialog Editor and how it is used to create and 
  30.       modify dialog boxes. 
  31.  
  32.      Executable File Header Utility (EXEHDR) 
  33.  
  34.       This chapter describes the Executable File Header Utility (EXEHDR) that 
  35.       displays and modifies the contents of an executable-file header. 
  36.  
  37.      Font Editor 
  38.  
  39.       This chapter describes the Font Editor and how it is used to define fonts 
  40.       and edit character width. 
  41.  
  42.      Forwarded Entry Point (FWDSTAMP) 
  43.  
  44.       This chapter describes the FWDSTAMP tool, which adds entry points, called 
  45.       forwarders to a dynamic link library file. 
  46.  
  47.      Icon Editor 
  48.  
  49.       This chapter describes the Icon Editor, which lets you create your own 
  50.       icons, pointers, and bit maps and save them for use by applications. 
  51.  
  52.      Managing Import Libraries (IMPLIB) 
  53.  
  54.       This chapter describes the IMBPLIB tool, which creates import libraries 
  55.       used to link dynamic-link libraries with applications. 
  56.  
  57.      Link for Object and Library Files (LINK386) 
  58.  
  59.       LINK386 is a tool used to combine object files and standard library files 
  60.       into a single file: an executable file, a dynamic-link library, or a 
  61.       device driver. 
  62.  
  63.      Make Message File (MKMSGF) 
  64.  
  65.       This chapter describes the MKMSGF tool, which reads the input message 
  66.       file and creates an output message file. 
  67.  
  68.      Make Template File (MKTMPF) 
  69.  
  70.       This chapter describes the MKTMPF tool, which creates template repository 
  71.       files from text input files. 
  72.  
  73.      MAP File to SYM File Creator (MAPSYM) 
  74.  
  75.       This chapter describes the MAPSYM tool, which creates .SYM files from 
  76.       .MAP files. 
  77.  
  78.      View and Set Program Type For Executable File (MARKEXE) 
  79.  
  80.       This chapter describes the MARKEXE tool, which enables you to view and 
  81.       set the program type for an executable file. 
  82.  
  83.      Message Segment Binder (MSGBIND) 
  84.  
  85.       This chapter describes the MSGBIND tool, which binds a message segment to 
  86.       an executable program. 
  87.  
  88.      Object Utility/2 Description 
  89.  
  90.       This chapter describes how Object Utility/2 provides a facility for 
  91.       registering Workplace Shell classes, creating instances of Workplace 
  92.       Shell classes, and modifying instances of Workplace Shell classes. 
  93.  
  94.      Program Maintenance Utility Program (NMAKE) 
  95.  
  96.       This chapter describes the NMAKE tool, which automates the process of 
  97.       building an application from project files. 
  98.  
  99.      Quick Information (KwikINF) 
  100.  
  101.       This chapter describes the KwikINF tool, which provides a quick and 
  102.       convenient method of accessing information in online documents from 
  103.       anywhere on the desktop. 
  104.  
  105.      Resource Compiler 
  106.  
  107.       This chapter describes the OS/2 Resource Compiler an 
  108.       application-development tool that lets you add application resources , 
  109.       such as message strings, pointers, menus, and dialog boxes, to the 
  110.       executable file of your application. 
  111.  
  112.      Workplace Class List 
  113.  
  114.       This chapter discusses the Workplace Class List tool, which creates 
  115.       Workplace Shell object classes. 
  116.  
  117.  
  118. ΓòÉΓòÉΓòÉ 1.3. Double-Byte Character Set (DBCS) ΓòÉΓòÉΓòÉ
  119.  
  120. Throughout this publication, there are references to specific values for 
  121. character strings.  These values are for the Single-Byte Character Set (SBCS). 
  122. When using the Double-Byte Character Set, notice that one DBCS character equals 
  123. two SBCS characters. 
  124.  
  125.  
  126. ΓòÉΓòÉΓòÉ 1.4. Documentation Conventions ΓòÉΓòÉΓòÉ
  127.  
  128. Throughout this library of documents, the following conventions distinguish the 
  129. different elements of text: 
  130.  
  131.  plain text          Function names, structure names, data types names, message 
  132.                      names, enumerated types, and constant names. 
  133.  
  134.  Initial capitalization Key names, push buttons, checkboxes, radio buttons, 
  135.                      group-box controls, drop-down list box, dialog windows, 
  136.                      spin buttons, combo-boxes, SLE and MLE fields. 
  137.  
  138.  CAPITALS            File names and error codes. 
  139.  
  140.  monospace           Programming examples and user input at the command line 
  141.                      prompt or into an entry field. 
  142.  
  143.  bold                Action bar choices and menu items. 
  144.  
  145.  italics             Parameters, structure fields, titles of documents, and 
  146.                      first occurrences of words with special meaning. 
  147.  
  148.  
  149. ΓòÉΓòÉΓòÉ 2. Introduction ΓòÉΓòÉΓòÉ
  150.  
  151. The Tools Reference is a technical reference for the tools in the OS/2 Toolkit. 
  152. The following is a brief description of each chapter in this book and the 
  153. function of each tool. 
  154.  
  155.  
  156. ΓòÉΓòÉΓòÉ 2.1. Dialog Editor ΓòÉΓòÉΓòÉ
  157.  
  158. Purpose 
  159.  
  160. The Dialog Editor draws dialog boxes and controls on the screen so you can see 
  161. what they look like when used by your application. 
  162.  
  163. Description 
  164.  
  165. You can use the Dialog Editor to create and modify dialog box and modify the 
  166. controls and text within dialog boxes.  As you create the dialog box and its 
  167. controls, you see them on the screen as the user sees them when using your 
  168. program.  You can place each dialog box and its controls where you want them on 
  169. the screen. You also can test the dialog box before you incorporate it into 
  170. your application.  The Dialog Editor saves the dialog boxes in a ASCII-text 
  171. format files that have .DLG extensions. For more information see Dialog Editor. 
  172.  
  173.  
  174. ΓòÉΓòÉΓòÉ 2.2. Executable File Header Utility (EXEHDR) ΓòÉΓòÉΓòÉ
  175.  
  176. Purpose 
  177.  
  178. The Executable File Header Utility (EXEHDR) displays and modifies the contents 
  179. of an executable-file header. 
  180.  
  181. Description 
  182.  
  183. EXEHDR generates an output listing showing the contents of the file header and 
  184. information about each object or segment in the file. Options are provided that 
  185. let you change values in the file header. For more information see Executable 
  186. File Header Utility (EXEHDR). 
  187.  
  188.  
  189. ΓòÉΓòÉΓòÉ 2.3. Font Editor ΓòÉΓòÉΓòÉ
  190.  
  191. Purpose 
  192.  
  193. Use the Font Editor to design and save fonts for use in your applications. 
  194.  
  195. Description 
  196.  
  197. The Font Editor enables you to edit an enlarged version of each character in an 
  198. editing window, using the mouse to switch the enlarged representation of pels 
  199. to black or white. 
  200.  
  201. A font is a set of alphanumeric characters, punctuation marks, and other 
  202. symbols that share a common typeface design and line weight.  An application 
  203. loads a font from a dynamic-link library file (DLL file).  For more information 
  204. see Font Editor. 
  205.  
  206.  
  207. ΓòÉΓòÉΓòÉ 2.4. Forwarded Entry Point (FWDSTAMP) ΓòÉΓòÉΓòÉ
  208.  
  209. Purpose 
  210.  
  211. FWDSTAMP adds entry points, called forwarders, to a dynamic link library file. 
  212.  
  213. Description 
  214.  
  215. Forwarders point to API functions or other exported code or data. They contain 
  216. and import reference so that the final target address of the forwarded entry is 
  217. contained in a different module.  A forwarder might be called an imported 
  218. export. For more information see Forwarded Entry Point (FWDSTAMP). 
  219.  
  220.  
  221. ΓòÉΓòÉΓòÉ 2.5. Generate Message Catalog Utility (GENCAT) ΓòÉΓòÉΓòÉ
  222.  
  223. Purpose 
  224.  
  225. One of the requirements for internationalization of programs is that messages 
  226. be displayed in the language of the user. This requirement is satisfied by 
  227. producing versions of the messages which are translated into all supported 
  228. languages. 
  229.  
  230. The OS2 C library messaging support is based on the messaging support described 
  231. in the X/Open XPG4 specification. It consists of functions for extracting 
  232. messages from message catalog files (catopen, catgets, catclose) and utilities 
  233. for producing message catalog files (gencat, mkcatdef). The functions are 
  234. documented in the C Library Reference and the utilities are documented in this 
  235. book. 
  236.  
  237. The GENCAT utility processes a message source file and produces a catalog file 
  238. usable by the C library messaging functions. 
  239.  
  240. Description 
  241.  
  242. GENCAT creates the message catalog (usually *.cat) from a message source file 
  243. (usually *.msg) or standard input. You can specify any number of message source 
  244. files. A message source file is a text file that contains messages consisting 
  245. of a message number followed by the message text. See the Preprocess Message 
  246. Source File Utility (MKCATDEF) for using symbolic message identifiers in your 
  247. message source file. 
  248.  
  249. For more information on GENCAT, see Generate Message Catalog Utility (GENCAT). 
  250.  
  251.  
  252. ΓòÉΓòÉΓòÉ 2.6. Icon Editor ΓòÉΓòÉΓòÉ
  253.  
  254. Purpose 
  255.  
  256. The Icon Editor lets you create icons, pointers, and bit maps and save them for 
  257. use by applications. 
  258.  
  259. Description 
  260.  
  261. You can customize Icons, pointers, and bit maps for your application. 
  262.  
  263. An application can use an icon to represent a minimized standard window.  For 
  264. example, for an application that lists telephone numbers you could create a 
  265. telephone icon. For more information see Icon Editor. 
  266.  
  267.  
  268. ΓòÉΓòÉΓòÉ 2.7. Managing Import Libraries (IMPLIB) ΓòÉΓòÉΓòÉ
  269.  
  270. Purpose 
  271.  
  272. IMPLIB creates import libraries used to link dynamic-link libraries with 
  273. applications. The import library tells the application where to find the 
  274. dynamic-link libraries at run time. See Managing Import Libraries (IMPLIB) for 
  275. an explanation of import libraries and why they should be used with 
  276. dynamic-link libraries. 
  277.  
  278. Description 
  279.  
  280. IMPLIB takes a module definition file (.DEF) as input. For each export 
  281. definition in the .DEF file, IMPLIB generates a corresponding import 
  282. definition. 
  283.  
  284. The .LIB file generated by IMPLIB is used as input to LINK386, which creates an 
  285. executable (.EXE) file. The .LIB file provides LINK386 with information about 
  286. imported dynamic link functions. 
  287.  
  288.  
  289. ΓòÉΓòÉΓòÉ 2.8. Quick Information (KwikINF) ΓòÉΓòÉΓòÉ
  290.  
  291. Purpose 
  292.  
  293. KwikINF provides you with a quick and convenient method of accessing 
  294. information in online documents stored in the OS/2 BOOKSHELF from anywhere on 
  295. the desktop, with the exception of DOS or WIN-OS/2* sessions. 
  296.  
  297. Description 
  298.  
  299. You can open a dialog with KwikINF by pressing a user-selectable hot key after 
  300. starting KwikINF.  The KwikINF window also allows you to initiate searches for 
  301. text strings in on-line documents of your choice. For more information see 
  302. Quick Information (KwikINF). 
  303.  
  304.  
  305. ΓòÉΓòÉΓòÉ 2.9. Link for Object and Library Files (Link386) ΓòÉΓòÉΓòÉ
  306.  
  307. Purpose 
  308.  
  309. Link386 is used to combine object files and standard library files into a 
  310. single file: an executable file, a dynamic-link library, or a device driver. 
  311.  
  312. Description 
  313.  
  314. LINK386 can produce dynamic-link libraries (.DLL) and device Drivers (.SYS), in 
  315. addition to executable files (.EXE). For additional information, see Link for 
  316. Object and Library Files (LINK386). 
  317.  
  318.  
  319. ΓòÉΓòÉΓòÉ 2.10. MAP File to SYM File Creator (MAPSYM) ΓòÉΓòÉΓòÉ
  320.  
  321. Purpose 
  322.  
  323. MAP File to SYM File Creator (MAPSYM) is a program that creates .SYM files from 
  324. .MAP files. 
  325.  
  326. Description 
  327.  
  328. .SYM files are used by the kernel debugger for symbolic debugging.  MAPSYM must 
  329. be run from the directory in which the file to be converted is located. For 
  330. more information see MAP File to SYM File Creator (MAPSYM). 
  331.  
  332.  
  333. ΓòÉΓòÉΓòÉ 2.11. View and Set Program Type For Executable File (MARKEXE) ΓòÉΓòÉΓòÉ
  334.  
  335. Purpose 
  336.  
  337. The MARKEXE program enables you to view and set the program type for an 
  338. executable file. For applications running on OS/2 for SMP Version 3, MARKEXE 
  339. enables you to set the MPUNSAFE bit, which forces the application to be run in 
  340. uniprocessor mode. 
  341.  
  342. Description 
  343.  
  344. Use MARKEXE with the OS/2 Linear Executable Linker (Link386) or the OS/2 
  345. Segmented Executable Linker (LINK) to change or set the program type of 
  346. programs you have created, and to set or unset the MPUNSAFE bit. For more 
  347. information see View and Set Program Type For Executable File (MARKEXE). 
  348.  
  349.  
  350. ΓòÉΓòÉΓòÉ 2.12. Preprocess Message Source File Utility (MKCATDEF) ΓòÉΓòÉΓòÉ
  351.  
  352. Purpose 
  353.  
  354. The Generate Message Catalog Utility (GENCAT) does not accept symbolic message 
  355. identifiers; you must use the MKCATDEF utility if you want to use symbolic 
  356. message identifiers in you message source file for use with GENCAT. 
  357.  
  358. Description 
  359.  
  360. MKCATDEF processes a message source file containing symbolic identifiers and 
  361. produces the following output: 
  362.  
  363.      The SYMBOLNAME.H file, containing statements that equate symbolic 
  364.       identifiers with the set numbers and message ID numbers assigned by 
  365.       MKCATDEF. You must include the SYMBOLNAME.H file in your application 
  366.       program to associate the symbolic names to the set and message numbers 
  367.       assigned by MKCATDEF. 
  368.  
  369.      A new message source file containing message numbers instead of symbolic 
  370.       message identifiers. This output is suitable for input to GENCAT. 
  371.  
  372.  After running MKCATDEF, you can use symbolic names in an application to refer 
  373.  to messages. 
  374.  
  375.  For more information on MKCATDEF, see Preprocess Message Source File Utility 
  376.  (MKCATDEF). 
  377.  
  378.  
  379. ΓòÉΓòÉΓòÉ 2.13. Make Message File (MKMSGF) ΓòÉΓòÉΓòÉ
  380.  
  381. Purpose 
  382.  
  383. There are two ways that the output message file can be used: 
  384.  
  385.      Selected messages can be bound to the message segment of an executable 
  386.       file using the MSGBIND program. 
  387.  
  388.      Messages can be accessed directly from the output message file. For more 
  389.       information see Make Message File (MKMSGF). 
  390.  
  391.  Description 
  392.  
  393.  The Make Message File (MKMSGF) program reads the input message file specified 
  394.  and creates an output message file that DosGetMessages uses to display 
  395.  messages. 
  396.  
  397.  
  398. ΓòÉΓòÉΓòÉ 2.14. Make Template File (MKTMPF) ΓòÉΓòÉΓòÉ
  399.  
  400. Purpose 
  401.  
  402. MKTMPF creates template repository files from text input files. 
  403.  
  404. Description 
  405.  
  406. A template repository (also referred to as a repository file or repository in 
  407. this document) is a binary file used by the operating system's Error Logging 
  408. Facility to find error descriptions, causes, and actions in various message 
  409. files. 
  410.  
  411. The first step in creating a repository file is to create a text input file for 
  412. MKTMPF using any text editor. MKTMPF reads and validates this file, reporting 
  413. any errors or warnings, before translating it to binary data and creating a 
  414. repository file. For more information see Make Template File (MKTMPF). 
  415.  
  416.  
  417. ΓòÉΓòÉΓòÉ 2.15. Message Segment Binder (MSGBIND) ΓòÉΓòÉΓòÉ
  418.  
  419. Purpose 
  420.  
  421. Message Segment Binder (MSGBIND) is a program that binds a message segment to 
  422. an executable program. 
  423.  
  424. Description 
  425.  
  426. Message Segment Binder reads an input file that specifies the executable files 
  427. to modify. For each executable file, MSGBIND specifies which message files to 
  428. scan, and for each message file, it specifies which messages to include in the 
  429. executable file. For more information see Message Segment Binder (MSGBIND). 
  430.  
  431.  
  432. ΓòÉΓòÉΓòÉ 2.16. Program Maintenance Utility (NMAKE) ΓòÉΓòÉΓòÉ
  433.  
  434. Purpose 
  435.  
  436. Program Maintenance Utility (NMAKE) automates the process of updating project 
  437. files and can be used to make backups, configure data files, and run programs 
  438. when data files are modified. 
  439.  
  440. Description 
  441.  
  442. Program Maintenance Utility (NMAKE) compares the modification dates for one set 
  443. of files (the target files) with those of another set of files (the dependent 
  444. files).  If any dependent files have changed more recently than the target 
  445. files, NMAKE executes a series of commands to bring the targets up-to-date. For 
  446. more information see Program Maintenance Utility Program (NMAKE). 
  447.  
  448.  
  449. ΓòÉΓòÉΓòÉ 2.17. Object Utility/2 ΓòÉΓòÉΓòÉ
  450.  
  451. Purpose 
  452.  
  453. Object Utility/2 provides a facility for registering Workplace Shell classes, 
  454. creating instances of Workplace Shell classes, and modifying instances of 
  455. Workplace Shell classes. 
  456.  
  457. Description 
  458.  
  459. The Object Utility/2 has attributes that can be set or modified.  The 
  460. attributes modify the behavior of the objects to enable or disable copying, 
  461. deletion, and other attributes.  For more information see Object Utility/2 
  462. Description 
  463.  
  464.  
  465. ΓòÉΓòÉΓòÉ 2.18. Data Compression (PACK/UNPACK and PACK2/UNPACK2) ΓòÉΓòÉΓòÉ
  466.  
  467. Purpose 
  468.  
  469. You can use PACK and UNPACK to compress and expand files. The options, 
  470. parameters, and function for PACK2 are identical to PACK. 
  471.  
  472. Note:  PACK and PACK2 are shipped with the OS/2 Toolkit. UNPACK and UNPACK2 are 
  473. shipped with OS/2. 
  474.  
  475. 2 Description 
  476.  
  477. Data Compression (PACK) is a tool that reduces the size of a file by 
  478. compressing its data. Decompression (UNPACK) works in reverse and allows you to 
  479. expand files. You can use PACK for a single file or group of files, thereby 
  480. reducing the disk space required for your OS/2 application. The only difference 
  481. between PACK and PACK2 is that PACK2 has a better compression algorithm. For 
  482. more information see PACK/UNPACK and PACK2/UNPACK2. 
  483.  
  484.  
  485. ΓòÉΓòÉΓòÉ 2.19. Resource Compiler ΓòÉΓòÉΓòÉ
  486.  
  487. Purpose 
  488.  
  489. The OS/2 Resource Compiler (RC) is an application-development tool that lets 
  490. you add application resources, such as message strings, pointers, menus, and 
  491. dialog boxes, to the executable file of your application. 
  492.  
  493. Description 
  494.  
  495. The Resource Compiler is primarily intended to prepare data for OS/2 
  496. applications that use functions such as WinLoadString, WinLoadPointer,WinLoad 
  497. Menu, and WinLoadDlg.  For more information see Resource Compiler. 
  498.  
  499.  
  500. ΓòÉΓòÉΓòÉ 2.20. Trace Customizer (TRCUST) ΓòÉΓòÉΓòÉ
  501.  
  502. Purpose 
  503.  
  504. OS/2 provides a mechanism by which developers may dynamically apply tracepoints 
  505. in their module at run time.  This method eliminates all overhead of tracing 
  506. when tracing is disabled. It also allows the developer to add tracepoints 
  507. without modifying source code.  This reduces the possibility that adding a 
  508. tracepoint will induce errors into one's code.  OS/2 needs a binary file, for 
  509. each module being dynamically traced, which defines the tracepoints for the 
  510. module. 
  511.  
  512. Description 
  513.  
  514. The Trace Customizer (TRCUST) converts tracepoint definitions from a trace 
  515. source file (TSF) into dynamic tracepoints for the trace definition file (TDF), 
  516. and into formatting rules in the trace format file (TFF). For more information 
  517. see Dynamic Trace Customizer (TRCUST). 
  518.  
  519.  
  520. ΓòÉΓòÉΓòÉ 2.21. Workplace Class List ΓòÉΓòÉΓòÉ
  521.  
  522. Purpose 
  523.  
  524. Workplace Class List creates a workplace object class and an instance of a 
  525. workplace object class. 
  526.  
  527. Description 
  528.  
  529. Workplace objects are constructed using the SOM protocol and are called 
  530. Predefined, Subclass or Replaced object classes. For a definition of 
  531. Predefined, Subclass and Replaced classes, see Workplace Class List. 
  532.  
  533.  
  534. ΓòÉΓòÉΓòÉ 3. Dialog Editor ΓòÉΓòÉΓòÉ
  535.  
  536. You use the Dialog Editor to create and modify dialog boxes, and to create and 
  537. modify the controls and text within dialog boxes. As you create the dialog box 
  538. and its controls, you see them on the screen as the user will see them when 
  539. your program is run. You can place each dialog box and its controls where you 
  540. want them on the screen. In addition, you can test the dialog box before you 
  541. incorporate it into your application. 
  542.  
  543. Each dialog box and control can have either an integer identifier or a symbolic 
  544. identifier that equates to an integer identifier. You use the identifier in 
  545. your application to refer to the dialog box or control. If you intend to use 
  546. symbolic identifiers in your application, you must enter the symbolic and 
  547. integer identifiers in an include file.  If you do not use symbolic names, the 
  548. Dialog Editor supplies an integer identifier for each control and for the 
  549. dialog box itself.  You can use the Dialog Editor to create the include file, 
  550. or you can use a text editor to create the include file before using the Dialog 
  551. Editor. 
  552.  
  553. It is good programming practice to plan the resources that your application 
  554. will use and to choose a naming and numbering convention for the symbolic or 
  555. integer identifiers before you create them.  Keep the include file separate 
  556. from other include files used by your application. The Dialog Editor will use 
  557. only #define statements from an include file. It ignores everything else it 
  558. finds in the file. 
  559.  
  560. Although the Dialog Editor draws dialog boxes and controls on the screen so you 
  561. can see what they look like when used by your application, it does not save 
  562. them as graphics.  Instead, the Dialog Editor saves them in an ASCII-text 
  563. format file that has a .DLG extension.  Refer to the dialog template section of 
  564. this chapter. 
  565.  
  566. The Dialog Editor also creates a compiled form of the .DLG file in a resource 
  567. file with a .RES extension. The .DLG and .RES files can contain more than one 
  568. dialog box.  The resource file can contain other application resources, such as 
  569. icons, bit maps, and string tables.  It is attached to the executable (.EXE) 
  570. file of the application during the compile and link process. 
  571.  
  572.  
  573. ΓòÉΓòÉΓòÉ 3.1. Designing Dialog Boxes ΓòÉΓòÉΓòÉ
  574.  
  575. Dialog boxes should be designed to clearly identify the information that the 
  576. user is required to complete. The following are a few Common User Access* 
  577. guidelines: 
  578.  
  579.      Lay out the controls in columns, starting at the upper-left corner, for 
  580.       left-to-right or top-to-bottom scanning. 
  581.      Vertically and horizontally align selection and entry fields so that the 
  582.       cursor moves in a straight line. 
  583.      Arrange the controls in the sequence in which the user would complete 
  584.       them. 
  585.      If there are only a few entry fields, locate them at the top of the 
  586.       dialog box. 
  587.      Make groups of controls obvious by use of group boxes and white space. 
  588.      Align group boxes, where possible.  Group boxes can be extended to the 
  589.       right to line up with other group boxes. 
  590.      Use field identifiers to identify the purpose of single and multiple 
  591.       groups of choices. 
  592.  
  593.  
  594. ΓòÉΓòÉΓòÉ 3.2. Creating a Dialog Box ΓòÉΓòÉΓòÉ
  595.  
  596. To run the Dialog Editor, select Dialog Editor from the Development Tools 
  597. folder. The main window appears, displaying the menu bar choices File, Edit, 
  598. Control, Arrange, Options, and Help. On line help that tells you how to use the 
  599. editor is available on most Dialog Editor windows. 
  600.  
  601. To create a new dialog box, start with either of the following methods: 
  602.  
  603.      Select New Dialog from the Edit menu. The editor opens new files with the 
  604.       extensions .RES and .DLG.  This also opens a new include file. 
  605.      Select New from the File menu.  This opens new files with the extensions 
  606.       .RES and .DLG. You can open a new include file or an existing one. 
  607.  
  608.  When you edit a dialog box, the names of the resource and include files are 
  609.  shown in the title bar of the Dialog Editor. If you are editing a new file 
  610.  that has not yet been named or saved, (Untitled) appears in the title bar in 
  611.  place of a name. If (Untitled) appears in the title bar in place of a name, 
  612.  there are unsaved changes. 
  613.  
  614.  The Dialog Box ID field appears in the status area. A default integer number 
  615.  is supplied in the entry field. Type a symbolic identifier for the dialog box, 
  616.  such as MYDIALOG. Tab to the integer field and type the integer number. Press 
  617.  Enter to place them both in the include file. 
  618.  
  619.  The new dialog box appears in the lower-left corner of the editor screen 
  620.  enclosed by a border. The border contains eight small squares called drag 
  621.  handles, which allow you to change the width and height of the selected item. 
  622.  This indicates that the dialog box is selected for editing.  If you are 
  623.  creating a new dialog box, the dialog is automatically selected; at all other 
  624.  times, before you edit the dialog box or a control, you must click on it to 
  625.  select it. 
  626.  
  627.  To continue creating the new dialog box, follow these steps: 
  628.  
  629.    1. Make the dialog box larger by clicking on one of its drag handles with 
  630.       the left mouse button and dragging until the box is the size you want it 
  631.       to be. This can be done in one operation by clicking on the upper-right 
  632.       corner of the border and dragging diagonally upwards and to the right. 
  633.  
  634.       Information about the item you are editing is displayed in the Selected 
  635.       Item Status box in the left half of the status area.  As you move the 
  636.       shadow box, the x-y-coordinates change.  These are the coordinates of the 
  637.       origin of the dialog box relative to the origin of the window.  The 
  638.       cx-cy-coordinates are the width and height of the dialog box.  The 
  639.       symbolic identifier is also shown. 
  640.  
  641.    2. Select Styles from the Edit menu. The Dialog Box Styles pop-up window 
  642.       appears. 
  643.  
  644.    3. Click on the text entry field in the status area, and then type the 
  645.       dialog box title (for instance, Sample dialog box) into the field. 
  646.  
  647.    4. Press Enter and the title appears at the top of your dialog box. 
  648.  
  649.  You can reposition the entire dialog box by moving the pointer inside the top 
  650.  area enclosed by the border, holding the left mouse button down, and dragging 
  651.  the shadow box across the screen.  When the shadow box is in the position 
  652.  where you want the dialog box to appear, release the mouse button.  The dialog 
  653.  box appears in that position. Alternatively, you can move the dialog box using 
  654.  the keyboard arrow keys.  You can reposition the dialog box at any time during 
  655.  the edit. 
  656.  
  657.  
  658. ΓòÉΓòÉΓòÉ 3.2.1. Using a Grid ΓòÉΓòÉΓòÉ
  659.  
  660. Before you start adding controls to the dialog box, you might want to first 
  661. select the grid option to make laying out your dialog easier. 
  662.  
  663. You can use a mouse to place controls in a dialog box and to move the controls 
  664. in line with each other.  However, you can more accurately position the 
  665. controls by using the keyboard arrow keys or mouse after grid values have been 
  666. set. 
  667.  
  668. The Settings-change dialog lets you set the number of character spaces (in 
  669. dialog units) by which you can move dialog boxes and controls when using the 
  670. Dialog Editor. 
  671.  
  672. To set the grid size, follow these steps: 
  673.  
  674.    1. Select Settings from the Arrange menu. The Settings-change dialog is 
  675.       displayed. The initial grid setting for both x and y is 1 unit. 
  676.  
  677.    2. Change the x-setting to 10 and the y-setting to 5.  Click on OK. 
  678.  
  679.  The horizontal (x) and vertical (y) values are in dialog units. A horizontal 
  680.  dialog unit is 0.25 of the standard character size. A vertical dialog unit is 
  681.  0.125 of the standard character size.  For example, if you move a control to 
  682.  the left or the right (using the mouse or keyboard arrow keys) with x set at 
  683.  20, it moves in steps of twenty dialog units. 
  684.  
  685.  When you subsequently position dialog boxes or controls, the objects move by 
  686.  the specified number of dialog units on an invisible grid. Large values make 
  687.  it easier to align controls, while small values allow you to position controls 
  688.  in the dialog box more precisely. 
  689.  
  690.  Now that the grid is in place, you are ready to start adding controls. 
  691.  
  692.  
  693. ΓòÉΓòÉΓòÉ 3.2.2. Adding Controls ΓòÉΓòÉΓòÉ
  694.  
  695. The control menu lists, in alphabetic order, all the controls that you can put 
  696. in a dialog box. To add controls, follow these steps: 
  697.  
  698.    1. Select a control from the Control menu or click on an icon on the Control 
  699.       Palette at the right side of the window. 
  700.  
  701.       The pointer becomes a small plus sign (+) in a square. The center marks 
  702.       the position where the lower-left corner of the border for the control 
  703.       will be set. 
  704.  
  705.    2. Click the mouse to position the control. 
  706.  
  707.    3. A dialog might appear (depending on the type of control) in which you 
  708.       must enter data or check preferences to define the control. Complete this 
  709.       and close the dialog. 
  710.  
  711.  For an example of adding controls in a typical dialog, see Example. 
  712.  
  713.  You might want to test the dialog. 
  714.  
  715.  For detailed descriptions of individual controls and how they work, see the 
  716.  individual controls in the on line help (while using the Dialog Editor) by 
  717.  following these steps: 
  718.  
  719.    1. Select Help Index from the Help menu (or press F1 and select Help Index). 
  720.  
  721.    2. Select Options or press Alt-O. 
  722.  
  723.    3. Select Contents or press Ctrl-C. 
  724.  
  725.    4. Select Control Menu for an alphabetic list of controls, or select Control 
  726.       Palette for the icons as they appear on the Control Palette. 
  727.  
  728.    5. Select the control you want to read about. 
  729.  
  730.  
  731. ΓòÉΓòÉΓòÉ 3.2.3. Arranging Controls ΓòÉΓòÉΓòÉ
  732.  
  733. The Arrange menu allows you to arrange and align controls in a logical and 
  734. easy-to-understand layout. 
  735.  
  736.  Align             Aligns controls along an edge. 
  737.  
  738.  Even spacing      Evenly spaces controls 
  739.  
  740.  Same size         Sets controls to the same size. 
  741.  
  742.  Push buttons      Arranges push buttons. 
  743.  
  744.  Order groups      Displays the Groups-order dialog, so you can change the 
  745.                    order of controls and groups. 
  746.  
  747.  Settings          Displays the Settings-change dialog, so you can change the 
  748.                    grid and spacing constants. 
  749.  
  750.  
  751. ΓòÉΓòÉΓòÉ 3.2.4. Ordering Control Groups ΓòÉΓòÉΓòÉ
  752.  
  753. This option allows you to gather controls into groups and to change the order 
  754. in which the tab keys and arrow keys move the selection cursor around the 
  755. controls. 
  756.  
  757. When you use group boxes to group controls, always create the group box before 
  758. the controls that are to go inside it. 
  759.  
  760. It is good practice to put group markers around all separate groups of 
  761. controls, including putting a marker before the first control in the list. 
  762.  
  763. The list box shows the order in which the selection cursor moves between the 
  764. controls when the user presses the arrow and tab keys. (The coordinate position 
  765. of a control when displayed in the dialog box does not affect the order.) 
  766. Initially, the controls are listed in the order in which they were created. 
  767.  
  768. There are three functions involved in grouping controls: 
  769.  
  770.      Setting Group Markers 
  771.      Setting Tab Markers 
  772.      Moving Control Order 
  773.  
  774.  Setting Group Markers 
  775.  
  776.  To set up groups in a dialog that has various types of controls, follow these 
  777.  steps: 
  778.  
  779.    1. Select Order Groups from the Arrange menu.  The Groups - order dialog is 
  780.       displayed. 
  781.  
  782.    2. Click on the first radio button in the list box. 
  783.  
  784.    3. Click on the Group Marker push button.  A group marker is now displayed 
  785.       between the Text control and the first radio button in the list. 
  786.  
  787.    4. Scroll down the list and click on the first push button in the list. 
  788.       Click on the Group Marker push button.  This has organized your controls 
  789.       into groups of text, radio buttons, check boxes, and push buttons. 
  790.  
  791.  Setting Tab Markers 
  792.  
  793.  After setting group markers, you will want to set tab-stops.  The controls 
  794.  marked with an asterisk already have tab-stops. 
  795.  
  796.  To make the tab-stop at only the first control in each group, delete the 
  797.  tab-stops from the second and third radio button and check box, following 
  798.  these steps: 
  799.  
  800.    1. Click on the second radio button in the list to mark it. 
  801.  
  802.    2. Click on the Delete Tab push button. 
  803.  
  804.    3. Repeat the above steps for the third radio button, and then perform the 
  805.       same operation for the second and third check box in the list.  When this 
  806.       is complete, press Enter. 
  807.  
  808.  Moving Control Order 
  809.  
  810.  You can move controls in the list and then see during testing how the changes 
  811.  affect the movement of the cursor. To change the position of a control in the 
  812.  list, follow these steps: 
  813.  
  814.    1. Click on the name of the control to select it. 
  815.  
  816.    2. Position the pointer in the list where you want the name to appear. The 
  817.       pointer changes shape to a short horizontal line when it is over a place 
  818.       where you can insert the name. 
  819.  
  820.    3. To insert the control name, click the mouse button. 
  821.  
  822.  After grouping controls, you might want to test or edit the dialog, or enter 
  823.  additional controls. 
  824.  
  825.  
  826. ΓòÉΓòÉΓòÉ 3.2.5. Selecting Color and Font ΓòÉΓòÉΓòÉ
  827.  
  828. The Presentation Parameters dialog allows you to select the color and font for 
  829. individual controls or for an entire dialog box. 
  830.  
  831. You can select all of the following: 
  832.  
  833.      Foreground Color 
  834.      Background Color 
  835.      Foreground Color Highlight 
  836.      Background Color Highlight 
  837.      Disabled (greyed out) Foreground Color 
  838.      Disabled (greyed out) Background Color 
  839.      Font Size 
  840.      Font Name 
  841.  
  842.  To set presentation parameters, follow these steps: 
  843.  
  844.    1. Select a control or the dialog box. 
  845.  
  846.    2. Select Presentation Parameters from the Edit menu. 
  847.  
  848.    3. Type the number, from 1 to 255 parts of each color, in the appropriate 
  849.       fields. 
  850.  
  851.    4. Type the font size and name, if you want to change the default, in the 
  852.       last two fields. 
  853.  
  854.    5. Select OK or press Enter to close the dialog. 
  855.  
  856.  You might now want to test the dialog. 
  857.  
  858.  
  859. ΓòÉΓòÉΓòÉ 3.2.6. Using the Options Menu ΓòÉΓòÉΓòÉ
  860.  
  861. On the Options menu, a check mark next to each option shows whether it is 
  862. selected (on) or not (off). 
  863.  
  864. To toggle your selection of options on and off, use the following functions of 
  865. the Options menu: 
  866.  
  867.      Select Test mode to test the dialog. 
  868.  
  869.      Select Hex mode to toggle between hexadecimal and decimal display of ID 
  870.       Values of symbols. 
  871.  
  872.      Select Translate mode to toggle translate mode on and off. 
  873.  
  874.      Select Enable 2.x styles to use controls and their styles which are 
  875.       specific to OS/2 2.x, but not prior releases. 
  876.  
  877.      Select Show status area to toggle display of the status area on and off. 
  878.  
  879.  
  880. ΓòÉΓòÉΓòÉ 3.2.7. Example ΓòÉΓòÉΓòÉ
  881.  
  882. The control menu lists, in alphabetic order, all the controls that you can put 
  883. in a dialog box. The sample dialog is Sample Dialog Template File. To add 
  884. controls for a sample dialog, follow these steps: 
  885.  
  886.    1. Select Text from the Control menu or select a control by clicking on its 
  887.       icon on the Control Palette at the right side of the window. 
  888.  
  889.       The pointer becomes a small plus sign (+) in a square.  The center marks 
  890.       the position where the center of the control will be. 
  891.  
  892.    2. Position the pointer inside the dialog box near the upper-left corner and 
  893.       click the mouse. 
  894.  
  895.    3. Type Student Level: in the Text entry field. Observe that the next 
  896.       sequential integer is supplied in the Symbol entry field.  Press Enter. 
  897.  
  898.    4. Replace the symbol with ID_GRAD and press Enter. 
  899.  
  900.       The Dialog editor assigns the next integer to the symbolic identifier you 
  901.       entered and places it in the include file. This is another technique for 
  902.       entering symbolic identifiers. 
  903.  
  904.    5. To view or change the include file at any time, select Symbols from the 
  905.       Edit menu. The Symbols dialog appears. 
  906.  
  907.       The symbolic and integer identifier for the dialog box and the text 
  908.       control are displayed in the list box. The dialog allows you to add, 
  909.       delete, and change the identifiers and to view the hexadecimal 
  910.       equivalents of the integers. 
  911.  
  912.       Select the OK push button to remove the dialog and register any changes. 
  913.       Select Cancel if you have not made any changes. 
  914.  
  915.    6. In your dialog box, the static control is not large enough for you to see 
  916.       all the text. To remedy this, click on the text, and a border appears 
  917.       around it. Drag the right-hand edge of the border to the right to enlarge 
  918.       the field. 
  919.  
  920.       When you release the mouse button, you should be able to see all the 
  921.       text. When a control has a border around it, it is selected and you can 
  922.       use a shadow box to position it, as you did with the dialog box. 
  923.  
  924.    7. To add another control, select Radio Button from the Control menu and 
  925.       position the cursor just beneath the Student Level text.  Press Enter. 
  926.  
  927.    8. Type Elementary in the Button Text entry field and press Enter. Drag the 
  928.       right edge of the border that surrounds the radio button until you can 
  929.       see all of the text. 
  930.  
  931.    9. Select Radio Button again and type Intermediate in the Text entry field. 
  932.       Position this radio button below the first one. 
  933.  
  934.   10. Select Radio Button again and type Advanced in the Text entry field. 
  935.       Position this radio button below the other two. 
  936.  
  937.   11. Select Group Box from the Control menu. Position the cursor to the right 
  938.       of the column of radio buttons and press Enter. 
  939.  
  940.   12. Type Media in the Text entry field and press Enter to title the group 
  941.       box. 
  942.  
  943.   13. Click on the lower-right corner of the group box border and drag it 
  944.       diagonally down and to the right to enlarge it.  The bottom of the group 
  945.       box border should be lower than the last of the radio buttons, and the 
  946.       right-hand side of the group box should be almost at the far right of the 
  947.       dialog box.  This is to make room for a group of check boxes that will go 
  948.       inside the group box. 
  949.  
  950.       When you use group boxes to group controls, you always create the group 
  951.       box before the controls that are to go inside it. 
  952.  
  953.   14. Select Check Box from the Control menu. Position the cursor inside the 
  954.       group box in line with the first radio button in the list, and click the 
  955.       mouse. 
  956.  
  957.   15. Type TextBooks in the Button Text entry field and press Enter. Enlarge 
  958.       the border of the check box until all of the text is displayed. 
  959.  
  960.   16. Select Check Box again and position the cursor below the first check box. 
  961.       Type Video in the Text entry field and click Enter. Enlarge the check box 
  962.       border until all of the text is displayed. 
  963.  
  964.   17. Select Check Box again and position the cursor below the previous two 
  965.       check boxes. Type Diskettes in the Text entry field. 
  966.  
  967.       In the left-hand side of the dialog box, you should now have a column of 
  968.       radio buttons with a heading of Student Level, and on the right a group 
  969.       box with a heading of Media that contains three check boxes. 
  970.  
  971.   18. Finally, add three push buttons to the dialog box.  Select Pushbutton 
  972.       from the Control menu. Position the cursor in the lower-left side of the 
  973.       dialog box and click the mouse.  Type OK in the Text entry field and 
  974.       press Enter. 
  975.  
  976.   19. Position another push button to the right of the first one (in the lower 
  977.       middle of the dialog box) and type Cancel in the Text entry field. 
  978.  
  979.   20. Select a third push button and position it to the right of the second. 
  980.       Type Help in the Text entry field. 
  981.  
  982.  The dialog box and its controls are now complete. 
  983.  
  984.  Try selecting each of the controls, and observe the information in the 
  985.  Selected Item Status. It holds information about each control that you edit. 
  986.  
  987.  You might now want to test the dialog box. 
  988.  
  989.  
  990. ΓòÉΓòÉΓòÉ 3.3. Changing the Dialog Box ΓòÉΓòÉΓòÉ
  991.  
  992. To change the properties of a dialog box or a single control, use the following 
  993. functions of the Edit menu: 
  994.  
  995.      Select New Dialog to create another dialog box in the same resource file. 
  996.       Your existing dialog box will stay in memory. 
  997.  
  998.      Select Select Dialog to switch to another open dialog box. 
  999.  
  1000.      Select Symbols to define symbols. 
  1001.  
  1002.  Eight of the editing functions require that you first select the control to be 
  1003.  edited. The selected control will appear in the drag window, surrounded by 
  1004.  eight dots, one in each corner and one at the midpoint of each side. 
  1005.  
  1006.  The following functions require that a control must first be selected: 
  1007.  
  1008.      Select Cut to cut a control you would like to move or delete. 
  1009.  
  1010.      Select Copy to copy to the clipboard a control you would like to 
  1011.       duplicate elsewhere in the same dialog or in another dialog. 
  1012.  
  1013.      Select Paste to place a control you have marked with Cut or Copy. 
  1014.  
  1015.      Select Clear to erase a control. 
  1016.  
  1017.      Select Duplicate to create another control in this dialog box that is 
  1018.       identical to the selected control. 
  1019.  
  1020.      Select Styles to define the style of the selected control. 
  1021.  
  1022.      Select Presentation parameters to select the colors and fonts. 
  1023.  
  1024.      Select Size to text to adjust the size of an entry field to the text 
  1025.       inside. 
  1026.  
  1027.  
  1028. ΓòÉΓòÉΓòÉ 3.4. Testing the Dialog Box ΓòÉΓòÉΓòÉ
  1029.  
  1030. To test the dialog box, select Test Mode from the Options menu.  The dialog box 
  1031. is displayed as it will appear to the user in a program.  In test mode, you can 
  1032. select controls, and their appearance changes in the same way as they do in an 
  1033. application.  To return to work mode, click on Test Mode again to de select it. 
  1034.  
  1035. If you want to make changes, you can edit the dialog box. 
  1036.  
  1037.  
  1038. ΓòÉΓòÉΓòÉ 3.5. Ending an Edit Session ΓòÉΓòÉΓòÉ
  1039.  
  1040. To end the edit session, select Close from the system pull-down menu.  You see 
  1041. prompts for the file names of the files you want to save. 
  1042.  
  1043. If you want to edit the same file the next time you use the editor, select Open 
  1044. from the File menu. 
  1045.  
  1046.  
  1047. ΓòÉΓòÉΓòÉ 3.6. Dialog Templates ΓòÉΓòÉΓòÉ
  1048.  
  1049. The Dialog Editor creates an ASCII text file that has the file-name extension 
  1050. .DLG. The compiled form of this file, created using the Resource Compiler, has 
  1051. the file-name extension .RES. 
  1052.  
  1053. The .DLG file contains a series of statements, collectively termed a dialog 
  1054. template, that define each dialog box and each control in each dialog box. The 
  1055. statement for each dialog box contains the data required to create it, namely 
  1056. its class, size, position, window text, and any other special information 
  1057. required for the window. 
  1058.  
  1059. Normally, the template consists of a dialog box window followed by the controls 
  1060. contained within it, which are child windows. 
  1061.  
  1062. The first statement in the template is the DLGINCLUDE statement, which 
  1063. specifies the file name of the include file. 
  1064.  
  1065. The next statement is the DLGTEMPLATE statement, which specifies the symbolic 
  1066. identifier of the dialog box (MYDIALOG). The DLGTEMPLATE statement also 
  1067. specifies any loading and memory options. The actual dialog template is 
  1068. contained within the first BEGIN and last END statement. There is a CONTROL 
  1069. statement for each of the controls in the dialog box. The CONTROL statement is 
  1070. a general statement that is followed by parameters that further specify the 
  1071. control, such as: 
  1072.  
  1073.      Text, where appropriate.  For example, the text OK is defined for one of 
  1074.       the push buttons. 
  1075.      Application-defined symbolic or integer identifiers for each control. 
  1076.       Your application uses the identifier to track the responses from 
  1077.       controls.  For example, ID_NULL is the identifier of the text control. 
  1078.      The types and positions of the various controls.  For example, the group 
  1079.       box control is a control window of window class WC_STATIC. The Cancel and 
  1080.       Help push buttons are of window class WC_BUTTON. 
  1081.      The appearance and operation of the dialog box and its controls, which 
  1082.       are specified in detail by combinations of style parameters. For example, 
  1083.       the check boxes have a class style of BS_CHECKBOX, and radio buttons have 
  1084.       a class style of BS_RADIOBUTTON.  You can also specify appropriate WS_* 
  1085.       styles. 
  1086.  
  1087.  If necessary, you can use a text editor to edit the .DLG file, for example, to 
  1088.  fine-tune the dialog template produced by the dialog box editor.  You can even 
  1089.  use a text editor to produce your own .DLG file. The Dialog Editor uses the 
  1090.  general CONTROL statement with window classes and control styles to define 
  1091.  controls. 
  1092.  
  1093.  You can use the CONTROL statement in the same way to define your controls, or 
  1094.  you can use any of several predefined control statements that give you the 
  1095.  same result.  For example, the predefined control statement PUSHBUTTON gives 
  1096.  you a WC_BUTTON class window with default styles of BS_PUSHBUTTON and 
  1097.  WS_TABSTOP. 
  1098.  
  1099.  The predefined controls are described in the following sections. 
  1100.  
  1101.  
  1102. ΓòÉΓòÉΓòÉ 3.6.1. AUTOCHECKBOX Statement ΓòÉΓòÉΓòÉ
  1103.  
  1104. The AUTOCHECKBOX statement creates an automatic-check-box control. The control 
  1105. is a small rectangle (check box) that contains a check when the user selects 
  1106. it. The specified text is displayed to the right of the check box.  A check 
  1107. appears in the square when the user first selects the control and disappears 
  1108. the next time the user selects it. The AUTOCHECKBOX statement, which you can 
  1109. use only in a DIALOG or WINDOW statement, defines the text, identifier, 
  1110. coordinates, dimensions, and attributes of a control window.  The predefined 
  1111. class for this control is WC_BUTTON. If you do not specify the style, the 
  1112. default style is BS_AUTOCHECKBOX and WS_TABSTOP. 
  1113.  
  1114.  
  1115. ΓòÉΓòÉΓòÉ 3.6.2. AUTORADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  1116.  
  1117. The AUTORADIOBUTTON statement creates an automatic-radio-button control.  This 
  1118. control is a small circle with the given text displayed to its right.  The 
  1119. control highlights the circle and sends a message to its parent window when the 
  1120. user selects the button.  The control also removes the selection from any other 
  1121. automatic-radio-button controls in the same group.  When the user selects the 
  1122. button again, the control removes the highlight before sending a message.  The 
  1123. AUTORADIOBUTTON statement, which you can use only in a DIALOG or WINDOW 
  1124. statement, defines the text, identifier, coordinates, dimensions, and 
  1125. attributes of a control window.  The predefined class for this control is 
  1126. WC_BUTTON.  If you do not specify a style, the default style is 
  1127. BS_AUTORADIOBUTTON. 
  1128.  
  1129.  
  1130. ΓòÉΓòÉΓòÉ 3.6.3. CHECKBOX Statement ΓòÉΓòÉΓòÉ
  1131.  
  1132. The CHECKBOX statement creates a check-box control.  The control is a small 
  1133. rectangle (check box) that has the specified text displayed to the right.  The 
  1134. control highlights the rectangle and sends a message to its parent window when 
  1135. the user selects the control.  The CHECKBOX statement, which you can use only 
  1136. in a DIALOG or WINDOW statement, defines the text, identifier, coordinates, 
  1137. dimensions, and attributes of a control window.  The predefined class for this 
  1138. control is WC_BUTTON.  If you do not specify a style, the default style is 
  1139. BS_CHECKBOX and WS_TABSTOP. 
  1140.  
  1141.  
  1142. ΓòÉΓòÉΓòÉ 3.6.4. COMBOBOX Statement ΓòÉΓòÉΓòÉ
  1143.  
  1144. The COMBOBOX statement creates a combination-box control.  This control 
  1145. combines a list-box control with an entry-field control.  It allows you to 
  1146. place the selected item from a list box into an entry field. The COMBOBOX 
  1147. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  1148. text, identifier, coordinates, dimensions, and attributes of a control window. 
  1149. The predefined class for this control is WC_COMBOBOX. If you do not specify a 
  1150. style, the default style is CBS_SIMPLE, WS_GROUP, WS_TABSTOP, and WS_VISIBLE. 
  1151.  
  1152.  
  1153. ΓòÉΓòÉΓòÉ 3.6.5. CONTAINER Statement ΓòÉΓòÉΓòÉ
  1154.  
  1155. The CONTAINER statement creates a container control within a dialog window. 
  1156. The container control is a visual component that holds objects.  The CONTAINER 
  1157. statement defines the identifier, coordinates, dimensions, and attributes of a 
  1158. container control.  The predefined class for this control is WC_CONTAINER.  If 
  1159. you do not specify a style, the default style is WS_TABSTOP, WS_VISIBLE, and 
  1160. CCS_SINGLESEL. 
  1161.  
  1162. Example 
  1163.  
  1164. This example creates a container control at position (30,30) within the dialog 
  1165. window.  The container has a width of 70 character units and a height of 25 
  1166. character units.  Its resource ID is 301.  The default style CCS_SINGLESEL has 
  1167. been overridden by the style specification CCS_MULTIPLESEL.  The default styles 
  1168. WS_TABSTOP and WS_GROUP are both in effect, though only the latter is 
  1169. specified. 
  1170.  
  1171. #define IDC_CONTAINER    301
  1172. #define IDD_CONTAINERDLG 504
  1173. DIALOG "Container", IDD_CONTAINERDLG, 23, 6, 120, 280, FS_NOBYTEALIGN |
  1174.         WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  1175.   BEGIN
  1176.      CONTAINER   IDC_CONTAINER, 30, 30, 70, 200, CCS_MULTIPLESEL |
  1177.                        WS_GROUP
  1178.   END
  1179.  
  1180.  
  1181. ΓòÉΓòÉΓòÉ 3.6.6. DEFPUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  1182.  
  1183. The DEFPUSHBUTTON statement creates a default push button control. The control 
  1184. is a round-cornered rectangle containing the given text. The rectangle has a 
  1185. bold outline to represent that it is the default response for the user.  The 
  1186. control sends a message to its parent window when the user chooses the control. 
  1187. The DEFPUSHBUTTON statement, which you can use only in a DIALOG or WINDOW 
  1188. statement, lets you define the coordinates, dimensions, and attributes of the 
  1189. default push button control.  The predefined class for this control is 
  1190. WC_BUTTON.  If you do not specify a style, the default style is BS_PUSHBUTTON, 
  1191. BS_DEFAULT, and WS_TABSTOP. 
  1192.  
  1193.  
  1194. ΓòÉΓòÉΓòÉ 3.6.7. EDITTEXT or ENTRYFIELD Statement ΓòÉΓòÉΓòÉ
  1195.  
  1196. The EDITTEXT or ENTRYFIELD statement creates an entry-field control.  This 
  1197. control is a rectangle in which the user can type and edit text. The control 
  1198. displays a pointer when the user selects the control.  The user can then use 
  1199. the keyboard to enter text or edit the existing text.  Editing keys include the 
  1200. Backspace and Delete keys.  By using the mouse or the direction-arrow keys, the 
  1201. user can select the character or characters to delete or select the place to 
  1202. insert new characters. 
  1203.  
  1204. The EDITTEXT or ENTRYFIELD statement defines the text, identifier, coordinates, 
  1205. dimensions, and attributes of a control window.  The predefined class for this 
  1206. control is WC_ENTRYFIELD.  If you do not specify a style, the default style is 
  1207. ES_AUTOSCROLL and WS_TABSTOP. The EDITTEXT control statement is identical to 
  1208. the ENTRYFIELD control statement. Use the EDITTEXT or ENTRYFIELD statement only 
  1209. in a DIALOG or WINDOW statement. 
  1210.  
  1211.  
  1212. ΓòÉΓòÉΓòÉ 3.6.8. FRAME Statement ΓòÉΓòÉΓòÉ
  1213.  
  1214. The FRAME statement defines a frame window.  The statement defines the title, 
  1215. identifier, position, and dimensions of the frame window, as well as the window 
  1216. style.  The FRAME statement is most often used in a WINDOWTEMPLATE statement, 
  1217. and typically, only one FRAME statement is used.  The FRAME statement, in turn, 
  1218. typically contains at least one WINDOW statement that defines the client window 
  1219. belonging to the frame window. 
  1220.  
  1221. The frame window has no default style.  You must use the framectl field to 
  1222. define additional frame controls, such as a title bar and system menu, to be 
  1223. created when the frame window is created.  If the text field is not empty, the 
  1224. statement automatically adds a title-bar control to the frame window, whether 
  1225. or not you specify the FCF_TITLEBAR style.  Frame controls are given default 
  1226. styles and control identifiers based on their class.  For example, a title-bar 
  1227. control receives the identifier FID_TITLEBAR. 
  1228.  
  1229. The FRAME statement can actually contain any combination of CONTROL, DIALOG, 
  1230. and WINDOW statements. Typically, a FRAME statement contains one WINDOW 
  1231. statement. 
  1232.  
  1233. Example 
  1234.  
  1235. This example creates a standard frame window, with title bar, a system menu, 
  1236. minimize and maximize boxes, and a vertical scroll bar.  The FRAME statement 
  1237. contains a WINDOW statement defining the client window belonging to the frame 
  1238. window. 
  1239.  
  1240. WINDOWTEMPLATE 1
  1241. BEGIN
  1242.     FRAME "My Window", 1, 10, 10, 320, 130, 0,
  1243.             FCF_STANDARD | FCF_VERTSCROLL
  1244.     BEGIN
  1245.         WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass"
  1246.     END
  1247. END
  1248.  
  1249.  
  1250. ΓòÉΓòÉΓòÉ 3.6.9. GROUPBOX Statement ΓòÉΓòÉΓòÉ
  1251.  
  1252. The GROUPBOX statement creates a group-box control.  The control is a rectangle 
  1253. that groups other controls together.  A border is drawn around the groups, and 
  1254. text is displayed in the upper-left corner. The GROUPBOX statement, which you 
  1255. can use only in a DIALOG or WINDOW statement, defines the text, identifier, 
  1256. coordinates, dimensions, and attributes of a group-box control.  The predefined 
  1257. class for this control is WC_STATIC.  If you do not specify a style, the 
  1258. default style is SS_GROUPBOX and WS_TABSTOP. 
  1259.  
  1260.  
  1261. ΓòÉΓòÉΓòÉ 3.6.10. ICON Statement (Control) ΓòÉΓòÉΓòÉ
  1262.  
  1263. This form of the ICON statement creates an icon control.  This control is an 
  1264. icon displayed in a dialog box.  The ICON statement, which you can use only in 
  1265. a DIALOG or WINDOW statement, defines the icon-resource identifier, 
  1266. icon-control identifier, position, and attributes of a control window.  The 
  1267. predefined class for this control is WC_STATIC.  If you do not specify a style, 
  1268. the default style is SS_ICON.  For the ICON statement, the width and height 
  1269. fields are ignored; the icon automatically sizes itself. 
  1270.  
  1271.  
  1272. ΓòÉΓòÉΓòÉ 3.6.11. LISTBOX Statement ΓòÉΓòÉΓòÉ
  1273.  
  1274. The LISTBOX statement creates commonly used controls for a dialog box or 
  1275. window.  The control is a rectangle containing a list of user-selectable 
  1276. strings, such as file names. 
  1277.  
  1278. The LISTBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  1279. defines the identifier, coordinates, dimensions, and attributes of a control 
  1280. window.  The predefined class for this control is WC_LISTBOX.  If you do not 
  1281. specify a style, the default style is WS_TABSTOP. 
  1282.  
  1283.  
  1284. ΓòÉΓòÉΓòÉ 3.6.12. MLE Statement ΓòÉΓòÉΓòÉ
  1285.  
  1286. The MLE statement creates a multiple-line entry-field control.  The control is 
  1287. a rectangle in which the user can type and edit multiple lines of text.  The 
  1288. control displays a pointer when the user selects it.  The user can then use the 
  1289. keyboard to enter text or edit the existing text.  Editing keys include the 
  1290. Backspace and Delete keys. By using the mouse or the direction-arrow keys, the 
  1291. user can select the character or characters to delete or select the place to 
  1292. insert new characters.  The MLE statement, which you can use only in a DIALOG 
  1293. or WINDOW statement, defines the text, identifier, coordinates, dimensions, and 
  1294. attributes of a control window.  The predefined class for this control is 
  1295. WC_MLE.  If you do not specify a style, the default style is MLS_BORDER, 
  1296. WS_GROUP, and WS_TABSTOP. If the MLS_READONLY style is not specified, the user 
  1297. can edit the text. 
  1298.  
  1299.  
  1300. ΓòÉΓòÉΓòÉ 3.6.13. NOTEBOOK Statement ΓòÉΓòÉΓòÉ
  1301.  
  1302. The NOTEBOOK statement creates a notebook control within the dialog window. 
  1303. This control is used to organize information on individual pages so that it can 
  1304. be located and displayed easily. The NOTEBOOK statement defines the identifier, 
  1305. coordinates, dimensions, and attributes of a notebook control.  The predefined 
  1306. class for this control is WC_NOTEBOOK.  If you do not specify a style, the 
  1307. default style is WS_TABSTOP and WS_VISIBLE. The NOTEBOOK statement is used only 
  1308. in a DIALOG or WINDOW statement. 
  1309.  
  1310. Example 
  1311.  
  1312. This example creates a notebook control at position (20, 20) within the dialog 
  1313. window.  The notebook has a width of 200 character units and a height of 32 
  1314. character units.  Its resource ID is 201. The tabs style BKS_ROUNDEDTABS 
  1315. specification overrides the notebook default style of square tabs. The default 
  1316. styles WS_TABSTOP and WS_GROUP are both in effect, though only the latter is 
  1317. specified. 
  1318.  
  1319. #define    IDC_NOTEBOOK     201
  1320. #define    IDD_NOTEBOOKDLG  503
  1321. DIALOG "Notebook", IDD_NOTEBOOKDLG, 11, 11, 420, 420, FS_NOBYTEALIGN |
  1322.         WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  1323.   BEGIN
  1324.     NOTEBOOK   IDC_NOTEBOOK, 20, 20, 200, 400, BKS_ROUNDEDTABS | WS_GROUP
  1325.   END
  1326.  
  1327.  
  1328. ΓòÉΓòÉΓòÉ 3.6.14. PUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  1329.  
  1330. The PUSHBUTTON statement creates a push button control.  The control is a 
  1331. round-cornered rectangle containing the given text.  The control sends a 
  1332. message to its parent whenever the user chooses the control. The PUSHBUTTON 
  1333. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  1334. text, identifier, coordinates, dimensions, and attributes of a control window. 
  1335. The predefined class for this control is WC_BUTTON. If you do not specify a 
  1336. style, the default style is BS_PUSHBUTTON and WS_TABSTOP. 
  1337.  
  1338.  
  1339. ΓòÉΓòÉΓòÉ 3.6.15. RADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  1340.  
  1341. The RADIOBUTTON statement creates a radio-button control.  The control is a 
  1342. small circle that has the given text displayed to its right.  The control 
  1343. highlights the circle and sends a message to its parent window when the user 
  1344. selects the button.  The control removes the highlight and sends a message when 
  1345. the button is next selected.  The RADIOBUTTON statement, which you can use only 
  1346. in a DIALOG or WINDOW statement, defines the text, identifier, coordinates, 
  1347. dimensions, and attributes of a control window.  The predefined class for this 
  1348. control is WC_BUTTON.  If you do not specify a style, the default style is 
  1349. BS_RADIOBUTTON. 
  1350.  
  1351.  
  1352. ΓòÉΓòÉΓòÉ 3.6.16. SLIDER Statement ΓòÉΓòÉΓòÉ
  1353.  
  1354. The SLIDER statement creates a slider control within the dialog window.  This 
  1355. control lets the user set, display, or modify a value by moving a slider arm 
  1356. along a linear slider shaft. The SLIDER statement defines the identifier, 
  1357. coordinates, dimensions, and attributes of a slider control.  The predefined 
  1358. class for this control is WC_SLIDER.  If you do not specify a style, the 
  1359. default style is WS_TABSTOP and WS_VISIBLE. The SLIDER statement is used only 
  1360. in a DIALOG or WINDOW statement. 
  1361.  
  1362.  
  1363. ΓòÉΓòÉΓòÉ 3.6.17. SPINBUTTON Statement ΓòÉΓòÉΓòÉ
  1364.  
  1365. The SPINBUTTON statement creates a spin button control within the dialog 
  1366. window.  This control gives the user quick access to a finite set of data.  The 
  1367. SPINBUTTON statement defines the identifier, coordinates, dimensions, and 
  1368. attributes of a spin button control.  The predefined class for this control is 
  1369. WC_SPINBUTTON. If you do not specify a style, the default style is WS_TABSTOP, 
  1370. WS_VISIBLE, and SPBS_MASTER. The SPINBUTTON statement is used only in a DIALOG 
  1371. or WINDOW statement. 
  1372.  
  1373.  
  1374. ΓòÉΓòÉΓòÉ 3.6.18. Static Text Statements: LTEXT, CTEXT and RTEXT ΓòÉΓòÉΓòÉ
  1375.  
  1376. Each of these statements creates a static text control.  The control is a 
  1377. simple rectangle displaying the given text, which is either aligned to one edge 
  1378. or centered in the rectangle.  The text is formatted before it is displayed. 
  1379. Words that would extend past the end of a line are automatically wrapped to the 
  1380. beginning of the next line.  These three statements, which you can use only in 
  1381. a DIALOG or WINDOW statement, define the text, identifier, coordinates, 
  1382. dimensions, and attributes of a static text control.  The predefined class for 
  1383. this control is WC_STATIC.  If you do not specify a style, the default style is 
  1384. SS_TEXT, WS_GROUP, and the appropriate alignment flag (DT_LEFT, DT_CENTER, or 
  1385. DT_RIGHT respectively). 
  1386.  
  1387.  
  1388. ΓòÉΓòÉΓòÉ 3.6.19. VALUESET Statement ΓòÉΓòÉΓòÉ
  1389.  
  1390. The VALUESET statement creates a value-set control within the dialog window. 
  1391. This control lets a user select one choice from a group of mutually exclusive 
  1392. choices.  The VALUESET statement defines the identifier, coordinates, 
  1393. dimensions, and attributes of a value-set control.  The predefined class for 
  1394. this control is WC_VALUESET.  If you do not specify a style, the default style 
  1395. is WS_TABSTOP and WS_VISIBLE. The VALUESET statement is used only in a DIALOG 
  1396. or WINDOW statement. 
  1397.  
  1398. Example 
  1399.  
  1400. This example creates a value-set control at position (40, 40) within the dialog 
  1401. window.  The value set control has a width of 220 character and a height of 20 
  1402. character units.  Its resource ID is 302.  The style specification VS_ICON 
  1403. creates a control to show items in icon form.  The default styles WS_TABSTOP 
  1404. and WS_VISIBLE are both in effect, though only WS_TABSTOP is specified. 
  1405.  
  1406. #define    IDC_VALUESET     302
  1407. #define    IDD_VALUESETDLG  501
  1408. DIALOG "Value set", IDD_VALUESETDLG, 11, 11, 260, 240, FS_NOBYTEALIGN |
  1409.         WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  1410.   BEGIN
  1411.     VALUESET  IDC_VALUESET, 40, 40, 220, 160, VS_ICON | WS_TABSTOP
  1412.   END
  1413.  
  1414. A dialog template can be in either of the following: 
  1415.  
  1416.      A resource.res file (generated from the .DLG file by the Resource 
  1417.       Compiler) 
  1418.      A block of memory that has the DLGTEMPLATE data structure, in which case 
  1419.       you use WinCreateDlg to create the dialog box from the template. 
  1420.  
  1421.  The dialog template uses device-independent dialog units for the coordinate 
  1422.  system that define the layout of controls in the dialog box. 
  1423.  
  1424.  A dialog unit is expressed in terms of the default standard character size, 
  1425.  which can vary from device to device.  You do not need to put code in your 
  1426.  application to reformat the dialog box when displaying it on different 
  1427.  devices. (Dialogs might need editing if a different system font is loaded.)  A 
  1428.  horizontal dialog unit is 0.25 of the standard character size. A vertical 
  1429.  dialog unit is 0.125 of the standard character size. Dialog units are 
  1430.  expressed as offsets from the origin (lower-left corner) of the dialog box. 
  1431.  
  1432.  A dialog template is a general structure.  It could be termed a window 
  1433.  template, because you can use it to define any window in an application.  If 
  1434.  you prefer, use the statement WINDOWTEMPLATE instead of DLGTEMPLATE, because 
  1435.  it is functionally identical. This could reduce the initialization phase of 
  1436.  the application to registering the application window classes and calling 
  1437.  WinLoadDlg to load the template. 
  1438.  
  1439.  If you use the Dialog Editor to define a standard window, you will have to 
  1440.  edit the resulting .DLG file to ensure that you have a client window and the 
  1441.  required parent-child relationships.  You will also have to use WinLoadMenu in 
  1442.  your application, to create a menu bar for the window, because you cannot 
  1443.  create menus using the Dialog Editor. 
  1444.  
  1445.  The .RES file is an object-format compiled version of the .DLG file, created 
  1446.  when the Dialog Editor compiles the dialogs. The Dialog Editor uses the .RES 
  1447.  file as input on any subsequent edit of the same dialog.  This means that, if 
  1448.  you use a text editor to fine-tune a .DLG file, and you want subsequently to 
  1449.  re-edit the dialog using the Dialog Editor, you must first use the Resource 
  1450.  Compiler to generate a new .RES file from the .DLG file. 
  1451.  
  1452.  Your application can use either the .RES file output by the Dialog Editor or a 
  1453.  .RES file created from the .DLG file and the other resources. If your 
  1454.  application uses the .DLG file, it must be included by the resource script 
  1455.  file of your application. 
  1456.  
  1457.  The rcinclude statement includes the .DLG file created by the Dialog Editor; 
  1458.  for example: 
  1459.  
  1460.   rcinclude dbe.dlg /* Includes .DLG file */
  1461.  
  1462.  The corresponding .H file created by the Dialog Editor must also be included 
  1463.  in the .RC file. 
  1464.  
  1465.  Using OS/2-defined control windows, OS/2 draws and operates the controls 
  1466.  specified in the resource file for your application. Controls are windows and 
  1467.  can be used within any other window. 
  1468.  
  1469.  
  1470. ΓòÉΓòÉΓòÉ 3.6.20. Sample Dialog Template File ΓòÉΓòÉΓòÉ
  1471.  
  1472. The following dialog template is used for the dialog described in Example. 
  1473.  
  1474.             DLGINCLUDE 1 "DBE.H"
  1475.  
  1476.  
  1477.             DLGTEMPLATE mydialog LOADONCALL MOVEABLE DISCARDABLE
  1478.  
  1479.             BEGIN
  1480.  
  1481.                       DIALOG "Sample Dialog Box", mydialog, 11, 8, 170, 105,
  1482.                           FS_NOBYTEALIGN | FS_DLGBORDER | WS_VISIBLE |
  1483.                           WS_SAVEBITS, FCF_TITLEBAR
  1484.  
  1485.                       BEGIN
  1486.  
  1487.                                 CONTROL "Student Level:", id_null, -1, 94, 63, 9, WC_STATIC,
  1488.                                     SS_TEXT | DT_LEFT | DT_TOP | WS_GROUP | WS_VISIBLE
  1489.  
  1490.                                 CONTROL "Elementary", 258, 7, 82, 62, 11, WC_BUTTON,
  1491.                                     BS_RADIOBUTTON | WS_GROUP | WS_TABSTOP | WS_VISIBLE
  1492.  
  1493.                                 CONTROL "Intermediate", 259, 7, 67, 73, 9, WC_BUTTON,
  1494.                                     BS_RADIOBUTTON | WS_VISIBLE
  1495.  
  1496.                                 CONTROL "Advanced", 260, 7, 51, 52, 13, WC_BUTTON,
  1497.                                     BS_RADIOBUTTON | WS_VISIBLE
  1498.  
  1499.                                 CONTROL "Media", 261, 87, 48, 75, 54, WC_STATIC,
  1500.                                     SS_GROUPBOX | WS_GROUP | WS_VISIBLE
  1501.  
  1502.                                 CONTROL "Textbooks", 262, 97, 83, 60, 10, WC_BUTTON,
  1503.                                     BS_CHECKBOX | WS_TABSTOP | WS_VISIBLE
  1504.  
  1505.                                 CONTROL "Video", 263, 97, 68, 46, 10, WC_BUTTON,
  1506.                                     BS_CHECKBOX | WS_VISIBLE
  1507.  
  1508.                                 CONTROL "CBT", 264, 97, 53, 32, 10, WC_BUTTON,
  1509.                                     BS_CHECKBOX | WS_VISIBLE
  1510.  
  1511.                                 CONTROL "OK", 265, 7, 20, 38, 12, WC_BUTTON,
  1512.                                     BS_PUSHBUTTON | WS_GROUP | WS_TABSTOP | WS_VISIBLE
  1513.  
  1514.                                 CONTROL "Cancel", 266, 61, 20, 38, 12, WC_BUTTON,
  1515.                                     BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE
  1516.  
  1517.                                 CONTROL "Help", 267, 117, 20, 38, 12, WC_BUTTON,
  1518.                                     BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE
  1519.  
  1520.                       END
  1521.  
  1522.             END
  1523.  
  1524.  
  1525. ΓòÉΓòÉΓòÉ 4. Executable File Header Utility (EXEHDR) ΓòÉΓòÉΓòÉ
  1526.  
  1527. The Executable File Header Utility (EXEHDR) displays and modifies the contents 
  1528. of an executable-file header.  EXEHDR generates an Output listing showing the 
  1529. contents of the file header and information about each object or segment in the 
  1530. file.  Options are provided that let you change values in the file header. 
  1531.  
  1532. Uses of EXEHDR include: 
  1533.  
  1534.      Determining whether a file is an application or a dynamic link library 
  1535.      Viewing and changing the attributes set by the module definition file 
  1536.      Viewing the number and size of code and data segments. 
  1537.  
  1538.  You can use EXEHDR with DOS or OS/2 applications and dynamic-link libraries. 
  1539.  
  1540.  
  1541. ΓòÉΓòÉΓòÉ 4.1. Syntax ΓòÉΓòÉΓòÉ
  1542.  
  1543. EXEHDR [options] filename
  1544.  
  1545.  <options> 
  1546.       Options used to modify Output or change the file header. 
  1547.  
  1548.  <filename> 
  1549.       One or more names of applications or dynamic-link library files. 
  1550.  
  1551.       Regardless of options, EXEHDR always creates an Output listing of the 
  1552.       file header. 
  1553.  
  1554.  
  1555. ΓòÉΓòÉΓòÉ 4.1.1. Help ΓòÉΓòÉΓòÉ
  1556.  
  1557. To display EXEHDR help, type EXEHDR /? at the command prompt.  The appropriate 
  1558. copyright statement appears along with a brief list of EXEHDR options. 
  1559.  
  1560. Usage: EXEHDR [options] filename...
  1561. Valid options are:
  1562.   /?
  1563.   /HEAP:(0H - ffffH)
  1564.   /HELP
  1565.   /MAX:(0H - ffffH)
  1566.   /MIN:(0H - ffffH)
  1567.   /NEWFILES
  1568.   /NOLOGO
  1569.   /PMTYPE:(PM | VIO | NOVIO |
  1570.                  WINDOWAPI | WINDOWCOMPAT |
  1571.                  NOTWINDOWCOMPAT)
  1572.   /RESETERROR
  1573.   /STACK:(0H - ffffH)
  1574.   /VERBOSE
  1575.  
  1576.  
  1577. ΓòÉΓòÉΓòÉ 4.2. Options ΓòÉΓòÉΓòÉ
  1578.  
  1579. Usage Notes: 
  1580.  
  1581.      Option characters are not case sensitive: /R and /r are equivalent. 
  1582.      Options can be shortened to the fewest characters that uniquely identify 
  1583.       them.  The characters in brackets can be omitted: /N and /NOLOGO are 
  1584.       equivalent. 
  1585.      Although use of the minimum one-letter abbreviations is allowed, if a 
  1586.       future release has an additional option starting with the same letter, 
  1587.       the one-letter option will no longer be usable. 
  1588.  
  1589.  
  1590. ΓòÉΓòÉΓòÉ 4.2.1. Formats Affected by Options ΓòÉΓòÉΓòÉ
  1591.  
  1592. The EXEHDR options that can change executable files are MIN, MAX, STACK, 
  1593. PMTYPE, HEAP, RESETERROR, and NEWFILES. 
  1594.  
  1595. Executable headers are used by the operating system to determine 
  1596. characteristics of the executable file, such as stack size, entry point, number 
  1597. of objects (or segments), and so on. EXEHDR recognizes three different kinds of 
  1598. executable headers:  DOS (generated by DOS linker), OS/2 16-bit (generated by 
  1599. LINK), and OS/2 32-bit (generated by LINK386). 
  1600.  
  1601. An X in the following table indicates which option changes which executable 
  1602. header: 
  1603.  
  1604. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1605. ΓöéOption         ΓöéDOS            ΓöéOS/2 16-bit    ΓöéOS/2 32-bit    Γöé
  1606. Γöé               Γöé               Γöé(LINK)         Γöé(LINK386)      Γöé
  1607. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1608. ΓöéHEAP           Γöé               ΓöéX              ΓöéX              Γöé
  1609. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1610. ΓöéMAX            ΓöéX              Γöé               Γöé               Γöé
  1611. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1612. ΓöéMIN            ΓöéX              Γöé               Γöé               Γöé
  1613. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1614. ΓöéNEWFILES       Γöé               ΓöéX              Γöé               Γöé
  1615. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1616. ΓöéPMTYPE         Γöé               ΓöéX              ΓöéX              Γöé
  1617. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1618. ΓöéRESETERROR     Γöé               ΓöéX              ΓöéX              Γöé
  1619. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1620. ΓöéSTACK          ΓöéX              ΓöéX              Γöé               Γöé
  1621. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1622.  
  1623. For compatibility purposes, executable files generated by either of the OS/2 
  1624. link utilities include both a DOS header and an OS/2 header. For example, if 
  1625. you use /STACK on an executable generated by OS/2 LINK (16-bit), the DOS header 
  1626. and the OS/2 header will be changed. 
  1627.  
  1628.  
  1629. ΓòÉΓòÉΓòÉ 4.2.1.1. /HEA[P] ΓòÉΓòÉΓòÉ
  1630.  
  1631. Set Heap Allocation (/HEAP) 
  1632.  
  1633. Syntax:  /HEA[P]:nnnn 
  1634.  
  1635. This option sets the size of the local heap and is applicable to OS/2 
  1636. applications only. The field <nnnn> contains the local heap size in bytes. 
  1637.  
  1638. You can specify <nnnn> in decimal, octal, or hexadecimal radix using standard C 
  1639. language notation. 
  1640.  
  1641.  
  1642. ΓòÉΓòÉΓòÉ 4.2.1.2. /HEL[P] and /? ΓòÉΓòÉΓòÉ
  1643.  
  1644. Display Help (/HELP or /?) 
  1645.  
  1646. Syntax:  /HEL[P]   OR   /? 
  1647.  
  1648. This option displays a brief summary of EXEHDR syntax. 
  1649.  
  1650.  
  1651. ΓòÉΓòÉΓòÉ 4.2.1.3. /MA[X] ΓòÉΓòÉΓòÉ
  1652.  
  1653. Set Maximum Allocation (/MAX) 
  1654.  
  1655. Syntax:  /MA[X]:nnnn 
  1656.  
  1657. This option sets the maximum allocation of memory for the program. The field 
  1658. <nnnn> contains the maximum number of 16-byte paragraphs required to load and 
  1659. run the program. This value must be equal to or greater than the minimum 
  1660. allocation. 
  1661.  
  1662. Compare to /MI. 
  1663.  
  1664. The Maximum Allocation option is equivalent to the LINK386 /CP option. 
  1665.  
  1666. Refer to Set Max Allocation Space (/CP) (in LINK386 Help) 
  1667.  
  1668. You can specify <nnnn> in decimal, octal, or hexadecimal radix using standard C 
  1669. language notation. 
  1670.  
  1671.  
  1672. ΓòÉΓòÉΓòÉ 4.2.1.4. /MI[N] ΓòÉΓòÉΓòÉ
  1673.  
  1674. Set Minimum Allocation (/MIN) 
  1675.  
  1676. Syntax:  /MI[N]:nnnn 
  1677.  
  1678. This option sets the minimum allocation of memory for the program. The field 
  1679. <nnnn> contains the minimum number of 16-byte paragraphs required to load and 
  1680. run the program. This value must be equal to or less than the maximum 
  1681. allocation. 
  1682.  
  1683. Compare to /MA. 
  1684.  
  1685. You can specify <nnnn> in decimal, octal, or hexadecimal radix using standard C 
  1686. language notation. 
  1687.  
  1688.  
  1689. ΓòÉΓòÉΓòÉ 4.2.1.5. /NE[WFILES] ΓòÉΓòÉΓòÉ
  1690.  
  1691. New Files (/NEWFILES) 
  1692.  
  1693. Syntax:  /NE[WFILES] 
  1694.  
  1695. This option enables long file name support for OS/2 16-bit LINK files. OS/2 
  1696. 32-bit LINK386 files have long file name support. 
  1697.  
  1698.  
  1699. ΓòÉΓòÉΓòÉ 4.2.1.6. /NO[LOGO] ΓòÉΓòÉΓòÉ
  1700.  
  1701. Suppress Sign-On Banner (/NOLOGO) 
  1702.  
  1703. Syntax:  /NO[LOGO] 
  1704.  
  1705. This option suppresses the sign-on banner displayed by EXEHDR when it starts. 
  1706.  
  1707.  
  1708. ΓòÉΓòÉΓòÉ 4.2.1.7. /P[MTYPE] ΓòÉΓòÉΓòÉ
  1709.  
  1710. Set Application Type (/PMTYPE) 
  1711.  
  1712. Syntax:  /P[MTYPE]:type 
  1713.  
  1714. This option specifies the type of application.  It pertains only to OS/2 
  1715. applications.  The /PMTYPE option in EXEHDR is equivalent to either the NAME 
  1716. Statement in the module-definition file or the Name Application Type (/PM) in 
  1717. LINK386. 
  1718.  
  1719. A keyword in <type> is equivalent to a keyword in a NAME statement, as shown in 
  1720. the following list: 
  1721.  
  1722.  Field Keyword       Equiv. Keyword 
  1723.  
  1724.  PM                  WINDOWAPI 
  1725.  
  1726.  VIO                 WINDOWCOMPAT 
  1727.  
  1728.  NOVIO               NOTWINDOWCOMPAT 
  1729.  
  1730.  The NAME statement keyword is also accepted. 
  1731.  
  1732.  
  1733. ΓòÉΓòÉΓòÉ 4.2.1.8. /R[ESETERROR] ΓòÉΓòÉΓòÉ
  1734.  
  1735. Reset LINK386 Error (/RESETERROR) 
  1736.  
  1737. Syntax:  /R[ESETERROR] 
  1738.  
  1739. This option clears an error flag stored in OS/2 applications. The error flag is 
  1740. set by LINK386 when the link has unresolved external references or duplicate 
  1741. symbol definitions (any LINK386 error messages starting with L2xxx). 
  1742.  
  1743. OS/2 does not load the application if the error flag is set. This option allows 
  1744. you to attempt to run a program with LINK386 errors and is useful during 
  1745. application development. 
  1746.  
  1747.  
  1748. ΓòÉΓòÉΓòÉ 4.2.1.9. /S[TACK] ΓòÉΓòÉΓòÉ
  1749.  
  1750. Set Stack Allocation (/STACK) 
  1751.  
  1752. Syntax:  /S[TACK]:nnnn 
  1753.  
  1754. This option sets the size of the stack.  The field <nnnn> contains the stack 
  1755. size in bytes.  This option is equivalent to the Control Stack Size (/ST) (in 
  1756. LINK386 Help). 
  1757.  
  1758. You can specify <nnnn> in decimal, octal, or hexadecimal radix using standard C 
  1759. language notation. 
  1760.  
  1761.  
  1762. ΓòÉΓòÉΓòÉ 4.2.1.10. /V[ERBOSE] ΓòÉΓòÉΓòÉ
  1763.  
  1764. Display in Verbose Mode (/VERBOSE) 
  1765.  
  1766. Syntax:  /V[ERBOSE] 
  1767.  
  1768. This option displays the executable-file header in verbose mode. 
  1769.  
  1770.  
  1771. ΓòÉΓòÉΓòÉ 4.3. Output ΓòÉΓòÉΓòÉ
  1772.  
  1773. EXEHDR lists the current contents of the file header and information about each 
  1774. object (or segment) in the file. To redirect this output to a printer or disk 
  1775. file, use the operating system redirection operator. 
  1776.  
  1777. The output is in two parts: a Header Listing giving the contents of the file 
  1778. header; and an Object or Segment Listing giving attributes of all objects (or 
  1779. segments) in the file.  If the /VERBOSE option is specified, additional output 
  1780. is generated. 
  1781.  
  1782.  
  1783. ΓòÉΓòÉΓòÉ 4.3.1. Header Listing ΓòÉΓòÉΓòÉ
  1784.  
  1785. The header listing is comprised of the following fields: 
  1786.  
  1787.  <Module> Name of Application 
  1788.  
  1789.       This field lists the name of the application as specified in the NAME 
  1790.       statement of the module-definition file. 
  1791.  
  1792.       If no module definition was used to create the executable file, this 
  1793.       field displays the name assumed by default. 
  1794.  
  1795.       If a module definition was used to create the file, but the LIBRARY 
  1796.       statement appeared instead of the NAME statement (thus specifying a 
  1797.       dynamic-link library), the name of the library is given and EXEHDR uses 
  1798.       the word "Library" instead of "Module" to identify the field. 
  1799.  
  1800.  <Description> Description of Application 
  1801.  
  1802.       This field gives the contents, if any, of the DESCRIPTION statement of 
  1803.       the module-definition file used to create the file being examined. 
  1804.  
  1805.  <Data> Type of Automatic Data Object 
  1806.  
  1807.       This field indicates the type of automatic data segment in a program: 
  1808.       SHARED, NONSHARED, or NONE.  This type can be specified in a 
  1809.       module-definition file.  The defaults are NONSHARED for applications and 
  1810.       SHARED for dynamic-link libraries. 
  1811.  
  1812.  <Initial CS:IP> Program Starting Address 
  1813.  
  1814.       This field gives the program starting address (if an application is being 
  1815.       examined) or address of the initialization routine (if a dynamic-link 
  1816.       library is being examined). 
  1817.  
  1818.  <Initial SS:SP> Initial Stack Pointer 
  1819.  
  1820.       This field gives the value of the initial stack pointer. 
  1821.  
  1822.  <Extra Stack Allocation> Additional stack allocation 
  1823.  
  1824.       This field gives the value of the extra stack location. 
  1825.  
  1826.  <DGROUP> Automatic-Data-Object Number 
  1827.  
  1828.  
  1829. ΓòÉΓòÉΓòÉ 4.3.2. Object or Segment Listing ΓòÉΓòÉΓòÉ
  1830.  
  1831. The object listing is comprised of the following fields: 
  1832.  
  1833.  no.         Object index number, starting with 1, in decimal 
  1834.  
  1835.  type        Identification of the object as a code or data object 
  1836.  
  1837.              A code object is comprised of segments with class name ending in 
  1838.              CODE. All other objects are data objects. 
  1839.  
  1840.  address     Location, within the file, of the contents of the object (in 
  1841.              hexadecimal) 
  1842.  
  1843.  file        Size of the object (in bytes), as contained in the file (in 
  1844.              hexadecimal) 
  1845.  
  1846.  mem         Size of the object (in bytes), as it is stored in memory (in 
  1847.              hexadecimal) 
  1848.  
  1849.              If the value of this field is greater than the value of <file>, 
  1850.              the operating system pads the additional space with zero values at 
  1851.              load time. 
  1852.  
  1853.  flags       Object attributes 
  1854.  
  1855.              If the /VERBOSE option is not used, only non-default attributes 
  1856.              are listed.  Attributes are given in the form specified in the 
  1857.              module-definition file. 
  1858.  
  1859.  
  1860. ΓòÉΓòÉΓòÉ 4.3.3. Output Example ΓòÉΓòÉΓòÉ
  1861.  
  1862. The following output is generated by EXEHDR for the executable file 
  1863. LINK386.EXE: 
  1864.  
  1865. Module:                    LINK386
  1866. Description:               Operating System/2 32-bit LX Linker
  1867. Data:                      NONSHARED
  1868. Initial CS:IP:            seg   2 offset 6c78
  1869. Initial SS:SP:            seg   4 offset 0000
  1870. Extra stack allocation:    4000 bytes
  1871. DGROUP:                    seg   4
  1872.  
  1873. no. type address  file  mem   flags
  1874.   1 CODE 00006000 0f7d6 0f7d7
  1875.   2 CODE 00015a00 08e40 08e40
  1876.   3 DATA 0001ea00 02865 02865
  1877.   4 DATA 00021400 02337 08bd0
  1878.  
  1879.  
  1880. ΓòÉΓòÉΓòÉ 4.3.4. Verbose Output ΓòÉΓòÉΓòÉ
  1881.  
  1882. When you specify the /VERBOSE option, EXEHDR generates additional output: 
  1883.  
  1884.      DOS-specific header information. All OS/2 executable files have a DOS 
  1885.       header, whether bound or not.  If the program is not bound, the DOS 
  1886.       portion typically consists of a stub that simply terminates the program. 
  1887.  
  1888.      OS/2-specific header information. The object-table display in verbose 
  1889.       mode is described below. 
  1890.  
  1891.      File addresses and lengths of the various tables in the executable file. 
  1892.       For each table, the following is generated: 
  1893.  
  1894.         -  Name of the table 
  1895.         -  Address of the table within the file 
  1896.         -  Length of the table in hexadecimal radix 
  1897.         -  Length of the table in decimal radix 
  1898.  
  1899.      Object table with complete attributes, not just the non-default 
  1900.       attributes. The /VERBOSE option displays two additional attributes: 
  1901.  
  1902.         -  The RELOCS attribute is displayed for each object that has address 
  1903.            relocations. Relocations occur in each object that references 
  1904.            objects in other objects or makes dynamic-link references. 
  1905.         -  The ITERATED attribute is displayed for each object that has 
  1906.            iterated data. Iterated data consist of a special code that packs 
  1907.            repeated bytes. 
  1908.  
  1909.      Run-time relocations and fixups. 
  1910.  
  1911.      All exported entry points. 
  1912.  
  1913.  
  1914. ΓòÉΓòÉΓòÉ 5. Font Editor ΓòÉΓòÉΓòÉ
  1915.  
  1916. You can use the OS/2 Font Editor to design and save your own fonts for use in 
  1917. applications. 
  1918.  
  1919. A font is a set of alphanumeric characters, punctuation marks, and other 
  1920. symbols that share a common typeface design and line weight. An application 
  1921. loads a font from a dynamic-link library file (.DLL file). 
  1922.  
  1923. The Font Editor allows you to edit an enlarged version of each character in an 
  1924. editing window, using the mouse to switch the enlarged representation of pels 
  1925. to black or white. 
  1926.  
  1927. You can change a series of pels by dragging the mouse pointer through them 
  1928. while holding down the mouse button. An enlarged scale version of the character 
  1929. is shown in a viewing window to the right of the edit window. 
  1930.  
  1931.  
  1932. ΓòÉΓòÉΓòÉ 5.1. Using the Font Editor ΓòÉΓòÉΓòÉ
  1933.  
  1934. To run the Font Editor, select Font Editor from the PM Development Tools 
  1935. folder. 
  1936.  
  1937. Select one of the options in the File menu to open a new or existing font. The 
  1938. letter A appears in both the editing and viewing windows. The rest of the font 
  1939. appears in the character selection scroll box at the bottom of the Font Editor 
  1940. window. 
  1941.  
  1942. To edit any other character in the font, select it from the character selection 
  1943. scroll box.  The character appears in the editing and viewing windows. 
  1944.  
  1945. Font Editing Functions 
  1946.  
  1947.       Functions for defining fonts are found on the Header menu. 
  1948.  
  1949.       Functions for editing character width are found on the Width and Shift 
  1950.       menus. 
  1951.  
  1952.  
  1953. ΓòÉΓòÉΓòÉ 5.1.1. Defining Fonts ΓòÉΓòÉΓòÉ
  1954.  
  1955. Use the Header menu to define the typestyle that you want to create: 
  1956.  
  1957.      Select Naming to specify the identification details such as the type-face 
  1958.       name. 
  1959.  
  1960.      Select General to specify spacing (fixed or proportional), type face 
  1961.       style, line width, and type weight. 
  1962.  
  1963.      Select Sizes to specify the font character dimensions. 
  1964.  
  1965.      Select Relations to specify the position of characters. 
  1966.  
  1967.      Select Definition to change character spacing in a proportional font. 
  1968.  
  1969.  
  1970. ΓòÉΓòÉΓòÉ 5.1.2. Editing Character Width ΓòÉΓòÉΓòÉ
  1971.  
  1972. The Width and Shift menus allow you to change the width of individual 
  1973. characters. 
  1974.  
  1975. The Width Menu 
  1976.  
  1977. Use the Width menu to alter the width of a single character. This menu is 
  1978. enabled only when you are editing a proportional space font. You can make a 
  1979. character wider or narrower by adding or deleting columns of pels from the 
  1980. right, the left, or both sides. You may also use the Set Character Increment 
  1981. option to set the width of a character. On-line help panels describe how to 
  1982. perform these functions. 
  1983.  
  1984. The Shift Menu 
  1985.  
  1986. Use the Shift menu to insert a one-pel-wide row or column into (or delete from) 
  1987. the character that you are editing. When you select shift, the pointer becomes 
  1988. a flat horizontal or vertical bar when inside the edit window.  This enables 
  1989. you to position it exactly where you want the operation to take place. 
  1990.  
  1991. To cancel a shift you have selected before execution, select Cancel Choice. 
  1992.  
  1993.  
  1994. ΓòÉΓòÉΓòÉ 5.1.3. Font Resource Files ΓòÉΓòÉΓòÉ
  1995.  
  1996. The Font Editor creates a file with a .FNT extension. The .FNT file is not 
  1997. referred to in the same resource file as other resources. 
  1998.  
  1999. Instead, it has its own resource file that contains a single-line statement 
  2000. that has a similar format to the ICON, POINTER, and BITMAP statements, for 
  2001. example: 
  2002.  
  2003. FONT  101      myfont.fnt     /* Font */
  2004.  
  2005. The FONT keyword identifies the resource type. 
  2006.  
  2007. The resource type is followed by an integer identifier that is used by the 
  2008. application to identify the resource. The integer is used as a parameter to the 
  2009. WinCreateStdWindow call. You cannot use a symbolic name for a font. 
  2010.  
  2011. The integer identifier can be followed by loading and memory options. Again, 
  2012. the example lets them default. 
  2013.  
  2014. The last part of the statement is the file name of the resource created by the 
  2015. Font Editor. A full path name must be given if it is not in the current 
  2016. directory. 
  2017.  
  2018. Producing a font file uses a process similar to binding resources to an .EXE 
  2019. file. You bind one or more .FNT files to a dummy .DLL, to produce a file 
  2020. containing the font or fonts. The final file should have the extension .FON. 
  2021.  
  2022. The .FON file created by the process is installed on the system and becomes a 
  2023. public font, a font that can be used by any application in the system. 
  2024.  
  2025. A font not installed on the system is called a private font. Before your 
  2026. application can use the font, your application must use GpiLoadFonts to load 
  2027. the .FON file. 
  2028.  
  2029.  
  2030. ΓòÉΓòÉΓòÉ 6. Forwarded Entry Point (FWDSTAMP) ΓòÉΓòÉΓòÉ
  2031.  
  2032. FWDSTAMP adds entry points, called forwarders, to a dynamic link library file 
  2033. (.DLL). Forwarders point to API functions or other exported code or data. They 
  2034. contain an import reference so that the final target address of the forwarded 
  2035. entry is contained in a different module. A forwarder might be called an 
  2036. imported export. 
  2037.  
  2038. When a file has a fix-up to a forwarded entry point, the loader resolves that 
  2039. fix-up to the address of the entry point that the forwarder imports, by 
  2040. traversing the chain of forwarders until the end of the chain (a nonforwarded 
  2041. export) is reached.  All forwarders are implicitly exported. 
  2042.  
  2043. The imported entry point that a forwarder refers to may itself be another 
  2044. forwarder. The loader will process a chain of forwarders until a nonforwarder 
  2045. entry point is encountered. 
  2046.  
  2047. There is no run-time cost to forwarders; however, there is a slight load-time 
  2048. cost as the loader resolves forwarder chains with their final addresses. 
  2049.  
  2050.  
  2051. ΓòÉΓòÉΓòÉ 6.1. Using Forwarders ΓòÉΓòÉΓòÉ
  2052.  
  2053. You use forwarders to combine several DLLs into one without having to relink 
  2054. old applications. For example, if MOUCALLS and VIOCALLS were combined into a 
  2055. single DLL called NEWLIB.DLL, then MOUCALLS and VIOCALLS could be replaced with 
  2056. special DLLs containing forwarders to NEWLIB.DLL. 
  2057.  
  2058. Important Notes 
  2059.  
  2060.      FWDSTAMP parses only the IMPORTS and EXPORTS section of the module 
  2061.       definition file.  FWDSTAMP does not verify the syntax of the other 
  2062.       sections. 
  2063.  
  2064.      When exported names already exist in the input file, their attributes are 
  2065.       kept, such as resident or nonresident names table, and ordinal numbers. 
  2066.       Any new conflicting attributes are ignored. 
  2067.  
  2068.      If there is no exported name, FWDSTAMP adds the one defined by the 
  2069.       EXPORTS statement in the module definition file. 
  2070.  
  2071.  
  2072. ΓòÉΓòÉΓòÉ 6.1.1. Starting FWDSTAMP ΓòÉΓòÉΓòÉ
  2073.  
  2074. You can start FWDSTAMP and specify all input from the command line.  An example 
  2075. of the syntax follows: 
  2076.  
  2077.    FWDSTAMP [options] infile deffile outfile
  2078.  
  2079.  [options]   Specifies one of the following: 
  2080.  
  2081.              /?               Displays FWDSTAMP help panel. 
  2082.  
  2083.              /V               Increases the level of information FWDSTAMP 
  2084.                               should output. 
  2085.  
  2086.  infile      Specifies the name of the dynamic link library file that LINK386 
  2087.              created.  Use the file-name extension of DLL. 
  2088.  
  2089.  deffile     Specifies the name of the module definition file (.DEF) that 
  2090.              contains the forwarders. (See Example). 
  2091.  
  2092.  outfile     Specifies the name of the .DLL file that will contain the added 
  2093.              forwarders. 
  2094.  
  2095.  
  2096. ΓòÉΓòÉΓòÉ 6.1.2. Example ΓòÉΓòÉΓòÉ
  2097.  
  2098. Forwarders are specified in the module definition file so that an exported 
  2099. name, which is also imported, is a forwarder. For example: 
  2100.  
  2101.         IMPORTS
  2102.             VIOMODEWAIT=NEWLIB.123
  2103.         EXPORTS
  2104.             VIOMODEWAIT @ 25
  2105.  
  2106. In the example, a forwarder entry point for VIOMODEWAIT is created and contains 
  2107. an import reference to NEWLIB.123. 
  2108.  
  2109.  
  2110. ΓòÉΓòÉΓòÉ 7. Generate Message Catalog Utility (GENCAT) ΓòÉΓòÉΓòÉ
  2111.  
  2112. One of the requirements for internationalization of programs is that messages 
  2113. be displayed in the language of the user. This requirement is satisfied by 
  2114. producing versions of the messages which are translated into all supported 
  2115. languages. 
  2116.  
  2117. The OS2 C library messaging support is based on the messaging support described 
  2118. in the X/Open XPG4 specification. It consists of functions for extracting 
  2119. messages from message catalog files (catopen, catgets, catclose) and utilities 
  2120. for producing message catalog files (gencat, mkcatdef). The functions are 
  2121. documented in the C Library Reference and the utilities are documented in this 
  2122. book. 
  2123.  
  2124. The Generate Message Catalog Utility (GENCAT) creates and modifies a message 
  2125. catalog. GENCAT creates the message catalog (usually *.cat) from a message text 
  2126. source file (usually *.msg) or standard input. 
  2127.  
  2128. If a message catalog with the name specified by the CatalogFile parameter 
  2129. exists, GENCAT modifies it according to the statements in the specified message 
  2130. source files. If the message catalog does not exist, GENCAT creates a catalog 
  2131. file with the name specified by the CatalogFile parameter. 
  2132.  
  2133. You can specify any number of message source files.  GENCAT processes  multiple 
  2134. source files, one after another, in the sequence specified. Each successive 
  2135. source file modifies the catalog. If you do not specify a source file, GENCAT 
  2136. accepts message source data from standard input. 
  2137.  
  2138. GENCAT does not accept symbolic message identifiers. You must run MKCATDEF if 
  2139. you want to use symbolic message identifiers in your message source file (see 
  2140. Preprocess Message Source File Utility (MKCATDEF)). 
  2141.  
  2142.  
  2143. ΓòÉΓòÉΓòÉ 7.1. Syntax ΓòÉΓòÉΓòÉ
  2144.  
  2145. gencat CatalogFile [ SourceFile ... ]
  2146.  
  2147.  
  2148. ΓòÉΓòÉΓòÉ 7.1.1. Examples ΓòÉΓòÉΓòÉ
  2149.  
  2150. To generate a TEST.CAT catalog from the source file TEST.MSG, enter: 
  2151.  
  2152. gencat test.cat test.msg
  2153.  
  2154. The TEST.MSG file does not contain symbolic identifiers. 
  2155.  
  2156.  
  2157. ΓòÉΓòÉΓòÉ 7.2. Source File Syntax ΓòÉΓòÉΓòÉ
  2158.  
  2159. All fields of a source line are separated by a single blank character. Any 
  2160. other blank characters are considered as being part of the subsequent field. 
  2161.  
  2162. Comments begin with a $ followed by a space and the text of the comment. For 
  2163. example: 
  2164.  
  2165. $ This is a comment
  2166.  
  2167. A $set directive is used to associate a message number with all subsequent 
  2168. messages, until the end of file or the next $set directive. The format is: 
  2169.  
  2170. $set <number> <comment>
  2171.  
  2172. For example: 
  2173.  
  2174. $set 1 this is the first set in the file
  2175.  
  2176. The set number must be in the range [1, {NL_SETMAX}]. Set numbers must be 
  2177. ascending within the file, but need not be contiguous. Any string following the 
  2178. set number is treated as a comment. If no $set directive is specified in a 
  2179. message text source file, all messages will be located in an 
  2180. implementation-defined default message set NL_SETD. 
  2181.  
  2182. A $delset directive is used to delete a message set from an existing message 
  2183. file. The format is: 
  2184.  
  2185. $delset <number> <comment>
  2186.  
  2187. For example: 
  2188.  
  2189. $delset 1 this deletes any previous definition of set 1 from this file
  2190.  
  2191. A message consists of a message number followed by the message text. The 
  2192. message number must be in the range [1, {NL_MSGMAX}]. The message text is 
  2193. stored in the message catalog with the set identifier specified by the last 
  2194. $set directive, and with message the message number. If the message text is 
  2195. empty, and a blank character field separator is present, an empty string is 
  2196. stored in the message catalog. If a message source line has a message number, 
  2197. but neither a field separator nor message text, the existing message with that 
  2198. number (if any) is deleted from the set. Message numbers must be in ascending 
  2199. order with a single set, but need not be contiguous. The length of the message 
  2200. text must be in the range [0, {NL_TEXTMAX}]. 
  2201.  
  2202. For example: 
  2203.  
  2204. 1 "This is the first message"
  2205. 2 "This is the second message"
  2206.  
  2207. A $quote directive specifies an optional quote character, which can be used to 
  2208. surround message text so that trailing spaces or null messages are visible in a 
  2209. message source line. By default, or if an empty $quote directive is supplied, 
  2210. no quoting of message text will be recognized. The format is: 
  2211.  
  2212. $quote <character>
  2213.  
  2214. For example: 
  2215.  
  2216. $quote "
  2217.  
  2218. Empty lines in the message file are ignored. The effects of lines starting with 
  2219. any character other than those defined above are implementation-defined. 
  2220.  
  2221. Text strings can contain the special characters and escape sequences defined in 
  2222. the following table: 
  2223.  
  2224. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2225. ΓöéDescription                             ΓöéSequence            Γöé
  2226. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2227. Γöénewline                                 Γöé\n                  Γöé
  2228. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2229. Γöéhorizontal tab                          Γöé\t                  Γöé
  2230. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2231. Γöévertical tab                            Γöé\v                  Γöé
  2232. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2233. Γöébackspace                               Γöé\b                  Γöé
  2234. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2235. Γöécarriage-return                         Γöé\r                  Γöé
  2236. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2237. Γöéform-feed                               Γöé\f                  Γöé
  2238. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2239. Γöébackslash                               Γöé\\                  Γöé
  2240. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2241. Γöéoctal character encoding                Γöé\ddd  (three or     Γöé
  2242. Γöé                                        Γöéfewer octal digits) Γöé
  2243. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2244.  
  2245. If the character following a backslash is not one of the above or the end of 
  2246. line, the backslash is ignored. A backslash at the end of a line is used to 
  2247. continue a string on the following line. For example: 
  2248.  
  2249. 1 This line continues \
  2250. to the next line
  2251.  
  2252.  
  2253. ΓòÉΓòÉΓòÉ 7.3. Related Information ΓòÉΓòÉΓòÉ
  2254.  
  2255.      MKCATDEF (see Preprocess Message Source File Utility (MKCATDEF)) 
  2256.  
  2257.      catclose, catgets and catopen (see C Library Reference) 
  2258.  
  2259.  
  2260. ΓòÉΓòÉΓòÉ 8. Icon Editor ΓòÉΓòÉΓòÉ
  2261.  
  2262. The Icon Editor lets you create your own art (icons, pointers, and bit maps) 
  2263. and save them for use by applications. 
  2264.  
  2265. Icons, pointers, and bit maps produced by the Icon Editor are graphic symbols 
  2266. that are made up of pels (also known as pixels) in any of the following display 
  2267. states: 
  2268.  
  2269.      Black 
  2270.      White 
  2271.      Color 
  2272.      Screen (background color) 
  2273.      Inverse screen (inverse of background color) 
  2274.  
  2275.  An application can use an icon to represent a minimized standard window.  For 
  2276.  example, an application that lists telephone numbers could use a telephone 
  2277.  icon when minimized.  An application can also use icons as warning symbols in 
  2278.  message boxes (for example, an exclamation mark or an upraised hand). 
  2279.  
  2280.  An application can associate a pointer with the mouse or similar pointing 
  2281.  device, so that the user can move the pointer around the screen to select 
  2282.  controls or text.  A pointer could also be used in an interactive graphics 
  2283.  application to draw graphics on the screen. For example, a free-hand 
  2284.  graphics-drawing application could use a pencil shape to represent the 
  2285.  pointer. 
  2286.  
  2287.  
  2288. ΓòÉΓòÉΓòÉ 8.1. Using the Icon Editor ΓòÉΓòÉΓòÉ
  2289.  
  2290. To run the Icon Editor, select the Development Tools folder and then select 
  2291. Icon Editor. 
  2292.  
  2293. The Icon Editor window consists of three parts:  the information panel, the 
  2294. palette window, and the editing window. 
  2295.  
  2296. The information panel at the top of the Icon Editor window displays the 
  2297. following information: 
  2298.  
  2299.      A picture of a two-button mouse, showing the colors currently selected 
  2300.       for each button 
  2301.  
  2302.      An actual-size image of the current figure that you are editing 
  2303.  
  2304.      The status area, showing the following: 
  2305.  
  2306.         -  Size (defined as 32 x 32 for icons and pointers; user-defined for 
  2307.            bit maps) 
  2308.         -  Pen location 
  2309.         -  Pen size (from 1 x 1 to 9 x 9) 
  2310.         -  Hot spot (for icons and pointers, but not bit maps) 
  2311.         -  Figure type (icon, pointer, or bit map) 
  2312.         -  Form name 
  2313.  
  2314.  The palette window, in the lower-right corner, displays the colors that are 
  2315.  available for use during editing. The colors currently selected are marked 
  2316.  with frames. 
  2317.  
  2318.  The editing window is the largest part of your working area.  Use the mouse or 
  2319.  keyboard to move the pointer, clicking or dragging the pointer to paint the 
  2320.  enlarged representation of pels with the selected color. 
  2321.  
  2322.  
  2323. ΓòÉΓòÉΓòÉ 8.1.1. Creating a Figure ΓòÉΓòÉΓòÉ
  2324.  
  2325. The Edit menu includes the functions used to select an icon, pointer, or bit 
  2326. map for editing, and to save it after you are through. 
  2327.  
  2328. Selecting your icon, pointer, or bit map 
  2329.  
  2330.      To create a new icon, pointer, or bit map, select New from the File menu. 
  2331.       The New Figure pop-up window appears, prompting you for more information. 
  2332.  
  2333.       Select the figure type:  Icon, Pointer, or Bit map. For a bit map, you 
  2334.       must specify the width and height in pels. Select Enter. 
  2335.  
  2336.       You can also create new art by modifying or editing an existing art of 
  2337.       the same type. 
  2338.  
  2339.      To edit existing art, select Open from the File menu. You will be 
  2340.       prompted for a name. 
  2341.  
  2342.       Note:  Unless you have turned off Safe Prompting on the Options menu, you 
  2343.              will be prompted to save if you select Open or New while there is 
  2344.              unsaved art on your screen. 
  2345.  
  2346.      If you started the Icon Editor from a command prompt and specified 
  2347.       multiple files, you can use the Next option on the File menu to select 
  2348.       the next file. 
  2349.  
  2350.       The Next option will not be selectable if you did not start from the 
  2351.       command line and specify multiple files. 
  2352.  
  2353.  Saving your icon, pointer, or bit map 
  2354.  
  2355.  To save your art, select either of the following: 
  2356.  
  2357.      Save to save it under its current file name. If this is new art, you will 
  2358.       be prompted for a name. 
  2359.  
  2360.      Save As to save it under a different name. You will be prompted for a new 
  2361.       name. 
  2362.  
  2363.  
  2364. ΓòÉΓòÉΓòÉ 8.1.2. Editing Art ΓòÉΓòÉΓòÉ
  2365.  
  2366. To edit your art, use the functions of the Edit menu. 
  2367.  
  2368. Select Undo to restore the art to the way it was before the most-recent editing 
  2369. operation. 
  2370.  
  2371. Four of the editing functions require that you first mark the area to be 
  2372. edited, using Select or Select All. 
  2373.  
  2374. If you choose Select, the cursor changes to a plus (+) inside a square. Hold 
  2375. mouse button 1 down to anchor one corner, and then drag the mouse.  Release the 
  2376. button to anchor the opposite corner of the rectangular area you want to edit. 
  2377.  
  2378. If you choose Select All, the entire figure is selected. 
  2379.  
  2380. The following functions require that an area be selected first: 
  2381.  
  2382.      Fill to fill the selected area with the current palette color.  For 
  2383.       additional information, see Filling Areas with Color. 
  2384.  
  2385.      Cut to cut an area you would like to move or delete. 
  2386.  
  2387.      Copy to copy an area you would like to duplicate elsewhere in the same 
  2388.       file or in another file. 
  2389.  
  2390.      Paste to place an area you have marked with Cut or Copy.  Drag the 
  2391.       outlined area that you have marked to the place you would like to paste 
  2392.       it. 
  2393.  
  2394.      Clear to erase all drawing within an area you have selected and leave 
  2395.       transparent pels. If you have used Select All, this will clear your 
  2396.       entire icon, pointer, or bit map. 
  2397.  
  2398.      Stretch Paste to paste the clipboard contents into your art, stretching 
  2399.       and positioning them to fit. 
  2400.  
  2401.      Flip Horizontal to flip the art on its horizontal axis, reversing bottom 
  2402.       and top. 
  2403.  
  2404.      Flip Vertical to flip the art on its vertical axis, reversing left and 
  2405.       right.  You can create a symmetrical drawing by copying one side of the 
  2406.       art to the other side, and then flipping one of them. 
  2407.  
  2408.      Circle to inscribe a circle or ellipse within the selected area. 
  2409.  
  2410.  
  2411. ΓòÉΓòÉΓòÉ 8.1.3. Using Options ΓòÉΓòÉΓòÉ
  2412.  
  2413. The choices on the Options menu enable you to test your art and vary your 
  2414. editing environment. To change an option, from the Options menu, select: 
  2415.  
  2416.  Test 
  2417.       To view the pointer or icon you are editing. The pointer or icon will be 
  2418.       displayed, in actual size, as the pointer until you toggle back by again 
  2419.       selecting Test from the Options menu. 
  2420.  
  2421.  Grid 
  2422.       To superimpose a grid over the editing window. This can be useful when 
  2423.       you want to draw a symmetrical figure. Each cell of the grid represents 
  2424.       one pel in the figure. 
  2425.  
  2426.  X background 
  2427.       To make the transparent pels (where the background is visible) apparent 
  2428.       when editing an icon or pointer.  All screen or inverse-screen colors 
  2429.       will be shown with an X.  This option does not apply to bit maps because 
  2430.       they have no transparent pels. 
  2431.  
  2432.  Draw Straight 
  2433.       To temporarily restrict your drawing to straight vertical and horizontal 
  2434.       lines.  Even if you deviate from the horizontal row, a horizontal line is 
  2435.       produced when the mouse pointer is dragged across the editing window. 
  2436.       Dragging the mouse up or down produces straight vertical lines. 
  2437.  
  2438.  Changing Pen Size 
  2439.       Select Pen size on the Options menu to specify how many pels the pointer 
  2440.       paints at a time. You can select any of nine square pen sizes: 
  2441.  
  2442.             ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2443.             Γöé 1x1       Γöé 4x4       Γöé 7x7       Γöé
  2444.             Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2445.             Γöé 2x2       Γöé 5x5       Γöé 8x8       Γöé
  2446.             Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2447.             Γöé 3x3       Γöé 6x6       Γöé 9x9       Γöé
  2448.             ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2449.  
  2450.       Shortcut: Select a pen size by pressing Ctrl and the size, such as Ctrl+6 
  2451.       for a 6 x 6 pen size. 
  2452.  
  2453.  Setting Preferences 
  2454.       To change your preferences, select Preferences from the Options menu. 
  2455.       Then select any of the following: 
  2456.  
  2457.       Safe prompting 
  2458.                 Provide a warning before destructive operations such as file 
  2459.                 overwrites. 
  2460.  
  2461.       Suppress Warnings 
  2462.                 Suppress display of informational messages. 
  2463.  
  2464.       Save state on exit 
  2465.                 Save settings for your next session. 
  2466.  
  2467.       Display status area 
  2468.                 Toggle between the picture of the mouse and the art from the 
  2469.                 status area. 
  2470.  
  2471.       Reset options and modes 
  2472.                 Deselect the following items: 
  2473.  
  2474.                      Select 
  2475.                      Hot Spot 
  2476.                      Color Fill 
  2477.                      Find Color The palette will not be reset. 
  2478.  
  2479.  Changing Pen Shape 
  2480.       Before you select Pen Shape, you must first select the shape using the 
  2481.       Select function on the Edit menu. See Editing Art for information about 
  2482.       Select. Then select Set Pen Shape on the Options menu. 
  2483.  
  2484.  Defining a Hot Spot 
  2485.       The Hot spot is the pel where mouse input for an icon or pointer is 
  2486.       directed.  The default hot spot location is 16 x 16, the center of the 
  2487.       icon or pointer.  Bit maps do not have hot spots. 
  2488.  
  2489.       Select Hot spot from the Options menu to designate this pel. The cursor 
  2490.       changes shape, and the screen coordinates of the current hot spot are 
  2491.       displayed in the information window. When you click on a new hot spot, 
  2492.       the screen coordinates of the new hot spot are displayed. 
  2493.  
  2494.       Select Hotspot again to return to editing. 
  2495.  
  2496.       When an application uses WinQueryPointerPos to query the screen position 
  2497.       of a pointer, the OS/2 operating system returns the coordinates of the 
  2498.       pointer hot spot. 
  2499.  
  2500.  
  2501. ΓòÉΓòÉΓòÉ 8.1.4. Selecting Colors ΓòÉΓòÉΓòÉ
  2502.  
  2503. Use Palette to select a new drawing color, using mouse button 1 or 2. 
  2504.  
  2505. The currently selected color for mouse button 2 is framed on the palette in 
  2506. red; the color for mouse button 1 is framed in green. The currently selected 
  2507. colors for both mouse buttons are also displayed at the left side of the status 
  2508. area. 
  2509.  
  2510. Changing Palettes or Palette Colors 
  2511.  
  2512. To change palettes or palette colors, select the Palette menu.  On the Palette 
  2513. menu, you can: 
  2514.  
  2515.      Select New to create a new palette.  The default palette will appear for 
  2516.       you to edit. 
  2517.  
  2518.      Select Open to open an existing palette. 
  2519.  
  2520.      Select Save to save your current palette. If it is a new palette, you 
  2521.       will be prompted for a name. 
  2522.  
  2523.      Select Save as to save the palette under a different name. You will be 
  2524.       prompted for a new name. 
  2525.  
  2526.      Select Edit color to edit a color in your palette. 
  2527.  
  2528.      Select Swap colors to swap the colors of mouse buttons 1 and 2.  A 
  2529.       submenu will appear, asking whether you want to preserve these colors in 
  2530.       your art.  Unless you select Preserve figure, the colors in your art will 
  2531.       be changed accordingly. 
  2532.  
  2533.      Select Set default palette to save the existing palette as your default 
  2534.       palette. 
  2535.  
  2536.  
  2537. ΓòÉΓòÉΓòÉ 8.1.5. Editing Palette Colors ΓòÉΓòÉΓòÉ
  2538.  
  2539. To change the colors that appear on your palette, follow these steps: 
  2540.  
  2541.    1. Select the color to be edited with the mouse. A frame appears around it 
  2542.       on the palette. 
  2543.  
  2544.    2. Select Edit color from the Palette menu. 
  2545.  
  2546.       Shortcuts: 
  2547.  
  2548.           Double-click on the color to be edited. 
  2549.           To select a color that you have already used in your art, use Find 
  2550.            color on the Tools menu. 
  2551.  
  2552.       The Edit Color window will appear. 
  2553.  
  2554.    3. You can change the way you define palette colors by checking Dynamic 
  2555.       editing and Important and choosing between RGB and HSV terms. 
  2556.  
  2557.           Dynamic editing, when checked, will make your art change dynamically 
  2558.            as you edit individual colors, so that you can see how the changes 
  2559.            will affect your art. 
  2560.  
  2561.           Important, when checked, will require that the color be accurately 
  2562.            rendered, without dithering (approximating the color). 
  2563.  
  2564.           Every color can be described numerically in either RGB or HSV terms: 
  2565.  
  2566.            RGB          As proportions of the primary colors red, blue, and 
  2567.                         green 
  2568.  
  2569.            HSV          In terms of hue, saturation, and value 
  2570.  
  2571.            To toggle between RGB and HSV, select the appropriate radio button. 
  2572.  
  2573.    4. Use the scroll bars to change RGB or HSV values, or change these numbers 
  2574.       from the keyboard. 
  2575.  
  2576.    5. Select OK to save the edited color. 
  2577.  
  2578.  
  2579. ΓòÉΓòÉΓòÉ 8.1.6. Filling Areas with Color ΓòÉΓòÉΓòÉ
  2580.  
  2581. There are two ways to fill an area with color: 
  2582.  
  2583.      To fill an irregularly-shaped area with the current palette color, select 
  2584.       Color fill from the Tools menu. 
  2585.  
  2586.       After you click on a specific pel, all adjoining areas that are the same 
  2587.       color as that pel will be colored with the selected color. 
  2588.  
  2589.      To fill a previously-selected area with the current palette color, select 
  2590.       Fill from the Edit menu. You must first select an area. See Editing Art 
  2591.       for information about Select and Select All. 
  2592.  
  2593.  Note:  To select a color that you have already used in your art, use Find 
  2594.         color on the Tools menu. A question-mark-arrow cursor will appear. 
  2595.  
  2596.  Click on a specific pel of that color, and that color is selected. 
  2597.  
  2598.  
  2599. ΓòÉΓòÉΓòÉ 8.1.7. Creating Icons for Specific Displays ΓòÉΓòÉΓòÉ
  2600.  
  2601. Although the Icon Editor edits and saves a device-independent form of the icon, 
  2602. the Device menu enables you to create versions of the icon for specific display 
  2603. devices. 
  2604.  
  2605. An independent form is automatically created when you create a new icon or 
  2606. pointer and all other forms are derived from it.  If you select any of the 
  2607. other device forms listed in the menu, a new form is created for the specified 
  2608. device.  The Custom option enables you to create an icon or pointer for any 
  2609. other device. 
  2610.  
  2611. Select List to view a list of all existing forms, including custom and standard 
  2612. forms.  Any item in this list can be selected and edited or deleted.  However, 
  2613. you must have at least one device-independent form.  Select Add in the list 
  2614. dialog to add a new device form. 
  2615.  
  2616. Several icon bit maps can be saved in a single icon resource; when the icon is 
  2617. saved, all versions are saved with it in a format that includes a device 
  2618. resolution tag for each version.  When the icon is loaded from a resource file, 
  2619. the display device resolution is matched against the device for which each 
  2620. device-dependent icon was intended. If a match is found, that icon is used.  If 
  2621. no match is found, the application uses the device-independent icon, which 
  2622. always exists. 
  2623.  
  2624. Figure files can contain any of the following forms to support multiple 
  2625. devices: 
  2626.  
  2627.      Independent 
  2628.      CGA (2 colors) 
  2629.      EGA (16 colors) 
  2630.      VGA (16 colors) 
  2631.      XGA/8514 (256 colors) 
  2632.      XGA/8514 (16 colors) 
  2633.      XGA/8514 Small Color Form (16 colors) 
  2634.      XGA/8514 Small BW Form 
  2635.      Custom 
  2636.  
  2637.  Device-dependent icons are those that are designed for a particular display 
  2638.  resolution. 
  2639.  
  2640.  An application can display icons or bit maps in dialog boxes or windows. 
  2641.  
  2642.  The file-name extension depends on the type of resource you are creating.  The 
  2643.  Icon Editor produces a file with any of the following extensions: 
  2644.  
  2645.       ICO for icons 
  2646.       PTR for pointers 
  2647.       BMP for bit maps 
  2648.  
  2649.  The ICO, PTR, or BMP files must be referred to in the resource script file for 
  2650.  your application.  The external files containing icons, pointers, and bit maps 
  2651.  are all referred to in the resource script file by single-line statements that 
  2652.  have a similar format. For example: 
  2653.  
  2654.   ICON    ID_MAINWND myprog.ico   /* Icon    */
  2655.  
  2656.   POINTER ID_PTR     mypoint.ptr  /* Pointer */
  2657.  
  2658.   BITMAP  ID_BMP     mybtmp.bmp   /* bit map  */
  2659.  
  2660.  ICON, POINTER, and BITMAP keywords identify the resource type. 
  2661.  
  2662.  The resource type is followed by a symbolic name or integer identifier that is 
  2663.  used by your application to identify the resource.  For example, with ICON, 
  2664.  the ID_MAINWND identifier can be used by the application in the control data 
  2665.  parameter of the WinCreateWindow call (or as a parameter to the 
  2666.  WinCreateStdWindow call) that creates the frame of the main window of your 
  2667.  application. The OS/2 operating system then associates the icon with the main 
  2668.  window. 
  2669.  
  2670.  The symbolic name or identifier can be followed by any loading and memory 
  2671.  options. 
  2672.  
  2673.  The last part of the statement is the file name and file type of the resource 
  2674.  created by the Icon Editor.  A fully qualified path name must be given if the 
  2675.  file is not in the current directory.  An icon that it used for a minimized 
  2676.  application should have the same file name as the executable file of the 
  2677.  application. 
  2678.  
  2679.  
  2680. ΓòÉΓòÉΓòÉ 8.2. Using a Command Line ΓòÉΓòÉΓòÉ
  2681.  
  2682. If you start the Icon Editor from a command line rather than from an icon, you 
  2683. have an additional option available. You can load more than one file at a time 
  2684. by specifying the files on the command line. For example, the following command 
  2685. would load the two specified icons, a bit map, and a pointer: 
  2686.  
  2687. ICONEDIT Ruth.ico gurp.ico alex.bmp pamela.ptr 
  2688.  
  2689. If you specify multiple files when you start the Icon Editor from the command 
  2690. line, you can use the Next option on the File menu to select the next file. 
  2691. This option is available only if you specify multiple files from the command 
  2692. line. 
  2693.  
  2694.  
  2695. ΓòÉΓòÉΓòÉ 9. Managing Import Libraries (IMPLIB) ΓòÉΓòÉΓòÉ
  2696.  
  2697. IMPLIB creates import libraries used to link dynamic-link libraries with 
  2698. applications. 
  2699.  
  2700. Import libraries are created by IMPLIB and used to link dynamic-link libraries 
  2701. with applications. 
  2702.  
  2703. What Are Import Libraries? 
  2704.  
  2705. Import libraries are similar in some respects to standard libraries: 
  2706.  
  2707.      You specify import libraries and standard libraries in the same command 
  2708.       line field of LINK386 (see Link for Object and Library Files (LINK386) 
  2709.       for information on LINK386) or OS/2 16-bit LINK. 
  2710.  
  2711.      Both kinds of libraries resolve external references at link time. 
  2712.  
  2713.  However, import libraries differ from standard libraries in that they contain 
  2714.  no executable code. Rather, they identify the dynamic-link libraries where the 
  2715.  executable code can be found at run time. 
  2716.  
  2717.  Why Use Import Libraries? 
  2718.  
  2719.  Creating import libraries is an extra step. Nevertheless, import libraries are 
  2720.  recommended for use with all dynamic-link libraries for two reasons: 
  2721.  
  2722.      IMPLIB automates much of the program creation process for you.  To use 
  2723.       IMPLIB, supply it with the .DEF file you already created for the 
  2724.       dynamic-link library.  Without an import library, you must create a 
  2725.       second .DEF file that explicitly defines all needed functions in the 
  2726.       dynamic-link library. 
  2727.  
  2728.      Import libraries make it easier for one person to write a library and 
  2729.       another to write the application. Much of the linking process (linking 
  2730.       the .DLL file and creating the import library) can be done by the author 
  2731.       of the dynamic-link library. The import library and associated .DLL file 
  2732.       can then be given as a unit to the person linking the application - that 
  2733.       person need not worry about creating a .DEF file. 
  2734.  
  2735.  
  2736. ΓòÉΓòÉΓòÉ 9.1. Running IMPLIB ΓòÉΓòÉΓòÉ
  2737.  
  2738. The following parameters can be used with IMPLIB: 
  2739.  
  2740.  <options> 
  2741.       The option that modifies the IMPLIB output. See IMPLIB Options 
  2742.  
  2743.  <implibname> 
  2744.       Import library created 
  2745.  
  2746.  <deffile> 
  2747.       One or more module definition files that export routines in the 
  2748.       dynamic-link library 
  2749.  
  2750.  <dllfile> 
  2751.       One or more dynamic-link libraries with exported routines. 
  2752.  
  2753.  You can specify any number of either module definition files or dynamic-link 
  2754.  libraries. 
  2755.  
  2756.  By using the _export keyword in C, you can declare functions that are exported 
  2757.  from the dynamic-link library. 
  2758.  
  2759.  
  2760. ΓòÉΓòÉΓòÉ 9.1.1. IMPLIB Syntax ΓòÉΓòÉΓòÉ
  2761.  
  2762. Syntax 
  2763.  
  2764. IMPLIB [options] implibname {deffile...| dllfile...}
  2765.  
  2766. Example 
  2767.  
  2768. The following command creates the import library named MYLIB.LIB from the 
  2769. module definition file MYLIB.DEF. 
  2770.  
  2771.     IMPLIB MYLIB.LIB MYLIB.DEF
  2772.  
  2773.  
  2774. ΓòÉΓòÉΓòÉ 9.1.2. IMPLIB Help ΓòÉΓòÉΓòÉ
  2775.  
  2776. To display IMPLIB help, type the following at the command prompt: 
  2777.  
  2778.     IMPLIB /?
  2779.  
  2780. The appropriate copyright statement is displayed along with a list of IMPLIB 
  2781. options. 
  2782.  
  2783.     Usage: IMPLIB [options] implibname {deffile... | dllfile...}
  2784.     Valid options are:
  2785.         /?
  2786.         /HELP
  2787.         /IGNORECASE
  2788.         /NOIGNORECASE
  2789.         /NOLOGO
  2790.  
  2791.  
  2792. ΓòÉΓòÉΓòÉ 9.1.3. IMPLIB Options ΓòÉΓòÉΓòÉ
  2793.  
  2794. Usage Notes: 
  2795.  
  2796.      Option characters are not case sensitive: /H and /h are equivalent. 
  2797.      Options can be shortened to the fewest characters that uniquely identify 
  2798.       them.  The characters in brackets can be omitted: /NOL and /NOLOGO are 
  2799.       equivalent. 
  2800.      Although use of the minimum one-letter abbreviations is allowed, if a 
  2801.       future release has an additional option starting with the same letter, 
  2802.       the one-letter option will no longer be usable. 
  2803.  
  2804.  The following options may be used with IMPLIB: 
  2805.  
  2806.  /? 
  2807.       Displays a short summary of IMPLIB syntax. 
  2808.  
  2809.  /H[ELP] 
  2810.       Displays a short summary of IMPLIB syntax. 
  2811.  
  2812.  /I[GNORECASE] 
  2813.       Turns case sensitivity off. This is the default. 
  2814.  
  2815.  /I[GNORECASE] 
  2816.       Turns case sensitivity on. By default, case sensitivity is off. 
  2817.  
  2818.  /NOL[OGO] 
  2819.       Suppresses the sign-on banner when IMPLIB starts. 
  2820.  
  2821.  
  2822. ΓòÉΓòÉΓòÉ 9.2. IMPLIB Error Messages ΓòÉΓòÉΓòÉ
  2823.  
  2824. There are two types of IMPLIB error messages: 
  2825.  
  2826.      Fatal errors cause IMPLIB to stop running.  Message numbers IM1600 
  2827.       through IM1606 report these problems. 
  2828.  
  2829.      Nonfatal errors indicate problems in the library file. IMPLIB produces 
  2830.       the library file and sets the error bit in the header for the OS/2 
  2831.       environment.  This means that the library file cannot be run from OS/2. 
  2832.       Message numbers IM2600 through IM2604 report these problems. 
  2833.  
  2834.  IM1600 
  2835.            error while writing to output file - name 
  2836.            Explanation: There was not enough disk space available to create the 
  2837.            target library. 
  2838.            Action: Delete or move files to make space on the disk and restart 
  2839.            IMPLIB. 
  2840.  
  2841.  IM1601 
  2842.            out of memory - heap name heap exhausted 
  2843.            Explanation: There was not enough memory available to run IMPLIB. 
  2844.            Action: Reduce the number of programs presently running in your 
  2845.            system and restart IMPLIB. 
  2846.  
  2847.  IM1602 
  2848.            error in the module definitions file 
  2849.            Explanation: There was an error in the module definition (.DEF) 
  2850.            file. 
  2851.            Action: Correct the symbol shown in the message, at the line number 
  2852.            given. Restart IMPLIB. 
  2853.  
  2854.  IM1603 
  2855.            name : cannot create file reason 
  2856.            Explanation: IMPLIB was unable to open or create the target library 
  2857.            specified. 
  2858.            Action: Check the file name and available space. Restart IMPLIB. 
  2859.  
  2860.  IM1604 
  2861.            name : cannot open file - reason 
  2862.            Explanation: IMPLIB was unable to open one of the specified input 
  2863.            module definition (.DEF) files. 
  2864.            Action: Check the file name. Restart IMPLIB. 
  2865.  
  2866.  IM1605 
  2867.            too many nested include files in module definition file 
  2868.            Explanation: The .DEF file exceeded a nesting level. 
  2869.            Action: Combine some nestings into one .DEF file and try again. 
  2870.  
  2871.  IM1606 
  2872.            missing or bad include file name 
  2873.            Explanation: IMPLIB could not find a file included by .DEF file. 
  2874.            Action: Make sure the file exists and can be located and that any 
  2875.            path is specified correctly. Try again. 
  2876.  
  2877.  IM2600 
  2878.            line number is too long; truncated to length characters 
  2879.            Explanation: You have tried to export more than 8192 names. 
  2880.            Action: Retry with fewer names, creating an additional executable 
  2881.            module if necessary. 
  2882.  
  2883.  IM2601 
  2884.            symbol multiply defined 
  2885.            Explanation: An export name was repeated within or across the module 
  2886.            definition (.DEF) files. 
  2887.            Action: Eliminate duplicate definitions of the export name. 
  2888.  
  2889.  IM2602 
  2890.            unexpected end of name table in DLL 
  2891.            Explanation: IMPLIB encountered an error when reading the module 
  2892.            names table or procedures names table. 
  2893.            Action: The 9per.DLL file is corrupted. Check to make sure that the 
  2894.            DLL was generated by OS/2 LINK or LINK386. 
  2895.  
  2896.  IM2603 
  2897.            name : invalid .DLL file 
  2898.            Explanation: IMPLIB could not parse the DLL properly. 
  2899.            Action: The .DLL file is corrupted. Check to make sure that the DLL 
  2900.            was generated by OS/2 LINK or LINK386. 
  2901.  
  2902.  IM2604 
  2903.            unrecognized option 'option'; option ignored 
  2904.            Explanation: You specified an incorrect option. 
  2905.            Action: Specify a correct IMPLIB option. 
  2906.  
  2907.  
  2908. ΓòÉΓòÉΓòÉ 10. Quick Information (KwikINF) ΓòÉΓòÉΓòÉ
  2909.  
  2910. KwikINF provides you with a quick and convenient method of accessing 
  2911. information in online documents stored in the OS/2 BOOKSHELF from anywhere on 
  2912. the desktop, with the exception of DOS or WIN-OS/2 sessions. When KwikINF has 
  2913. been started, you can open a dialog with KwikINF by pressing a user-selectable 
  2914. hot key. Until you configure KwikINF, your KwikINF hot key is ALT+Q. The 
  2915. KwikINF window includes a Configure push button. This opens another dialog with 
  2916. KwikINF:  the Configure KwikINF window. The KwikINF window also allows you to 
  2917. initiate searches for text strings in online documents of choice. 
  2918.  
  2919.  
  2920. ΓòÉΓòÉΓòÉ 10.1. Automatic Text Retrieval ΓòÉΓòÉΓòÉ
  2921.  
  2922. The KwikINF window includes a Search String entry field. You can specify the 
  2923. text string you want KwikINF to search for. Or, under certain conditions, this 
  2924. entry field automatically contains the word located under the cursor when you 
  2925. press your KwikINF hot key. This text retrieval feature is available from OS/2 
  2926. full-screen and Presentation Manager (PM) multi-line entry (MLE) fields. This 
  2927. feature is also available from PM AVIO and VIO windows. Communication Manager's 
  2928. 3270 emulator is a common example of a PM AVIO window. An OS/2 Window is a VIO 
  2929. window. This means that if, for example, you open an OS/2 Window and start an 
  2930. OS/2 text-based application, KwikINF will automatically retrieve the word under 
  2931. the cursor when you press your KwikINF hot key. This automatic text-retrieval 
  2932. feature is not available from graphic-text PM windows. 
  2933.  
  2934.  
  2935. ΓòÉΓòÉΓòÉ 10.2. BOOKSHELF Online Documents ΓòÉΓòÉΓòÉ
  2936.  
  2937. The KwikINF window includes a Volume to Search list box of all online documents 
  2938. stored in the OS/2 BOOKSHELF subdirectories. KwikINF initiates searches for 
  2939. information in any online document in this list. 
  2940.  
  2941. The BOOKSHELF is an environment variable, set in CONFIG.SYS, that contains a 
  2942. list of subdirectories containing online documents created as viewable .INF 
  2943. files with the Information Presentation Facility (IPF). The BOOKSHELF 
  2944. environment variable is set as follows: 
  2945.  
  2946. SET BOOKSHELF=<subdirectory>;...;<subdirectory>; 
  2947.  
  2948. Online documents for OS/2 (for example, the Command Reference) are stored in 
  2949. the \OS2\BOOK subdirectory of the drive on which OS/2 is installed.  Online 
  2950. documents for the OS/2 Toolkit (for example, the Programming References) are 
  2951. stored in the \TOOLKIT\BOOK subdirectory of the drive specified during 
  2952. installation of the online programming information. As an example, after 
  2953. installation of OS/2 and the Toolkit, the BOOKSHELF environment variable is set 
  2954. as follows: 
  2955.  
  2956. SET BOOKSHELF=C:\OS2\BOOK;D:\TOOLKIT\BOOK; 
  2957.  
  2958. Where c: is the drive where OS/2 is installed and D: is the drive where the 
  2959. Toolkit is installed. 
  2960.  
  2961. The online document where KwikINF looks for the Search String is selected from 
  2962. the Volume to Search list box by KwikINF or by you. KwikINF selects the Volume 
  2963. to Search by looking for the text string that has a matching entry in the 
  2964. KwikINF index file or, if there is no matching entry in the index file, in the 
  2965. Default Volume you have selected in the Configure KwikINF window. 
  2966.  
  2967.  
  2968. ΓòÉΓòÉΓòÉ 10.2.1. Index Files for Rapid Search ΓòÉΓòÉΓòÉ
  2969.  
  2970. The KwikINF index file provides a rapid-search mechanism for locating specific 
  2971. kinds of information in online documents in the BOOKSHELF. The KwikINF index 
  2972. file consists of one or more concatenated files stored in the BOOKSHELF and 
  2973. defined by the HELPNDX variable in CONFIG.SYS as shown in the following 
  2974. example: 
  2975.  
  2976. SET HELPNDX=EPMKWHLP.NDX
  2977.  
  2978. where EPMKWHLP.NDX is the KwikINF index file for the OS/2 Toolkit. 
  2979.  
  2980. As an example, the following excerpt from the KwikINF index file for the OS/2 
  2981. Toolkit: 
  2982.  
  2983. EXTENSIONS: *
  2984. DESCRIPTION: IBM Developer's Toolkit for OS/2
  2985. (IPF*, view ipfc20.inf ~)
  2986. (WinCreateWindow, view pmwin.inf ~)
  2987.  
  2988. is used by KwikINF to quickly locate Search String entries with the prefix IPF 
  2989. in the IPF-viewable file IPFC20.INF. and to quickly locate the specific Search 
  2990. String entry WinCreateWindow in the IPF-viewable file PMWIN.INF. 
  2991.  
  2992. The first token in a rapid-search string is a specific text string (for 
  2993. example, WinCreateWindow) or prefix wildcard (for example, IPF*).  It is also 
  2994. used as the text-string you want VIEW.EXE to locate within the online document. 
  2995. The second token is the name of the IPF file viewer (VIEW.EXE). The third token 
  2996. is a parameter for VIEW.EXE: the name of the .INF file that contains the online 
  2997. document.  Currently, the fourth token is not being used and it is treated as a 
  2998. comment. 
  2999.  
  3000.  
  3001. ΓòÉΓòÉΓòÉ 10.2.2. Enabling Online Documents ΓòÉΓòÉΓòÉ
  3002.  
  3003. You can enable any online document for KwikINF by: 
  3004.  
  3005.    1. Creating the online document as a viewable .INF file using the 
  3006.       Information Presentation Facility (IPF). 
  3007.  
  3008.    2. Appending the name of the subdirectory where it is stored to the 
  3009.       BOOKSHELF in CONFIG.SYS. 
  3010.  
  3011.    3. Creating an index file to support the KwikINF rapid-search mechanism, 
  3012.       storing it in the BOOKSHELF, and adding it to the HELPNDX variable in 
  3013.       CONFIG.SYS. 
  3014.  
  3015.  For example, you can enable your online document MYDOC stored in MYSUBDIR 
  3016.  subdirectory for KwikINF by: 
  3017.  
  3018.    1. Compiling the tagged source for MYDOC with the IPF compiler by entering: 
  3019.  
  3020.             IPFC MYDOC /INF
  3021.  
  3022.    2. Modifying the BOOKSHELF statement in CONFIG.SYS as follows: 
  3023.  
  3024.             SET BOOKSHELF=...;C:\MYSUBDIR;
  3025.  
  3026.    3. Creating MYINDEX file in MYSUBDIR as shown below: 
  3027.  
  3028.             /* C style comments and blank lines are acceptable */
  3029.             /* specific file extensions may be specified here  */
  3030.             EXTENSIONS: *
  3031.             /* a title may be placed here                      */
  3032.             DESCRIPTION: Any custom KwikINF index file
  3033.             /* rapid-search strings                            */
  3034.             (thisfunction, view mydoc.inf ~)
  3035.             (my*, view mydoc.inf ~)
  3036.  
  3037.    4. Modifying the HELPNDX variable in CONFIG.SYS as follows: 
  3038.  
  3039.             SET HELPNDX=EPMKWHLP.NDX+MYINDEX.NDX
  3040.  
  3041.  For more information on creating an IPF-viewable online document, see the IPF 
  3042.  Reference in the Toolkit Information folder. 
  3043.  
  3044.  
  3045. ΓòÉΓòÉΓòÉ 10.3. Using KwikINF ΓòÉΓòÉΓòÉ
  3046.  
  3047. KwikINF is installed as a program object in the OS/2 Toolkit Information 
  3048. folder.  You start KwikINF by double-clicking on the KwikINF object or by 
  3049. entering KwikINF from the command line of an OS/2 Window. You can start KwikINF 
  3050. automatically when you start OS/2 by placing a shadow of the KwikINF object in 
  3051. the Startup folder in the OS/2 System folder on the desktop. You shadow an 
  3052. object by pressing CTRL + SHIFT while dragging the object. 
  3053.  
  3054. KwikINF installs a PM system hook to monitor keystrokes in PM sessions and OS/2 
  3055. character device monitors to monitor keystrokes in OS/2 full-screen sessions. 
  3056. KwikINF will install only one copy of the hook and monitors, even if you 
  3057. attempt to re-start KwikINF. 
  3058.  
  3059. When KwikINF has been started, you can initiate searches for text strings in 
  3060. online documents of choice by pressing a user-selectable hot key. 
  3061.  
  3062. Note:  You cannot initiate searches for text strings in online documents from 
  3063.        DOS or WIN-OS/2 sessions. 
  3064.  
  3065.  Until you configure KwikINF, your KwikINF hot key is ALT+Q. You configure 
  3066.  KwikINF by pressing your KwikINF hot key and then pressing the Configure push 
  3067.  button to open the Configure KwikINF window. 
  3068.  
  3069.  Note:  When you start KwikINF by double-clicking on the KwikINF object in the 
  3070.         Toolkit Information folder, a message box tells you what hot key opens 
  3071.         the KwikINF window. This technique can also be used to determine what 
  3072.         your current KwikINF hot key is, after KwikINF has been started. 
  3073.  
  3074.  How you initiate a search for information in online documents is dependent on 
  3075.  where you are on the desktop when you press the KwikINF hot key: 
  3076.  
  3077.      From an OS/2 full-screen session, a PM VIO or AVIO window, or PM MLE: 
  3078.       position the cursor on the string you want to search for and press the 
  3079.       KwikINF hot key. KwikINF retrieves the word at the cursor. If you have 
  3080.       configured KwikINF to display the KwikINF window when the KwikINF hot key 
  3081.       is pressed, KwikINF automatically places the retrieved word in the Search 
  3082.       String entry field of the KwikINF window. When you press the Search push 
  3083.       button or Enter, KwikINF displays the information. If you have configured 
  3084.       KwikINF to bypass the KwikINF window when the KwikINF hot key is pressed, 
  3085.       KwikINF automatically displays the information. 
  3086.  
  3087.       If no word is under the cursor, the previous Search String is used. If no 
  3088.       previous Search String exists, KwikINF displays the Contents of the 
  3089.       Default volume to search. 
  3090.  
  3091.      From a graphic-text PM window: press the KwikINF hot key, then type the 
  3092.       string you want to search for in the Search String entry field of the 
  3093.       KwikINF window. The KwikINF text-retrieval feature is not available from 
  3094.       graphic-text PM windows. 
  3095.  
  3096.  The online document where KwikINF looks for the text string is selected from 
  3097.  the Volume to Search list box by KwikINF or by you. To open the online 
  3098.  document to the panel that contains the information, press the Search push 
  3099.  button or press Enter. 
  3100.  
  3101.  
  3102. ΓòÉΓòÉΓòÉ 10.3.1. KwikINF From the Command Line ΓòÉΓòÉΓòÉ
  3103.  
  3104. You can start, terminate, and configure KwikINF from the command line in an 
  3105. OS/2 Window by entering: 
  3106.  
  3107. KwikINF [no options] [/C] [/T] [/?]
  3108.  
  3109. where: 
  3110.  
  3111.  no options  starts KwikINF. After entering this command, the default KwikINF 
  3112.              hot key (ALT + Q) is enabled. 
  3113.  
  3114.  /T          terminates KwikINF and disables the KwikINF hot key. 
  3115.  
  3116.  /C          opens the Configure KwikINF window. Use this window to select 
  3117.              another KwikINF hot key, to select a default online document from 
  3118.              the BOOKSHELF to search, and to select the activation behavior of 
  3119.              the KwikINF window. 
  3120.  
  3121.  /?          displays the following information. 
  3122.  
  3123.                            Usage: KwikINF [Option]
  3124.                             Option    Description
  3125.                               /C      Configure KwikINF
  3126.                               /T      Terminate KwikINF
  3127.                               /?      This short help list
  3128.  
  3129.  
  3130. ΓòÉΓòÉΓòÉ 10.3.2. Configuring KwikINF ΓòÉΓòÉΓòÉ
  3131.  
  3132. You configure KwikINF through the Configure KwikINF window. KwikINF displays 
  3133. this window when you press the Configure push button on the KwikINF window or 
  3134. when you enter the following from the command line of an OS/2 Window: 
  3135.  
  3136. KwikINF /C
  3137.  
  3138. The Configure KwikINF window allows you to: 
  3139.  
  3140.      Select another KwikINF hot key. 
  3141.  
  3142.      Specify the number of OS/2 full-screen sessions enabled for KwikINF. 
  3143.  
  3144.      Specify the name of the default online document KwikINF searches. 
  3145.  
  3146.      Select the activation behavior of the KwikINF window. 
  3147.  
  3148.  Use the push buttons on the Configure KwikINF window as follows: 
  3149.  
  3150.      Press OK to enable your configuration choices. 
  3151.  
  3152.      Press Cancel to cancel your configuration choices. This closes the 
  3153.       Configure KwikINF window. 
  3154.  
  3155.      Press Help to get general help for the current window. 
  3156.  
  3157.  
  3158. ΓòÉΓòÉΓòÉ 10.3.3. Activation Key Sequence ΓòÉΓòÉΓòÉ
  3159.  
  3160. The Activation Key Sequence provides a selectable list of KwikINF hot keys. To 
  3161. access the list, single-click on the down arrow. Select the KwikINF hot key of 
  3162. your choice from the following list: 
  3163.  
  3164.  CTRL   + A 
  3165.  
  3166.  CTRL   + H 
  3167.  
  3168.  CTRL   + Q 
  3169.  
  3170.  ALT    + A 
  3171.  
  3172.  ALT    + Q (this is the default hot key) 
  3173.  
  3174.  The KwikINF hot key initiates searches for information in online documents 
  3175.  from anywhere on the desktop, with the exception of DOS or WIN-OS/2 sessions. 
  3176.  
  3177.  
  3178. ΓòÉΓòÉΓòÉ 10.3.4. Full Screen Sessions ΓòÉΓòÉΓòÉ
  3179.  
  3180. Use the Number of Fullscreen Sessions to Monitor spin button to specify the 
  3181. number of OS/2 full-screen sessions enabled for KwikINF.  KwikINF is 
  3182. implemented as a PM system hook to monitor keystrokes in PM sessions and as 
  3183. OS/2 character device monitors to monitor keystrokes in OS/2 full-screen 
  3184. sessions.  For OS/2 full-screen sessions, KwikINF will monitor only the number 
  3185. of sessions specified here. 
  3186.  
  3187.  
  3188. ΓòÉΓòÉΓòÉ 10.3.5. Default Volume to Search ΓòÉΓòÉΓòÉ
  3189.  
  3190. Use the Default Volume to Search single selection list box to specify which 
  3191. online document in the BOOKSHELF you want KwikINF to search by default. 
  3192. KwikINF looks for the Search String in this online document, when there is no 
  3193. matching entry in the KwikINF index file. Select the online document, then 
  3194. select the OK push button to activate the selection. 
  3195.  
  3196.  
  3197. ΓòÉΓòÉΓòÉ 10.3.6. Activation Behavior ΓòÉΓòÉΓòÉ
  3198.  
  3199. Use the Activation Behavior radio buttons to select the behavior of the KwikINF 
  3200. window. The KwikINF window can be displayed or bypassed when the user presses 
  3201. the KwikINF hot key after KwikINF has been installed. 
  3202.  
  3203.      Select the Display KwikINF Window radio button to tell KwikINF that you 
  3204.       always want the KwikINF window to be displayed when you press the KwikINF 
  3205.       hot key to initiate searches for information.  This is the default 
  3206.       behavior of the KwikINF window. 
  3207.  
  3208.       When the you press the KwikINF hot key, you can initiate a search for the 
  3209.       text string that may be automatically displayed in the Search String 
  3210.       entry field or for the text string that you enter into this field. You 
  3211.       can also specify which online document in the BOOKSHELF KwikINF searches 
  3212.       for the text string. 
  3213.  
  3214.      Select the Bypass KwikINF Window radio button to tell KwikINF that you do 
  3215.       not want the KwikINF window to be displayed when you press the KwikINF 
  3216.       hot key to initiate searches for information. This is typically used when 
  3217.       working under conditions where the KwikINF automatic text-retrieval 
  3218.       feature is available. 
  3219.  
  3220.       When you press the KwikINF hot key, KwikINF automatically looks for the 
  3221.       text string under the cursor in the online document that has a matching 
  3222.       entry in the KwikINF index file or, if there is no matching entry in the 
  3223.       index file, in the Default volume selected from the Configure KwikINF 
  3224.       window. 
  3225.  
  3226.       You configure KwikINF by pressing the Configure push button in the 
  3227.       KwikINF window. To configure KwikINF when this window is bypassed, press 
  3228.       SHIFT + your KwikINF hotkey to display the Configure KwikINF window. 
  3229.  
  3230.  
  3231. ΓòÉΓòÉΓòÉ 10.4. Searching Using the KwikINF Window ΓòÉΓòÉΓòÉ
  3232.  
  3233. If you have configured KwikINF to display the KwikINF window (this is the 
  3234. default condition), the KwikINF window is displayed when you press your KwikINF 
  3235. hot key. 
  3236.  
  3237. The KwikINF window allows you to search for a text string in an online document 
  3238. in the OS/2 BOOKSHELF.  The text string is typed by you in the Search String 
  3239. entry field or is automatically retrieved by KwikINF, under certain conditions, 
  3240. from under the cursor when you press your KwikINF hot key. 
  3241.  
  3242. The online document that KwikINF searches for the text string is selected from 
  3243. the Volume to Search list box by KwikINF or by you.  KwikINF selects the Volume 
  3244. to Search by looking for the text string that has a matching entry in the 
  3245. KwikINF index file or, if there is no matching entry in the index file, in the 
  3246. Default Volume you have selected in the Configure KwikINF window.  Or you can 
  3247. override KwikINF's selection of the Volume to Search by making your own 
  3248. selection from the list box. 
  3249.  
  3250. To initiate the search for the text string in the online document, press the 
  3251. Search push button or press Enter. If the search is successful, KwikINF opens 
  3252. the online document to the online panel that contains the information and 
  3253. displays a window with a title bar that matches the search string. 
  3254.  
  3255. If the search is not successful, you can search any online document for the 
  3256. information by following this procedure: 
  3257.  
  3258.      Clear the Search String entry field. 
  3259.  
  3260.      Select an online document from the Volume to Search list box.  The 
  3261.       Contents window of the online document appears. 
  3262.  
  3263.      Select Services from the menu bar. 
  3264.  
  3265.      Select Search from the Services pull down menu.  The Search help window 
  3266.       appears. 
  3267.  
  3268.      Type the text string, then select the All libraries radio button. 
  3269.  
  3270.      Select the Search push button or press Enter. 
  3271.  
  3272.  Use the push buttons on the KwikINF window as follows: 
  3273.  
  3274.      Press Search to initiate the search for the text string in the Search 
  3275.       String entry field in the selected online document. 
  3276.  
  3277.      Press Cancel to cancel the request to search for the text string and to 
  3278.       close the KwikINF window. 
  3279.  
  3280.      Press Configure to display the Configure KwikINF window. 
  3281.  
  3282.      Press Help to get general help for the current window. 
  3283.  
  3284.  
  3285. ΓòÉΓòÉΓòÉ 10.4.1. Search String Entry Field ΓòÉΓòÉΓòÉ
  3286.  
  3287. KwikINF searches for the text string in this entry field in the selected online 
  3288. document in the OS/2 BOOKSHELF. 
  3289.  
  3290. Under certain conditions, KwikINF automatically retrieves the word under the 
  3291. cursor when you press your KwikINF hot key. Letters, numbers, underscores, and 
  3292. the pound sign are retrievable by KwikINF. Blank spaces and other special 
  3293. characters are used as delimiters and are not retrievable by KwikINF. 
  3294.  
  3295. You may also type any text string you want into this field. All characters are 
  3296. valid in the entry field to allow for special search criteria. 
  3297.  
  3298.  
  3299. ΓòÉΓòÉΓòÉ 10.4.2. VOLUME TO SEARCH List Box ΓòÉΓòÉΓòÉ
  3300.  
  3301. The KwikINF window includes a list box of all online documents stored in the 
  3302. OS/2 BOOKSHELF subdirectories.  KwikINF initiates searches for information in 
  3303. any online document in this list. The online document where KwikINF looks for 
  3304. the Search String is selected from the Volume to Search list box by KwikINF or 
  3305. by you.  KwikINF selects the Volume to Search by looking for the text string 
  3306. that has a matching entry in the KwikINF index file or, if there is no matching 
  3307. entry in the index file, in the Default Volume you have selected in the 
  3308. Configure KwikINF window. Or you can override KwikINF's selection of the Volume 
  3309. to Search by making your own selection from the list box. 
  3310.  
  3311. You can also open and display the Contents of an online document by 
  3312. double-clicking on an entry in this list box. 
  3313.  
  3314.  
  3315. ΓòÉΓòÉΓòÉ 10.4.3. KwikINF Keys Help ΓòÉΓòÉΓòÉ
  3316.  
  3317. Use your KwikINF hot key (ALT+Q or the hot key you select from the Configure 
  3318. KwikINF window) to display the KwikINF window. You can also use your KwikINF 
  3319. hot key to initiate a search for a text string automatically, when you 
  3320. configure KwikINF to bypass the KwikINF window. 
  3321.  
  3322. To re-configure KwikINF, when you have configured KwikINF to bypass the KwikINF 
  3323. window, press SHIFT + your KwikINF hot key. 
  3324.  
  3325. To determine what your KwikINF hot key is, double-click on the KwikINF program 
  3326. object in the OS/2 Toolkit Information folder. 
  3327.  
  3328.  
  3329. ΓòÉΓòÉΓòÉ 11. Link for Object and Library Files (LINK386) ΓòÉΓòÉΓòÉ
  3330.  
  3331. LINK386 is used to combine object files and standard library files into a 
  3332. single file: an executable file, a dynamic-link library, or a device driver. 
  3333. The output file from LINK386 is not constrained to specific memory addresses. 
  3334. Thus, the operating system can load and execute this file at any convenient 
  3335. address. 
  3336.  
  3337. LINK386 Input 
  3338.  
  3339. LINK386 uses the following files as input: 
  3340.  
  3341.      One or more object files that are linked with any optional library files 
  3342.       to form the executable file. Object files usually have a .OBJ extension. 
  3343.  
  3344.       LINK386 accepts object files compiled or assembled for 8088, 80286, 
  3345.       80386, 80486, or PENTIUM* microprocessors. Object files must be in the 
  3346.       Object Module Format (OMF), which is based on the Intel* 8086 OMF, and 
  3347.       Tool Interface Standards Portable Formats Specification. 
  3348.  
  3349.      One or more library files.  The library files contain object modules that 
  3350.       are linked to the object files to form the executable file. Library files 
  3351.       usually have a .LIB extension. 
  3352.  
  3353.       Library files are used to resolve external references in your object 
  3354.       files. 
  3355.  
  3356.      A module definition file.  The module definition file provides 
  3357.       information to LINK386 about the executable file or dynamic link library 
  3358.       file it is creating.  The module definition file usually has a .DEF 
  3359.       extension. 
  3360.  
  3361.  LINK386 Output 
  3362.  
  3363.  LINK386 can produce dynamic-link libraries (.DLL) and device drivers (.SYS), 
  3364.  in addition to executable files (.EXE). For additional information, see Output 
  3365.  Files. 
  3366.  
  3367.  LINK386 displays all of its output messages on the standard output device. 
  3368.  
  3369.  LINK386 Features 
  3370.  
  3371.  LINK386 creates the executable file and map file in the current directory 
  3372.  unless you enter an explicit path. 
  3373.  
  3374.  LINK386 looks in several locations for object, library, and module-definition 
  3375.  files. See Where LINK386 Looks for Files. 
  3376.  
  3377.  File names are not case sensitive; for example, abc.exe and ABC.EXE refer to 
  3378.  the same file. 
  3379.  
  3380.  If you enter a file name without an extension, LINK386 adds a Default Filename 
  3381.  Extension that depends on the type of file expected. 
  3382.  
  3383.  If you leave a field blank (but define the field with a comma), LINK386 uses a 
  3384.  default for the field.  If you end the LINK386 command with a semicolon (;), 
  3385.  LINK386 uses Filename Defaults for all remaining fields. 
  3386.  
  3387.  If you do not give all file names or do not end the command line with a 
  3388.  semicolon, LINK386 prompts you for the omitted files. 
  3389.  
  3390.  
  3391. ΓòÉΓòÉΓòÉ 11.1. Starting LINK386 ΓòÉΓòÉΓòÉ
  3392.  
  3393. Some commands and applications call LINK386 for you, or you can run LINK386 by 
  3394. typing LINK386 at the operating-system prompt. Supply input to LINK386 by any 
  3395. of three methods: 
  3396.  
  3397.      Enter the input directly on the command line. 
  3398.  
  3399.      Respond to prompts generated by LINK386. 
  3400.  
  3401.      Put your input in a response file, and enter the file name on the command 
  3402.       line. 
  3403.  
  3404.  You can press Ctrl+C at any time to interrupt LINK386 and return to the 
  3405.  operating system. 
  3406.  
  3407.  To display LINK386 help, type LINK386 /? at the prompt. A copyright statement 
  3408.  appears along with a list of valid LINK386 options. 
  3409.  
  3410.  
  3411. ΓòÉΓòÉΓòÉ 11.1.1. Syntax ΓòÉΓòÉΓòÉ
  3412.  
  3413.       LINK386 [options] objfiles [,exefile, mapfile, libraries, deffile] 
  3414.  
  3415.       OR 
  3416.  
  3417.       LINK386 @responsefile 
  3418.  
  3419.  SYNTAX DEFINITIONS 
  3420.  
  3421.  The LINK386 command line includes the following fields: 
  3422.  
  3423.  <options> 
  3424.       Options modifying actions of LINK386. Options can appear anywhere on the 
  3425.       command line except immediately after the commas used to separate fields. 
  3426.       See Options and Using LINK386 Options. 
  3427.  
  3428.  <Object Files> 
  3429.       Object files to be linked. Separate multiple file names by plus (+) or 
  3430.       space characters. At least one name must be entered. Library files can 
  3431.       also be entered. See Entering Library Files as Object Files. 
  3432.  
  3433.  <exefile> 
  3434.       Output of file.  LINK386 produces either an executable file, a 
  3435.       dynamic-link library, or a device driver. 
  3436.  
  3437.  <mapfile> 
  3438.       Map file created that lists modules in <exefile>. Use the /M option to 
  3439.       include public symbols in this file. Enter NUL if you do not want a map 
  3440.       file. See List Public Symbols (/M). 
  3441.  
  3442.  <libraries> 
  3443.       Standard or import (not dynamic-link) libraries to be used in resolving 
  3444.       external references.  Separate multiple file names by plus (+) or space 
  3445.       characters. Some libraries are searched by default. You can also specify 
  3446.       a path to a directory -- LINK386 will search for libraries in a path 
  3447.       specified on the <libraries> line before searching directories given by 
  3448.       the LIB environment variable. See Linking with an Import Library, Default 
  3449.       Libraries and Specifying Library Directories. 
  3450.  
  3451.  <deffile> 
  3452.       Module definition file. 
  3453.  
  3454.  SYNTAX EXAMPLES 
  3455.  
  3456.  The following command links the object files FUN.OBJ, TEXT.OBJ, TABLE.OBJ, and 
  3457.  CARE.OBJ. LINK386 searches for unresolved external references in the library 
  3458.  file XLIB.LIB and in the default libraries. By default, the executable file is 
  3459.  named FUN.EXE. LINK386 also produces a map file, FUNLIST.MAP. 
  3460.  
  3461.     LINK386 FUN+TEXT+TABLE+CARE, ,FUNLIST, XLIB.LIB;
  3462.  
  3463.  The following command produces a map file named FUN.MAP because a comma 
  3464.  appears as a placeholder for <mapfile>. 
  3465.  
  3466.     LINK386 FUN,,;
  3467.  
  3468.  The next pair of command lines do not produce a map file because commas do not 
  3469.  appear as placeholders for <mapfile>. 
  3470.  
  3471.   LINK386 FUN,;
  3472.   LINK386 FUN;
  3473.  
  3474.  The following command links the files MAIN.OBJ, GETDATA.OBJ, and PRINTIT.OBJ 
  3475.  into an executable file named MAIN.EXE. A map file named MAIN.MAP is also 
  3476.  produced. 
  3477.  
  3478.     LINK386 MAIN+GETDATA+PRINTIT, , MAIN;
  3479.  
  3480.  The following command links GETDATA.OBJ and PRINTIT.OBJ into an OS/2 
  3481.  dynamic-link library.  MODDEF.DEF must contain a LIBRARY statement to produce 
  3482.  the dynamic-link library. 
  3483.  
  3484.   LINK386 GETDATA+PRINTIT,GETDATA.DLL, , MODDEF
  3485.  
  3486.  
  3487. ΓòÉΓòÉΓòÉ 11.1.2. Object Files ΓòÉΓòÉΓòÉ
  3488.  
  3489. LINK386 accepts object files compiled or assembled for the 8088, 80286, 
  3490. 80386,80486 or PENTIUM microprocessor. LINK386 also accepts standard library 
  3491. files. 
  3492.  
  3493.  
  3494. ΓòÉΓòÉΓòÉ 11.1.3. Output Files ΓòÉΓòÉΓòÉ
  3495.  
  3496. LINK386 Can Produce Three Types of Output Files 
  3497.  
  3498.      Executable (.EXE) files that run under OS/2 protected mode 
  3499.  
  3500.       LINK386 produces an executable file whenever you specify a 
  3501.       module-definition file containing a NAME Statement. The module definition 
  3502.       file should not have a LIBRARY Statement, VIRTUAL DEVICE Statement, or 
  3503.       PHYSICAL DEVICE Statement; otherwise, a dynamic-link library or device 
  3504.       driver is produced, as described below. 
  3505.  
  3506.      Dynamic-link library (.DLL) files 
  3507.  
  3508.       A dynamic-link library is produced whenever you specify a 
  3509.       module-definition file containing a LIBRARY statement. 
  3510.  
  3511.      Device driver (.SYS) files 
  3512.  
  3513.       A virtual or physical device driver is produced whenever you specify a 
  3514.       module-definition file containing the VIRTUAL DEVICE or PHYSICAL DEVICE 
  3515.       statements. 
  3516.  
  3517.  
  3518. ΓòÉΓòÉΓòÉ 11.1.4. Prompts ΓòÉΓòÉΓòÉ
  3519.  
  3520. LINK386 prompts you if any fields have not been entered on the Syntax or in a 
  3521. response file. For each prompt, simply enter the same input that you would 
  3522. enter on the command line and press Enter. 
  3523.  
  3524.  Object Modules [.OBJ]: 
  3525.       <objfiles> 
  3526.  
  3527.  Run File [basename.EXE]: 
  3528.       <exefile> 
  3529.  
  3530.  List File [NUL.MAP]: 
  3531.       <mapfile> 
  3532.  
  3533.  Libraries [.LIB]: 
  3534.       <libraries> 
  3535.  
  3536.  Definitions File [NUL.DEF]: 
  3537.       <deffile> 
  3538.  
  3539.  Special Features 
  3540.  
  3541.      To extend input to a new line, type a plus sign (+) as the last character 
  3542.       on the current line. When the same prompt appears on a new line, you can 
  3543.       continue. Do not, however, split a file name across lines. 
  3544.  
  3545.      To select the default response to a prompt, press Enter. The next prompt 
  3546.       appears. 
  3547.  
  3548.      To select default responses to the current prompt and all remaining 
  3549.       prompts, enter a semicolon (;). Note that at least one object file must 
  3550.       be entered. 
  3551.  
  3552.      You can specify options anywhere on any response line, except before a 
  3553.       comma at the end of a line of characters. If you want to specify more 
  3554.       than one option, either group them at the end of a response, or specify 
  3555.       them at the end of several responses. Each option must begin with a slash 
  3556.       (/). 
  3557.  
  3558.  
  3559. ΓòÉΓòÉΓòÉ 11.1.5. Response Files ΓòÉΓòÉΓòÉ
  3560.  
  3561. A response file is a text file used to provide input to LINK386. To use 
  3562. response file input for LINK386, type 
  3563.  
  3564.   LINK386 @responsefile
  3565.  
  3566. The @ symbol tells LINK386 that responsefile is the name of a response file. If 
  3567. the file is not in the working directory, you must specify the path. 
  3568.  
  3569. The field <responsefile> specifies the name of a file containing the same input 
  3570. that would be entered on the command line or entered in response to LINK386 
  3571. prompts.  In this file, each response should appear on a separate line or be 
  3572. separated from other responses by a comma. 
  3573.  
  3574. To operate LINK386 using a response file, you must first create a file that 
  3575. contains the responses you want LINK386 to process. You can give the file any 
  3576. name, and create it with any text editor. 
  3577.  
  3578. Special Features: 
  3579.  
  3580.      You can begin using a response file at any point on the LINK386 Syntax or 
  3581.       at any LINK386 prompt. The response file should contain responses to all 
  3582.       remaining fields or prompts. 
  3583.  
  3584.      If the file does not contain responses for all the prompts, LINK386 
  3585.       displays the appropriate prompt and waits for you to supply a response. 
  3586.       End the response file with a semicolon. 
  3587.  
  3588.      You can use special characters in the response file the same way you 
  3589.       would use them in responses entered at the keyboard. For example, you can 
  3590.       extend input to a new line by using the plus sign (+) and choose default 
  3591.       responses for all remaining prompts by using a semicolon (;). 
  3592.  
  3593.      LINK386 displays prompts and the entries from the response file on the 
  3594.       screen. If the entry in the response file is not acceptable, LINK386 
  3595.       pauses and waits for you to enter an acceptable response. The "Run in 
  3596.       Batch Mode (/BAT)" disables the prompt. 
  3597.  
  3598.      Options can appear anywhere in the response file. 
  3599.  
  3600.  
  3601. ΓòÉΓòÉΓòÉ 11.1.5.1. Response File Example ΓòÉΓòÉΓòÉ
  3602.  
  3603. FUN TEXT TABLE CARE
  3604. /DEBUG /MAP
  3605. FUNLIST
  3606. GRAF.LIB
  3607.  
  3608. If the text file above were named FUN.LNK, the following command would use this 
  3609. file as a response file: 
  3610.  
  3611. LINK386 @FUN.LNK
  3612.  
  3613. This would cause LINK386 to do the following: 
  3614.  
  3615.      Link the four object modules FUN, TEXT, TABLE, and CARE into an 
  3616.       executable file named FUN.EXE 
  3617.  
  3618.      Generate the map file FUNLIST.MAP 
  3619.  
  3620.      Generate Debugging information 
  3621.  
  3622.      Include public symbols and addresses in the map file 
  3623.  
  3624.      Link any needed routines from the library file GRAF.LIB 
  3625.  
  3626.  The response file in the following example instructs LINK386 to generate an 
  3627.  executable file, called FUN.EXE, from four object modules, FUN, SUN, RUN, and 
  3628.  GAMES. 
  3629.  
  3630.  If you specify the file name, FUNLIST, LINK386 will generate a map file named 
  3631.  FUNLIST.MAP.  Adding the /MAP option will cause LINK386 to include the public 
  3632.  symbols of the application in the map file. 
  3633.  
  3634.   fun+sun+run+game /map
  3635.   fun.exe
  3636.   funlist
  3637.   ;
  3638.  
  3639.  
  3640. ΓòÉΓòÉΓòÉ 11.1.6. Default Libraries ΓòÉΓòÉΓòÉ
  3641.  
  3642. Most compilers embed the names of needed libraries (called default libraries) 
  3643. in object files.  LINK386 searches these libraries. Because of this, you need 
  3644. to explicitly enter library names only in the following cases: 
  3645.  
  3646.      You want to use additional libraries. 
  3647.  
  3648.      You are using a library not in the current directory and not in a 
  3649.       directory specified by the LIB environment variable. See Where LINK386 
  3650.       Looks for Files. 
  3651.  
  3652.      You want to use a library other than the one specified in the object 
  3653.       file. 
  3654.  
  3655.  Explicitly entered libraries are always searched before default libraries.  If 
  3656.  an external reference is resolved by more than one library, the order of 
  3657.  libraries on the command line determines which library is used. 
  3658.  
  3659.  To ignore default libraries use the Ignore Default Libraries (/NOD). But be 
  3660.  careful - most compilers expect their object files to be linked with default 
  3661.  libraries. 
  3662.  
  3663.  
  3664. ΓòÉΓòÉΓòÉ 11.1.7. Entering Library Files as Object Files ΓòÉΓòÉΓòÉ
  3665.  
  3666. You can enter library files in the <objfiles> field.  Be sure to include the 
  3667. .LIB file name extension; otherwise, LINK386 assumes a .OBJ extension. 
  3668.  
  3669. With libraries entered in the <objfiles> field, LINK386 adds every module in 
  3670. the library to your output file.  With libraries entered in the <libraries> 
  3671. field, LINK386 adds only those required to resolve external references. 
  3672.  
  3673. The effect of entering a library this way is the same as if you had entered all 
  3674. of the library's module names into the <objfiles>field. 
  3675.  
  3676.  
  3677. ΓòÉΓòÉΓòÉ 11.1.7.1. Specifying Library Directories ΓòÉΓòÉΓòÉ
  3678.  
  3679. LINK386 searches additional locations for libraries using the drive name or 
  3680. path specification in the <libraries> field on the command line. 
  3681.  
  3682. You can specify up to 32 additional paths.  If you give more than 32 paths, 
  3683. LINK386 ignores the additional paths without displaying an error message. 
  3684.  
  3685.  
  3686. ΓòÉΓòÉΓòÉ 11.1.7.2. Where LINK386 Looks for Files ΓòÉΓòÉΓòÉ
  3687.  
  3688. When searching for an object, library, or module definition file, LINK386 looks 
  3689. in the following locations in this order: 
  3690.  
  3691.    1. The directory specified for the file if a path specification is included. 
  3692.       Default Libraries do not include path specifications. 
  3693.  
  3694.    2. The current directory. 
  3695.  
  3696.    3. Any directories entered on the command line. 
  3697.  
  3698.    4. Any directories given by the LIB environment variable. 
  3699.  
  3700.  If LINK386 cannot locate a file, it prompts you to enter the location. The 
  3701.  "Run in Batch Mode (/BAT)" disables these prompts. 
  3702.  
  3703.  
  3704. ΓòÉΓòÉΓòÉ 11.1.7.3. Library Search Example ΓòÉΓòÉΓòÉ
  3705.  
  3706. LINK386
  3707. Object Modules [.OBJ]: FUN TEXT TABLE CARE
  3708. Run File [FUN.EXE]:
  3709. List File [NUL.MAP]:
  3710. Libraries [.LIB]: C:\TESTLIB\ NEWLIBV3
  3711. Definitions File [NUL.DEF]:
  3712.  
  3713. This example links four object modules to create an executable file named 
  3714. FUN.EXE.  LINK386 searches NEWLIBV3.LIB before searching the default libraries 
  3715. to resolve references. 
  3716.  
  3717. To locate NEWLIBV3.LIB and the default libraries, LINK386 searches the 
  3718. following locations in this order: 
  3719.  
  3720.    1. The current directory 
  3721.  
  3722.    2. The C:\TESTLIB\ directory 
  3723.  
  3724.    3. The locations given by the LIB environment variable 
  3725.  
  3726.  
  3727. ΓòÉΓòÉΓòÉ 11.1.7.4. Filename Defaults ΓòÉΓòÉΓòÉ
  3728.  
  3729. If you do not enter a file name, LINK386 assumes a default: 
  3730.  
  3731.  <options> 
  3732.       No options 
  3733.  
  3734.  <objfiles> 
  3735.       None (This field is required.) 
  3736.  
  3737.  <exefile> 
  3738.       The base name of the first file in <objfiles> with the .EXE extension 
  3739.       added 
  3740.  
  3741.  <mapfile> 
  3742.       The base name in <exefile> with the .MAP extension added 
  3743.  
  3744.  <libraries> 
  3745.       No libraries 
  3746.  
  3747.  <deffile> 
  3748.       No module definition file 
  3749.  
  3750.  
  3751. ΓòÉΓòÉΓòÉ 11.1.7.5. Default Filename Extension ΓòÉΓòÉΓòÉ
  3752.  
  3753. If you do not enter an extension, LINK386 uses a default extension, depending 
  3754. on the type of file. 
  3755.  
  3756.  Object                   .OBJ 
  3757.  Executable               .EXE 
  3758.  Map                      .MAP 
  3759.  Standard Library         .LIB 
  3760.  Dynamic-Link Library     .DLL 
  3761.  Module Definition        .DEF 
  3762.  
  3763.  Overriding Default Extension 
  3764.  
  3765.  Any time you explicitly enter an extension, it overrides the default 
  3766.  extension.  To specify a file name without an extension, just enter a period 
  3767.  (.) after the file name. 
  3768.  
  3769.  
  3770. ΓòÉΓòÉΓòÉ 11.2. Options ΓòÉΓòÉΓòÉ
  3771.  
  3772. The following is a summary of LINK386 options: 
  3773.  
  3774.  /?                                 Display Help 
  3775.  /A[LIGNMENT]                       Align 
  3776.  /BAS[E]                            Base 
  3777.  /BAT[CH]                           Run in Batch Mode 
  3778.  /C[ODEVIEW]                        Prepare for Debugging 
  3779.  /DE[BUG]                           Prepare for Debugging 
  3780.  /DO[SSEG]                          Order Segments 
  3781.  /E[XEPACK]                         Exepack (You can add :1 or :2.) 
  3782.  /EXEPACK                           Exepack 
  3783.  /EXEPACK:1                         Exepack 
  3784.  /E:2                               Exepack 
  3785.  /E:1                               Exepack 
  3786.  /EXE:2                             Exepack 
  3787.  /EXEP                              Exepack 
  3788.  /F[ARCALLTRANSLATION]              Optimize Far Calls 
  3789.  /H[ELP]                            Display Help 
  3790.  /I[NFORMATION]                     Display Process Information 
  3791.  /L[INENUMBERS]                     Include Line Numbers 
  3792.  /M[AP]                             List Public Symbols 
  3793.  /NOD[EFAULTLIBRARYSEARCH]          Ignore Default Libraries 
  3794.  /NOE[XTDICTIONARY]                 Ignore Extended Dictionary 
  3795.  /NOF[ARCALLTRANSLATION]            Disable Far Optimization 
  3796.  /NOI[GNORECASE]                    Preserve Case Sensitivity 
  3797.  /NOL[OGO]                          Disable Sign-On Banner 
  3798.  /NON[ULLSDOSSEG]                   Order Segments without NULLs 
  3799.  /NOO[UTPUTONERROR]                 Does not produce <exefile> if an error 
  3800.                                     occurs during linking. 
  3801.  /NOS[ECTORALIGNCODE]               Disable Automatic Sector Alignment code. 
  3802.  /NOP[ACKCODE]                      Disable Code-Segment Packing 
  3803.  /PACKC[PACKCODE]                   Combine Contiguous Code 
  3804.  /PACKD[ATA]                        Combine Contiguous Data 
  3805.  /PAU[SE]                           Pause during Linking 
  3806.  /PM[TYPE]                          Name Application Type 
  3807.  /RU[NFROMVDM]                      Allow Execution From DOS Command Line 
  3808.  /SE[GMENTS]                        Set Max Number of Segments 
  3809.  /ST[ACK]                           Control Stack Size 
  3810.  /W[ARNFIXUP]                       Warn Fixup 
  3811.  
  3812.  Options Not Supported Under LINK386 
  3813.  
  3814.       /O[VERLAYINTERRUPT] 
  3815.       /CP[ARMAXALLOC] 
  3816.       /PADC[ODE] 
  3817.       /DS[ALLOCATE] 
  3818.       /PADD[ATA] 
  3819.       /Q[UICKLIB] 
  3820.       /HI[GH] 
  3821.       /T[INY] 
  3822.       /INC[REMENTAL] 
  3823.       /NOG[ROUPALIGN] 
  3824.  
  3825.  Specifying LINK386 Options 
  3826.  
  3827.  You can specify options anywhere on the response line, except before a comma 
  3828.  at the end of a line of characters.  If you want to specify more than one 
  3829.  option, either group them at the end of a response, or specify them at the end 
  3830.  of several responses.  Each option must begin with a forward slash (/). 
  3831.  
  3832.  
  3833. ΓòÉΓòÉΓòÉ 11.2.1. Using LINK386 Options ΓòÉΓòÉΓòÉ
  3834.  
  3835.    1. Options always begin with the slash character (/). 
  3836.  
  3837.    2. Options are not case sensitive.  For example, /de and /DE are equivalent. 
  3838.  
  3839.    3. You can specify options in either the short or long form.  The short form 
  3840.       is the shortest sequence of characters that uniquely identifies the 
  3841.       option.  The individual description of each option lists both forms with 
  3842.       the optional part enclosed in brackets.  For example, /BAT[CH] indicates 
  3843.       that either /BAT or /BATCH can be used. 
  3844.  
  3845.    4. Some linker options take numeric arguments.  You can enter numbers in 
  3846.       decimal, octal, or hexadecimal radix using standard C-language syntax. 
  3847.  
  3848.    5. You can also specify options in the LINK386 environment variable. 
  3849.  
  3850.    6. Although use of the minimum one-letter abbreviations is allowed, if a 
  3851.       future release has an additional option starting with the same letter, 
  3852.       the one-letter option will no longer be usable. 
  3853.  
  3854.  
  3855. ΓòÉΓòÉΓòÉ 11.2.2. Recommendations ΓòÉΓòÉΓòÉ
  3856.  
  3857. It is recommended that the ALIGN:2, BASE, FARCALLTRANSLATION, RUNFROMVDM, and 
  3858. EXEPACK:2 options be used when linking all executables.  This will compress 
  3859. them in size and improve their performance. Executables linked with EXEPACK:2 
  3860. can be run only on OS/2 versions 3.0 and later. 
  3861.  
  3862. If BASE is used with .EXE files, the /BASE:0x10000 option must be used.  Any 
  3863. other value will produce a warning. 
  3864.  
  3865.  
  3866. ΓòÉΓòÉΓòÉ 11.2.3. Entering Numeric Arguments ΓòÉΓòÉΓòÉ
  3867.  
  3868. Some LINK386 options and module statements take numeric arguments.  LINK386 
  3869. uses C-language syntax allowing you to specify numbers in any of the following 
  3870. forms: 
  3871.  
  3872.      Any number not prefixed with 0 or 0x is a decimal number. For example, 
  3873.       1234 is a decimal number. 
  3874.  
  3875.      Any number prefixed with 0 (but not 0x) is an octal number. For example, 
  3876.       01234 is an octal number. 
  3877.  
  3878.      Any number prefixed with 0x is a hexadecimal number. For example, 0x1234 
  3879.       is a hexadecimal number. 
  3880.  
  3881.  
  3882. ΓòÉΓòÉΓòÉ 11.2.4. Environment Variable ΓòÉΓòÉΓòÉ
  3883.  
  3884. You can use the LINK386 environment variable to cause certain options to be 
  3885. used each time you link.  LINK386 checks the environment variable for options 
  3886. if the variable exists. 
  3887.  
  3888. LINK386 expects to find options listed in the variable exactly as you would 
  3889. type them on the command line.  It does not accept other kinds of arguments; 
  3890. file names in the environment variable cause the following error message: 
  3891.  
  3892. unrecognized option
  3893.  
  3894. Each time you link, you can specify other options in addition to the ones 
  3895. specified in the LINK386 environment variable. If you type an option both on 
  3896. the Syntax and in the environment variable, the effect is the same as if the 
  3897. option were given once. 
  3898.  
  3899. Note:  A command line option overrides the effect of any environment-variable 
  3900. option that it conflicts with.  For example, the command line option /SE:512 
  3901. cancels the effect of the environment-variable option /SE:256. 
  3902.  
  3903. The only way to prevent an option in the environment variable from being used 
  3904. is to reset the environment variable itself. 
  3905.  
  3906.  
  3907. ΓòÉΓòÉΓòÉ 11.2.5. Environment Variable Example ΓòÉΓòÉΓòÉ
  3908.  
  3909. <SET LINK386=/NOI /SE:256 /DEBUG
  3910. <LINK386 TEST;
  3911. <LINK386 /NOD /DEBUG PROG;
  3912.  
  3913. In the example above, the file TEST.OBJ is linked with the options /NOI, 
  3914. /SE:256, and /DEBUG. The file PROG.OBJ is then linked with the option /NOD - in 
  3915. addition to /NOI, /SE:256, and /DEBUG. 
  3916.  
  3917.  
  3918. ΓòÉΓòÉΓòÉ 11.2.5.1. Alignment (/A) ΓòÉΓòÉΓòÉ
  3919.  
  3920. Syntax:  /A[LIGNMENT]:n 
  3921.  
  3922. This option directs LINK386 to set the alignment factor in the executable file 
  3923. to the number given, which must be a power of 2, from 2 to 32768. The default 
  3924. alignment is 512 bytes. Trailing zeroes are truncated to reduce the amount of 
  3925. data stored in a file. 
  3926.  
  3927. Each page starts at a location that is a multiple of n bytes from the beginning 
  3928. of the file.  For example, /A:16 would start pages at multiples of 16 bytes. 
  3929.  
  3930. Link386 produces pages that are a maximum of 4096 bytes in length. Alignment 
  3931. factors greater than 4096 will waste disk space. 
  3932.  
  3933.  
  3934. ΓòÉΓòÉΓòÉ 11.2.5.2. BASE (/BASE) ΓòÉΓòÉΓòÉ
  3935.  
  3936. Syntax: BASE:n 
  3937.  
  3938. Where n is a value rounded up to the nearest multiple of 64K Indicates that 
  3939. each object of the module has a preferred load address starting with object 1 
  3940. at this address, object 2 at the next available multiple of 64K, and so on. 
  3941. Internal relocation records are then applied using this addressing scheme. 
  3942.  
  3943. If the module's objects can be loaded beginning at this preferred address, then 
  3944. no load-time internal relocation records need be applied. 
  3945.  
  3946. If the module's objects cannot be loaded beginning at this preferred address, 
  3947. then the internal relocation records that have been retained in the file data 
  3948. will be applied. 
  3949.  
  3950. .EXE files may specify a base address, but it must be 64K.  If it isn't, a 
  3951. warning will be issued and a base address of 64K will be used anyway. This 
  3952. option provides the same support as the BASE module definition file statement. 
  3953.  
  3954.  
  3955. ΓòÉΓòÉΓòÉ 11.2.5.3. Run in Batch Mode (/BAT) ΓòÉΓòÉΓòÉ
  3956.  
  3957. Syntax:  /BAT[CH] 
  3958.  
  3959. By default, LINK386 prompts you for a new path name whenever it cannot find an 
  3960. object file or library it was directed to use. 
  3961.  
  3962. This option disables such prompting.  Instead, LINK386 generates an error or 
  3963. warning message, as appropriate, and leaves the external reference unresolved. 
  3964. The /BAT option also disables the display of the sign-on banner and the display 
  3965. of input from response files. 
  3966.  
  3967. This option is primarily used when LINK386 is called from a batch file or 
  3968. Description Files. 
  3969.  
  3970. Note:  This option does not affect prompts for Command Line Input. 
  3971.  
  3972.  
  3973. ΓòÉΓòÉΓòÉ 11.2.5.4. Prepare for Debugging (/C) ΓòÉΓòÉΓòÉ
  3974.  
  3975. Syntax:  /C[ODEVIEW] 
  3976.  
  3977. This option works exactly like the Prepare for Debugging (/DE) option. 
  3978.  
  3979. The /C option is used to prepare for debugging with any debugger. With this 
  3980. option, LINK386 imbeds symbolic data and line number information in the 
  3981. executable output file. 
  3982.  
  3983. You can run this executable file outside Debug; the debugging information in 
  3984. the file is ignored.  However, to reduce executable file size, use this option 
  3985. only for debugging.  Then you can link a separate version without the /C option 
  3986. after the program is debugged. 
  3987.  
  3988.  
  3989. ΓòÉΓòÉΓòÉ 11.2.5.5. Prepare for Debugging (/DE) ΓòÉΓòÉΓòÉ
  3990.  
  3991. Syntax:  /DE[BUG] 
  3992.  
  3993. The /DE option is used to prepare for debugging with any debugger.  With this 
  3994. option, LINK386 embeds symbolic data and line number information in the 
  3995. executable output file. 
  3996.  
  3997. You can run this executable file outside Debug; the debugging information in 
  3998. the file is ignored.  However, to reduce executable file size, use this option 
  3999. only for debugging.  Then you can link a separate version without the /DE 
  4000. option after the program is debugged. 
  4001.  
  4002.  
  4003. ΓòÉΓòÉΓòÉ 11.2.5.6. Order Segments (/DO) ΓòÉΓòÉΓòÉ
  4004.  
  4005. Syntax:  /DO[SSEG] 
  4006.  
  4007. This option is automatically enabled by a special object module record in many 
  4008. language libraries.  If you are linking to one of these libraries, you need not 
  4009. specify this option. 
  4010.  
  4011. The /DO option is also enabled by assembly modules that use the Macro Assembler 
  4012. directive .DOSSEG. 
  4013.  
  4014. This option forces segments to be ordered as follows (first to last): 
  4015.  
  4016.    1. All code segments 
  4017.  
  4018.    2. Far data segments 
  4019.  
  4020.    3. Near data (DGROUP) segments, in the following order: 
  4021.  
  4022.         a. Any segments of class BEGDATA (this class name is reserved) 
  4023.         b. Any segments not of class BEGDATA, BSS, or STACK 
  4024.         c. Segments of class BSS 
  4025.         d. Segments of class STACK 
  4026.  
  4027.  In addition, the /DO option causes LINK386 to do the following: 
  4028.  
  4029.      Initialize two special variables: 
  4030.  
  4031.             _edata = DGROUP : BSS
  4032.             _end = DGROUP : STACK
  4033.  
  4034.       The variables _edata and _end have special meanings for certain 
  4035.       compilers; avoid using these names in your programs.  Assembly-language 
  4036.       programs can refer to these variables, but should not change them. 
  4037.  
  4038.      Insert 16 null bytes at the beginning of the _TEXT segment (if this 
  4039.       segment is defined). 
  4040.  
  4041.  
  4042. ΓòÉΓòÉΓòÉ 11.2.5.7. Exepack (/E) ΓòÉΓòÉΓòÉ
  4043.  
  4044. Syntax:  /E[XEPACK] or /E[EXEPACK]:1 or /E[XEPACK]:2. 
  4045.  
  4046. EXEPACK causes pages of code and data in the file to be compressed. The OS/2 
  4047. Application Loader will automatically decompress these pages when the program 
  4048. is run. 
  4049.  
  4050. /EXEPACK:1 will use a compression algorithm that is compatible with OS/2 2.0, 
  4051. 2.1, and 2.11, as well as OS/2 3.0 and later. 
  4052.  
  4053. /EXEPACK:2 will use a compression algorithm that is compatible with OS/2 3.0 
  4054. and later. 
  4055.  
  4056. /EXEPACK:2 will produce smaller executables that typically load faster. 
  4057.  
  4058.  
  4059. ΓòÉΓòÉΓòÉ 11.2.5.8. Optimize Far Calls (/F) ΓòÉΓòÉΓòÉ
  4060.  
  4061. Syntax:  /F[ARCALLTRANSLATION] 
  4062.  
  4063. This option causes LINK386 to optimize far-call instructions made from one 
  4064. segment to a target address in the same segment. LINK386 replaces calling 
  4065. sequences such as CALL FAR function with the following: 
  4066.  
  4067. PUSH     CS
  4068. CALL     NEAR function
  4069. NOP
  4070.  
  4071. The new calling sequence is significantly faster when running in protected 
  4072. mode.  Also, a load-time relocation is eliminated, which decreases program file 
  4073. size and speeds program loading. 
  4074.  
  4075. In general, the greatest benefit occurs if you use the "Combine Contiguous 
  4076. Code(/PACKC)" in addition to the /F option. 
  4077.  
  4078. The /F option has no effect on programs that make only near calls. 
  4079.  
  4080. Note:  There is a small risk involved with using the /F option. LINK386 may 
  4081. mistakenly interpret a byte of immediate data in a code segment as a far call 
  4082. if it has to have the far-call opcode (0x9A). 
  4083.  
  4084.  
  4085. ΓòÉΓòÉΓòÉ 11.2.5.9. Display Help (/H or /?) ΓòÉΓòÉΓòÉ
  4086.  
  4087. Syntax:  /H[ELP]   OR    /? 
  4088.  
  4089. These options display a list of valid LINK386 options. 
  4090.  
  4091.  
  4092. ΓòÉΓòÉΓòÉ 11.2.5.10. Display Process Information (/I) ΓòÉΓòÉΓòÉ
  4093.  
  4094. Syntax:  /I[NFORMATION] 
  4095.  
  4096. This option causes LINK386 to display information about the linking process, 
  4097. including the phase of linking and the names of the object files being linked. 
  4098. Use this option to determine the locations of the object files being linked and 
  4099. the order in which they are linked. 
  4100.  
  4101. The output from this option is sent to standard output. 
  4102.  
  4103.  
  4104. ΓòÉΓòÉΓòÉ 11.2.5.11. Include Line Numbers (/L) ΓòÉΓòÉΓòÉ
  4105.  
  4106. Syntax:  /L[INENUMBERS] 
  4107.  
  4108. This option includes source file line numbers and associated addresses in the 
  4109. map file.  In addition, you must give LINK386 an object file (or files) with 
  4110. line number information.  You can use the /Zd option with most compilers to 
  4111. include line numbers in the object file.  If you give LINK386 an object file 
  4112. without line number information, the /L option has no effect. The option for 
  4113. CSET/++ is /ti. 
  4114.  
  4115. The /L option forces LINK386 to create a map file even if you did not 
  4116. explicitly tell LINK386 to create a map file.  By default, the file is given 
  4117. the same base name as the executable file, plus the extension .MAP.  You can 
  4118. override the default name by explicitly specifying a map file name. 
  4119.  
  4120.  
  4121. ΓòÉΓòÉΓòÉ 11.2.5.12. List Public Symbols (/M) ΓòÉΓòÉΓòÉ
  4122.  
  4123. Syntax:  /M[AP][:full] 
  4124.  
  4125. This option lists in the map file all public (global) symbols defined in the 
  4126. object files.  With this option, the map file contains a list of all the 
  4127. symbols sorted by name, and a list of all the symbols sorted by address.  If 
  4128. you don't use this option, the map file contains only a list of segments. 
  4129.  
  4130. With this option, LINK386 creates a map file by default. If you explicitly 
  4131. enter a map file name of NUL, then no map file is created, and this option has 
  4132. no effect. 
  4133.  
  4134. The Map option can be specified as /M:full to produce a comprehensive map 
  4135. showing the composition of each segment. 
  4136.  
  4137.  
  4138. ΓòÉΓòÉΓòÉ 11.2.5.13. Ignore Default Libraries (/NOD) ΓòÉΓòÉΓòÉ
  4139.  
  4140. Syntax:  /NOD[EFAULTLIBRARYSEARCH][:filename] 
  4141.  
  4142. This option tells LINK386 to ignore Default Libraries when resolving external 
  4143. references.  If you specify an object file in <filename>, LINK386 ignores only 
  4144. the default libraries in <filename>. 
  4145.  
  4146. In general, high-level-language programs do not work correctly without standard 
  4147. libraries.  Thus, if you use the /NOD option, you should explicitly specify the 
  4148. name of a standard library in the <libraries> field of the command line. 
  4149.  
  4150.  
  4151. ΓòÉΓòÉΓòÉ 11.2.5.14. Ignore Extended Dictionary (/NOE) ΓòÉΓòÉΓòÉ
  4152.  
  4153. Syntax:  /NOE[XTDICTIONARY] 
  4154.  
  4155. This option prevents LINK386 from searching the extended dictionary, an 
  4156. internal list of symbol locations included with libraries generated with the 
  4157. old LIB utility's /NOE option. 
  4158.  
  4159. Normally, LINK386 uses the extended dictionary to speed up library searches; 
  4160. thus, using /NOE slows LINK386.  This option should be used when a library 
  4161. symbol is redefined.  You need to use this option when LINK386 issues error 
  4162. L2044. 
  4163.  
  4164.  
  4165. ΓòÉΓòÉΓòÉ 11.2.5.15. Disable Far Optimization (/NOF) ΓòÉΓòÉΓòÉ
  4166.  
  4167. Syntax:  /NOF[ARCALLTRANSLATION] 
  4168.  
  4169. Far-call optimization is off by default.  If the LINK386 environment variable 
  4170. or another command (such as ICC) has turned it on, you can use /NOF to turn it 
  4171. off again. 
  4172.  
  4173.  
  4174. ΓòÉΓòÉΓòÉ 11.2.5.16. Preserve Case Sensitivity (/NOI) ΓòÉΓòÉΓòÉ
  4175.  
  4176. Syntax:  /NOI[GNORECASE] 
  4177.  
  4178. This option turns case sensitivity on; that is, LINK386 treats ABC, abc, and 
  4179. Abc as unique names.  By default, case sensitivity is off. 
  4180.  
  4181. This option can be used when you link programs written in case-sensitive 
  4182. languages such as C. 
  4183.  
  4184.  
  4185. ΓòÉΓòÉΓòÉ 11.2.5.17. Disable Sign-On Banner (/NOL) ΓòÉΓòÉΓòÉ
  4186.  
  4187. Syntax:  /NOL[OGO] 
  4188.  
  4189. This option disables the sign-on banner displayed when LINK386 starts. 
  4190.  
  4191.  
  4192. ΓòÉΓòÉΓòÉ 11.2.5.18. Order Segments without NULLs (/NON) ΓòÉΓòÉΓòÉ
  4193.  
  4194. Syntax:  /NON[ULLSDOSSEG] 
  4195.  
  4196. This option arranges segments in a special order.  The /NON option is 
  4197. equivalent to the Order Segments (/DO) except that /NON does NOT insert 16 null 
  4198. bytes at the beginning of the _TEXT segment (if this segment is defined). 
  4199.  
  4200. The /NON option overrides the /DO option when both are used. Therefore, you can 
  4201. use /NON to override the /DO comment record commonly found in standard 
  4202. libraries. 
  4203.  
  4204.  
  4205. ΓòÉΓòÉΓòÉ 11.2.5.19. No Output on Error (/NOO) ΓòÉΓòÉΓòÉ
  4206.  
  4207. Syntax:  /NOO[UTPUTONERROR] 
  4208.  
  4209. This option will keep Link386 from creating the executable if an error is 
  4210. encountered. 
  4211.  
  4212.  
  4213. ΓòÉΓòÉΓòÉ 11.2.5.20. Disable Code-Segment Combining (/NOP) ΓòÉΓòÉΓòÉ
  4214.  
  4215. Syntax:  /NOP[ACKCODE] 
  4216.  
  4217. This option turns code segment combining off. By default, code segment 
  4218. combining is on. 
  4219.  
  4220.  
  4221. ΓòÉΓòÉΓòÉ 11.2.5.21. Disable Sector Alignment of Code (/NOS) ΓòÉΓòÉΓòÉ
  4222.  
  4223. Syntax:  /NOS[ECTORALIGNCODE] 
  4224.  
  4225. Link386 will align passes of code on sector (512 bytes) boundaries.  This helps 
  4226. reduce the time to load the passes. The /NOSECTORALIGNCODE option is provided 
  4227. to turn off this feature.  Pages of code would then be aligned based on the 
  4228. /ALIGN value. 
  4229.  
  4230.  
  4231. ΓòÉΓòÉΓòÉ 11.2.5.22. Combine Contiguous Code (/PACKC) ΓòÉΓòÉΓòÉ
  4232.  
  4233. Syntax:  /PACKC[ODE]:number 
  4234.  
  4235. This option groups neighboring code segments.  Neighboring code segments are 
  4236. assigned the same segment address, and offsets to each routine are adjusted 
  4237. upward as required.  This option is on by default and is used only when you 
  4238. wish to override an environment variable that has turned code combining off. 
  4239. See Environment Variable and Disable Code-Segment Combining (/NOP) 
  4240.  
  4241. The <number> field specifies the maximum size of a code segment grouped by 
  4242. /PACKC.  If you do not use the /PACKC option or if you omit <number>, maximum 
  4243. size defaults to 65530. LINK386 stops adding segments to a group as soon as it 
  4244. cannot add another segment without exceeding <number>. At this point, LINK386 
  4245. forms a new segment. See Entering Numeric Arguments. 
  4246.  
  4247. Code combining generally produces slightly faster and more compact code.  Use 
  4248. the Optimize Far Calls (/F) option to provide the maximum opportunity for 
  4249. combining. 
  4250.  
  4251.  
  4252. ΓòÉΓòÉΓòÉ 11.2.5.23. Combining Contiguous Data (/PACKD) ΓòÉΓòÉΓòÉ
  4253.  
  4254. Syntax:  /PACKD[ATA] [:number] 
  4255.  
  4256. This option groups neighboring data segments.  It functions like the Combine 
  4257. Contiguous Code (/PACKC) option, except that it combines data segments. 
  4258.  
  4259. The <number> field specifies the maximum size of a data segment grouped by 
  4260. /PACKD; if you omit <number>, the maximum size defaults to 65,536.  LINK386 
  4261. stops adding segments to a group as soon as it cannot add another segment 
  4262. without exceeding <number>.  At this point, LINK386 forms a new group. See 
  4263. Entering Numeric Arguments. 
  4264.  
  4265.  
  4266. ΓòÉΓòÉΓòÉ 11.2.5.24. Pause during Linking (/PAU) ΓòÉΓòÉΓòÉ
  4267.  
  4268. Syntax:  /PAU[SE] 
  4269.  
  4270. This option makes LINK386 pause before writing the output file to disk.  The 
  4271. pause allows you to swap disks. 
  4272.  
  4273. With this option, LINK386 displays the following message before it creates the 
  4274. output file: 
  4275.  
  4276. About to generate .EXE file
  4277. Change diskette in drive letter and press Enter
  4278.  
  4279. LINK386 writes the output file when you press Enter. 
  4280.  
  4281. Be sure not to remove a disk containing the map file. If the disk you need to 
  4282. swap contains either of these files, press CTRL+C to terminate the LINK386 
  4283. session, rearrange your files, and link again. 
  4284.  
  4285.  
  4286. ΓòÉΓòÉΓòÉ 11.2.5.25. Name Application Type (/PM) ΓòÉΓòÉΓòÉ
  4287.  
  4288. Syntax:  /PM[TYPE]:type 
  4289.  
  4290. This option specifies the type of application being generated. Using the /PM 
  4291. option is equivalent to including a NAME statement in the module definition 
  4292. file. 
  4293.  
  4294. A keyword in <type> is equivalent to a keyword in a NAME statement as shown in 
  4295. the following list: 
  4296.  
  4297.  PM                  WINDOWAPI 
  4298.  VIO                 WINDOWCOMPAT 
  4299.  NOVIO               NOTWINDOWCOMPAT 
  4300.  
  4301.  
  4302. ΓòÉΓòÉΓòÉ 11.2.5.26. Execute from DOS Command Line (/RU) ΓòÉΓòÉΓòÉ
  4303.  
  4304. Syntax:  /RU[NFROMVDM]: 
  4305.  
  4306. This option allows the program to be executed from a DOS command line, if 
  4307. possible. 
  4308.  
  4309. This option causes LINK386 to insert an alternate DOS stub into the program. 
  4310. The DOS stub is executed if a protect mode program is executed from a DOS 
  4311. command line. The default DOS stub simply prints an error message and returns 
  4312. to the DOS command line. The alternate DOS stub will attempt to start the 
  4313. program in protect mode. 
  4314.  
  4315.  
  4316. ΓòÉΓòÉΓòÉ 11.2.5.27. Set Maximum Number of Segments (/SE) ΓòÉΓòÉΓòÉ
  4317.  
  4318. Syntax:  /SE[GMENTS]:number 
  4319.  
  4320. This option sets the number of logical segments a program can have. You can set 
  4321. <number> to any value in the range 1 to 3,072. See Entering Numeric Arguments. 
  4322.  
  4323. For each logical segment, LINK386 must allocate space to keep track of segment 
  4324. information.  By using a relatively low segment limit as a default (128), 
  4325. LINK386 is able to link faster and allocate less storage space. 
  4326.  
  4327. When you set the segment limit higher than 128, LINK386 allocates more space 
  4328. for segment information.  This option allows you to raise the segment limit for 
  4329. programs with a large number of segments. 
  4330.  
  4331. For programs with fewer than 128 segments, you can keep the storage 
  4332. requirements of LINK386 at the lowest level possible by setting the segment 
  4333. <number> field to reflect the actual number of segments in the program.  If the 
  4334. number of segments allocated is too high for the amount of memory LINK386 has 
  4335. available to it, you see the error message segment limit too high. 
  4336.  
  4337. To specify a number of segments that fits in the amount of memory available, 
  4338. set the segment lower and relink. 
  4339.  
  4340.  
  4341. ΓòÉΓòÉΓòÉ 11.2.5.28. Control Stack Size (/ST) ΓòÉΓòÉΓòÉ
  4342.  
  4343. Syntax:  /ST[ACK] :number 
  4344.  
  4345. This option controls the stack size (in bytes) of your program. You can specify 
  4346. any positive value for <number>. See Entering Numeric Arguments. 
  4347.  
  4348. If your program generates a stack-overflow message, you can increase the size 
  4349. of the stack.  In contrast, if your program uses the stack very little, you may 
  4350. save some space by decreasing the stack size. 
  4351.  
  4352.  
  4353. ΓòÉΓòÉΓòÉ 11.2.5.29. Warning of Fix-ups (/W) ΓòÉΓòÉΓòÉ
  4354.  
  4355. Syntax:  /W[ARNFIXUP] 
  4356.  
  4357. This option directs LINK386 to issue a warning for each segment-relative fix-up 
  4358. of location-type offset when the segment is contained within a group, but not 
  4359. at the beginning.  LINK386 includes the displacement of the segment from the 
  4360. group in determining the final value of the fix-up. 
  4361.  
  4362.  
  4363. ΓòÉΓòÉΓòÉ 11.2.6. /INF and /M Output Example ΓòÉΓòÉΓòÉ
  4364.  
  4365. The following is a sample of LINK386 output when Display Process Information 
  4366. (/I) and List Public Symbols (/M) options are specified: 
  4367.  
  4368.   **** PASS ONE ****
  4369.   TEST.OBJ(test.for)
  4370.   **** LIBRARY SEARCH ****
  4371.   LLIBFOR7.LIB(wr)
  4372.   LLIBFOR7.LIB(fmtout)
  4373.   LLIBFOR7.LIB(ldout)
  4374.   Γöé Γöé Γöé
  4375.   **** ASSIGN ADDRESSES ****
  4376.   1 segment "TEST_TEXT" length 122H bytes
  4377.   2 segment "_DATA" length 912H bytes
  4378.   3 segment "CONST" length 12H bytes
  4379.   Γöé Γöé Γöé
  4380.   **** PASS TWO ****
  4381.   TEST.OBJ(test.for)
  4382.   LLIBFOR7.LIB(wr)
  4383.   LLIBFOR7.LIB(fmtout)
  4384.   LLIBFOR7.LIB(ldout)
  4385.   Γöé Γöé Γöé
  4386.   **** WRITING EXECUTABLE ****
  4387.  
  4388.  
  4389. ΓòÉΓòÉΓòÉ 11.2.7. OS/2 Considerations ΓòÉΓòÉΓòÉ
  4390.  
  4391. In most respects, linking a program for OS/2 is similar to linking a program 
  4392. for DOS. The principal difference is that most programs created for DOS run as 
  4393. stand-alone applications, whereas programs for OS/2 generally call one or more 
  4394. dynamic-link libraries. See What Is a Dynamic-Link Library? and Advantages of 
  4395. Dynamic Linking. 
  4396.  
  4397. Import and Export Definitions 
  4398.  
  4399. Each dynamic-link library (.DLL file) defines export definitions that tell OS/2 
  4400. what functions the library has. Functions not exported can only be called from 
  4401. within the library. Each export definition specifies a function name. 
  4402.  
  4403. Conversely, each executable program (.EXE file) defines import definitions that 
  4404. tell OS/2 which dynamic-link functions the program needs and where they can be 
  4405. found. Otherwise, OS/2 would not know which dynamic-link libraries to load when 
  4406. the program is run. Each import definition specifies a function name and the 
  4407. .DLL file where the function resides. 
  4408.  
  4409. Methods of OS/2 Linking 
  4410.  
  4411. There are two methods of OS/2 Linking: 
  4412.  
  4413.      Linking without an Import Library 
  4414.      Linking with an Import Library 
  4415.  
  4416.  Linking with an import library requires more steps but has certain advantages. 
  4417.  
  4418.  
  4419. ΓòÉΓòÉΓòÉ 11.2.7.1. What Is a Dynamic-Link Library? ΓòÉΓòÉΓòÉ
  4420.  
  4421. A dynamic-link library contains executable code for common functions, just as 
  4422. an ordinary library does.  Yet code for functions in dynamic-link libraries is 
  4423. not copied into the executable (.EXE) file.  Instead, the library itself is 
  4424. loaded into memory at run time, along with the .EXE file. 
  4425.  
  4426.  
  4427. ΓòÉΓòÉΓòÉ 11.2.7.2. Advantages of Dynamic Linking ΓòÉΓòÉΓòÉ
  4428.  
  4429. Dynamic-link libraries serve much the same purpose that standard libraries do, 
  4430. but they also have the following advantages: 
  4431.  
  4432.      Applications link more quickly. With dynamic linking, the executable code 
  4433.       for a dynamic-link function is not copied into the .EXE file of the 
  4434.       application. Instead, only an import definition is copied. 
  4435.  
  4436.      Applications require less disk space. With dynamic linking, several 
  4437.       different program applications can access the same dynamic-link function 
  4438.       stored in one place.  Without dynamic linking, the code for the function 
  4439.       would be repeated in every .EXE file. 
  4440.  
  4441.      Libraries and applications are independent. Dynamic-link libraries can be 
  4442.       updated any number of times without relinking the applications that use 
  4443.       them.  If you are a user of third-party libraries, this is particularly 
  4444.       convenient.  You receive the updated .DLL file from the third-party 
  4445.       developers, and you only need to copy the new library onto your disk.  At 
  4446.       run time, your applications automatically call the updated library 
  4447.       functions. 
  4448.  
  4449.      Code and data segments can be shared. Code and data segments loaded from 
  4450.       a dynamic-link library can be shared.  Without dynamic linking, such 
  4451.       sharing is not possible because each file has its own copy of all the 
  4452.       code and data it uses.  By sharing segments with dynamic linking, you can 
  4453.       use memory more efficiently. 
  4454.  
  4455.  
  4456. ΓòÉΓòÉΓòÉ 11.2.7.3. Linking without an Import Library ΓòÉΓòÉΓòÉ
  4457.  
  4458. The figure below illustrates a simple case in which you create an application 
  4459. that uses a single dynamic-link library (.DLL) file. 
  4460.  
  4461.  
  4462. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4463. Γöé .OBJ and Γöé  Γöé.DEF fileΓöé    Γöé.DEF fileΓöé  Γöé .OBJ and Γöé
  4464. Γöé.LIB filesΓöé  Γöé(LIBRARY)Γöé    Γöé(imports)Γöé  Γöé.LIB filesΓöé
  4465. Γöé          Γöé  Γöé(exports)Γöé    Γöé         Γöé  Γöé          Γöé
  4466. ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ    ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ
  4467.      Γöé             Γöé              Γöé             Γöé
  4468.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ              ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4469.             Γöé                            Γöé
  4470.                                         
  4471.        (1) LINK386                  (2) LINK386
  4472.                                         
  4473.             Γöé                            Γöé
  4474.        ΓöîΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÉ                ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4475.        Γöé.DLL fileΓöé                Γöé .EXE file   Γöé
  4476.        Γöé(library)Γöé                Γöé(application)Γöé
  4477.        ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4478.  
  4479. As depicted above, linking occurs in two steps: 
  4480.  
  4481.    1. Object files (and standard libraries if any) are linked with a module 
  4482.       definition (.DEF) file to create a .DLL file. A .DEF file is used that 
  4483.       defines all functions exported by the .DLL file. 
  4484.  
  4485.    2. Object files (and standard libraries, if any) are linked with a .DEF file 
  4486.       to create an application (.EXE) file. A different .DEF file is used for 
  4487.       this step; it defines all dynamic-link functions imported (used) by the 
  4488.       application. 
  4489.  
  4490.  
  4491. ΓòÉΓòÉΓòÉ 11.2.7.4. Linking with an Import Library ΓòÉΓòÉΓòÉ
  4492.  
  4493. The figure below illustrates a simple case in which you create an application 
  4494. that uses a single dynamic-link library (.DLL) file. 
  4495.  
  4496.  
  4497. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4498. Γöé .OBJ and Γöé   Γöé.DEF fileΓöé       Γöé.LIB fileΓöé   Γöé .OBJ and Γöé
  4499. Γöé.LIB filesΓöé   Γöé(LIBRARY)Γöé       Γöé(imports)Γöé   Γöé.LIB filesΓöé
  4500. Γöé          Γöé   Γöé(exports)Γöé       Γöé         Γöé   Γöé          Γöé
  4501. ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ   ΓööΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÿ       ΓööΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÿ   ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4502.      Γöé            Γöé   Γöé             Γöé   Γöé           Γöé
  4503.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ   Γöé                ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4504.             Γöé         ΓööΓöÇ(2) IMPLIBΓöÇΓöÿ         Γöé
  4505.                                              
  4506.       (1) LINK386                       (3) LINK386
  4507.                                              
  4508.             Γöé                                 Γöé
  4509.        ΓöîΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÉ                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4510.        Γöé.DLL fileΓöé                     Γöé .EXE file   Γöé
  4511.        Γöé(library)Γöé                     Γöé(application)Γöé
  4512.        ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4513.  
  4514. As depicted above, linking occurs in three steps: 
  4515.  
  4516.    1. Object files (and dynamic-link libraries) are linked with a module 
  4517.       definition (.DEF) file to create a .DLL file. A .DEF file is used that 
  4518.       defines all functions exported by the .DLL file. 
  4519.  
  4520.    2. The IMPLIB program is used to generate an import library (.LIB) file. 
  4521.       IMPLIB takes as input the same module definition file used in the first 
  4522.       step.  For each export definition in the .DEF file, IMPLIB generates a 
  4523.       corresponding import definition.  (IMPLIB can also use the .DLL file 
  4524.       generated in step 1 if you use the _export keyword in C declarations to 
  4525.       export functions.) 
  4526.  
  4527.    3. The .LIB file generated by IMPLIB is used as input to LINK386, which 
  4528.       creates an application (.EXE) file.  This .LIB file provides LINK386 with 
  4529.       information about imported dynamic-link functions. 
  4530.  
  4531.  
  4532. ΓòÉΓòÉΓòÉ 11.2.8. Module Definition Files Basics ΓòÉΓòÉΓòÉ
  4533.  
  4534. What Is a Module Definition File? 
  4535.  
  4536. A module definition file describes the names, attributes, exports, imports, and 
  4537. other characteristics of an application or library. You must use module 
  4538. definition files to create most applications for OS/2. You must use module 
  4539. definition files to create all OS/2 dynamic-link libraries and device drivers. 
  4540.  
  4541. Module Statements 
  4542.  
  4543. A module definition file contains one or more Module Statements These 
  4544. statements: 
  4545.  
  4546.      Define various attributes of the executable file 
  4547.      Define attributes of code and data segments 
  4548.      Identify functions that are imported or exported 
  4549.  
  4550.  
  4551. ΓòÉΓòÉΓòÉ 11.2.8.1. Module Definition File Example ΓòÉΓòÉΓòÉ
  4552.  
  4553. The following module definition file gives module definitions for a 
  4554. dynamic-link library.  It includes one source level comment and five 
  4555. statements. 
  4556.  
  4557.   ; Sample module-definition file
  4558.  
  4559.   LIBRARY
  4560.  
  4561.   DESCRIPTION
  4562.    'Sample .DEF file for a dynamic-link library'
  4563.  
  4564.   CODE      PRELOAD
  4565.  
  4566.   STACKSIZE 1024
  4567.  
  4568.   EXPORTS
  4569.    Init    @1
  4570.    Begin   @2
  4571.    Finish  @3
  4572.    Load    @4
  4573.    Print   @5
  4574.  
  4575.  
  4576. ΓòÉΓòÉΓòÉ 11.2.8.2. Module Statement Rules ΓòÉΓòÉΓòÉ
  4577.  
  4578.      If you use a NAME, LIBRARY, VIRTUAL DEVICE, or PHYSICAL DEVICE statement, 
  4579.       it must precede all other statements in the module definition file. 
  4580.  
  4581.      You can include source level comments in the module definition file by 
  4582.       beginning a line with a semicolon (;). Such lines are ignored. 
  4583.  
  4584.      All module definition keywords (such as NAME, LIBRARY, and OLD) must be 
  4585.       entered in uppercase letters. 
  4586.  
  4587.  
  4588. ΓòÉΓòÉΓòÉ 11.2.9. Module Statements ΓòÉΓòÉΓòÉ
  4589.  
  4590. LINK386 has the following module definition file statements: 
  4591.  
  4592.  BASE                  Base 
  4593.  CODE                  Gives default attributes for code segments 
  4594.  DATA                  Gives default attributes for data segments 
  4595.  DESCRIPTION           Describes the module 
  4596.  EXETYPE               Identifies operating system 
  4597.  EXPORTS               Defines exported functions 
  4598.  IMPORTS               Defines imported functions 
  4599.  HEAPSIZE              Specifies local heap size 
  4600.  LIBRARY               Names dynamic-link library 
  4601.  NAME                  Names application 
  4602.  OLD                   Preserves import information 
  4603.  PHYSICAL DEVICE       Names physical device driver 
  4604.  PROTMODE              Specifies DOS protected mode 
  4605.  SEGMENTS              Gives attributes for specific segments 
  4606.  STACKSIZE             Specifies local stack size 
  4607.  STUB                  Adds DOS executable file to module 
  4608.  VIRTUAL DEVICE        Names virtual device driver 
  4609.  
  4610.  
  4611. ΓòÉΓòÉΓòÉ 11.2.10. BASE Statement ΓòÉΓòÉΓòÉ
  4612.  
  4613. Syntax: BASE=n 
  4614.  
  4615. Where n is a value rounded up to the nearest multiple of 64K Indicates that 
  4616. each object of the module has a preferred load address starting with object 1 
  4617. at this address, object 2 at the next available multiple of 64K, and so on. 
  4618. Internal relocation records are then applied using this addressing scheme. 
  4619.  
  4620. If the module's objects can be loaded beginning at this preferred address, then 
  4621. no load-time internal relocation records need be applied. 
  4622.  
  4623. If the module's objects cannot be loaded beginning at this preferred address, 
  4624. then the internal relocation records that have been retained in the file data 
  4625. will be applied. 
  4626.  
  4627. EXE files may specify a base address, but it must be 64K.  If it isn't, a 
  4628. warning will be issued and a base address of 64K will be used anyway. 
  4629.  
  4630.  
  4631. ΓòÉΓòÉΓòÉ 11.2.11. CODE Statement ΓòÉΓòÉΓòÉ
  4632.  
  4633. Syntax: CODE [attribute...] 
  4634.  
  4635. This statement defines the default attributes for code segments within the 
  4636. application or library. One or more attributes can appear following the CODE 
  4637. statement: 
  4638.  
  4639.  PRELOAD or LOADONCALL Sets when code segment is loaded 
  4640.  
  4641.            Note:  OS/2 2.x ignores the preload attribute. 
  4642.  
  4643.  EXECUTEONLY or EXECUTEREAD Sets read/execute status 
  4644.  
  4645.  IOPL or NOIOPL Sets I/O privilege 
  4646.  
  4647.  CONFORMING or NONCONFORMING Determines segment conformance 
  4648.  
  4649.  Attribute Rules: 
  4650.  
  4651.      Only one attribute from each pair appears. If you specify neither 
  4652.       attribute from a pair, LINK386 supplies the default, listed second in 
  4653.       each pair above. 
  4654.  
  4655.      Attributes can appear in any order. 
  4656.  
  4657.  Example 
  4658.  
  4659.  The following example sets defaults for module code segments so they have I/O 
  4660.  hardware privilege and are not loaded until accessed. 
  4661.  
  4662.   CODE LOADONCALL IOPL
  4663.  
  4664.  
  4665. ΓòÉΓòÉΓòÉ 11.2.11.1. Load Code Attributes ΓòÉΓòÉΓòÉ
  4666.  
  4667. These attributes determine when a code segment is loaded: 
  4668.  
  4669.  PRELOAD        The segment is loaded automatically when the program starts. 
  4670.  
  4671.                 Note:  OS/2 2.x ignores the preload attribute. 
  4672.  
  4673.  LOADONCALL     The segment is not loaded until accessed (default). 
  4674.  
  4675.  
  4676. ΓòÉΓòÉΓòÉ 11.2.11.2. Read/Execute Code Attributes ΓòÉΓòÉΓòÉ
  4677.  
  4678. These attributes determine whether a code segment can be read as well as 
  4679. executed: 
  4680.  
  4681.  EXECUTEONLY    The segment can only be executed. 
  4682.  
  4683.  EXECUTEREAD    The segment can be both executed and read (default). 
  4684.  
  4685.  
  4686. ΓòÉΓòÉΓòÉ 11.2.11.3. I/O Privilege Code Attributes ΓòÉΓòÉΓòÉ
  4687.  
  4688. I/O privilege code attributes determine whether a segment has I/O privilege 
  4689. (that is, whether it can access the hardware directly): 
  4690.  
  4691.  IOPL 
  4692.       The code segment has I/O privilege. 
  4693.  
  4694.  NOIOPL 
  4695.       The code segment does not have I/O privilege (default). 
  4696.  
  4697.  
  4698. ΓòÉΓòÉΓòÉ 11.2.11.4. Conforming Code Attributes ΓòÉΓòÉΓòÉ
  4699.  
  4700. These attributes specify whether a code segment is a conforming segment: 
  4701.  
  4702.  CONFORMING     The segment is conforming. 
  4703.  
  4704.  NONCONFORMING  The segment is nonconforming (default). 
  4705.  
  4706.  The concept of a conforming segment has to do with privilege level (the range 
  4707.  of instructions that the process can execute) and is relevant only when you 
  4708.  are writing device drivers and system level code. A conforming segment can be 
  4709.  called from either Ring 2 or Ring 3, and the segment executes at the privilege 
  4710.  level of the caller. 
  4711.  
  4712.  
  4713. ΓòÉΓòÉΓòÉ 11.2.12. DATA Statement ΓòÉΓòÉΓòÉ
  4714.  
  4715. Syntax: DATA [attribute...] 
  4716.  
  4717. This statement defines the default attributes for data segments within the 
  4718. application or library. One or more attributes can appear following the DATA 
  4719. statement: 
  4720.  
  4721.  PRELOAD or LOADONCALL 
  4722.       Sets when data segment is loaded 
  4723.  
  4724.       Note:  OS/2 2.x ignores the preload attribute. 
  4725.  
  4726.  READONLY or READWRITE 
  4727.       Sets read/write access 
  4728.  
  4729.  NONE, SINGLE, or MULTIPLE 
  4730.       Sets sharing attributes 
  4731.  
  4732.  IOPL or NOIOPL 
  4733.       Sets I/O privilege 
  4734.  
  4735.  SHARED or NONSHARED 
  4736.       Determines whether segment is shared 
  4737.  
  4738.  Attribute Rules 
  4739.  
  4740.      Only one attribute out of each group appears; if you specify none of the 
  4741.       attributes in a group, the last attribute listed above for that group is 
  4742.       generally the default.  (The defaults for NONE/SINGLE/MULTIPLE and 
  4743.       SHARED/NONSHARED vary depending on whether you are describing a 
  4744.       dynamic-link library or application.) 
  4745.  
  4746.      Attributes can appear in any order. 
  4747.  
  4748.  Example 
  4749.  
  4750.  The following example defines the application data segment so that it is 
  4751.  loaded only when it is accessed and cannot be shared by more than one copy of 
  4752.  the program.  By default, the data segment can be read and written, the 
  4753.  automatic data segment is copied for each instance of the module, and the data 
  4754.  segment has no I/O privilege. 
  4755.  
  4756.   DATA LOADONCALL NONSHARED
  4757.  
  4758.  
  4759. ΓòÉΓòÉΓòÉ 11.2.12.1. Load Data Attributes ΓòÉΓòÉΓòÉ
  4760.  
  4761. These attributes determine when a data segment is loaded: 
  4762.  
  4763.  PRELOAD        The segment is loaded automatically when the program starts. 
  4764.  
  4765.                 Note:  OS/2 2.x ignores the preload attribute. 
  4766.  
  4767.  LOADONCALL     The segment is not loaded until accessed (default). 
  4768.  
  4769.  
  4770. ΓòÉΓòÉΓòÉ 11.2.12.2. Read/Write Data Attributes ΓòÉΓòÉΓòÉ
  4771.  
  4772. These attributes determine the access rights to a data segment: 
  4773.  
  4774.  READONLY       The segment can only be read. 
  4775.  
  4776.  READWRITE      The segment can be both read and written to (default). 
  4777.  
  4778.  
  4779. ΓòÉΓòÉΓòÉ 11.2.12.3. Sharing Data Attributes ΓòÉΓòÉΓòÉ
  4780.  
  4781. These attributes determine how the automatic data segment can be shared: 
  4782.  
  4783.  NONE      No automatic data segment is created. 
  4784.  
  4785.  SINGLE    A single automatic data segment is shared by all instances of the 
  4786.            module.  In this case, the module is said to have solo data.  This 
  4787.            keyword is the default for dynamic-link libraries. 
  4788.  
  4789.  MULTIPLE  The automatic data segment is copied for each instance of the 
  4790.            module.  In this case, the module is said to have instance data. 
  4791.            This keyword is the default for applications. 
  4792.  
  4793.  These attributes refer to initialized global data. The automatic data segment 
  4794.  is the physical segment represented by the group name DGROUP.  This segment 
  4795.  group makes up the physical segment that contains the local stack and heap of 
  4796.  the application. 
  4797.  
  4798.  
  4799. ΓòÉΓòÉΓòÉ 11.2.12.4. Shareable Data Attributes ΓòÉΓòÉΓòÉ
  4800.  
  4801. These attributes determine whether all instances of the program can share a 
  4802. READWRITE data segment: 
  4803.  
  4804.  SHARED         One copy of the data segment is loaded and shared among all 
  4805.                 processes accessing the module (default for dynamic-link 
  4806.                 libraries). 
  4807.  
  4808.  NONSHARED      The segment cannot be shared, and must be loaded separately for 
  4809.                 each process (default for applications). 
  4810.  
  4811.  These attributes refer to non-initialized global data. Under OS/2, this field 
  4812.  is ignored if READONLY is specified, since READONLY data segments are always 
  4813.  shared. 
  4814.  
  4815.  
  4816. ΓòÉΓòÉΓòÉ 11.2.12.5. LINK386 -I/O Privilege Data Attributes ΓòÉΓòÉΓòÉ
  4817.  
  4818. These attributes determine whether data segments have I/O privilege (that is, 
  4819. whether they can access the hardware directly): 
  4820.  
  4821.  IOPL      The data segments have I/O privilege. 
  4822.  
  4823.  NOIOPL    The data segments do not have I/O privilege (default). 
  4824.  
  4825.  
  4826. ΓòÉΓòÉΓòÉ 11.2.13. SEGMENTS Statement ΓòÉΓòÉΓòÉ
  4827.  
  4828. Syntax: 
  4829.  
  4830. SEGMENTS
  4831.          segmentdefinitions
  4832.  
  4833. This statement defines the attributes of one or more segments in the 
  4834. application or library on a segment-by-segment basis. The attributes specified 
  4835. by this statement override defaults set in CODE and DATA statements. 
  4836.  
  4837. The SEGMENTS keyword marks the beginning of the segment definitions. This 
  4838. keyword can be followed by one or more segment definitions, each on a separate 
  4839. line (limited by the number set by the LINK386 /SE option, or 128 if the option 
  4840. is not used). See Set Maximum Number of Segments (/SE). 
  4841.  
  4842. Segment-Definition Syntax 
  4843.  
  4844. ['] segmentname ['] [CLASS 'classname'][attribute...] 
  4845.  
  4846. Each segment definition begins with <segmentname>, optionally enclosed in 
  4847. single quotation marks ('). The quotation marks are required if <segmentname> 
  4848. conflicts with a module definition keyword, such as CODE or DATA. 
  4849.  
  4850. The CLASS keyword specifies the class of the segment.  Single quotation marks 
  4851. (') are required for <classname>. If you do not use the CLASS argument, LINK386 
  4852. assumes that the class is CODE. 
  4853.  
  4854. One or more attributes can follow. The default attribute is listed last. 
  4855.  
  4856.  PRELOAD or LOADONCALL 
  4857.       Determines when segment is loaded 
  4858.  
  4859.       Note:  OS/2 s.x ignores the preload attribute. 
  4860.  
  4861.  READONLY or READWRITE 
  4862.       Sets read/write access 
  4863.  
  4864.  EXECUTEONLY or EXECUTEREAD 
  4865.       Sets read/execute status 
  4866.  
  4867.  IOPL or NOIOPL 
  4868.       Sets I/O privilege 
  4869.  
  4870.  CONFORMING or NONCONFORMING 
  4871.       Determines conformance 
  4872.  
  4873.  MIXED1632 
  4874.       Specify Mixed 16 and 32-Bit Segments 
  4875.  
  4876.  ALIAS 
  4877.       Specify that segment is aliased 
  4878.  
  4879.  SHARED or NONSHARED 
  4880.       Specify that segment is shared 
  4881.  
  4882.  Attribute Rules 
  4883.  
  4884.      Only one attribute from each pair appears. If you specify neither 
  4885.       attribute from a pair, LINK386 supplies the default (listed second in 
  4886.       each pair above). 
  4887.  
  4888.      Attributes can appear in any order. 
  4889.  
  4890.  Example 
  4891.  
  4892.   SEGMENTS
  4893.     cseg1 CLASS 'mycode' IOPL
  4894.     cseg2 EXECUTEONLY PRELOAD CONFORMING
  4895.     dseg CLASS 'data' LOADONCALL READONLY
  4896.  
  4897.  This example specifies segments named cseg1, cseg2, and dseg. The first 
  4898.  segment is assigned class mycode and the second is assigned CODE by default. 
  4899.  Each segment is given different attributes. 
  4900.  
  4901.  
  4902. ΓòÉΓòÉΓòÉ 11.2.13.1. Load Segments Attributes ΓòÉΓòÉΓòÉ
  4903.  
  4904. These attributes determine when a segment is loaded: 
  4905.  
  4906.  PRELOAD        The segment is loaded automatically when the program starts. 
  4907.  
  4908.                 Note:  OS/2 2.x ignores the preload attribute. 
  4909.  
  4910.  LOADONCALL     The segment is not loaded until accessed (default). 
  4911.  
  4912.  
  4913. ΓòÉΓòÉΓòÉ 11.2.13.2. Read/Write Segments Attributes ΓòÉΓòÉΓòÉ
  4914.  
  4915. These attributes determine the access rights to a data segment: 
  4916.  
  4917.  READONLY       The segment can only be read. 
  4918.  
  4919.  READWRITE      The segment can be both read and written to (default). 
  4920.  
  4921.  
  4922. ΓòÉΓòÉΓòÉ 11.2.13.3. Read/Execute Segments Attributes ΓòÉΓòÉΓòÉ
  4923.  
  4924. These attributes determine whether a code segment can be read as well as 
  4925. executed: 
  4926.  
  4927.  EXECUTEONLY    The segment can only be executed. 
  4928.  
  4929.  EXECUTEREAD    The segment can be both executed and read (default). 
  4930.  
  4931.  
  4932. ΓòÉΓòÉΓòÉ 11.2.13.4. I/O Privilege Segments Attributes ΓòÉΓòÉΓòÉ
  4933.  
  4934. These attributes determine whether a segment has I/O privilege (that is, 
  4935. whether it can access the hardware directly): 
  4936.  
  4937.  IOPL      The segment has I/O privilege. 
  4938.  
  4939.  NOIOPL    The segment does not have I/O privilege (default). 
  4940.  
  4941.  
  4942. ΓòÉΓòÉΓòÉ 11.2.13.5. Conforming Segments Attributes ΓòÉΓòÉΓòÉ
  4943.  
  4944. These attributes specify whether a code segment is a conforming segment: 
  4945.  
  4946.  CONFORMING     The segment is conforming. 
  4947.  
  4948.  NONCONFORMING  The segment is nonconforming (default). 
  4949.  
  4950.  The concept of a conforming segment has to do with privilege level (the range 
  4951.  of instructions that the process can execute). Conforming attributes are 
  4952.  relevant only when you are writing device driver and system-level code.  A 
  4953.  conforming segment can be called from either Ring 2 or Ring 3, and the segment 
  4954.  executes at the privilege level of the caller. 
  4955.  
  4956.  
  4957. ΓòÉΓòÉΓòÉ 11.2.13.6. Specify Mixed 16 and 32-Bit Segments ΓòÉΓòÉΓòÉ
  4958.  
  4959. Sometimes it is necessary to mix 16-bit code with 32-bit code. When you must 
  4960. create groups that allow such mixing, LINK386 requires that you declare the 
  4961. segments in that group as MIXED1632. 
  4962.  
  4963.  
  4964. ΓòÉΓòÉΓòÉ 11.2.13.7. Specify that Segment is Aliased ΓòÉΓòÉΓòÉ
  4965.  
  4966. Segments flagged with the ALIAS keyword can be addressed using the 16-bit 
  4967. segmented method (_far16), or the 32-bit linear method.  The loader must 
  4968. prepare an additional segment selector for each segment designated with the 
  4969. ALIAS keyword.  This new segment selector allows for 16-bit addressing. 
  4970.  
  4971. Example: 
  4972.  
  4973. SEGMENTS _CODE  ALIAS
  4974.  
  4975. The statement above specifies that the segment _CODE can be called using 16-bit 
  4976. far calls and 32-bit near calls. 
  4977.  
  4978.  
  4979. ΓòÉΓòÉΓòÉ 11.2.13.8. Specify that Segment is Shared ΓòÉΓòÉΓòÉ
  4980.  
  4981. These attributes determine if the segment can be shared by other processes. 
  4982.  
  4983.  SHARED         One copy of the data segment is loaded and shared among all 
  4984.                 processes accessing the module (default for dynamic-link 
  4985.                 libraries). 
  4986.  
  4987.  NONSHARED      The segment cannot be shared, and must be loaded separately for 
  4988.                 each process (default for applications). 
  4989.  
  4990.  
  4991. ΓòÉΓòÉΓòÉ 11.2.14. DESCRIPTION Statement ΓòÉΓòÉΓòÉ
  4992.  
  4993. Syntax: DESCRIPTION 'text' 
  4994.  
  4995. This statement inserts the specified text into the application or library. The 
  4996. DESCRIPTION statement is useful for embedding source control or copyright 
  4997. information into an application or library. 
  4998.  
  4999. The <text> field is a one line string enclosed in single quotation marks. 
  5000.  
  5001. Example 
  5002.  
  5003. The following example inserts the text Template Program into the application or 
  5004. library being defined. 
  5005.  
  5006. DESCRIPTION 'Template Program'
  5007.  
  5008.  
  5009. ΓòÉΓòÉΓòÉ 11.2.15. EXETYPE Statement ΓòÉΓòÉΓòÉ
  5010.  
  5011. Syntax: EXETYPE [OS2 | WINDOWS | UNKNOWN] 
  5012.  
  5013. This statement specifies under which operating system the application (or 
  5014. dynamic-link library) is to run. This statement is optional and provides an 
  5015. additional degree of protection against the program being run in an incorrect 
  5016. operating system. 
  5017.  
  5018. The EXETYPE keyword can be followed by a descriptor of the operating system: 
  5019.  
  5020.  OS2             OS/2 applications and dynamic-link libraries (default) 
  5021.  WINDOWS         Windows** applications 
  5022.  UNKNOWN         Other applications 
  5023.  
  5024.  The effect of EXETYPE is to set bits in the header that identify 
  5025.  operating-system type.  Operating-system loaders can check these bits. 
  5026.  
  5027.  
  5028. ΓòÉΓòÉΓòÉ 11.2.16. EXPORTS Statement ΓòÉΓòÉΓòÉ
  5029.  
  5030. Syntax: 
  5031.  
  5032. EXPORTS
  5033.       exportdefinitions
  5034.  
  5035. This statement defines the names and attributes of the functions exported to 
  5036. other modules and of the functions that run with I/O privilege. 
  5037.  
  5038. Note:  The term export refers to the process of making a function available to 
  5039. other run-time modules.  By default, functions are hidden from other modules at 
  5040. run time. 
  5041.  
  5042. Normally, the EXPORTS statement is meaningful only for functions within 
  5043. dynamic-link libraries and for functions that execute with I/O privilege. 
  5044.  
  5045. The EXPORTS keyword marks the beginning of the export definitions. Each 
  5046. definition is entered on a separate line.  You need to give an export 
  5047. definition for each dynamic-link routine you want to make available to other 
  5048. modules. 
  5049.  
  5050. Export-Definition Syntax 
  5051.  
  5052. entryname [=internalname] [@ord[RESIDENTNAME]] [pwords] 
  5053.  
  5054.  <entryname> 
  5055.       The function name as it is known to other modules. 
  5056.  
  5057.  <internalname> 
  5058.       The actual name of the export function as it appears within the module 
  5059.       itself; by default, this name is the same as <entryname>. 
  5060.  
  5061.  <ord> 
  5062.       The function's ordinal position within the module definition table.  If 
  5063.       this field is used, the function's entry point can be invoked by name or 
  5064.       by ordinal.  Use of ordinal positions is faster and may save space. 
  5065.  
  5066.  RESIDENTNAME 
  5067.       Indicates that the function's name be kept resident in memory at all 
  5068.       times. This keyword is applicable only if <ord> is used. If <ord> is not 
  5069.       used, OS/2 automatically keeps the names of all exported functions 
  5070.       resident in memory by default. 
  5071.  
  5072.  <pwords> 
  5073.       The total size of the function's parameters, as measured in words (bytes 
  5074.       divided by two). This field is required only if the function executes 
  5075.       with I/O privilege. When a function with I/O privilege is called, OS/2 
  5076.       consults <pwords> to determine how many words to copy from the caller's 
  5077.       stack to the I/O-privileged function's stack. 
  5078.  
  5079.  Example 
  5080.  
  5081.   EXPORTS
  5082.     SampleRead = read2bin @8
  5083.     StringIn = str1       @4 RESIDENTNAME
  5084.     CharTest  6
  5085.  
  5086.  This example defines three export functions: 
  5087.  
  5088.      SampleRead 
  5089.      StringIn 
  5090.      CharTest 
  5091.  
  5092.  The first two functions can be accessed either by their exported names or by 
  5093.  an ordinal number. Note that in the module's own source code, these functions 
  5094.  are actually defined as read2bin and str1, respectively. The last function 
  5095.  runs with I/O privilege and therefore is given with the total size of the 
  5096.  parameters - six words. 
  5097.  
  5098.  
  5099. ΓòÉΓòÉΓòÉ 11.2.17. IMPORTS Statement ΓòÉΓòÉΓòÉ
  5100.  
  5101. Syntax: 
  5102.  
  5103. IMPORTS
  5104.   importdefinitions
  5105.  
  5106. This statement defines the names of the functions imported for the application 
  5107. or library. 
  5108.  
  5109. Note:  The term import refers to the process of declaring that a symbol is 
  5110. defined in another run-time module (a dynamic-link library). 
  5111.  
  5112. Typically, LINK386 uses an import library to resolve external references to 
  5113. dynamic-link symbols. However, the IMPORTS statement provides an alternative 
  5114. for resolving these references within a module. 
  5115.  
  5116. The IMPORTS keyword marks the beginning of the import definitions. This keyword 
  5117. is followed by one or more import definitions, each on a separate line. Each 
  5118. import definition corresponds to a particular function. 
  5119.  
  5120. Import-Definition Syntax 
  5121.  
  5122. [internalname=]modulename.entry
  5123.  
  5124.  <internalname> 
  5125.       The name that the importing module uses to call the function.  Thus, 
  5126.       <internalname> appears in the source code of the importing module, 
  5127.       although the function can have a different name in the module where it is 
  5128.       defined.  By default, internalname is the same as <entry>. 
  5129.  
  5130.  <modulename> 
  5131.       The name of the application or library that contains the function. 
  5132.  
  5133.  <entry> 
  5134.       The function to be imported; can be a name or an ordinal value.  (Ordinal 
  5135.       values are set in an EXPORTS statement.) If an ordinal value is given, 
  5136.       then <internalname> is required. 
  5137.  
  5138.  Note:  A given function has a name for each of three different contexts.  The 
  5139.  function has a name used by the exporting module (where it is defined), a name 
  5140.  used as an entry point between modules, and a name as it is used by the 
  5141.  importing module (where it is called).  If neither module uses the optional 
  5142.  <internalname> field, the function has the same name in all three contexts. 
  5143.  If either of the modules uses the <internalname> field, the function may have 
  5144.  more than one distinct name. 
  5145.  
  5146.  Syntax: 
  5147.  
  5148.   IMPORTS
  5149.     Sample.SampleRead
  5150.     SampleA.SampleWrite
  5151.     ReadChar = Read.1
  5152.  
  5153.  This example defines three functions to be imported: 
  5154.  
  5155.      SampleRead 
  5156.      SampleWrite 
  5157.      A function that has been assigned an ordinal value of 1 
  5158.  
  5159.  The functions are found in the modules Sample, SampleA, and Read, 
  5160.  respectively. The function from the Read module is referred to as ReadChar in 
  5161.  the importing module.  The original name of the function, as it is defined in 
  5162.  the Read module, may or may not be known. 
  5163.  
  5164.  
  5165. ΓòÉΓòÉΓòÉ 11.2.18. HEAPSIZE Statement ΓòÉΓòÉΓòÉ
  5166.  
  5167. Syntax: HEAPSIZE bytes | MAXVAL 
  5168.  
  5169. This statement defines the size of the application's local heap in bytes. This 
  5170. value affects the size of the automatic data segment. 
  5171.  
  5172. The field <bytes> contains any positive integer.  You can enter <bytes> in 
  5173. decimal, octal, or hexadecimal radix. See Entering Numeric Arguments. 
  5174.  
  5175. Instead of entering a number for <bytes>, you can enter the keyword MAXVAL. 
  5176. This sets the heap size such that the default data segment DGROUP is exactly 
  5177. 64K.  MAXVAL is useful in bound applications in which you want to force a 64K 
  5178. requirement for DGROUP. 
  5179.  
  5180. Example 
  5181.  
  5182. HEAPSIZE 4000
  5183.  
  5184. This example sets the local heap to 4,000 bytes. 
  5185.  
  5186.  
  5187. ΓòÉΓòÉΓòÉ 11.2.19. LIBRARY Statement ΓòÉΓòÉΓòÉ
  5188.  
  5189. Syntax: LIBRARY [libraryname][initialization]  [termination] 
  5190.  
  5191. This statement identifies the executable file as a dynamic-link library and 
  5192. optionally defines the name and library module initialization required. 
  5193.  
  5194. If <libraryname> is given, it becomes the name of the library as it is known by 
  5195. OS/2. This name can be any valid file name. If <libraryname> is not given, the 
  5196. name of the executable file - with the extension removed - becomes the name of 
  5197. the library. 
  5198.  
  5199. If <initialization> is given, it defines the library initialization required 
  5200. and can be one of the values below. If omitted, <initialization> defaults to 
  5201. INITGLOBAL. 
  5202.  
  5203.  INITGLOBAL 
  5204.       The library initialization routine is called only when the library module 
  5205.       is initially loaded into memory. 
  5206.  
  5207.       Using this keyword without a termination flag implies TERMGLOBAL for DLLs 
  5208.       with 32-bit entry points. 
  5209.  
  5210.  INITINSTANCE 
  5211.       The library initialization routine is called each time a new process 
  5212.       gains access to the library. 
  5213.  
  5214.       Using this keyword without a termination flag implies TERMINSTANCE for 
  5215.       DLLs with 32-bit entry points. 
  5216.  
  5217.  If <termination> is given, it defines the library termination required and can 
  5218.  be one of the values below. If omitted, <initialization> defaults to 
  5219.  TERMGLOBAL. The termination flag can only apply to DLLs with 32-bit entry 
  5220.  points. 
  5221.  
  5222.  TERMGLOBAL 
  5223.       The library termination routine is called only when the library module is 
  5224.       unloaded from memory. 
  5225.  
  5226.       Using this keyword without an initialization flag implies INITGLOBAL. 
  5227.  
  5228.  TERMINSTANCE 
  5229.       The library termination routine is called each time a process 
  5230.       relinquishes access to the library. 
  5231.  
  5232.       Using this keyword without an initialization flag implies INITINSTANCE. 
  5233.  
  5234.  If the LIBRARY statement is included in a module definition file, the NAME 
  5235.  statement cannot appear. If no LIBRARY statement appears, the module 
  5236.  definition file describes an application. 
  5237.  
  5238.  The following example assigns the name calendar to the dynamic-link library 
  5239.  and specifies that library initialization be performed each time a new process 
  5240.  gains access. 
  5241.  
  5242.     LIBRARY calendar INITINSTANCE
  5243.  
  5244.  
  5245. ΓòÉΓòÉΓòÉ 11.2.20. NAME Statement ΓòÉΓòÉΓòÉ
  5246.  
  5247. Syntax: NAME [appname][apptype] 
  5248.  
  5249. This statement identifies the executable file as an application and optionally 
  5250. defines the name and type. 
  5251.  
  5252. If <appname> is given, it becomes the name of the application as it is known by 
  5253. OS/2. This name can be any valid file name. If <appname> is not given, the name 
  5254. of the executable file - with the extension removed - becomes the name of the 
  5255. application. 
  5256.  
  5257. If <apptype> is given, it defines the type of application: 
  5258.  
  5259.  WINDOWAPI 
  5260.       Presentation Manager* application. The application uses the API provided 
  5261.       by the Presentation Manager and must be executed in the Presentation 
  5262.       Manager environment. 
  5263.  
  5264.  WINDOWCOMPAT 
  5265.       Application compatible with Presentation Manager. The application can run 
  5266.       inside the Presentation Manager, or it can run in a separate screen 
  5267.       group. An application can be of this type if it uses the proper subset of 
  5268.       OS/2 video, keyboard, and mouse functions supported in the Presentation 
  5269.       Manager applications. 
  5270.  
  5271.  NOTWINDOWCOMPAT 
  5272.       Application that is not compatible with the Presentation Manager and must 
  5273.       operate in a separate screen group from the Presentation Manager. 
  5274.  
  5275.  If the NAME statement appears, the LIBRARY, VIRTUAL DEVICE and PHYSICAL DEVICE 
  5276.  statements cannot appear. If none of these statements appear, the module 
  5277.  definition file is assumed to describe an application. 
  5278.  
  5279.  Example 
  5280.  
  5281.  The following example assigns the name calendar to the application being 
  5282.  defined. 
  5283.  
  5284.   NAME calendar WINDOWCOMPAT
  5285.  
  5286.  This application is Presentation Manager-compatible. 
  5287.  
  5288.  
  5289. ΓòÉΓòÉΓòÉ 11.2.21. OLD Statement ΓòÉΓòÉΓòÉ
  5290.  
  5291. Syntax: OLD 'filename' 
  5292.  
  5293. This statement directs LINK386 to search another dynamic-link module for export 
  5294. ordinals.  Exported names in the current module that match exported names in 
  5295. the OLD module are assigned ordinal values from that module unless one of the 
  5296. following conditions is in effect: 
  5297.  
  5298.      The name in the OLD module has no ordinal value assigned. 
  5299.  
  5300.      An ordinal value is explicitly assigned in the current module. 
  5301.  
  5302.  This statement is useful for preserving export ordinal values throughout 
  5303.  successive versions of a dynamic-link module.  The OLD statement has no effect 
  5304.  on application modules. 
  5305.  
  5306.  
  5307. ΓòÉΓòÉΓòÉ 11.2.22. PHYSICAL DEVICE Statement ΓòÉΓòÉΓòÉ
  5308.  
  5309. Syntax: PHYSICAL DEVICE [drivername] 
  5310.  
  5311. This statement identifies the executable file as a physical device driver. 
  5312.  
  5313. If <drivername> is given, it becomes the name of the driver as it is known by 
  5314. OS/2. This name can be any valid file name. If <drivername> is not given, the 
  5315. name of the executable file - with the extension removed - becomes the name of 
  5316. the driver. 
  5317.  
  5318.  
  5319. ΓòÉΓòÉΓòÉ 11.2.23. PROTMODE Statement ΓòÉΓòÉΓòÉ
  5320.  
  5321. Syntax: PROTMODE 
  5322.  
  5323. This statement specifies that the module runs only in protected mode and not in 
  5324. Windows or dual mode. This statement is always optional and permits a protected 
  5325. mode only application to omit some information from the executable file header. 
  5326.  
  5327. If this statement is not included in the module definition file, LINK386 
  5328. assumes the application can be run in either real or protected mode. 
  5329.  
  5330.  
  5331. ΓòÉΓòÉΓòÉ 11.2.24. STACKSIZE Statement ΓòÉΓòÉΓòÉ
  5332.  
  5333. Syntax: STACKSIZE number 
  5334.  
  5335. This statement performs the same function as the LINK386 /ST option; if both 
  5336. are used, the STACKSIZE statement overrides the /ST option.  See Control Stack 
  5337. Size (/ST). 
  5338.  
  5339. The field <number> contains a positive integer.  You can specify <number> in 
  5340. decimal, octal, or hexadecimal radix. See Entering Numeric Arguments. 
  5341.  
  5342. Example 
  5343.  
  5344. STACKSIZE 4096
  5345.  
  5346. This example allocates 4,096 bytes of local-stack space. 
  5347.  
  5348.  
  5349. ΓòÉΓòÉΓòÉ 11.2.25. STUB Statement ΓòÉΓòÉΓòÉ
  5350.  
  5351. Syntax: STUB 'filename' 
  5352.  
  5353. This statement adds a DOS executable file to the beginning of the application 
  5354. or library being created. The stub is invoked whenever the module is executed 
  5355. under DOS. Typically, the stub displays a message and terminates execution. By 
  5356. default, LINK386 adds its own standard stub for this purpose. 
  5357.  
  5358. The field <filename> specifies the DOS executable file to be added. LINK386 
  5359. looks for <filename> in the current directory and in the directories specified 
  5360. by the PATH environment variable. 
  5361.  
  5362. Example 
  5363.  
  5364. STUB 'STOPIT.EXE'
  5365.  
  5366. This example appends the DOS executable file STOPIT.EXE to the beginning of the 
  5367. module. STOPIT.EXE is executed when the module is run under DOS. 
  5368.  
  5369.  
  5370. ΓòÉΓòÉΓòÉ 11.2.26. VIRTUAL DEVICE Statement ΓòÉΓòÉΓòÉ
  5371.  
  5372. Syntax: VIRTUAL DEVICE [drivername] 
  5373.  
  5374. This statement identifies the executable file as a virtual device driver. 
  5375.  
  5376. If <drivername> is given, it becomes the name of the driver as it is known by 
  5377. OS/2. This name can be any valid file name. If <drivername> is not given, the 
  5378. name of the executable file - with the extension removed - becomes the name of 
  5379. the driver. 
  5380.  
  5381.  
  5382. ΓòÉΓòÉΓòÉ 12. MAP File to SYM File Creator (MAPSYM) ΓòÉΓòÉΓòÉ
  5383.  
  5384. The MAPSYM program creates .SYM files from .MAP files.  .SYM files are used by 
  5385. the kernel debugger for symbolic debugging. 
  5386.  
  5387. Note:  You must run MAPSYM from the directory in which the file to be converted 
  5388. is located. 
  5389.  
  5390. To create a .SYM file, follow these steps: 
  5391.  
  5392.    1. Make sure you are in the correct directory. 
  5393.  
  5394.    2. At the prompt type the following: 
  5395.  
  5396.             mapsym filename
  5397.  
  5398.       Note that the .MAP extension is not required. 
  5399.  
  5400.  
  5401. ΓòÉΓòÉΓòÉ 12.1. Help ΓòÉΓòÉΓòÉ
  5402.  
  5403. To display MAPSYM help, type MAPSYM at the prompt, with no arguments. The 
  5404. appropriate copyright statement appears, along with the following: 
  5405.  
  5406. usage: mapsym [-aln] mapfile
  5407.  
  5408.  
  5409. ΓòÉΓòÉΓòÉ 12.2. Options ΓòÉΓòÉΓòÉ
  5410.  
  5411. The following options may be used with MAPSYM: 
  5412.  
  5413.  /A   Omits Alphabetical sorting of symbols. 
  5414.  
  5415.  /N   Includes source code line Numbers in *.SYM file. 
  5416.  
  5417.  /L   Produces verbose Listing. 
  5418.  
  5419.  
  5420. ΓòÉΓòÉΓòÉ 13. View and Set Program Type For Executable File (MARKEXE) ΓòÉΓòÉΓòÉ
  5421.  
  5422. The MARKEXE program enables you to view and set the program type for an 
  5423. executable file. The program type identifies the OS/2 sessions in which a 
  5424. program can run. 
  5425.  
  5426. For applications running on OS/2 for SMP Version 3, MARKEXE enables you to set 
  5427. the MPUNSAFE bit, which forces the application to always run in uniprocessor 
  5428. mode. See Requirements for Multi-Processing for information on when to set the 
  5429. MPUNSAFE bit. 
  5430.  
  5431. Use MARKEXE with the OS/2 Linear Executable Linker (LINK386) or the OS/2 
  5432. Segmented Executable Linker (LINK) to change or set the program type of 
  5433. programs you have created and to set or unset the MPUNSAFE bit. 
  5434.  
  5435. You can set DLL initialization and termination and also enable long file name 
  5436. support. When using LINK386, you can set DLL initialization and termination; 
  5437. long file name support is already set. When using LINK, you can set DLL 
  5438. initialization and long file name support. 
  5439.  
  5440.  
  5441. ΓòÉΓòÉΓòÉ 13.1. Command-Line Syntax ΓòÉΓòÉΓòÉ
  5442.  
  5443. MARKEXE uses the following syntax: 
  5444.  
  5445. MARKEXE [/?] [FORCE] [NO] [option] filename...
  5446.  
  5447. Filename is a file name or a list of file names. Global file-name characters 
  5448. (*.EXE) also can be used. For descriptions of the above terms, see Syntax 
  5449. Definitions. If no option is given, DISPLAY is assumed. 
  5450.  
  5451. Typing MARKEXE /? at the command line displays the appropriate copyright 
  5452. statement along with a list of options. 
  5453.  
  5454.   DISPLAY         - display status of flags
  5455.   DLLINIT         - per-process initialization
  5456.   DLLTERM         - per-process termination
  5457.   WINDOWAPI       - window api (PM application)
  5458.   WINDOWCOMPAT    - window compatible application
  5459.   NOTWINDOWCOMPAT - not window compatible application
  5460.   UNSPECIFIED     - unspecified application type
  5461.   LFNS            - long file name support
  5462.   MPUNSAFE        - multi-processor unsafe application
  5463.  
  5464.  
  5465. ΓòÉΓòÉΓòÉ 13.1.1. Syntax Definitions ΓòÉΓòÉΓòÉ
  5466.  
  5467. MARKEXE has the following keywords, options, and program types. You can also 
  5468. specify any number of files to be viewed or marked. 
  5469.  
  5470. KEYWORDS 
  5471.  
  5472.  FORCE               Marks the executable file with OS/2 as the target 
  5473.                      operating system even though the file was marked for 
  5474.                      another operating system. Using FORCE might produce 
  5475.                      internally inconsistent executable files. 
  5476.  
  5477.  NO                  Sets the command to the opposite condition. This keyword 
  5478.                      does not apply to the DISPLAY option or any of the Program 
  5479.                      Type options. 
  5480.  
  5481.  OPTIONS 
  5482.  
  5483.  DISPLAY             Displays the application type in a message; does not make 
  5484.                      any changes. (This is the default option.) 
  5485.  
  5486.  DLLINIT             Sets per process initialization for the dynamic link 
  5487.                      library. 
  5488.  
  5489.  DLLTERM             Sets per process termination for the dynamic link library. 
  5490.                      (Use with LINK386 only.) 
  5491.  
  5492.  LFNS                Enables support of long file names.  (Use with LINK only.) 
  5493.  
  5494.  MPUNSAFE            Marks the application as unsafe for running in a 
  5495.                      multi-processor environment. 
  5496.  
  5497.  Note:  Only one option may be entered on the command line. 
  5498.  
  5499.  PROGRAM TYPES 
  5500.  
  5501.  MARKEXE does not modify the file if the executable file's program type is the 
  5502.  same as the requested type. It displays a message instead. 
  5503.  
  5504.  WINDOWAPI           The application is a Presentation Manager application and 
  5505.                      can run in the Presentation Manager session only. 
  5506.  
  5507.  WINDOWCOMPAT        The application can run in a Presentation Manager window 
  5508.                      or in an full-screen session. 
  5509.  
  5510.  NOTWINDOWCOMPAT     The application must run in an OS/2 full-screen session. 
  5511.  
  5512.  UNSPECIFIED         The application type is not known. By default, the OS/2 
  5513.                      operating system will force the program to run in a 
  5514.                      full-screen session. 
  5515.  
  5516.  Note:  Specifying an incorrect program type might cause undesirable results 
  5517.         when you try to run that program. For example, do not change a 
  5518.         WINDOWCOMPAT program to WINDOWAPI. 
  5519.  
  5520.  Only one program type may be entered on the command line. 
  5521.  
  5522.  
  5523. ΓòÉΓòÉΓòÉ 13.1.2. Viewing Program Type ΓòÉΓòÉΓòÉ
  5524.  
  5525. To display the program type of an executable file without changing the file, 
  5526. specify only a file name, omitting an option. 
  5527.  
  5528.    MARKEXE filename.exe
  5529.  
  5530. Example 
  5531.  
  5532. To view the program type of MYPROG.EXE, type the following: 
  5533.  
  5534.    MARKEXE myprog.exe
  5535.  
  5536. MARKEXE displays the type in a message that looks like this: 
  5537.  
  5538.    myprog.exe: OS/2 1.x, WINDOWCOMPAT, LFNS
  5539.  
  5540.  
  5541. ΓòÉΓòÉΓòÉ 13.1.3. Setting Program Type ΓòÉΓòÉΓòÉ
  5542.  
  5543. To set the program type of an executable file, specify one of the program 
  5544. types. More than one executable file can be set to the same program type on a 
  5545. single command line. 
  5546.  
  5547.    MARKEXE type filename.exe another.exe
  5548.  
  5549. Examples 
  5550.  
  5551. To set WINDOWCOMPAT as the program type of MYPROG.EXE, type: 
  5552.  
  5553.    MARKEXE WINDOWCOMPAT myprog.exe
  5554.  
  5555. To set WINDOWAPI as the program type of several executable files, type: 
  5556.  
  5557.    MARKEXE WINDOWAPI marion.exe alex.exe
  5558.  
  5559.  
  5560. ΓòÉΓòÉΓòÉ 13.1.4. Requirements for Multi-Processing ΓòÉΓòÉΓòÉ
  5561.  
  5562. The following compatibility's requirements should be considered before running 
  5563. an application in multi-processor mode: 
  5564.  
  5565.      An application or associated subsystem must not use the 'INC' instruction 
  5566.       as a semaphore without prepending a 'LOCK' prefix. On a UniProcessor (UP) 
  5567.       system this instruction can be used as a high-performance semaphore 
  5568.       without calling any other operating system service if the semaphore is 
  5569.       free and when the semaphore is clear and there are no waiters for the 
  5570.       semaphore. Because the INC instruction cannot be interrupted once 
  5571.       started, and because the results would be stored in the flags register 
  5572.       which are per thread, then it could be used safely as a semaphore. 
  5573.  
  5574.       In an OS/2 for SMP environment, this technique will not work because it 
  5575.       is possible that two or more threads could be executing the same INC 
  5576.       instruction, receiving the same results in each processor's or thread's 
  5577.       flag register and thinking that they have the semaphore. 
  5578.  
  5579.      A 486 or greater instruction such as CMPXCHG has the same problem as 
  5580.       above if a 'LOCK' prefix is not prepended before the instruction. 
  5581.  
  5582.      An application or associated subsystem which relies on priorities to 
  5583.       guarantee execution of it's threads within a process will not work in 
  5584.       OS/2 for SMP. For example, an application may have a time-critical and an 
  5585.       idle thread, and may assume that while the time-critical thread is 
  5586.       executing the idle thread will not get any execution time unless the 
  5587.       time-critical thread explicitly yields the CPU. In an OS/2 for SMP 
  5588.       environment it is possible that both the time-critical and the idle 
  5589.       threads are executing simultaneously on different processors. 
  5590.  
  5591.  The above compatibility requirements apply only to multi-threaded 
  5592.  applications, and therefore do no apply to DOS and WINOS2 applications. 
  5593.  However, you are strongly encouraged to write 32-bit multi-threaded 
  5594.  applications for better performance and portability on OS/2 for SMP. 
  5595.  
  5596.  Given the possibility that some set of applications may use one of these 
  5597.  techniques, OS/2 for SMP Version 3 provides a mechanism whereby these 
  5598.  multi-threaded applications can execute in UP mode. Only one thread of that 
  5599.  process would be allowed to execute at any given time. That thread could 
  5600.  execute on any one of the processors. MARKEXE can be used to mark the EXE file 
  5601.  as uniprocessor only. OS/2 forces the process to run in the uniprocessor mode 
  5602.  when the loader detects that the EXE file has been marked as uniprocessor 
  5603.  only. 
  5604.  
  5605.  Note:  OS/2 Warp Version 3 (non-SMP) still ships the EXECMODE utility. 
  5606.  
  5607.  
  5608. ΓòÉΓòÉΓòÉ 14. Preprocess Message Source File Utility (MKCATDEF) ΓòÉΓòÉΓòÉ
  5609.  
  5610. MKCATDEF preprocesses a message source file for input to GENCAT (see Generate 
  5611. Message Catalog Utility (GENCAT)). 
  5612.  
  5613. MKCATDEF reads a message source file containing symbolic identifiers and 
  5614. produces the following output: 
  5615.  
  5616.      The SYMBOLNAME.H file, containing statements that equate symbolic 
  5617.       identifiers with the set numbers and message ID numbers assigned by 
  5618.       MKCATDEF. You must include the SYMBOLNAME.H file in your application 
  5619.       program to associate the symbolic names to the set and message numbers 
  5620.       assigned by MKCATDEF. 
  5621.  
  5622.      A new message source file containing message numbers instead of symbolic 
  5623.       message identifiers. This output is suitable for input to GENCAT. 
  5624.  
  5625.  MKCATDEF sends the new message source file, with numbers instead of symbolic 
  5626.  identifiers, to standard output. You can use MKCATDEF output as input to 
  5627.  GENCAT in the following ways: 
  5628.  
  5629.      Use MKCATDEF with a > (redirection symbol) to write the new message 
  5630.       source to a file. Use this file as input to GENCAT. 
  5631.  
  5632.      Pipe the MKCATDEF output file directly to GENCAT. 
  5633.  
  5634.  After running MKCATDEF, you can use symbolic names in an application to refer 
  5635.  to messages. 
  5636.  
  5637.  
  5638. ΓòÉΓòÉΓòÉ 14.1. Syntax ΓòÉΓòÉΓòÉ
  5639.  
  5640. mkcatdef SymbolName SourceFile ...  [  -h ]
  5641.  
  5642.  
  5643. ΓòÉΓòÉΓòÉ 14.1.1. Flags ΓòÉΓòÉΓòÉ
  5644.  
  5645.  -h    Suppresses the generation of a SYMBOLNAME.H file. This flag must be the 
  5646.        last argument to MKCATDEF. 
  5647.  
  5648.  
  5649. ΓòÉΓòÉΓòÉ 14.1.2. Examples ΓòÉΓòÉΓòÉ
  5650.  
  5651. To process the SYMB.MSG message source file and redirect the output to the 
  5652. SYMB.SRC file, enter: 
  5653.  
  5654. mkcatdef symb symb.msg > symb.src
  5655.  
  5656. The generated SYMB.H file looks similar to the following: 
  5657.  
  5658. #ifdef        _H_SYMB_MSG
  5659. #define       _H_SYMB_MSG
  5660. #include <limits.h>
  5661. #include <nl_types.h>
  5662. #define       MF_SYMB "symb.cat"
  5663. /* The following was generated from symb.src. */
  5664. /* definitions for set MSFAC */
  5665. #define       SYM_FORM        1
  5666. #define       SYM_LEN 2
  5667. #define       MSG_H   6
  5668. #endif
  5669.  
  5670. MKCATDEF also creates the SYMB.SRC message catalog source file for the gencat 
  5671. command with numbers assigned to the symbolic identifiers: 
  5672.  
  5673. $quote " Use double quotation marks to delimit message text
  5674. $delset 1
  5675. $set 1
  5676. 1     "Symbolic identifiers can only contain alphanumeric \
  5677. characters or the _ (underscore character) but must begin with \
  5678. an alpha or _ character\n"
  5679. 2     "Symbolic identifiers cannot be more than 64 \
  5680. characters long\n"
  5681. 5     "You can mix symbolic identifiers and numbers\n"
  5682. $quote
  5683. 6     remember to include the "msg_h" file in your program
  5684.  
  5685. The assigned message numbers are noncontiguous because the source file 
  5686. contained a specific number. MKCATDEF always assigns the previous number plus 1 
  5687. to a symbolic identifier. 
  5688.  
  5689. Note:  MKCATDEF inserts a $delset command before a $set command in the output 
  5690. message source file. This means you cannot add, delete, or replace single 
  5691. messages in an existing catalog when piping to the gencat command. You must 
  5692. enter all messages in the set. 
  5693.  
  5694.  
  5695. ΓòÉΓòÉΓòÉ 14.2. Related Information ΓòÉΓòÉΓòÉ
  5696.  
  5697.      GENCAT (see Generate Message Catalog Utility (GENCAT)) 
  5698.  
  5699.      catclose, catgets and catopen (see C Library Reference) 
  5700.  
  5701.  
  5702. ΓòÉΓòÉΓòÉ 15. Make Message File (MKMSGF) ΓòÉΓòÉΓòÉ
  5703.  
  5704. The MKMSGF program reads the input message file that you specify and creates an 
  5705. output message file that DosGetMessage uses to display messages. 
  5706.  
  5707. There are two ways that the output message file can be used: 
  5708.  
  5709.      Selected messages can be bound to the message segment of an executable 
  5710.       file using the MSGBIND program. 
  5711.  
  5712.      Messages can be accessed directly from the output message file. 
  5713.  
  5714.  See How Message Retrieval Works for additional information. 
  5715.  
  5716.  
  5717. ΓòÉΓòÉΓòÉ 15.1. Syntax ΓòÉΓòÉΓòÉ
  5718.  
  5719. MKMSGF infile outfile [options] 
  5720.  
  5721.    OR 
  5722.  
  5723. MKMSGF @controlfile 
  5724.  
  5725. The infile field specifies the input file that contains message definitions. 
  5726. The input-file name can be any valid OS/2 file name, optionally preceded by a 
  5727. drive letter and a path. 
  5728.  
  5729. The outfile field specifies the output file created by MKMSGF. The output-file 
  5730. name can be any valid OS/2 file name, optionally preceded by a drive letter and 
  5731. a path. 
  5732.  
  5733. To differentiate between the two files, the following convention is 
  5734. recommended, using the same file name. 
  5735.  
  5736.      The infile file should have a .TXT extension. 
  5737.      The outfile file should have a .MSG extension. 
  5738.  
  5739.  Note:  The output file cannot have the same file name and extension as the 
  5740.         input file. 
  5741.  
  5742.  
  5743. ΓòÉΓòÉΓòÉ 15.1.1. Help ΓòÉΓòÉΓòÉ
  5744.  
  5745. There are two ways to display MKMSGF help. 
  5746.  
  5747. Short Syntax Help 
  5748.  
  5749. To display a short version of MKMSGF syntax help, type MKMSGF at the prompt, 
  5750. with no parameters. The following will be displayed: 
  5751.  
  5752. MKMSGF infile[.ext] outfile[.ext] [/V]
  5753. [/D <DBCS range or country>] [/P <code page>]
  5754. [/L <language id,sub id>]
  5755.  
  5756. Long Help 
  5757.  
  5758. To display a longer version of MKMSGF help, including defaults, country codes, 
  5759. and language IDs, type MKMSGF /? at the prompt. The following will be 
  5760. displayed: 
  5761.  
  5762. Use MKMSGF as follows:
  5763.  
  5764. MKMSGF <inputfile> <outputfile> [/V]
  5765.         [/D <DBCS range or country>]
  5766.         [/P <code page>]
  5767.         [/L <language family id,sub id>]
  5768.  
  5769. where the default values are:
  5770.    code page  -  none
  5771.    DBCS range -  none
  5772. A valid DBCS range is: n10,n11,n20,n21,...,nn0,nn1
  5773. A single number is taken as a DBCS country code.
  5774. For a complete list of code pages and country codes,
  5775. see the code page table under COUNTRYCODE in the online book
  5776. Control Program Programming Guide and Reference.
  5777. Supported OS/2 language/sublanguage ID values include:
  5778.  
  5779. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5780. ΓöéCode  ΓöéFamily  ΓöéSub  ΓöéLanguage               ΓöéPrincipal country Γöé
  5781. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5782. Γöé ARA  Γöé   1    Γöé  2  ΓöéArabic                 ΓöéArab Countries    Γöé
  5783. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5784. Γöé BGR  Γöé   2    Γöé  1  ΓöéBulgarian              ΓöéBulgaria          Γöé
  5785. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5786. Γöé CAT  Γöé   3    Γöé  1  ΓöéCatalan                ΓöéSpain             Γöé
  5787. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5788. Γöé CHT  Γöé   4    Γöé  1  ΓöéTraditional Chinese    ΓöéR.O.C.            Γöé
  5789. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5790. Γöé CHS  Γöé   4    Γöé  2  ΓöéSimplified Chinese     ΓöéP.R.C.            Γöé
  5791. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5792. Γöé CSY  Γöé   5    Γöé  1  ΓöéCzech                  ΓöéCzechoslovakia    Γöé
  5793. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5794. Γöé DAN  Γöé   6    Γöé  1  ΓöéDanish                 ΓöéDenmark           Γöé
  5795. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5796. Γöé DEU  Γöé   7    Γöé  1  ΓöéGerman                 ΓöéGermany           Γöé
  5797. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5798. Γöé DES  Γöé   7    Γöé  2  ΓöéSwiss German           ΓöéSwitzerland       Γöé
  5799. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5800. Γöé EEL  Γöé   8    Γöé  1  ΓöéGreek                  ΓöéGreece            Γöé
  5801. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5802. Γöé ENU  Γöé   9    Γöé  1  ΓöéUS English             ΓöéUnited States     Γöé
  5803. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5804. Γöé ENG  Γöé   9    Γöé  2  ΓöéUK English             ΓöéUnited Kingdom    Γöé
  5805. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5806. Γöé ESP  Γöé  10    Γöé  1  ΓöéCastilian Spanish      ΓöéSpain             Γöé
  5807. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5808. Γöé ESM  Γöé  10    Γöé  2  ΓöéMexican Spanish        ΓöéMexico            Γöé
  5809. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5810. Γöé FIN  Γöé  11    Γöé  1  ΓöéFinnish                ΓöéFinland           Γöé
  5811. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5812. Γöé FRA  Γöé  12    Γöé  1  ΓöéFrench                 ΓöéFrance            Γöé
  5813. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5814. Γöé FRB  Γöé  12    Γöé  2  ΓöéBelgian French         ΓöéBelgium           Γöé
  5815. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5816. Γöé FRC  Γöé  12    Γöé  3  ΓöéCanadian French        ΓöéCanada            Γöé
  5817. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5818. Γöé FRS  Γöé  12    Γöé  4  ΓöéSwiss French           ΓöéSwitzerland       Γöé
  5819. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5820. Γöé HEB  Γöé  13    Γöé  1  ΓöéHebrew                 ΓöéIsrael            Γöé
  5821. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5822. Γöé HUN  Γöé  14    Γöé  1  ΓöéHungarian              ΓöéHungary           Γöé
  5823. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5824. Γöé ISL  Γöé  15    Γöé  1  ΓöéIcelandic              ΓöéIceland           Γöé
  5825. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5826. Γöé ITA  Γöé  16    Γöé  1  ΓöéItalian                ΓöéItaly             Γöé
  5827. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5828. Γöé ITS  Γöé  16    Γöé  2  ΓöéSwiss Italian          ΓöéSwitzerland       Γöé
  5829. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5830. Γöé JPN  Γöé  17    Γöé  1  ΓöéJapanese               ΓöéJapan             Γöé
  5831. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5832. Γöé KOR  Γöé  18    Γöé  1  ΓöéKorean                 ΓöéKorea             Γöé
  5833. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5834. Γöé NLD  Γöé  19    Γöé  1  ΓöéDutch                  ΓöéNetherlands       Γöé
  5835. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5836. Γöé NLB  Γöé  19    Γöé  2  ΓöéBelgian Dutch          ΓöéBelgium           Γöé
  5837. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5838. Γöé NOR  Γöé  20    Γöé  1  ΓöéNorwegian - Bokmal     ΓöéNorway            Γöé
  5839. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5840. Γöé NON  Γöé  20    Γöé  2  ΓöéNorwegian - Nynorsk    ΓöéNorway            Γöé
  5841. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5842. Γöé PLK  Γöé  21    Γöé  1  ΓöéPolish                 ΓöéPoland            Γöé
  5843. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5844. Γöé PTB  Γöé  22    Γöé  1  ΓöéBrazilian Portuguese   ΓöéBrazil            Γöé
  5845. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5846. Γöé PTG  Γöé  22    Γöé  2  ΓöéPortuguese             ΓöéPortugal          Γöé
  5847. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5848. Γöé RMS  Γöé  23    Γöé  1  ΓöéRhaeto-Romanic         ΓöéSwitzerland       Γöé
  5849. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5850. Γöé ROM  Γöé  24    Γöé  1  ΓöéRomanian               ΓöéRomania           Γöé
  5851. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5852. Γöé RUS  Γöé  25    Γöé  1  ΓöéRussian                ΓöéU.S.S.R.          Γöé
  5853. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5854. Γöé SHL  Γöé  26    Γöé  1  ΓöéCroato-Serbian (Lat    ΓöéYugoslavia        Γöé
  5855. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5856. Γöé SHC  Γöé  26    Γöé  2  ΓöéSerbo-Croatian (Cyr    ΓöéYugoslavia        Γöé
  5857. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5858. Γöé SKY  Γöé  27    Γöé  1  ΓöéSlovakian              ΓöéCzechoslovakia    Γöé
  5859. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5860. Γöé SQI  Γöé  28    Γöé  1  ΓöéAlbanian               ΓöéAlbania           Γöé
  5861. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5862. Γöé SVE  Γöé  29    Γöé  1  ΓöéSwedish                ΓöéSweden            Γöé
  5863. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5864. Γöé THA  Γöé  30    Γöé  1  ΓöéThai                   ΓöéThailand          Γöé
  5865. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5866. Γöé TRK  Γöé  31    Γöé  1  ΓöéTurkish                ΓöéTurkey            Γöé
  5867. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5868. Γöé URD  Γöé  32    Γöé  1  ΓöéUrdu                   ΓöéPakistan          Γöé
  5869. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5870. Γöé BAH  Γöé  33    Γöé  1  ΓöéBahasa                 ΓöéIndonesia         Γöé
  5871. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5872.  
  5873.  
  5874. ΓòÉΓòÉΓòÉ 15.1.2. Input Message File ΓòÉΓòÉΓòÉ
  5875.  
  5876. The input message file is a standard ASCII file that contains three types of 
  5877. lines: 
  5878.  
  5879.      Comment lines 
  5880.      Component identifier line 
  5881.      Component message lines 
  5882.  
  5883.  Comment Lines 
  5884.  
  5885.  Comment lines are allowed anywhere in the input message file, except between 
  5886.  the component identifier and the first message. Comment lines must begin with 
  5887.  a semicolon (;) in the first column. 
  5888.  
  5889.  In the Input Message File Example, the comment lines are 
  5890.  
  5891.   ; This is a sample of an input
  5892.   ; message file for component DOS
  5893.   ; starting with three comment lines.
  5894.  
  5895.  Component Identifier Line 
  5896.  
  5897.  The component-identifier line contains a three-character name identifier that 
  5898.  precedes all MKMSGF message numbers. 
  5899.  
  5900.  In the example, the component identifier is DOS. 
  5901.  
  5902.  Component-Message Lines 
  5903.  
  5904.  Each component-message line consists of a message header and an ASCII text 
  5905.  message. 
  5906.  
  5907.  The message header is comprised of the following parts: 
  5908.  
  5909.      A three-character component identifier 
  5910.      A four-digit message number 
  5911.      A single character specifying message type (E, H, I, P, W, ?) 
  5912.      A colon (:) 
  5913.      Followed by a blank space. 
  5914.  
  5915.  The following message types are used: 
  5916.  
  5917.  Type   Meaning 
  5918.  E      Error 
  5919.  H      Help 
  5920.  I      Information 
  5921.  P      Prompt 
  5922.  W      Warning 
  5923.  ?      no message assigned to this number 
  5924.  
  5925.  The message header must begin in the first column of the line. Only one header 
  5926.  can precede the text of a message, although a message can span multiple lines. 
  5927.  
  5928.  Message numbers can start at any number, but messages must be numbered 
  5929.  sequentially.  If you do not use a message number, you must insert an empty 
  5930.  entry in its place in the text file. An empty entry consists of the message 
  5931.  number, with ? as the message type, and no text. 
  5932.  
  5933.  The character % has a special meaning when used within the text of a message: 
  5934.  
  5935.  %0 is placed at the end of a prompt (type P) to prevent DosGetMessage from 
  5936.  executing a carriage return and line feed.  This allows the user to be 
  5937.  prompted for input on the same line as the message text. 
  5938.  
  5939.  %1 - %9 are used to identify variable string insertion within the text of a 
  5940.  message.  These variables correspond to the Itable and IvCount parameters in 
  5941.  the DosGetMessage call. 
  5942.  
  5943.  Component-Message Example 
  5944.  
  5945.  For example, DOS0100E: is DOS error message 100. For additional examples, see 
  5946.  the Input Message File Example. 
  5947.  
  5948.  
  5949. ΓòÉΓòÉΓòÉ 15.1.3. Output File ΓòÉΓòÉΓòÉ
  5950.  
  5951. The output file contains the indexed message file that DosGetMessage will use. 
  5952. The output-file name can be any valid OS/2 file name, optionally preceded by a 
  5953. drive letter and a path.  The output file cannot have the same name as the 
  5954. input file. 
  5955.  
  5956. To differentiate between the two files, the following convention is 
  5957. recommended, using the same file name. 
  5958.  
  5959.      The infile file should have a .TXT extension. 
  5960.      The outfile file should have a .MSG extension. 
  5961.  
  5962.  Help-message file names begin with the component identifier, followed by 
  5963.  H.MSG. For example, the help file associated with the component identifier DOS 
  5964.  would be DOSH.MSG. 
  5965.  
  5966.  
  5967. ΓòÉΓòÉΓòÉ 15.2. Options ΓòÉΓòÉΓòÉ
  5968.  
  5969. Text-based messages in different code pages can be created using MKMSGF to 
  5970. display errors, help information, prompt, or provide general information to the 
  5971. application user. 
  5972.  
  5973. MKMSGF uses the following parameter formats to build message files: 
  5974.  
  5975.       MKMSGF infile outfile /Pcodepage 
  5976.  
  5977.       MKMSGF infile outfile /Ddbcsrange or country id 
  5978.  
  5979.       MKMSGF infile outfile /LlangID,VerId 
  5980.  
  5981.       MKMSGF infile outfile /V 
  5982.  
  5983.       MKMSGF infile outfile /? 
  5984.  
  5985.       MKMSGF @controlfile 
  5986.  
  5987.      Infile is the ASCII-text source file. 
  5988.  
  5989.       Example: 
  5990.  
  5991.             MSG
  5992.             MSG0001I: (mm%4dd%4yy) %2%4%1%4%3
  5993.             MSG0002I: (dd%4mm%4yy) %1%4%2%4%3
  5994.             MSG0003I: Current date is: %0
  5995.  
  5996.       %0 is a special argument that displays a prompt for user input. 
  5997.  
  5998.       %1 - %9 are the arguments the user can use to insert text in a message. 
  5999.  
  6000.      Outfile is the binary output message file. 
  6001.  
  6002.      @controlfile is the message definition file. 
  6003.  
  6004.  Options 
  6005.  
  6006.  /P        Code-page ID for the input message file. See /P Option 
  6007.  
  6008.  /D        DbcsRange or country ID for the input message file. See /D Option 
  6009.  
  6010.  /L        Language family ID (one word) and language version ID (one word). 
  6011.            See /L Option 
  6012.  
  6013.  /V        Verbose display of message file control variables as the message 
  6014.            file is being created. See /Verbose Option Output Example 
  6015.  
  6016.  /?        Help display of command syntax for MKMSGF. 
  6017.  
  6018.  Note:  Any combination of /P, /D, /L, and /V switches can be used for either 
  6019.         the command line or @controlfile execution method. 
  6020.  
  6021.  The / switch prefix and the - prefix can be used interchangeably when defining 
  6022.  switches to MKMSGF. 
  6023.  
  6024.  
  6025. ΓòÉΓòÉΓòÉ 15.2.1. /Verbose Option Output Example ΓòÉΓòÉΓòÉ
  6026.  
  6027. Following is a sample of MKMSGF output, using the Verbose option (/V). This 
  6028. output was produced using the following command: 
  6029.  
  6030. mkmsgf myapp.txt myapp.msg /v
  6031.  
  6032.   strIn     = myapp.txt
  6033.   strOut    = myapp.msg
  6034.   StrIncDir = (null)
  6035.   CodePages = 437
  6036.   Language family id = 0 and sub id = 0
  6037.   Language family id and sub id = unspecified
  6038.   flags     = none
  6039.   CP_type   = SBCS
  6040. "myapp.txt": length = 382 bytes.
  6041. 29 messages scanned.  Writing output file...
  6042. Size of table entry: word
  6043.  
  6044.  
  6045. ΓòÉΓòÉΓòÉ 15.2.2. /P Option ΓòÉΓòÉΓòÉ
  6046.  
  6047. The Code-page option (/P) specifies the code-page ID for that input message 
  6048. file. 
  6049.  
  6050. For a complete list of code pages, see the code page table under COUNTRYCODE in 
  6051. the online book Control Program Programming Reference. 
  6052.  
  6053. Up to 16 /P combinations can be saved with the message file. 
  6054.  
  6055. /P cannot be used to identify DBCS data. 
  6056.  
  6057.  
  6058. ΓòÉΓòÉΓòÉ 15.2.3. /D Option ΓòÉΓòÉΓòÉ
  6059.  
  6060. The DBCS option (/D) specifies the DBCS Range or country ID for that input 
  6061. message file. 
  6062.  
  6063. A valid DBCS country ID will cause the initialization of valid DBCS ranges to 
  6064. be set up for this file. 
  6065.  
  6066. See DBCS Code Pages and Country Codes for valid DBCS country codes. 
  6067.  
  6068.  
  6069. ΓòÉΓòÉΓòÉ 15.2.4. /L Option ΓòÉΓòÉΓòÉ
  6070.  
  6071. The Language option (/L) specifies the language family ID (one word) and 
  6072. language version ID (one word). 
  6073.  
  6074. Valid combination of language family and language version will be set for this 
  6075. file. 
  6076.  
  6077. A valid language family with invalid or undefined language version id will 
  6078. cause a default value of 1 to be set for language version. 
  6079.  
  6080.  
  6081. ΓòÉΓòÉΓòÉ 15.3. Control Files ΓòÉΓòÉΓòÉ
  6082.  
  6083. The control file (@controlfile) is used to create multiple-code-page message 
  6084. files. The at sign (@) is not part of the file name, but rather, a delimiter 
  6085. required before a control-file name. 
  6086.  
  6087. The control file has the following format: 
  6088.  
  6089. Example: 
  6090.  
  6091. root.in root.out /Pcodepage /Ddbcsrang/ctryid /LlangID,VerId
  6092. sub.001 sub1.out /Pcodepage /Ddbcsrang/ctryid /LlangID,VerId
  6093.                  .
  6094.                  .
  6095. sub.00n subn.out /Pcodepage /Ddbcsrang/ctryid /LlangID,VerId
  6096.  
  6097. The help option (/?) is invalid due to the purpose of the definition file. 
  6098.  
  6099. Note:  Any combination of /P /D /L and /V switches can be used for either the 
  6100.        command line or msg_definition_file execution method. 
  6101.  
  6102.  
  6103. ΓòÉΓòÉΓòÉ 15.3.1. Input Message File Example ΓòÉΓòÉΓòÉ
  6104.  
  6105. Following is an example of an input message file: 
  6106.  
  6107. ; This is a sample of an input
  6108. ; message file for component MAB
  6109. ; starting with three comment lines.
  6110. MAB
  6111. MAB0100E: File not found
  6112. MAB0101?:
  6113. MAB0102H: Usage: del [drive:][path] filename
  6114. MAB0103?:
  6115. MAB0104I: %1 files copied
  6116. MAB0105W: Warning! All data will be destroyed!
  6117. MAB0106?:
  6118. MAB0107?:
  6119. MAB0108P: Do you wish to apply these patches (Y or N)? %0
  6120. MAB0109E: Divide overflow
  6121.  
  6122.  
  6123. ΓòÉΓòÉΓòÉ 16. Make Template File (MKTMPF) ΓòÉΓòÉΓòÉ
  6124.  
  6125. MKTMPF creates template repository files from text input files. 
  6126.  
  6127. A template repository (also referred to as a repository file or repository in 
  6128. this document) is a binary file used by the operating system's Error Logging 
  6129. Facility to find error descriptions, causes, and actions in various message 
  6130. files. 
  6131.  
  6132. The first step in creating a repository file is to create a text input file for 
  6133. MKTMPF using any text editor. The contents and format of these files are 
  6134. described later in this document.  These input files can have any file name 
  6135. that is valid for your file system. A standard extension, TMP, is recommended, 
  6136. but not required. 
  6137.  
  6138. MKTMPF reads and validates this file, reporting any errors or warnings, before 
  6139. translating it to binary data and creating a repository file. 
  6140.  
  6141.  
  6142. ΓòÉΓòÉΓòÉ 16.1. Starting MKTMPF ΓòÉΓòÉΓòÉ
  6143.  
  6144. MKTMPF is started from the command line, so it can be used from batch files and 
  6145. makefiles in a batch environment. 
  6146.  
  6147.  
  6148. ΓòÉΓòÉΓòÉ 16.1.1. Command-Line Syntax ΓòÉΓòÉΓòÉ
  6149.  
  6150. The command-line syntax for MKTMPF is as follows: 
  6151.  
  6152. mktmpf [-?][-c][-q][-v][-O <outputfile>][-W <level>][-V<text>]<input file>
  6153.  
  6154.  
  6155. ΓòÉΓòÉΓòÉ 16.1.2. Command-Line Switches and Options ΓòÉΓòÉΓòÉ
  6156.  
  6157. There are two types of command-line arguments:  switches and options. Each 
  6158. command-line argument is denoted by a character prefixed by a hyphen (-) or a 
  6159. slash (/), and sometimes followed with a value to be used by the program. 
  6160. Command-line arguments are case-sensitive. 
  6161.  
  6162. Switches are used to set the state of a flag that affects the program's 
  6163. behavior. In effect, the presence of a given switch on the command line sets a 
  6164. flag that has a default value of FALSE, to TRUE. Switches consist of a hyphen 
  6165. or slash followed by a lowercase alphabetic character. They do not take a 
  6166. value, and can be grouped together with a single hyphen or slash (for example, 
  6167. -cq). 
  6168.  
  6169. Options are used to set the value of one of the variables that the program 
  6170. uses. They differ from switches in that they require at least one value to be 
  6171. entered. They consist of a hyphen or slash followed by an uppercase alphabetic 
  6172. character. 
  6173.  
  6174. The POSIX command-line delimiter "--" must be used when needed to separate 
  6175. options from operands. Any option-argument values that begin with a hyphen, 
  6176. plus sign, comma, at sign (@), space, or any special character must be enclosed 
  6177. in double quotation marks.  If any valid options are entered more than once on 
  6178. the command line, the last entry will be used and all previous occurrences will 
  6179. be ignored. 
  6180.  
  6181. Note: 
  6182.  
  6183. Options and switches are case-sensitive. 
  6184.  
  6185. Options can be specified in any order. 
  6186.  
  6187. <arg> indicates that "arg" is mandatory. 
  6188.  
  6189. [arg] indicates that "arg" is optional. 
  6190.  
  6191. If the -O, -V, or -W option immediately precedes the <input file> parameter, 
  6192. the two must be separated with "--".  For example: 
  6193.  
  6194. -O repository.rep -- infile.tmp
  6195.  
  6196.  The following are the switches and options that MKTMPF supports: 
  6197.  
  6198.  -?              A switch that displays help for MKTMPF. 
  6199.  
  6200.  -c              A switch that checks the input for syntax errors and does not 
  6201.                  create the repository file. 
  6202.  
  6203.  -q              A switch that suppresses the banner that MKTMPF displays when 
  6204.                  it starts. 
  6205.  
  6206.  -v              A switch that turns on verbose mode for logging and reporting 
  6207.                  purposes. 
  6208.  
  6209.  -O <output file> An option that specifies the name of the output repository 
  6210.                  file.  If this option is not provided, the output file name 
  6211.                  will match the input file name except the extension will be 
  6212.                  .REP. -O also overrides the repository path name specified in 
  6213.                  the input file. 
  6214.  
  6215.  -V <text>       An option that allows the user to specify the version of the 
  6216.                  repository file.  The version is 16 characters of user-defined 
  6217.                  text. 
  6218.  
  6219.  -W <level>      An option that specifies the warning level to be used. Valid 
  6220.                  warning levels are: 
  6221.  
  6222.                       1 - Displays fatal errors only. 
  6223.                       2 - Displays fatal and severe errors. 
  6224.                       3 - Displays fatal errors, severe errors, and warnings. 
  6225.                       4 - Displays all message types above, and informational 
  6226.                       messages. The default warning level is 3. 
  6227.  
  6228.  <input file>    The name of the file that contains the input statements used 
  6229.                  to build the templates. It must always be specified as the 
  6230.                  final parameter. 
  6231.  
  6232.  
  6233. ΓòÉΓòÉΓòÉ 16.2. Input Files ΓòÉΓòÉΓòÉ
  6234.  
  6235. The input file used by MKTMPF to create repository files can be created with a 
  6236. text editor (or other method of the user's choosing). It should contain one set 
  6237. of default path names and a set of one or more template entries. The following 
  6238. is an example of an input file with a single template. 
  6239.  
  6240. Note: 
  6241.  
  6242. The keywords surrounded by <> are replaced by the appropriate data. 
  6243.  
  6244. Blank lines are ignored. 
  6245.  
  6246. Any line in which an asterisk appears before any other non-white space is 
  6247. ignored. 
  6248.  
  6249. Keywords are not case-sensitive; key values are case-sensitive. 
  6250.  
  6251. Descriptive_name and comment must be in double quotation marks. 
  6252.  
  6253.   *****************************************************
  6254.   *** This section appears once in the input file   ***
  6255.   *****************************************************
  6256.    Repository_pathname = xxxxxxxxxx
  6257.    Default_message_pathname = xxxxxxxxxx
  6258.    Default_causes_pathname = xxxxxxxxxx
  6259.    Default_actions_pathname = xxxxxxxxxx
  6260.    Default_details_pathname = xxxxxxxxxx
  6261.    Descriptive_name = "xxxxxxxxxx"
  6262.   *****************************************************
  6263.   *** The remaining lines define a single template. ***
  6264.   *** Additional templates may be appended by       ***
  6265.   *** replicating the following text.               ***
  6266.   *****************************************************
  6267.    <action> Template_number = xxxxxxxx
  6268.    Comment = "xxxxxxxxxxxxxxxxx"
  6269.    Message_number = xxxxxxxx
  6270.    Log_Class = x
  6271.    Message_pathname = xxxxxxxxxxxxx
  6272.    Causes_pathname = xxxxxxxxxxxxxxx
  6273.    Actions_pathname = xxxxxxxxxxxxx
  6274.    Details_pathname = xxxxxxxxxxxxxxxxxxx
  6275.    Fail_causes = xxxxxxxx,xxxxxxxx,xxxxxxxx,xxxxxxxx
  6276.    Fail_actions = xxxxxxxx,xxxxxxxx,xxxxxxxx,xxxxxxxx
  6277.    Install_causes = xxxxxxxx,xxxxxxxx,xxxxxxxx,xxxxxxxx
  6278.    Install_actions = xxxxxxxx,xxxxxxxx,xxxxxxxx,xxxxxxxx
  6279.    User_causes = xxxxxxxx,xxxxxxxx,xxxxxxxx,xxxxxxxx
  6280.    User_actions = xxxxxxxx,xxxxxxxx,xxxxxxxx,xxxxxxxx
  6281.    Detail_data = <length>,<offset>,<heading>,<type>
  6282.  
  6283.  Note:  Long file names, white space, and special characters are acceptable if 
  6284.         the user's file system supports them. If a path name contains leading 
  6285.         or trailing white space, it should be enclosed in double quotation 
  6286.         marks. You can provide either a full path name or just the file name. 
  6287.         If the file name is provided, it is the developer's responsibility to 
  6288.         make sure it is in a directory specified in the DPATH of the system 
  6289.         where the repository will be used. 
  6290.  
  6291.  
  6292. ΓòÉΓòÉΓòÉ 16.2.1. Repository Keywords ΓòÉΓòÉΓòÉ
  6293.  
  6294. Repository keywords appear once and pertain to the entire input file. If a 
  6295. repository keyword is specified more than once, the last occurrence of the 
  6296. keyword will be used. 
  6297.  
  6298.  Repository_pathname (required) The name of the repository file where these 
  6299.                      templates are to be placed. This is a one-time parameter 
  6300.                      and, by convention, should be at the top of the input file 
  6301.                      (before any templates). The file extension, by convention, 
  6302.                      should be .REP and you can provide either a full path name 
  6303.                      or just the filename. If a path name contains leading or 
  6304.                      trailing white space, it should be enclosed in double 
  6305.                      quotation marks. If only the file name is provided, it 
  6306.                      will be placed in the current directory. If you do not 
  6307.                      specify a file name, one will be provided. 
  6308.  
  6309.  Default_message_pathname (optional) Default error-message file name that will 
  6310.                      be used if the template definition does not provide one. 
  6311.                      This is a one-time parameter and, by convention, should be 
  6312.                      at the top of the input file (before any templates are 
  6313.                      defined). 
  6314.  
  6315.  Default_causes_pathname (optional) Default causes-message  file name that will 
  6316.                      be used if the template definition does not provide one. 
  6317.                      This is a one-time parameter and, by convention, should be 
  6318.                      at the top of the input file (before any templates are 
  6319.                      defined). 
  6320.  
  6321.  Default_actions_pathname (optional) Default actions-message file name that 
  6322.                      will be used if the template definition does not provide 
  6323.                      one. This is a one-time parameter and, by convention, 
  6324.                      should be at the top of the input file (before any 
  6325.                      templates are defined). 
  6326.  
  6327.  Default_details_pathname (optional) Default details-message file name that 
  6328.                      will be used if the template definition does not provide 
  6329.                      one. This is a one-time parameter and, by convention, 
  6330.                      should be at the top of the input file (before any 
  6331.                      templates are defined). 
  6332.  
  6333.  Descriptive_name (optional) A 256-character (including ") descriptive name 
  6334.                      used to identify the contents of the template file.  This 
  6335.                      is a one-time parameter and must be at the top of the 
  6336.                      input file. 
  6337.  
  6338.  
  6339. ΓòÉΓòÉΓòÉ 16.2.2. Template Keywords ΓòÉΓòÉΓòÉ
  6340.  
  6341. Template keywords appear once for each template in this repository input file. 
  6342. If a template keyword is specified more than once, the last occurrence of the 
  6343. keyword will be used. 
  6344.  
  6345.  <action> (optional) Action that will be performed against this template entry. 
  6346.                      This keyword prefixes the Template_number keyword. If 
  6347.                      omitted, "ADD" will be the action taken. Valid actions 
  6348.                      are: 
  6349.  
  6350.                      ADD               Add this template to the specified 
  6351.                                        repository. 
  6352.  
  6353.                      COMMENT           Treat this entry as a comment only and 
  6354.                                        do not change the specified repository. 
  6355.  
  6356.  Template_number (required) The unique number that is to be associated with 
  6357.                      this template. MKTMPF will validate the number for 
  6358.                      uniqueness. This number is required for each template in 
  6359.                      the input file, and it cannot be 0. 
  6360.  
  6361.                      Note:  This signifies the start of a template entry.  The 
  6362.                             end of a template is detected by another 
  6363.                             Template_number entry or the end of file. 
  6364.  
  6365.  Comment (optional)   A 40-character (including ") user comment to be included 
  6366.                      with this template that might help the user identify what 
  6367.                      the template is used for. A sample comment would be: 
  6368.  
  6369.                      "I/O error on printer LPT2," which identifies that this 
  6370.                      template is to be used by FFSTProbes that detect I/O 
  6371.                      errors on LPT2. 
  6372.  
  6373.  Message_number (required) The main message number for this error. The message 
  6374.                      will be found in the  message file specified by 
  6375.                      Message_pathname or Default_message_pathname. This number 
  6376.                      is required for each template in the input file. A message 
  6377.                      number equal to 0 will be considered an error, because 
  6378.                      this could indicate a missing message number. 
  6379.  
  6380.  Log_Class (optional) The type (Log_Class) of this error; H = Hardware, S = 
  6381.                      Software (default). 
  6382.  
  6383.  Message_pathname (optional) Name of the message file that contains the main 
  6384.                      message for this template (Message = xxx). 
  6385.  
  6386.                      Note:  If this parameter is not provided, the 
  6387.                             Default_message_pathname information will be used. 
  6388.  
  6389.  Causes_pathname (optional) Name of the message file containing messages that 
  6390.                      provide cause information. 
  6391.  
  6392.                      Note:  If this parameter is not provided, the 
  6393.                             Default_causes_pathname information will be used. 
  6394.  
  6395.  Actions_pathname (optional) Name of the message file containing messages that 
  6396.                      provide specific information about actions that might 
  6397.                      correct this error. 
  6398.  
  6399.                      Note:  If this parameter is not provided, the 
  6400.                             Default_actions_pathname information will be used. 
  6401.  
  6402.  Details_pathname (optional) Name of the message file containing heading 
  6403.                      information for detail data formatting. 
  6404.  
  6405.                      Note:  If this parameter is not provided, the 
  6406.                             Default_details_pathname information will be used. 
  6407.  
  6408.  Fail_causes (optional) Up to four message numbers, separated by commas, that 
  6409.                      can be found in the Causes message file. These messages 
  6410.                      will provide information relating to the failure or error 
  6411.                      that occurred. 
  6412.  
  6413.  Fail_actions (optional) Up to four message numbers, separated by commas, that 
  6414.                      can be found in the Actions message file. These messages 
  6415.                      will provide information relating to the actions that 
  6416.                      should be taken to either correct or gather more 
  6417.                      information about the error. 
  6418.  
  6419.  Install_causes (optional) Up to four message numbers, separated by commas, 
  6420.                      that can be found in the Causes message file. These 
  6421.                      messages will provide information relating to possible 
  6422.                      installation causes of the failure or error that occurred. 
  6423.  
  6424.  Install_actions (optional) Up to four message numbers, separated by commas, 
  6425.                      that can be found in the Actions message file. These 
  6426.                      messages will provide information relating to the actions 
  6427.                      that should be taken to either correct or gather more 
  6428.                      information about the error. 
  6429.  
  6430.  User_causes (optional) Up to four message numbers, separated by commas, that 
  6431.                      can be found in the Causes message file. These messages 
  6432.                      will provide additional user information relating to the 
  6433.                      failure or error that occurred. 
  6434.  
  6435.  User_actions (optional) Up to four message numbers, separated by commas, that 
  6436.                      can be found in the Actions message file. These messages 
  6437.                      will provide information relating to the actions that 
  6438.                      should be taken to either correct or gather more 
  6439.                      information about the error. 
  6440.  
  6441.  Detail_data (optional) Entries used to format the user_data portion of 
  6442.                      template records. There can be multiple entries. Each 
  6443.                      entry contains four pieces of information separated by 
  6444.                      commas. The information must be in the following order: 
  6445.  
  6446.                      1. length      The length of data formatted by this 
  6447.                                     instruction. 
  6448.  
  6449.                      2. offset      The offset into the user_data area where 
  6450.                                     this formatting record is to start. The 
  6451.                                     first byte of user_data is position 0. 
  6452.  
  6453.                      3. heading     The message number of the details file that 
  6454.                                     is to be displayed before this data. A 
  6455.                                     blank specifies that no heading will be 
  6456.                                     displayed. 
  6457.  
  6458.                      4. type        The type of formatting that is to be done: 
  6459.  
  6460.                                     0         The data is not to be used. 
  6461.                                     1         The data conforms to ISO 8859.1 
  6462.                                               and is to be displayed in ASCII 
  6463.                                               characters. 
  6464.                                     2         The data is in binary format and 
  6465.                                               should be converted to decimal 
  6466.                                               before it is displayed. 
  6467.                                     3         Display the data in hexadecimal. 
  6468.                                     4         The data is Unicode and is to be 
  6469.                                               displayed in ASCII characters. 
  6470.  
  6471.  The following table shows which entries are required for the specific actions 
  6472.  of MKTMPF. If an entry is marked as "Optional," neither the entry type nor its 
  6473.  value is required. You can enter the entry type with no value if you desire to 
  6474.  have a placeholder. 
  6475.  
  6476.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6477.   ΓöéEntry Type               ΓöéAdd            ΓöéComment        Γöé
  6478.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6479.   ΓöéRepository_pathname      ΓöéRequired       ΓöéRequired       Γöé
  6480.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6481.   ΓöéDefault_Message_Pathname ΓöéOptional*      ΓöéOptional*      Γöé
  6482.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6483.   ΓöéDefault_Causes_Pathname  ΓöéOptional*      ΓöéOptional*      Γöé
  6484.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6485.   ΓöéDefault_Actions_Pathname ΓöéOptional*      ΓöéOptional*      Γöé
  6486.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6487.   ΓöéDefault_Details_Pathname ΓöéOptional*      ΓöéOptional       Γöé
  6488.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6489.   Γöé<action>                 ΓöéOptional       ΓöéRequired       Γöé
  6490.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6491.   ΓöéTemplate_number          ΓöéRequired       ΓöéOptional       Γöé
  6492.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6493.   ΓöéComment                  ΓöéOptional       ΓöéOptional       Γöé
  6494.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6495.   ΓöéMessage_number           ΓöéRequired       ΓöéOptional       Γöé
  6496.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6497.   ΓöéLog_Class                ΓöéOptional       ΓöéOptional       Γöé
  6498.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6499.   ΓöéMessage_pathname         ΓöéOptional*      ΓöéOptional       Γöé
  6500.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6501.   ΓöéCauses_pathname          ΓöéOptional*      ΓöéOptional       Γöé
  6502.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6503.   ΓöéActions_pathname         ΓöéOptional*      ΓöéOptional       Γöé
  6504.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6505.   ΓöéDetails_pathname         ΓöéOptional*      ΓöéOptional       Γöé
  6506.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6507.   ΓöéFail_causes              ΓöéOptional       ΓöéOptional       Γöé
  6508.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6509.   ΓöéFail_actions             ΓöéOptional       ΓöéOptional       Γöé
  6510.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6511.   ΓöéInstall_causes           ΓöéOptional       ΓöéOptional       Γöé
  6512.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6513.   ΓöéInstall_actions          ΓöéOptional       ΓöéOptional       Γöé
  6514.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6515.   ΓöéUser_causes              ΓöéOptional       ΓöéOptional       Γöé
  6516.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6517.   ΓöéUser_actions             ΓöéOptional       ΓöéOptional       Γöé
  6518.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6519.   ΓöéDetail_data              ΓöéOptional       ΓöéOptional       Γöé
  6520.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6521.   Γöé                         Γöé               Γöé               Γöé
  6522.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6523.   Γöé* Either the default pathΓöé               Γöé               Γöé
  6524.   Γöéname or the path name in Γöé               Γöé               Γöé
  6525.   Γöéeach template is requiredΓöé               Γöé               Γöé
  6526.   Γöéif the template is using Γöé               Γöé               Γöé
  6527.   Γöémessages. For examples,  Γöé               Γöé               Γöé
  6528.   Γöésee the following table. Γöé               Γöé               Γöé
  6529.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6530.   Γöé                         Γöé               Γöé               Γöé
  6531.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6532.  
  6533.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6534.   ΓöéRequired                      ΓöéWhen Required                 Γöé
  6535.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6536.   ΓöéDefault_message_pathname or   ΓöéAlways                        Γöé
  6537.   ΓöéMessage_pathname              Γöé                              Γöé
  6538.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6539.   Γöé                              Γöé                              Γöé
  6540.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6541.   ΓöéDefault_causes_pathname or    ΓöéWhen providing cause          Γöé
  6542.   ΓöéCauses_pathname               Γöéinformation                   Γöé
  6543.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6544.   Γöé                              Γöé                              Γöé
  6545.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6546.   ΓöéDefault_actions_pathname or   ΓöéWhen providing action         Γöé
  6547.   ΓöéActions_pathname              Γöéinformation                   Γöé
  6548.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6549.   Γöé                              Γöé                              Γöé
  6550.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6551.   ΓöéDefault_details_pathname or   ΓöéWhen providing detail data    Γöé
  6552.   ΓöéDetails_pathname              Γöéinformation                   Γöé
  6553.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6554.   Γöé                              Γöé                              Γöé
  6555.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6556.  
  6557.  
  6558. ΓòÉΓòÉΓòÉ 16.2.3. Output File and Error Reporting ΓòÉΓòÉΓòÉ
  6559.  
  6560. The output of MKTMPF is the repository file. 
  6561.  
  6562.  
  6563. ΓòÉΓòÉΓòÉ 16.2.3.1. Error Reporting ΓòÉΓòÉΓòÉ
  6564.  
  6565. Errors and other information are shown on the display. The log information for 
  6566. the verbose option includes: 
  6567.  
  6568.      The current settings for the following: 
  6569.  
  6570.         -  Quiet mode 
  6571.         -  Log file name 
  6572.         -  Output file name 
  6573.         -  Warning level 
  6574.         -  Check only 
  6575.         -  Version text 
  6576.  
  6577.      Informational and error messages 
  6578.  
  6579.  
  6580. ΓòÉΓòÉΓòÉ 17. Message Segment Binder (MSGBIND) ΓòÉΓòÉΓòÉ
  6581.  
  6582. The MSGBIND program binds a message segment to an executable program. It does 
  6583. this by reading an input file that specifies the executable files to modify. 
  6584. For each executable file, MSGBIND specifies which message files to scan, and 
  6585. for each message file, it specifies which messages to include in the executable 
  6586. file. Although the resulting executable file will be larger, access to messages 
  6587. will be faster. 
  6588.  
  6589. In the OS/2 operating system, message segment/objects are packed with other 
  6590. application code. If the size of the code segment/object and the bound messages 
  6591. exceeds 64KB, the following statement in the program definition file (.DEF) 
  6592. isolates the application code from the message statement/object: 
  6593.  
  6594.  16 Bit Applications 
  6595.       SEGMENTS '_MSGSEG' CLASS 'CODE' 
  6596.  
  6597.  32 Bit Applications 
  6598.       SEGMENTS '_MSGSEG32' CLASS 'CODE' 
  6599.  
  6600.  
  6601. ΓòÉΓòÉΓòÉ 17.1. Syntax ΓòÉΓòÉΓòÉ
  6602.  
  6603. The MSGBIND command line has the following form: 
  6604.  
  6605. MSGBIND infile
  6606.  
  6607. The infile field specifies the input file that identifies the executable files, 
  6608. output message files, and message numbers that will be bound.  The input-file 
  6609. name can be any valid OS/2 file name and can include an optional file name 
  6610. extension. 
  6611.  
  6612.  
  6613. ΓòÉΓòÉΓòÉ 17.1.1. Input File ΓòÉΓòÉΓòÉ
  6614.  
  6615. The input file contains the following three types of lines: 
  6616.  
  6617.      > Executable file 
  6618.  
  6619.      < Message file 
  6620.  
  6621.      Message numbers. 
  6622.  
  6623.  Executable file 
  6624.  
  6625.  The File in which messages are to be bound is preceded by a greater-than 
  6626.  symbol (>). The name of the file can be any valid OS/2 file name. 
  6627.  
  6628.  Two or more different executable files can be modified by the specifications 
  6629.  found in one input file. MSGBIND continues to use this file until it 
  6630.  encounters another greater-than symbol. 
  6631.  
  6632.  Message file 
  6633.  
  6634.  The message file to be read from is preceded by a less-than sign (<). You 
  6635.  create this file by using the MKMSGF program. The name can be any valid OS/2 
  6636.  file name. All message numbers that follow it are located in the specified 
  6637.  message file and are copied to the current output executable file. MSGBIND 
  6638.  reads the message-number list until it encounters one of the following: the 
  6639.  end of the input file, a new output specification, or a new input message 
  6640.  file. 
  6641.  
  6642.  Message Numbers 
  6643.  
  6644.  The messages in the message file are listed below the message-file name.  Only 
  6645.  those message numbers that you specify will be added. You can also specify an 
  6646.  asterisk (*) to indicate that all messages within the message file will be 
  6647.  added. Message numbers must consist of a three-letter component identifier 
  6648.  followed by a four-digit message number. 
  6649.  
  6650.  See Input Message File for a more detailed description of message numbers. 
  6651.  
  6652.  
  6653. ΓòÉΓòÉΓòÉ 17.1.2. Multiple Code-Page Message Files ΓòÉΓòÉΓòÉ
  6654.  
  6655. Multiple code-page message files can also be bound to an executable file, which 
  6656. enables a user to bind to an application messages for different countries. 
  6657.  
  6658. The following example shows how three messages in two different languages can 
  6659. be bound to an executable file: 
  6660.  
  6661. MSGBIND infile
  6662.  
  6663. where infile consists of the following: 
  6664.  
  6665.  >PROG1.EXE
  6666.  <TEXTUS.MSG
  6667.  MSG0001
  6668.  MSG0002
  6669.  MSG0003
  6670.  <TEXTIT.MSG
  6671.  MSG0001
  6672.  MSG0002
  6673.  MSG0003
  6674.  
  6675. where: 
  6676.  
  6677.      PROG1.EXE is the executable file to be modified. 
  6678.  
  6679.      TEXTUS.MSG is the file, created using MKMSGF, which contains messages in 
  6680.       US English. 
  6681.  
  6682.      TEXTIT.MSG is the file, created using MKMSGF, which contains the same 
  6683.       messages translated into Italian. 
  6684.  
  6685.      MSGnnnn defines the messages to be bound to the application: 
  6686.  
  6687.       MSG            Message component ID 
  6688.       0001           Message number 
  6689.  
  6690.  
  6691. ΓòÉΓòÉΓòÉ 17.1.3. Help ΓòÉΓòÉΓòÉ
  6692.  
  6693. To display MSGBIND help, type MSGBIND at the prompt, with no parameters. The 
  6694. following will be displayed: 
  6695.  
  6696. usage: MSGBIND scriptfile
  6697.  
  6698.  
  6699. ΓòÉΓòÉΓòÉ 17.2. How Message Retrieval Works ΓòÉΓòÉΓòÉ
  6700.  
  6701. When an application requests the message retriever for text associated with a 
  6702. message number, a test is made to determine if there is a bound message segment 
  6703. with this executable file.  If true, each bound message segment is searched for 
  6704. a match with the current session's code-page number. 
  6705.  
  6706. If a match is made, then the message number is searched for.  If it is found, 
  6707. the message will be returned to the caller. Otherwise, the search of remaining 
  6708. bound message segments will continue. 
  6709.  
  6710. If no match results from a search of all message segments, the message file on 
  6711. the disk is searched. DosGetMessage will access the message file under any of 
  6712. the following conditions: 
  6713.  
  6714.      The message file is in the current directory. 
  6715.      The message file is in the path specified in the DPATH environment 
  6716.       variable (protect mode). 
  6717.      The message file is in the path specified in the APPEND environment 
  6718.       variable (real mode). 
  6719.      The fully-qualified file name is specified in DosGetMessage. 
  6720.  
  6721.  
  6722. ΓòÉΓòÉΓòÉ 17.2.1. Sample Input File ΓòÉΓòÉΓòÉ
  6723.  
  6724. >c:\cmd.exe
  6725. <c:\os20\dosutil.msg
  6726. DOS0100
  6727. DOS0123
  6728. DOS0245
  6729. >c:\format.exe
  6730. <c:\os20\dosutil.msg
  6731. DOS0001
  6732. DOS0006
  6733. <c:\format.msg
  6734. FMT0001
  6735. FMT0002
  6736. <c:\myown.msg
  6737. *
  6738.  
  6739. The first line of a MSGBIND input file specifies that the executable file to 
  6740. modify is CMD.EXE.  The messages DOS0100, DOS0123, and DOS0245 are read from 
  6741. the file DOSUTIL.MSG and added to the CMD.EXE file.  The MSGBIND program then 
  6742. encounters an executable-file option for the FORMAT.EXE file.  The messages 
  6743. DOS0001 and DOS0006 are read from DOSUTIL.MSG and added to FORMAT.EXE.  Next, 
  6744. the messages FMT0001 and FMT0002 are read from the file FORMAT.MSG and added to 
  6745. FORMAT.EXE.  Finally, because an asterisk is specified, all the messages are 
  6746. read from the file MYOWN.MSG and added to FORMAT.EXE. 
  6747.  
  6748. The files DOSUTIL.MSG and FORMAT.MSG in this example are two 
  6749. output-message-file names from the MKMSGF program. 
  6750.  
  6751.  
  6752. ΓòÉΓòÉΓòÉ 18. Program Maintenance Utility Program (NMAKE) ΓòÉΓòÉΓòÉ
  6753.  
  6754. The Program Maintenance utility program, NMAKE, automates the process of 
  6755. updating project files.  NMAKE compares the modification dates for one set of 
  6756. files (the target files) with those of another set of files (the dependent 
  6757. files).  If any dependent files have changed more recently than the target 
  6758. files, NMAKE executes a series of commands to bring the targets up-to-date. 
  6759.  
  6760.  
  6761. ΓòÉΓòÉΓòÉ 18.1. Why Use NMAKE? ΓòÉΓòÉΓòÉ
  6762.  
  6763. The most common use of NMAKE is to automate the process of updating a project 
  6764. after you make a change to a source file.  Large projects tend to have many 
  6765. source files.  Often, only a few of your source files need to be compiled when 
  6766. you make a change.  You set up a special text file called a "description" file, 
  6767. or a "makefile", that tells NMAKE: 
  6768.  
  6769.      Which files depend on others 
  6770.      Which commands, such as compile and link commands, need to be carried out 
  6771.       to bring your program up-to-date 
  6772.  
  6773.  This use of NMAKE is only one example of its power.  By building suitable 
  6774.  description files, you can use NMAKE to 
  6775.  
  6776.      Make backups 
  6777.      Configure data files 
  6778.      Run programs when data files are modified 
  6779.  
  6780.  
  6781. ΓòÉΓòÉΓòÉ 18.2. Running NMAKE ΓòÉΓòÉΓòÉ
  6782.  
  6783. Run NMAKE by typing NMAKE on the operating-system command line.  Supply input 
  6784. to NMAKE by either of two methods: 
  6785.  
  6786.      Enter the input directly on the command line. 
  6787.      Put your input into a command file (a text file, also called a response 
  6788.       file) and enter the file name on the command line. 
  6789.  
  6790.  Press CTRL+C at any time during an NMAKE run to return to the operating 
  6791.  system. 
  6792.  
  6793.  Note:  Under the OS/2 operating system, do not use the ampersand character (&) 
  6794.         to combine the NMAKE command with the CD, CHDIR, or SET command. 
  6795.  
  6796.  
  6797. ΓòÉΓòÉΓòÉ 18.2.1. Using the Command Line ΓòÉΓòÉΓòÉ
  6798.  
  6799. When using NMAKE at the command line, keep the following in mind: 
  6800.  
  6801.      All fields are optional. 
  6802.      If the /F option (Specify Description File) is specified, NMAKE uses the 
  6803.       description file provided with the /F option. Otherwise, NMAKE will look 
  6804.       in the current directory for a description file named MAKEFILE. 
  6805.  
  6806.  
  6807. ΓòÉΓòÉΓòÉ 18.2.1.1. Command-Line Syntax ΓòÉΓòÉΓòÉ
  6808.  
  6809. NMAKE [options] [macrodefinitions] [targets] [/F filename]
  6810.  
  6811.  <options> 
  6812.       Specifies options that modify NMAKE's actions. 
  6813.  
  6814.  <macrodefinitions> 
  6815.       Lists macro definitions for NMAKE to use.  Macro definitions that contain 
  6816.       spaces must be enclosed by double quotation marks. 
  6817.  
  6818.  <targets> 
  6819.       Specifies the names of one or more target files to build. If you do not 
  6820.       list any targets, NMAKE builds the first target in the description file. 
  6821.  
  6822.  /F <filename> 
  6823.       Gives the name of the description file where you specify file 
  6824.       dependencies and which commands to execute when a file is out-of-date. 
  6825.  
  6826.  The following example: 
  6827.  
  6828.   NMAKE /S "program = flash" SORT.EXE SEARCH.EXE
  6829.  
  6830.      Invokes NMAKE with the /S option 
  6831.      Defines a macro, assigning the string "flash" to the macro "program" 
  6832.      Specifies two targets:  SORT.EXE and SEARCH.EXE 
  6833.  
  6834.  By default, NMAKE uses the file named MAKEFILE as the description file. 
  6835.  
  6836.  
  6837. ΓòÉΓòÉΓòÉ 18.2.1.2. Command-Line Help ΓòÉΓòÉΓòÉ
  6838.  
  6839. To display NMAKE help, type NMAKE /? at the prompt.  The appropriate copyright 
  6840. statement appears, along with the following: 
  6841.  
  6842. Usage:
  6843.     NMAKE @commandfile
  6844.     NMAKE /help
  6845.     NMAKE [/nologo] [/acdeinpqrst?] [/f makefile] [/x stderrfile] 
  6846.  
  6847.     [macrodefs][targets]
  6848.  
  6849. Where the options stand for
  6850.  /a    force All targets to be built
  6851.  /c    Cryptic mode; suppress sign-on banner & warning messages
  6852.  /d    Display modification dates
  6853.  /e    Environment variables override macros in the makefile
  6854.  /i    Ignore exit codes of commands invoked
  6855.  /n    No execute mode; display commands only
  6856.  /p    Print macro definitions & target descriptions
  6857.  /q    Query if target is up to date; for use in batch files
  6858.  /r    inference Rules from 'tools.ini' to be ignored
  6859.  /s    Silent execution of commands
  6860.  /t    Touch targets with current date & time
  6861.  /?    Help message
  6862.  /help  Help message
  6863.  /nologo Do not display sign-on banner
  6864.  
  6865.  
  6866. ΓòÉΓòÉΓòÉ 18.2.2. Using NMAKE Command Files ΓòÉΓòÉΓòÉ
  6867.  
  6868. A command file is a response file used to extend command-line input to NMAKE. 
  6869.  
  6870. You can split input to NMAKE between the command line and a command file. Use 
  6871. the name of a command file (preceded by @) where you normally type the input 
  6872. information on the command line. 
  6873.  
  6874. Why Use a Command File? 
  6875.  
  6876. Use a command file for: 
  6877.  
  6878.      Complex and long commands you type frequently 
  6879.      Strings of command-line arguments, such as macro definitions, that exceed 
  6880.       the limit for command-line length 
  6881.  
  6882.       Note:  A command file is not the same as a description file. For 
  6883.              information about description files, see Description Files 
  6884.  
  6885.  Command-File Syntax 
  6886.  
  6887.  To provide input to NMAKE with a command file, type 
  6888.  
  6889.   NMAKE @commandfile
  6890.  
  6891.  For the <commandfile> parameter, enter the name of a file containing the same 
  6892.  information as is normally entered on the command line. 
  6893.  
  6894.  NMAKE treats line breaks that occur between arguments as spaces. Macro 
  6895.  definitions can span multiple lines if you end each line except the last with 
  6896.  a backslash (\).  Macro definitions that contain spaces must be enclosed by 
  6897.  quotation marks, just as if they were entered directly on the command line. 
  6898.  
  6899.  Example 
  6900.  
  6901.  The following is a command file called UPDATE: 
  6902.  
  6903.   /S "program \
  6904.   = flash" SORT.EXE SEARCH.EXE
  6905.  
  6906.  You can use this command file by typing the following command: 
  6907.  
  6908.   NMAKE @UPDATE
  6909.  
  6910.  This runs NMAKE using: 
  6911.  
  6912.      The /S option 
  6913.      The macro definition "program = flash" 
  6914.      The targets specified as SORT.EXE and SEARCH.EXE 
  6915.      The description file, MAKEFILE, by default 
  6916.  
  6917.  Note that the backslash allows the macro definition to span two lines. 
  6918.  
  6919.  
  6920. ΓòÉΓòÉΓòÉ 18.3. Options ΓòÉΓòÉΓòÉ
  6921.  
  6922. The following describes the options you can use with NMAKE. 
  6923.  
  6924. Keep the following in mind when using these options: 
  6925.  
  6926.      Option characters are not case-sensitive;  /I and /i are equivalent. 
  6927.      You can use either a slash or a dash before the option characters;  -a 
  6928.       and /a are equivalent. 
  6929.  
  6930.  
  6931. ΓòÉΓòÉΓòÉ 18.3.1. Produce Error File (/X) ΓòÉΓòÉΓòÉ
  6932.  
  6933. Syntax: /X stderrfile 
  6934.  
  6935. This option produces a standard error file. 
  6936.  
  6937.  
  6938. ΓòÉΓòÉΓòÉ 18.3.2. Build All Targets (/A) ΓòÉΓòÉΓòÉ
  6939.  
  6940. Syntax: /A 
  6941.  
  6942. This option builds all specified targets, even if they are not out-of-date with 
  6943. respect to their dependent files. 
  6944.  
  6945. See Description Files. 
  6946.  
  6947.  
  6948. ΓòÉΓòÉΓòÉ 18.3.3. Suppress Messages (/C) ΓòÉΓòÉΓòÉ
  6949.  
  6950. Syntax: /C 
  6951.  
  6952. This option suppresses display of the NMAKE sign-on banner, non-fatal error 
  6953. messages, and warning messages.  To suppress the sign-on banner without 
  6954. suppressing other messages, use the /NOLOGO option. 
  6955.  
  6956.  
  6957. ΓòÉΓòÉΓòÉ 18.3.4. Display Modification Dates (/D) ΓòÉΓòÉΓòÉ
  6958.  
  6959. Syntax: /D 
  6960.  
  6961. This option displays the modification date of each file when the dates of 
  6962. target and dependent files are checked. 
  6963.  
  6964. See Description Files. 
  6965.  
  6966.  
  6967. ΓòÉΓòÉΓòÉ 18.3.5. Override Environment Variables (/E) ΓòÉΓòÉΓòÉ
  6968.  
  6969. Syntax: /E 
  6970.  
  6971. This option disables inherited macro redefinition. 
  6972.  
  6973. NMAKE inherits all current environment variables as macros, which can be 
  6974. redefined in a description file. The /E option disables any redefinition - the 
  6975. inherited macro always has the value of the environment variable. 
  6976.  
  6977.  
  6978. ΓòÉΓòÉΓòÉ 18.3.6. Specify Description File (/F) ΓòÉΓòÉΓòÉ
  6979.  
  6980. Syntax: /F filename 
  6981.  
  6982. This option specifies <filename> as the name of the description file to use. 
  6983. If a dash (-) is entered instead of a file name, NMAKE reads a description file 
  6984. from the standard input device, typically the keyboard. 
  6985.  
  6986. If a file name is not specified, it defaults to MAKEFILE. 
  6987.  
  6988.  
  6989. ΓòÉΓòÉΓòÉ 18.3.7. Display Help (/HELP or /?) ΓòÉΓòÉΓòÉ
  6990.  
  6991. Syntax:   /HELP    OR   /? 
  6992.  
  6993. This option displays a brief summary of NMAKE syntax. 
  6994.  
  6995.  
  6996. ΓòÉΓòÉΓòÉ 18.3.8. Ignore Exit Codes (/I) ΓòÉΓòÉΓòÉ
  6997.  
  6998. Syntax: /I 
  6999.  
  7000. This option ignores exit codes (also called error level or return codes) 
  7001. returned by programs such as compilers or linkers called by NMAKE.  If this 
  7002. option is not specified, NMAKE ends when any program returns a nonzero exit 
  7003. code. 
  7004.  
  7005.  
  7006. ΓòÉΓòÉΓòÉ 18.3.9. Display Commands (/N) ΓòÉΓòÉΓòÉ
  7007.  
  7008. Syntax: /N 
  7009.  
  7010. This option causes NMAKE commands to be displayed but not executed.  Use the /N 
  7011. option to: 
  7012.  
  7013.      Check which targets are out-of-date with respect to their dependents 
  7014.  
  7015.      Debug description files 
  7016.  
  7017.  
  7018. ΓòÉΓòÉΓòÉ 18.3.10. Suppress Sign-On Banner (/NOLOGO) ΓòÉΓòÉΓòÉ
  7019.  
  7020. Syntax: /NOLOGO 
  7021.  
  7022. This option suppresses the sign-on banner display when NMAKE is started.  If 
  7023. you want to suppress non fatal error messages and warnings as well, use the 
  7024. suppress messages (/C) option. 
  7025.  
  7026.  
  7027. ΓòÉΓòÉΓòÉ 18.3.11. Print Macro and Target Definitions (/P) ΓòÉΓòÉΓòÉ
  7028.  
  7029. Syntax: /P 
  7030.  
  7031. This option writes all macro definitions and target definitions. Output is sent 
  7032. to the standard output device (typically the display). 
  7033.  
  7034.  
  7035. ΓòÉΓòÉΓòÉ 18.3.12. Return Exit Code (/Q) ΓòÉΓòÉΓòÉ
  7036.  
  7037. Syntax: /Q 
  7038.  
  7039. This option causes NMAKE to return either of the following: 
  7040.  
  7041.      A 0 exit code if all targets built during an NMAKE run are up-to-date 
  7042.      A nonzero exit code if they are not up-to-date 
  7043.  Use this option to run NMAKE from within a batch file. 
  7044.  
  7045.  
  7046. ΓòÉΓòÉΓòÉ 18.3.13. Ignore TOOLS.INI File (/R) ΓòÉΓòÉΓòÉ
  7047.  
  7048. Syntax: /R 
  7049.  
  7050. This option ignores the following: 
  7051.  
  7052.      All inference rules and macros contained in the TOOLS.INI file 
  7053.      All predefined inference rules and macros 
  7054.  
  7055.  
  7056. ΓòÉΓòÉΓòÉ 18.3.14. Suppress Command Display (/S) ΓòÉΓòÉΓòÉ
  7057.  
  7058. Syntax: /S 
  7059.  
  7060. This option suppresses the display of commands as they are executed by NMAKE. 
  7061. It does not suppress the display of messages generated by the commands 
  7062. themselves. 
  7063.  
  7064. The /N command (Display Commands) takes precedence over the /S option.  If you 
  7065. use /N and /S together, commands are displayed but not executed. 
  7066.  
  7067.  
  7068. ΓòÉΓòÉΓòÉ 18.3.15. Change Target Modification Dates (/T) ΓòÉΓòÉΓòÉ
  7069.  
  7070. Syntax: /T 
  7071.  
  7072. This option changes or "touches" the modification dates for out-of-date target 
  7073. files to the current date. No commands are executed, and the target file is 
  7074. left unchanged. 
  7075.  
  7076.  
  7077. ΓòÉΓòÉΓòÉ 18.4. Description Files ΓòÉΓòÉΓòÉ
  7078.  
  7079. NMAKE uses a description file to determine what to do.  In its simplest form, a 
  7080. description file tells NMAKE which files depend on others and which commands 
  7081. need to be executed if a file changes. 
  7082.  
  7083. A description file looks like this: 
  7084.  
  7085.  
  7086. targets...: dependents...Γöé
  7087.      command             Γöé ΓöÇΓöÇdescription block
  7088.         :                Γöé
  7089.  
  7090. targets... : dependents...
  7091.      command
  7092.  
  7093.  
  7094. ΓòÉΓòÉΓòÉ 18.4.1. Description Blocks ΓòÉΓòÉΓòÉ
  7095.  
  7096. A dependent relationship between files is defined in a description block.  A 
  7097. "description block" indicates the relationship among various parts of the 
  7098. program.  It contains commands to bring all components up to date.  The 
  7099. description file can contain up to 1024 description blocks. 
  7100.  
  7101. Description File                       Description Block
  7102. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7103. Γöé Description  Γöé     Γöé                Γöé                           Γöé
  7104. Γöé   Block 1    Γöé     Γöé                Γöétargets... : dependents... Γöé
  7105. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                Γöé command                   Γöé
  7106. Γöé Descr Blk 2  Γöé                      Γöé command                   Γöé
  7107. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                Γöé command                   Γöé
  7108. Γöé      :       Γöé     Γöé                Γöé    :                      Γöé
  7109. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ     Γöé                Γöé                           Γöé
  7110. Γöé Descr Blk n  Γöé     Γöé                Γöé                           Γöé
  7111. Γöé              Γöé     Γöé                Γöé                           Γöé
  7112. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7113.  
  7114.  
  7115. ΓòÉΓòÉΓòÉ 18.4.2. Special Features ΓòÉΓòÉΓòÉ
  7116.  
  7117. The following are special features of description blocks: 
  7118.  
  7119.      Description files can contain macro definitions and use macros in 
  7120.       description blocks. Macros allow easy substitution of one text string for 
  7121.       another. 
  7122.  
  7123.      Description files can contain inference rules.  Inference rules allow 
  7124.       NMAKE to infer which commands to execute based on the file-name 
  7125.       extensions used for targets and dependents. 
  7126.  
  7127.      You can specify directories for NMAKE to search for dependent files by 
  7128.       using the following syntax: 
  7129.  
  7130.             targets : {directory1;directory2...}dependent ...
  7131.  
  7132.       NMAKE searches the current directory first, then <directory1>, 
  7133.       <directory2>, and so on. 
  7134.  
  7135.      A command can be placed on the same line as the target and dependent 
  7136.       files by using a semicolon (;) as depicted below: 
  7137.  
  7138.             targets... : dependents... ; command
  7139.  
  7140.      A long command can span several lines if each line ends with a backslash 
  7141.       ( \ ): 
  7142.  
  7143.             command \
  7144.               continuation of command
  7145.  
  7146.      The execution of a command can be modified if you precede the command 
  7147.       with special characters. 
  7148.  
  7149.      If you do not specify a command in a description block, NMAKE looks for 
  7150.       an inference rule to build the target. 
  7151.  
  7152.      DOS and OS/2 wildcard characters (* and ?) can be used in description 
  7153.       blocks.  For example, the following description block compiles all source 
  7154.       files with the .C extension: 
  7155.  
  7156.             ASTRO.EXE : *.C
  7157.               ICC $**
  7158.  
  7159.      NMAKE will expand the *.C specification into the complete list of C files 
  7160.       in the current directory.  $** is a complete list of dependents specified 
  7161.       for the current target. 
  7162.  
  7163.      NMAKE uses several punctuation characters in its syntax. To use one of 
  7164.       these characters as a literal character, place an escape character ( ^ ) 
  7165.       in front of it. For a list of punctuation characters, see Escape 
  7166.       Characters. 
  7167.  
  7168.      Normally a target file can appear in only one description block.  A 
  7169.       special syntax allows you to use a target in several description blocks. 
  7170.  
  7171.      A special syntax allows you to determine the drive, path, base name, and 
  7172.       extension of the first dependent file in a description block. 
  7173.  
  7174.  
  7175. ΓòÉΓòÉΓòÉ 18.4.3. Targets in Several Description Blocks ΓòÉΓòÉΓòÉ
  7176.  
  7177. Using a file as a target in more than one description block causes NMAKE to 
  7178. end.  You can overcome this limitation by using two colons (::) as the 
  7179. target/dependent separator instead of one colon. 
  7180.  
  7181. The following description block is permissible: 
  7182.  
  7183. X :: A
  7184.   command
  7185. X :: B
  7186.   command
  7187.  
  7188. The following causes NMAKE to end: 
  7189.  
  7190. X : A
  7191.   command
  7192. X : B
  7193.   command
  7194.  
  7195. It is permissible to use single colons if the target/dependent lines are 
  7196. grouped above the same commands. The following is permissible: 
  7197.  
  7198. X : A
  7199. X : B
  7200.   command
  7201. Double Colon (::) Target/Dependent Separator Example 
  7202.  
  7203. TARGET.LIB :: A.ASM B.ASM C.ASM
  7204.   ML A.ASM B.ASM C.ASM
  7205.   LIB TARGET -+A.OBJ -+B.OBJ -+C.OBJ;
  7206.  
  7207. TARGET.LIB :: D.C E.C
  7208.   ICC /C D.C E.C
  7209.   LIB TARGET -+D.OBJ -+E.OBJ;
  7210.  
  7211. These two description blocks update the library named TARGET.LIB.  If any of 
  7212. the assembly-language files have changed more recently than the library file, 
  7213. NMAKE executes the commands in the first block to assemble the source files and 
  7214. update the library.  Similarly, if any of the C-language files have changed, 
  7215. NMAKE executes the second group of commands to compile the C files and update 
  7216. the library. 
  7217.  
  7218.  
  7219. ΓòÉΓòÉΓòÉ 18.5. Macros ΓòÉΓòÉΓòÉ
  7220.  
  7221. Macros provide a convenient way to replace one string with another in the 
  7222. description file.  The text is automatically replaced each time NMAKE is run. 
  7223. This feature makes it easy to change text throughout the description file 
  7224. without having to edit every line that uses the text.  Two common uses of 
  7225. macros are: 
  7226.  
  7227.      To create a standard description file for several projects. The macro 
  7228.       represents the file names in commands.  These file names are defined when 
  7229.       you run NMAKE.  When you switch to a different project, changing the 
  7230.       macro changes the file names NMAKE uses throughout the description file. 
  7231.  
  7232.      To control the options that NMAKE passes to the compiler, assembler, or 
  7233.       linker.  When using a macro to specify the options, you can quickly 
  7234.       change the options throughout the description file in one easy step. 
  7235.  
  7236.  A macro can be defined: 
  7237.  
  7238.      In a description file 
  7239.      On the command line 
  7240.      In TOOLS.INI 
  7241.      Through inheritance from environment variables 
  7242.  
  7243.  
  7244. ΓòÉΓòÉΓòÉ 18.5.1. Example ΓòÉΓòÉΓòÉ
  7245.  
  7246. program = FLASH
  7247. c = LINK
  7248. options =
  7249.  
  7250. $(program).EXE : $(program).OBJ
  7251.   $c $(options) $(program).OBJ;
  7252.  
  7253. The example above defines three macros.  The description block executes the 
  7254. following commands: 
  7255.  
  7256. FLASH.EXE : FLASH.OBJ
  7257.   LINK  FLASH.OBJ;
  7258.  
  7259.  
  7260. ΓòÉΓòÉΓòÉ 18.5.2. Special Features ΓòÉΓòÉΓòÉ
  7261.  
  7262. Macros have the following special features: 
  7263.  
  7264.      When using a macro, you can substitute text in the macro itself. 
  7265.      Several macros have been predefined for special purposes. 
  7266.      If a macro is defined more than once, precedence rules govern which 
  7267.       definition is used. 
  7268.      You can also put macros into your TOOLS.INI file. 
  7269.  
  7270.  
  7271. ΓòÉΓòÉΓòÉ 18.5.3. Macros in a Description File ΓòÉΓòÉΓòÉ
  7272.  
  7273. Before using a macro, you need to define it, either on the NMAKE command line 
  7274. or in your description file.  Description-file macro definitions look like 
  7275. this: 
  7276.  
  7277. macroname = macrostring
  7278.  
  7279. Macro names can be any combination of alphanumeric characters and the 
  7280. underscore character ( _ ), and they are case-sensitive. A macro string can be 
  7281. any string of characters. 
  7282.  
  7283. The first character of the macro name must be the first character on the line. 
  7284. NMAKE ignores any spaces before or after the equal sign ( = ). 
  7285.  
  7286. The macro string can be a null string and can contain embedded spaces. Do not 
  7287. enclose the macro string in quotation marks; quotation marks are used only when 
  7288. you define macros on the command line. 
  7289.  
  7290.  
  7291. ΓòÉΓòÉΓòÉ 18.5.4. Macros on the Command Line ΓòÉΓòÉΓòÉ
  7292.  
  7293. Before using a macro, you need to define it, either on the NMAKE command line 
  7294. or in your description file.  Command-line macro definitions look like this: 
  7295.  
  7296. macroname=macrostring
  7297.  
  7298. No spaces can surround the equal sign.  If you embed spaces, NMAKE might 
  7299. misinterpret your macro.  If your macro string contains embedded spaces, 
  7300. enclose it in double quotation marks ( " ) like this: 
  7301.  
  7302. macroname="macro string"
  7303.  
  7304. or simply enclose the entire macro definition in double quotation marks ( " ) 
  7305. like this: 
  7306.  
  7307. "macroname = macro string"
  7308.  
  7309. Macro names can be any combination of alphanumeric characters and the 
  7310. underscore character ( _ ), and they are case-sensitive. A macro string can be 
  7311. any string of characters or a null string. 
  7312.  
  7313.  
  7314. ΓòÉΓòÉΓòÉ 18.5.5. Inherited Macros ΓòÉΓòÉΓòÉ
  7315.  
  7316. NMAKE inherits all current environment variables as macros. For example, if you 
  7317. have a PATH environment variable defined as PATH = C:\TOOLS\BIN, the string 
  7318. C:\TOOLS\BIN  is substituted when you use PATH in the description file. 
  7319.  
  7320. You can redefine inherited macros by including a line such as the example above 
  7321. in a description file.  While NMAKE is running, the macro takes on the 
  7322. redefined definition.  When NMAKE terminates, however, the environment variable 
  7323. resumes its original value. 
  7324.  
  7325. The Override Environment Variables (/E) option disables inherited macro 
  7326. redefinition. If you use this option, NMAKE ignores any attempt to redefine an 
  7327. inherited macro. 
  7328.  
  7329.  
  7330. ΓòÉΓòÉΓòÉ 18.5.6. Defined Macros ΓòÉΓòÉΓòÉ
  7331.  
  7332. After you have defined a macro, you can use it anywhere in your description 
  7333. file with the following syntax: 
  7334.  
  7335. $(macroname)
  7336.  
  7337. The parentheses are not required if the macro name is only one character long. 
  7338. To use a dollar sign ( $ ) without using a macro, enter two dollar signs ( $$ 
  7339. ), or use the caret ( ^ ) before the dollar sign as an escape character. 
  7340.  
  7341. When NMAKE runs, it replaces all occurrences of $(macroname) with the defined 
  7342. macro string. If the macro is undefined, nothing is substituted. After a macro 
  7343. is defined, you can cancel it only with the !UNDEF directive. 
  7344.  
  7345.  
  7346. ΓòÉΓòÉΓòÉ 18.5.7. Macro Substitutions ΓòÉΓòÉΓòÉ
  7347.  
  7348. Just as you use macros to substitute text within a description file, you use 
  7349. the following syntax to substitute text within a macro: 
  7350.  
  7351. $(macroname: string1 = string2)
  7352.  
  7353. Every occurrence of <string1> is replaced by <string2> in <macroname>.  Spaces 
  7354. between the colon and <string1> are considered part of <string1>.  If <string2> 
  7355. is a null string, all occurrences of <string1> are deleted from the macro.  The 
  7356. colon ( : ) must immediately follow <macroname>. 
  7357.  
  7358. Note:  The replacement of <string1> with <string2> in the macro is not a 
  7359.        permanent change.  If you use the macro again without a substitution, 
  7360.        you get the original unchanged macro. 
  7361.  
  7362.  Example 
  7363.  
  7364.   SOURCES = ONE.C TWO.C THREE.C
  7365.   PROGRAM.EXE : $(SOURCES:.C=.OBJ)
  7366.     LINK $**;
  7367.  
  7368.  The example above defines a macro called SOURCES, which contains the names of 
  7369.  three C source files.  With this macro, the target/dependent line substitutes 
  7370.  the .OBJ extension for the .C extension.  Thus, NMAKE executes the following 
  7371.  command: 
  7372.  
  7373.   LINK ONE.OBJ TWO.OBJ THREE.OBJ;
  7374.  
  7375.  Note:  $** is a special macro that translates to all dependent files for a 
  7376.         given target. 
  7377.  
  7378.  
  7379. ΓòÉΓòÉΓòÉ 18.6. Special Macros ΓòÉΓòÉΓòÉ
  7380.  
  7381. NMAKE predefines several macros.  The first six macros below return one or more 
  7382. file specifications for the files in the target/dependent line of a description 
  7383. block.  Except where noted, the file specification includes the path of the 
  7384. file, the base file name, and the file-name extension. 
  7385.  
  7386.  Macro          Value 
  7387.  
  7388.  $@             The specification of the target file. 
  7389.  
  7390.  $*             The base name (without extension) of the target file. Path 
  7391.                 information is also returned if the path was specified as part 
  7392.                 of the target file name. This macro cannot be used in a 
  7393.                 dependent list. 
  7394.  
  7395.  $**            The specifications of the dependent files. 
  7396.  
  7397.  $?             The specifications for only those dependent files that are 
  7398.                 out-of-date with respect to the targets. 
  7399.  
  7400.  $<             The specification of a single dependent file that is 
  7401.                 out-of-date with respect to the targets. This macro is used 
  7402.                 only in inference rules. 
  7403.  
  7404.  $$@            The file specification of the target that NMAKE is currently 
  7405.                 evaluating.  This is a dynamic dependency parameter, used only 
  7406.                 in dependent lists. 
  7407.  
  7408.  $(CC)          The string ICC, which is the command to run the C Set ++ 
  7409.                 Compiler.  You can redefine this macro to use a different 
  7410.                 command. 
  7411.  
  7412.  $(AS)          The string MASM, which is the command to run the Macro 
  7413.                 Assembler (MASM).  You can redefine this macro to use a 
  7414.                 different command. 
  7415.  
  7416.  $(MAKE)        The command name used to run NMAKE.  This macro is used to 
  7417.                 invoke NMAKE recursively.  If you redefine this macro, NMAKE 
  7418.                 issues a warning message. 
  7419.  
  7420.                 Note:  NMAKE executes the command line in which $(MAKE) 
  7421.                        appears, even if the display commands (/N) option is on. 
  7422.  
  7423.  $(MAKEFLAGS)   The NMAKE options currently in effect.  You cannot redefine 
  7424.                 this macro. 
  7425.  
  7426.  Note:  The special macros $** and $$@ are the only exceptions to the rule that 
  7427.         macro names longer than one character must be enclosed in parentheses. 
  7428.  
  7429.  You can append characters to any of the first six macros in this list to 
  7430.  modify the meaning of the macro. However, you cannot use macro substitutions 
  7431.  in these macros. 
  7432.  
  7433.  
  7434. ΓòÉΓòÉΓòÉ 18.6.1. Examples ΓòÉΓòÉΓòÉ
  7435.  
  7436. TRIG.LIB : SIN.OBJ COS.OBJ ARCTAN.OBJ
  7437.   !LIB TRIG.LIB -+$?;
  7438.  
  7439. In the example above, the macro $? represents the names of all dependent files 
  7440. that are out-of-date with respect to the target file.  The exclamation point ( 
  7441. ! ) preceding the LIB command causes NMAKE to execute the LIB command once for 
  7442. each dependent file in the list.  As a result of this description, the LIB 
  7443. command is executed up to three times, each time replacing a module with a 
  7444. newer version. 
  7445.  
  7446. DIR=C:\INCLUDE
  7447. $(DIR)\GLOBALS.H : GLOBALS.H
  7448.  COPY GLOBALS.H $@
  7449. $(DIR)\TYPES.H : TYPES.H
  7450.  COPY TYPES.H $@
  7451. $(DIR)\MACROS.H : MACROS.H
  7452.  COPY MACROS.H $@
  7453.  
  7454. The example above shows how to update a group of include files. Each of the 
  7455. files GLOBALS.H, TYPES.H, and MACROS.H in the directory C:\INCLUDE depends on 
  7456. its counterpart in the current directory.  If one of the include files is 
  7457. out-of-date, NMAKE replaces it with the file of the same name from the current 
  7458. directory. 
  7459.  
  7460. The following description file, which uses the special macro $$@, is 
  7461. equivalent: 
  7462.  
  7463. DIR=C:\INCLUDE
  7464. $(DIR)\GLOBALS.H $(DIR)\TYPES.H $(DIR)\MACROS.H : $$(@F)
  7465. !COPY $? $@
  7466.  
  7467. The special macro $$(@F) signifies the file name (without the path) of the 
  7468. current target. 
  7469.  
  7470. When NMAKE evaluates the description block, it evaluates the three targets, one 
  7471. at a time, with respect to their dependents.  Thus, NMAKE first checks whether 
  7472. C:\INCLUDE\GLOBALS.H is out-of-date compared with GLOBALS.H in the current 
  7473. directory.  If so, it executes the command to copy the dependent file GLOBALS.H 
  7474. to the target.  NMAKE repeats the procedure for the other two targets. 
  7475.  
  7476. Note that on the command line, the macro $? refers to the dependent for this 
  7477. target.  The macro $@ specifies the full file specification of the target file. 
  7478.  
  7479.  
  7480. ΓòÉΓòÉΓòÉ 18.6.2. File-Specification Parts ΓòÉΓòÉΓòÉ
  7481.  
  7482. A full file specification gives the base name of the file, the file-name 
  7483. extension, and the path.  The path provides the disk-drive identifier and the 
  7484. sequence of directories needed to locate the file on the disk. 
  7485.  
  7486. For example, the file specification: 
  7487.  
  7488. C:\SOURCE\PROG\SORT.OBJ
  7489.  
  7490. has the following parts: 
  7491.  
  7492. Path Name            C:\SOURCE\PROG
  7493. Base File Name       SORT
  7494. File-Name Extension  .OBJ
  7495.  
  7496.  
  7497. ΓòÉΓòÉΓòÉ 18.6.3. Characters That Modify Special Macros ΓòÉΓòÉΓòÉ
  7498.  
  7499. The following six macros all resolve to a file specification (or possibly 
  7500. several file specifications for $** and $?): 
  7501.  
  7502.      $*     $@     $**     $<     $?     $$@
  7503.  
  7504. You can append characters to any of these macros to modify the file name 
  7505. returned by the macro.  Depending on which character you use, parts of the full 
  7506. file specification are returned: 
  7507.  
  7508.                                Appended Character
  7509.      File Part Returned      D        F       B       R
  7510.  
  7511.      File Path               Yes      No      No      Yes
  7512.      Base File Name          No       Yes     Yes     Yes
  7513.      File Name Extension     No       Yes     No      No
  7514.  
  7515.  
  7516. ΓòÉΓòÉΓòÉ 18.6.4. Modified Special Macros Example ΓòÉΓòÉΓòÉ
  7517.  
  7518. If the macro $@ has the value 
  7519.  
  7520. C:\SOURCE\PROG\SORT.OBJ
  7521.  
  7522. the following values are returned for the modified macro: 
  7523.  
  7524.  Macro     Value 
  7525.  $(@D)     C:\SOURCE\PROG 
  7526.  $(@F)     SORT.OBJ 
  7527.  $(@B)     SORT 
  7528.  $(@R)     C:\SOURCE\PROG\SORT 
  7529.  
  7530.  Note:  Modified macros are always longer than a single character - they must 
  7531.         be enclosed by parentheses when used. 
  7532.  
  7533.  
  7534. ΓòÉΓòÉΓòÉ 18.6.5. Macro Precedence Rules ΓòÉΓòÉΓòÉ
  7535.  
  7536. When the same macro is defined in more than one place, the definition with the 
  7537. highest priority is used: 
  7538.  
  7539.    1. (Highest) Command line 
  7540.  
  7541.    2. Description file 
  7542.  
  7543.    3. TOOLS.INI file 
  7544.  
  7545.    4. Environment variables 
  7546.  
  7547.    5. (Lowest) Predefined macros (such as CC and AS) 
  7548.  
  7549.  If you invoke NMAKE with the Overriding Macro Definitions (/E) option, macros 
  7550.  defined by environment variables take precedence over those defined in a 
  7551.  description file. 
  7552.  
  7553.  
  7554. ΓòÉΓòÉΓòÉ 18.7. Inference Rules ΓòÉΓòÉΓòÉ
  7555.  
  7556. Inference rules are templates from which NMAKE infers what to do with a 
  7557. description block when no commands are given.  Only those extensions defined in 
  7558. a .SUFFIXES list can have inference rules.  The extensions .C, .OBJ, .ASM, and 
  7559. .EXE are automatically included in .SUFFIXES. 
  7560.  
  7561. When NMAKE encounters a description block with no commands, it looks for an 
  7562. inference rule that specifies how to create the target from the dependent 
  7563. files, given the two file extensions. Similarly, if a dependent file does not 
  7564. exist, NMAKE looks for an inference rule that specifies how to create the 
  7565. dependent file from another file with the same base name. 
  7566.  
  7567. NMAKE applies an inference rule only if the base name of the file it is trying 
  7568. to create matches the base name of a file that already exists. 
  7569.  
  7570. In effect, inference rules are useful only when there is a one-to-one 
  7571. correspondence between the files with the "from" extension and the files with 
  7572. the "to" extension.  You cannot, for example, define an inference rule that 
  7573. inserts a number of modules into a library. 
  7574.  
  7575. The use of inference rules eliminates the need to put the same commands in 
  7576. several description blocks.  For example, you can use inference rules to 
  7577. specify a single ICC command that changes any C source file (with a .C 
  7578. extension) to an object file (with a .OBJ extension). 
  7579.  
  7580. You define an inference rule by including text of the following form in your 
  7581. description file or in your TOOLS.INI file - see "Special Features". 
  7582.  
  7583. .fromext.toext:
  7584. commands
  7585. :
  7586.  
  7587. The elements of the inference rule are: 
  7588.  
  7589.  <fromext> 
  7590.       The file-name extension for dependent files to build a target 
  7591.  <toext> 
  7592.       The file-name extension for target files to be built 
  7593.  <commands> 
  7594.       The commands to build the <toext> target from the <fromext> dependent. 
  7595.  
  7596.  For example, an inference rule to convert C source files (with the .C 
  7597.  extension) to C object files (with the .OBJ extension) is 
  7598.  
  7599.   .C.OBJ:
  7600.    ICC $<
  7601.  
  7602.  Note:  The special macro $< represents the name of a dependent file that is 
  7603.         out-of-date relative to the target. 
  7604.  
  7605.  
  7606. ΓòÉΓòÉΓòÉ 18.7.1. Special Features ΓòÉΓòÉΓòÉ
  7607.  
  7608.      You can specify a path where NMAKE should look for target and dependent 
  7609.       files used in inference rules. 
  7610.  
  7611.      Inference rules are predefined for compiling and linking C programs, and 
  7612.       for assembling programs. 
  7613.  
  7614.      NMAKE looks for inference rules in the TOOLS.INI file if it cannot find a 
  7615.       rule in a description file. 
  7616.  
  7617.      Only those extensions defined in a .SUFFIXES list can have inference 
  7618.       rules.  The extensions .C, .OBJ, .ASM, and .EXE are automatically 
  7619.       included in .SUFFIXES. 
  7620.  
  7621.  
  7622. ΓòÉΓòÉΓòÉ 18.7.2. Example ΓòÉΓòÉΓòÉ
  7623.  
  7624. .OBJ.EXE:
  7625.   LINK $<;
  7626.  
  7627. EXAMPLE1.EXE: EXAMPLE1.OBJ
  7628.  
  7629. EXAMPLE2.EXE: EXAMPLE2.OBJ
  7630.   LINK /CO EXAMPLE2,,,LIBV3.LIB
  7631.  
  7632. The first line above defines an inference rule that causes the LINK command to 
  7633. create an executable file whenever a change is made in the corresponding object 
  7634. file.  The file name in the inference rule is specified with the special macro 
  7635. $< so that the rule applies to any .OBJ file with an out-of-date executable 
  7636. file. 
  7637.  
  7638. When NMAKE does not find any commands in the first description block, it checks 
  7639. for a rule that might apply and finds the rule defined on the first two lines 
  7640. of the description file.  NMAKE applies the rule, replacing $< with 
  7641. EXAMPLE1.OBJ when it executes the command, so that the LINK command becomes 
  7642.  
  7643. LINK EXAMPLE1.OBJ;
  7644.  
  7645. NMAKE does not search for an inference rule when examining the second 
  7646. description block, because a command is explicitly given. 
  7647.  
  7648.  
  7649. ΓòÉΓòÉΓòÉ 18.7.3. Inference-Rule Path Specifications ΓòÉΓòÉΓòÉ
  7650.  
  7651. When defining an inference rule, you can indicate to NMAKE where to look for 
  7652. target and dependent files.  Use the following syntax: 
  7653.  
  7654. {frompath}.fromext{topath}.toext
  7655.  commands
  7656.  :
  7657.  
  7658. NMAKE looks in the directory specified by <frompath> for files with the 
  7659. <fromext> extension.  It executes the commands to build files with the <toext> 
  7660. extension in the directory specified by <topath>. 
  7661.  
  7662.  
  7663. ΓòÉΓòÉΓòÉ 18.7.4. Predefined Inference Rules ΓòÉΓòÉΓòÉ
  7664.  
  7665. NMAKE predefines three inference rules: 
  7666.  
  7667. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7668. ΓöéInference Rule      ΓöéDefault             ΓöéCommand Action      Γöé
  7669. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7670. Γöé.C.OBJ              Γöé$(CC) $(CFLAGS) /C  ΓöéICC /C $*.C         Γöé
  7671. Γöé                    Γöé$*.C                Γöé                    Γöé
  7672. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7673. Γöé.C.EXE              Γöé$(CC) $(CFLAGS) $*.CΓöéICC $*.C            Γöé
  7674. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7675. Γöé.ASM.OBJ            Γöé$(AS) $(AFLAGS) $*; ΓöéMASM $*;            Γöé
  7676. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7677. NOTE 
  7678.  
  7679.    1. The first two rules automatically compile and link C programs. 
  7680.  
  7681.    2. The last rule automatically assembles programs. 
  7682.  
  7683.  
  7684. ΓòÉΓòÉΓòÉ 18.8. Directives ΓòÉΓòÉΓòÉ
  7685.  
  7686. Using directives, you can construct description files similar to batch files. 
  7687. NMAKE provides directives that: 
  7688.  
  7689.      Conditionally execute commands 
  7690.      Display error messages 
  7691.      Include the contents of other files 
  7692.      Turn some NMAKE options on or off 
  7693.  
  7694.  Each directive begins with an exclamation point ( ! ) in the first column of 
  7695.  the description file.  Spaces can be placed between the exclamation point and 
  7696.  the directive keyword. 
  7697.  
  7698.  The list below describes the directives: 
  7699.  
  7700.  !IF <expression> 
  7701.       Executes the statements between the !IF keyword and the next !ELSE or 
  7702.       !ENDIF directive if <expression> evaluates to a nonzero value. 
  7703.  
  7704.       The <expression> used with the !IF directive can consist of integer 
  7705.       constants, string constants, or exit codes returned by programs.  Integer 
  7706.       constants can use the C unary operators for numerical negation ( - ), 
  7707.       one's complement ( ~ ), and logical negation ( ! ).  You can also use any 
  7708.       of the C binary operators listed below: 
  7709.  
  7710.            Operator       Description 
  7711.  
  7712.       +                   Addition 
  7713.  
  7714.       -                   Subtraction 
  7715.  
  7716.       *                   Multiplication 
  7717.  
  7718.       /                   Division 
  7719.  
  7720.       %                   Modulus 
  7721.  
  7722.       &                   Bitwise AND 
  7723.  
  7724.       |                   Bitwise OR 
  7725.  
  7726.       ^^                  Bitwise XOR 
  7727.  
  7728.       &&                  Logical AND 
  7729.  
  7730.       ||                  Logical OR 
  7731.  
  7732.       <<                  Left shift 
  7733.  
  7734.       >>                  Right shift 
  7735.  
  7736.       ==                  Equality 
  7737.  
  7738.       !=                  Inequality 
  7739.  
  7740.       <                   Less than 
  7741.  
  7742.       >                   Greater than 
  7743.  
  7744.       <=                  Less than or equal to 
  7745.  
  7746.       >=                  Greater than or equal to 
  7747.  
  7748.       Note: 
  7749.  
  7750.       You can use parentheses to group expressions. 
  7751.  
  7752.       Values are assumed to be decimal values unless specified with a leading 0 
  7753.       (octal) or leading 0x (hexadecimal). 
  7754.  
  7755.       Strings are enclosed by quotation marks ( " ).  You can use the equality 
  7756.       ( ==) and inequality ( != ) operators to compare two strings. 
  7757.  
  7758.       You can invoke a program in an expression by enclosing the program name 
  7759.       in square brackets ( [ ] ).  The exit code returned by the program is 
  7760.       used in the expression. 
  7761.  
  7762.  !ELSE 
  7763.       Executes the statements between the !ELSE and !ENDIF directives if the 
  7764.       statements preceding the !ELSE directive were not executed. 
  7765.  
  7766.  !ENDIF 
  7767.       Marks the end of the !IF, !IFDEF, or !IFNDEF block of statements. 
  7768.  
  7769.  !IFDEF <macroname> 
  7770.       Executes the statements between the !IFDEF keyword and the next !ELSE or 
  7771.       !ENDIF directive if <macroname> is defined in the description file.  If a 
  7772.       macro has been defined as null, it is still considered to be defined. 
  7773.  
  7774.  !IFNDEF <macroname> 
  7775.       Executes the statements between the !IFNDEF keyword and the next !ELSE or 
  7776.       !ENDIF directive if <macroname> is not defined in the description file. 
  7777.  
  7778.  !UNDEF <macroname> 
  7779.       Undefines a previously defined macro. 
  7780.  
  7781.  !ERROR <text> 
  7782.       Prints text and then stops execution. 
  7783.  
  7784.  !INCLUDE <filename> 
  7785.       Reads and evaluates the file <filename> before continuing with the 
  7786.       current description file.  If <filename> is enclosed by angle brackets 
  7787.       (<>), NMAKE searches for the file in the directories specified by the 
  7788.       INCLUDE macro; otherwise, it looks only in the current directory.  The 
  7789.       INCLUDE macro is initially set to the value of the INCLUDE environment 
  7790.       variable. 
  7791.  
  7792.  !CMDSWITCHES {+|-}<opt> 
  7793.       Turns on or off one of four NMAKE options:  /D, /I, /N, and /S.  If no 
  7794.       options are specified, the options are reset to the values they had when 
  7795.       NMAKE was started. To turn an option on, precede it with a plus sign (+); 
  7796.       to turn it off, precede it with a minus sign (-). This directive updates 
  7797.       the MAKEFLAGS macro. 
  7798.  
  7799.       See Special Macros. 
  7800.  
  7801.  
  7802. ΓòÉΓòÉΓòÉ 18.8.1. Example ΓòÉΓòÉΓòÉ
  7803.  
  7804. !INCLUDE <INFRULES.TXT>
  7805. !CMDSWITCHES +D
  7806. WINNER.EXE:WINNER.OBJ
  7807. !IFDEF DEBUG
  7808. ! IF "$(DEBUG)"=="y"
  7809.      LINK /CO WINNER.OBJ;
  7810. ! ELSE
  7811.      LINK WINNER.OBJ;
  7812. ! ENDIF
  7813. !ELSE
  7814. ! ERROR Macro named DEBUG is not defined.
  7815. !ENDIF
  7816.  
  7817. The directives in this example do the following: 
  7818.  
  7819.      The !INCLUDE directive causes the file INFRULES.TXT to be read and 
  7820.       evaluated as if it were part of the description file. 
  7821.  
  7822.      The !CMDSWITCHES directive turns on the /D option, which displays the 
  7823.       dates of the files as they are checked. 
  7824.  
  7825.      If WINNER.EXE is out-of-date with respect to WINNER.OBJ, the !IFDEF 
  7826.       directive checks to see whether the macro DEBUG is defined.  If it is 
  7827.       defined, the !IF directive checks to see whether it is set to y.  If it 
  7828.       is, the linker is invoked with the /CO option; otherwise, it is invoked 
  7829.       without the /CO. If the DEBUG macro is not defined, the !ERROR directive 
  7830.       prints the message and NMAKE stops executing. 
  7831.  
  7832.  
  7833. ΓòÉΓòÉΓòÉ 18.8.2. Pseudotargets ΓòÉΓòÉΓòÉ
  7834.  
  7835. A pseudotarget is a target in a description block that is not a file.  Instead, 
  7836. it is a name that serves as a handle for building a group of files or executing 
  7837. a group of commands.  In the following example, UPDATE is a pseudotarget: 
  7838.  
  7839. UPDATE: *.*
  7840.   !copy $** A:\PRODUCT
  7841.  
  7842. When NMAKE evaluates a pseudotarget, it always considers the dependent files to 
  7843. be out-of-date.  In the description above, NMAKE copies each of the dependent 
  7844. files to the specified drive and directory. 
  7845.  
  7846. NMAKE predefines several pseudotargets for special purposes. 
  7847.  
  7848. See Predefined Pseudotargets. 
  7849.  
  7850.  
  7851. ΓòÉΓòÉΓòÉ 18.8.3. Predefined Pseudotargets ΓòÉΓòÉΓòÉ
  7852.  
  7853. NMAKE predefines several pseudotargets that provide special rules within a 
  7854. description file: 
  7855.  
  7856.  
  7857. ΓòÉΓòÉΓòÉ 18.8.3.1. .SILENT ΓòÉΓòÉΓòÉ
  7858.  
  7859. Syntax:  .SILENT : dependents... 
  7860.  
  7861. This pseudotarget suppresses the display of executed commands for a single 
  7862. description block.  The /S option does the same thing for all description 
  7863. blocks. 
  7864.  
  7865. See Suppress Command Display (/S). 
  7866.  
  7867.  
  7868. ΓòÉΓòÉΓòÉ 18.8.3.2. .IGNORE ΓòÉΓòÉΓòÉ
  7869.  
  7870. Syntax:  .IGNORE : dependents... 
  7871.  
  7872. This pseudotarget ignores exit codes returned by programs for a single 
  7873. description block.  The /I option does the same thing for all description 
  7874. blocks. 
  7875.  
  7876. See Ignore Exit Codes (/I). 
  7877.  
  7878.  
  7879. ΓòÉΓòÉΓòÉ 18.8.3.3. .SUFFIXES ΓòÉΓòÉΓòÉ
  7880.  
  7881. Syntax:  .SUFFIXES : extensions... 
  7882.  
  7883. This pseudotarget defines file extensions to try when NMAKE needs to build a 
  7884. target file for which no dependent files are specified. NMAKE searches the 
  7885. current directory for a file with the same name as the target file and an 
  7886. extension in <extensions...>.  If NMAKE finds such a file, and if an inference 
  7887. rule applies to the file, NMAKE treats the file as a dependent of the target. 
  7888.  
  7889. The .SUFFIXES pseudotarget is predefined as 
  7890.  
  7891. .SUFFIXES : .OBJ .EXE .C .ASM
  7892.  
  7893. To add extensions to the list, specify .SUFFIXES : followed by the new 
  7894. extensions.  To clear the list, specify 
  7895.  
  7896. .SUFFIXES:
  7897.  
  7898. Note:  Only those extensions specified in .SUFFIXES can have inference rules. 
  7899.        NMAKE ignores inference rules unless the extensions have been specified 
  7900.        in a .SUFFIXES list. 
  7901.  
  7902.  
  7903. ΓòÉΓòÉΓòÉ 18.8.3.4. .PRECIOUS ΓòÉΓòÉΓòÉ
  7904.  
  7905. Syntax:  .PRECIOUS : targets... 
  7906.  
  7907. This pseudotarget tells NMAKE not to delete a target even if the commands that 
  7908. build it are terminated or interrupted. This pseudotarget overrides the NMAKE 
  7909. default.  By default, NMAKE deletes the target if it cannot be sure that the 
  7910. target was built successfully. 
  7911.  
  7912. For example, 
  7913.  
  7914. .PRECIOUS : TOOLS.LIB
  7915. TOOLS.LIB : A2Z.OBJ Z2A.OBJ
  7916.  command
  7917.   :
  7918.  
  7919. If the commands to build TOOLS.LIB are interrupted, leaving an incomplete file, 
  7920. NMAKE does not delete the partially built TOOLS.LIB. 
  7921.  
  7922. Note:  The pseudotarget .PRECIOUS is useful only in limited circumstances. 
  7923.        Most professional development tools have their own interrupt handlers 
  7924.        and "clean up" when errors occur. 
  7925.  
  7926.  
  7927. ΓòÉΓòÉΓòÉ 18.9. InLine Files ΓòÉΓòÉΓòÉ
  7928.  
  7929. You might need to issue a command in the description file with a list of 
  7930. arguments exceeding the command-line limit of the operating system. Just as 
  7931. NMAKE supports the use of command files, it can also generate inline files that 
  7932. are read as response files by other programs. 
  7933.  
  7934. To generate an inline file, use the following syntax for your description 
  7935. block: 
  7936.  
  7937. target : dependents
  7938.   command @<<[filename]
  7939. inline file text
  7940. << [KEEP | NOKEEP]
  7941.  
  7942. All of the text between the two sets of double less-than signs (<<) is placed 
  7943. into an inline file and given the name <filename>.  You can refer to the inline 
  7944. file at a later time by using <filename>.  If <filename> is not given, NMAKE 
  7945. gives the file a unique name in the directory specified by the TMP environment 
  7946. variable, if it is defined.  Otherwise, NMAKE creates a unique file name in the 
  7947. current directory. 
  7948.  
  7949. The inline file can be temporary or permanent.  If you do not specify 
  7950. otherwise, or if you specify the keyword NOKEEP, the inline file is temporary. 
  7951. Specify KEEP to retain the file. 
  7952.  
  7953. Note:  The at sign (@) is not part of the NMAKE syntax but is the typical 
  7954.        character used by utility programs (such as LINK386) to designate a file 
  7955.        as a response file. 
  7956.  
  7957.  
  7958. ΓòÉΓòÉΓòÉ 18.9.1. Example ΓòÉΓòÉΓòÉ
  7959.  
  7960. MATH.LIB :  ADD.OBJ SUB.OBJ MUL.OBJ DIV.OBJ
  7961.   LIB @<<
  7962. MATH.LIB
  7963. -+ADD.OBJ-+SUB.OBJ-+MUL.OBJ-+DIV.OBJ
  7964. listing
  7965. <<
  7966.  
  7967. The above example creates an inline file and uses it to invoke the Library 
  7968. Manager (LIB).  The inline file is used as a response file by (LIB).  It 
  7969. specifies which library to use, the commands to execute, and the listing file 
  7970. to produce.  The inline file contains: 
  7971.  
  7972.           MATH.LIB
  7973.           -+ADD.OBJ-+SUB.OBJ-+MUL.OBJ-+DIV.OBJ
  7974.           listing
  7975.  
  7976. Because no file name is listed after the LIB command, the inline file is given 
  7977. a unique name and placed into the current directory (or the directory defined 
  7978. by the TMP environment variable). 
  7979.  
  7980.  
  7981. ΓòÉΓòÉΓòÉ 18.9.2. Escape Characters ΓòÉΓòÉΓòÉ
  7982.  
  7983. NMAKE uses the following punctuation characters in its syntax: 
  7984.  
  7985. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7986. Γöé(     Γöé)     Γöé#     Γöé$     Γöé^     Γöé\     Γöé
  7987. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7988. Γöé{     Γöé}     Γöé!     Γöé@     Γöé-     Γöé      Γöé
  7989. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7990.  
  7991. To use one of these characters in a command and not have it interpreted by 
  7992. NMAKE, use a caret ( ^ ) in front of the character. 
  7993.  
  7994. For example, 
  7995.  
  7996. BIG^#.C
  7997.  
  7998. is treated as 
  7999.  
  8000. BIG#.C
  8001.  
  8002. With the caret, you can include a literal newline character in a description 
  8003. file.  This capability is useful in macro definitions, as in the following 
  8004. example: 
  8005.  
  8006. XYZ=abc^<ENTER>
  8007. def
  8008.  
  8009. The effect is equivalent to assigning the C-style string "abc\ndef" to the XYZ 
  8010. macro.  Note that this effect differs from the effect of using the backslash ( 
  8011. \ ) to continue a line. A newline character that follows a backslash is 
  8012. replaced with a space. 
  8013.  
  8014. NMAKE ignores a caret that is not followed by any of the characters it uses in 
  8015. its syntax.  A caret that appears within quotation marks is not treated as an 
  8016. escape character. 
  8017.  
  8018. Note:  The escape character cannot be used in the command portion of a 
  8019.        dependency block. 
  8020.  
  8021.  
  8022. ΓòÉΓòÉΓòÉ 18.10. Characters That Modify Commands ΓòÉΓòÉΓòÉ
  8023.  
  8024. Any of three characters can be placed in front of a command to modify how the 
  8025. command is run: 
  8026.  
  8027.  - (dash)       Turns off error checking for the command 
  8028.  
  8029.  @ (at sign)    Suppresses display of the command 
  8030.  
  8031.  ! (exclamation point) Executes the command for each dependent file 
  8032.  
  8033.  Note: 
  8034.  
  8035.  Spaces can separate the modifying character from the command. Any command on a 
  8036.  separate line  - whether modified or not - must be indented by one or more 
  8037.  spaces or tabs. 
  8038.  
  8039.  You can use more than one character to modify a single command. 
  8040.  
  8041.  
  8042. ΓòÉΓòÉΓòÉ 18.10.1. Turn Error Checking Off (-) ΓòÉΓòÉΓòÉ
  8043.  
  8044. Syntax:  -[n] command 
  8045.  
  8046. The /I option globally turns command error-checking off.  The dash (-) command 
  8047. modifier overrides the global setting to turn error checking off for commands 
  8048. individually.  This modifier is used in two ways: 
  8049.  
  8050.      A dash without a number turns off all error checking. 
  8051.  
  8052.      A dash followed by a number causes NMAKE to halt only if the exit code 
  8053.       returned by the command is greater than the number. 
  8054.  
  8055.  See Ignore Exit Codes (/I). 
  8056.  
  8057.  
  8058. ΓòÉΓòÉΓòÉ 18.10.1.1. Dash-Command Modifier Examples ΓòÉΓòÉΓòÉ
  8059.  
  8060. LIGHT.LST : LIGHT.TXT
  8061.   - FLASH LIGHT.TXT
  8062.  
  8063. In the example above, NMAKE never ends, regardless of the exit code returned by 
  8064. FLASH. 
  8065.  
  8066. LIGHT.LST : LIGHT.TXT
  8067.   -1 FLASH LIGHT.TXT
  8068.  
  8069. In the example above, NMAKE ends if the exit code returned by FLASH is greater 
  8070. than 1. 
  8071.  
  8072.  
  8073. ΓòÉΓòÉΓòÉ 18.10.2. Suppress Command Display (@) ΓòÉΓòÉΓòÉ
  8074.  
  8075. Syntax:  @ command 
  8076.  
  8077. The /S option globally suppresses the display of commands while NMAKE is 
  8078. running.  The at sign (@) modifier suppresses the display for individual 
  8079. commands. 
  8080.  
  8081. Note:  Regardless of the /S option or the @ modifier, output generated by the 
  8082.        command itself always appears. 
  8083.  
  8084.  See Suppress Command Display (/S). 
  8085.  
  8086.  
  8087. ΓòÉΓòÉΓòÉ 18.10.2.1. At Sign (@) Command Modifier Example ΓòÉΓòÉΓòÉ
  8088.  
  8089. Suppress Command Display (@) 
  8090.  
  8091. SORT.EXE:SORT.OBJ
  8092.   @ ECHO sorting
  8093.  
  8094. The command line calling the ECHO command is not displayed.  The output of the 
  8095. ECHO command, however, is displayed. 
  8096.  
  8097.  
  8098. ΓòÉΓòÉΓòÉ 18.10.3. Execute Command for Dependent Files (!) ΓòÉΓòÉΓòÉ
  8099.  
  8100. Syntax:  ! command 
  8101.  
  8102. The exclamation-point command modifier causes the command to be executed for 
  8103. each dependent file if the command uses one of the special macros $? or $**. 
  8104. The $? macro refers to all dependent files out-of-date with respect to the 
  8105. target.  The $** macro refers to all dependent files in the description block. 
  8106.  
  8107. See Special Macros. 
  8108.  
  8109.  
  8110. ΓòÉΓòÉΓòÉ 18.10.3.1. Exclamation Point (!) Command Modifier Examples ΓòÉΓòÉΓòÉ
  8111.  
  8112. LEAP.TXT : HOP.ASM SKIP.BAS JUMP.C
  8113.   ! print $** lpt1:
  8114.  
  8115. The example above executes the following three commands, regardless of the 
  8116. modification dates of the dependent file: 
  8117.  
  8118. print HOP.ASM lpt1:
  8119. print SKIP.BAS lpt1:
  8120. print JUMP.C lpt1:
  8121.  
  8122. LEAP.TXT : HOP.ASM SKIP.BAS JUMP.C
  8123.   ! print $? lpt1:
  8124.  
  8125. The example above executes the print command only for those dependent files 
  8126. with modification dates later than that of the LEAP.TXT file. If HOP.ASM and 
  8127. JUMP.C have modification dates later than LEAP.TXT, the following two commands 
  8128. are executed: 
  8129.  
  8130. print HOP.ASM lpt1:
  8131. print JUMP.C lpt1:
  8132.  
  8133.  
  8134. ΓòÉΓòÉΓòÉ 18.10.4. EXTMAKE Syntax ΓòÉΓòÉΓòÉ
  8135.  
  8136. Description files can use a special syntax to determine the drive, path, base 
  8137. name, and extension of the first dependent file in a description block.  This 
  8138. syntax is called the "extmake" syntax. 
  8139.  
  8140. The characters, %s, represent the complete file specification of the first 
  8141. dependent file.  Various parts of the file specification are represented using 
  8142. the syntax 
  8143.  
  8144. %|partsF
  8145.  
  8146. where <parts> is a combination of the following letters: 
  8147.  
  8148.  d  Drive 
  8149.  p  Path 
  8150.  f  Base name 
  8151.  e  Extension 
  8152.  
  8153.  For example, to specify the drive and path name of the first dependent file in 
  8154.  a description block, use:
  8155.  
  8156.   %|dpF 
  8157.  
  8158.  The percent symbol (%) is a replacement in DOS and OS/2 command lines.  To use 
  8159.  the percent symbol in command-line arguments, use a double percent (%%). 
  8160.  
  8161.  
  8162. ΓòÉΓòÉΓòÉ 18.11. Macros and Inference Rules in TOOLS.INI ΓòÉΓòÉΓòÉ
  8163.  
  8164. You can place either macros or inference rules in your TOOLS.INI file.  NMAKE 
  8165. looks for the TOOLS.INI file first in the current directory and then in the 
  8166. directory indicated by the INIT environment variable. 
  8167.  
  8168. If NMAKE finds a TOOLS.INI file, it looks for the following tag: 
  8169.  
  8170. [nmake]
  8171.  
  8172. You can place macros and inference rules below this tag in the same format you 
  8173. would use in a description file. 
  8174.  
  8175. If a macro or inference rule is defined in both the TOOLS.INI file and the 
  8176. description file, the definition in the description file takes precedence. 
  8177. Also, if you use the /R option, the TOOLS.INI file is ignored. 
  8178.  
  8179.  
  8180. ΓòÉΓòÉΓòÉ 18.11.1. Example ΓòÉΓòÉΓòÉ
  8181.  
  8182. [nmake]
  8183. CFLAGS=/ss /ms /Gd-
  8184. .C.OBJ:
  8185.   $(CC) -c $(CFLAGS) $*.C
  8186.  
  8187. These lines in the TOOLS.INI file do the following: 
  8188.  
  8189.      Define the CFLAGS macro as "/ss /ms /Gd-" 
  8190.      Redefine the predefined inference rule to build .OBJ files from .C source 
  8191.       files 
  8192.  
  8193.  
  8194. ΓòÉΓòÉΓòÉ 18.12. NMAKE Error Messages ΓòÉΓòÉΓòÉ
  8195.  
  8196. This section provides a convenient reference to the many error messages that 
  8197. can be encountered when using the NMAKE facility. 
  8198.  
  8199. Error Message Descriptions 
  8200.  
  8201.  NMAKE Fatal Error Messages          (Part 1) 1000 - 1098 
  8202.  
  8203.  NMAKE Warnings                      (Part 2) 4001 - 4008 
  8204.  
  8205.  NMAKE Informational Messages        (Part 3)   2 -   6 
  8206.  
  8207.  
  8208. ΓòÉΓòÉΓòÉ 18.12.1. Fatal Error Messages (Part 1) 1000 - 1098 ΓòÉΓòÉΓòÉ
  8209.  
  8210.  U1000     syntax error : ')' missing in macro invocation 
  8211.            Explanation: A left parenthesis appeared without a matching right 
  8212.            parenthesis in a macro invocation.  The correct form is $(name). 
  8213.            Action: Add the right parenthesis in the proper syntax. 
  8214.  
  8215.  U1001     syntax error : illegal character 'character' in macro 
  8216.            Explanation: A non-alphanumeric character other than underscore 
  8217.            appeared in a macro. 
  8218.            Action: Use only characters valid for a macro name. 
  8219.  
  8220.  U1002     syntax error : bad macro invocation '$' 
  8221.            Explanation: A single dollar sign ($) appeared without a macro name 
  8222.            associated with it.  The correct form is $(name). 
  8223.            Action: Use a defined macro name. 
  8224.  
  8225.  U1003     syntax error : '=' missing in macro 
  8226.            Explanation: The = sign was missing in a macro definition. The 
  8227.            correct form is 'name = value'. 
  8228.            Action: Insert an equals sign (=) and retry. 
  8229.  
  8230.  U1004     syntax error : macro name missing 
  8231.            Explanation: A macro invocation appeared without a name. The correct 
  8232.            form is $(name). 
  8233.            Action: Supply the macro name and retry. 
  8234.  
  8235.  U1005     syntax error : text must follow ':' in macro 
  8236.            Explanation: A string substitution was specified for a macro, but 
  8237.            the string to be changed in the macro was not specified. 
  8238.            Action: Specify the string to be substituted. 
  8239.  
  8240.  U1006     syntax error : missing closing double quotation mark 
  8241.            Explanation: An opening double quotation mark appeared without a 
  8242.            closing quotation mark. 
  8243.            Action: Edit the line and add the closing quotation mark. 
  8244.  
  8245.  U1007     double quotation mark not allowed in name 
  8246.            Explanation: You used a ' " ' symbol inside a macro name. 
  8247.            Action: Correct the name without the quotation mark. 
  8248.  
  8249.  U1017     unknown directive 'directive' 
  8250.            Explanation: The directive specified is not a recognized directive. 
  8251.            Action: Check your spelling of the intended directive. 
  8252.  
  8253.  U1018     directive and/or expression part missing 
  8254.            Explanation: The directive is incompletely specified.  The 
  8255.            expression part is required. 
  8256.            Action: Supply the expression and retry the directive. 
  8257.  
  8258.  U1019     too many nested if blocks 
  8259.            Explanation: You exceeded the limit of 16 levels of nested !IF 
  8260.            directives. 
  8261.            Action: Simplify your nesting logic to fewer than 16 levels. 
  8262.  
  8263.  U1020     EOF found before next directive 
  8264.            Explanation: A directive, such as !ENDIF, was missing. 
  8265.            Action: Insert the required directive and retry. 
  8266.  
  8267.  U1021     syntax error : else unexpected 
  8268.            Explanation: An !ELSE directive was found that was not expected, or 
  8269.            was placed in a syntactically incorrect place. 
  8270.            Action: Correct the position of the !ELSE directive. 
  8271.  
  8272.  U1022     missing terminating character for string/program invocation : 
  8273.            'character' 
  8274.            Explanation: The closing double quotation mark in a string 
  8275.            comparison in an !IF directive was missing.  Or else the closing 
  8276.            bracket ( ] ) in a program invocation in a directive is missing. 
  8277.            Action: Insert the proper termination character. 
  8278.  
  8279.  U1023     syntax error present in expression 
  8280.            Explanation: An expression is incorrect. 
  8281.            Action: Check the allowed operators and operator precedence for the 
  8282.            expression. 
  8283.  
  8284.  U1024     illegal argument to !CMDSWITCHES 
  8285.            Explanation: An unrecognized !CMDSWITCHES option was specified. 
  8286.            Action: Use the correct !CMDSWITCHES option. 
  8287.  
  8288.  U1031     file name missing (or macro is null) 
  8289.            Explanation: An !INCLUDE directive was found, but the name of the 
  8290.            file to include is missing. 
  8291.            Action: Supply the name of the file to be included. 
  8292.  
  8293.  U1033     syntax error : 'string' unexpected 
  8294.            Explanation: The specified string is not part of the valid syntax 
  8295.            for a makefile. 
  8296.            Action: Correct the line according to the proper syntax. 
  8297.  
  8298.  U1034     syntax error : separator missing 
  8299.            Explanation: The colon that separates targets from dependents is 
  8300.            missing. 
  8301.            Action: Insert a colon after the target list. 
  8302.  
  8303.  U1035     syntax error : expected ':' or '=' separator 
  8304.            Explanation: Either a colon, implying a dependency line, or an = 
  8305.            sign, implying a macro definition, was expected. This message will 
  8306.            be displayed if NMAKE encounters a premature end-of-file character 
  8307.            while expecting one of these separators. 
  8308.            Action: Insert the proper separator in the line. 
  8309.  
  8310.  U1036     syntax error : too many names to left of '=' 
  8311.            Explanation: Only one string is allowed to the left of a macro 
  8312.            definition. 
  8313.            Action: Remove the incorrect text before the = sign. 
  8314.  
  8315.  U1037     syntax error : target name missing 
  8316.            Explanation: A colon (:) was found before a target name was found. 
  8317.            At least one target is required. 
  8318.            Action: Insert the correct target name before the colon. 
  8319.  
  8320.  U1038     internal error : lexer 
  8321.            Explanation: The lexer encountered an unexpected condition. 
  8322.            Action: Note the circumstances of the failure and contact IBM 
  8323.            Support. 
  8324.  
  8325.  U1039     internal error : parser 
  8326.            Explanation: The parser encountered an unexpected condition. 
  8327.            Action: Note the circumstances of the failure and contact IBM 
  8328.            Support. 
  8329.  
  8330.  U1040     internal error : macro expansion 
  8331.            Explanation: An unexpected condition was found during macro 
  8332.            expansion. 
  8333.            Action: Note the circumstances of the failure and contact IBM 
  8334.            Support. 
  8335.  
  8336.  U1041     internal error : target building 
  8337.            Explanation: An unexpected condition was found during target 
  8338.            building. 
  8339.            Action: Note the circumstances of the failure and contact IBM 
  8340.            Support. 
  8341.  
  8342.  U1042     internal error : expression stack overflow 
  8343.            Explanation: An expression was too complex to decode using internal 
  8344.            memory space. 
  8345.            Action: Note the circumstances of the failure and contact IBM 
  8346.            Support. 
  8347.  
  8348.  U1043     internal error : temp file limit exceeded 
  8349.            Explanation: NMAKE required too many temporary files. 
  8350.            Action: Note the circumstances of the failure and contact IBM 
  8351.            Support. 
  8352.  
  8353.  U1044     internal error : too many levels of recursion building a target 
  8354.            Explanation: Recursive invocations of NMAKE exceeded available 
  8355.            memory. 
  8356.            Action: Note the circumstances of the failure and contact IBM 
  8357.            Support. 
  8358.  
  8359.  U1045     messagetext 
  8360.            Explanation: NMAKE encountered an unexpected condition. 
  8361.            Action: Note the text of the message and contact IBM Support. 
  8362.  
  8363.  U1046     internal error : out of search handles 
  8364.            Explanation: NMAKE exceeded an internal limit on handles. 
  8365.            Action: Note the circumstances of the failure and contact IBM 
  8366.            Support. 
  8367.  
  8368.  U1049     macro too long (max allowed size : 64K) 
  8369.            Explanation: One of your macros expanded to longer than 65 535 
  8370.            bytes. 
  8371.            Action: Recode the macro definition so that it is less than 64K. 
  8372.  
  8373.  U1050     user-specified text 
  8374.            Explanation: The message specified with the !ERROR directive is 
  8375.            displayed. 
  8376.            Action: Action depends on the defined error condition. 
  8377.  
  8378.  U1051     out of memory 
  8379.            Explanation: NMAKE ran out of space in the far heap. 
  8380.            Action: Note the circumstances of the failure and contact IBM 
  8381.            Support. 
  8382.  
  8383.  U1052     file 'filename' not found 
  8384.            Explanation: The file was not found. 
  8385.            Action: Specify the filename properly in the makefile. 
  8386.  
  8387.  U1053     file 'filename' unreadable 
  8388.            Explanation: The filename cannot be read. 
  8389.            Action: Be sure that the file has the appropriate attributes to be 
  8390.            read. 
  8391.  
  8392.  U1054     cannot create in-line file 'filename' 
  8393.            Explanation: The program was unable to generate the specified 
  8394.            in-line file as a uniquely-named temporary file. 
  8395.            Action: Be sure your file system has enough space for temporary 
  8396.            files. 
  8397.  
  8398.  U1055     out of environment space 
  8399.            Explanation: The environment space limit was reached. 
  8400.            Action: Restart NMAKE with a larger environment space. 
  8401.  
  8402.  U1056     cannot find command processor 
  8403.            Explanation: The command processor CMD.EXE could not be found. 
  8404.            Action: Be sure that the COMSPEC environment variable points to a 
  8405.            command processor on your file system. 
  8406.  
  8407.  U1057     cannot delete temporary file 'filename' 
  8408.            Explanation: The program was unable to delete the specified file. 
  8409.            Action: The file needs to exist and have the write attribute. 
  8410.  
  8411.  U1058     terminated by user 
  8412.            Explanation: You pressed Ctrl+Break to stop NMAKE. 
  8413.            Action: None, the program has stopped. 
  8414.  
  8415.  U1060     unable to close file : 'filename' 
  8416.            Explanation: NMAKE was unable to close filename. 
  8417.            Action: Look for the named file with write attribute on your file 
  8418.            system. 
  8419.  
  8420.  U1061     /F option requires a file name 
  8421.            Explanation: You coded command-line option /f but failed to follow 
  8422.            it with the name of a description file. 
  8423.            Action: Specify the description file name after the option. 
  8424.  
  8425.  U1062     missing file name with /X option 
  8426.            Explanation: You coded command-line option /x but failed to follow 
  8427.            it with the name of a file to receive redirected stderr output. 
  8428.            Action: Give an output error file name after the option. 
  8429.  
  8430.  U1063     missing macro name before '=' 
  8431.            Explanation: You coded '=' in a command line macro definition, but 
  8432.            failed to supply the name of the macro. 
  8433.            Action: Give the macro name in the definition. 
  8434.  
  8435.  U1064     MAKEFILE not found and no target specified 
  8436.            Explanation: You invoked NMAKE without a /f option, and no file 
  8437.            named MAKEFILE was present. 
  8438.            Action: Either create a file named MAKEFILE, or use the /f switch. 
  8439.  
  8440.  U1065     incorrect option 'option' 
  8441.            Explanation: NMAKE does not use the option which you specified. 
  8442.            Action: Use a valid command line option. 
  8443.  
  8444.  U1070     cycle in macro definition 'macroname' 
  8445.            Explanation: A cycle was detected in the macro definition specified. 
  8446.            Action: Rewrite the macro to avoid the circular definition. 
  8447.  
  8448.  U1071     cycle in dependency tree for target 'targetname' 
  8449.            Explanation: A cycle was detected in the target dependency tree. 
  8450.            Action: Check the dependency lists descending from the given target 
  8451.            and remove the circular dependency. 
  8452.  
  8453.  U1072     cycle in include files : 'filenames' 
  8454.            Explanation: A cycle was detected in the tree of included files. 
  8455.            Action: Check the file names included by the given include file and 
  8456.            remove the circular inclusion. 
  8457.  
  8458.  U1073     don't know how to make 'filename' 
  8459.            Explanation: The specified target does not exist and there are no 
  8460.            commands to execute or inference rules given for it.  Hence NMAKE 
  8461.            cannot build it. 
  8462.            Action: Correct the specification of the file, which should exist on 
  8463.            your file system. 
  8464.  
  8465.  U1076     name too long 
  8466.            Explanation: The macro name, target name, or build command name 
  8467.            would overflow an internal buffer. 
  8468.            Action: Reduce the length of the specified name. 
  8469.  
  8470.  U1077     'program' : return code 'value' 
  8471.            Explanation: The invocation of NMAKE failed with a nonzero return 
  8472.            value. 
  8473.            Action: Determine the cause of failure of the specified program. 
  8474.  
  8475.  U1078     constant overflow at 'directive' 
  8476.            Explanation: A constant in 'directive' expression was too big. 
  8477.            Action: Reduce the size of the specified constant to a value within 
  8478.            the range of a signed long integer, -2147483648 <= value <= 
  8479.            2147483647. 
  8480.  
  8481.  U1079     illegal expression : divide by zero present 
  8482.            Explanation: An expression contains a division by zero. 
  8483.            Action: Remove the undefined division by zero from the expression. 
  8484.  
  8485.  U1080     operator and/or operand out of place : usage illegal 
  8486.            Explanation: The expression uses an operand or operator incorrectly. 
  8487.            Action: Check the allowed set of operators and their precedence. 
  8488.  
  8489.  U1081     'program' : program not found 
  8490.            Explanation: NMAKE could not find the external command or program. 
  8491.            Action: Be sure that the program is located in the PATH. 
  8492.  
  8493.  U1082     'command' : cannot execute command: out of memory 
  8494.            Explanation: NMAKE ran out of memory while running command. 
  8495.            Action: Make more memory available while running NMAKE. 
  8496.  
  8497.  U1083     target macro 'macroname' expands to nothing 
  8498.            Explanation: The expansion of the given macro is a null string. 
  8499.            Action: Correct the definition of the macro. 
  8500.  
  8501.  U1084     cannot create temporary file 'filename' 
  8502.            Explanation: NMAKE was unable to open the specified temporary file. 
  8503.            Action: Check the filename specification for validity. 
  8504.  
  8505.  U1085     cannot mix implicit and explicit rules 
  8506.            Explanation: A regular target was specified along with the target 
  8507.            for a rule (which has the form .sufx1.sufx2). 
  8508.            Action: Separate targets built by implicit and explicit inference 
  8509.            rules into different lists. 
  8510.  
  8511.  U1086     inference rule cannot have dependents 
  8512.            Explanation: Dependents are not allowed in the definition of an 
  8513.            inference rule. 
  8514.            Action: Remove the dependents list from the rule. 
  8515.  
  8516.  U1087     cannot have : and :: dependents for same target 
  8517.            Explanation: A target cannot have both a single-colon and 
  8518.            double-colon dependency. 
  8519.            Action: Choose either single-colon or double-colon separator for the 
  8520.            target. 
  8521.  
  8522.  U1088     invalid separator on inference rule : '::' 
  8523.            Explanation: Inference rules can use only a single-colon separator. 
  8524.            Action: Use a single-colon dependency for the target. 
  8525.  
  8526.  U1089     cannot have build commands for pseudotarget 'targetname' 
  8527.            Explanation: Pseudotargets (for example, .PRECIOUS, .SUFFIXES) 
  8528.            cannot have build commands specified. 
  8529.            Action: Remove the build commands from the specification of 
  8530.            targetname. 
  8531.  
  8532.  U1090     cannot have dependents for pseudotarget 'targetname' 
  8533.            Explanation: The specified pseudotarget, for example, .SILENT, 
  8534.            .IGNORE) cannot have a dependent. 
  8535.            Action: Remove the dependent from the specification of targetname. 
  8536.  
  8537.  U1092     too many names in rule 
  8538.            Explanation: The rules cannot have more than one pair of extensions 
  8539.            (ext1.ext2) as a target for the rule. 
  8540.            Action: Use only one pair of extensions in any inference rule. 
  8541.  
  8542.  U1093     cannot mix special pseudotargets 
  8543.            Explanation: It is illegal to list two or more pseudotargets 
  8544.            together. 
  8545.            Action: Use only one pseudotarget in any list. 
  8546.  
  8547.  U1094     syntax error : only [no]keep allowed here 
  8548.            Explanation: In a context where only KEEP or NOKEEP is accepted to 
  8549.            indicate the desired disposition of the inline file, you used an 
  8550.            incorrect string. 
  8551.            Action: Use the correct syntax for In-Line Files. 
  8552.  
  8553.  U1095     expanded command line 'string' too long 
  8554.            Explanation: After macro expansion, the command line length exceeds 
  8555.            1024 bytes. 
  8556.            Action: Rewrite the command line to stay within a 1024-byte limit. 
  8557.  
  8558.  U1097     extmake syntax usage error, no dependent 
  8559.            Explanation: You used the extmake file syntax on a description block 
  8560.            which had no dependent files. 
  8561.            Action: Specify one or more dependent files for the block. 
  8562.  
  8563.  U1098     extmake syntax in 'string' incorrect 
  8564.            Explanation: The given string contains an extmake syntax error. 
  8565.            Action: Correct the string according to the proper syntax. 
  8566.  
  8567.  
  8568. ΓòÉΓòÉΓòÉ 18.12.2. Warnings (Part 2) 4001 - 4008 ΓòÉΓòÉΓòÉ
  8569.  
  8570.  U4001     command file can be invoked only from command line 
  8571.            Explanation: You used an @ symbol on an argument in a command file. 
  8572.            You cannot invoke another command file from within a command file. 
  8573.            Action: If the you want '@' to be part of an argument in a command 
  8574.            file, you must enclose that argument in quotation marks. 
  8575.  
  8576.  U4002     no match found for wild card 'string' 
  8577.            Explanation: NMAKE expanded wildcards in the given string, but found 
  8578.            no files matching the specification. 
  8579.            Action: Check the existence of desired files on your file system. 
  8580.  
  8581.  U4004     too many rules for target 'targetname' 
  8582.            Explanation: You specified too many inference rules for the 
  8583.            specified targetname. 
  8584.            Action: Revise your rules specification for targetname. 
  8585.  
  8586.  U4005     ignoring rule 'string' (extension not in .SUFFIXES) 
  8587.            Explanation: You specified an inference rule with a suffix which was 
  8588.            not in the .SUFFIXES list. 
  8589.            Action: To use the suffix, be sure to include it in the .SUFFIXES 
  8590.            list. 
  8591.  
  8592.  U4006     special macro undefined : 'macroname' 
  8593.            Explanation: You specified the undefined macro macroname. 
  8594.            Action: NMAKE will ignore the undefined macroname.  You may use only 
  8595.            predefined special macros. 
  8596.  
  8597.  U4007     file name 'filename' too long; truncating to 8.3 
  8598.            Explanation: The specified filename is too long for a FAT file 
  8599.            system name. 
  8600.            Action: NMAKE will shorten the filename to at most an 
  8601.            eight-character name and 3-character extension. 
  8602.  
  8603.  U4008     removed target 'filename' 
  8604.            Explanation: While deleting non-precious files, NMAKE erased the 
  8605.            specified filename which was a target. 
  8606.            Action: Check your lists of targets and dependent files to be sure 
  8607.            that filename is not needed. 
  8608.  
  8609.  
  8610. ΓòÉΓòÉΓòÉ 18.12.3. Informational Messages (Part 3) 2-6 ΓòÉΓòÉΓòÉ
  8611.  
  8612.  Message 2 'filename' is up-to-date. 
  8613.            Explanation: The specified target filename is no older than any of 
  8614.            its dependent files. 
  8615.            Action: NMAKE does not need to rebuild this target. 
  8616.  
  8617.  Message 3 **'file1' newer than 'file2' 
  8618.            Explanation: While reporting creation times of files, NMAKE notes 
  8619.            that file1 was created after file2. 
  8620.            Action: [none] 
  8621.  
  8622.  Message 5 touch 'filename' 
  8623.            Explanation: You specified option /t to touch targets with the 
  8624.            current date and time. 
  8625.            Action: NMAKE has updated the creation time of filename. 
  8626.  
  8627.  Message 6 'filename' target does not exist 
  8628.            Explanation: The specified filename could not be found. 
  8629.            Action: NMAKE will rebuild the target. 
  8630.  
  8631.  
  8632. ΓòÉΓòÉΓòÉ 19. Object Utility/2 Description ΓòÉΓòÉΓòÉ
  8633.  
  8634. Object Utility/2 is a Workplace-Shell object that provides a facility for 
  8635. registering Workplace Shell classes, creating instances of Workplace Shell 
  8636. classes, and modifying instances of Workplace Shell classes. 
  8637.  
  8638. The following attributes can be set or modified for instances of Workplace 
  8639. Shell objects: 
  8640.  
  8641.      Template 
  8642.      Copy 
  8643.      Delete 
  8644.      Rename 
  8645.      Print 
  8646.      Link 
  8647.      Move 
  8648.      Drag 
  8649.  
  8650.  The attributes modify the behavior of the objects to allow or not allow these 
  8651.  actions. For example, the Template attribute allows you to create a template. 
  8652.  Some objects do not allow specific behaviors even if the attribute is 
  8653.  selected. 
  8654.  
  8655.  A Workplace Shell class must be registered with the Workplace Shell before it 
  8656.  will be recognized by Object Utility/2. After the object class is registered, 
  8657.  an instance of that class can be created. Object Utility/2 automates these 
  8658.  procedures of object-class registration and instantiation.  This tool can 
  8659.  create an instance of an object from a class that has already been 
  8660.  instantiated, or can modify an existing instance. 
  8661.  
  8662.  Registration of a class is performed by opening the main view of Object 
  8663.  Utility/2.  The class name and DLL name must be provided.  The class is not 
  8664.  registered if it has been registered previously. 
  8665.  
  8666.  To modify an existing instance, drag the icon representing the class and drop 
  8667.  it of Object Utility/2. You can enter the object ID and class name after 
  8668.  opening the main view. 
  8669.  
  8670.  After the item to be installed is dropped, a dialog box is displayed for 
  8671.  registration and instantiation information. 
  8672.  
  8673.  To destroy an object created by this tool, drag the object and drop it onto 
  8674.  the Shredder object on the Workplace Shell Desktop (if the no drag and no 
  8675.  delete options are not selected and the object allows deletion). A mechanism 
  8676.  to deregister an object class is not provided with this tool. 
  8677.  
  8678.  
  8679. ΓòÉΓòÉΓòÉ 19.1. Class Name Field ΓòÉΓòÉΓòÉ
  8680.  
  8681. Class name is a list of all the registered classes that have DLLs available on 
  8682. your system.  The OS/2 operating system allows classes to be registered without 
  8683. the DLLs available, but Object Utility/2 does not.  You can select a class from 
  8684. the list or enter one manually.  The Class Name field is required when 
  8685. registering a new class, modifying an existing instance that was not dropped on 
  8686. Object Utility/2, or creating a new instance. 
  8687.  
  8688.  
  8689. ΓòÉΓòÉΓòÉ 19.2. DLL Name Field ΓòÉΓòÉΓòÉ
  8690.  
  8691. The DLL name must be a fully qualified path and file name if the DLL is not 
  8692. located in a DLL search path. This field is required if you are registering a 
  8693. class. 
  8694.  
  8695.  
  8696. ΓòÉΓòÉΓòÉ 19.3. Object ID Field ΓòÉΓòÉΓòÉ
  8697.  
  8698. The Object ID must be enclosed in angle brackets (<>). This field is required 
  8699. when you modify an existing object that was not dropped on Object Utility/2. If 
  8700. you try to create an instance that is not a template, without an Object ID, you 
  8701. will receive a warning. You can create a new instance without an object ID. The 
  8702. Object ID must be unique, if specified, when creating an instance. Templates 
  8703. cannot have an object ID.  Instances with an object ID cannot be made into a 
  8704. template. 
  8705.  
  8706.  
  8707. ΓòÉΓòÉΓòÉ 19.4. Title Field ΓòÉΓòÉΓòÉ
  8708.  
  8709. The Title field is required when creating a new object. You can alter the title 
  8710. of an existing object by providing a different title in this field. 
  8711.  
  8712.  
  8713. ΓòÉΓòÉΓòÉ 19.5. Location Field ΓòÉΓòÉΓòÉ
  8714.  
  8715. You can either select an existing location from the location list or enter a 
  8716. location manually. The location must be an object ID that represents a folder 
  8717. (enclosed in angle brackets) or a fully qualified path name. 
  8718.  
  8719.  
  8720. ΓòÉΓòÉΓòÉ 19.6. Options ΓòÉΓòÉΓòÉ
  8721.  
  8722.  Create Instance     Creates an instance of the class. 
  8723.  
  8724.  Template            Creates a template of the class in the Templates folder. 
  8725.  
  8726.  No Copy             Removes Copy from the pop-up menu. 
  8727.  
  8728.  No Delete           Removes Delete from the pop-up menu. 
  8729.  
  8730.  No Rename           Removes Rename from the pop-up menu. 
  8731.  
  8732.  No Print            Removes Print from the pop-up menu. 
  8733.  
  8734.  No Link             Removes Link from the pop-up menu. 
  8735.  
  8736.  No Move             Removes Move from the pop-up menu. 
  8737.  
  8738.  No Drag             Prevents dragging of the object. 
  8739.  
  8740.  
  8741. ΓòÉΓòÉΓòÉ 20. PACK/UNPACK and PACK2/UNPACK2 ΓòÉΓòÉΓòÉ
  8742.  
  8743. PACK reduces the size of a file by compressing its data. You can use PACK for a 
  8744. single file or for a group of files, thereby reducing the disk space required 
  8745. for your OS/2 application.  UNPACK restores a packed file to it's original 
  8746. size. 
  8747.  
  8748. In addition to the original versions of these utility programs, enhanced 
  8749. versions of the programs are also included with OS/2. These enhanced versions 
  8750. are named PACK2 and UNPACK2. The options, parameters, and function for PACK2 
  8751. and UNPACK2 are identical to PACK and UNPACK.  The only difference is that 
  8752. PACK2 has a better compression algorithm. 
  8753.  
  8754. Note:  PACK and PACK2 are shipped with the OS/2 Toolkit. UNPACK and UNPACK2 are 
  8755. shipped with OS/2. 
  8756.  
  8757.  
  8758. ΓòÉΓòÉΓòÉ 20.1. Starting PACK ΓòÉΓòÉΓòÉ
  8759.  
  8760. You start PACK with a single command from the command line. The input required 
  8761. can be specified in one of two ways: 
  8762.  
  8763.      You can type the names of all the files you want to compress (Method 1). 
  8764.       See Running PACK With Individual Files. 
  8765.  
  8766.      You can type the name of a single file that contains a list of all the 
  8767.       files you want to compress (Method 2). See Running PACK With a Listfile. 
  8768.  
  8769.  When using PACK, select the method that is suitable for you. 
  8770.  
  8771.  
  8772. ΓòÉΓòÉΓòÉ 20.1.1. Running PACK With Individual Files ΓòÉΓòÉΓòÉ
  8773.  
  8774. You can start PACK with a single command from the command line. You can type 
  8775. the names of all the files you want to compress directly on the command line. 
  8776. Include the drive and path if the files are not in the working directory. You 
  8777. can specify file names with any combination of uppercase and lowercase letters. 
  8778. File-name extensions are not required; however, if you specify a file name that 
  8779. has an extension, also type the extension. 
  8780.  
  8781. The command-syntax is as follows: 
  8782.  
  8783.   PACK sourcefile [packedfile]
  8784.     [/H:headerpath\
  8785.     |/H:headerfile
  8786.     |/H:headerpath\ headerfile]
  8787.     [/D:headerdate]
  8788.     [/T:headertime]
  8789.     [/C] [/A] [/R]
  8790.  
  8791. where: 
  8792.  
  8793.  sourcefile          Specifies the name of the file you want packed 
  8794.                      (compressed). This parameter is required. Include the 
  8795.                      drive and path if the file is not in the working 
  8796.                      directory. Global file-name characters are permitted. 
  8797.  
  8798.                      When the data is compressed, the name of the source file 
  8799.                      is placed in the header of the compressed file and is used 
  8800.                      as the destination file name during unpacking. 
  8801.  
  8802.  packedfile          Specifies the name of the file that will contain the 
  8803.                      compressed data.  Files that contain compressed data can 
  8804.                      be recognized by the @ symbol as the last character in the 
  8805.                      file name.  If you do not specify this parameter, PACK 
  8806.                      places the compressed data in sourcefile and modifies its 
  8807.                      name to contain the @ symbol. 
  8808.  
  8809.  /H:headerpath\ or /H:headerfile or /H:headerpath\headerfile These parameters 
  8810.                      can be used separately or they can be paired. 
  8811.  
  8812.                      /H:headerpath\ 
  8813.                                Specifies the destination path to be placed in 
  8814.                                the header of the file that contains the 
  8815.                                compressed data. Drive letters are not 
  8816.                                permitted. Unless this path is overridden with 
  8817.                                the UNPACK command, it will be the destination 
  8818.                                path when the file is uncompressed. headerpath 
  8819.                                must end with a back slash (\). 
  8820.  
  8821.                      /H:headerfile 
  8822.                                Specifies the name of the file to be placed in 
  8823.                                the header of the compressed file. This file 
  8824.                                name will be used as the destination file for 
  8825.                                the uncompressed data and cannot be overridden. 
  8826.  
  8827.                                If a header file name is not specified, PACK 
  8828.                                automatically uses sourcefile as the name of the 
  8829.                                file that is placed in the header of the 
  8830.                                compressed file. 
  8831.  
  8832.                      /H:headerpath\headerfile 
  8833.                                Specifies that both a destination path and a 
  8834.                                destination file name are to be placed in the 
  8835.                                header of the file that has the compressed data. 
  8836.  
  8837.  /D:headerdate       Records the date in the header of the file that has the 
  8838.                      compressed data, and also in the destination file when it 
  8839.                      is uncompressed. 
  8840.  
  8841.                      The date must follow the format /D:MM-DD-YYYY (for 
  8842.                      example: /D:08-20-1991 and /D:12-30-2010) 
  8843.  
  8844.  /T:headertime       Records the time in the header of the file that has the 
  8845.                      compressed data, and also in the destination file when it 
  8846.                      is uncompressed. 
  8847.  
  8848.                      The time must follow the format /T:HH.MM (for example 
  8849.                      /T:02.06 and /T:14.54). Hour 00 represents 12 a.m. and 
  8850.                      hour 12 represents 12 p.m. 
  8851.  
  8852.  /C                  Specifies that the current path be placed in the header of 
  8853.                      the file that contains the compressed data. When the 
  8854.                      UNPACK command is used, this path will be the destination 
  8855.                      path for the file that contains the uncompressed data. 
  8856.  
  8857.                      You cannot use /C when the headerpath is used. 
  8858.  
  8859.  /A                  Adds data from sourcefile to the data in packedfile. 
  8860.  
  8861.                      The source file can be either in a compressed or 
  8862.                      uncompressed state. If the source file is in an 
  8863.                      uncompressed state, the data is compressed before being 
  8864.                      added to the file containing the compressed data. 
  8865.  
  8866.  /R                  Removes the file specified by sourcefile from the file 
  8867.                      that contains only compressed data. The sourcefile 
  8868.                      parameter must specify the path and file name exactly as 
  8869.                      they appear in the header of the file with the compressed 
  8870.                      data; otherwise, the following error message appears on 
  8871.                      the screen. 
  8872.  
  8873.                                           The specified file to remove was not found.
  8874.  
  8875.                      The /R parameter is valid only when used in conjunction 
  8876.                      with sourcefile and packedfile. 
  8877.  
  8878.  Note:  To display the path and file-name information stored in the header of 
  8879.         the file that contains the compressed data, use the UNPACK command and 
  8880.         specify the SHOW option. For information about the SHOW option, see the 
  8881.         UNPACK command in the online OS/2 Command Reference. 
  8882.  
  8883.  You can also get end-to-end compressed data by using global file-name 
  8884.  characters. For example: 
  8885.  
  8886.     PACK *.EXE BUNDLE
  8887.  
  8888.  
  8889. ΓòÉΓòÉΓòÉ 20.1.2. Running PACK With a Listfile ΓòÉΓòÉΓòÉ
  8890.  
  8891. You can start PACK with a single command from the command line. You can type 
  8892. the name of a single file that contains a list of all the files you want to 
  8893. compress. 
  8894.  
  8895. Include the drive and path if the files are not in the working directory. You 
  8896. can specify file names with any combination of uppercase and lowercase letters. 
  8897. File-name extensions are not required; however, if you specify a file name that 
  8898. has an extension, also type the extension. 
  8899.  
  8900. The command-line syntax is as follows: 
  8901.  
  8902.   PACK listfile [packedfile] /L
  8903.     [/H:headerpath\
  8904.     |/H:headerfile
  8905.     |/H:headerpath\ headerfile]
  8906.     [/D:headerdate]
  8907.     [/T:headertime]
  8908.     [/C]
  8909.  
  8910. where: 
  8911.  
  8912.  listfile            Specifies the name of the file that contains a list of 
  8913.                      files that are to be compressed. When naming a list file, 
  8914.                      do not use global file-name characters. 
  8915.  
  8916.                      For information about list files, see Creating a List 
  8917.                      File. 
  8918.  
  8919.  packedfile          Specifies the name of the file that will contain the 
  8920.                      compressed data. Files that contain compressed data can be 
  8921.                      recognized by the @ symbol as the last character in the 
  8922.                      file name. If you do not specify this parameter, PACK 
  8923.                      places the compressed data in sourcefile and modifies its 
  8924.                      name to contain the @ symbol. 
  8925.  
  8926.  /L                  Indicates that filename is a list file. A list file is not 
  8927.                      compressed; it simply contains a listing of the names of 
  8928.                      the files that are to be compressed. 
  8929.  
  8930.  /H:headerpath\ or /H:headerfile or /H:headerpath\ headerfile These parameters 
  8931.                      can be used separately or they can be paired. 
  8932.  
  8933.                      /H:headerpath\ 
  8934.                                Specifies the destination path (drive letters 
  8935.                                are not permitted) to be placed in the header of 
  8936.                                the file that contains the compressed data. 
  8937.                                Unless this path is overridden with the UNPACK 
  8938.                                command, it will be the destination path when 
  8939.                                the file is uncompressed. Headerpath must end 
  8940.                                with a back slash (\). 
  8941.  
  8942.                      /H:headerfile 
  8943.                                Specifies the name of the file to be placed in 
  8944.                                the header of the compressed file. This file 
  8945.                                name will be used as the destination file for 
  8946.                                the uncompressed data and cannot be overridden. 
  8947.  
  8948.                                If a header file name is not specified, PACK 
  8949.                                automatically uses sourcefile as the name of the 
  8950.                                file that is placed in the header of the 
  8951.                                compressed file. 
  8952.  
  8953.                      /H:headerpath\ headerfile 
  8954.                                Specifies that both a destination path and a 
  8955.                                destination file name are to be placed in the 
  8956.                                header of the file that has the compressed data. 
  8957.  
  8958.  /D:headerdate       Records the date in the header of the file that has the 
  8959.                      compressed data, and also in the destination file when it 
  8960.                      is uncompressed. 
  8961.  
  8962.                      The date must follow the format /D:MM-DD-YYYY. For 
  8963.                      example: /D:08-20-1991 and /D:12-30-2010. 
  8964.  
  8965.  /T:headertime       Records the time in the header of the file that has the 
  8966.                      compressed data, and also in the destination file when it 
  8967.                      is uncompressed. 
  8968.  
  8969.                      The time must follow the format /T:HH.MM. For example 
  8970.                      /T:02.06 and /T:14.54. Hour 00 represents 12 a.m. and hour 
  8971.                      12 represents 12 p.m. 
  8972.  
  8973.  /C                  Specifies that the current path be placed in the header of 
  8974.                      the file that contains the compressed data. When the 
  8975.                      UNPACK command is used, this path will be the destination 
  8976.                      path for the file that contains the uncompressed data. 
  8977.  
  8978.                      You cannot use /C when the headerpath is used. 
  8979.  
  8980.  Note:  The path and file-name information stored in the header of the file 
  8981.         that contains the compressed data can be displayed by using the /SHOW 
  8982.         option available with UNPACK. For information about the /SHOW option, 
  8983.         see the UNPACK command in the online OS/2 Command Reference. 
  8984.  
  8985.  
  8986. ΓòÉΓòÉΓòÉ 20.1.2.1. Creating a List File ΓòÉΓòÉΓòÉ
  8987.  
  8988. To use a list file with PACK, you must first create a file that contains the 
  8989. names of the files you want to compress. You can give the list file any name. 
  8990. Following is an example of specifying a list file at the command line. 
  8991.  
  8992.   PACK DEVICE.LST DEVICE.DRV /L
  8993.  
  8994. The /L indicates that DEVICE.LST is a list file. If the list file is not in the 
  8995. working directory, you must specify the drive and path. Global file-name 
  8996. characters are not permitted in the list-file name. DEVICE.DRV is the 
  8997. destination file for the end-to-end-compressed data. (End-to-end compressed 
  8998. data is the data from each of the files contained in the list file. This data 
  8999. is stored in a contiguous format in the destination file.) 
  9000.  
  9001. The syntax used in the list file is similar to that used in the command line. 
  9002. The syntax for a single line in the list file follows: 
  9003.  
  9004.   sourcefile
  9005.     [/H:headerpath\
  9006.     |/H:headerfile
  9007.     |/H:headerpath\ headerfile]
  9008.     [/D:headerdate]
  9009.     [/T:headertime]
  9010.     [/C]
  9011.  
  9012. When using the list-file method (method 2), global file-name characters are not 
  9013. permitted in the source-file name. Notice also that "PACK" is excluded and 
  9014. packedfile is not permitted in the list file, because they were specified on 
  9015. the command line. You can include comments or blank lines by entering a 
  9016. semicolon as the first character of the line. An example of a list file 
  9017. follows. 
  9018.  
  9019.   ;This is a comment
  9020.   C:\OS2\COMMAND.COM
  9021.   CONFIG.SYS /H:CONFIG.BAK /C
  9022.   \OS2\INSTALL\DDINSTAL.EXE
  9023.    /H:\OS2\DDINSTAL.TMP
  9024.    /D:10-15-91 /T:11.45
  9025.  
  9026.  
  9027. ΓòÉΓòÉΓòÉ 20.2. Starting UNPACK ΓòÉΓòÉΓòÉ
  9028.  
  9029. UNPACK restores a file of compressed data to its original size and copies it to 
  9030. a specified drive and path. To start the UNPACK command, type: 
  9031.  
  9032.   UNPACK sourcefile
  9033.   [destinationdrive:] [destinationpath]
  9034.   [/SHOW] [/N:singlefile]
  9035.   [/V] [/F]
  9036.  
  9037. where: 
  9038.  
  9039.  sourcefile          Specifies the name of an existing file that contains 
  9040.                      compressed data.  If this file contains one or more files 
  9041.                      of compressed data, UNPACK restores each file within the 
  9042.                      file. 
  9043.  
  9044.  destinationdrive:   Specifies the name of the drive where you want UNPACK to 
  9045.                      copy one or more restored files. 
  9046.  
  9047.                      When you specify a destination drive but not a path, 
  9048.                      UNPACK uses the path information stored in the header of 
  9049.                      the file that contains the compressed data. 
  9050.  
  9051.  destinationpath     Specifies the name of the directory (and its 
  9052.                      subdirectories) where you want UNPACK to copy one or more 
  9053.                      restored files. 
  9054.  
  9055.                      When specified, the destination path overrides the path 
  9056.                      information stored in the header of the file that contains 
  9057.                      the compressed data. 
  9058.  
  9059.  /SHOW               Displays the destination path and file-name information 
  9060.                      that are saved in the header of each file containing 
  9061.                      compressed data. 
  9062.  
  9063.  /N:singlefile       Extracts and uncompresses one file from a file that 
  9064.                      contains multiple files of compressed data. 
  9065.  
  9066.  /V                  Verifies that sectors written to the target disk are 
  9067.                      recorded correctly.  This parameter lets you know that 
  9068.                      critical data has been correctly recorded. 
  9069.  
  9070.                      This parameter causes UNPACK to run slower, because a 
  9071.                      check is made for each entry recorded on the disk. 
  9072.  
  9073.  /F                  Specifies that files with extended attributes should not 
  9074.                      be unpacked or copied if the destination file system does 
  9075.                      not support extended attributes. 
  9076.  
  9077.  
  9078. ΓòÉΓòÉΓòÉ 21. Resource Compiler ΓòÉΓòÉΓòÉ
  9079.  
  9080. The OS/2 Resource Compiler (RC) is an application-development tool that lets 
  9081. you add application resources, such as message strings, pointers, menus, and 
  9082. dialog boxes, to the executable file of your application. The Resource Compiler 
  9083. is primarily intended to prepare data for OS/2 applications that use functions 
  9084. such as WinLoadString, WinLoadPointer, WinLoadMenu, and WinLoadDlg.  These 
  9085. functions load resources from the executable file of your application or 
  9086. another specified executable file.  The application can then use the loaded 
  9087. resources as needed. 
  9088.  
  9089. The Resource Compiler and the resource functions let you quickly define and/or 
  9090. modify application resources without recompiling the application itself.  That 
  9091. is, RC can modify the resources in an executable file at any time without 
  9092. affecting the rest of the file. This means that you can create custom 
  9093. applications from a single executable file - you just use RC to add the custom 
  9094. resources you need to each application. 
  9095.  
  9096. The Resource Compiler is especially important for international applications 
  9097. because it lets you define all language-dependent data, such as message 
  9098. strings, as resources.  Preparing the application for a new language is simply 
  9099. a matter of adding new resources to the existing executable file. 
  9100.  
  9101.  
  9102. ΓòÉΓòÉΓòÉ 21.1. Using the Resource Compiler ΓòÉΓòÉΓòÉ
  9103.  
  9104. The Resource Compiler (RC) compiles a resource script file to create a new file 
  9105. called a binary resource file. 
  9106.  
  9107. The binary resource file can be added to the executable file of the 
  9108. application, replacing any existing resources in that file. 
  9109.  
  9110. You can start RC in any of three ways. 
  9111.  
  9112.      Compile and add a resource definition file to an executable file 
  9113.      Compile a resource script file 
  9114.      Add a binary resource file to an executable file 
  9115.  
  9116.  The RC command line has the following three basic forms: 
  9117.  
  9118.     rc resource-script-file [executable-file]
  9119.  
  9120.     rc resource-file [executable-file]
  9121.  
  9122.     rc -r  resource-script-file [resource-file]
  9123.  
  9124.  Note:  The third option does not add to the executable file.
  9125.  
  9126.  The resource-script-file field must be the file name of the resource script 
  9127.  file to be compiled.  If the file is not in the current directory, you must 
  9128.  provide a full path.  If you provide a file name without specifying an 
  9129.  extension, RC automatically appends the .RC extension to the name. 
  9130.  
  9131.  The executable-file field must be the name of the executable file to receive 
  9132.  the compiled resources.  This is a file having an extension of either .EXE or 
  9133.  .DLL.  If the file is not in the current directory, you must provide a full 
  9134.  path.  If you omit the executable-file field, RC adds the compiled resources 
  9135.  to the executable file that has the same name as the resource script file but 
  9136.  which has the .EXE file extension.  If you specify the executable-file field 
  9137.  but omit the extension, RC will append the .EXE extension.  If this executable 
  9138.  file does not exist, RC displays an error message. 
  9139.  
  9140.  The -r option directs RC to compile the resource script file without adding it 
  9141.  to an executable file.  You can use this option to prepare a binary resource 
  9142.  file that you can add to an executable file at a later time.  If you do not 
  9143.  explicitly name a binary resource file along with the -r option, RC uses the 
  9144.  same name as the resource script file but with the .RES extension. 
  9145.  
  9146.  The resource-file field must be the name of the binary resource file to be 
  9147.  added to the executable file.  If the binary resource file does not already 
  9148.  exist, RC creates it; otherwise, RC replaces the existing file.  If the file 
  9149.  is not in the current directory, you must provide a full path.  The binary 
  9150.  resource file must have the .RES extension. 
  9151.  
  9152.  For example, to compile the resource script file EXAMPLE.RC, and add the 
  9153.  result to the executable file EXAMPLE.EXE, use the following command: 
  9154.  
  9155.     rc example
  9156.  
  9157.  You do not need to specify the .RC extension. RC creates the binary resource 
  9158.  file EXAMPLE.RES and adds the compiled resource to the executable file 
  9159.  EXAMPLE.EXE. 
  9160.  
  9161.  To compile the resource script file EXAMPLE.RC into a binary resource file 
  9162.  without adding the resources to an executable file, use the following command: 
  9163.  
  9164.     rc -r example
  9165.  
  9166.  The compiler creates the binary resource file EXAMPLE.RES. To create a binary 
  9167.  resource file that has a name different from the resource script file, use the 
  9168.  following command: 
  9169.  
  9170.     rc -r example newfile.res
  9171.  
  9172.  To add the compiled resources in the binary resource file EXAMPLE.RES to an 
  9173.  executable file, use the following command: 
  9174.  
  9175.     rc example.res
  9176.  
  9177.  To specify the name of the executable file, if the name is different from the 
  9178.  resource file, use the following command: 
  9179.  
  9180.     rc example.res newfile.exe
  9181.  
  9182.  To add the compiled resources to a dynamic-link-library (.DLL) file, use the 
  9183.  following command: 
  9184.  
  9185.     rc example.res dynalink.dll
  9186.  
  9187.  
  9188. ΓòÉΓòÉΓòÉ 21.2. Command-Line Options ΓòÉΓòÉΓòÉ
  9189.  
  9190. The following options can be specified on the Resource Compiler command line: 
  9191.  
  9192.  -d <defname>[=<value>] Define macro to preprocessor 
  9193.  -i <pathspec>       Include file path 
  9194.  -n                  Suppress the display of the logo and the copyright 
  9195.                      information 
  9196.  -r                  Create .res file 
  9197.  -p                  Pack - 386 resources will not cross 64K boundaries. 
  9198.  -cp <cp>            Code page 
  9199.  -x[{1|2}]           Exepack - compress resources, using method 1 or 2. 
  9200.  -w2                 Suppress the display of all warning and informational 
  9201.                      messages. Errors and fatal errors continue to be 
  9202.                      displayed. 
  9203.  -h (or -?)          Access Help 
  9204.  
  9205.  Leave a blank after the letter when using option -d, -i , or -cp. Uppercase or 
  9206.  lowercase letters can be used. 
  9207.  
  9208.  If you omit the space after -d, the option works correctly although you 
  9209.  receive an informational message stating that an invalid option was specified. 
  9210.  
  9211.  
  9212. ΓòÉΓòÉΓòÉ 21.2.1. Explanation of Command-Line Options ΓòÉΓòÉΓòÉ
  9213.  
  9214. The -d option is useful for passing conditional-compilation flags to the 
  9215. preprocessor. The <defname> is a sequence of letters, underscore symbols, and 
  9216. digits which does not begin with a digit. The <value> is a sequence of symbols 
  9217. which you want to substitute for the <defname> wherever it appears in the input 
  9218. script file.  If you omit the =<value>, the <defname> will be set to the 
  9219. default value 1. For example, the option -d _3d is equivalent to including at 
  9220. the beginning of the input file this line: 
  9221.  
  9222. #define   _3d     1 
  9223.  
  9224. You can use the -d option up to 8 times to define different macros from the 
  9225. command line. 
  9226.  
  9227. The -i option defines paths for files to be included with the source file. The 
  9228. <pathspec> is any path where you want RC to search for files included by the 
  9229. preprocessor #include directive.  The <pathspec> must not contain embedded 
  9230. blanks.  To include more than one path, code the -i option once for each path. 
  9231. The preprocessor reads paths from the INCLUDE environment variable after 
  9232. reading the paths you provide with -i options. 
  9233.  
  9234. The -r option will create in your current directory a binary resource file 
  9235. containing the resources you compile.  The -r option takes no argument.  The 
  9236. name given to this binary resource file will be the same as the name of the 
  9237. input resource script file except that the extension will be .RES instead of 
  9238. .RC. When you use -r, you do not bind resources to an executable file. 
  9239.  
  9240. The -p option is used only when binding resources to an executable.  It 
  9241. positions resources so that they do not cross 64K boundaries. 
  9242.  
  9243. The -cp option is used to specify code page information for the resource script 
  9244. file to be compiled. The <codepage> is a numeric code page value. For a list of 
  9245. code page values, see the code page table under COUNTRYCODE in the online book 
  9246. OS/2 Warp Control Program Programming Reference. 
  9247.  
  9248. The -x option is used only when binding resources to an executable.  It causes 
  9249. resources to be compressed.  These resources will be decompressed automatically 
  9250. when the resource is accessed. 
  9251.  
  9252. The -x1 option causes Resource Compiler to use the compression algorithm that 
  9253. is compatible with OS/2 2.0, 2.1, and 2.11, as well as OS/2 3.0 and later. 
  9254.  
  9255. The -x2 option causes Resource Compiler to use a compression algorithm that is 
  9256. compatible with OS/2 3.0 and later. The -x2 option will produce smaller 
  9257. executable files that can access resources faster. 
  9258.  
  9259. -x with no number defaults to -x1. 
  9260.  
  9261. The -n option (nologo) causes Resource Compiler to suppress the display of the 
  9262. logo and the copyright information. 
  9263.  
  9264. The -w2 option causes Resource Compiler to suppress the display of all warning 
  9265. and informational messages. Errors and fatal errors continue to be displayed. 
  9266.  
  9267. The -h and -? options cause Resource Compiler to display a summary of the 
  9268. available options and environment variables that it uses.  When you use these 
  9269. options, Resource Compiler does not read any input files. Entering "RC" on the 
  9270. command line with no operands displays the same information. 
  9271.  
  9272.  
  9273. ΓòÉΓòÉΓòÉ 21.2.2. Code Pages ΓòÉΓòÉΓòÉ
  9274.  
  9275. In addition to -r, RC offers the -cp command-line option that lets you specify 
  9276. a code-page identifier. The syntax is as follows: 
  9277.  
  9278.   -cp codepage-id
  9279.  
  9280. The codepage-id field contains a valid code page. For a complete list of 
  9281. supported code pages, see the code page table under COUNTRYCODE in the online 
  9282. book OS/2 Warp Control Program Programming Guide and Reference. 
  9283.  
  9284.  
  9285. ΓòÉΓòÉΓòÉ 21.2.3. Defining Constants ΓòÉΓòÉΓòÉ
  9286.  
  9287. The -d option lets you define up to eight symbolic constants on the command 
  9288. line.  The syntax is as follows: 
  9289.  
  9290.   -d defname[=value]
  9291.  
  9292. In the previous example, defname is a name, and value is an integer constant, 
  9293. or an expression. The -d option is useful for passing conditional-compilation 
  9294. flags to the RC preprocessor. 
  9295.  
  9296. The following example specifies a Japanese code-page identifier and also 
  9297. defines two symbolic constants to be passed to the preprocessor as 
  9298. conditional-compilation flags. 
  9299.  
  9300.   rc -cp 942 -d DEBUG -d VERSION=2 example
  9301.  
  9302. Note:  RC creates many temporary files and writes them to the directory 
  9303. indicated by the TMP or TEMP environment variable.  If RC cannot write these 
  9304. temporary files to this directory, it writes them to the current directory. 
  9305.  
  9306.  
  9307. ΓòÉΓòÉΓòÉ 21.2.4. Online Help ΓòÉΓòÉΓòÉ
  9308.  
  9309. To display Resource Compiler help, type RC with no parameters, at a command 
  9310. prompt. The appropriate copyright statement will be displayed, along with a 
  9311. list of Resource Compiler options. You can also display this list by using the 
  9312. command-line options -h or -?. 
  9313.  
  9314. Usage:  rc [<options>] <.RC input file> [<.EXE output file>]
  9315.    or:  rc [<options>] <.RES input file> [<.EXE output file>]
  9316.    or:  rc [<options>] -r <.RC input file> [<.RES output file>]
  9317.  
  9318.         -d <defname>    - Preprocessor define
  9319.         -D <defname>    - Preprocessor define
  9320.         -i <path>       - Include file path
  9321.         -r              - Create .res file
  9322.         -p              - Pack - 386 resources will not cross 64K boundaries
  9323.         -x[1|2]         - Exepack - Compress resources, using method 1 or 2
  9324.         -cp <cp>        - Code page
  9325.         -n              - Don't show logo
  9326.         -w2             - Suppress warnings
  9327.         -?              - Access Help
  9328.         -h              - Access Help
  9329.  
  9330. Environment variables:
  9331.         DBCS=<cp>
  9332.         TMP=<temporary file path>
  9333.         TEMP=<temporary file path>
  9334.         INCLUDE=<include file path>; ...
  9335.  
  9336. Note:  Option -X2 will compress executable files that run only on OS/2 versions 
  9337.        3.0 and later. 
  9338.  
  9339.  
  9340. ΓòÉΓòÉΓòÉ 21.3. Resource Script Files ΓòÉΓòÉΓòÉ
  9341.  
  9342. This topic describes the resource script file used to define your application 
  9343. resources and explains how to compile the file and add the resources to your 
  9344. executable file. 
  9345.  
  9346. Use the Resource Compiler to perform the following actions: 
  9347.  
  9348.      Create a resource script file. 
  9349.  
  9350.      Compile the file. 
  9351.  
  9352.      Add the file to the executable file of your application (optional). 
  9353.  
  9354.  The following sections describe the resource script file and the RC program. 
  9355.  
  9356.  
  9357. ΓòÉΓòÉΓòÉ 21.3.1. About Resource Statements ΓòÉΓòÉΓòÉ
  9358.  
  9359. Resource statements have three basic forms: 
  9360.  
  9361.      Single-line Statements 
  9362.      Multiple-line Statements 
  9363.      Directives 
  9364.  
  9365.  Each resource statement consists of one or more 
  9366.  
  9367.      Keywords 
  9368.      Numbers 
  9369.      Expressions 
  9370.      Character Strings 
  9371.      Constants 
  9372.      File Names 
  9373.  
  9374.  You combine these to define the resource type, identifier, and data. 
  9375.  
  9376.  
  9377. ΓòÉΓòÉΓòÉ 21.3.1.1. Single-line Statements ΓòÉΓòÉΓòÉ
  9378.  
  9379. Single-line statements consist of a keyword identifying the resource type, a 
  9380. number or character string which specifies the resource identifier, and a file 
  9381. name specifying the file containing the resource data.  For example, this ICON 
  9382. statement defines an icon resource: 
  9383.  
  9384.     ICON 1 myicon.ico
  9385.  
  9386. The icon resource has the icon identifier 1.  The file MYICON.ICO contains the 
  9387. icon data.  The same example, using character strings for identifiers is shown 
  9388. below: 
  9389.  
  9390.     ICON "MyIcon" myicon.ico
  9391.  
  9392.  
  9393. ΓòÉΓòÉΓòÉ 21.3.1.2. Multiple-line Statements ΓòÉΓòÉΓòÉ
  9394.  
  9395. Multiple-line statements consist of a keyword identifying the resource type, a 
  9396. number or character string which specifies the resource identifier, and, 
  9397. between the BEGIN and END keywords, additional resource statements that define 
  9398. the resource data.  For example, this MENU statement defines a menu resource: 
  9399.  
  9400.     MENU 1
  9401.     BEGIN
  9402.         MENUITEM "Alpha", 101
  9403.         MENUITEM "Beta",  102
  9404.     END
  9405.  
  9406. The menu identifier is 1.  The menu contains two MENUITEM statements that 
  9407. define the contents of the menu.  In multiple-line statements such as 
  9408. DLGTEMPLATE and WINDOWTEMPLATE, RC allows any level of nested statements. For 
  9409. example, the DLGTEMPLATE and WINDOWTEMPLATE statements typically contain a 
  9410. single DIALOG or FRAME statement.  These statements can contain any number of 
  9411. WINDOW and CONTROL statements; the WINDOW and CONTROL statements can contain 
  9412. additional WINDOW and CONTROL statements; and so on.  The nested statements let 
  9413. you define controls and other child windows for the dialog boxes and windows. 
  9414. If a nested statement creates a child window or control, the parent and owner 
  9415. of the new window is the window created by the containing statement.  (FRAME 
  9416. statements occasionally create frame controls whose parent and owner windows 
  9417. are not the same.) 
  9418.  
  9419.  
  9420. ΓòÉΓòÉΓòÉ 21.3.1.3. Directives ΓòÉΓòÉΓòÉ
  9421.  
  9422. Directives consist of the reserved character # in the first column of a line, 
  9423. followed by the directive keyword and any additional numbers, character 
  9424. strings, or file names.  Valid directives include: 
  9425.  
  9426. #define
  9427. #include
  9428. #if
  9429. #ifdef
  9430. #ifndef
  9431. #else
  9432. #elif
  9433. #endif
  9434. #undef
  9435.  
  9436.  
  9437. ΓòÉΓòÉΓòÉ 21.3.1.4. Keywords ΓòÉΓòÉΓòÉ
  9438.  
  9439. Keywords are words that have a special meaning to the Resource Compiler.  In a 
  9440. statement, keywords specify the resource type, the directive, the memory 
  9441. options, and the beginning and ending of nested statements.  You can use 
  9442. keywords only as specified in the statement syntax. 
  9443.  
  9444. Keywords, except for those specifying directives, can be any combination of 
  9445. uppercase and lowercase letters.  Note that the left and right braces, { and }, 
  9446. are reserved characters.  You can use them in place of the BEGIN and END 
  9447. keywords, respectively. 
  9448.  
  9449.  
  9450. ΓòÉΓòÉΓòÉ 21.3.1.5. Numbers ΓòÉΓòÉΓòÉ
  9451.  
  9452. Numbers are integers that represent coordinates, dimensions, styles, and other 
  9453. numeric data.  You can specify numbers in decimal or in hexadecimal notation: 
  9454.  
  9455.      Decimal numbers must contain decimal digits but can start with a minus 
  9456.       sign (-) when they represent a negative number. 
  9457.  
  9458.      Hexadecimal numbers must contain hexadecimal digits (uppercase or 
  9459.       lowercase) and must start with the characters 0x or 0X. (These begin with 
  9460.       the digit zero.) 
  9461.  
  9462.  The following example shows several numbers represented in decimal and 
  9463.  hexadecimal notation: 
  9464.  
  9465.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9466.   ΓöéDecimal                       ΓöéHexadecimal                   Γöé
  9467.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9468.   Γöé1                             Γöé0x1                           Γöé
  9469.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9470.   Γöé10                            Γöé0xA                           Γöé
  9471.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9472.   Γöé255                           Γöé0xFF                          Γöé
  9473.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9474.   Γöé-1                            Γöé                              Γöé
  9475.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9476.   Γöé65535                         Γöé0xFFFF                        Γöé
  9477.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9478.  
  9479.  Statements that create controls in dialog windows and menu items require that 
  9480.  you specify an identifier for each control or menu item.  Statements that 
  9481.  create controls also require you to specify coordinates and dimensions. You 
  9482.  specify identifiers, coordinates and dimensions using integers or simple 
  9483.  expressions that evaluate to integers in the appropriate range.  This enables 
  9484.  you to specify identifiers, dimensions, and coordinates that are relative to 
  9485.  those of the corresponding dialog window or menu.  A resource identifier 
  9486.  encoded as an expression must resolve to an unsigned integer, not a string. 
  9487.  
  9488.  The ranges specific to number types are listed in the following table. 
  9489.  
  9490.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9491.   Γöé                    ΓöéSigned Range                            ΓöéUnsigned Range                ΓöéStrings             Γöé
  9492.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9493.   ΓöéIdentifiers         Γöé-32768 through 32767                    Γöé1 through 65535               ΓöéYes                 Γöé
  9494.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9495.   ΓöéCoordinates         Γöé-32768 through 32767                    Γöé0 through 65535               ΓöéNo                  Γöé
  9496.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9497.   ΓöéDimensions          ΓöéNot applicable                          Γöé0 through 65535               ΓöéNo                  Γöé
  9498.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9499.  
  9500.  
  9501. ΓòÉΓòÉΓòÉ 21.3.1.6. Expressions ΓòÉΓòÉΓòÉ
  9502.  
  9503. Expressions can be used whenever numbers can be used in a resource script file. 
  9504. An expression is a sequence of operators and operands that are evaluated to 
  9505. derive a numeric result.  The result of an expression can be used whenever 
  9506. Resource Compiler expects a numeric value.  The precedence and associativity of 
  9507. operators will be the same as the standard C programming language.  Expressions 
  9508. may be nested within other expressions. 
  9509.  
  9510. An example of operator precedence is illustrated by the following expression: 
  9511.  
  9512.     3 + 4 * 2
  9513.  
  9514. Because the multiplication operator (*) has a higher precedence than the 
  9515. addition operator (+), the computation 4 * 2 will be performed first. 
  9516.  
  9517. An example of operator associativity is illustrated by the following 
  9518. expression: 
  9519.  
  9520.     8 / 2 * 3
  9521.  
  9522. Because both the division (/) and multiplication (*) operators are at the same 
  9523. precedence level, their left-to-right associative property causes the 
  9524. computation 8 / 2 to be performed first. 
  9525.  
  9526. A Unary Expression consists of one operand and a unary operator. 
  9527.  
  9528.     (-1) is a unary expression.
  9529.  
  9530. A Binary Expression contains two operands separated by one operator. 
  9531.  
  9532.     (3 + 4)  is a binary arithmetic expression having evaluated value as 7.
  9533.     (2 < 1)  is a binary logical expression having evaluated value as 0 (False).
  9534.     (1 < 2)  is a binary logical expression having evaluated value as 1 (True).
  9535.     (2 << 1) is a binary left shift expression having evaluated value as 4.
  9536.     (4 >> 1) is a binary right shift expression having evaluated value as 2.
  9537.     (15 % 4) is a binary modulus expression having evaluated value as 3 (remainder).
  9538.  
  9539. The following example specifies the resource ID as the number 12: 
  9540.  
  9541.     ICON 12 myfile.ico
  9542.  
  9543. This same resource ID can also be specified in the form of an expression, as 
  9544. shown here: 
  9545.  
  9546.     #define BASE_ID         10
  9547.     #define ICON_OFFSET_ID  2
  9548.     ICON (BASE_ID + ICON_OFFSET_ID) myfile.ico
  9549.  
  9550. The constants BASE_ID and ICON_OFFSET_ID will be replaced with their macro 
  9551. values.  The result of the evaluated expression (10 + 2) will be 12 which is 
  9552. the same as in the first example.  The number 10 and 2 are operands in the 
  9553. expression and the symbol plus (+) is the operator applied on operands 10 and 
  9554. 2. 
  9555.  
  9556. Although the enclosing parentheses are not required, it is a good practice to 
  9557. enclose the expression in parentheses indicating that the whole expression 
  9558. constitutes a single parameter. 
  9559.  
  9560. The following table mentions the valid operators that can be used in an 
  9561. expression. 
  9562.  
  9563. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9564. ΓöéOperator            ΓöéSymbol              ΓöéType                Γöé
  9565. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9566. Γöéadd                 Γöé+                   Γöébinary              Γöé
  9567. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9568. Γöéand                 Γöé&                   Γöébinary              Γöé
  9569. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9570. Γöéand if              Γöé&&                  Γöébinary              Γöé
  9571. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9572. Γöébitwise exclusive orΓöé^                   Γöébinary              Γöé
  9573. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9574. Γöébitwise negation    Γöé~                   Γöéunary               Γöé
  9575. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9576. Γöébitwise negation    ΓöéNOT                 Γöéunary               Γöé
  9577. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9578. Γöédivide              Γöé/                   Γöébinary              Γöé
  9579. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9580. Γöéequals              Γöé=                   Γöébinary              Γöé
  9581. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9582. Γöégreater than        Γöé>                   Γöébinary              Γöé
  9583. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9584. Γöéleft shift          Γöé<<                  Γöébinary              Γöé
  9585. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9586. Γöéless than           Γöé<                   Γöébinary              Γöé
  9587. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9588. Γöéless than           Γöé<                   Γöébinary              Γöé
  9589. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9590. Γöélogical negation    Γöé!                   Γöéunary               Γöé
  9591. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9592. Γöéminus               Γöé-                   Γöébinary              Γöé
  9593. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9594. Γöémodulus             Γöé%                   Γöébinary              Γöé
  9595. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9596. Γöémultiply            Γöé*                   Γöébinary              Γöé
  9597. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9598. Γöénot equal           Γöé!=                  Γöébinary              Γöé
  9599. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9600. Γöénot less than       Γöé>=                  Γöébinary              Γöé
  9601. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9602. Γöénot greater than    Γöé<=                  Γöébinary              Γöé
  9603. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9604. Γöéor                  Γöé|                   Γöébinary              Γöé
  9605. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9606. Γöéor else             Γöé||                  Γöébinary              Γöé
  9607. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9608. Γöéright shift         Γöé>>                  Γöébinary              Γöé
  9609. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9610.  
  9611. Note:  The unary NOT operator is used only in the style field of resource 
  9612.        statements.  If operator NOT is encountered with the operands in an 
  9613.        expression, it will be translated as a ~ character. 
  9614.  
  9615. Any typecast with an operand will be ignored and a warning message will be 
  9616. generated.  For example, the expression ((long)3 + (short)2) has typecast 
  9617. (long) with operand 3 and typecast (short) with operand 2. The typecasts have 
  9618. no effect on expression evaluation. 
  9619.  
  9620.  
  9621. ΓòÉΓòÉΓòÉ 21.3.1.7. Character Strings ΓòÉΓòÉΓòÉ
  9622.  
  9623. A character string, which may also be called a string constant or string 
  9624. literal, contains a sequence of characters or escape sequences enclosed in 
  9625. double quotation mark symbols. Character strings represent names, labels, 
  9626. titles, and messages.  The meaning of each character value depends on the code 
  9627. page (character set) defined for the resource script file. 
  9628.  
  9629. A string constant has the form: 
  9630.  
  9631.        ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9632.  >ΓöÇΓöÇΓöÇ"ΓöÇΓö┤Γö¼ΓöÇΓöÇcharacterΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇ"ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ>
  9633.         ΓööΓöÇescape_sequenceΓöÇΓöÿ
  9634.  
  9635. Where: 
  9636.  
  9637.  character The ASCII value of the character must be in the range 1 through 255. 
  9638.  
  9639.  escape_sequence You can represent any member of the character set by an escape 
  9640.            sequence. For example, you can use escape sequences to place such 
  9641.            characters as tab, carriage return, and backspace in the character 
  9642.            string.  An escape sequence contains a backslash (\) character 
  9643.            followed by one of the escape sequence characters: a, b, f, n, r, t, 
  9644.            v, ', ", ?, \ or followed by an octal or hexadecimal number. 
  9645.  
  9646.            A hexadecimal escape sequence contains an character x followed by 
  9647.            one or more hexadecimal digits (0-9, A-F, a-f).  An octal escape 
  9648.            sequence contains one or more octal digits (0-7).  The value of the 
  9649.            hexadecimal or octal number specifies the value of the desired 
  9650.            character. 
  9651.  
  9652.  An escape sequence has the form: 
  9653.  
  9654.    >ΓöÇΓöÇΓöÇ\ΓöÇΓöÇΓö¼ΓöÇescape_sequence_characterΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ><
  9655.           Γö£ΓöÇoctal_digitsΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9656.           ΓööΓöÇxΓöÇhexadecimal_digitsΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9657.  
  9658.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9659.   ΓöéEscape sequence               ΓöéCharacter Represented         Γöé
  9660.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9661.   Γöé\a                            ΓöéAlert (bell)                  Γöé
  9662.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9663.   Γöé\b                            ΓöéBackspace                     Γöé
  9664.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9665.   Γöé\f                            ΓöéForm feed (new page)          Γöé
  9666.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9667.   Γöé\n                            ΓöéNewline                       Γöé
  9668.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9669.   Γöé\nnn                          ΓöéOctal character               Γöé
  9670.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9671.   Γöé\xdd                          ΓöéHexadecimal character         Γöé
  9672.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9673.   Γöé\r                            ΓöéCarriage return               Γöé
  9674.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9675.   Γöé\t                            ΓöéHorizontal tab                Γöé
  9676.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9677.   Γöé\v                            ΓöéVertical tab                  Γöé
  9678.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9679.   Γöé\'                            ΓöéSingle quotation mark         Γöé
  9680.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9681.   Γöé\"                            ΓöéDouble quotation mark         Γöé
  9682.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9683.   Γöé\?                            ΓöéQuestion mark                 Γöé
  9684.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9685.   Γöé\\                            ΓöéBackslash                     Γöé
  9686.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9687.  
  9688.  When you want the backslash to represent itself (rather than the beginning of 
  9689.  an escape sequence), you must use a \\ (two backslashes) escape sequence. 
  9690.  
  9691.  If two consecutive strings appear on the same source line without any space 
  9692.  between these two strings, the strings will be merged with an embedded quote. 
  9693.  
  9694.       /* Source Line 1 */ "String 1""String 2"
  9695.  
  9696.  Here two strings are specified on the same line with no space between the 
  9697.  strings.  These strings will be merged as - String 1"String 2.  Here the 
  9698.  ending double quote of first string and begin double quote of second string 
  9699.  creates the effect of embedded double quotes inside the merged string. These 
  9700.  consecutive double quote characters will be translated as a single double 
  9701.  quote character.  This is the same representation as shown below: 
  9702.  
  9703.       /* Source Line 1 */ "String 1\"String 2"
  9704.  
  9705.  Here an escape sequence \" is used to include double quote character inside 
  9706.  the string.  This is the recommended representation to include a double quote 
  9707.  character inside the string. 
  9708.  
  9709.  If one or more consecutive strings are separated by one or more spaces (the 
  9710.  end of source line is considered as space also), then strings will be 
  9711.  concatenated to produce a single string.  See the following example: 
  9712.  
  9713.       /* Source Line 1 */ "String 3:" "String 4",
  9714.       /* Source Line 2 */ "String 5:"
  9715.       /* Source Line 3 */ "String 6"
  9716.  
  9717.  The two strings "String 3:" and "String 4" specified on source line 1 are on 
  9718.  the same line separated with a single blank.  These two strings will be 
  9719.  concatenated as shown below: 
  9720.  
  9721.       String 3:String 4
  9722.  
  9723.  The two strings "String 5:" and "String 6" specified on source lines 2 and 3 
  9724.  are on different source lines.  These two strings will be concatenated the 
  9725.  same way as with strings specified on source line 1. 
  9726.  
  9727.       String 5:String 6
  9728.  
  9729.  Note that the comma had been specified after the "String 4" in source line 1 
  9730.  to stop the concatenation of strings on source lines 2 and 3.  If that comma 
  9731.  had not been specified, then all the strings on source lines 1, 2, and 3 would 
  9732.  have been merged as shown in the following example: 
  9733.  
  9734.       String 3:String4String5:String6
  9735.  
  9736.  If the string has no ending double quote mark at the end of the source line, 
  9737.  then the physical end of source line will generate a newline character as part 
  9738.  of the string data. 
  9739.  
  9740.       "This string on source line 1
  9741.       is continued on source line 2"
  9742.  
  9743.  In the above example, the newline character (hex 0A) will be inserted after 
  9744.  character 1.  This representation is equivalent to the following example. 
  9745.  
  9746.       "This string on source line 1\nis continued on source line 2"
  9747.  
  9748.  Here the escape sequence \n is used to generate newline character (hex 0A) 
  9749.  between two strings. 
  9750.  
  9751.       "String on Line 1
  9752.         String on Line 2"
  9753.  
  9754.  In the above example, the second string on line 2 is specified with two 
  9755.  leading spaces.  These leading spaces will be part of the string data.  If you 
  9756.  do not want any leading space on the strings that span next lines, then start 
  9757.  the strings in column 1 on the next lines.  This representation is equivalent 
  9758.  to the following example. 
  9759.  
  9760.       "String on Line 1\n  String on Line 2"
  9761.  
  9762.       You can use an another approach like the following example:
  9763.  
  9764.       "String on Line 1\n"
  9765.                      " String on Line 2"
  9766.  
  9767.  This approach is more readable.  Here the concatenation operation will be 
  9768.  performed on both strings without worry about the leading spaces before the 
  9769.  string " String on Line 2".  Leading spaces are provided inside the second 
  9770.  string so you can place second string on the next line at the indented place. 
  9771.  See the following STRINGTABLE statement example. 
  9772.  
  9773.       STRINGTABLE
  9774.       {
  9775.          1, "The data on disk will be erased\n"
  9776.             "Are you sure (Y/N) \?"
  9777.       }
  9778.  
  9779.  You can use the escape sequence \n to represent a new-line character as part 
  9780.  of the string.  You can use the escape \\ to represent a backslash character 
  9781.  as part of the string.  You can use the escape \" to present the double 
  9782.  quotation mark symbol as part of the string.  You can include any ASCII 
  9783.  character in a character string by specifying \xdd, where dd is the 
  9784.  hexadecimal representation of an ASCII character.  An error message is issued 
  9785.  if an escape sequence is not recognized. 
  9786.  
  9787.  In addition, when character strings are used as resource identifiers 
  9788.  additional rules apply: 
  9789.  
  9790.      They must be enclosed in double quotation marks (").  If a double 
  9791.       quotation mark is needed inside the string, it is encoded as two 
  9792.       consecutive double quotation marks. 
  9793.  
  9794.      They cannot contain any character larger than 0x7F. 
  9795.  
  9796.      They must be delimited by whitespace, just as an integer ID is. 
  9797.  
  9798.      Resources whose resource ID is compiled into a 16-bit value in the binary 
  9799.       data area, such as MENUITEM with its menu-id field, or HELPSUBITEM with 
  9800.       its child-window-id field, cannot use character strings for IDs. 
  9801.  
  9802.      They can contain an embedded newline character by continuing the string 
  9803.       on the following line without closing the string.  When the input file 
  9804.       represents newlines as 0x0D+0x0A or by 0x0D+0x0D+0x0A, the string is 
  9805.       compiled with the sequence 0x0A to represent the newline. 
  9806.  
  9807.      Duplicate string IDs are not permitted for resources of the same type. 
  9808.       However, the same string resource identifier can be used to identify 
  9809.       resources of different types. 
  9810.  
  9811.       When the Resource Compiler is compiling a script file and encounters more 
  9812.       than one resource of the same type having the same string ID, it will 
  9813.       generate an error message and stop compiling the file.  When the Resource 
  9814.       Compiler is binding a .RES file and encounters more than one resource of 
  9815.       the same type with the same string ID, it will generate a warning message 
  9816.       and ignore the second resource identifier; only the first resource having 
  9817.       the duplicated identifier will be bound to the file. 
  9818.  
  9819.  
  9820. ΓòÉΓòÉΓòÉ 21.3.1.8. Constants ΓòÉΓòÉΓòÉ
  9821.  
  9822. Constants are names that have been assigned values by using a #define directive 
  9823. or a -D command-line option.  A constant can represent a number, a character 
  9824. string, or other data.  Most resource statements in a resource script file use 
  9825. constants, and many use the constants defined in system header files.  For this 
  9826. reason, you should consider using the #include directive to include the 
  9827. appropriate system header file in your resource script file. 
  9828.  
  9829.  
  9830. ΓòÉΓòÉΓòÉ 21.3.1.9. File Names ΓòÉΓòÉΓòÉ
  9831.  
  9832. File names are OS/2 file names.  If the specified file is not in the current 
  9833. directory, you must specify the drive, directory, and file name. 
  9834.  
  9835.  
  9836. ΓòÉΓòÉΓòÉ 21.3.1.10. Binary Resource Files ΓòÉΓòÉΓòÉ
  9837.  
  9838. The binary resource file created by the Resource Compiler consists of one or 
  9839. more resource entries, each in the following form: 
  9840.  
  9841.   struct {
  9842.       UCHAR  fResType;
  9843.       USHORT usResType;
  9844.       union {
  9845.           struct {
  9846.               UCHAR  fResID;
  9847.               USHORT resid;
  9848.           };
  9849.           UCHAR resname[];
  9850.       };
  9851.       USHORT fsOptions;
  9852.       ULONG  cb;
  9853.       BYTE   bytes[1];
  9854.   };
  9855.  
  9856. The fields in each entry have the following meanings: 
  9857.  
  9858.  fRestype              Specifies whether the resource-type identifier is a 
  9859.                        string or an integer. For OS/2, the resource type is 
  9860.                        always an integer and this field is set to 0xFF. 
  9861.  
  9862.  usResType             Specifies the resource-type identifier. This value is a 
  9863.                        signed integer in the range -32768 through 32767, an 
  9864.                        unsigned integer in the range of 1 through 65535, or a 
  9865.                        character string. The following resource types are 
  9866.                        predefined: 
  9867.  
  9868.                        RT_ACCELTABLE              Accelerator table 
  9869.                        RT_BITMAP                  Bitmap 
  9870.                        RT_CHARTBL                 Character table 
  9871.                        RT_DIALOG                  Dialog template 
  9872.                        RT_DISPLAYINFO             Display information 
  9873.                        RT_DLGINCLUDE              Dialog include-file name 
  9874.                        RT_FKALONG                 Long-form function-key area 
  9875.                        RT_FKASHORT                Short-form function-key area 
  9876.                        RT_FONT                    Font 
  9877.                        RT_FONTDIR                 Font directory 
  9878.                        RT_HELPSUBTABLE            Help subtable 
  9879.                        RT_HELPTABLE               Help table 
  9880.                        RT_KEYTBL                  Key table 
  9881.                        RT_MENU                    Menu template 
  9882.                        RT_MESSAGE                 Error-message table 
  9883.                        RT_POINTER                 Mouse-pointer shape 
  9884.                        RT_RCDATA                  Binary data 
  9885.                        RT_STRING                  String table 
  9886.                        RT_VKEYTBL                 Virtual key table 
  9887.                        RT_RESNAMES                String ID table 
  9888.  
  9889.  fResID                Specifies whether the resource identifier is a string or 
  9890.                        an integer. For the OS/2 operating system, this field is 
  9891.                        set to 0xFF to indicate that the resource identifier is 
  9892.                        an integer. 
  9893.  
  9894.  resid                 Specifies the resource identifier. This value is an 
  9895.                        unsigned integer in the range of 1 through 65535. 
  9896.  
  9897.  resname               Specifies a string resource identifier as a sequence of 
  9898.                        characters ending with a 0x00 value. 
  9899.  
  9900.  fsOptions             Specifies the load and memory options.  This value can 
  9901.                        be a combination of the following: 
  9902.  
  9903.                        0x0010           MOVEABLE resource.  If not given, the 
  9904.                                         resource is FIXED. 
  9905.                        0x0040           PRELOAD resource.  If not given, the 
  9906.                                         resource is LOADONCALL. 
  9907.                        0x1000           DISCARDABLE resource. 
  9908.  
  9909.  cb                    Specifies the size of the resource (in bytes). 
  9910.  
  9911.  bytes                 Contains the resource. 
  9912.  
  9913.  Note:  There is a size limitation of 65280 bytes for a binary resource file. 
  9914.  
  9915.  
  9916. ΓòÉΓòÉΓòÉ 21.3.2. Statements and Directives ΓòÉΓòÉΓòÉ
  9917.  
  9918. The following statements and directives are used by the Resource Compiler (RC): 
  9919.  
  9920.       ACCELTABLE Statement 
  9921.       ASSOCTABLE Statement 
  9922.       AUTOCHECKBOX Statement 
  9923.       AUTORADIOBUTTON Statement 
  9924.       BITMAP Statement 
  9925.       CHECKBOX Statement 
  9926.       CODEPAGE Statement 
  9927.       COMBOBOX Statement 
  9928.       CONTAINER Statement 
  9929.       CONTROL Statement 
  9930.       CTEXT Statement 
  9931.       CTLDATA Statement 
  9932.       DEFAULTICON Statement 
  9933.       define Directive 
  9934.       DEFPUSHBUTTON Statement 
  9935.       DIALOG Statement 
  9936.       DLGINCLUDE Statement 
  9937.       DLGTEMPLATE Statement 
  9938.       EDITTEXT Statement 
  9939.       elif Directive 
  9940.       else Directive 
  9941.       endif Directive 
  9942.       ENTRYFIELD Statement 
  9943.       FONT Statement 
  9944.       FRAME Statement 
  9945.       GROUPBOX Statement 
  9946.       HELPITEM Statement 
  9947.       HELPSUBITEM Statement 
  9948.       HELPSUBTABLE Statement 
  9949.       HELPTABLE Statement 
  9950.       ICON Statement (Resource) 
  9951.       ICON Statement (Control) 
  9952.       if Directive 
  9953.       ifdef Directive 
  9954.       ifndef Directive 
  9955.       include Directive 
  9956.       LISTBOX Statement 
  9957.       LTEXT Statement 
  9958.       MENU Statement 
  9959.       MENUITEM Statement 
  9960.       MESSAGETABLE Statement 
  9961.       MLE Statement 
  9962.       NOTEBOOK Statement 
  9963.       POINTER Statement 
  9964.       PRESPARAMS Statement 
  9965.       PUSHBUTTON Statement 
  9966.       RADIOBUTTON Statement 
  9967.       RCDATA Statement 
  9968.       RCINCLUDE Statement 
  9969.       RESOURCE Statement 
  9970.       RTEXT Statement 
  9971.       SLIDER Statement 
  9972.       SPINBUTTON Statement 
  9973.       STRINGTABLE Statement 
  9974.       SUBITEMSIZE Statement 
  9975.       SUBMENU Statement 
  9976.       undef Directive 
  9977.       VALUESET Statement 
  9978.       WINDOW Statement 
  9979.       WINDOWTEMPLATE Statement 
  9980.  
  9981.  
  9982. ΓòÉΓòÉΓòÉ 21.3.2.1. ACCELTABLE Statement ΓòÉΓòÉΓòÉ
  9983.  
  9984. Syntax: 
  9985.  
  9986.   ACCELTABLE acceltable-id [mem-option] [code-page]
  9987.   BEGIN
  9988.   key-value, command[, accelerator-options]...
  9989.       .
  9990.       .
  9991.       .
  9992.   END
  9993.  
  9994. Description 
  9995.  
  9996. The ACCELTABLE statement creates a table of accelerators for an application. 
  9997. An accelerator is a keystroke that gives the user a quick way to choose a 
  9998. command from a menu or carry out some other task.  An accelerator table can be 
  9999. loaded when needed from the executable file by using the WinLoadAccelTable 
  10000. function. 
  10001.  
  10002. You can provide any number of ACCELTABLE statements in a resource script file. 
  10003. Each statement must specify a unique table identifier.  You can provide any 
  10004. number of accelerator definitions in an accelerator table; however, no two 
  10005. definitions in a table can specify the same key. 
  10006.  
  10007. Each accelerator definition must specify a key value and command. The 
  10008. WinSetAccelTable function used in the application translates the accelerator 
  10009. keystroke into a WM_COMMAND, WM_HELP, or WM_SYSCOMMAND message that has the 
  10010. corresponding command value.  The message type depends on the 
  10011. accelerator-option field. 
  10012.  
  10013.  acceltable-id     Specifies the accelerator-table identifier. This value must 
  10014.                    be an unsigned integer in the range of 1 through 65535, a 
  10015.                    simple expression that evaluates to a value in these ranges, 
  10016.                    or a character string. Each accelerator table in a resource 
  10017.                    script file must have a unique identifier. 
  10018.  mem-option        Specifies how the system manages the resource when it is in 
  10019.                    memory.  This value must be one of the following: 
  10020.                    Option              Meaning 
  10021.                    FIXED               System keeps the resource at a fixed 
  10022.                                        memory location. 
  10023.                    MOVEABLE            System moves the resource as necessary 
  10024.                                        to compact memory.  This is the default 
  10025.                                        option. 
  10026.                    DISCARDABLE         System discards the resource if it is no 
  10027.                                        longer needed. 
  10028.  code-page         Specifies a code page value. For a list of valid code pages 
  10029.                    see CODEPAGE Statement. 
  10030.  key-value         Specifies the character, scan, or virtual-key code of the 
  10031.                    accelerator key.  The meaning depends on the 
  10032.                    accelerator-options field.  The key-value field must be a 
  10033.                    single character enclosed in double-quotation marks or an 
  10034.                    integer in the range 0 through 255. If you specify an 
  10035.                    integer, you must specify the CHAR, SCANCODE, or VIRTUALKEY 
  10036.                    accelerator option; otherwise, the default option is CHAR. 
  10037.                    Integers must be in decimal or hexadecimal notation. 
  10038.  command           Specifies the command value for the corresponding 
  10039.                    WM_COMMAND, WM_HELP, or WM_SYSCOMMAND message.  This value 
  10040.                    must be a signed integer in the range 0 through 65535, or a 
  10041.                    simple expression that evaluates to an integer in that 
  10042.                    range. 
  10043.  accelerator-options Specifies the accelerator type.  This value can be a 
  10044.                    combination of the following: 
  10045.                    VIRTUALKEY           Specifies that the key-value field is a 
  10046.                                         virtual-key code. 
  10047.                    SCANCODE             Specifies that the key-value field is a 
  10048.                                         keyboard scan code. 
  10049.                    CHAR                 Specifies that the key-value field is a 
  10050.                                         character code. 
  10051.                    SHIFT                Specifies that the user must press the 
  10052.                                         Shift key and the key corresponding to 
  10053.                                         the key-value field to generate the 
  10054.                                         accelerator. 
  10055.                    CONTROL              Specifies that the user must press the 
  10056.                                         Ctrl key and the key corresponding to 
  10057.                                         the key-value field to generate the 
  10058.                                         accelerator. 
  10059.                    ALT                  Specifies that the user must press the 
  10060.                                         Alt key and the key corresponding to 
  10061.                                         the key-value field to generate the 
  10062.                                         accelerator. 
  10063.                    LONEKEY              Specifies that the user needs to press 
  10064.                                         only the key corresponding to the 
  10065.                                         key-value field to generate the 
  10066.                                         accelerator. 
  10067.                    SYSCOMMAND           Specifies that the accelerator 
  10068.                                         translates to a WM_SYSCOMMAND message. 
  10069.                                         If you do not include this option, the 
  10070.                                         accelerator translates to a WM_COMMAND 
  10071.                                         message. 
  10072.                    HELP                 Specifies that the accelerator 
  10073.                                         translates to a WM_HELP message.  If 
  10074.                                         you do not include this option, the 
  10075.                                         accelerator translates to a WM_COMMAND 
  10076.                                         message. 
  10077.  
  10078.  Note:  VIRTUALKEY, SCANCODE, and CHAR are mutually exclusive. SYSCOMMAND and 
  10079.  HELP are also mutually exclusive. 
  10080.  
  10081.  Comments 
  10082.  
  10083.  If two accelerators use the same key with different Shift, Control, or ALT 
  10084.  options, you should specify the more restrictive accelerator first in the 
  10085.  table.  For example, you should place Shift+Enter before Enter. 
  10086.  
  10087.  If you include the OS2.H header file, you can use the following constants to 
  10088.  specify the accelerator options: 
  10089.  
  10090.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10091.   ΓöéAF_ALT              ΓöéAF_CHAR             ΓöéAF_CONTROL          Γöé
  10092.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10093.   ΓöéAF_HELP             ΓöéAF_LONEKEY          ΓöéAF_SCANCODE         Γöé
  10094.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10095.   ΓöéAF_SHIFT            ΓöéAF_SYSCOMMAND       ΓöéAF_VIRTUALKEY       Γöé
  10096.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10097.  
  10098.  To combine these constants, you must use the bitwise OR (|) operator. 
  10099.  
  10100.  Example 
  10101.  
  10102.  This example creates an accelerator table whose accelerator-table identifier 
  10103.  is 1.  The table contains two accelerators:  Ctrl+S and Ctrl+G.  These 
  10104.  accelerators generate WM_COMMAND messages with values of 101 and 102, 
  10105.  respectively, when the user presses the corresponding keys. 
  10106.  
  10107.     ACCELTABLE 1
  10108.     BEGIN
  10109.         "S", 101, CONTROL
  10110.         "G", 102, CONTROL
  10111.     END
  10112.  
  10113.  
  10114. ΓòÉΓòÉΓòÉ 21.3.2.2. ASSOCTABLE Statement ΓòÉΓòÉΓòÉ
  10115.  
  10116. Syntax: 
  10117.  
  10118.   ASSOCTABLE assoctable-id [load-option][mem-option] [code-page]
  10119.   BEGIN
  10120.   association-name, file-match-string[, extended-attribute-flag]
  10121.      [, icon-filename]
  10122.     .
  10123.     .
  10124.     .
  10125.   END
  10126.  
  10127. Description 
  10128.  
  10129. The ASSOCTABLE statement defines a file-association table for an application. 
  10130. This table associates the data files that an application creates with the 
  10131. executable file of the application.  When the user selects one of these data 
  10132. files from File Manager, the associated application begins executing. 
  10133.  
  10134. A file-association table can also associate icons with the data files that an 
  10135. application creates.  The shell uses these icons to identify the data files 
  10136. graphically.  Because a file-association table associates icons by file type, 
  10137. all data files having the same file type have the same icon. 
  10138.  
  10139. You can provide any number of ASSOCTABLE statements in a resource script file, 
  10140. but each statement must specify a unique assoctable-id value.  The 
  10141. file-association tables are written not only to the resources within your 
  10142. executable file, but also to the .ASSOC extended attribute.  However, only the 
  10143. last file-association table specified in the resource script file is actually 
  10144. written to the extended attribute. 
  10145.  
  10146.  assoctable-id     Specifies the association-table identifier. This value must 
  10147.                    be an unsigned integer in the range of 1 through 65535, or a 
  10148.                    simple expression that evaluates to a value in these ranges. 
  10149.                    Character strings cannot be used as resource identifiers for 
  10150.                    this statement. 
  10151.  load-option       Specifies when the system loads the resource from the 
  10152.                    executable file into memory.  This value must be one of the 
  10153.                    following: 
  10154.                    PRELOAD             System loads the resource when the 
  10155.                                        application starts. 
  10156.                    LOADONCALL          System loads the resource when the 
  10157.                                        application calls the DosGetResource or 
  10158.                                        DosGetResource2 function.  This is the 
  10159.                                        default option. 
  10160.  mem-option        Specifies how the system manages the resource when it is in 
  10161.                    memory.  This value must be one of the following: 
  10162.                    FIXED               System keeps the resource at a fixed 
  10163.                                        memory location. 
  10164.                    MOVEABLE            System moves the resource as necessary 
  10165.                                        to compact memory.  This is the default 
  10166.                                        option. 
  10167.                    DISCARDABLE         System discards the resource if it is no 
  10168.                                        longer needed. 
  10169.  code-page         Specifies a code page value.  For a list of valid code pages 
  10170.                    see CODEPAGE Statement. 
  10171.  association-name  Specifies the name of the file type the application 
  10172.                    recognizes.  This field must contain zero or more characters 
  10173.                    enclosed in double quotation marks. 
  10174.  
  10175.                    Character values must be in the range 1 through 255.  If a 
  10176.                    double quotation mark is required in the name, you must 
  10177.                    include the double quotation mark twice. 
  10178.  file-match-string Specifies the file-matching string of a particular type of 
  10179.                    data file that the application creates. This field must 
  10180.                    contain zero or more characters enclosed in double quotation 
  10181.                    marks. You can only use characters that are valid in OS/2 
  10182.                    file names and extensions and the OS/2 wildcard characters 
  10183.                    question mark (?) and asterisk (*). 
  10184.  extended-attribute-flag Specifies the extended-attribute options. This value 
  10185.                    can be a combination of the following: 
  10186.                    EAF_DEFAULTOWNER           Specifies that the application 
  10187.                                               containing the file-association 
  10188.                                               table starts when the user 
  10189.                                               selects any file matching the 
  10190.                                               file-match-string field from File 
  10191.                                               Manager. 
  10192.                    EAF_REUSEICON              Specifies that the icon defined 
  10193.                                               in the previous entry of the 
  10194.                                               file-association table is used as 
  10195.                                               the icon for the current 
  10196.                                               data-file type. 
  10197.                    EAF_UNCHANGEABLE           Specifies that the entry should 
  10198.                                               not be edited. 
  10199.  icon-filename     Specifies the name of the file containing an icon. File 
  10200.                    Manager uses this icon to represent all application-created 
  10201.                    data files matching the file-match-string field.  The file 
  10202.                    must be in the current directory. 
  10203.  
  10204.  
  10205. ΓòÉΓòÉΓòÉ 21.3.2.3. AUTOCHECKBOX Statement ΓòÉΓòÉΓòÉ
  10206.  
  10207. Syntax: 
  10208.  
  10209.   AUTOCHECKBOX text, id, x, y, width, height[, style]
  10210.  
  10211. The AUTOCHECKBOX statement creates an automatic-check-box control. The control 
  10212. is a small rectangle (check box) that contains an X when the user selects it. 
  10213. The specified text is displayed to the right of the check box.  An X appears in 
  10214. the square when the user first selects the control and disappears the next time 
  10215. the user selects it.  The AUTOCHECKBOX statement, which you can use only in a 
  10216. DIALOG or WINDOW statement, defines the text, identifier, dimensions, and 
  10217. attributes of a control window.  The predefined class for this control is 
  10218. WC_BUTTON. If you do not specify the style, the default style is 
  10219. BS_AUTOCHECKBOX and WS_TABSTOP. 
  10220.  
  10221.  text    Specifies text that is displayed to the right of the control.  This 
  10222.          field must contain zero or more characters enclosed in double 
  10223.          quotation marks.  Character values must be in the range 1 through 255. 
  10224.          If a double quotation mark is required in the text, you must include 
  10225.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  10226.          indicates that the following character is used as a mnemonic character 
  10227.          for the control.  When the control is displayed, the tilde is not 
  10228.          shown, but the mnemonic character is underlined.  The user can choose 
  10229.          the control by pressing the key corresponding to the underlined 
  10230.          mnemonic character. 
  10231.  id      Specifies the control identifier. This value must be a signed integer 
  10232.          in the range -32768 through 32767, an unsigned integer in the range of 
  10233.          1 through 65535, or a simple expression that evaluates to a value in 
  10234.          these ranges. 
  10235.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10236.          This value must be a signed integer in the range -32768 through 32767 
  10237.          or an expression consisting of integers and the addition (+) or 
  10238.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10239.          units and is relative to the origin of the dialog box, window, or 
  10240.          control containing the specified control. 
  10241.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10242.          This value must be a signed integer in the range -32768 through 32767 
  10243.          or an expression consisting of integers and the addition (+) or 
  10244.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10245.          units and is relative to the origin of the dialog box, window, or 
  10246.          control containing the specified control. 
  10247.  width   Specifies the width of the control.  This value must be an integer in 
  10248.          the range 0 through 65535 or an expression consisting of integers and 
  10249.          the addition (+) or subtraction (-) operator.  The width is in 
  10250.          n-character units. 
  10251.  height  Specifies the height of the control.  This value must be an integer in 
  10252.          the range 0 through 65535 or an expression consisting of integers and 
  10253.          the addition (+) or subtraction (-) operator.  The height is in 
  10254.          1/8-character units. 
  10255.  style   Specifies the control styles.  This value can be a combination of the 
  10256.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  10257.          operator to combine styles. 
  10258.  
  10259.  Example 
  10260.  
  10261.  This example creates an automatic-check-box control that is labeled "Italic." 
  10262.  
  10263.     AUTOCHECKBOX "Italic", 101, 10, 10, 100, 100
  10264.  
  10265.  
  10266. ΓòÉΓòÉΓòÉ 21.3.2.4. AUTORADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  10267.  
  10268. Syntax: 
  10269.  
  10270.   AUTORADIOBUTTON text, id, x, y, width, height[, style]
  10271.  
  10272. The AUTORADIOBUTTON statement creates an automatic-radio-button control.  This 
  10273. control is a small circle with the given text displayed to its right.  The 
  10274. control highlights the circle and sends a message to its parent window when the 
  10275. user selects the button.  The control also removes the selection from any other 
  10276. automatic-radio-button controls in the same group.  When the user selects the 
  10277. button again, the control removes the highlight before sending a message.  The 
  10278. AUTORADIOBUTTON statement, which you can use only in a DIALOG or WINDOW 
  10279. statement, defines the text, identifier, dimensions, and attributes of a 
  10280. control window.  The predefined class for this control is WC_BUTTON.  If you do 
  10281. not specify a style, the default style is BS_AUTORADIOBUTTON. 
  10282.  
  10283.  text    Specifies text that is displayed to the right of the control.  This 
  10284.          field must contain zero or more characters enclosed in double 
  10285.          quotation marks.  Character values must be in the range 1 through 255. 
  10286.          If a double quotation mark is required in the text, you must include 
  10287.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  10288.          indicates that the following character is used as a mnemonic character 
  10289.          for the control.  When the control is displayed, the tilde is not 
  10290.          shown, but the mnemonic character is underlined. The user can choose 
  10291.          the control by pressing the key corresponding to the underlined 
  10292.          mnemonic character. 
  10293.  id      Specifies the control identifier. This value must be a signed integer 
  10294.          in the range -32768 through 32767, an unsigned integer in the range of 
  10295.          1 through 65535, or a simple expression that evaluates to a value in 
  10296.          these ranges. 
  10297.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10298.          This value must be a signed integer in the range -32768 through 32767 
  10299.          or an expression consisting of integers and the addition (+) or 
  10300.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10301.          units and is relative to the origin of the dialog box, window, or 
  10302.          control containing the specified control. 
  10303.  y       This value must be a signed integer in the range -32768 through 32767 
  10304.          or an expression consisting of integers and the addition (+) or 
  10305.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10306.          units and is relative to the origin of the dialog box, window, or 
  10307.          control containing the specified control. 
  10308.  width   Specifies the width of the control.  This value must be an integer in 
  10309.          the range 0 through 65535 or an expression consisting of integers and 
  10310.          the addition (+) or subtraction (-) operator.  The width is in 
  10311.          n-character units. 
  10312.  height  Specifies the height of the control.  This value must be an integer in 
  10313.          the range 0 through 65535 or an expression consisting of integers and 
  10314.          the addition (+) or subtraction (-) operator.  The height is in 
  10315.          1/8-character units. 
  10316.  style   Specifies the control styles.  This value can be a combination of the 
  10317.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  10318.          operator to combine styles. 
  10319.  
  10320.  Example 
  10321.  
  10322.  This example creates an automatic-radio-button control that is labeled 
  10323.  "Italic." 
  10324.  
  10325.     AUTORADIOBUTTON "Italic", 101, 10, 10, 24, 50
  10326.  
  10327.  
  10328. ΓòÉΓòÉΓòÉ 21.3.2.5. BITMAP Statement ΓòÉΓòÉΓòÉ
  10329.  
  10330. Syntax: 
  10331.  
  10332.   BITMAP bitmap-id [load-option] [mem-option] [codepage] filename
  10333.  
  10334. The BITMAP statement defines a bit map resource for an application.  A bit map 
  10335. resource, typically created using the Icon Editor, is a custom bit map that an 
  10336. application uses in its display or as an item in a menu.  The BITMAP statement 
  10337. copies the bit-map resource from the file specified in the filename field and 
  10338. adds it to the application's other resources.  A bit-map resource can be loaded 
  10339. from the executable file when needed by using the GpiLoadBitmap function. 
  10340.  
  10341. You can provide any number of BITMAP statements in a resource script file, but 
  10342. each statement must specify a unique bitmap-id value. 
  10343.  
  10344.  bitmap-id         Specifies the bit-map-resource identifier. This value must 
  10345.                    be an unsigned integer in the range of 1 through 65535, a 
  10346.                    simple expression that evaluates to a value in these ranges, 
  10347.                    or a character string. 
  10348.  load-option       Specifies when the system loads the resource from the 
  10349.                    executable file into memory.  This value must be one of the 
  10350.                    following: 
  10351.                    PRELOAD             System loads the resource when the 
  10352.                                        application starts. 
  10353.                    LOADONCALL          System loads the resource when the 
  10354.                                        application calls the GpiLoadBitmap 
  10355.                                        function.  This is the default option. 
  10356.  mem-option        Specifies how the system manages the resource when it is in 
  10357.                    memory.  This value must be one of the following: 
  10358.                    FIXED               System keeps the resource at a fixed 
  10359.                                        memory location. 
  10360.                    MOVEABLE            System moves the resource as necessary 
  10361.                                        to compact memory.  This is the default 
  10362.                                        option. 
  10363.                    DISCARDABLE         System discards the resource if it is no 
  10364.                                        longer needed. 
  10365.  codepage          Specifies a code page value. For a list of valid code pages 
  10366.                    see CODEPAGE Statement. 
  10367.  filename          Specifies the name of the file containing the icon resource. 
  10368.                    If the file is not in the current directory, filename must 
  10369.                    be preceded by a full path. 
  10370.  
  10371.  Example 
  10372.  
  10373.  This example defines a bit map whose bit-map identifier is 12. The bit-map 
  10374.  resource is copied from the file CUSTOM.BMP. 
  10375.  
  10376.     BITMAP 12 custom.bmp
  10377.  
  10378.  
  10379. ΓòÉΓòÉΓòÉ 21.3.2.6. CHECKBOX Statement ΓòÉΓòÉΓòÉ
  10380.  
  10381. Syntax: 
  10382.  
  10383.   CHECKBOX text, id, x, y, width, height[, style]
  10384.  
  10385. The CHECKBOX statement creates a check-box control.  The control is a small 
  10386. rectangle (check box) that has the specified text displayed to the right.  The 
  10387. control highlights the rectangle and sends a message to its parent window when 
  10388. the user selects the control.  The CHECKBOX statement, which you can use only 
  10389. in a DIALOG or WINDOW statement, defines the text, identifier, dimensions, and 
  10390. attributes of a control window.  The predefined class for this control is 
  10391. WC_BUTTON.  If you do not specify a style, the default style is BS_CHECKBOX and 
  10392. WS_TABSTOP. 
  10393.  
  10394.  text    Specifies text that is displayed to the right of the control.  This 
  10395.          field must contain zero or more characters enclosed in double 
  10396.          quotation marks.  Character values must be in the range 1 through 255. 
  10397.          If a double quotation mark is required in the text, you must include 
  10398.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  10399.          indicates that the following character is used as a mnemonic character 
  10400.          for the control.  When the control is displayed, the tilde is not 
  10401.          shown, but the mnemonic character is underlined.  The user can choose 
  10402.          the control by pressing the key corresponding to the underlined 
  10403.          mnemonic character. 
  10404.  id      Specifies the control identifier. This value must be a signed integer 
  10405.          in the range -32768 through 32767, an unsigned integer in the range of 
  10406.          1 through 65535, or a simple expression that evaluates to a value in 
  10407.          these ranges. 
  10408.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10409.          This value must be a signed integer in the range -32768 through 32767 
  10410.          or an expression consisting of integers and the addition (+) or 
  10411.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10412.          units and is relative to the origin of the dialog box, window, or 
  10413.          control containing the specified control. 
  10414.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10415.          This value must be a signed integer in the range -32768 through 32767 
  10416.          or an expression consisting of integers and the addition (+) or 
  10417.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10418.          units and is relative to the origin of the dialog box, window, or 
  10419.          control containing the specified control. 
  10420.  width   Specifies the width of the control.  This value must be an integer in 
  10421.          the range 0 through 65535 or an expression consisting of integers and 
  10422.          the addition (+) or subtraction (-) operator.  The width is in 
  10423.          n-character units. 
  10424.  height  Specifies the height of the control.  This value must be an integer in 
  10425.          the range 0 through 65535 or an expression consisting of integers and 
  10426.          the addition (+) or subtraction (-) operator.  The height is in 
  10427.          1/8-character units. 
  10428.  style   Specifies the control styles.  This value can be a combination of the 
  10429.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  10430.          operator to combine styles. 
  10431.  
  10432.  Example 
  10433.  
  10434.  This example creates a check-box control that is labeled "Italic." 
  10435.  
  10436.     CHECKBOX "Italic", 101, 10, 10, 100, 100
  10437.  
  10438.  
  10439. ΓòÉΓòÉΓòÉ 21.3.2.7. CODEPAGE Statement ΓòÉΓòÉΓòÉ
  10440.  
  10441. Syntax: 
  10442.  
  10443.   CODEPAGE codepage-id
  10444.  
  10445. The CODEPAGE statement sets the code page for all subsequent resources.  The 
  10446. code page specifies the character set used for characters in the resource. 
  10447.  
  10448. If the CODEPAGE statement is not given in a resource script file, RC uses the 
  10449. code page set up for the individual system.  If more than one CODEPAGE 
  10450. statement is given in the file, each CODEPAGE statement applies to the resource 
  10451. statements between it and the next CODEPAGE statement. 
  10452.  
  10453.  codepage-id       Identifies the code page to be used for subsequent 
  10454.                    resources. For a complete list of supported code pages, 
  10455.                    refer to the "COUNTRYCODE" section of the Control Program 
  10456.                    Programming Guide and Reference. 
  10457.  
  10458.  Comments 
  10459.  
  10460.  You may also specify a code page by placing a code-page identifier in the 
  10461.  load-options or memory-options field of any RC statement that uses those 
  10462.  fields. 
  10463.  
  10464.  Example 
  10465.  
  10466.  In this example, the code page for the character-string resources is set to 
  10467.  Portuguese (860). 
  10468.  
  10469.     CODEPAGE 860
  10470.  
  10471.     STRINGTABLE
  10472.     BEGIN
  10473.         1 "Filename not found"
  10474.         2 "Cannot open file for reading"
  10475.     END
  10476.  
  10477.  
  10478. ΓòÉΓòÉΓòÉ 21.3.2.8. COMBOBOX Statement ΓòÉΓòÉΓòÉ
  10479.  
  10480. Syntax: 
  10481.  
  10482.   COMBOBOX text, id, x, y, width, height[, style]
  10483.  
  10484. The COMBOBOX statement creates a combination-box control.  This control 
  10485. combines a list-box control with an entry-field control.  It allows the user to 
  10486. place the selected item from a list box into an entry field. 
  10487.  
  10488. The COMBOBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  10489. defines the text, identifier, dimensions, and attributes of a control window. 
  10490. The predefined class for this control is WC_COMBOBOX. If you do not specify a 
  10491. style, the default style is CBS_SIMPLE, WS_GROUP, WS_TABSTOP, and WS_VISIBLE. 
  10492.  
  10493.  text    Specifies text that is displayed in the entry field of the control. 
  10494.          This field must contain zero or more characters enclosed in double 
  10495.          quotation marks.  Character values must be in the range 1 through 255. 
  10496.          If a double quotation mark is required in the text, you must include 
  10497.          the double quotation mark twice. 
  10498.  id      Specifies the control identifier. This value must be a signed integer 
  10499.          in the range -32768 through 32767, an unsigned integer in the range of 
  10500.          1 through 65535, or a simple expression that evaluates to a value in 
  10501.          these ranges. 
  10502.  x       Specifies the x-coordinate of the lower-left corner of the control 
  10503.          This value must be a signed integer in the range -32768 through 32767 
  10504.          or an expression consisting of integers and the addition (+) or 
  10505.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10506.          units and is relative to the origin of the dialog box, window, or 
  10507.          control containing the specified control. 
  10508.  y       Specifies the y-coordinate of the lower-left corner of the control 
  10509.          This value must be a signed integer in the range -32768 through 32767 
  10510.          or an expression consisting of integers and the addition (+) or 
  10511.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10512.          units and is relative to the origin of the dialog box, window, or 
  10513.          control containing the specified control. 
  10514.  width   Specifies the width of the control.  This value must be an integer in 
  10515.          the range 0 through 65535 or an expression consisting of integers and 
  10516.          the addition (+) or subtraction (-) operator.  The width is in 
  10517.          n-character units. 
  10518.  height  Specifies the height of the control.  This value must be an integer in 
  10519.          the range 0 through 65535 or an expression consisting of integers and 
  10520.          the addition (+) or subtraction (-) operator.  The height is in 
  10521.          1/8-character units. 
  10522.  style   Specifies the control styles.  This value can be a combination of the 
  10523.          styles specified for WC_COMBOBOX. You can use the bitwise OR (|) 
  10524.          operator to combine styles. 
  10525.  
  10526.  Example 
  10527.  
  10528.  This example creates a combination-box control. 
  10529.  
  10530.     COMBOBOX "", 101, 10, 10, 24, 50
  10531.  
  10532.  
  10533. ΓòÉΓòÉΓòÉ 21.3.2.9. CONTAINER Statement ΓòÉΓòÉΓòÉ
  10534.  
  10535. Syntax: 
  10536.  
  10537.   CONTAINER  id, x, y, width, height [,style]
  10538.  
  10539. The CONTAINER statement creates a container control within a dialog window. 
  10540. The container control is a visual component that holds objects.  The CONTAINER 
  10541. statement defines the identifier, position, dimensions, and attributes of a 
  10542. container control. The predefined class for this control is WC_CONTAINER.  If 
  10543. you do not specify a style, the default style is WS_TABSTOP, WS_VISIBLE, and 
  10544. CCS_SINGLESEL. 
  10545.  
  10546.  id      Specifies the control identifier. This value is a signed integer 
  10547.          -32768 through 32767, an unsigned integer in the range of 1 through 
  10548.          65535, or a simple expression that evaluates to a value in these 
  10549.          ranges. 
  10550.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10551.          This value is a signed integer -32768 through 32767 or an expression 
  10552.          consisting of integers and the addition (+) or subtraction (-) 
  10553.          operator.  The coordinate is assumed to be in dialog units and is 
  10554.          relative to the origin of the dialog window containing the container 
  10555.          control. 
  10556.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10557.          This value is a signed integer -32768 through 32767 or an expression 
  10558.          consisting of integers and the addition (+) or subtraction (-) 
  10559.          operator.  The coordinate is assumed to be in dialog units and is 
  10560.          relative to the origin of the dialog window containing the container 
  10561.          control. 
  10562.  width   Specifies the width of the control.  This value is any integer 0 
  10563.          through 65535, or an expression consisting of integers and the 
  10564.          addition (+) or subtraction (-) operator. The width is in n-character 
  10565.          units. 
  10566.  height  Specifies the height of the control.  This value is any integer 0 
  10567.          through 65535, or an expression consisting of integers and the 
  10568.          addition (+) or subtraction (-) operator. The height is in 
  10569.          1/8-character units. 
  10570.  style   Specifies the control styles.  This value can be a combination of the 
  10571.          styles specified for WC_CONTAINER. Use the bitwise OR (|) operator to 
  10572.          combine styles. 
  10573.  
  10574.  Comments 
  10575.  
  10576.  A CONTAINER statement is only used in a DIALOG or WINDOW statement. 
  10577.  
  10578.  Example 
  10579.  
  10580.  This example creates a container control at position (30,30) within the dialog 
  10581.  window.  The container has a width of 70 character units and a height of 25 
  10582.  character units.  Its resource identifier is 301.  The default style 
  10583.  CCS_SINGLESEL has been overridden by the style specification CCS_MULTIPLESEL. 
  10584.  The default styles WS_TABSTOP and WS_GROUP are both in effect, though only the 
  10585.  latter is specified. 
  10586.  
  10587.   #define IDC_CONTAINER    301
  10588.   #define IDD_CONTAINERDLG 504
  10589.   DIALOG "Container", IDD_CONTAINERDLG, 23, 6, 120, 280, FS_NOBYTEALIGN |
  10590.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  10591.     BEGIN
  10592.        CONTAINER   IDC_CONTAINER, 30, 30, 70, 200, CCS_MULTIPLESEL |
  10593.                          WS_GROUP
  10594.     END
  10595.  
  10596.  
  10597. ΓòÉΓòÉΓòÉ 21.3.2.10. CONTROL Statement ΓòÉΓòÉΓòÉ
  10598.  
  10599. Syntax: 
  10600.  
  10601.   CONTROL text, id, x, y, width, height, class[, style]
  10602.           [data-definitions]
  10603.   [ BEGIN
  10604.   control-definition
  10605.       .
  10606.       .
  10607.       .
  10608.   END ]
  10609.  
  10610. The CONTROL statement defines a control as belonging to the specified class. 
  10611. The statement defines the position and dimensions of the control within the 
  10612. parent window, as well as the control style.  The CONTROL statement is most 
  10613. often used in a DIALOG or WINDOW statement. 
  10614.  
  10615. Typically, several CONTROL statements are used in each DIALOG statement, and 
  10616. each CONTROL statement must have a unique identifier value. The optional BEGIN 
  10617. and END statements enclose any CONTROL statements that may be given with the 
  10618. control.  CONTROL statements given in this manner represent child windows 
  10619. belonging to the control created by the CONTROL statement. 
  10620.  
  10621.  text    Specifies text that is displayed to the right of the control.  This 
  10622.          field must contain zero or more characters enclosed in double 
  10623.          quotation marks.  Character values must be in the range 1 through 255. 
  10624.          If a double quotation mark is required in the text, you must include 
  10625.          the double quotation mark twice.  In the appropriate styles, a tilde ( 
  10626.          ~ ) character in the text indicates that the following character is 
  10627.          used as a mnemonic character for the control.  When the control is 
  10628.          displayed, the tilde is not shown, but the mnemonic character is 
  10629.          underlined.  The user can choose the control by pressing the key 
  10630.          corresponding to the underlined mnemonic character. 
  10631.  
  10632.          When the style field for this control includes the style SS_BITMAP, 
  10633.          the text field should be written as a number equal to the resource 
  10634.          identifier of the bitmap to be loaded. 
  10635.  
  10636.  id      Specifies the control identifier. This value must be a signed integer 
  10637.          in the range -32768 through 32767, an unsigned integer in the range of 
  10638.          1 through 65535, or a simple expression that evaluates to a value in 
  10639.          these ranges. 
  10640.  
  10641.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10642.          This value must be a signed integer in the range -32768 through 32767 
  10643.          or an expression consisting of integers and the addition (+) or 
  10644.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10645.          units and is relative to the origin of the parent window. 
  10646.  
  10647.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10648.          This value must be a signed integer in the range -32768 through 32767 
  10649.          or an expression consisting of integers and the addition (+) or 
  10650.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10651.          units and is relative to the origin of the parent window. 
  10652.  
  10653.  width   Specifies the width of the control.  This value must be an integer in 
  10654.          the range 0 through 65535 or an expression consisting of integers and 
  10655.          the addition (+) or subtraction (-) operator.  The value is in 
  10656.          n-character units. 
  10657.  
  10658.  height  Specifies the height of the control.  This value must be an integer in 
  10659.          the range 0 through 65535 or an expression consisting of integers and 
  10660.          the addition (+) or subtraction (-) operator.  The value is in 
  10661.          1/8-character units. 
  10662.  
  10663.  class   Specifies the control class.  This value can be one of the control 
  10664.          classes specified in the "Control Classes" table, in the Presentation 
  10665.          Manager Programming Reference, or the name of the control class, 
  10666.          enclosed in double quotation marks. 
  10667.  
  10668.  style   Specifies the control style.  This value can be a combination of 
  10669.          control styles. You can use the bitwise OR (|) operator to combine 
  10670.          styles. 
  10671.  
  10672.  data-definitions Specifies a CTLDATA and/or PRESPARAMS statement. These 
  10673.          statements define control and presentation data for the control. For 
  10674.          more information, see CTLDATA Statement and PRESPARAMS Statement. 
  10675.  
  10676.  control-definition Specifies a CONTROL statement or any one of several 
  10677.          predefined control statements. These statements define the style, 
  10678.          position, and dimensions of controls in the control. 
  10679.  
  10680.  Comments 
  10681.  
  10682.  The CONTROL statement can actually contain any combination of CONTROL, DIALOG, 
  10683.  and WINDOW statements.  But typically, a CONTROL statement contains no such 
  10684.  statements. 
  10685.  
  10686.  Example 
  10687.  
  10688.  This example creates a pushbutton control with the WS_TABSTOP and WS_VISIBLE 
  10689.  styles. 
  10690.  
  10691.     CONTROL "OK", 101, 10, 10, 20, 50, WC_BUTTON, BS_PUSHBUTTON |
  10692.                                                   WS_TABSTOP    |
  10693.                                                   WS_VISIBLE
  10694.  
  10695.  
  10696. ΓòÉΓòÉΓòÉ 21.3.2.11. CTEXT Statement ΓòÉΓòÉΓòÉ
  10697.  
  10698. Syntax: 
  10699.  
  10700.   CTEXT text, id, x, y, width, height[, style]
  10701.  
  10702. The CTEXT statement creates a centered-text control.  The control is a simple 
  10703. rectangle displaying the given text centered in the rectangle.  The text is 
  10704. formatted before it is displayed.  Words that would extend past the end of a 
  10705. line are automatically wrapped to the beginning of the next line.  The CTEXT 
  10706. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  10707. text, identifier, dimensions, and attributes of the control.  The predefined 
  10708. class for this control is WC_STATIC.  If you do not specify a style, the 
  10709. default style is SS_TEXT, DT_CENTER, and WS_GROUP. 
  10710.  
  10711.  text    Specifies text that is centered in the rectangular area of the 
  10712.          control.  This field must contain zero or more characters enclosed in 
  10713.          double quotation marks.  Character values must be in the range 1 
  10714.          through 255.  If a double quotation mark is required in the text, you 
  10715.          must include the double quotation mark twice. 
  10716.  id      Specifies the control identifier. This value must be a signed integer 
  10717.          in the range -32768 through 32767, an unsigned integer in the range of 
  10718.          1 through 65535, or a simple expression that evaluates to a value in 
  10719.          these ranges. 
  10720.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10721.          This value must be a signed integer in the range -32768 through 32767 
  10722.          or an expression consisting of integers and the addition (+) or 
  10723.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10724.          units and is relative to the origin of the dialog box, window, or 
  10725.          control containing the specified control. 
  10726.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10727.          This value must be a signed integer in the range -32768 through 32767 
  10728.          or an expression consisting of integers and the addition (+) or 
  10729.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10730.          units and is relative to the origin of the dialog box, window, or 
  10731.          control containing the specified control. 
  10732.  width   Specifies the width of the control.  This value must be an integer in 
  10733.          the range 0 through 65535 or an expression consisting of integers and 
  10734.          the addition (+) or subtraction (-) operator.  The width is in 
  10735.          n-character units. 
  10736.  height  Specifies the height of the control.  This value must be an integer in 
  10737.          the range 0 through 65535 or an expression consisting of integers and 
  10738.          the addition (+) or subtraction (-) operator.  The height is in 
  10739.          1/8-character units. 
  10740.  style   Specifies the control styles.  This value can be a combination of the 
  10741.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  10742.          operator to combine styles. 
  10743.  
  10744.  Example 
  10745.  
  10746.  This example creates a centered-text control that is labeled "Filename." 
  10747.  
  10748.     CTEXT "Filename", 101, 10, 10, 100, 100
  10749.  
  10750.  
  10751. ΓòÉΓòÉΓòÉ 21.3.2.12. CTLDATA Statement ΓòÉΓòÉΓòÉ
  10752.  
  10753. Syntax: 
  10754.  
  10755.   CTLDATA word-value[, word-value][...]
  10756.  
  10757.   CTLDATA string
  10758.  
  10759.   CTLDATA MENU
  10760.   BEGIN
  10761.   menuitem-definition
  10762.      .
  10763.      .
  10764.      .
  10765.   END
  10766.  
  10767. The CTLDATA statement defines control data for a custom dialog box, window, or 
  10768. control.  The statement has three basic forms to permit specifying a menu or 
  10769. specifying data in words or characters.  The data can be in any format, since 
  10770. only your window procedure will use it. The window procedure of the dialog box, 
  10771. window, or control receives this data when the item is created.  It is up to 
  10772. the window procedure to process the data. 
  10773.  
  10774.  word-value     Specifies a 16-bit value. This value must be a signed integer 
  10775.                 in the range -32768 through 32767 or an expression that 
  10776.                 evaluates in that range. 
  10777.  string         Specifies a string of 8-bit characters.  This field must 
  10778.                 contain zero or more characters enclosed in double quotation 
  10779.                 marks.  Character values must be in the range 1 through 255. 
  10780.                 If a double quotation mark is required in the string, you must 
  10781.                 include the double quotation mark twice. 
  10782.  menuitem-definition Specifies a MENUITEM or SUBMENU statement.  These 
  10783.                 statements define the individual commands or submenus in the 
  10784.                 given menu. For details about these statements, see MENUITEM 
  10785.                 Statement and SUBMENU Statement. 
  10786.  
  10787.  Comments 
  10788.  
  10789.  CTLDATA is often used to supply data that controls the subsequent operation of 
  10790.  the custom window.  For example, the CTLDATA statement may contain extended 
  10791.  style bits - that is, style bits designed specifically for your customized 
  10792.  window. 
  10793.  
  10794.  You should reserve the CTLDATA statement for window classes that you create 
  10795.  yourself. 
  10796.  
  10797.  Example 
  10798.  
  10799.  This example creates a menu for the window created with the WINDOW statement. 
  10800.  
  10801.     WINDOWTEMPLATE 1
  10802.     BEGIN
  10803.         WINDOW "Sample", 1, 0, 0, 100, 100, "MYCLASS", 0, FCF_STANDARD
  10804.         CTLDATA MENU
  10805.         BEGIN
  10806.             MENUITEM "Exit", 101
  10807.         END
  10808.     END
  10809.  
  10810.  
  10811. ΓòÉΓòÉΓòÉ 21.3.2.13. DEFAULTICON Statement ΓòÉΓòÉΓòÉ
  10812.  
  10813. Syntax: 
  10814.  
  10815.   DEFAULTICON filename.ico
  10816.  
  10817. This statement installs the named icon file definition under the ICON Extended 
  10818. Attribute of the program file.  An icon with an icon-id of 1 is the default 
  10819. unless you supply a different icon. 
  10820.  
  10821. Example 
  10822.  
  10823.   DEFAULTICON myicon.ico
  10824.  
  10825.  
  10826. ΓòÉΓòÉΓòÉ 21.3.2.14. define Directive ΓòÉΓòÉΓòÉ
  10827.  
  10828. Syntax: 
  10829.  
  10830.   define name value
  10831.  
  10832. The define directive assigns the given value to the specified name. All 
  10833. subsequent occurrences of the name are replaced by the value. 
  10834.  
  10835.  name    Specifies the name to be defined. This name can be any combination of 
  10836.          letters, digits, or underscore characters which does not begin with a 
  10837.          digit. 
  10838.  value   Specifies any integer, character string, or line of text. This value 
  10839.          can contain another defined name, which creates a level of nested 
  10840.          defines.  You are limited to 64 levels of nested defines. 
  10841.  
  10842.  Example 
  10843.  
  10844.  This example assigns values to the names "NONZERO" and "USERCLASS". 
  10845.  
  10846.     #define     NONZERO     1
  10847.     #define     USERCLASS   "MyControlClass"
  10848.  
  10849.  
  10850. ΓòÉΓòÉΓòÉ 21.3.2.15. DEFPUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  10851.  
  10852. Syntax: 
  10853.  
  10854.   DEFPUSHBUTTON text, id, x, y, width, height[, style]
  10855.  
  10856. The DEFPUSHBUTTON statement creates a default pushbutton control. The control 
  10857. is a round-cornered rectangle containing the given text. The rectangle has a 
  10858. bold outline to represent that it is the default response for the user.  The 
  10859. control sends a message to its parent window when the user chooses the control. 
  10860. The DEFPUSHBUTTON statement, which you can use only in a DIALOG or WINDOW 
  10861. statement, defines the text, identifier, dimensions, and attributes of the 
  10862. control.  The predefined class for this control is WC_BUTTON.  If you do not 
  10863. specify a style, the default style is BS_PUSHBUTTON, BS_DEFAULT, and 
  10864. WS_TABSTOP. 
  10865.  
  10866.  text    Specifies text that is centered in the rectangular area of the 
  10867.          control.  This field must contain zero or more characters enclosed in 
  10868.          double quotation marks.  Character values must be in the range 1 
  10869.          through 255.  If a double quotation mark is required in the text, you 
  10870.          must include the double quotation mark twice.  A tilde ( ~ ) character 
  10871.          in the text indicates that the following character is used as a 
  10872.          mnemonic character for the control.  When the control is displayed, 
  10873.          the tilde is not shown, but the mnemonic character is underlined. The 
  10874.          user can choose the control by pressing the key corresponding to the 
  10875.          underlined mnemonic character. 
  10876.  id      Specifies the control identifier. This value must be a signed integer 
  10877.          in the range -32768 through 32767, an unsigned integer in the range of 
  10878.          1 through 65535, or a simple expression that evaluates to a value in 
  10879.          these ranges. 
  10880.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10881.          This value must be a signed integer in the range -32768 through 32767 
  10882.          or an expression consisting of integers and the addition (+) or 
  10883.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10884.          units and is relative to the origin of the dialog box, window, or 
  10885.          control containing the specified control. 
  10886.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10887.          This value must be a signed integer in the range -32768 through 32767 
  10888.          or an expression consisting of integers and the addition (+) or 
  10889.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10890.          units and is relative to the origin of the dialog box, window, or 
  10891.          control containing the specified control. 
  10892.  width   Specifies the width of the control.  This value must be an integer in 
  10893.          the range 0 through 65535 or an expression consisting of integers and 
  10894.          the addition (+) or subtraction (-) operator.  The width is in 
  10895.          n-character units. 
  10896.  height  Specifies the height of the control.  This value must be an integer in 
  10897.          the range 0 through 65535 or an expression consisting of integers and 
  10898.          the addition (+) or subtraction (-) operator.  The height is in 
  10899.          1/8-character units. 
  10900.  style   Specifies the control styles.  This value can be a combination of the 
  10901.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  10902.          operator to combine styles. 
  10903.  
  10904.  Example 
  10905.  
  10906.  This example creates a default pushbutton control that is labeled "Cancel." 
  10907.  
  10908.   DEFPUSHBUTTON "Cancel", 101, 10, 10, 24, 50
  10909.  
  10910.  
  10911. ΓòÉΓòÉΓòÉ 21.3.2.16. DIALOG Statement ΓòÉΓòÉΓòÉ
  10912.  
  10913. Syntax: 
  10914.  
  10915.   DIALOG text, id, x, y, width, height[, style[, framectl]]
  10916.          [data-definitions]
  10917.   BEGIN
  10918.   control-definition
  10919.       .
  10920.       .
  10921.       .
  10922.   END
  10923.  
  10924. The DIALOG statement defines a window that an application can use to create 
  10925. dialog boxes.  The statement defines the position and dimensions of the dialog 
  10926. box on the screen, as well as the dialog-box style.  The DIALOG statement is 
  10927. most often used in a DLGTEMPLATE statement. 
  10928.  
  10929. Typically, you use only one DIALOG statement in each DLGTEMPLATE statement, and 
  10930. the DIALOG statement contains at least one control definition. 
  10931.  
  10932.  text        Specifies the dialog-box title if the style specifies a title bar. 
  10933.              This field must contain zero or more characters enclosed in double 
  10934.              quotation marks.  Character values must be in the range 1 through 
  10935.              255.  If a double quotation mark is required in the title, you 
  10936.              must include the double quotation mark twice. 
  10937.  id          Specifies the dialog-box identifier. This value must be a signed 
  10938.              integer in the range -32768 through 32767, an unsigned integer in 
  10939.              the range of 1 through 65535, or a simple expression that 
  10940.              evaluates to a value in these ranges. 
  10941.  x           Specifies the x-coordinate of the lower-left corner of the dialog 
  10942.              box.  This value must be a signed integer in the range -32768 
  10943.              through 32767 or an expression consisting of integers and the 
  10944.              addition (+) or subtraction (-) operator.  The value is in dialog 
  10945.              units, but its exact meaning depends on the dialog style.  See the 
  10946.              "Comments" section for details. 
  10947.  y           Specifies the y-coordinate of the lower-left corner of the dialog 
  10948.              box.  This value must be a signed integer in the range -32768 
  10949.              through 32767 or an expression consisting of integers and the 
  10950.              addition (+) or subtraction (-) operator.  The value is in dialog 
  10951.              units, but its exact meaning depends on the dialog style.  See the 
  10952.              "Comments" section for details. 
  10953.  width       Specifies the width of the dialog box.  This value must be an 
  10954.              integer in the range 0 through 65535 or an expression consisting 
  10955.              of integers and the addition (+) or subtraction (-) operator.  The 
  10956.              value is in n-character units. 
  10957.  height      Specifies the height of the dialog box.  This value must be an 
  10958.              integer in the range 0 through 65535 or an expression consisting 
  10959.              of integers and the addition (+) or subtraction (-) operator.  The 
  10960.              value is in 1/8-character units. 
  10961.  style       Specifies the dialog-box style.  This value can be any of the 
  10962.              window, dialog-box, or frame styles. You can use the bitwise OR 
  10963.              (|) operator to combine styles. 
  10964.  framectl    Specifies the styles for frame controls belonging to the dialog 
  10965.              box.  This value can be any of the frame-control styles specified 
  10966.              in the "Frame-Control Flags" table in the Presentation Manager 
  10967.              Programming Reference. You can use the bitwise OR (|) operator to 
  10968.              combine styles. 
  10969.  data-definitions Specifies a CTLDATA and/or PRESPARAMS statement. These 
  10970.              statements define control and presentation data for the dialog 
  10971.              box.  For more information, see CTLDATA Statement and PRESPARAMS 
  10972.              Statement. 
  10973.  control-definition Specifies a CONTROL statement or any one of several 
  10974.              predefined control statements.  These statements define the style, 
  10975.              position, and dimensions of controls in the dialog box. 
  10976.  
  10977.  Comments 
  10978.  
  10979.  The exact meaning of the coordinates depends on the style defined by the style 
  10980.  field.  For dialog boxes with FS_SCREENALIGN style, the coordinates are 
  10981.  relative to the origin of the display screen.  For dialog boxes with the style 
  10982.  FS_MOUSEALIGN, the coordinates are relative to the position of the mouse 
  10983.  pointer at the time the dialog box is created.  For all other dialog boxes, 
  10984.  the coordinates are relative to the origin of the parent window. 
  10985.  
  10986.  The DIALOG statement can actually contain any combination of CONTROL, DIALOG, 
  10987.  and WINDOW statements.  Typically, a DIALOG statement contains one or more 
  10988.  CONTROL statements. 
  10989.  
  10990.  Example 
  10991.  
  10992.  This example creates a dialog box that is labeled "Disk Error." 
  10993.  
  10994.   DLGTEMPLATE 1
  10995.   BEGIN
  10996.       DIALOG  "Disk Error", 100, 10, 10, 300, 110
  10997.       BEGIN
  10998.           CTEXT "Select One:", 1, 10, 80, 280, 12
  10999.           RADIOBUTTON "Retry", 2, 75, 50, 60, 12
  11000.           RADIOBUTTON "Abort", 3, 75, 30, 60, 12
  11001.           RADIOBUTTON "Ignore", 4, 75, 10, 60, 12
  11002.       END
  11003.   END
  11004.  
  11005.  
  11006. ΓòÉΓòÉΓòÉ 21.3.2.17. DLGINCLUDE Statement ΓòÉΓòÉΓòÉ
  11007.  
  11008. Syntax: 
  11009.  
  11010.   DLGINCLUDE id filename
  11011.  
  11012. The DLGINCLUDE statement adds the specified file to the resource file.  The 
  11013. DLGINCLUDE statement is typically used to let the application access the 
  11014. definitions file for the dialog box with the corresponding identifier.  The 
  11015. file named by filename must contain the define directives used by the dialog 
  11016. box. 
  11017.  
  11018. You can provide any number of DLGINCLUDE statements in a resource script file, 
  11019. but each must have a unique identifier. 
  11020.  
  11021.  id          Specifies the dialog-box identifier. This value must be a signed 
  11022.              integer in the range -32768 through 32767, an unsigned integer in 
  11023.              the range of 1 through 65535, a simple expression that evaluates 
  11024.              to a value in these ranges, or a character string. 
  11025.  filename    Specifies the name of the file containing the define directives. 
  11026.              If the file is not in the current directory, filename must be 
  11027.              preceded by a full path. 
  11028.  
  11029.  Example 
  11030.  
  11031.  This example includes the name of the definition file dlgdef.h. The dialog-box 
  11032.  identifier is 5. 
  11033.  
  11034.   DLGINCLUDE 5 \\INCLUDE\\DLGREF.H
  11035.  
  11036.  
  11037. ΓòÉΓòÉΓòÉ 21.3.2.18. DLGTEMPLATE Statement ΓòÉΓòÉΓòÉ
  11038.  
  11039. Syntax: 
  11040.  
  11041.   DLGTEMPLATE dialog-id  [load-option] [mem-option] [codepage]
  11042.   BEGIN
  11043.   dialog-definition
  11044.       .
  11045.       .
  11046.       .
  11047.   END
  11048.  
  11049. The DLGTEMPLATE statement creates a dialog-box template.  A dialog-box template 
  11050. consists of a series of statements that define the identifier, load and memory 
  11051. options, dialog-box dimensions, and controls in the dialog box.  The dialog-box 
  11052. template can be loaded from the executable file by using the WinLoadDlg 
  11053. function. 
  11054.  
  11055. You can provide any number of dialog-box templates in a resource script file, 
  11056. but each template must have a unique dialog-id value. 
  11057.  
  11058.  dialog-id         Specifies the dialog-box identifier. This value must be an 
  11059.                    unsigned integer in the range of 1 through 65535, a simple 
  11060.                    expression that evaluates to a value in these ranges, or a 
  11061.                    character string. 
  11062.  load-option       Specifies when the system loads the resource from the 
  11063.                    executable file into memory.  This value must be one of the 
  11064.                    following: 
  11065.                    PRELOAD             System loads the resource when the 
  11066.                                        application starts. 
  11067.                    LOADONCALL          System loads the resource when the 
  11068.                                        application calls the WinLoadDlg 
  11069.                                        function.  This is the default option. 
  11070.  mem-option        Specifies how the system manages the resource when it is in 
  11071.                    memory.  This value must be one or more of the following: 
  11072.                    FIXED               System keeps the resource at a fixed 
  11073.                                        memory location. 
  11074.                    MOVEABLE            System moves the resource as necessary 
  11075.                                        to compact memory. 
  11076.                    DISCARDABLE         System discards the resource if it is no 
  11077.                                        longer needed. The default setting is 
  11078.                    MOVEABLE and DISCARDABLE. 
  11079.  codepage          Specifies a code-page value.  For a list of valid code pages 
  11080.                    see CODEPAGE Statement. 
  11081.  dialog-definition Specifies a DIALOG statement. The statement defines the 
  11082.                    dimensions and style of the given dialog box. For details 
  11083.                    about the statement, see DIALOG Statement. 
  11084.  
  11085.  Comments 
  11086.  
  11087.  A DLGTEMPLATE statement can actually contain DIALOG, CONTROL, and WINDOW 
  11088.  statements.  Typically, you include only one DIALOG statement. 
  11089.  
  11090.  Example 
  11091.  
  11092.  This example uses a DLGTEMPLATE statement to create a dialog box. 
  11093.  
  11094.   DLGTEMPLATE ID_GETTIMER
  11095.   BEGIN
  11096.       DIALOG "Timer", 1, 10, 10, 100, 40
  11097.       BEGIN
  11098.           LTEXT "Time (0 - 15):", 4, 8, 24, 72, 12
  11099.           ENTRYFIELD "0", ID_TIME, 80, 28, 16, 8, ES_MARGIN
  11100.           DEFPUSHBUTTON "Enter", ID_TIMEOK, 10, 6, 36, 12
  11101.           PUSHBUTTON "Cancel", ID_TIMECANCEL, 52, 6, 40, 12
  11102.       END
  11103.   END
  11104.  
  11105.  
  11106. ΓòÉΓòÉΓòÉ 21.3.2.19. EDITTEXT Statement ΓòÉΓòÉΓòÉ
  11107.  
  11108. Syntax: 
  11109.  
  11110.   EDITTEXT text, id, x, y, width, height [,style]
  11111.  
  11112. The EDITTEXT statement creates an entry-field control.  This control is a 
  11113. rectangle in which the user can type and edit text. The control displays a 
  11114. pointer when the user selects the control.  The user can then use the keyboard 
  11115. to enter text or edit the existing text.  Editing keys include the BACKSPACE 
  11116. and DELETE keys.  By using the mouse or the DIRECTION keys, the user can select 
  11117. the character or characters to delete or select the place to insert new 
  11118. characters. 
  11119.  
  11120. The EDITTEXT statement defines the text, identifier, dimensions, and attributes 
  11121. of a control window.  The predefined class for this control is WC_ENTRYFIELD. 
  11122. If you do not specify a style, the default style is ES_AUTOSCROLL and 
  11123. WS_TABSTOP. 
  11124.  
  11125.  text    Specifies text that is displayed in the rectangular area of the 
  11126.          control.  This field must contain zero or more characters enclosed in 
  11127.          double quotation marks.  Character values must be in the range 1 
  11128.          through 255.  If a double quotation mark is required in the text, you 
  11129.          must include the double quotation mark twice. 
  11130.  id      Specifies the control identifier. This value is a signed integer 
  11131.          -32768 through 32767, an unsigned integer in the range of 1 through 
  11132.          65535, or a simple expression that evaluates to a value in these 
  11133.          ranges. 
  11134.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11135.          This value is a signed integer -32768 through 32767, or an expression 
  11136.          consisting of integers and the addition (+) or subtraction (-) 
  11137.          operator.  The coordinate is assumed to be in dialog units and is 
  11138.          relative to the origin of the dialog window. 
  11139.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11140.          This value is a signed integer -32768 through 32767, or an expression 
  11141.          consisting of integers and the addition (+) or subtraction (-) 
  11142.          operator.  The coordinate is assumed to be in dialog units and is 
  11143.          relative to the origin of the dialog window. 
  11144.  width   Specifies the width of the control.  This value is any integer 0 
  11145.          through 65535, or an expression consisting of integers and the 
  11146.          addition (+) or subtraction (-) operator. The width is in n-character 
  11147.          units. 
  11148.  height  Specifies the height of the control.  This value is any integer 0 
  11149.          through 65535, or an expression consisting of integers and the 
  11150.          addition (+) or subtraction (-) operator. The height is in 
  11151.          1/8-character units. 
  11152.  style   Specifies the control styles.  This value can be a combination of the 
  11153.          styles specified for WC_ENTRYFIELD.  You can use the bitwise OR ( | ) 
  11154.          operator to combine styles. 
  11155.  
  11156.  Comments 
  11157.  
  11158.  The EDITTEXT control statement is identical to the ENTRYFIELD control 
  11159.  statement. 
  11160.  
  11161.  Use the EDITTEXT statement only in a DIALOG or WINDOW statement. 
  11162.  
  11163.  Example 
  11164.  
  11165.  This example creates an entry-field control that is not labeled. 
  11166.  
  11167.      EDITTEXT "", 101, 10, 10, 24, 50
  11168.  
  11169.  
  11170. ΓòÉΓòÉΓòÉ 21.3.2.20. elif Directive ΓòÉΓòÉΓòÉ
  11171.  
  11172. Syntax: 
  11173.  
  11174.   elif constant-expression
  11175.  
  11176. The elif directive marks an optional clause of a conditional-compilation block 
  11177. defined by a ifdef, ifndef, or if directive.  The directive controls 
  11178. conditional compilation of the resource file by checking the specified constant 
  11179. expression.  If the constant expression is nonzero, elif directs the compiler 
  11180. to continue processing statements up to the next endif, else, or elif directive 
  11181. and then skip to the statement after endif.  If the constant expression is 
  11182. zero, elif directs the compiler to skip to the next endif, else, or elif 
  11183. directive.  You can use any number of elif directives in a conditional block. 
  11184.  
  11185.  constant-expression   Specifies the expression to be checked.  This value is a 
  11186.                        defined name, an integer constant, or an expression 
  11187.                        consisting of names, integers, and arithmetic and 
  11188.                        relational operators. 
  11189.  
  11190.  Example 
  11191.  
  11192.  In this example, elif directs the compiler to process the second BITMAP 
  11193.  statement only if the value assigned to the name "Version" is less than 7. 
  11194.  The elif directive itself is processed only if Version is greater than or 
  11195.  equal to 3. 
  11196.  
  11197.   #if Version < 3
  11198.   BITMAP 1 errbox.bmp
  11199.   #elif Version < 7
  11200.   BITMAP 1 userbox.bmp
  11201.   #endif
  11202.  
  11203.  
  11204. ΓòÉΓòÉΓòÉ 21.3.2.21. else Directive ΓòÉΓòÉΓòÉ
  11205.  
  11206. Syntax: 
  11207.  
  11208.   else
  11209.  
  11210. The else directive marks an optional clause of a conditional-compilation block 
  11211. defined by a ifdef, ifndef, or if directive.  The else directive must be the 
  11212. last directive before the endif directive. 
  11213.  
  11214. This directive has no arguments. 
  11215.  
  11216. Example 
  11217.  
  11218. This example compiles the second BITMAP statement only if the name "DEBUG" is 
  11219. not defined. 
  11220.  
  11221.     #ifdef DEBUG
  11222.         BITMAP 1 errbox.bmp
  11223.     #else
  11224.         BITMAP 1 userbox.bmp
  11225.     #endif
  11226.  
  11227.  
  11228. ΓòÉΓòÉΓòÉ 21.3.2.22. endif Directive ΓòÉΓòÉΓòÉ
  11229.  
  11230. Syntax: 
  11231.  
  11232.   endif
  11233.  
  11234. The endif directive marks the end of a conditional-compilation block defined by 
  11235. a ifdef directive.  One endif is required for each if, ifdef, or ifndef 
  11236. directive. 
  11237.  
  11238. This directive has no arguments. 
  11239.  
  11240.  
  11241. ΓòÉΓòÉΓòÉ 21.3.2.23. ENTRYFIELD Statement ΓòÉΓòÉΓòÉ
  11242.  
  11243. Syntax: 
  11244.  
  11245.   ENTRYFIELD text, id, x, y, width, height , [style]
  11246.  
  11247. The ENTRYFIELD statement creates an entry-field control.  This control is a 
  11248. rectangle in which the user can type and edit text.  The control displays a 
  11249. pointer when the user selects the control.  The user can then use the keyboard 
  11250. to enter text or edit the existing text. Editing keys include the BACKSPACE and 
  11251. DELETE keys.  By using the mouse or the DIRECTION keys, the user can select the 
  11252. character or characters to delete or select the place to insert new characters. 
  11253. The ENTRYFIELD statement, which you can use only in a DIALOG or WINDOW 
  11254. statement, defines the text, identifier, dimensions, and attributes of a 
  11255. control window.  The predefined class for this control is WC_ENTRYFIELD.  If 
  11256. you do not specify a style, the default style is ES_AUTOSCROLL and WS_TABSTOP. 
  11257.  
  11258.  text    Specifies text that is displayed in the rectangular area of the 
  11259.          control.  This field must contain zero or more characters enclosed in 
  11260.          double quotation marks.  Character values must be in the range 1 
  11261.          through 255.  If a double quotation mark is required in the text, you 
  11262.          must include the double quotation mark twice. 
  11263.  id      Specifies the control identifier. This value must be a signed integer 
  11264.          in the range -32768 through 32767, an unsigned integer in the range of 
  11265.          1 through 65535, or a simple expression that evaluates to a value in 
  11266.          these ranges. 
  11267.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11268.          This value must be a signed integer in the range -32768 through 32767 
  11269.          or an expression consisting of integers and the addition (+) or 
  11270.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11271.          units and is relative to the origin of the dialog box, window, or 
  11272.          control containing the specified control. 
  11273.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11274.          This value must be a signed integer in the range -32768 through 32767 
  11275.          or an expression consisting of integers and the addition (+) or 
  11276.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11277.          units and is relative to the origin of the dialog box, window, or 
  11278.          control containing the specified control. 
  11279.  width   Specifies the width of the control.  This value must be an integer in 
  11280.          the range 0 through 65535 or an expression consisting of integers and 
  11281.          the addition (+) or subtraction (-) operator.  The width is in 
  11282.          n-character units. 
  11283.  height  Specifies the height of the control.  This value must be an integer in 
  11284.          the range 0 through 65535 or an expression consisting of integers and 
  11285.          the addition (+) or subtraction (-) operator.  The height is in 
  11286.          1/8-character units. 
  11287.  style   Specifies the control styles.  This value can be a combination of the 
  11288.          styles specified for WC_ENTRYFIELD. You can use the bitwise OR (|) 
  11289.          operator to combine styles. 
  11290.  
  11291.  Example 
  11292.  
  11293.  This example creates an entry-field control that is not labeled. 
  11294.  
  11295.   ENTRYFIELD "", 101, 10, 10, 24, 50
  11296.  
  11297.  
  11298. ΓòÉΓòÉΓòÉ 21.3.2.24. FONT Statement ΓòÉΓòÉΓòÉ
  11299.  
  11300. Syntax: 
  11301.  
  11302.   FONT font-id  [load-option] [mem-option] [codepage]  filename
  11303.  
  11304. The FONT statement defines a font resource for an application. A font resource, 
  11305. typically created by using the OS/2 Font Editor, is a bit map defining the 
  11306. shape of the individual characters in a character set.  The FONT statement 
  11307. copies the font resource from the file specified in the filename field and adds 
  11308. it to the other resources of the application.  A font resource can be loaded 
  11309. from the executable file when needed by using the GpiLoadFonts function. 
  11310.  
  11311. You can provide any number of FONT statements in a resource script file, but 
  11312. each statement must specify a unique font-id value. 
  11313.  
  11314.  font-id           Specifies the font-resource identifier. This value must be 
  11315.                    an unsigned integer in the range of 1 through 65535, or a 
  11316.                    simple expression that evaluates to a value in these ranges. 
  11317.                    Character strings cannot be used as resource identifiers for 
  11318.                    this statement. 
  11319.  load-option       Specifies when the system loads the resource from the 
  11320.                    executable file into memory.  This value must be one of the 
  11321.                    following: 
  11322.                    PRELOAD             System loads the resource when the 
  11323.                                        application starts. 
  11324.                    LOADONCALL          System loads the resource when the 
  11325.                                        application calls the GpiLoadFonts 
  11326.                                        function.  This is the default option. 
  11327.  mem-option        Specifies how the system manages the resource when it is i 
  11328.                    memory.  This value must be one or more of the following: 
  11329.                    FIXED               System keeps the resource at a fixed 
  11330.                                        memory location. 
  11331.                    MOVEABLE            System moves the resource as necessary 
  11332.                                        to compact memory. 
  11333.                    DISCARDABLE         System discards the resource if it is no 
  11334.                                        longer needed. The default setting is 
  11335.                    MOVEABLE and DISCARDABLE. 
  11336.  codepage          Specifies a code page value.  For a list of valid code pages 
  11337.                    see CODEPAGE Statement. 
  11338.  filename          Specifies the name of the file containing the font resource. 
  11339.                    If the file is not in the current directory, filename must 
  11340.                    be preceded by a full path. 
  11341.  
  11342.  Example 
  11343.  
  11344.  This example defines a font whose font identifier is 5. The font resource is 
  11345.  copied from the file cmroman.fon. 
  11346.  
  11347.   FONT 5 cmroman.fon
  11348.  
  11349.  
  11350. ΓòÉΓòÉΓòÉ 21.3.2.25. FRAME Statement ΓòÉΓòÉΓòÉ
  11351.  
  11352. Syntax: 
  11353.  
  11354.   FRAME text, id, x, y, width, height[, style[, framectl]]
  11355.         data-definitions
  11356.   [ BEGIN
  11357.   window-definition
  11358.       .
  11359.       .
  11360.       .
  11361.   END ]
  11362.  
  11363. The FRAME statement defines a frame window.  The statement defines the title, 
  11364. identifier, position, and dimensions of the frame window, as well as the window 
  11365. style.  The FRAME statement is most often used in a WINDOWTEMPLATE statement, 
  11366. and typically, only one FRAME statement is used.  The FRAME statement, in turn, 
  11367. typically contains at least one WINDOW statement that defines the client window 
  11368. belonging to the frame window. 
  11369.  
  11370. The frame window has no default style.  You must use the framectl field to 
  11371. define additional frame controls, such as a title bar and system menu, to be 
  11372. created when the frame window is created.  If the text field is not empty, the 
  11373. statement automatically adds a title-bar control to the frame window, whether 
  11374. or not you specify the FCF_TITLEBAR style.  Frame controls are given default 
  11375. styles and control identifiers depending on their class.  For example, a 
  11376. title-bar control receives the identifier FID_TITLEBAR. 
  11377.  
  11378.  text        Specifies the title of the frame window.  This field must contain 
  11379.              zero or more characters enclosed in double quotation marks. 
  11380.              Character values must be in the range 1 through 255.  If a double 
  11381.              quotation mark is required in the name, you must include the 
  11382.              double quotation mark twice. 
  11383.  id          Specifies the window identifier.  This value must be a signed 
  11384.              integer in the range -32768 through 32767, an unsigned integer in 
  11385.              the range of 1 through 65535, or a simple expression that 
  11386.              evaluates to a value in these ranges. 
  11387.  x           Specifies the x-coordinate of the lower-left corner of the window. 
  11388.              This value must be a signed integer in the range -32768 through 
  11389.              32767 or an expression consisting of integers and the addition (+) 
  11390.              or subtraction (-) operator.  The coordinate is assumed to be in 
  11391.              dialog units and is relative to the origin of the dialog box, 
  11392.              window, or control containing the specified window. 
  11393.  y           Specifies the y-coordinate of the lower-left corner of the window. 
  11394.              This value must be a signed integer in the range -32768 through 
  11395.              32767 or an expression consisting of integers and the addition (+) 
  11396.              or subtraction (-) operator.  The coordinate is assumed to be in 
  11397.              dialog units and is relative to the origin of the dialog box, 
  11398.              window, or control containing the specified window. 
  11399.  width       Specifies the width of the window.  This value must be an integer 
  11400.              in the range 0 through 65535 or an expression consisting of 
  11401.              integers and the addition (+) or subtraction (-) operator.  The 
  11402.              width is in n-character units. 
  11403.  height      Specifies the height of the window.  This value must be a integer 
  11404.              in the range 0 through 65535 or an expression consisting of 
  11405.              integers and the addition (+) or subtraction (-) operator.  The 
  11406.              height is in 1/8-character units. 
  11407.  style       Specifies the frame and window styles.  This value can be a 
  11408.              combination of frame styles. You can use the bitwise OR (|) 
  11409.              operator to combine styles. 
  11410.  framectl    Specifies the styles of frame controls belonging to the frame 
  11411.              window.  This value can be a combination of the styles specified 
  11412.              in the "Frame-Control Styles" table in the Presentation Manager 
  11413.              Programmers Reference. You can use the bitwise OR (|) operator to 
  11414.              combine styles. 
  11415.  data-definitions Specifies a CTLDATA and/or PRESPARAMS statement.  These 
  11416.              statements define control and presentation data for the frame 
  11417.              window.  For more information, see CTLDATA Statement and 
  11418.              PRESPARAMS Statement. 
  11419.  window-definition Specifies a WINDOW statement or any one of several 
  11420.              predefined control statements.  These statements define the style, 
  11421.              position, and dimensions of windows or controls in the frame 
  11422.              window. 
  11423.  
  11424.  Comments 
  11425.  
  11426.  The FRAME statement can actually contain any combination of CONTROL, DIALOG, 
  11427.  and WINDOW statements.  Typically, a FRAME statement contains one WINDOW 
  11428.  statement. 
  11429.  
  11430.  Example 
  11431.  
  11432.  This example creates a standard frame window, with a title bar, a system menu, 
  11433.  minimize and maximize boxes, and a vertical scroll bar. The FRAME statement 
  11434.  contains a WINDOW statement defining the client window belonging to the frame 
  11435.  window. 
  11436.  
  11437.   WINDOWTEMPLATE 1
  11438.   BEGIN
  11439.       FRAME "My Window", 1, 10, 10, 320, 130, 0,
  11440.               FCF_STANDARD | FCF_VERTSCROLL
  11441.       BEGIN
  11442.           WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass"
  11443.       END
  11444.   END
  11445.  
  11446.  
  11447. ΓòÉΓòÉΓòÉ 21.3.2.26. GROUPBOX Statement ΓòÉΓòÉΓòÉ
  11448.  
  11449. Syntax: 
  11450.  
  11451.   GROUPBOX text, id, x, y, width, height [, style]
  11452.  
  11453. The GROUPBOX statement creates a group-box control.  The control is a rectangle 
  11454. that groups other controls together.  The controls are grouped by drawing a 
  11455. border around them and displaying the given text in the upper-left corner.  The 
  11456. GROUPBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  11457. defines the text, identifier, dimensions, and attributes of a control window. 
  11458. The predefined class for this control is WC_STATIC.  If you do not specify a 
  11459. style, the default style is SS_GROUPBOX and WS_TABSTOP. 
  11460.  
  11461.  text    Specifies text that appears in the upper-left corner of the control. 
  11462.          This field must contain zero or more characters enclosed in double 
  11463.          quotation marks.  Character values must be in the range 1 through 255. 
  11464.          If a double quotation mark is required in the text, you must include 
  11465.          the double quotation mark twice. 
  11466.  id      Specifies the control identifier.  This value must be a signed integer 
  11467.          in the range -32768 through 32767, an unsigned integer in the range of 
  11468.          1 through 65535, or a simple expression that evaluates to a value in 
  11469.          these ranges. 
  11470.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11471.          This value must be a signed integer in the range -32768 through 32767 
  11472.          or an expression consisting of integers and the addition (+) or 
  11473.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11474.          units and is relative to the origin of the dialog box, window, or 
  11475.          control containing the specified control. 
  11476.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11477.          This value must be a signed integer in the range -32768 through 32767 
  11478.          or an expression consisting of integers and the addition (+) or 
  11479.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11480.          units and is relative to the origin of the dialog box, window, or 
  11481.          control containing the specified control. 
  11482.  width   Specifies the width of the control.  This value must be an integer in 
  11483.          the range 0 through 65535 or an expression consisting of integers and 
  11484.          the addition (+) or subtraction (-) operator.  The width is in 
  11485.          n-character units. 
  11486.  height  Specifies the height of the control.  This value must be an integer in 
  11487.          the range 0 through 65535 or an expression consisting of integers and 
  11488.          the addition (+) or subtraction (-) operator.  The height is in 
  11489.          1/8-character units. 
  11490.  style   Specifies the control styles.  This value can be a combination of the 
  11491.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  11492.          operator to combine styles. 
  11493.  
  11494.  Example 
  11495.  
  11496.  This example creates a group-box control that is labeled "Options." 
  11497.  
  11498.   GROUPBOX "Options", 101, 10, 10, 100, 100
  11499.  
  11500.  
  11501. ΓòÉΓòÉΓòÉ 21.3.2.27. HELPITEM Statement ΓòÉΓòÉΓòÉ
  11502.  
  11503. Syntax: 
  11504.  
  11505.   HELPITEM application-window-id, help-subtable-id, extended-helppanel-id
  11506.  
  11507. The HELPITEM statement defines the help items in a help table.  The statement, 
  11508. permitted only in a HELPTABLE statement, specifies the resource identifier of 
  11509. an application window for which help is provided, and the resource identifiers 
  11510. of the help subtable and extended help panel associated with the application 
  11511. window. 
  11512.  
  11513. You can provide any number of HELPITEM statements in a HELPTABLE statement. 
  11514. You should provide one HELPITEM statement for each application window for which 
  11515. help is provided. 
  11516.  
  11517.  application-window-id     Specifies the resource identifier of an application 
  11518.                            window for which help is provided. This value must 
  11519.                            be a signed integer in the range -32768 through 
  11520.                            32767, an unsigned integer in the range of 1 through 
  11521.                            65535, or a simple expression that evaluates to a 
  11522.                            value in these ranges. 
  11523.  
  11524.  help-subtable-id          Specifies the resource identifier of the help 
  11525.                            subtable associated with the specified application 
  11526.                            window. This value must be an unsigned integer in 
  11527.                            the range of 1 through 65535, or a simple expression 
  11528.                            that evaluates to a value in these ranges. 
  11529.  
  11530.  extended-helppanel-id     Specifies the resource identifier of the extended 
  11531.                            help panel associated with the specified application 
  11532.                            window. This value must be an integer in the range 0 
  11533.                            through 65535. However, in IPF a panel-id must be an 
  11534.                            integer in the range of 0 to 64000. 
  11535.  
  11536.  Example 
  11537.  
  11538.  This example defines a help item that associates a help subtable called 
  11539.  IDSUB_FILEMENU and an extended help panel called IDEXT_APPHLP with an 
  11540.  application window called IDWIN_FILEMENU. 
  11541.  
  11542.   HELPITEM IDWIN_FILEMENU, IDSUB_FILEMENU, IDEXT_APPHLP
  11543.  
  11544.  
  11545. ΓòÉΓòÉΓòÉ 21.3.2.28. HELPSUBITEM Statement ΓòÉΓòÉΓòÉ
  11546.  
  11547. Syntax: 
  11548.  
  11549.   HELPSUBITEM child-window-id, helppanel-id [ , integer...]
  11550.  
  11551. The HELPSUBITEM statement defines the help subitems in a help subtable.  This 
  11552. statement, which is permitted only in a HELPSUBTABLE statement, specifies the 
  11553. identifier of a child window for which help is provided, the identifier of the 
  11554. help panel associated with the child window, and one or more optional, 
  11555. application-defined integers. 
  11556.  
  11557. You can provide any number of HELPSUBITEM statements in a HELPSUBTABLE 
  11558. statement.  You should provide one HELPSUBITEM statement for each child window 
  11559. for which help is provided. 
  11560.  
  11561.  child-window-id     Specifies the resource identifier of the child window for 
  11562.                      which help is provided. Character strings cannot be used 
  11563.                      as resource identifiers for this statement. 
  11564.  helppanel-id        Specifies the resource identifier of the help panel 
  11565.                      associated with the specified child window. 
  11566.  integer             Specifies optional, application-defined integers.  If you 
  11567.                      use this field, you must include the SUBITEMSIZE statement 
  11568.                      in the help subtable to specify the size, in words, of 
  11569.                      each help subitem in the help subtable. For details about 
  11570.                      this statement, see SUBITEMSIZE Statement. 
  11571.  
  11572.  Example 
  11573.  
  11574.  This example defines a help subitem that associates a child window called 
  11575.  IDCLD_FILEMENU with a help panel called IDHP_FILEMENU. 
  11576.  
  11577.   HELPSUBITEM IDCLD_FILEMENU, IDHP_FILEMENU
  11578.  
  11579.  
  11580. ΓòÉΓòÉΓòÉ 21.3.2.29. HELPSUBTABLE Statement ΓòÉΓòÉΓòÉ
  11581.  
  11582. Syntax: 
  11583.  
  11584.   HELPSUBTABLE helpsubtable-id
  11585.     SUBITEMSIZE size
  11586.   BEGIN
  11587.   helpsubitem-definition
  11588.       .
  11589.       .
  11590.       .
  11591.   END
  11592.  
  11593. The HELPSUBTABLE statement defines the contents of a help-subtable resource.  A 
  11594. help-subtable resource contains a help-subitem entry for each item that can be 
  11595. selected in an application window.  Each of these items should be a child 
  11596. window of the application window specified in the help-table resource.  The 
  11597. help subtable should contain a help subitem for each control, child window, and 
  11598. menu item in the application window. 
  11599.  
  11600. You can provide any number of HELPSUBTABLE statements in a resource script 
  11601. file, but each statement must specify a unique helpsubtable-id value.  You can 
  11602. also provide any number of helpsubitem-definition statements in the help 
  11603. subtable.  These specify the child window for which help is provided, the help 
  11604. panel containing the help text for the child window, and one or more 
  11605. application-defined integers. 
  11606.  
  11607. If you include optional integers in the helpsubitem-definition statements, you 
  11608. must also include a SUBITEMSIZE statement to specify the size, in words, of 
  11609. each help subitem.  All help subitems in a help subtable must be the same size. 
  11610. The default size is two words per help subitem. (No SUBITEMSIZE statement is 
  11611. needed if you do not include optional integers in the helpsubitem-definition 
  11612. statement.) 
  11613.  
  11614.  helpsubtable-id 
  11615.       Specifies the resource identifier of the help subtable. This value must 
  11616.       be an unsigned integer in the range of 1 through 65535, or a simple 
  11617.       expression that evaluates to a value in these ranges. Character strings 
  11618.       cannot be used as resource identifiers for this statement. 
  11619.  helpsubitem-definition 
  11620.       Specifies a HELPSUBITEM statement.  A HELPSUBITEM statement specifies a 
  11621.       child window, the help panel associated with the child window, and one or 
  11622.       more optional, application-defined integers.  For details about this 
  11623.       statement, see HELPSUBITEM Statement. 
  11624.  
  11625.  Example 
  11626.  
  11627.  This example creates a help-subtable resource whose help-subtable identifier 
  11628.  is IDSUB_FILEMENU.  Each HELPSUBITEM statement specifies a child window and a 
  11629.  help panel. 
  11630.  
  11631.   HELPSUBTABLE IDSUB_FILEMENU
  11632.   BEGIN
  11633.       HELPSUBITEM IDCLD_OPEN, IDPNL_OPEN
  11634.       HELPSUBITEM IDCLD_SAVE, IDPNL_SAVE
  11635.   END
  11636.  
  11637.  
  11638. ΓòÉΓòÉΓòÉ 21.3.2.30. HELPTABLE Statement ΓòÉΓòÉΓòÉ
  11639.  
  11640. Syntax: 
  11641.  
  11642.   HELPTABLE helptable-id
  11643.   BEGIN
  11644.   helpitem-definition
  11645.       .
  11646.       .
  11647.       .
  11648.   END
  11649.  
  11650. The HELPTABLE statement defines the contents of a help-table resource. A 
  11651. help-table resource contains a help-item entry for each application window, 
  11652. dialog box, and message box for which help is provided. 
  11653.  
  11654. You can provide any number of HELPTABLE statements in a resource script file, 
  11655. but each statement must specify a unique helptable-id value.  You can also 
  11656. provide any number of helpitem-definition statements in the help table.  These 
  11657. specify the application windows for which help is provided, the help subtables 
  11658. associated with each application window, and the extended help panels 
  11659. associated with each application window. 
  11660.  
  11661.  helptable-id          Specifies the resource identifier of the help table. 
  11662.                        This value must be an unsigned integer in the range of 1 
  11663.                        through 65535, or a simple expression that evaluates to 
  11664.                        a value in these ranges. Character strings cannot be 
  11665.                        used as resource identifiers for this statement. 
  11666.  helpitem-definition   Specifies a HELPITEM statement. A HELPITEM statement 
  11667.                        specifies an application window and the associated help 
  11668.                        subtable and extended help panel. For details about this 
  11669.                        statement, see HELPITEM Statement. 
  11670.  
  11671.  Example 
  11672.  
  11673.  This example creates a help-table resource whose help-table identifier is 1. 
  11674.  Each HELPITEM statement specifies an application window, a help subtable, and 
  11675.  an extended help panel. 
  11676.  
  11677.   HELPTABLE 1
  11678.   BEGIN
  11679.       HELPITEM IDWIN_FILEMENU, IDSUB_FILEMENU, IDEXT_APPHLP
  11680.       HELPITEM IDWIN_EDITMENU, IDSUB_EDITMENU, IDEXT_APPHLP
  11681.   END
  11682.  
  11683.  
  11684. ΓòÉΓòÉΓòÉ 21.3.2.31. ICON Statement (Resource) ΓòÉΓòÉΓòÉ
  11685.  
  11686. Syntax: 
  11687.  
  11688.   ICON icon-id  [load-option] [ mem-option] [codepage] filename
  11689.  
  11690. This form of the ICON statement defines an icon resource for an application. 
  11691. An icon resource, typically created by using Icon Editor, is a bit map defining 
  11692. the shape of the icon to be used for a given application.  The ICON statement 
  11693. copies the icon resource from the file specified in the filename field and adds 
  11694. it to the application's other resources.  An icon resource can be loaded when 
  11695. creating a window by using the WinCreateStdWindow function with the FS_ICON 
  11696. style. 
  11697.  
  11698. You can provide any number of ICON statements in a resource script file, but 
  11699. each statement must specify a unique icon-id value. 
  11700.  
  11701.  icon-id           Specifies the icon-resource identifier.  This value must be 
  11702.                    an unsigned integer in the range of 1 through 65535, a 
  11703.                    simple expression that evaluates to a value in these ranges, 
  11704.                    or a character string. An icon-id of 1 has a special 
  11705.                    meaning; for details, see the "Comment" section. 
  11706.  load-option       Specifies when the system loads the resource from the 
  11707.                    executable file into memory.  This value must be one of the 
  11708.                    following: 
  11709.                    PRELOAD             System loads the resource when the 
  11710.                                        application starts. 
  11711.                    LOADONCALL          System loads the resource when the 
  11712.                                        application calls the WinCreateStdWindow 
  11713.                                        function.  This is the default option. 
  11714.  mem-option        Specifies how the system manages the resource when it is in 
  11715.                    memory.  This value must be one or more of the following: 
  11716.                    FIXED               System keeps the resource at a fixed 
  11717.                                        memory location. 
  11718.                    MOVEABLE            System moves the resource as necessary 
  11719.                                        to compact memory. 
  11720.                    DISCARDABLE         System discards the resource if it is no 
  11721.                                        longer needed. The default setting is 
  11722.                    MOVEABLE and DISCARDABLE. 
  11723.  codepage          Specifies a code page value.  For a list of valid code pages 
  11724.                    see CODEPAGE Statement. 
  11725.  filename          Specifies the name of the file containing the icon resource. 
  11726.                    If the file is not in the current directory, filename must 
  11727.                    be preceded by a full path. 
  11728.  
  11729.  Comments 
  11730.  
  11731.  An icon with an icon-id of 1 is the default icon.  The RC program writes the 
  11732.  icon not only to the resources in your executable file, but also as the .ICON 
  11733.  extended attribute.  File Manager will display this icon next to the name of 
  11734.  the executable file. 
  11735.  
  11736.  Example 
  11737.  
  11738.  This example defines an icon whose icon identifier is 11.  The icon resource 
  11739.  is copied from the file custom.ico. 
  11740.  
  11741.   ICON 11 custom.ico
  11742.  
  11743.  
  11744. ΓòÉΓòÉΓòÉ 21.3.2.32. ICON Statement (Control) ΓòÉΓòÉΓòÉ
  11745.  
  11746. Syntax: 
  11747.  
  11748.   ICON icon-id, id, x, y, width, height, [style]
  11749.  
  11750. This form of the ICON statement creates an icon control.  This control is an 
  11751. icon displayed in a dialog box.  The ICON statement, which you can use only in 
  11752. a DIALOG or WINDOW statement, defines the icon-resource identifier, 
  11753. icon-control identifier, position, and attributes of a control window.  The 
  11754. predefined class for this control is WC_STATIC.  If you do not specify a style, 
  11755. the default style is SS_ICON.  For the ICON statement, the width and height 
  11756. fields are ignored; the icon automatically sizes itself. 
  11757.  
  11758.  icon-id   Specifies the resource identifier of an icon that is defined 
  11759.            elsewhere in the resource file. 
  11760.  id        Specifies the control identifier.  This value must be a signed 
  11761.            integer in the range -32768 through 32767, an unsigned integer in 
  11762.            the range of 1 through 65535, or a simple expression that evaluates 
  11763.            to a value in these ranges. 
  11764.  x         Specifies the x-coordinate of the lower-left corner of the control. 
  11765.            This value must be a signed integer in the range -32768 through 
  11766.            32767 or an expression consisting of integers and the addition (+) 
  11767.            or subtraction (-) operator.  The coordinate is assumed to be in 
  11768.            dialog units and is relative to the origin of the dialog box, 
  11769.            window, or control containing the specified control. 
  11770.  y         Specifies the y-coordinate of the lower-left corner of the control. 
  11771.            This value must be a signed integer in the range -32768 through 
  11772.            32767 or an expression consisting of integers and the addition (+) 
  11773.            or subtraction (-) operator.  The coordinate is assumed to be in 
  11774.            dialog units and is relative to the origin of the dialog box, 
  11775.            window, or control containing the specified control. 
  11776.  width     Specifies a reserved value.  Can be set to zero. 
  11777.  height    Specifies a reserved value.  Can be set to zero. 
  11778.  style     Specifies the control styles.  This value can be a combination of 
  11779.            the styles specified for WC_STATIC. You can use the bitwise OR (|) 
  11780.            operator to combine styles. 
  11781.  
  11782.  Example 
  11783.  
  11784.  This example creates an icon control whose icon identifier is 99. 
  11785.  
  11786.   ICON 99, 101, 10, 10, 0, 0
  11787.  
  11788.  
  11789. ΓòÉΓòÉΓòÉ 21.3.2.33. if Directive ΓòÉΓòÉΓòÉ
  11790.  
  11791. Syntax: 
  11792.  
  11793.   if constant-expression
  11794.  
  11795. The if directive controls conditional compilation of the resource file by 
  11796. checking the specified constant expression.  If the constant expression is 
  11797. nonzero, if directs the compiler to continue processing statements up to the 
  11798. next endif, else, or elif directive and then skip to the statement after the 
  11799. endif directive.  If the constant expression is zero, if directs the compiler 
  11800. to skip to the next endif, else, or elif directive. 
  11801.  
  11802.  constant-expression   Specifies the expression to be checked.  This value is a 
  11803.                        defined name, an integer constant, or an expression 
  11804.                        consisting of names, integers, and arithmetic and 
  11805.                        relational operators. 
  11806.  
  11807.  Example 
  11808.  
  11809.  This example compiles the BITMAP statement only if the value assigned to the 
  11810.  name "Version" is less than 3. 
  11811.  
  11812.   #if Version < 3
  11813.   BITMAP 1 errbox.bmp
  11814.   #endif
  11815.  
  11816.  
  11817. ΓòÉΓòÉΓòÉ 21.3.2.34. ifdef Directive ΓòÉΓòÉΓòÉ
  11818.  
  11819. Syntax: 
  11820.  
  11821.   ifdef name
  11822.  
  11823. The ifdef directive controls conditional compilation of the resource file by 
  11824. checking the specified name.  If the name has been defined by using a define 
  11825. directive or by using the -d command-line option of rc, ifdef directs the 
  11826. compiler to continue with the statement immediately after the ifdef directive. 
  11827. If the name has not been defined, ifdef directs the compiler to skip all 
  11828. statements up to the next endif directive. 
  11829.  
  11830.  name    Specifies the name to be checked by the directive. 
  11831.  
  11832.  Example 
  11833.  
  11834.  This example compiles the BITMAP statement only if the name "Debug" is 
  11835.  defined. 
  11836.  
  11837.   #ifdef Debug
  11838.   BITMAP 1 errbox.bmp
  11839.   #endif
  11840.  
  11841.  
  11842. ΓòÉΓòÉΓòÉ 21.3.2.35. ifndef Directive ΓòÉΓòÉΓòÉ
  11843.  
  11844. Syntax: 
  11845.  
  11846.   ifndef name
  11847.  
  11848. The ifndef directive controls conditional compilation of the resource file by 
  11849. checking the specified name.  If the name has not been defined or if its 
  11850. definition has been removed by using the undef directive, ifndef directs the 
  11851. compiler to continue processing statements up to the next endif, else, or elif 
  11852. directive and then skip to the statement after the endif directive.  If the 
  11853. name is defined, ifndef directs the compiler to skip to the next endif, else, 
  11854. or elif directive. 
  11855.  
  11856.  name    Specifies the name to be checked by the directive. 
  11857.  
  11858.  Example 
  11859.  
  11860.  This example compiles the BITMAP statement only if the name "Optimize" is not 
  11861.  defined. 
  11862.  
  11863.   #ifndef Optimize
  11864.   BITMAP 1 errbox.bmp
  11865.   #endif
  11866.  
  11867.  
  11868. ΓòÉΓòÉΓòÉ 21.3.2.36. include Directive ΓòÉΓòÉΓòÉ
  11869.  
  11870. Syntax: 
  11871.  
  11872.   include filename
  11873.  
  11874. The include directive causes RC to process the file specified in the filename 
  11875. field.  This file should be a header file that defines the constants used in 
  11876. the resource script file.  Only the #define directives in the specified file 
  11877. are processed; all other statements are ignored by the Resource Compiler. 
  11878.  
  11879.  filename    Specifies the OS/2 name of the file to be included.  This value 
  11880.              must be an ASCII string enclosed either in double quotation marks 
  11881.              (if the file is in the current directory) or in less-than and 
  11882.              greater-than characters (<>) (if the file is in the directory 
  11883.              specified by -i command-line options or by the INCLUDE environment 
  11884.              variable).  You must give a full path enclosed in double quotation 
  11885.              marks if the file is not in the current directory or in the 
  11886.              directory specified by -i command-line  options or by the INCLUDE 
  11887.              environment variable. 
  11888.  
  11889.  Comments 
  11890.  
  11891.  The filename field is handled as a C string.  Therefore, you must include two 
  11892.  backslashes wherever one is required in the path.  (As an alternative, you can 
  11893.  use a single forward slash (/) instead of two backslashes.) 
  11894.  
  11895.  Example 
  11896.  
  11897.  This example processes the header files OS2.H and HEADERS\MYDEFS.H\I while 
  11898.  compiling the resource script file. 
  11899.  
  11900.   #include <os2.h>
  11901.   #include "headers\\\\mydefs.h"
  11902.  
  11903.  
  11904. ΓòÉΓòÉΓòÉ 21.3.2.37. LISTBOX Statement ΓòÉΓòÉΓòÉ
  11905.  
  11906. Syntax: 
  11907.  
  11908.   LISTBOX id, x, y, width, height[, style]
  11909.  
  11910. The LISTBOX statement creates commonly used controls for a dialog box or 
  11911. window.  The control is a rectangle containing a list of user-selectable 
  11912. strings, such as file names. 
  11913.  
  11914. The LISTBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  11915. defines the identifier, dimensions, and attributes of a control window.  The 
  11916. predefined class for this control is WC_LISTBOX.  If you do not specify a 
  11917. style, the default style is WS_TABSTOP. 
  11918.  
  11919.  id      Specifies the control identifier.  This value must be a signed integer 
  11920.          in the range -32768 through 32767, an unsigned integer in the range of 
  11921.          1 through 65535, or a simple expression that evaluates to a value in 
  11922.          these ranges. 
  11923.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11924.          This value must be a signed integer in the range -32768 through 32767 
  11925.          or an expression consisting of integers and the addition (+) or 
  11926.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11927.          units and is relative to the origin of the dialog box, window, or 
  11928.          control containing the specified control. 
  11929.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11930.          This value must be a signed integer in the range -32768 through 32767 
  11931.          or an expression consisting of integers and the addition (+) or 
  11932.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11933.          units and is relative to the origin of the dialog box, window, or 
  11934.          control containing the specified control. 
  11935.  width   Specifies the width of the control.  This value must be an integer in 
  11936.          the range 0 through 65535 or an expression consisting of integers and 
  11937.          the addition (+) or subtraction (-) operator.  The width is in 
  11938.          n-character units. 
  11939.  height  Specifies the height of the control.  This value must be an integer in 
  11940.          the range 0 through 65535 or an expression consisting of integers and 
  11941.          the addition (+) or subtraction (-) operator.  The height is in 
  11942.          1/8-character units. 
  11943.  style   Specifies the control styles.  This value can be a combination of the 
  11944.          styles specified for WC_LISTBOX. You can use the bitwise OR (|) 
  11945.          operator to combine styles. 
  11946.  
  11947.  Example 
  11948.  
  11949.  This example creates a list-box control whose identifier is 101. 
  11950.  
  11951.   LISTBOX 101, 10, 10, 100, 100
  11952.  
  11953.  
  11954. ΓòÉΓòÉΓòÉ 21.3.2.38. LTEXT Statement ΓòÉΓòÉΓòÉ
  11955.  
  11956. Syntax: 
  11957.  
  11958.   LTEXT text, id, x, y, width, height [, style]
  11959.  
  11960. The LTEXT statement creates a left-aligned text control.  The control is a 
  11961. simple rectangle displaying the given text left-aligned in the rectangle.  The 
  11962. text is formatted before it is displayed.  Words that would extend past the end 
  11963. of a line are automatically wrapped to the beginning of the next line.  The 
  11964. LTEXT statement, which you can use only in a DIALOG or WINDOW statement, 
  11965. defines the text, identifier, dimensions, and attributes of the control.  The 
  11966. predefined class for this control is WC_STATIC.  If you do not specify a style, 
  11967. the default style is SS_TEXT, DT_LEFT, and WS_GROUP. 
  11968.  
  11969.  text    Specifies text that is left-aligned in the rectangular area of the 
  11970.          control.  This field must contain zero or more characters enclosed in 
  11971.          double quotation marks.  Character values must be in the range 1 
  11972.          through 255.  If a double quotation mark is required in the text, you 
  11973.          must include the double quotation mark twice. 
  11974.  id      Specifies the control identifier.  This value must be a signed integer 
  11975.          in the range -32768 through 32767, an unsigned integer in the range of 
  11976.          1 through 65535, or a simple expression that evaluates to a value in 
  11977.          these ranges. 
  11978.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11979.          This value must be a signed integer in the range -32768 through 32767 
  11980.          or an expression consisting of integers and the addition (+) or 
  11981.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11982.          units and is relative to the origin of the dialog box, window, or 
  11983.          control containing the specified control. 
  11984.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11985.          This value must be a signed integer in the range -32768 through 32767 
  11986.          or an expression consisting of integers and the addition (+) or 
  11987.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11988.          units and is relative to the origin of the dialog box, window, or 
  11989.          control containing the specified control. 
  11990.  width   Specifies the width of the control.  This value must be an integer in 
  11991.          the range 0 through 65535 or an expression consisting of integers and 
  11992.          the addition (+) or subtraction (-) operator.  The width is in 
  11993.          n-character units. 
  11994.  height  Specifies the height of the control.  This value must be an integer in 
  11995.          the range 0 through 65535 or an expression consisting of integers and 
  11996.          the addition (+) or subtraction (-) operator.  The height is in 
  11997.          1/8-character units. 
  11998.  style   Specifies the control styles.  This value can be a combination of the 
  11999.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  12000.          operator to combine styles. 
  12001.  
  12002.  Example 
  12003.  
  12004.  This example creates a left-aligned text control that is labeled "Filename." 
  12005.  
  12006.   LTEXT "Filename", 101, 10, 10, 100, 100
  12007.  
  12008.  
  12009. ΓòÉΓòÉΓòÉ 21.3.2.39. MENU Statement ΓòÉΓòÉΓòÉ
  12010.  
  12011. Syntax: 
  12012.  
  12013.   MENU menu-id  [load-option] [mem-option] [codepage]
  12014.   BEGIN
  12015.   menuitem-definition
  12016.       .
  12017.       .
  12018.       .
  12019.   END
  12020.  
  12021. The MENU statement defines the contents of a menu resource.  A menu resource is 
  12022. a collection of information that defines the appearance and function of an 
  12023. application menu.  A menu is a special input tool that lets a user choose 
  12024. commands from a list of command names.  A menu resource can be loaded from the 
  12025. executable file when needed by using the WinLoadMenu function. 
  12026.  
  12027. You can provide any number of MENU statements in a resource script file, but 
  12028. each statement must specify a unique menu-id value.  You can provide any number 
  12029. of menuitem-definition statements in the menu. These define the submenus and 
  12030. menu items (commands) in the menu.  The order of the statements defines the 
  12031. order of the menu items. 
  12032.  
  12033.  menu-id               Specifies the menu-resource identifier.  This value must 
  12034.                        be an unsigned integer in the range of 1 through 65535, 
  12035.                        a simple expression that evaluates to a value in these 
  12036.                        ranges, or a character string. 
  12037.  load-option           Specifies when the system loads the resource from the 
  12038.                        executable file into memory.  This value must be one of 
  12039.                        the following: 
  12040.                        PRELOAD             System loads the resource when the 
  12041.                                            application starts. 
  12042.                        LOADONCALL          System loads the resource when the 
  12043.                                            application calls the WinLoadMenu 
  12044.                                            function. This is the default 
  12045.                                            option. 
  12046.  mem-option            Specifies how the system manages the resource when it is 
  12047.                        in memory.  This value must be one or more of the 
  12048.                        following: 
  12049.                        FIXED               System keeps the resource at a fixed 
  12050.                                            memory location. 
  12051.                        MOVEABLE            System moves the resource as 
  12052.                                            necessary to compact memory. 
  12053.                        DISCARDABLE         System discards the resource if it 
  12054.                                            is no longer needed. The default 
  12055.                        setting is MOVEABLE and DISCARDABLE. 
  12056.  codepage              Specifies a codepage value.  For a list of valid code 
  12057.                        pages see CODEPAGE Statement. 
  12058.  menuitem-definition   Specifies a PRESPARAMS, MENUITEM, or SUBMENU statement. 
  12059.                        You can use one or more PRESPARAMS statements to control 
  12060.                        the appearance of a menu, such as the font and the 
  12061.                        foreground and background colors.  If used, PRESPARAMS 
  12062.                        statements must be the first statements following the 
  12063.                        BEGIN keyword.  For details about the PRESPARAMS 
  12064.                        statement, see PRESPARAMS Statement. 
  12065.  
  12066.                        MENUITEM and SUBMENU statements define the individual 
  12067.                        commands or submenus in the given menu.  For details 
  12068.                        about these statements, see MENUITEM Statement and 
  12069.                        SUBMENU Statement. 
  12070.  
  12071.  Example 
  12072.  
  12073.  This example creates a menu resource whose menu identifier is 1. The menu 
  12074.  contains a menu item named Alpha and a submenu named Beta. The submenu 
  12075.  contains two menu items, Item 1 and Item 2. 
  12076.  
  12077.   MENU 1
  12078.   BEGIN
  12079.       MENUITEM "Alpha", 100
  12080.       SUBMENU "Beta", 101
  12081.       BEGIN
  12082.           MENUITEM "Item 1", 200
  12083.           MENUITEM "Item 2", 201, , MIA_CHECKED
  12084.       END
  12085.   END
  12086.  
  12087.  
  12088. ΓòÉΓòÉΓòÉ 21.3.2.40. MENUITEM Statement ΓòÉΓòÉΓòÉ
  12089.  
  12090. Syntax: 
  12091.  
  12092.   MENUITEM text, menu-id[,  menuitem-style] [, menuitem-attribute]
  12093.  
  12094. The MENUITEM statement creates a menu item for a menu.  The statement, 
  12095. permitted only in a MENU or SUBMENU statement, defines the text, identifier, 
  12096. and attributes of a menu item.  The system displays the text when it displays 
  12097. the corresponding menu.  If the user chooses the menu item, the system 
  12098. generates a WM_COMMAND message that includes the specified menu-item identifier 
  12099. and sends it to the window owning the menu. 
  12100.  
  12101. MENUITEM SEPARATOR 
  12102.  
  12103. The alternative form of the MENUITEM statement, MENUITEM SEPARATOR, creates a 
  12104. menu separator.  A menu separator is a horizontal dividing bar between two menu 
  12105. items in a submenu.  The separator is not active - that is, the user cannot 
  12106. choose it, it has no text associated with it, and it has no identifier. 
  12107.  
  12108.  text              Specifies the text of the menu item.  This field must 
  12109.                    contain zero or more characters enclosed in double quotation 
  12110.                    marks.  Character values must be in the range 1 through 255. 
  12111.                    If a double quotation mark is required in the string, you 
  12112.                    must include the double quotation mark twice.  The tilde 
  12113.                    character ( ~ ) and the \t and \a character combinations 
  12114.                    have special meanings in the string; for details, see the 
  12115.                    "Comments" section. 
  12116.  
  12117.                    If the menuitem-style field is MIS_BITMAP, item-name must be 
  12118.                    a bit-map identifier instead of a name. The bit-map 
  12119.                    identifier must have been previously defined using a BITMAP 
  12120.                    statement, must be preceded by the \b character, and must be 
  12121.                    enclosed in double quotation marks. 
  12122.  
  12123.  menu-id           Specifies the menu-item identifier.  This value must be a 
  12124.                    signed integer in the range -32768 through 32767, an 
  12125.                    unsigned integer in the range of 1 through 65535, or a 
  12126.                    simple expression that evaluates to a value in these ranges. 
  12127.  
  12128.                    Duplicate menu-item identifiers are allowed, but menu items 
  12129.                    with non-unique identifiers cannot receive messages. 
  12130.  
  12131.                    Character strings cannot be used as resource identifiers for 
  12132.                    this statement. 
  12133.  
  12134.  menuitem-style    Specifies the menu-item style.  This value can be a 
  12135.                    combination of the following: 
  12136.  
  12137.                    MIS_BITMAP               Specifies that item-name is a bit 
  12138.                                             map identifier. 
  12139.                    MIS_BREAK                Specifies that the menu has 
  12140.                                             multiple columns of items in one 
  12141.                                             pull-down menu or multiple lines of 
  12142.                                             menus in the top-level menu. 
  12143.                    MIS_BREAKSEPARATOR       Specifies that the menu has a 
  12144.                                             vertical line between the columns 
  12145.                                             in a pull-down menu. 
  12146.                    MIS_BUTTONSEPARATOR      Specifies that the user can 
  12147.                                             activate the menu item only by 
  12148.                                             using the mouse.  The text is 
  12149.                                             centered in the item, rather than 
  12150.                                             left justified.  This option is 
  12151.                                             used for the Help item on the right 
  12152.                                             side of the menu bar. 
  12153.                    MIS_HELP                 Specifies that the menu item 
  12154.                                             generates a WM_HELP message. 
  12155.                    MIS_OWNERDRAW            Specifies that the menu item is 
  12156.                                             drawn by the owner window. 
  12157.                    MIS_SEPARATOR            Specifies that the menu item is a 
  12158.                                             menu separator. 
  12159.                    MIS_STATIC               Specifies that the user cannot 
  12160.                                             choose the menu item. 
  12161.                    MIS_SUBMENU              Specifies that the MENUITEM 
  12162.                                             statement is to be treated as a 
  12163.                                             SUBMENU statement.  When you 
  12164.                                             specify this option, you must 
  12165.                                             follow the MENUITEM statement with 
  12166.                                             a BEGIN and END clause, as in a 
  12167.                                             SUBMENU statement.  You may include 
  12168.                                             a PRESPARAMS statement immediately 
  12169.                                             after the BEGIN keyword. 
  12170.                    MIS_SYSCOMMAND           Specifies that the menu item 
  12171.                                             generates a WM_SYSCOMMAND message. 
  12172.                    MIS_TEXT                 Specifies that item-name is a 
  12173.                                             character string.  This is the 
  12174.                                             default option. 
  12175.  
  12176.  menuitem-attribute Specifies the menu-item attributes.  This value can be a 
  12177.                    combination of the following: 
  12178.  
  12179.                    MIA_CHECKED              Places a check mark next to the 
  12180.                                             menu-item name. 
  12181.                    MIA_DISABLED             Disables the menu item, preventing 
  12182.                                             the system from generating a 
  12183.                                             message when the user chooses the 
  12184.                                             command. 
  12185.                    MIA_FRAMED               Places a frame (heavy border) 
  12186.                                             around the menu item. 
  12187.                    MIA_HILITED              Places a highlight on the menu-item 
  12188.                                             name when it is displayed, by 
  12189.                                             inverting the name and background. 
  12190.                    MIA_NODISMISS            Causes a submenu or menu item to 
  12191.                                             remain displayed after the user 
  12192.                                             chooses an item. 
  12193.  
  12194.  Comments 
  12195.  
  12196.  You can use the \t or \a character combination in any item name. The \t 
  12197.  character inserts a tab when the name is displayed and is typically used to 
  12198.  separate the menu-item name from the name of an accelerator key.  The \a 
  12199.  character aligns to the right all text that follows it.  These characters are 
  12200.  intended to be used for menu items in submenus only.  The width of the 
  12201.  displayed submenu is always adjusted so that there is at least one space (and 
  12202.  usually more) between any pieces of text separated by a \t or a \a.  (When 
  12203.  compiling the menu resource, the compiler stores the \t and \a characters as 
  12204.  control characters.  For example, the \t is stored as 0x09.) 
  12205.  
  12206.  A tilde ( ~ ) character in the item name indicates that the following 
  12207.  character is used as a mnemonic character for the item. When the menu is 
  12208.  displayed, the tilde is not shown, but the mnemonic character is underlined. 
  12209.  The user can choose the menu item by pressing the key corresponding to the 
  12210.  underlined mnemonic character. 
  12211.  
  12212.  Example 
  12213.  
  12214.  This example creates a menu item named Alpha.  The item identifier is 101. 
  12215.  
  12216.   MENUITEM "Alpha", 101
  12217.  
  12218.  This example creates a menu item named Beta.  The item identifier is 102. The 
  12219.  menu item has a text style and a checked attribute. 
  12220.  
  12221.   MENUITEM "Beta", 102, MIS_TEXT, MIA_CHECKED
  12222.  
  12223.  This example creates a menu separator between menu items named Gamma and 
  12224.  Delta. 
  12225.  
  12226.   MENUITEM "Gamma", 103
  12227.   MENUITEM SEPARATOR
  12228.   MENUITEM "Delta", 104
  12229.  
  12230.  This example creates a menu item that has a bit map instead of a name. The 
  12231.  bit-map identifier, 1, is first defined using a BITMAP statement. The 
  12232.  identifier for the menu item is 301.  Note that a sign must be placed in front 
  12233.  of the bit map identifier in the MENUITEM statement. 
  12234.  
  12235.   BITMAP 1 mybitmap.bmp
  12236.  
  12237.   MENUITEM "#1", 301, MIS_BITMAP
  12238.  
  12239.  
  12240. ΓòÉΓòÉΓòÉ 21.3.2.41. MESSAGETABLE Statement ΓòÉΓòÉΓòÉ
  12241.  
  12242. Syntax: 
  12243.  
  12244.   MESSAGETABLE  [load-option] [mem-option] [codepage]
  12245.   BEGIN
  12246.   string-id string-definition
  12247.       .
  12248.       .
  12249.       .
  12250.   END
  12251.  
  12252. The MESSAGETABLE statement creates one or more string resources for an 
  12253. application.  A string resource is a null-terminated character string that has 
  12254. a unique string identifier.  A string resource can be loaded from the 
  12255. executable file when needed by using the DosGetResource function with the 
  12256. RT_MESSAGE resource type. RT_MESSAGE resources are bundled together in groups 
  12257. of 16, with any missing IDs replaced with zero length strings. Each group, or 
  12258. bundle, is assigned a unique sequential identifier. The resource string 
  12259. identifier is not necessarily the same as the identifier specified when using 
  12260. DosGetResource. The formula for calculating the identifier of the resource 
  12261. bundle, for use in DosGetResource, is as follows: 
  12262.  
  12263. bundle ID = (id / 16) + 1
  12264. where id is the string identifier assigned in the RC file. 
  12265.  
  12266. Thus, bundle 1 contains strings 0 to 15, bundle 2 contains strings 16 to 31, 
  12267. and so on. Once the address of the bundle has been returned by DosGetResource 
  12268. (using the calculated identifier), the buffer can be parsed to locate the 
  12269. particular string within the bundle. The number of the string is calculated by 
  12270. the formula: 
  12271.  
  12272. string = id % 16
  12273. (string = remainder for id/16). 
  12274.  
  12275. The buffer returned consists of the CodePage of the strings in the first 
  12276. USHORT, followed by the 16 strings in the bundle. The first BYTE of each string 
  12277. is the length of the string (including the null terminator), followed by the 
  12278. string and the terminator. A zero length string is represented by two bytes: 
  12279. 01 (string length) followed by the null terminator. 
  12280.  
  12281. You can provide any number of MESSAGETABLE statements in a resource script 
  12282. file.  The compiler treats all the strings from the various MESSAGETABLE 
  12283. statements as if they belonged to a single statement. This means that no two 
  12284. strings in a resource script file can have the same string identifier. 
  12285.  
  12286. Although the MESSAGETABLE and STRINGTABLE statements are nearly identical, most 
  12287. applications use the STRINGTABLE statement instead of the MESSAGETABLE 
  12288. statement to create string resources. 
  12289.  
  12290.  load-option    Specifies when the system loads the resource from the 
  12291.                 executable file into memory.  This value must be one of the 
  12292.                 following: 
  12293.                 PRELOAD             System loads the resource when the 
  12294.                                     application starts. 
  12295.                 LOADONCALL          System loads the resource when the 
  12296.                                     application calls the DosGetResource or 
  12297.                                     DosGetResource2 function.  This is the 
  12298.                                     default option. 
  12299.  mem-option     Specifies how the system manages the resource when it is in 
  12300.                 memory.  This value must be one or more of the following: 
  12301.                 FIXED               System keeps the resource at a fixed memory 
  12302.                                     location. 
  12303.                 MOVEABLE            System moves the resource as necessary to 
  12304.                                     compact memory. 
  12305.                 DISCARDABLE         System discards the resource if it is no 
  12306.                                     longer needed. The default setting is 
  12307.                 MOVEABLE and DISCARDABLE. 
  12308.  codepage       Specifies a code page value.  See CODEPAGE Statement for a list 
  12309.                 of valid code pages. 
  12310.  string-id      Specifies the character-string identifier.  This value must be 
  12311.                 a signed integer in the range -32768 through 32767, an unsigned 
  12312.                 integer in the range of 1 through 65535, or a simple expression 
  12313.                 that evaluates to a value in these ranges.  The value can be 
  12314.                 specified in decimal or hexadecimal notation.  Each string 
  12315.                 identifier in a resource script file must be unique. 
  12316.  string-definition Specifies a character string.  This field must contain zero 
  12317.                 or more characters enclosed in double quotation marks. 
  12318.                 Character values must be in the range 1 through 255.  If a 
  12319.                 double quotation mark is required in the string, you must 
  12320.                 provide the double quotation mark twice. 
  12321.  
  12322.  Comments 
  12323.  
  12324.  You can continue a string on multiple lines by terminating the line with a 
  12325.  backslash (\) or by terminating the line with a double quotation mark (") and 
  12326.  then starting the next line with a double quotation mark. 
  12327.  
  12328.  Example 
  12329.  
  12330.  This example creates two string resources whose string identifiers are 1 and 
  12331.  2. 
  12332.  
  12333.   MESSAGETABLE
  12334.   BEGIN
  12335.       1 "Filename not found"
  12336.       2 "Cannot open file for reading"
  12337.   END
  12338.  
  12339.  
  12340. ΓòÉΓòÉΓòÉ 21.3.2.42. MLE Statement ΓòÉΓòÉΓòÉ
  12341.  
  12342. Syntax: 
  12343.  
  12344.   MLE text, id, x, y, width, height[, style]
  12345.  
  12346. The MLE statement creates a multiple-line entry-field control.  The control is 
  12347. a rectangle in which the user can type and edit multiple lines of text.  The 
  12348. control displays a pointer when the user selects it.  The user can then use the 
  12349. keyboard to enter text or edit the existing text.  Editing keys include the 
  12350. BACKSPACE and DELETE keys. By using the mouse or the DIRECTION keys, the user 
  12351. can select the character or characters to delete or select the place to insert 
  12352. new characters.  The MLE statement, which you can use only in a DIALOG or 
  12353. WINDOW statement, defines the text, identifier, dimensions, and attributes of a 
  12354. control window.  The predefined class for this control is WC_MLE.  If you do 
  12355. not specify a style, the default style is MLS_BORDER, WS_GROUP, and WS_TABSTOP. 
  12356.  
  12357.  text    Specifies text that is displayed in the rectangular area of the 
  12358.          control.  If the MLS_READONLY style is not specified, the user can 
  12359.          edit the text.  This field must contain zero or more characters 
  12360.          enclosed in double quotation marks.  Character values must be in the 
  12361.          range 1 through 255.  If a double quotation mark is required in the 
  12362.          text, you must include the double quotation mark twice. 
  12363.  id      Specifies the control identifier.  This value must be a signed integer 
  12364.          in the range -32768 through 32767, an unsigned integer in the range of 
  12365.          1 through 65535, or a simple expression that evaluates to a value in 
  12366.          these ranges. 
  12367.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  12368.          This value must be a signed integer in the range -32768 through 32767 
  12369.          or an expression consisting of integers and the addition (+) or 
  12370.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12371.          units and is relative to the origin of the dialog box, window, or 
  12372.          control containing the specified control. 
  12373.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  12374.          This value must be a signed integer in the range -32768 through 32767 
  12375.          or an expression consisting of integers and the addition (+) or 
  12376.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12377.          units and is relative to the origin of the dialog box, window, or 
  12378.          control containing the specified control. 
  12379.  width   Specifies the width of the control.  This value must be an integer in 
  12380.          the range 0 through 65535 or an expression consisting of integers and 
  12381.          the addition (+) or subtraction (-) operator.  The width is in 
  12382.          n-character units. 
  12383.  height  Specifies the height of the control.  This value must be an integer in 
  12384.          the range 0 through 65535 or an expression consisting of integers and 
  12385.          the addition (+) or subtraction (-) operator.  The height is in 
  12386.          1/8-character units. 
  12387.  style   Specifies the control styles.  This value can be a combination of the 
  12388.          styles specified for WC_MLE. You can use the bitwise OR (|) operator 
  12389.          to combine styles. 
  12390.  
  12391.  Example 
  12392.  
  12393.  This example creates a multiple-line entry-field control that is not labeled. 
  12394.  
  12395.   MLE "", 101, 10, 10, 50, 100
  12396.  
  12397.  
  12398. ΓòÉΓòÉΓòÉ 21.3.2.43. NOTEBOOK Statement ΓòÉΓòÉΓòÉ
  12399.  
  12400. Syntax: 
  12401.  
  12402.   NOTEBOOK   id, x, y, width, height[, style]
  12403.  
  12404. The NOTEBOOK statement creates a notebook control within the dialog window. 
  12405. This control is used to organize information on individual pages so that it can 
  12406. be located and displayed easily. The NOTEBOOK statement defines the identifier, 
  12407. position, dimensions, and attributes of a notebook control. The predefined 
  12408. class for this control is WC_NOTEBOOK. If you do not specify a style, the 
  12409. default style is WS_TABSTOP and WS_VISIBLE. 
  12410.  
  12411.  id      Specifies the control identifier.  The value is a signed integer 
  12412.          -32768 through 32767, an unsigned integer in the range of 1 through 
  12413.          65535, or a simple expression that evaluates to a value in these 
  12414.          ranges. 
  12415.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  12416.          The value is a signed integer -32768 through 32767 or an expression 
  12417.          consisting of integers and the addition (+) or subtraction (-) 
  12418.          operator.  The coordinate is assumed to be in dialog units and is 
  12419.          relative to the origin of the dialog window. 
  12420.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  12421.          The value is a signed integer -32768 through 32767 or an expression 
  12422.          consisting of integers and the addition (+) or subtraction (-) 
  12423.          operator.  The coordinate is assumed to be in dialog units and is 
  12424.          relative to the origin of the dialog window. 
  12425.  width   Specifies the width of the control.  The value is any integer 0 
  12426.          through 65535 or an expression consisting of integers and the addition 
  12427.          (+) or subtraction (-) operator. The width is in n-character units. 
  12428.  height  Specifies the height of the control.  The value is any integer 0 
  12429.          through 65535 or an expression consisting of integers and the 
  12430.          addition (+) or subtraction (-) operator. The height is in 
  12431.          1/8-character units. 
  12432.  style   Specifies the control styles.  This value can be a combination of the 
  12433.          styles specified for WC_NOTEBOOK.  You can use the bitwise OR ( | ) 
  12434.          operator to combine styles. 
  12435.  
  12436.  Comments 
  12437.  
  12438.  The NOTEBOOK statement is used only in a DIALOG or WINDOW statement. 
  12439.  
  12440.  Example 
  12441.  
  12442.  This example creates a notebook control at position (20, 20) within the dialog 
  12443.  window.  The notebook has a width of 200 character units and a height of 50 
  12444.  character units.  Its resource identifier is 201. The tabs style 
  12445.  BKS_ROUNDEDTABS specification overrides the notebook default style of square 
  12446.  tabs. The default styles WS_TABSTOP and WS_GROUP are both in effect, though 
  12447.  only the latter is specified. 
  12448.  
  12449.   #define    IDC_NOTEBOOK     201
  12450.   #define    IDD_NOTEBOOKDLG  503
  12451.   DIALOG "Notebook", IDD_NOTEBOOKDLG, 11, 11, 420, 420, FS_NOBYTEALIGN |
  12452.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  12453.     BEGIN
  12454.       NOTEBOOK   IDC_NOTEBOOK, 20, 20, 200, 400, BKS_ROUNDEDTABS | WS_GROUP
  12455.     END
  12456.  
  12457.  
  12458. ΓòÉΓòÉΓòÉ 21.3.2.44. POINTER Statement ΓòÉΓòÉΓòÉ
  12459.  
  12460. Syntax: 
  12461.  
  12462.   POINTER pointer-id  [load-option]  [ mem-option] [codepage] filename
  12463.  
  12464. The POINTER statement defines a pointer resource for an application. A pointer 
  12465. resource, typically created by using the OS/2 Icon Editor, is a bit map 
  12466. defining the shape of the mouse pointer on the screen. The POINTER statement 
  12467. copies the pointer resource from the file specified in the filename field and 
  12468. adds it to the application's other resources.  A pointer resource can be loaded 
  12469. from the executable file when needed by using the WinLoadPointer function. 
  12470.  
  12471. You can provide any number of POINTER statements in a resource script file, but 
  12472. each statement must specify a unique pointer-id value. 
  12473.  
  12474.  pointer-id        Specifies the pointer-resource identifier.  This value must 
  12475.                    be an unsigned integer in the range of 1 through 65535, a 
  12476.                    simple expression that evaluates to a value in these ranges, 
  12477.                    or a character string. 
  12478.  load-option       Specifies when the system loads the resource from the 
  12479.                    executable file into memory.  This value must be one of the 
  12480.                    following: 
  12481.                    PRELOAD             System loads the resource when the 
  12482.                                        application starts. 
  12483.                    LOADONCALL          System loads the resource when the 
  12484.                                        application calls the WinLoadPointer 
  12485.                                        function.  This is the default option. 
  12486.  mem-option        Specifies how the system manages the resource when it is in 
  12487.                    memory.  This value must be one or more of the following: 
  12488.                    FIXED               System keeps the resource at a fixed 
  12489.                                        memory location. 
  12490.                    MOVEABLE            System moves the resource as necessary 
  12491.                                        to compact memory. 
  12492.                    DISCARDABLE         System discards the resource if it is no 
  12493.                                        longer needed. The default setting is 
  12494.                    MOVEABLE and DISCARDABLE. 
  12495.  codepage          Specifies a code page value.  See CODEPAGE Statement for a 
  12496.                    list of valid code pages. 
  12497.  filename          Specifies the name of the file containing the pointer 
  12498.                    resource. If the file is not in the current directory, 
  12499.                    filename must be preceded by a full path. 
  12500.  
  12501.  Example 
  12502.  
  12503.  This example defines a pointer whose pointer identifier is 10. The pointer 
  12504.  resource is copied from the file custom.cur. 
  12505.  
  12506.   POINTER 10 custom.cur
  12507.  
  12508.  
  12509. ΓòÉΓòÉΓòÉ 21.3.2.45. PRESPARAMS Statement ΓòÉΓòÉΓòÉ
  12510.  
  12511. Syntax: 
  12512.  
  12513.   PRESPARAMS presparam, value, presparam, value, ...
  12514.  
  12515. The PRESPARAMS statement defines presentation fields that customize a dialog 
  12516. box, menu, window, or control.  PRESPARAMS data is a series of types and 
  12517. values.  The window procedure of the dialog box, menu, window or control 
  12518. receives and processes this data when the item is created.  The data for custom 
  12519. controls can be in any format. 
  12520.  
  12521.  presparam   Specifies a presentation-field type. 
  12522.  value       Specifies the presentation-field value. 
  12523.  
  12524.  Comments 
  12525.  
  12526.  PRESPARAMS is often used to supply data to control the appearance of the 
  12527.  customized window when it is first created.  For example, the PRESPARAMS 
  12528.  statement may specify the colors to be used in the window. 
  12529.  
  12530.  Example 
  12531.  
  12532.  This example creates a menu resource with a menu identifier of 1. The 
  12533.  PRESPARAMS statement specifies that the following three menu items be 
  12534.  displayed in the 12-point Helvetica font. 
  12535.  
  12536.   MENU 1
  12537.   BEGIN
  12538.       PRESPARAMS PP_FONTNAMESIZE, "12.Helv"
  12539.       MENUITEM "New", 100
  12540.       MENUITEM "Open", 101
  12541.       MENUITEM "Save", 102
  12542.   END
  12543.  
  12544.  
  12545. ΓòÉΓòÉΓòÉ 21.3.2.46. PUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  12546.  
  12547. Syntax: 
  12548.  
  12549.   PUSHBUTTON text, id, x, y, width, height[, style]
  12550.  
  12551. The PUSHBUTTON statement creates a pushbutton control.  The control is a 
  12552. round-cornered rectangle containing the given text.  The control sends a 
  12553. message to its parent whenever the user chooses the control. The PUSHBUTTON 
  12554. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  12555. text, identifier, dimensions, and attributes of a control window.  The 
  12556. predefined class for this control is WC_BUTTON. If you do not specify a style, 
  12557. the default style is BS_PUSHBUTTON and WS_TABSTOP. 
  12558.  
  12559.  text    Specifies text that is centered in the rectangular area of the 
  12560.          control.  This field must contain zero or more characters enclosed in 
  12561.          double quotation marks.  Character values must be in the range 1 
  12562.          through 255.  If a double quotation mark is required in the text, you 
  12563.          must include the double quotation mark twice.  A tilde ( ~ ) character 
  12564.          in the text indicates that the following character is used as a 
  12565.          mnemonic character for the control.  When the control is displayed, 
  12566.          the tilde is not shown, but the mnemonic character is underlined. The 
  12567.          user can choose the control by pressing the key corresponding to the 
  12568.          underlined mnemonic character. 
  12569.  id      Specifies the control identifier.  This value must be a signed integer 
  12570.          in the range -32768 through 32767, an unsigned integer in the range of 
  12571.          1 through 65535, or a simple expression that evaluates to a value in 
  12572.          these ranges. 
  12573.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  12574.          This value must be a signed integer in the range -32768 through 32767 
  12575.          or an expression consisting of integers and the addition (+) or 
  12576.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12577.          units and is relative to the origin of the dialog box, window, or 
  12578.          control containing the specified control. 
  12579.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  12580.          This value must be a signed integer in the range -32768 through 32767 
  12581.          or an expression consisting of integers and the addition (+) or 
  12582.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12583.          units and is relative to the origin of the dialog box, window, or 
  12584.          control containing the specified control. 
  12585.  width   Specifies the width of the control.  This value must be an integer in 
  12586.          the range 0 through 65535 or an expression consisting of integers and 
  12587.          the addition (+) or subtraction (-) operator.  The width is in 
  12588.          n-character units. 
  12589.  height  Specifies the height of the control.  This value must be an integer in 
  12590.          the range 0 through 65535 or an expression consisting of integers and 
  12591.          the addition (+) or subtraction (-) operator.  The height is in 
  12592.          1/8-character units. 
  12593.  style   Specifies the control styles.  This value can be a combination of the 
  12594.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  12595.          operator to combine styles. 
  12596.  
  12597.  Example 
  12598.  
  12599.  This example creates a pushbutton control that is labeled "OK." 
  12600.  
  12601.   PUSHBUTTON "OK", 101, 10, 10, 100, 100
  12602.  
  12603.  
  12604. ΓòÉΓòÉΓòÉ 21.3.2.47. RADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  12605.  
  12606. Syntax: 
  12607.  
  12608.   RADIOBUTTON text, id, x, y, width, height[, style]
  12609.  
  12610. The RADIOBUTTON statement creates a radio-button control.  The control is a 
  12611. small circle that has the given text displayed to its right.  The control 
  12612. highlights the circle and sends a message to its parent window when the user 
  12613. selects the button.  The control removes the highlight and sends a message when 
  12614. the button is next selected.  The RADIOBUTTON statement, which you can use only 
  12615. in a DIALOG or WINDOW statement, defines the text, identifier, dimensions, and 
  12616. attributes of a control window.  The predefined class for this control is 
  12617. WC_BUTTON.  If you do not specify a style, the default style is BS_RADIOBUTTON. 
  12618.  
  12619.  text    Specifies text that is displayed to the right of the control.  This 
  12620.          field must contain zero or more characters enclosed in double 
  12621.          quotation marks.  Character values must be in the range 1 through 255. 
  12622.          If a double quotation mark is required in the text, you must include 
  12623.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  12624.          indicates that the following character is used as a mnemonic character 
  12625.          for the control.  When the control is displayed, the tilde is not 
  12626.          shown, but the mnemonic character is underlined.  The user can choose 
  12627.          the control by pressing the key corresponding to the underlined 
  12628.          mnemonic character. 
  12629.  id      Specifies the control identifier.  This value must be a signed integer 
  12630.          in the range -32768 through 32767, an unsigned integer in the range of 
  12631.          1 through 65535, or a simple expression that evaluates to a value in 
  12632.          these ranges. 
  12633.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  12634.          This value must be a signed integer in the range -32768 through 32767 
  12635.          or an expression consisting of integers and the addition (+) or 
  12636.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12637.          units and is relative to the origin of the dialog box, window, or 
  12638.          control containing the specified control. 
  12639.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  12640.          This value must be a signed integer in the range -32768 through 32767 
  12641.          or an expression consisting of integers and the addition (+) or 
  12642.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12643.          units and is relative to the origin of the dialog box, window, or 
  12644.          control containing the specified control. 
  12645.  width   Specifies the width of the control.  This value must be an integer in 
  12646.          the range 0 through 65535 or an expression consisting of integers and 
  12647.          the addition (+) or subtraction (-) operator.  The width is in 
  12648.          n-character units. 
  12649.  height  Specifies the height of the control.  This value must be an integer in 
  12650.          the range 0 through 65535 or an expression consisting of integers and 
  12651.          the addition (+) or subtraction (-) operator.  The height is in 
  12652.          1/8-character units. 
  12653.  style   Specifies the control styles.  This value can be a combination of the 
  12654.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  12655.          operator to combine styles. 
  12656.  
  12657.  Example 
  12658.  
  12659.  This example creates a radio-button control that is labeled "Italic." 
  12660.  
  12661.   RADIOBUTTON "Italic", 101, 10, 10, 24, 50
  12662.  
  12663.  
  12664. ΓòÉΓòÉΓòÉ 21.3.2.48. RCDATA Statement ΓòÉΓòÉΓòÉ
  12665.  
  12666. Syntax: 
  12667.  
  12668.   RCDATA resource-id
  12669.   BEGIN
  12670.   data-definition, data-definition   ...
  12671.       .
  12672.       .
  12673.       .
  12674.   END
  12675.  
  12676. The RCDATA statement defines a custom-data resource for an application.  The 
  12677. custom data can be in whatever format the application requires.  You can 
  12678. provide any number of RCDATA statements in a resource script file, but each 
  12679. statement must specify a unique resource-id value.  A custom-data resource can 
  12680. be loaded from the executable file when needed by using the DosGetResource or 
  12681. DosGetResource2 functions with the RT_RCDATA resource type. 
  12682.  
  12683.  resource-id       Specifies the custom-data identifier.  This value must be an 
  12684.                    unsigned integer in the range of 1 through 65535, a simple 
  12685.                    expression that evaluates to a value in these ranges, or a 
  12686.                    character string. 
  12687.  data-definition   Specifies the custom data.  The data may be simple 
  12688.                    expressions or strings. 
  12689.  
  12690.  Example 
  12691.  
  12692.  This example defines custom data that has a resource identifier of 5. 
  12693.  
  12694.   RCDATA 5
  12695.   BEGIN
  12696.       "E. A. Poe", 1849, -32, 3L, 0x8000000l, 3+4+5
  12697.   END
  12698.  
  12699.  
  12700. ΓòÉΓòÉΓòÉ 21.3.2.49. RCINCLUDE Statement ΓòÉΓòÉΓòÉ
  12701.  
  12702. Syntax: 
  12703.  
  12704.   RCINCLUDE filename
  12705.  
  12706. The RCINCLUDE statement causes RC to process the resource script file specified 
  12707. in the filename field along with the current resource script file.  The 
  12708. contents of both files are compiled by RC and the results are placed in one 
  12709. binary resource file and/or executable file. 
  12710.  
  12711.  filename    Specifies the name of the resource script file to be included. If 
  12712.              the file is not in the current directory, filename must be 
  12713.              preceded by a full path. 
  12714.  
  12715.  Comments 
  12716.  
  12717.  RCINCLUDE statements are processed before any other processing is done. 
  12718.  
  12719.  When specifying a high performance file system (HPFS) file name on an 
  12720.  RCINCLUDE statement, enclose the path and file name in double quotes; for 
  12721.  example: 
  12722.  
  12723.      RCINCLUDE "d:\project\long dialog.dlg"
  12724.  
  12725.  Double quotes enables the Resource Compiler to recognize a name containing 
  12726.  embedded blank characters. 
  12727.  
  12728.  Example 
  12729.  
  12730.  This example includes the file DIALOGS.RC as part of the current resource 
  12731.  script file. 
  12732.  
  12733.   RCINCLUDE dialogs.rc
  12734.  
  12735.  
  12736. ΓòÉΓòÉΓòÉ 21.3.2.50. RESOURCE Statement ΓòÉΓòÉΓòÉ
  12737.  
  12738. Syntax: 
  12739.  
  12740.   RESOURCE type-id resource-id [load-option] [mem-option]
  12741.            [code-page] filename
  12742.  
  12743.   or
  12744.  
  12745.   RESOURCE type-id resource-id [load-option] [mem-option]
  12746.            [code-page]
  12747.   BEGIN
  12748.   data-definition [, data-definition]...
  12749.   ...
  12750.   END
  12751.  
  12752. The RESOURCE statement defines a custom resource for an application. A custom 
  12753. resource can be any data in any format. The RESOURCE statement copies the 
  12754. custom resource from the specified file or inline data, and adds it to the 
  12755. application's other resources. A custom resource can be loaded from the 
  12756. executable file when needed by using the DosGetResource or DosGetResource2 
  12757. function and specifying the resource's type and resource identifier. 
  12758.  
  12759. The custom resource data can be defined in a separate file or as inline data in 
  12760. the input script. This is reflected in the two formats that can be used for 
  12761. this statement. The first format is used when the custom resource data is being 
  12762. read from a file. The second format is used when the data consists of a block 
  12763. of raw source data that is defined inline in the input script. 
  12764.  
  12765. You can provide any number of RESOURCE statements in a resource script file, 
  12766. but each statement must specify a unique combination of type-id and resource-id 
  12767. values. That is, RESOURCE statements having the same type-id value are 
  12768. permitted as long as the resource-id value for each is unique. 
  12769.  
  12770.  type-id           Specifies the custom-resource type.  This value must be an 
  12771.                    integer in the range 256 through 65535, or a simple 
  12772.                    expression that evaluates to a value in that range.  (Values 
  12773.                    0 through 255 are reserved.) 
  12774.  resource-id       Specifies the custom-resource identifier.  This value must 
  12775.                    be a signed integer in the range -32768 through 32767, an 
  12776.                    unsigned integer in the range of 1 through 65535, a simple 
  12777.                    expression that evaluates to a value in these ranges, or a 
  12778.                    character string. 
  12779.  load-option       Specifies when the system loads the resource from the 
  12780.                    executable file into memory.  This value must be one of the 
  12781.                    following: 
  12782.                    PRELOAD             System loads the resource when the 
  12783.                                        application starts. 
  12784.                    LOADONCALL          System loads the resource when the 
  12785.                                        application calls the DosGetResource or 
  12786.                                        DosGetResource2 function.  This is the 
  12787.                                        default option. 
  12788.  mem-option        Specifies how the system manages the resource when it is in 
  12789.                    memory.  This value must be one or more of the following: 
  12790.                    FIXED               System keeps the resource at a fixed 
  12791.                                        memory location. 
  12792.                    MOVEABLE            System moves the resource as necessary 
  12793.                                        to compact memory. 
  12794.                    DISCARDABLE         System discards the resource if it is no 
  12795.                                        longer needed. The default setting is 
  12796.                    MOVEABLE and DISCARDABLE. 
  12797.  codepage          Specifies a code page value. See CODEPAGE Statement. for a 
  12798.                    list of valid code pages. 
  12799.  filename          Specifies the name of the file containing the custom 
  12800.                    resource. If the file is not in the current directory, 
  12801.                    filename must be preceded by a full path. 
  12802.  data-definition   Specifies a custom data definition.  The data can be a 
  12803.                    simple expression or a string.  Integers can be specified in 
  12804.                    decimal, octal, or hexadecimal format.  Data definitions in 
  12805.                    series on the same line are separated by commas.  An integer 
  12806.                    specified without the suffix L must be in the range -32768 
  12807.                    through 65535. An integer with an L suffix must be within 
  12808.                    the range -2147483648 through 4294967295.  String data is 
  12809.                    specified within quotes. 
  12810.  
  12811.                    Note:  The Resource Compiler does not append a null 
  12812.                           character to the end of these strings as it does for 
  12813.                           RCDATA blocks;  any required null characters must be 
  12814.                           written as \0 within the data string. 
  12815.  
  12816.  Example 
  12817.  
  12818.  This example defines a custom resource whose type identifier is 300 and whose 
  12819.  resource identifier is 14.  The custom resource is copied from the file 
  12820.  CUSTOM.RES. 
  12821.  
  12822.   RESOURCE 300 14 custom.res
  12823.  
  12824.  
  12825. ΓòÉΓòÉΓòÉ 21.3.2.51. RTEXT Statement ΓòÉΓòÉΓòÉ
  12826.  
  12827. Syntax: 
  12828.  
  12829.   RTEXT text, id, x, y, width, height[, style]
  12830.  
  12831. The RTEXT statement creates a right-aligned text control.  The control is a 
  12832. simple rectangle displaying the given text right-aligned in the rectangle.  The 
  12833. text is formatted before it is displayed.  Words that would extend past the end 
  12834. of a line are automatically wrapped to the beginning of the next line.  The 
  12835. RTEXT statement, which you can use only in a DIALOG or WINDOW statement, 
  12836. defines the text, identifier, dimensions, and attributes of the control.  The 
  12837. predefined class for the control is WC_STATIC.  If you do not specify a style, 
  12838. the default style is SS_TEXT, DT_RIGHT, and WS_GROUP. 
  12839.  
  12840.  text    Specifies text that is right-aligned in the rectangular area of the 
  12841.          control.  This field must contain zero or more characters enclosed in 
  12842.          double quotation marks.  Character values must be in the range 1 
  12843.          through 255.  If a double quotation mark is required in the text, you 
  12844.          must include the double quotation mark twice. 
  12845.  id      Specifies the control identifier.  This value must be a signed integer 
  12846.          in the range -32768 through 32767, an unsigned integer in the range of 
  12847.          1 through 65535, or a simple expression that evaluates to a value in 
  12848.          these ranges. 
  12849.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  12850.          This value must be a signed integer in the range -32768 through 32767 
  12851.          or an expression consisting of integers and the addition (+) or 
  12852.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12853.          units and is relative to the origin of the dialog box, window, or 
  12854.          control containing the specified control. 
  12855.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  12856.          This value must be a signed integer in the range -32768 through 32767 
  12857.          or an expression consisting of integers and the addition (+) or 
  12858.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12859.          units and is relative to the origin of the dialog box, window, or 
  12860.          control containing the specified control. 
  12861.  width   Specifies the width of the control.  This value must be an integer in 
  12862.          the range 0 through 65535 or an expression consisting of integers and 
  12863.          the addition (+) or subtraction (-) operator.  The width is in 
  12864.          n-character units. 
  12865.  height  Specifies the height of the control.  This value must be an integer in 
  12866.          the range 0 through 65535 or an expression consisting of integers and 
  12867.          the addition (+) or subtraction (-) operator.  The height is in 
  12868.          1/8-character units. 
  12869.  style   Specifies the control styles.  This value can be a combination of the 
  12870.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  12871.          operator to combine styles. 
  12872.  
  12873.  Example 
  12874.  
  12875.  This example creates a right-aligned text control that is labeled "Filename." 
  12876.  
  12877.   RTEXT "Filename", 101, 10, 10, 100, 100
  12878.  
  12879.  
  12880. ΓòÉΓòÉΓòÉ 21.3.2.52. SLIDER Statement ΓòÉΓòÉΓòÉ
  12881.  
  12882. Syntax: 
  12883.  
  12884.   SLIDER   id, x, y, width, height[, style]
  12885.  
  12886. The SLIDER statement creates a slider control within the dialog window.  This 
  12887. control lets the user set, display, or modify a value by moving a slider arm 
  12888. along a slider shaft.  The SLIDER statement defines the identifier, position, 
  12889. dimensions, and attributes of a slider control.  The predefined class for this 
  12890. control is WC_SLIDER.  If you do not specify a style, the default style is 
  12891. WS_TABSTOP and WS_VISIBLE. 
  12892.  
  12893.  id      Specifies the control identifier.  The value is a signed integer 
  12894.          -32768 through 32767, an unsigned integer in the range of 1 through 
  12895.          65535, or a simple expression that evaluates to a value in these 
  12896.          ranges. 
  12897.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  12898.          The value is a signed integer -32768 through 32767 or an expression 
  12899.          consisting of integers and the addition (+) or subtraction (-) 
  12900.          operator.  The coordinate is assumed to be in dialog units and is 
  12901.          relative to the origin of the dialog window. 
  12902.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  12903.          The value is a signed integer -32768 through 32767 or an expression 
  12904.          consisting of integers and the addition (+) or subtraction (-) 
  12905.          operator.  The coordinate is assumed to be in dialog units and is 
  12906.          relative to the origin of the dialog window. 
  12907.  width   Specifies the width of the control.  The value is any integer 0 
  12908.          through 65535 or an expression consisting of integers and the addition 
  12909.          (+) or subtraction (-) operator. The width is in n-character units. 
  12910.  height  Specifies the height of the control.  The value is any integer 0 
  12911.          through 65535 or an expression consisting of integers and the addition 
  12912.          (+) or subtraction (-) operator. The height is in 1/8-character units. 
  12913.  style   Specifies the control styles.  The value can be any combination of the 
  12914.          styles specified for WC_SLIDER.  You can use the bitwise OR ( | ) 
  12915.          operator to combine styles. 
  12916.  
  12917.  Comments 
  12918.  
  12919.  The SLIDER statement is only used in a DIALOG or WINDOW statement. 
  12920.  
  12921.  Example 
  12922.  
  12923.  This example creates a slider control at position (40, 30) within the dialog 
  12924.  window.  The slider has a width of 120 character units and a height of 2 
  12925.  character units.  Its resource identifier is 101. The style specification 
  12926.  SLS_BUTTONSLEFT adds buttons to the left of the slider shaft.  The default 
  12927.  styles WS_TABSTOP and WS_VISIBLE are both in effect, though only the latter is 
  12928.  specified. 
  12929.  
  12930.   #define    IDC_SLIDER       101
  12931.   #define    IDD_SLIDERDLG    502
  12932.   DIALOG "Slider", IDD_SLIDERDLG, 11, 11, 200, 240, FS_NOBYTEALIGN |
  12933.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  12934.     BEGIN
  12935.       SLIDER   IDC_SLIDER, 40, 30, 120, 16, SLS_BUTTONSLEFT | WS_VISIBLE
  12936.     END
  12937.  
  12938.  
  12939. ΓòÉΓòÉΓòÉ 21.3.2.53. SPINBUTTON Statement ΓòÉΓòÉΓòÉ
  12940.  
  12941. Syntax: 
  12942.  
  12943.   SPINBUTTON   id, x, y, width, height[, style]
  12944.  
  12945. The SPINBUTTON statement creates a spin button control within the dialog 
  12946. window.  This control gives the user quick access to a finite set of data.  The 
  12947. SPINBUTTON statement defines the identifier, position, dimensions, and 
  12948. attributes of a spin button control.  The predefined class for this control is 
  12949. WC_SPINBUTTON. If you do not specify a style, the default style is WS_TABSTOP, 
  12950. WS_VISIBLE, and SPBS_MASTER. 
  12951.  
  12952.  id      Specifies the control identifier.  The value is a signed integer 
  12953.          -32768 through 32767, an unsigned integer in the range of 1 through 
  12954.          65535, or a simple expression that evaluates to a value in these 
  12955.          ranges. 
  12956.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  12957.          The value is a signed integer -32768 through 32767 or an expression 
  12958.          consisting of integers and the addition (+) or subtraction (-) 
  12959.          operator.  The coordinate is assumed to be in dialog units and is 
  12960.          relative to the origin of the dialog window. 
  12961.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  12962.          The value is a signed integer -32768 through 32767 or an expression 
  12963.          consisting of integers and the addition (+) or subtraction (-) 
  12964.          operator.  The coordinate is assumed to be in dialog units and is 
  12965.          relative to the origin of the dialog window. 
  12966.  width   Specifies the width of the control.  The value is any integer 0 
  12967.          through 65535 or an expression consisting of integers and the addition 
  12968.          (+) or subtraction (-) operator. The width is in n-character units. 
  12969.  height  Specifies the height of the control.  The value is any integer 0 
  12970.          through 65535 or an expression consisting of integers and the addition 
  12971.          (+) or subtraction (-) operator. The height is in 1/8-character units. 
  12972.  style   Specifies the control styles.  The value is any combination of the 
  12973.          styles specified for WC_SPINBUTTON.  You can use the bitwise OR ( | ) 
  12974.          operator to combine styles. 
  12975.  
  12976.  Comments 
  12977.  
  12978.  The SPINBUTTON statement is used only in a DIALOG or WINDOW statement. 
  12979.  
  12980.  Example 
  12981.  
  12982.  This example creates a spin-button control at position (80, 20) within the 
  12983.  dialog window.  The spin button has a width of 60 character units and a height 
  12984.  of 3 character units.  Its resource identifier is 302. The style specification 
  12985.  SPBS_NUMERICONLY creates a control which accepts only the digits 0-9 and 
  12986.  virtual keys.  The default styles SPBS_MASTER, WS_TABSTOP, and WS_VISIBLE are 
  12987.  all in effect, though only WS_TABSTOP is specified. 
  12988.  
  12989.   #define    IDC_SPINBUTTON   302
  12990.   #define    IDD_SPINDLG    502
  12991.   DIALOG "Spin button", IDD_SPINDLG, 11, 11, 200, 240, FS_NOBYTEALIGN |
  12992.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  12993.     BEGIN
  12994.       SPINBUTTON  IDC_SPINBUTTON, 80, 20, 60, 24, SPBS_NUMERICONLY | WS_TABSTOP
  12995.     END
  12996.  
  12997.  
  12998. ΓòÉΓòÉΓòÉ 21.3.2.54. STRINGTABLE Statement ΓòÉΓòÉΓòÉ
  12999.  
  13000. Syntax: 
  13001.  
  13002.   STRINGTABLE  [load-option] [mem-option] [codepage]
  13003.   BEGIN
  13004.   string-id string-definition
  13005.       .
  13006.       .
  13007.       .
  13008.   END
  13009.  
  13010. The STRINGTABLE statement creates one or more string resources for an 
  13011. application.  A string resource is a null-terminated character string that has 
  13012. a unique string identifier.  A string resource can be loaded from the 
  13013. executable file when needed by using the WinLoadString or with DosGetResource 
  13014. with the RT_STRING resource type. RT_STRING resources are bundled together in 
  13015. groups of 16, with any missing IDs replaced with zero length strings. Each 
  13016. group, or bundle, is assigned a unique sequential identifier. The resource 
  13017. string identifier is not necessarily the same as the identifier specified when 
  13018. using DosGetResource. The formula for calculating the identifier of the 
  13019. resource bundle, for use in DosGetResource, is as follows: 
  13020.  
  13021. bundle ID = (id / 16) +1
  13022. where id is the string ID assigned in the RC file. 
  13023.  
  13024. Thus, bundle 1 contains strings 0 to 15, bundle 2 contains strings 16 to 31, 
  13025. and so on. Once the address of the bundle has been returned by DosGetResource 
  13026. (using the calculated identifier), the buffer can be parsed to locate the 
  13027. particular string within the bundle. The number of the string is calculated by 
  13028. the formula: 
  13029.  
  13030. string = id % 16
  13031. (string = remainder for id/16). 
  13032.  
  13033. The buffer returned consists of the CodePage of the strings in the first 
  13034. USHORT, followed by the 16 strings in the bundle. The first BYTE of each string 
  13035. is the length of the string (including the null terminator), followed by the 
  13036. string and the terminator. A zero length string is represented by two bytes: 
  13037. 01 (string length) followed by the null terminator. 
  13038.  
  13039. You can provide any number of STRINGTABLE statements in a resource script file. 
  13040. The compiler treats all the strings from the various STRINGTABLE statements as 
  13041. if they belonged to a single statement.  This means that no two strings in a 
  13042. resource script file can have the same string identifier. 
  13043.  
  13044.  load-option    Specifies when the system loads the resource from the 
  13045.                 executable file into memory.  This value must be one of the 
  13046.                 following: 
  13047.  
  13048.                 PRELOAD             System loads the resource when the 
  13049.                                     application starts. 
  13050.                 LOADONCALL          System loads the resource when the 
  13051.                                     application calls the WinLoadString 
  13052.                                     function. This is the default option. 
  13053.  
  13054.  mem-option     Specifies how the system manages the resource when it is in 
  13055.                 memory.  This value must be one or more of the following: 
  13056.  
  13057.                 FIXED               System keeps the resource at a fixed memory 
  13058.                                     location. 
  13059.                 MOVEABLE            System moves the resource as necessary to 
  13060.                                     compact memory. 
  13061.                 DISCARDABLE         System discards the resource if it is no 
  13062.                                     longer needed. 
  13063.  
  13064.                 The default setting is MOVEABLE and DISCARDABLE. 
  13065.  
  13066.  code-page      Specifies a code page value.  See CODEPAGE Statement for a list 
  13067.                 of valid code page values. 
  13068.  
  13069.  string-id      Specifies the character-string identifier.  This value must be 
  13070.                 a signed integer in the range -32768 through 32767, an unsigned 
  13071.                 integer in the range of 1 through 65535, or a simple expression 
  13072.                 that evaluates to a value in these ranges.  The value can be 
  13073.                 specified in decimal or hexadecimal notation.  Each string 
  13074.                 identifier in a resource script file must be unique. 
  13075.  
  13076.  string-definition Specifies a character string.  This field must contain zero 
  13077.                 or more characters enclosed in double quotation marks. 
  13078.                 Character values must be in the range 1 through 255.  If a 
  13079.                 double quotation mark is required in the string, you must 
  13080.                 include the double quotation mark twice. 
  13081.  
  13082.  Comments 
  13083.  
  13084.  You can continue a string on multiple lines by terminating the line with a 
  13085.  backslash (\) or by terminating the line with a double quotation mark (") and 
  13086.  then starting the next line with a double quotation mark. 
  13087.  
  13088.  Example 
  13089.  
  13090.  This example creates two string resources whose string identifiers are 1 and 
  13091.  2. 
  13092.  
  13093.   #define IDS_HELLO    1
  13094.   #define IDS_GOODBYE  2
  13095.  
  13096.   STRINGTABLE
  13097.   BEGIN
  13098.       IDS_HELLO   "Hello"
  13099.       IDS_GOODBYE "Goodbye"
  13100.   END
  13101.  
  13102.  
  13103. ΓòÉΓòÉΓòÉ 21.3.2.55. SUBITEMSIZE Statement ΓòÉΓòÉΓòÉ
  13104.  
  13105. Syntax: 
  13106.  
  13107.   SUBITEMSIZE  size
  13108.  
  13109. The SUBITEMSIZE statement specifies the size, in words, of each help subitem in 
  13110. a help subtable.  The minimum size is two words, and each help subitem in a 
  13111. help subtable must be the same size.  When used, the SUBITEMSIZE statement must 
  13112. appear after the HELPSUBTABLE statement and before the BEGIN keyword. 
  13113.  
  13114. You do not need to use the SUBITEMSIZE statement if the help subitems are the 
  13115. default size (2). 
  13116.  
  13117.  size    Specifies the size of each help subitem.  This value must be an 
  13118.          integer. 
  13119.  
  13120.  Example 
  13121.  
  13122.  The SUBITEMSIZE statement in this example specifies that each HELPSUBITEM 
  13123.  statement contains three words. 
  13124.  
  13125.   HELPSUBTABLE 1
  13126.   SUBITEMSIZE 3
  13127.   BEGIN
  13128.       HELPSUBITEM IDCLD_FILEMENU, IDHP_FILEMENU, 5
  13129.       HELPSUBITEM IDCLD_HELPMENU, IDHP_HELPMENU, 6
  13130.   END
  13131.  
  13132.  
  13133. ΓòÉΓòÉΓòÉ 21.3.2.56. SUBMENU Statement ΓòÉΓòÉΓòÉ
  13134.  
  13135. Syntax: 
  13136.  
  13137.   SUBMENU text, submenu-id [, menuitem-style]
  13138.   BEGIN
  13139.   menuitem-definition
  13140.       .
  13141.       .
  13142.       .
  13143.   END
  13144.  
  13145. The SUBMENU statement creates a submenu for a given menu.  A submenu is a 
  13146. vertical list of menu items from which the user can choose a command. 
  13147.  
  13148. You can provide any number of SUBMENU statements in a MENU statement, but each 
  13149. SUBMENU statement must specify a unique submenu-id value. You can provide any 
  13150. number of menuitem-definition statements in the SUBMENU statement.  These 
  13151. define the menu items (commands) in the menu.  The order of the statements 
  13152. determines the order of the menu items. 
  13153.  
  13154.  text                  Specifies the text of the submenu.  This field must 
  13155.                        contain zero or more characters enclosed in double 
  13156.                        quotation marks.  Character values must be in the range 
  13157.                        1 through 255.  If a double quotation mark is required 
  13158.                        in the string, you must include the double quotation 
  13159.                        mark twice.  A tilde ( ~ ) character in the item name 
  13160.                        indicates that the following character is used as a 
  13161.                        mnemonic character for the item.  When the menu is 
  13162.                        displayed, the tilde is not shown, but the mnemonic 
  13163.                        character is underlined.  The user can choose the menu 
  13164.                        item by pressing the key corresponding to the underlined 
  13165.                        mnemonic character. 
  13166.  submenu-id            Specifies the submenu identifier. This value must be a 
  13167.                        signed integer in the range -32768 through 32767, an 
  13168.                        unsigned integer in the range of 1 through 65535, or a 
  13169.                        simple expression that evaluates to a value in these 
  13170.                        ranges. 
  13171.  menuitem-style        Specifies the submenu style. This value can be a 
  13172.                        combination of MIS_ values. For details on the MIS_ 
  13173.                        values, see MENUITEM Statement. 
  13174.  menuitem-definition   Specifies a PRESPARAMS or MENUITEM statement.  You can 
  13175.                        use the PRESPARAMS statement to control the appearance 
  13176.                        of a submenu, such as the font and the foreground and 
  13177.                        background colors.  If used, the PRESPARAMS statement 
  13178.                        must immediately follow the BEGIN keyword.  For details 
  13179.                        about the PRESPARAMS statement, see PRESPARAMS 
  13180.                        Statement. 
  13181.  
  13182.                        The MENUITEM statement defines an individual command in 
  13183.                        the given menu.  For details, see MENUITEM Statement. 
  13184.  
  13185.  Example 
  13186.  
  13187.  This example creates a submenu named Elements.  Its identifier is 2. The 
  13188.  submenu contains three menu items, which are created by using MENUITEM 
  13189.  statements. 
  13190.  
  13191.   SUBMENU "Elements", 2
  13192.   BEGIN
  13193.       MENUITEM "Oxygen", 200
  13194.       MENUITEM "Carbon", 201, , MIA_CHECKED
  13195.       MENUITEM "Hydrogen", 202
  13196.   END
  13197.  
  13198.  
  13199. ΓòÉΓòÉΓòÉ 21.3.2.57. undef Directive ΓòÉΓòÉΓòÉ
  13200.  
  13201. Syntax: 
  13202.  
  13203.   undef name
  13204.  
  13205. This directive removes the current definition of the specified name.  All 
  13206. subsequent occurrences of the name are processed without replacement. 
  13207.  
  13208.  name    Specifies the name to be removed.  This value is any combination of 
  13209.          letters, digits, and punctuation. 
  13210.  
  13211.  Example 
  13212.  
  13213.  This example removes the definitions for the names "nonzero" and "USERCLASS". 
  13214.  
  13215.   #undef     nonzero
  13216.   #undef     USERCLASS
  13217.  
  13218.  
  13219. ΓòÉΓòÉΓòÉ 21.3.2.58. VALUESET Statement ΓòÉΓòÉΓòÉ
  13220.  
  13221. Syntax: 
  13222.  
  13223.   VALUESET   id, x, y, width, height[, style]
  13224.  
  13225. The VALUESET statement creates a value set control within the dialog window. 
  13226. This control lets a user select one choice from a group of mutually exclusive 
  13227. choices.  The VALUESET statement defines the identifier, position, dimensions, 
  13228. and attributes of a value set control.  The predefined class for this control 
  13229. is WC_VALUESET.  If you do not specify a style, the default style is WS_TABSTOP 
  13230. and WS_VISIBLE. 
  13231.  
  13232.  id      Specifies the control identifier.  The value is a signed integer 
  13233.          -32768 through 32767, an unsigned integer in the range of 1 through 
  13234.          65535, or a simple expression that evaluates to a value in these 
  13235.          ranges. 
  13236.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  13237.          The value is a signed integer -32768 through 32767 or an expression 
  13238.          consisting of integers and the addition (+) or subtraction (-) 
  13239.          operator.  The coordinate is assumed to be in dialog units and is 
  13240.          relative to the origin of the dialog window. 
  13241.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  13242.          The value is a signed integer -32768 through 32767 or an expression 
  13243.          consisting of integers and the addition (+) or subtraction (-) 
  13244.          operator.  The coordinate is assumed to be in dialog units and is 
  13245.          relative to the origin of the dialog window. 
  13246.  width   Specifies the width of the control.  The value is any integer 0 
  13247.          through 65535 or an expression consisting of integers and the addition 
  13248.          (+) or subtraction (-) operator. The width is in n-character units. 
  13249.  height  Specifies the height of the control.  The value is any integer 0 
  13250.          through 65535 or an expression consisting of integers and the addition 
  13251.          (+) or subtraction (-) operator. The height is in 1/8-character units. 
  13252.  style   Specifies the control styles. The value is any combination of the 
  13253.          styles specified for WC_VALUESET. You can use the bitwise OR ( | ) 
  13254.          operator to combine styles. 
  13255.  
  13256.  Comments 
  13257.  
  13258.  The VALUESET statement is used only in a DIALOG or WINDOW statement. 
  13259.  
  13260.  Example 
  13261.  
  13262.  This example creates a value set control at position (40, 40) within the 
  13263.  dialog window.  The value set control has a width of 220 character and a 
  13264.  height of 20 character units.  Its resource identifier is 302.  The style 
  13265.  specification VS_ICON creates a control to show items in icon form.  The 
  13266.  default styles WS_TABSTOP and WS_VISIBLE are both in effect, though only 
  13267.  WS_TABSTOP is specified. 
  13268.  
  13269.   #define    IDC_VALUESET     302
  13270.   #define    IDD_VALUESETDLG  501
  13271.   DIALOG "Value set", IDD_VALUESETDLG, 11, 11, 260, 240, FS_NOBYTEALIGN |
  13272.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  13273.     BEGIN
  13274.       VALUESET  IDC_VALUESET, 40, 40, 220, 160, VS_ICON | WS_TABSTOP
  13275.     END
  13276.  
  13277.  
  13278. ΓòÉΓòÉΓòÉ 21.3.2.59. WINDOW Statement ΓòÉΓòÉΓòÉ
  13279.  
  13280. Syntax: 
  13281.  
  13282.   WINDOW text, id, x, y, width, height, class[, style[, framectl]]
  13283.          data-definitions
  13284. [ BEGIN
  13285. control-definition
  13286.     .
  13287.     .
  13288.     .
  13289. END ]
  13290.  
  13291. The WINDOW statement creates a window of the specified class.  The statement 
  13292. defines the position and dimensions of the window relative to its parent 
  13293. window, as well as the window-box style.  The WINDOW statement is typically 
  13294. used in a WINDOWTEMPLATE or FRAME statement. 
  13295.  
  13296. Typically, only one WINDOW statement is used in a FRAME statement.  It defines 
  13297. the client window belonging to the corresponding frame window. The optional 
  13298. BEGIN and END keywords enclose any CONTROL statements that are given with the 
  13299. window.  CONTROL statements given in this manner represent child windows 
  13300. belonging to the window created by the WINDOW statement. 
  13301.  
  13302.  text              Specifies the window title if the style specifies a title 
  13303.                    bar. This field must contain zero or more characters 
  13304.                    enclosed in double quotation marks.  The character values 
  13305.                    must be in the range 1 through 255.  If a double quotation 
  13306.                    mark is required in the title, you must include the double 
  13307.                    quotation mark twice. 
  13308.  id                Specifies the window identifier.  This value must be a 
  13309.                    signed integer in the range -32768 through 32767, an 
  13310.                    unsigned integer in the range of 1 through 65535, or a 
  13311.                    simple expression that evaluates to a value in these ranges. 
  13312.  x                 Specifies the x-coordinate of the lower-left corner of the 
  13313.                    window. This value must be a signed integer in the range 
  13314.                    -32768 through 32767 or an expression consisting of integers 
  13315.                    and the addition (+) or subtraction (-) operator.  The value 
  13316.                    is in dialog units.  The position is relative to the origin 
  13317.                    of the parent window. 
  13318.  y                 Specifies the y-coordinate of the lower-left corner of the 
  13319.                    window. This value must be a signed integer in the range 
  13320.                    -32768 through 32767 or an expression consisting of integers 
  13321.                    and the addition (+) or subtraction (-) operator.  The value 
  13322.                    is in dialog units.  The position is relative to the origin 
  13323.                    of the parent window. 
  13324.  width             Specifies the width of the window.  This value must be an 
  13325.                    integer in the range 0 through 65535 or an expression 
  13326.                    consisting of integers and the addition (+) or subtraction 
  13327.                    (-) operator.  The value is in n-character units. 
  13328.  height            Specifies the height of the window.  This value must be an 
  13329.                    integer in the range 0 through 65535 or an expression 
  13330.                    consisting of integers and the addition (+) or subtraction 
  13331.                    (-) operator.  The value is in 1/8-character units. 
  13332.  class             Specifies the window class.  This value can be one of the 
  13333.                    control classes specified in the "Control Classes" table in 
  13334.                    the Presentation Manager Programmer Reference or the name of 
  13335.                    the window class, enclosed in double quotation marks. 
  13336.  style             Specifies the window style.  This value can be any of the 
  13337.                    window, dialog box, or frame styles specified. 
  13338.  framectl          Specifies the style of the frame controls belonging to the 
  13339.                    window.  This value can be a combination of the styles 
  13340.                    specified in the table, "Frame-Control Styles." You can use 
  13341.                    the bitwise OR (|) operator to combine styles. 
  13342.  data-definitions  Specifies a CTLDATA and/or PRESPARAMS statement. These 
  13343.                    statements define control and presentation data for the 
  13344.                    window. For more information, see CTLDATA Statement and 
  13345.                    PRESPARAMS Statement. 
  13346.  control-definition Specifies a CONTROL statement or any one of several 
  13347.                    predefined control statements. These statements define the 
  13348.                    style, position, and dimensions of controls in the window. 
  13349.  
  13350.  Comments 
  13351.  
  13352.  The WINDOW statement can actually contain any combination of CONTROL, DIALOG, 
  13353.  and WINDOW statements. Typically, a WINDOW statement contains one or no such 
  13354.  statements. 
  13355.  
  13356.  Example 
  13357.  
  13358.  This example creates a client window belonging to the frame window. The client 
  13359.  window belongs to the "MyClientClass" window class and has the standard window 
  13360.  identifier FID_CLIENT. 
  13361.  
  13362.   WINDOWTEMPLATE 1
  13363.   BEGIN
  13364.       FRAME "My Window", 1, 10, 10, 320, 130,
  13365.                0, FCF_STANDARD | FCF_VERTSCROLL
  13366.       BEGIN
  13367.           WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass"
  13368.       END
  13369.   END
  13370.  
  13371.  
  13372. ΓòÉΓòÉΓòÉ 21.3.2.60. WINDOWTEMPLATE Statement ΓòÉΓòÉΓòÉ
  13373.  
  13374. Syntax: 
  13375.  
  13376.   WINDOWTEMPLATE window-id [load-option] [mem-option] [code-page]
  13377.   BEGIN
  13378.   window-definition
  13379.       .
  13380.       .
  13381.       .
  13382.   END
  13383.  
  13384. The WINDOWTEMPLATE statement creates a window template.  A window template 
  13385. consists of a series of statements that define the window identifier, load and 
  13386. memory options, window dimensions, and controls in the window.  The window 
  13387. template can be loaded from the executable file by using the WinLoadDlg 
  13388. function. 
  13389.  
  13390. You can provide any number of window templates in a resource script file, but 
  13391. each template must have a unique window-id value. 
  13392.  
  13393.  window-id           Specifies the window identifier.  This value must be a 
  13394.                      signed integer in the range -32768 through 32767, an 
  13395.                      unsigned integer in the range of 1 through 65535, a simple 
  13396.                      expression that evaluates to a value in these ranges, or a 
  13397.                      character string. 
  13398.  load-option         Specifies when the system loads the resource from the 
  13399.                      executable file into memory.  This value must be one of 
  13400.                      the following: 
  13401.                      PRELOAD             System loads the resource when the 
  13402.                                          application starts. 
  13403.                      LOADONCALL          System loads the resource when the 
  13404.                                          application calls the WinLoadDlg 
  13405.                                          function. This is the default option. 
  13406.  mem-option          Specifies how the system manages the resource when it is 
  13407.                      in memory.  This value must be one or more of the 
  13408.                      following: 
  13409.                      FIXED               System keeps the resource at a fixed 
  13410.                                          memory location. 
  13411.                      MOVEABLE            System moves the resource as necessary 
  13412.                                          to compact memory. 
  13413.                      DISCARDABLE         System discards the resource if it is 
  13414.                                          no longer needed. The default setting 
  13415.                      is MOVEABLE and DISCARDABLE. 
  13416.  code-page           Specifies a code page value.  See CODEPAGE Statement for a 
  13417.                      list of valid code pages. 
  13418.  window-definition   Specifies a WINDOW statement.  The statement defines the 
  13419.                      dimensions and style of the given window.  For details 
  13420.                      about the statement, see WINDOW Statement. 
  13421.  
  13422.  Comments 
  13423.  
  13424.  A WINDOWTEMPLATE statement can contain DIALOG, CONTROL, and WINDOW statements. 
  13425.  Typically, only one WINDOW statement is used in the WINDOWTEMPLATE statement. 
  13426.  
  13427.  
  13428. ΓòÉΓòÉΓòÉ 22. Dynamic Trace Customizer (TRCUST) ΓòÉΓòÉΓòÉ
  13429.  
  13430. OS/2 provides a mechanism by which developers may dynamically apply tracepoints 
  13431. in their module at run time.  This method eliminates all overhead of tracing 
  13432. when tracing is disabled. It also allows the developer to add tracepoints 
  13433. without modifying source code.  This reduces the possibility that adding a 
  13434. tracepoint will induce errors into one's code.  OS/2 needs a binary file, for 
  13435. each module being dynamically traced, which defines the tracepoints for the 
  13436. module. 
  13437.  
  13438. There are certain restrictions on the use of dynamic trace which should be 
  13439. noted.  These are: 
  13440.  
  13441.      Executable (.EXE) programs running in processes other than the trace 
  13442.       command cannot have dynamic tracepoints applied. 
  13443.  
  13444.      A dynamic tracepoint cannot be applied to a module running under the 
  13445.       Kernel Debugger that has a Breakpoint in place at the same location as 
  13446.       the trace point. 
  13447.  
  13448.      The trace command is unable to apply dynamic tracepoints to any module 
  13449.       for whom DosLoadModule is not applicable. This precludes the following: 
  13450.  
  13451.         -  Physical Device Drivers 
  13452.         -  Virtual Device Drivers 
  13453.         -  File System Device Drivers 
  13454.  
  13455.       The DTRACE utility (shipped with the IBM Developer Connection and OS/2 
  13456.       Warp 4) provides a means of overcoming this particular restriction. 
  13457.  
  13458.  The Trace Customizer (TRCUST) converts tracepoint definitions from a trace 
  13459.  source file (TSF) into dynamic tracepoints for the trace definition file 
  13460.  (TDF), and into formatting rules in the trace format file (TFF). 
  13461.  
  13462.  Definitions 
  13463.  
  13464.  .TSF          An ASCII file created by a developer which defines all dynamic 
  13465.                tracepoints for a given module. TRCUST currently allows at most 
  13466.                only one major code per TSF. 
  13467.  
  13468.  .TDF          A binary file, created by TRCUST, using the .TSF file as input. 
  13469.                This file defines all tracepoints in the module in a manner 
  13470.                acceptable to OS/2. This is used by the Trace Utility, TRACE. 
  13471.  
  13472.  .TFF          A binary file also created by TRCUST using the .TSF file.  This 
  13473.                file defines how all tracepoints will be formatted.  This is 
  13474.                used by the Trace Formatter, TRACEFMT. 
  13475.  
  13476.  major code    A byte value used to identify the module being traced. TRCUST 
  13477.                allows at most only one major code per TSF. 
  13478.  
  13479.  minor code    A word value used to uniquely identify each tracepoint. 
  13480.  
  13481.  GROUP         A value used to identify this tracepoint with tracepoints of the 
  13482.                same category.  Examples are MEM for memory management and PM 
  13483.                for Presentation Manager. For an example of uses of groups, see 
  13484.                the online help for the TRACE command. 
  13485.  
  13486.  TYPE          A value used to associate a subset of dynamic trace events 
  13487.                within a module. Examples are PRE for pre-invocation, POST for 
  13488.                post-invocation and API for API calls within a module. For an 
  13489.                explanation and examples of uses of types, see the online help 
  13490.                for the trace command. 
  13491.  
  13492.  
  13493. ΓòÉΓòÉΓòÉ 22.1. File Naming and Location ΓòÉΓòÉΓòÉ
  13494.  
  13495. The TDF file name is the same as the module to be traced, but has a file 
  13496. extension of TDF. The TFF has a name of the form TRC00xx.TFF where xx is the 
  13497. major code, for example, a module with major code 0xC2 will generate a TFF with 
  13498. the name TRC00C2.TFF. This naming convention is used to allow TRACEFMT to 
  13499. dynamically generate the TFF name given only the major code. 
  13500.  
  13501. TRCUST can be invoked to process a TSF or to combine several TFF files into a 
  13502. single TFF. For processing a TSF, TRCUST is given the name of a TSF, and 
  13503. optionally: 
  13504.  
  13505.      the desired name of the resulting TDF 
  13506.  
  13507.      the MAP file name 
  13508.  
  13509.      the error message level 
  13510.  
  13511.  TRCUST will store the TSF tracepoint formatting specifications in the TFF file 
  13512.  and if the tracepoint specified was not for a static tracepoint, the TSF 
  13513.  tracepoint definition will be converted into the format required by the Trace 
  13514.  Utility and stored in the TDF file. On errors, TRCUST will display appropriate 
  13515.  messages, skip any tracepoint with errors in its definition, and continue 
  13516.  processing the next tracepoint definition. 
  13517.  
  13518.  For combining TFF files that use the same major code, TRCUST is given the name 
  13519.  of the file containing the TFF filenames to combine and the name of the file 
  13520.  to contain the combined trace format statements. 
  13521.  
  13522.  TRCUST will issue an error message and abort processing under the following 
  13523.  conditions: 
  13524.  
  13525.      the TSF cannot be opened 
  13526.  
  13527.      when combining TFF files, if any TFF input files cannot be read or if all 
  13528.       TFF input files do not use the same major code 
  13529.  
  13530.      when defining dynamic tracepoints, if the executable module to contain 
  13531.       the tracepoints cannot be read 
  13532.  
  13533.      the TDF, or TFF files cannot be written to 
  13534.  
  13535.      an error in the header definition in the TSF 
  13536.  
  13537.      a missing ending quote in the TSF 
  13538.  
  13539.  Note:  TRCUST always returns 0 so that, when invoking it from a makefile, 
  13540.  processing of the rest of the makefile can continue if TRCUST aborts. 
  13541.  
  13542.  Combine TFF files when several modules that use dynamic tracing use the same 
  13543.  major code.  The Trace Formatter can only use one TFF file per major code to 
  13544.  get formatting information from. After the TSF file for each module is run 
  13545.  through TRCUST to produce a TDF and TFF file, TRCUST can be invoked again, 
  13546.  this time using the combine TFF files option and a file that only contains the 
  13547.  paths to all the TFF files using the same major code. TRCUST will read all the 
  13548.  TFF files.  If all TFF files don't use the same major code, TRCUST will issue 
  13549.  an error message and abort. TRCUST will read each trace format record from the 
  13550.  TFF files and write them (in ascending order according to minor code) to the 
  13551.  destination TFF file given. 
  13552.  
  13553.  
  13554. ΓòÉΓòÉΓòÉ 22.2. Invoking the Trace Customizer ΓòÉΓòÉΓòÉ
  13555.  
  13556. The Trace Customizer is a protect mode only program and must therefore be run 
  13557. under OS/2. TRCUST may be invoked to combine TFF files or to process a TSF. The 
  13558. syntax for combining TFF files is as follows: 
  13559.  
  13560.  
  13561.     [d:][path]TRCUST [d:][path]tffsource /C=[d:][path]tffdest [/Wn]
  13562.  
  13563. where: 
  13564.  
  13565.  TRCUST    is the name of the Trace Customizer program. A drive and path may 
  13566.            optionally be specified to explicitly define the location of the 
  13567.            Trace Customizer program, otherwise the program is searched for in 
  13568.            the current directory, followed by looking along the path defined by 
  13569.            the PATH environment variable. 
  13570.  
  13571.  [d:][path]tffsource is the name of a file containing fully qualified 
  13572.            (including extensions) pathnames of TFF files to combine. Each TFF 
  13573.            file must use the same major code and each filename in the tffsource 
  13574.            file is separated by white space. This will combine all TFF files 
  13575.            for the same major code into a single TFF file.  If duplicate minor 
  13576.            code format definitions are found, the first format definition for 
  13577.            the minor code remains valid, the duplicates are discarded and a 
  13578.            warning message is issued. If no path is provided the tffsource file 
  13579.            is searched for in the current directory, followed by using the 
  13580.            current value of DPATH. 
  13581.  
  13582.  [d:][path]tffdest is the name of the trace format destination file to store 
  13583.            the combined trace format definitions. 
  13584.  
  13585.  /Wn       (optional) is the level of error messages to be displayed, where n 
  13586.            can be 0, 1, or 2.  The possible message levels are shown below 
  13587.            along with the messages that each displays: 
  13588.  
  13589.                 Level    Messages 
  13590.               0          fatal and severe messages 
  13591.               1          fatal, severe, and error messages 
  13592.               2          all (fatal, severe, error, and warning) messages 
  13593.  
  13594.            A message level of 2 is the default. 
  13595.  
  13596.  An example of a tffsource file for using the combine TFF files option of 
  13597.  TRCUST is: 
  13598.  
  13599.   \TFF\PROG1\TRC00C2.TFF \TFF\PROG2\TRC00C2.TFF
  13600.   \TFF\PROG3\TRC00C2.TFF \TFF\PROG4\TRC00C2.TFF
  13601.  
  13602.  To invoke TRCUST to combine TFF files using the above file as input (assume 
  13603.  filename is \TFF\PROG\TFF00C2) and output the combined format statements into 
  13604.  file \TFF\PROG\TR\TRC00C2.TFF is: 
  13605.  
  13606.   TRCUST \TFF\PROG\TFF00C2 /C=\TFF\PROG\TRC00C2.TFF
  13607.  
  13608.  The syntax for processing a TSF file is as follows: 
  13609.  
  13610.      [d:][path]TRCUST [d:][path]tsf [[d:][path]tdf] [/M=mapfile] [/Wn]
  13611.  
  13612.  where: 
  13613.  
  13614.  TRCUST    is the name of the Trace Customizer program. A drive and path may 
  13615.            optionally be specified to explicitly define the location of the 
  13616.            Trace Customizer program, otherwise the program is searched for in 
  13617.            the current directory, followed by looking along the path defined by 
  13618.            the PATH environment variable. 
  13619.  
  13620.  [d:][path]tsf is the name of the trace source file. If no file extension is 
  13621.            provided then an extension of TSF is assumed. If no path is provided 
  13622.            the trace source file is searched for in the current directory, 
  13623.            followed by using the current value of DPATH. 
  13624.  
  13625.  [d:][path]tdf (optional) is the name of the trace definition file to store the 
  13626.            dynamic tracepoint definitions. If not specified, the TSF filename 
  13627.            is used with an extension of TDF. If no file extension is provided 
  13628.            then an extension of TDF is assumed. 
  13629.  
  13630.  /M=mapfile (optional) defines mapfile as the MAP file for this module. The 
  13631.            name may be qualified by a drive/directory, otherwise it will be 
  13632.            searched for in the current directory followed by the path specified 
  13633.            by the DPATH environment variable. If specified as an option, the 
  13634.            MAP file must exist and the filename extension must be MAP or TRCUST 
  13635.            will abort processing. The mapfile will only be used if a symbol is 
  13636.            not found in the symbolic debug information stored in the executable 
  13637.            module. 
  13638.  
  13639.  /Wn       (optional) is the level of error messages to be displayed, where n 
  13640.            can be 0, 1, or 2.  The possible message levels are shown below 
  13641.            along with the messages that each displays: 
  13642.  
  13643.                 Level    Messages 
  13644.               0          fatal and severe messages 
  13645.               1          fatal, severe, and error messages 
  13646.               2          all (fatal, severe, error, and warning) messages 
  13647.  
  13648.            A message level of 2 is the default. 
  13649.  
  13650.  
  13651. ΓòÉΓòÉΓòÉ 22.3. Symbolic Debug Support ΓòÉΓòÉΓòÉ
  13652.  
  13653. Source Level Symbolic Support 
  13654.  
  13655. If the module has been compiled and linked with the following debug options, 
  13656. then the Trace Customizer can look into the module to extract symbolic 
  13657. information. In this case addresses may be specified symbolically. 
  13658.  
  13659.      /Ti on the C/Set2 language compiler for C source files 
  13660.      /CO on the link command 
  13661.  
  13662.  Note that not all source files must be C language,  although only public 
  13663.  labels from assembler routines will be found in the symbolic information.  You 
  13664.  may specify filename and line number, a local variable name or a global 
  13665.  variable name when using C routines. All symbolic names are case sensitive 
  13666.  when the source was compiled with debug options, but if linking in a C 
  13667.  language program that was not compiled with debug options, all symbolic names 
  13668.  are case sensitive and begin with an underscore (_) character unless the name 
  13669.  is declared with the Pascal calling conventions, in which case the underscore 
  13670.  is omitted but the symbolic name is capitalized. 
  13671.  
  13672.  MAP File Support 
  13673.  
  13674.  The Trace Customizer can also use the symbolic information in the MAP file 
  13675.  produced by the linker. All public symbols will be listed with their offsets 
  13676.  in the module being traced. This is not as complete a support as offered by 
  13677.  the debug compile option for C language source files, but it does allow entry 
  13678.  points, public labels and global data to be referenced symbolically within the 
  13679.  TSF. Note that the use of a MAP file is not language dependent. 
  13680.  
  13681.  Note:  When using a MAP file, if the symbolic name is a C language entry 
  13682.         point, it will be case sensitive and begin with an underscore (_) 
  13683.         character unless it is declared with the Pascal naming convention, in 
  13684.         which case the underscore is omitted and the name is capitalized. If 
  13685.         the name is not from C language source file, the name is case 
  13686.         sensitive. 
  13687.  
  13688.  Building a Module 
  13689.  
  13690.  To trace only public procedures, you only need your MAP file that was 
  13691.  generated by linking your module. 
  13692.  
  13693.  To trace local variables in C language routines, compile the C programs with 
  13694.  the debug option and assemble the ASM routines with public symbols.  Link all 
  13695.  the OBJs together with the debug option (/CO) and run TRCUST on the executable 
  13696.  module. You can now strip the debug information from the executable file by 
  13697.  either relinking the OBJs without the debug option or by using a tool to 
  13698.  delete the debug information from the executable module file. 
  13699.  
  13700.  
  13701. ΓòÉΓòÉΓòÉ 22.4. TDF and TFF File Usage ΓòÉΓòÉΓòÉ
  13702.  
  13703. The TDF, and TFF files produced by TRCUST are used in the following way: 
  13704.  
  13705.                                 ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13706.                                 Γöé  .TSF   Γöé
  13707.                                 ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ
  13708.                                      V
  13709.                               ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13710.                               Γöé TRCUST Util Γöé
  13711.                               ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13712.         ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13713.         V                            V
  13714.    ΓöîΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÉ                  ΓöîΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÉ
  13715.    Γöé  .TDF   Γöé                  Γöé  .TFF   Γöé
  13716.    ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ                  ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ
  13717.         V                            Γöé
  13718.  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                     Γöé
  13719.  Γöé  TRACE Util Γöé                     Γöé
  13720.  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                     Γöé
  13721.         V                            Γöé
  13722. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                    Γöé
  13723. Γöétracepoints setΓöé                    Γöé
  13724. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                    Γöé
  13725.         V                            Γöé
  13726. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                    Γöé
  13727. Γöé tracepoint hitΓöé                    Γöé
  13728. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                    Γöé
  13729.         V                            Γöé
  13730. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                    Γöé
  13731. Γöé  OS/2 kernel  Γöé                    Γöé
  13732. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                    Γöé
  13733.         V                            Γöé
  13734.         Γöé                            Γöé
  13735.         Γöé                            Γöé
  13736.         Γöé                            Γöé
  13737.         Γöé                            Γöé
  13738.         Γöé                            Γöé
  13739.         Γöé                            Γöé
  13740.         Γöé                            Γöé
  13741.         V                            V
  13742. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ             ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13743. Γöé  trace buffer Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ>ΓöñTRACEFMT UtilΓöé
  13744. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ             ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13745.                                      V
  13746.                               ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13747.                               Γöé  formatted  Γöé
  13748.                               Γöétrace recordsΓöé
  13749.                               ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13750. How TRCUST fits into the system 
  13751.  
  13752.  
  13753. ΓòÉΓòÉΓòÉ 22.4.1. Tracing a Module ΓòÉΓòÉΓòÉ
  13754.  
  13755. To trace a module do the following: 
  13756.  
  13757.    1. Define the tracepoints and data to be traced in the TSF. 
  13758.  
  13759.    2. Invoke the Trace Customizer using the TSF as input. 
  13760.  
  13761.       This produces two files, a TDF and a TFF. 
  13762.  
  13763.    3. Put the TDF file in the same directory the module to trace resides, put 
  13764.       the TFF file in a directory accessible by TRACEFMT.  It is suggested that 
  13765.       all TFF files reside in the same subdirectory, an example directory could 
  13766.       be \OS2\SYSTEM\TRACE. 
  13767.  
  13768.    4. Invoke the OS/2 TRACE command using the name of the TDF instead of the 
  13769.       major code value. 
  13770.  
  13771.       This activates the tracepoints, causing the trace data to be saved in the 
  13772.       system trace buffer. 
  13773.  
  13774.    5. The OS/2 TRACE command can be used to turn tracing off at any time. 
  13775.  
  13776.    6. To display the contents of the trace buffer, invoke the OS/2 TRACEFMT 
  13777.       command. 
  13778.  
  13779.       TRACEFMT uses the major code to determine the TFF file and uses the 
  13780.       formatting string corresponding to the minor code value to format the 
  13781.       data in the RAS trace buffer and output it to the screen, file or 
  13782.       printer. 
  13783.  
  13784.  
  13785. ΓòÉΓòÉΓòÉ 22.5. Symbols and Abbreviations Used in the Document ΓòÉΓòÉΓòÉ
  13786.  
  13787.  [...]             denotes optional items. 
  13788.  
  13789.  [... | ... | ...] denotes a list of optional items, zero or more of which may 
  13790.                    be chosen. 
  13791.  
  13792.  {... | ... | ...} denotes a list of items of which ONE must be chosen. 
  13793.  
  13794.  item...           denotes that item is repeated zero or more times. 
  13795.  
  13796.  statement,.....   denotes this example is incomplete. 
  13797.  
  13798.  nnn               is a number in the range 0-255 inclusive. 
  13799.  
  13800.  nnnnn             is a number in the range 0-65535 inclusive. 
  13801.  
  13802.  All numbers and values can be entered in decimal form or in C hexadecimal form 
  13803.  (0x....). 
  13804.  
  13805.  
  13806. ΓòÉΓòÉΓòÉ 22.6. Trace Source File ΓòÉΓòÉΓòÉ
  13807.  
  13808. This section details the statements that can appear within a trace source file. 
  13809.  
  13810. Examples are given of TRACE statements. 
  13811.  
  13812.  
  13813. ΓòÉΓòÉΓòÉ 22.6.1. TSF Format ΓòÉΓòÉΓòÉ
  13814.  
  13815. The layout of a trace source file is: 
  13816.  
  13817.  
  13818.                 ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13819.                 Γöé        Header          Γöé
  13820.                 Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13821.                 Γöé  Type List Definition  Γöé
  13822.                 Γöé       (optional)       Γöé
  13823.                 Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13824.                 Γöé  Group List Definition Γöé
  13825.                 Γöé       (optional)       Γöé
  13826.                 Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13827.                 Γöé                        Γöé
  13828.                 Γöé                        Γöé
  13829.                 Γöé Tracepoint Definitions Γöé
  13830.                 Γöé                        Γöé
  13831.                 Γöé                        Γöé
  13832.                 ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13833.  
  13834. Note: 
  13835.  
  13836.      Comments may be freely inserted anywhere in the trace source file. A 
  13837.       comment is identified by a ; or by using C syntax comments anywhere in 
  13838.       the file.  A C comment has start and end delimiters, namely /* and */. C 
  13839.       type comments may span lines, and may be nested. 
  13840.  
  13841.      Below are sample TSF files. See Sample Trace Source Files for more 
  13842.       examples. 
  13843.  
  13844.   ;  Sample trace source file depicting dynamic tracing for OS calls compiled
  13845.   ;  with 32-bit addressing
  13846.  
  13847.         MODNAME = doscall1.dll
  13848.         MAJOR   = 100  /* this is decimal, would be 0x64 if specified hex */
  13849.         MAXDATALENGTH = 200 /* max bytes logged per tracepoint is 200 */
  13850.  
  13851.         TYPELIST NAME=PRE,ID=1,
  13852.                  NAME=SYS,ID=0x40,
  13853.                  NAME=API,ID=128,     /* decimal, if hex would be 0x80 */
  13854.                  NAME=POST,ID=0x8000
  13855.  
  13856.         GROUPLIST NAME=MEM,ID=2,
  13857.                   NAME=FS,ID=0x5,
  13858.                   NAME=MOU,ID=13,
  13859.                   NAME=DOS,ID=0x2B    /* would be 43 if decimal */
  13860.  
  13861.         TRACE   MINOR=0x0001,
  13862.                 TP=.DosOpen,          /* Pre-invocation tracing on DosOpen */
  13863.                 TYPE=(PRE,API),
  13864.                 GROUP=DOS,
  13865.                 DESC="(OS) DosOpen    Pre-Invocation",
  13866.                 FMT="Major = %X  Minor = %Y",
  13867.                 FMT="            EAX = %D",
  13868.                 FMT="            FileName = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  13869.                 REGS=(EAX),
  13870.                 ASCIIZ32=(.FileName,DIRECT,128)
  13871.  
  13872.         TRACE   MINOR=0x7001,         /* Puts tracept on code at line 28 */
  13873.                                       /*   of file dosopen1.c.  Debug    */
  13874.                 TP=@dosopen1.c,28,    /*   info is needed to use this.   */
  13875.                 TYPE=(API),
  13876.                 GROUP=DOS,
  13877.                 DESC="(OS) CheckParm  After Createhandle",
  13878.                 FMT="                 New handle = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  13879.                 MEM32=(.handle,DIRECT,2)
  13880.  
  13881.         TRACE   MINOR=0x8001,         /* Post-invocation tracing at         */
  13882.                 TP=.DosOpenC,RETEP,   /*   procedure DosOpenC return point. */
  13883.                 TYPE=(API,POST),      /*   Debug    info is needed to use   */
  13884.                 GROUP=DOS,            /*   this type of tracepoint.         */
  13885.                 DESC="(OS) DosOpenC   Post-Invocation",
  13886.                 FMT="                 Return Code = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  13887.                 FMT="                 Variable Rec= /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69U",
  13888.                 MEM32=(.retcode,DIRECT,2),
  13889.                 /* The following will log a variable length structure.  The */
  13890.                 /*   second field in the structure is the length of the     */
  13891.                 /*   record(position var_struct+2).  This LEN parameter must*/
  13892.                 /*   immediately precede the memory specification defining  */
  13893.                 /*   the variable length record.                            */
  13894.                 LEN=(var_struct+2,DIRECT),
  13895.                 MEM32=(.var_struct,DIRECT,LEN)
  13896.  
  13897.  
  13898. ΓòÉΓòÉΓòÉ 22.6.2. TSF Header ΓòÉΓòÉΓòÉ
  13899.  
  13900. This defines common information for the module to be traced. The format is: 
  13901.  
  13902.         MODNAME = [d:][path]Name
  13903.         MAJOR   = nnn
  13904.       [ MAXDATALENGTH = nnnn ]
  13905.  
  13906. where: 
  13907.  
  13908.  d:          is the drive containing the module. If not specified the current 
  13909.              drive is used. 
  13910.  
  13911.  path        is the path to the module. If not specified the current path is 
  13912.              used. 
  13913.  
  13914.  Name        is the name of the executable module to be traced. If an extension 
  13915.              is not specified and the Name is not OS2KRNL, an extension of DLL 
  13916.              is appended to Name. 
  13917.  
  13918.  MAJOR=nnn   defines the major trace ID allocated to this module. It may be in 
  13919.              the range 1 to 255 decimal or specified 0x1 to 0xFF hex. The 
  13920.              default value is 1. The major trace ID is part of the data placed 
  13921.              in the trace buffer when a tracepoint is executed. 
  13922.  
  13923.              Only one major code is permitted per module. 
  13924.  
  13925.              Note:  OS/2 currently only supports major codes 0x1 - 0x00FF. 
  13926.  
  13927.  MAXDATALENGTH=nnnn (optional) defines the maximum amount of data that a single 
  13928.              tracepoint call will insert into the trace buffer. 
  13929.  
  13930.              The length may be in the range 20 to 512 decimal or specified 0x14 
  13931.              to 0x200 hex.  The default value is 512. This limit on the amount 
  13932.              of data to trace is to avoid yielding the processor when doing 
  13933.              dynamic tracing. 
  13934.  
  13935.  
  13936. ΓòÉΓòÉΓòÉ 22.6.3. Typelist Definition ΓòÉΓòÉΓòÉ
  13937.  
  13938. This defines the optional typelist event IDs. For more description and examples 
  13939. of event types see the online help for the trace command. 
  13940.  
  13941. The format is: 
  13942.  
  13943.         TYPELIST NAME=TypeName,ID=TypeValue,
  13944.                 [NAME=TypeName,ID=TypeValue,]...
  13945.  
  13946. where: 
  13947.  
  13948.  NAME=Typename 
  13949.            defines a 1-8 byte character string used to reference the TypeValue 
  13950.            in the tracepoint definitions.  All TypeNames and GroupNames within 
  13951.            a TSF must be unique. 
  13952.  
  13953.  ID=TypeValue 
  13954.            defines a bit value of the form 2**y where y in range 0 to 15, 
  13955.            permitting a maximum of 16 types to be defined in a single TSF. This 
  13956.            can be decimal or specified  0xnnnn for hex. 
  13957.  
  13958.  An example TYPELIST definition follows: 
  13959.  
  13960.         TYPELIST NAME=PRE,ID=1,
  13961.                  NAME=SYS,ID=0x40,
  13962.                  NAME=API,ID=128,
  13963.                  NAME=POST,ID=0x8000,.....
  13964.  
  13965.  
  13966. ΓòÉΓòÉΓòÉ 22.6.4. Grouplist Definition ΓòÉΓòÉΓòÉ
  13967.  
  13968. This defines the optional grouplist IDs. For more description and examples of 
  13969. groups see the online help for the trace command. 
  13970.  
  13971. The format is: 
  13972.  
  13973.         GROUPLIST NAME=GroupName,ID=GroupValue,
  13974.                  [NAME=GroupName,ID=GroupValue,]...
  13975.  
  13976. where: 
  13977.  
  13978.  NAME=GroupName 
  13979.            defines a 1-8 byte character string used to reference the GroupValue 
  13980.            in the tracepoint definitions.  There are a maximum of 48 GroupNames 
  13981.            allowed in a TSF file.  All TypeNames and GroupNames within a TSF 
  13982.            must be unique. 
  13983.  
  13984.  ID=GroupValue 
  13985.            defines a word value in the range 1 to 65535 decimal or 0x1 to 
  13986.            0xFFFF hex. 
  13987.  
  13988.  An example GROUPLIST definition follows: 
  13989.  
  13990.         GROUPLIST NAME=MEM,ID=2,
  13991.                   NAME=FS,ID=0x5,
  13992.                   NAME=MOU,ID=13,.....
  13993.  
  13994.  
  13995. ΓòÉΓòÉΓòÉ 22.6.5. Tracepoint Definitions ΓòÉΓòÉΓòÉ
  13996.  
  13997. The tracepoint address and the data to be traced are specified by the TRACE 
  13998. statement. There are a maximum of 65535 tracepoints permitted in a trace source 
  13999. file. 
  14000.  
  14001. The format of the TRACE statement is: 
  14002.  
  14003.         TRACE   [MINOR=minorcode,]
  14004.                 TP={@STATIC,|@filename,linenum,|.name[{+|-}offs][,RETEP]},
  14005.                 [OPCODE=0xnn,]
  14006.                 [TYPE=(typename[,typename...]),]
  14007.                 [GROUP=groupnam,]
  14008.                 [DESC="Tracepoint description",]
  14009.                 [FMT="Formatting string",]...
  14010.                 [LEN=(length_spec,flag),]
  14011.                 [DATA_STMT,]...
  14012.  
  14013. The TRACE keyword delimits a tracepoint definition statement. The definition is 
  14014. considered complete when the next TRACE keyword is encountered or the end of 
  14015. file is reached. There is one TRACE statement for each tracepoint. 
  14016.  
  14017. LEN is used to log variable length records. A DATA_STMT must immediately follow 
  14018. the LEN statement. LEN will give the location of a one word field containing 
  14019. the number of bytes to log for the following DATA_STMT. 
  14020.  
  14021.  
  14022. ΓòÉΓòÉΓòÉ 22.6.5.1. MINOR Keyword ΓòÉΓòÉΓòÉ
  14023.  
  14024. The MINOR parameter is an optional keyword parameter.  If it is specified in 
  14025. the first tracepoint definition, it must be specified in every tracepoint 
  14026. definition.  If it is not specified in the first tracepoint definition, it 
  14027. cannot be specified in any of the subsequent tracepoint definitions. It should 
  14028. be coded as: 
  14029.  
  14030.         MINOR=nnnnn,
  14031.  
  14032. where: 
  14033.  
  14034.  nnnnn     is a decimal number from 1 to 65535 or a hex number from 0x1 to 
  14035.            0xFFFF. This represents the minor code for the tracepoint, which 
  14036.            must be unique for the major code specified for this module. When 
  14037.            tracepoints with duplicate minor codes are encountered, the first is 
  14038.            saved and the rest are discarded, and an error message is issued. 
  14039.  
  14040.  If minor codes are not specified in the TSF, TRCUST sequentially provides 
  14041.  them, starting with 1, for each tracepoint definition it encounters. 
  14042.  
  14043.  
  14044. ΓòÉΓòÉΓòÉ 22.6.5.2. TP Keyword ΓòÉΓòÉΓòÉ
  14045.  
  14046. The TP parameter is a required keyword parameter. If TP is specified more than 
  14047. once for a single tracepoint definition, the tracepoint is discarded. TP has 
  14048. three mutually exclusive definitions which can be coded as: 
  14049.  
  14050.         TP=@STATIC,
  14051.  
  14052. where: 
  14053.  
  14054.  STATIC    defines this tracepoint entry to be used only for creating a trace 
  14055.            format statement for the TFF file.  No tracepoint definition is 
  14056.            created for the TDF, and the only other TRACE parameters that will 
  14057.            be used are DESC, MINOR and FMT. This is used to create trace 
  14058.            formatting information for static tracepoints. If the TSF contains 
  14059.            only @STATIC directives, no TDF files are created. 
  14060.  
  14061.           TP=@filename,linenum,
  14062.  
  14063.  where: 
  14064.  
  14065.  filename    is an ASCII string specifying the name (including extension) of a 
  14066.              source filename used in creating the module.  The source filename 
  14067.              is stored in the debug information contained in the executable 
  14068.              module, so debug information must exist to use this parameter. The 
  14069.              filename is not case sensitive. 
  14070.  
  14071.  linenum     is a decimal number specifying the line number in the given source 
  14072.              file name to place the tracepoint. 
  14073.  
  14074.  Note:  Debug information must exist to use this option. The statement at the 
  14075.  given source linenum may have been rearranged during compiler optimization, so 
  14076.  the developer must use this with caution.  If the linenum is not found in the 
  14077.  debug information, the tracepoint is applied at the next linenum defined in 
  14078.  the debug information and a warning message is issued to the user. 
  14079.  
  14080.  An example to apply a tracepoint to line 35 of file stubfile.c is: 
  14081.  
  14082.       TRACE   MINOR=0x700A,              /* puts tracepoint on code at line */
  14083.               TP=@stubfile.c,35,.....    /*  35 of source file stubfile.c   */
  14084.  
  14085.           TP=.name[{+|-}offs][,RETEP],
  14086.  
  14087.  where: 
  14088.  
  14089.  name 
  14090.            is a public label or an entry point name of a procedure to be 
  14091.            traced. The "." preceding name is required. Name must be found in 
  14092.            the debug information in the module or name must be a public symbol 
  14093.            as found in the MAP file. If debug information is used, the address 
  14094.            of this tracepoint will be immediately following the prologue of the 
  14095.            procedure. If MAP information is used, this address points to the 
  14096.            opcode at the given label. 
  14097.  
  14098.            If the procedure was compiled with debug support, Name is case 
  14099.            sensitive.  If not, C language functions will be case sensitive and 
  14100.            begin with an underscore "_" character unless the function is 
  14101.            declared with the Pascal calling convention, in which case the 
  14102.            underscore is omitted and the name is capitalized. 
  14103.  
  14104.  offs 
  14105.            (optional) is a decimal (specified as nnnnnnnn) or hex (specified as 
  14106.            0xnnnnnnnn) offset from the entry point address. 
  14107.  
  14108.  RETEP 
  14109.            (optional) specifies that the tracepoint will be inserted at the 
  14110.            return address corresponding to this entry point. This is just 
  14111.            before the procedure epilogue is executed and at this point the 
  14112.            procedure's automatic data is still addressable from register (E)BP 
  14113.            and the return code (if any) is set up in (E)AX. 
  14114.  
  14115.            The module must include information supplied by the debug compile 
  14116.            option (see Symbolic Debug Support), meaning that the source 
  14117.            language must have been C, otherwise an error message will be 
  14118.            generated and this tracepoint discarded. 
  14119.  
  14120.            When the RETEP is used, the name must be a valid entry point to a 
  14121.            procedure. 
  14122.  
  14123.            Note:  The RETEP option depends upon the manner in which a C 
  14124.                   compiler generates its code. Therefore this option may not 
  14125.                   work will some of the new compilers. 
  14126.  
  14127.  Note:  For ASM functions to accomplish tracing, a label must be made public to 
  14128.  have a tracepoint applied.  Therefore, to accomplish "POST" tracing, a label 
  14129.  must be made public at the return statement. 
  14130.  
  14131.  The following are partial examples of Pre/Post tracing of DosOpen: 
  14132.  
  14133.         TRACE   MINOR=0x0001,
  14134.                 TP=.DosOpen,.....            /* Pre-invocation tracing */
  14135.  
  14136.         TRACE   MINOR=0x8001,
  14137.                 TP=.DosOpen,RETEP,.....      /* Post-invocation tracing */
  14138.  
  14139.  It is not possible to set dynamic tracepoints on the following machine 
  14140.  instructions: 
  14141.  
  14142.  0x9C  PUSHF 
  14143.  0xCC  INT 3 
  14144.  0xCD  INT n 
  14145.  0xCE  INTO 
  14146.  0x62  BOUND 
  14147.  0x69  IMUL 
  14148.  0x6B  IMUL 
  14149.  0xF6  DIV, IDIV, MUL, IMUL, NEG, NOT, TEST (immediate) 
  14150.  0xF7  DIV, IDIV, MUL, IMUL, NEG, NOT, TEST (immediate) 
  14151.  
  14152.  TRCUST gives an error for these opcodes and the tracepoint is rejected. 
  14153.  
  14154.  In all cases, two tracepoints cannot be applied at the same address. 
  14155.  
  14156.  
  14157. ΓòÉΓòÉΓòÉ 22.6.5.3. OPCODE Keyword ΓòÉΓòÉΓòÉ
  14158.  
  14159. The OPCODE parameter is an optional keyword parameter. 
  14160.  
  14161.         OPCODE=0xnn,
  14162.  
  14163. where: 
  14164.  
  14165.  nn    is the expected one byte hex opcode to be found at the tracepoint 
  14166.        address and TRCUST verifies the value with that in the module. The 
  14167.        opcode of the instruction being traced must be the same as this value or 
  14168.        an error message is issued and the tracepoint is rejected. This may be 
  14169.        used to verify the opcode expected at the address specified by the TP 
  14170.        parameter. This may be useful when using TP = @filename,linenum to 
  14171.        ensure the requested instruction is traced. 
  14172.  
  14173.  
  14174. ΓòÉΓòÉΓòÉ 22.6.5.4. TYPE Keyword ΓòÉΓòÉΓòÉ
  14175.  
  14176. The TYPE parameter is an optional keyword parameter that defines the event 
  14177. types of this tracepoint. For more description and examples of event types see 
  14178. the online help for the TRACE command. 
  14179.  
  14180.         TYPE=(typename[,typename...]),
  14181.  
  14182. where: 
  14183.  
  14184.  typename    is an ASCII string specifying the type of this tracepoint. The 
  14185.              typename symbol must have been previously defined by the TYPELIST 
  14186.              statement. If an invalid typename is given, the tracepoint will be 
  14187.              discarded and a message issued. 
  14188.  
  14189.              The final type value is obtained by logically combining each type 
  14190.              name value using the OR operator. If TYPE is omitted, the trace 
  14191.              statement will have a type value of 0. 
  14192.  
  14193.  
  14194. ΓòÉΓòÉΓòÉ 22.6.5.5. GROUP Keyword ΓòÉΓòÉΓòÉ
  14195.  
  14196. The GROUP parameter is an optional keyword parameter that defines the group 
  14197. this tracepoint belongs to. For more description and examples of groups see the 
  14198. online help for the trace command. 
  14199.  
  14200.         GROUP=groupnam,
  14201.  
  14202. where: 
  14203.  
  14204.  groupnam    is an ASCII string specifying which group this tracepoint belongs. 
  14205.              The groupname symbol must have been previously defined by the 
  14206.              GROUPLIST statement. If an invalid groupname is given, the 
  14207.              tracepoint will be discarded and a message issued. 
  14208.  
  14209.              If GROUP is omitted, the trace statement will have a group value 
  14210.              of 0. 
  14211.  
  14212.  
  14213. ΓòÉΓòÉΓòÉ 22.6.5.6. DESC Keyword ΓòÉΓòÉΓòÉ
  14214.  
  14215. The DESC parameter is used to produce a description for the tracepoint that is 
  14216. output as the first line of formatted data. It should include the entry point 
  14217. name of the procedure being traced and whether this is an entry or return 
  14218. point. The descriptive string is enclosed in double quotes as for a C language 
  14219. string. The DESC parameter is required if any FMT specifications are present. 
  14220.  
  14221. The recommended formats for such strings are as follows: 
  14222.  
  14223.         DESC="name Pre-Invocation",
  14224.  
  14225.         DESC="name Post-Invocation",
  14226.  
  14227. where: 
  14228.  
  14229.  name              is the system component (in parentheses) followed by the 
  14230.                    entry point name of the procedure. 
  14231.  
  14232.  Pre-Invocation    identifies this tracepoint as an entry point, that is, 
  14233.                    before the function has been executed. 
  14234.  
  14235.  Post-Invocation   identifies this tracepoint as a return point from the 
  14236.                    function. 
  14237.  
  14238.  The words Pre-Invocation and Post-Invocation are not mandatory, merely 
  14239.  recommendations to be compatible with the base OS/2 tracepoints, when 
  14240.  formatted. If a tracepoint is inserted in the middle of a procedure it will be 
  14241.  appropriate to use different wording. The Trace Customizer does not check the 
  14242.  wording. 
  14243.  
  14244.  The following is an example of pre-invocation and post-invocation tracepoints: 
  14245.  
  14246.         TRACE  MINOR=0x0001,
  14247.                TP=.DosOpen,
  14248.                DESC="(OS) DosOpen    Pre-Invocation",.....
  14249.  
  14250.         TRACE  MINOR=0x8001,
  14251.                TP=.DosOpen,RETEP,
  14252.                DESC="(OS) DosOpen    Post-Invocation",.....
  14253.  
  14254.  
  14255. ΓòÉΓòÉΓòÉ 22.6.5.7. FMT Keyword ΓòÉΓòÉΓòÉ
  14256.  
  14257. The optional FMT parameter is used to produce the formatting string for the 
  14258. trace data. The developer should use these to control formatting the output 
  14259. produced by the Trace Formatter.  Each FMT keyword causes CR/LF to be appended 
  14260. to the format string. The formatting string is similar to a C library printf 
  14261. string specification. It consists of ASCII characters and formatting controls 
  14262. enclosed in double quotes as for a C language string. Each formatting primitive 
  14263. describes the format of the data in the trace buffer at the formatting position 
  14264. and must match the data stored in the trace buffer by the data statements 
  14265. described later. See Formatting Trace Data for a description of how the data is 
  14266. stored in the trace buffer and subsequently formatted. 
  14267.  
  14268. The formatting controls are as follows: 
  14269.  
  14270.  %Innn     Ignore nnn number of bytes in the trace buffer. 
  14271.  
  14272.            This tells the Trace Formatter to skip over the next nnn bytes in 
  14273.            the current trace record. This could be used, for example, to skip 
  14274.            over unimportant data, traced as a block, and only output the data 
  14275.            of interest. 
  14276.  
  14277.            When using this control, nnn represents an ASCII decimal number and 
  14278.            must be followed by a space. 
  14279.  
  14280.                               statement: FMT = "ignore ten bytes %I10 here",
  14281.                                          FMT = "       and two more %I2 here",
  14282.  
  14283.                               generates: ignore ten bytes here
  14284.                                                 and two more here
  14285.  
  14286.  %P        Process the data prefix bytes associated with the trace data. 
  14287.  
  14288.            This tells the Trace Formatter that the next bytes in the trace 
  14289.            record are the prefix or header bytes for data logged by the dynamic 
  14290.            tracing mechanism. This is required to precede any format control 
  14291.            describing data logged from memory.  Do not use this before data 
  14292.            that was logged from a register and never use with static 
  14293.            tracepoints. See Formatting Trace Data for a description of how the 
  14294.            data is stored in the trace buffer and the use of this control. 
  14295.  
  14296.                               statements: FMT="memory byte = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69B",
  14297.  
  14298.                               generates:  memory byte = C2
  14299.  
  14300.  %B        Output a byte of data. 
  14301.  
  14302.                               statement: FMT = "memory byte = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69B"
  14303.  
  14304.                               generates: memory byte = 01
  14305.  
  14306.  %W        Output a word of data. 
  14307.  
  14308.                               statement: FMT = "register word = %W"
  14309.  
  14310.                               generates: register word = 0001
  14311.  
  14312.  
  14313.                               statement: FMT = "memory word = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W"
  14314.  
  14315.                               generates: memory word = 0001
  14316.  
  14317.  %D        Output a double word of data. 
  14318.  
  14319.                               statement: FMT = "double word EAX = %D"
  14320.  
  14321.                               generates: double word EAX = 0000 4B2C
  14322.  
  14323.  
  14324.                               statement: FMT = "double memory word = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69D"
  14325.  
  14326.                               generates: double memory word = 0000 4B2C
  14327.  
  14328.  %F        Output a Flat (0:32 bit) address. 
  14329.  
  14330.                               statement: FMT = "flat address EAX = %F"
  14331.  
  14332.                               generates: flat address EAX = 00004B2C
  14333.  
  14334.  %Q        Output a quad word of data. 
  14335.  
  14336.                               statement: FMT = "quad word from regs EAX and EBX = %Q"
  14337.  
  14338.                               generates: quad word from regs EAX and EBX = 00004B2C 00000001
  14339.  
  14340.  %A        Output a segmented (16:16 bit) address. 
  14341.  
  14342.                               statement: FMT = "segmented address in SS:SP = %A"
  14343.  
  14344.                               generates: segmented address in SS:SP = 00B7:0001
  14345.  
  14346.  
  14347.                               statement: FMT = "segmented address in memory = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69A"
  14348.  
  14349.                               generates: segmented address in memory = 00B7:0001
  14350.  
  14351.  %R        Repeat the following format control for the rest of the memory that 
  14352.            was logged. 
  14353.  
  14354.            This is used for formatting variable length records.  Use this in 
  14355.            place of the prefix parameter %P to log the rest of the record in 
  14356.            the format specified following the repeat code. 
  14357.  
  14358.                          statement: FMT = "log a variable number of words from memory = 1W"
  14359.  
  14360.                          generates: log a variable number of words from memory = 0001 0004
  14361.  
  14362.  %S        Output an ASCIIZ string. 
  14363.  
  14364.            The prefix formatting control should always precede this for dynamic 
  14365.            tracepoints because the data was logged from memory. 
  14366.  
  14367.            Note:  If the tracepoint is static, then %P should not be used 
  14368.            because the string is terminated with a null byte. 
  14369.  
  14370.                               statement: FMT = "string = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S"
  14371.  
  14372.                               generates: string = c:\os2\os2.ini
  14373.  
  14374.  %U        Format the remainder of the trace record as a sequence of bytes. 
  14375.  
  14376.            This will output the remaining of the traced data, including any 
  14377.            prefix bytes. 
  14378.  
  14379.                               statement: FMT = "garbage = %U"
  14380.  
  14381.                               generates: garbage = 00 00 00 03 c2 c1 c4 ff 04 00 09 c0 18
  14382.  
  14383.  %X        Output the major event code. 
  14384.  
  14385.                               statement: FMT = "major code = %X"
  14386.  
  14387.                               generates: major code = 00C2
  14388.  
  14389.  %Y        Output the minor event code. 
  14390.  
  14391.                               statement: FMT = "minor code = %Y"
  14392.  
  14393.                               generates: minor code = 0081
  14394.  
  14395.  
  14396.  To avoid conflicts with source file control information, all formatting 
  14397.  specifications can be in upper or lower case. Also, prefix format 
  14398.  specifications may be combined with data format specifications. For example, 
  14399.  the following create the same format controls in the TFF: 
  14400.  
  14401.           FMT = "/usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W here"
  14402.           FMT = "%p%w here"
  14403.           FMT = " %P %W here"
  14404.  
  14405.  
  14406. ΓòÉΓòÉΓòÉ 22.6.5.8. LEN Keyword ΓòÉΓòÉΓòÉ
  14407.  
  14408. The LEN parameter is an optional keyword parameter that defines the length of 
  14409. the variable length record that will follow in the next MEM or MEM32 statement. 
  14410.  
  14411.         LEN=(length_spec,flag),
  14412.  
  14413. where: 
  14414.  
  14415.  length_spec     is an address specification that points to the one word length 
  14416.                  field of the next memory specification. This format can be 
  14417.                  symbolic_name+nnnnnnnn where symbolic_name is a symbolic 
  14418.                  memory location and nnnnnnnn is the offset from that symbolic 
  14419.                  address. The length_spec can also be Flat Register Form or 
  14420.                  Segment Register Form. 
  14421.  
  14422.  flag            is a mandatory parameter that identifies the level of 
  14423.                  indirection to be used on the length_spec. The flag may be one 
  14424.                  of the following: 
  14425.  
  14426.                                   D[IRECT]
  14427.                                   I[NDIRECT][*[{+|-}iiiiiiii]]...
  14428.  
  14429.                  DIRECT implies that the length_spec specifies a memory 
  14430.                  location that contains the length of the variable length 
  14431.                  record. 
  14432.  
  14433.                  INDIRECT means that the length_spec contains an address and is 
  14434.                  dereferenced to obtain the memory location. The optional 
  14435.                  asterisks denote the level of indirection, one for each level. 
  14436.                  The indirect offsets iiiiiiii are added to or subtracted from 
  14437.                  the value found at the given level of indirection. 
  14438.  
  14439.  The following are example LEN statements followed by the memory statement 
  14440.  whose length they describe. 
  14441.  
  14442.       TRACE MINOR=.....,
  14443.             /* Symbol vrecord is a record whose first field is a one */
  14444.             /* word value that is the total length of the entire     */
  14445.             /* variable length record.                               */
  14446.             LEN=(vrecord,DIRECT),
  14447.             MEM=(.vrecord,DIRECT,LEN),
  14448.  
  14449.             /* Symbol vrec_ptr is a pointer to a variable length record */
  14450.             /* and vend_ptr is a pointer to the end of the same record. */
  14451.             /* The second field (10 bytes from end of record) is  total */
  14452.             /* length of the variable length record.                    */
  14453.             LEN=(vend_ptr,INDIRECT*-10),
  14454.             MEM=(.vrec_ptr,INDIRECT,LEN),
  14455.  
  14456.             /* Symbol vrec_ptr is a pointer to a variable length record.*/
  14457.             /* The second field (2 bytes from beginning of record) is   */
  14458.             /* total length of the variable length record.              */
  14459.             LEN=(vrec_ptr,INDIRECT*+2),
  14460.             MEM=(.vrec_ptr,INDIRECT,LEN),
  14461.  
  14462.             /* Symbol ind_ptr is a pointer to a structure.  The third   */
  14463.             /* field in the structure (6 bytes from beginning) is a     */
  14464.             /* pointer to a variable record.  The fourth field in the   */
  14465.             /* variable length record (8 bytes from beginning) is the   */
  14466.             /* total length of this variable length record.             */
  14467.             LEN=(ind_ptr,INDIRECT*+6*+8),
  14468.             MEM=(.ind_ptr,INDIRECT*+6*,LEN),
  14469.  
  14470.             /* If DS:DI contains the address of ind_ptr, to perform */
  14471.             /* the above logging, the statements would be:              */
  14472.             LEN=(RDS+DI,INDIRECT*+6*+8),
  14473.             MEM=(RDS+DI,INDIRECT*+6*,LEN)
  14474.  
  14475.  
  14476. ΓòÉΓòÉΓòÉ 22.6.5.9. DATA_STMT ΓòÉΓòÉΓòÉ
  14477.  
  14478. There are three types of data that may be traced as part of the optional 
  14479. DATA_STMT section of the TRACE statement. 
  14480.  
  14481.       Registers 
  14482.       Memory 
  14483.       ASCIIZ strings 
  14484.  
  14485.  More than one keyword is permitted in a tracepoint definition. The order of 
  14486.  the statements defines the order in which the data is inserted into the trace 
  14487.  buffer. 
  14488.  
  14489.  The combined amount of data to be traced for a single tracepoint cannot exceed 
  14490.  MAXDATALENGTH.  If TRCUST determines that the maximum data size might be 
  14491.  exceeded, a warning message is issued but the tracepoint definition will 
  14492.  remain valid. 
  14493.  
  14494.  The keywords for tracing the three types of data are REGS, MEM32, MEM, 
  14495.  ASCIIZ32, and ASCIIZ. 
  14496.  
  14497.  The REGS keyword identifies which registers are to be recorded in the trace 
  14498.  buffer. 
  14499.  
  14500.  The MEM32 keyword is used to record sections of memory in the trace buffer. 
  14501.  Access to this memory location is through 32-bit flat addresses from functions 
  14502.  compiled using 32-bit addressing. Several MEM32 parameters may be coded at any 
  14503.  one tracepoint if several different memory areas are to be traced. 
  14504.  
  14505.  The MEM keyword is also used to record sections of memory in the trace buffer, 
  14506.  but access to this memory is through a segment:offset pair. This is used for 
  14507.  functions compiled using 16-bit addressing with segment registers. Several MEM 
  14508.  parameters may be coded at any one tracepoint if several different memory 
  14509.  areas are to be traced. 
  14510.  
  14511.  The ASCIIZ32 keyword is used to record an ASCIIZ string in the trace buffer. 
  14512.  This is a special form of the MEM32 keyword and there may be more than one 
  14513.  ASCIIZ32 parameter coded for a single tracepoint. 
  14514.  
  14515.  The ASCIIZ keyword is used to record an ASCIIZ string in the trace buffer. 
  14516.  This is a special form of the MEM keyword and there may be more than one 
  14517.  ASCIIZ parameter coded for a single tracepoint. 
  14518.  
  14519.  
  14520. ΓòÉΓòÉΓòÉ 22.6.5.10. REGS Keyword ΓòÉΓòÉΓòÉ
  14521.  
  14522. This is coded as: 
  14523.  
  14524.         REGS=(register[,register]...),
  14525.  
  14526. where: 
  14527.  
  14528.  register    is one of the following to support OS/2 versions 1.1 and 1.2: 
  14529.  
  14530.              CS, DS, SS, ES, AX, BX, CX, DX, SP, BP, SI, DI, IP, FLAGS 
  14531.  
  14532.              with the addition of the following to support OS/2 version 2.0: 
  14533.  
  14534.              EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI, EFLAGS, EIP, FS, GS 
  14535.  
  14536.              or the symbolic name of a C language variable declared with the 
  14537.              register storage-class specifier as .symbolic_name. 
  14538.  
  14539.              The same register may appear multiple times in the register list. 
  14540.              It will be traced as many times as it appears. Extended registers 
  14541.              (E) are 32 bits and logged as two words. All other registers are 
  14542.              16 bits and logged as one word. 
  14543.  
  14544.  Note:  To log a C language variable declared with the register storage class, 
  14545.  debug information must exist and the variable name is case sensitive.  When 
  14546.  formatting the data logged from a register variable, remember that there are 
  14547.  no memory prefix bytes put into the log buffer. 
  14548.  
  14549.  The following is an example of the REGS statement: 
  14550.  
  14551.        /* Given the following declaration in a C language source file: */
  14552.        register int ret_code;
  14553.  
  14554.        /* To log registers AX, CX and the register variable ret_code: */
  14555.        TRACE MINOR=.....
  14556.              REGS=(AX,CX,.ret_code),
  14557.              FMT="AX=%W  CX=%W  ret_code=%W"
  14558.  
  14559.  
  14560. ΓòÉΓòÉΓòÉ 22.6.5.11. MEM32 Keyword ΓòÉΓòÉΓòÉ
  14561.  
  14562. This is used to log memory in a function compiled using 32-bit flat addressing 
  14563. and is coded as: 
  14564.  
  14565.         MEM32=(address_spec,flag,{length|LEN}),
  14566.  
  14567. where: 
  14568.  
  14569.  address_spec    is a flat memory address specification as described in Address 
  14570.                  Specification. 
  14571.  
  14572.  flag            is a mandatory parameter that identifies the level of 
  14573.                  indirection to be used on the address. The flag may be one of 
  14574.                  the following: 
  14575.  
  14576.                                   D[IRECT]
  14577.                                   I[NDIRECT][*[{+|-}iiiiiiii]]...
  14578.                                   IS
  14579.  
  14580.                  DIRECT implies that the address specifies a memory location to 
  14581.                  be saved in the trace buffer. 
  14582.  
  14583.                  INDIRECT means that the address contains a flat address and is 
  14584.                  dereferenced to obtain the memory location. The optional 
  14585.                  asterisks denote the level of indirection, one for each level. 
  14586.                  The indirect offsets iiiiiiii are added to or subtracted from 
  14587.                  the value found at the given level of indirection. 
  14588.  
  14589.                  IS (Indirect Segmented) means that the address contains a 
  14590.                  segmented address that is dereferenced to obtain the memory 
  14591.                  location. 
  14592.  
  14593.  length          is the number of bytes at the memory location to be saved in 
  14594.                  the trace buffer. If length is too big, a warning message will 
  14595.                  be given, and length will be set to MAXDATALENGTH. If length 
  14596.                  is 0 an error message will be given, and this tracepoint will 
  14597.                  be ignored. 
  14598.  
  14599.  LEN             specifies that this is a variable length record to log and the 
  14600.                  length was specified by the preceding LEN statement. If there 
  14601.                  was no preceding LEN statement, this tracepoint is rejected. 
  14602.                  Either length or LEN must be specified, but not both. 
  14603.  
  14604.  The following is an example of the MEM32 statement: 
  14605.  
  14606.        TRACE MINOR=.....
  14607.              /* To log retcode enter the following: */
  14608.              MEM32=(.retcode,DIRECT,2),
  14609.  
  14610.              /* s_ptr is a pointer to a structure, log it for 4 bytes. */
  14611.              MEM32=(.s_ptr,INDIRECT,4),
  14612.  
  14613.              /* Field 6 bytes into structure pointed at by s_ptr is a     */
  14614.              /*  pointer to a structure, log 8 bytes past begin of struct.*/
  14615.              MEM32=(.s_ptr,INDIRECT*+6*+8,10),  /* logs ten bytes */
  14616.  
  14617.              /* s_ptr points to a variable length record, second field */
  14618.              /*  is the record length (offset 4 from record beginning).*/
  14619.              LEN=(s_ptr,INDIRECT*+4),
  14620.              MEM32=(.s_ptr,INDIRECT,LEN)
  14621.  
  14622.              /* s_end points to the end of same variable length record,*/
  14623.              /*  second field is the record length (offset -6 from     */
  14624.              /*  record beginning).                                    */
  14625.              LEN=(s_end,INDIRECT*-6),
  14626.              MEM32=(.s_ptr,INDIRECT,LEN)
  14627.  
  14628.  
  14629. ΓòÉΓòÉΓòÉ 22.6.5.12. MEM Keyword ΓòÉΓòÉΓòÉ
  14630.  
  14631. This is used to log memory in a function compiled using 16-bit segment:offset 
  14632. addressing and is coded as: 
  14633.  
  14634.         MEM=(address_spec,flag,{length|LEN}),
  14635.  
  14636. where: 
  14637.  
  14638.  address_spec    is a segmented memory address specification as described in 
  14639.                  Address Specification. 
  14640.  
  14641.  flag            is a mandatory parameter that identifies the level of 
  14642.                  indirection to be used on the address. The flag may be one of 
  14643.                  the following: 
  14644.  
  14645.                                   D[IRECT]
  14646.                                   I[NDIRECT][*[{+|-}iiiiiiii]]...
  14647.                                   IF
  14648.  
  14649.                  DIRECT implies that the address specifies a memory location to 
  14650.                  be saved in the trace buffer. 
  14651.  
  14652.                  INDIRECT means that the address contains a segmented address 
  14653.                  and is dereferenced to obtain the memory location. The 
  14654.                  optional asterisks denote the level of indirection, one for 
  14655.                  each level. The indirect offsets iiiiiiii are added to or 
  14656.                  subtracted from the value found at the given level of 
  14657.                  indirection. 
  14658.  
  14659.                  IF (Indirect Flat) means that the address contains a flat 
  14660.                  address that is dereferenced to obtain the memory location. 
  14661.  
  14662.                  Only far pointers may be dereferenced when using segmented 
  14663.                  addressing. 
  14664.  
  14665.  length          is the number of bytes at the memory location to be saved in 
  14666.                  the trace buffer. If length is too big, a warning message will 
  14667.                  be given, and length will be set to MAXDATALENGTH. If length 
  14668.                  is 0 an error message will be given, and this tracepoint will 
  14669.                  be ignored. 
  14670.  
  14671.  LEN             specifies that this is a variable length record to log and the 
  14672.                  length was specified by the preceding LEN statement. If there 
  14673.                  was no preceding LEN statement, this tracepoint is rejected. 
  14674.                  Either length or LEN must be specified, but not both. 
  14675.  
  14676.  
  14677. ΓòÉΓòÉΓòÉ 22.6.5.13. ASCIIZ32 Keyword ΓòÉΓòÉΓòÉ
  14678.  
  14679. This is used to log a string in a function compiled using 32-bit flat 
  14680. addressing and is coded as: 
  14681.  
  14682.         ASCIIZ32=(address_spec,flag,maxlength),
  14683.  
  14684. where: 
  14685.  
  14686.  address_spec    is a 0:32 bit flat memory address specification as described 
  14687.                  in Address Specification. 
  14688.  
  14689.  flag            is a mandatory parameter that identifies the level of 
  14690.                  indirection to be used on the address. The flag may be one of 
  14691.                  the following: 
  14692.  
  14693.                                   D[IRECT]
  14694.                                   I[NDIRECT][*[{+|-}iiiiiiii]]...
  14695.                                   IS
  14696.  
  14697.                  DIRECT implies that the address points to a memory location, 
  14698.                  the contents of which are to be saved in the trace buffer. 
  14699.  
  14700.                  INDIRECT means that the address points to a flat address 
  14701.                  pointer which is dereferenced to obtain the target location to 
  14702.                  save in the trace buffer. The optional asterisks denote the 
  14703.                  level of indirection, one for each level. The indirect offsets 
  14704.                  iiiiiiii are added to or subtracted from the value found at 
  14705.                  the given level of indirection. 
  14706.  
  14707.                  IS (Indirect Segmented) means that the address points to a 
  14708.                  segmented address pointer which is dereferenced to obtain the 
  14709.                  target location to save in the trace buffer. 
  14710.  
  14711.  maxlength       is the maximum length of the string that will be saved in the 
  14712.                  trace buffer. It should be no greater than MAXDATALENGTH. The 
  14713.                  actual length to be traced will depend on where the zero 
  14714.                  terminating byte is found. 
  14715.  
  14716.                  If maxlength is 0 an error message will be given, and this 
  14717.                  tracepoint will be ignored. 
  14718.  
  14719.                  Note:  When using dynamic tracing, the OS/2 kernel does not 
  14720.                  place the terminating null byte into the trace buffer; 
  14721.                  therefore the prefix byte must be used by the Trace Formatter 
  14722.                  to obtain the length of the string. 
  14723.  
  14724.  
  14725. ΓòÉΓòÉΓòÉ 22.6.5.14. ASCIIZ Keyword ΓòÉΓòÉΓòÉ
  14726.  
  14727. This is used to log a string in a function compiled using 16-bit segment:offset 
  14728. addressing and is coded as: 
  14729.  
  14730.         ASCIIZ=(address_spec,flag,maxlength),
  14731.  
  14732. where: 
  14733.  
  14734.  address_spec    is a segmented memory address specification as described in 
  14735.                  Address Specification. 
  14736.  
  14737.  flag            is a mandatory parameter that identifies the level of 
  14738.                  indirection to be used on the address. The flag may be one of 
  14739.                  the following: 
  14740.  
  14741.                                   D[IRECT]
  14742.                                   I[NDIRECT][*[{+|-}iiiiiiii]]...
  14743.                                   IF
  14744.  
  14745.                  DIRECT implies that the address points to a memory location, 
  14746.                  the contents of which are to be saved in the trace buffer. 
  14747.  
  14748.                  INDIRECT means that the address points to a far pointer which 
  14749.                  is a segmented address that is dereferenced to obtain the 
  14750.                  target location to save in the trace buffer. The optional 
  14751.                  asterisks denote the level of indirection, one for each level. 
  14752.                  The indirect offsets iiiiiiii are added to or subtracted from 
  14753.                  the value found at the given level of indirection. 
  14754.  
  14755.                  IF (Indirect Flat) means that the address points to a far 
  14756.                  pointer, which is a flat address that is dereferenced to 
  14757.                  obtain the target location to save in the trace buffer. Only 
  14758.                  far pointers may be dereferenced using segmented addresses. 
  14759.  
  14760.  maxlength       is the maximum length of the string that will be saved in the 
  14761.                  trace buffer. It should be no greater than MAXDATALENGTH. The 
  14762.                  actual length to be traced will depend on where the zero 
  14763.                  terminating byte is found. 
  14764.  
  14765.                  If maxlength is 0 an error message will be given, and this 
  14766.                  tracepoint will be ignored. 
  14767.  
  14768.                  Note:  When using dynamic tracing, the OS/2 kernel does not 
  14769.                  place the terminating null byte into the trace buffer; 
  14770.                  therefore the prefix byte must be used by the Trace Formatter 
  14771.                  to obtain the length of the string. 
  14772.  
  14773.  
  14774. ΓòÉΓòÉΓòÉ 22.6.5.15. Address Specification ΓòÉΓòÉΓòÉ
  14775.  
  14776. The syntax for specifying a memory address given here applies to the MEM32, 
  14777. MEM, ASCIIZ32 and ASCIIZ keywords above. 
  14778.  
  14779. An address is specified in one of the following forms: 
  14780.  
  14781.      Symbolic name form (can be used for MEM32, MEM, ASCIIZ32, and ASCIIZ). 
  14782.      Flat register form (can be used only for MEM32 and ASCIIZ32). 
  14783.      Segment register form (can be used only for MEM and ASCIIZ). 
  14784.  
  14785.  Each of these forms is described below. 
  14786.  
  14787.  
  14788. ΓòÉΓòÉΓòÉ 22.6.5.15.1. Symbolic Name Form ΓòÉΓòÉΓòÉ
  14789.  
  14790. This is coded as: 
  14791.  
  14792.         .name[{+|-}nnnnnnnn]...[{+|-}(iiiiiiii)],
  14793.  
  14794. where: 
  14795.  
  14796.  name        is a symbolic name of a memory location. The "." is required 
  14797.              before the name The debug information in the module is checked for 
  14798.              the name. If the debug information for the name is not found and a 
  14799.              MAP was given, the MAP is checked. An error message is output by 
  14800.              the Trace Customizer if the symbol is not found and the trace 
  14801.              definition is ignored. 
  14802.  
  14803.              The name is case sensitive except under the conditions that 
  14804.              follow: 
  14805.  
  14806.              If the procedure containing name was not compiled with debug 
  14807.              option then if name is a C language symbolic name it will be case 
  14808.              sensitive and begin with an underscore (_) character unless it was 
  14809.              declared with the Pascal naming convention, in which case the 
  14810.              underscore is omitted and name is capitalized. 
  14811.  
  14812.  nnnnnnnn    (optional) is a displacement from the symbolic address. If hex the 
  14813.              syntax is 0xnnnnnnnn. 
  14814.  
  14815.  iiiiiiii    (optional) is a displacement from the indirect address. If hex the 
  14816.              syntax is 0xiiiiiiii. This specifies a displacement from the final 
  14817.              address when using INDIRECT, IF (Indirect Flat) or IS (Indirect 
  14818.              Segmented) addressing. 
  14819.  
  14820.  
  14821. ΓòÉΓòÉΓòÉ 22.6.5.15.2. Flat Register Form ΓòÉΓòÉΓòÉ
  14822.  
  14823. This is coded as: 
  14824.  
  14825.         Fbreg[{+|-}ireg]...[{+|-}nnnnnnnn]...[{+|-}(iiiiiiii)],
  14826.  
  14827. where: 
  14828.  
  14829.  breg        is a flat model (0:32 bit) base register and is one of: 
  14830.  
  14831.              EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI 
  14832.  
  14833.  ireg        (optional) is an extended data, base or index register. More than 
  14834.              one ireg may be used to define a displacement from the flat 
  14835.              register value to the memory location. It may be one of: 
  14836.  
  14837.              EAX, EBX, ECX, EDX, EBP, ESI, EDI 
  14838.  
  14839.  nnnnnnnn    (optional) is an optional fixed displacement to be added to the 
  14840.              address calculated in the registers.  If hex the format is 
  14841.              0xnnnnnnnn. 
  14842.  
  14843.  iiiiiiii    (optional) is a displacement from the indirect address. If hex the 
  14844.              syntax is 0xiiiiiiii. This specifies a displacement from the final 
  14845.              address when using INDIRECT or IS (Indirect Segmented) addressing. 
  14846.  
  14847.  This form of address is calculated at run time. 
  14848.  
  14849.  
  14850. ΓòÉΓòÉΓòÉ 22.6.5.15.3. Segment Register Form ΓòÉΓòÉΓòÉ
  14851.  
  14852. This is coded as: 
  14853.  
  14854.         Rsreg[{+|-}dreg]...[{+|-}nnnnn]...[{+|-}(iiiii)],
  14855.  
  14856. where: 
  14857.  
  14858.  sreg        is a segment register and is one of: 
  14859.  
  14860.              CS, DS, SS, ES, FS, GS 
  14861.  
  14862.  dreg        (optional) is a data, base or index register. More than one dreg 
  14863.              may be used to define a displacement from the segment register 
  14864.              value to the memory location. It is one of: 
  14865.  
  14866.              BP, SP, SI, DI, AX, BX, CX, DX 
  14867.  
  14868.  nnnnn       (optional) is an optional fixed displacement to be added to the 
  14869.              address calculated in the registers.  If hex the syntax is 0xnnnn. 
  14870.  
  14871.  iiiii       (optional) is a displacement from the indirect address. If hex the 
  14872.              syntax is 0xiiii. This specifies a displacement from the final 
  14873.              address when using INDIRECT or IF (Indirect Flat) addressing. 
  14874.  
  14875.  This form of address is calculated at run time. 
  14876.  
  14877.  
  14878. ΓòÉΓòÉΓòÉ 22.7. Formatting Trace Data ΓòÉΓòÉΓòÉ
  14879.  
  14880. This section gives a brief description of the formatting process as an aid to 
  14881. generating correct formatting strings. 
  14882.  
  14883. Each trace record stored in the RAS buffer consists of a header followed by a 
  14884. number of variable length trace data records. The header identifies the major 
  14885. and minor code, time stamp, process ID, etc., and the total length of the trace 
  14886. data for that trace record. 
  14887.  
  14888. Each MEM32, MEM, ASCIIZ32, or ASCIIZ data statement, coded in the trace source 
  14889. file for a tracepoint, produces an associated data record to be stored in the 
  14890. trace buffer. The data records consist of a 3-byte prefix followed by the trace 
  14891. data. This prefix consists of a status byte followed by the length of the data 
  14892. for that statement. The status byte indicates whether valid data has been 
  14893. traced. 
  14894.  
  14895. Dynamic trace can only trace data that is resident in memory at the time that 
  14896. the tracepoint is executed. Data may not be able to be traced for two reasons: 
  14897. it resides in a page that is currently paged out or the address specified is 
  14898. invalid. This latter case usually occurs due to tracing indirectly via invalid 
  14899. pointer variables. In either of these two cases dynamic trace sets the status 
  14900. byte accordingly and stores the pointer in the place of the wanted data. No 
  14901. more data is attempted to be traced for this invocation of the tracepoint, but 
  14902. tracing will resume the next time this tracepoint is encountered. 
  14903.  
  14904. Since the position of these prefix bytes, within a trace record, is dependent 
  14905. on the data being traced and the number of MEM32, MEM, ASCIIZ32, or ASCIIZ 
  14906. statements, the Trace Formatter must be told when to expect the prefix in the 
  14907. trace record. This is the purpose of the %P formatting control. It must be 
  14908. coded in the formatting string at every place a data record is expected. 
  14909.  
  14910. Note:  With ASCIIZ and ASCIIZ32 commands, the prefix must be used to obtain the 
  14911. length of the string since the string is not null terminated. 
  14912.  
  14913.  
  14914. ΓòÉΓòÉΓòÉ 22.8. Sample Trace Source Files ΓòÉΓòÉΓòÉ
  14915.  
  14916. This section gives four sample TSF files. The first is for a module written in 
  14917. a mix of C and MASM and compiled with 16:16 segmented addressing.  The second 
  14918. was compiled with 0:32 flat addressing.  The third module consists of routines, 
  14919. some which were compiled using 16-bit segmented addressing and some that were 
  14920. compiled using 32-bit flat addressing. The fourth is for monitoring function 
  14921. references in a module. 
  14922.  
  14923.  
  14924. ΓòÉΓòÉΓòÉ 22.8.1. TSF Using 16-bit Segmented Addressing ΓòÉΓòÉΓòÉ
  14925.  
  14926. ;  Trace source file for the xxx dynalink.  Compiled with 16-bit offsets.
  14927.  
  14928.      MODNAME=\c\src\xxx.dll
  14929.      MAJOR=0xC5
  14930.      MAXDATALEN=200
  14931. ;  We will want to trace up to 200 bytes in any one trace call.
  14932.  
  14933.      TYPELIST NAME=API,ID=08,
  14934.               NAME=SYS,ID=04,
  14935.               NAME=PRE,ID=02,
  14936.               NAME=POST,ID=64
  14937.  
  14938.      GROUPLIST NAME=MEM,ID=1,
  14939.                NAME=FS,ID=3
  14940.  
  14941.               /* The following tracepoint does not need debug info,
  14942.                  only a MAP file is necessary with label xxalloc
  14943.                  public in it.  The program must be compiled in 16-bit
  14944.                  mode because segmented addressing is used (ASCIIZ
  14945.                  instead of ASCIIZ32).
  14946.                  This logs the word registers AX and BX and the string
  14947.                  pointed at by DS:DI for a max of 20 bytes. */
  14948.  
  14949.      TRACE    MINOR=25, TP=.xxalloc,
  14950.               OPCODE=0x8B,    /* the opcode is optional */
  14951.               TYPE=(API,PRE),
  14952.               GROUP=MEM,
  14953.               DESC="(OS) xxalloc Pre-Invocation",
  14954.               FMT ="                             AX = %W ",
  14955.               FMT ="                             upper BX = %B",
  14956.               FMT ="                             lower BX = %B",
  14957.               FMT ="                             param = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  14958.               REGS=(AX,BX),
  14959.               ASCIIZ=(RDS+DI,DIRECT,20)
  14960.  
  14961.  
  14962.               /* This defines a tracepoint at Foo label.  The ten words
  14963.                  to log are found indirectly through SS:SP.  Note that
  14964.                  each word needs a format control but since only one
  14965.                  memory access was done,  one prefix control is needed. */
  14966.  
  14967.       TRACE   MINOR=0xB0, TP=.Foo,
  14968.               TYPE=(SYS),
  14969.               GROUP=FS,
  14970.               DESC="(OS) Foo Pre-Invocation",
  14971.               FMT="                     First Five words = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69Wtrtrcust.scr, tk.sdb.ToolsReference, id207sW@(#)69   1.4W",
  14972.               FMT="                     Three words ignored %I6",
  14973.               FMT="                     Last Two Words = trtrcust.scr, tk.sdb.ToolsReference, id207sW",
  14974.               MEM=(RSS+SP,INDIRECT,20)
  14975.  
  14976.  
  14977.               /* This defines a tracepoint at Goo label.  DS:DI points
  14978.                  to a structure whose second field is a pointer to an
  14979.                  ASCIIZ string.  The offset from the first field in the
  14980.                  structure is 4 bytes. Max string size to log is 40 bytes. */
  14981.  
  14982.       TRACE   MINOR=0xB1, TP=.Goo,
  14983.               TYPE=(SYS),
  14984.               GROUP=FS,
  14985.               DESC="(OS) Goo Pre-Invocation",
  14986.               FMT="          Second field in struct points to /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  14987.               ASCIIZ=(RDS+DI+4,INDIRECT,40)
  14988.  
  14989.  
  14990.               /* This defines a tracepoint at Hoo label.  DS:DI points to
  14991.                  memory that contains a pointer to a structure. We want to
  14992.                  log the third field in the structure (offset 6 from begin
  14993.                  of structure). */
  14994.  
  14995.       TRACE   MINOR=0xB2, TP=.Hoo,
  14996.               TYPE=(SYS),
  14997.               GROUP=FS,
  14998.               DESC="(OS) Hoo Pre-Invocation",
  14999.               FMT="          Third field in struct is doubleword = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69D",
  15000.               MEM=(RDS+DI,INDIRECT*+6,4)
  15001.  
  15002.  
  15003.               /* This defines a tracepoint at Zoo label.  DS:DI points to
  15004.                  memory that contains a pointer to end of a structure. We
  15005.                  want to log the last field in the structure(offset -2 from
  15006.                  end of structure). */
  15007.  
  15008.       TRACE   MINOR=0xB3, TP=.Zoo,
  15009.               TYPE=(SYS),
  15010.               GROUP=FS,
  15011.               DESC="(OS) Zoo Pre-Invocation",
  15012.               FMT="          Last field in struct is word = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  15013.               MEM=(RDS+DI,INDIRECT*-2,2)
  15014.  
  15015.  
  15016.               /* This defines a tracepoint at procedure CheckIT.  This
  15017.                  is a C routine compiled with debug information.  The
  15018.                  data to log is an ASCIIZ string called NameIt.  */
  15019.  
  15020.       TRACE   MINOR=0xB3, TP=.CheckIt,
  15021.               TYPE=(PRE),
  15022.               GROUP=FS,
  15023.               DESC="(OS) CheckIt Pre-Invocation",
  15024.               FMT="              NameIt = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  15025.               ASCIIZ=(.NameIt,DIRECT,64)
  15026.  
  15027.  
  15028.               /* This defines a tracepoint at the return point of the
  15029.                  procedure CheckIt, a C routine compiled with debug.
  15030.                  Status_Rec is a record variable. We want to log the
  15031.                  age field (four bytes from the begin of Status_Rec),
  15032.                  the name (six bytes from Status_Rec that points to
  15033.                  an ASCIIZ string), the age of the next Status_Rec
  15034.                  (a pointer to the next Status_Rec is ten bytes from
  15035.                  the begin of Status_Rec, the age is four bytes from
  15036.                  the begin of the next Status_Rec). */
  15037.  
  15038.       TRACE   MINOR=0x80B3, TP=.CheckIt,RETEP,
  15039.               TYPE=(POST),
  15040.               GROUP=FS,
  15041.               DESC="(OS) CheckIt Post-Invocation",
  15042.               FMT="              Status_Rec.age = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  15043.               FMT="              Status_Rec.name = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  15044.               FMT="              Status_Rec.next->age = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  15045.               MEM=(.Status_Rec+4,DIRECT,2),
  15046.               ASCIIZ=(.Status_Rec+6,INDIRECT,64),
  15047.               MEM=(.Status_Rec+10,INDIRECT*+4,2)
  15048.  
  15049.  
  15050.               /* This defines a tracepoint at line 58 in the source
  15051.                  file check.c   Debug info is needed to use this
  15052.                  type of tracepoint. v_ptr is a pointer to a variable
  15053.                  sized record.  The length is 4 bytes past the
  15054.                  beginning of the record.  Log that record. */
  15055.  
  15056.       TRACE   MINOR=0x71B4, TP=@check.c,58,
  15057.               TYPE=(SYS),
  15058.               GROUP=FS,
  15059.               DESC="(OS) CheckIt   before allocation",
  15060.               FMT="              Variant Record = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W96/09/03U",
  15061.               LEN=(v_ptr,INDIRECT*+4),
  15062.               MEM=(.v_ptr,INDIRECT,LEN)
  15063.  
  15064.  
  15065.               /* This does not define a tracepoint, it only defines a
  15066.                  trace formatting string for minor code 181 (B5 hex). */
  15067.  
  15068.       TRACE   MINOR=0xB5, TP=@STATIC,
  15069.               DESC="(OS) StaticProcedure Pre-Invocation",
  15070.               FMT="                 DI = %W FLAGS = %W"
  15071.  
  15072.  
  15073.               /* This defines a tracepoint at routine LookUp, but no
  15074.                  data is to be logged, only the DESC will show up
  15075.                  in the Trace log when the tracepoint is formatted. */
  15076.  
  15077.       TRACE   MINOR=0xB6, TP=.LookUp,
  15078.               TYPE=(SYS),
  15079.               GROUP=FS,
  15080.               DESC="(APP) LookUp  Pre-Invocation",
  15081.  
  15082.  
  15083. ΓòÉΓòÉΓòÉ 22.8.2. TSF Using 32-bit Addressing ΓòÉΓòÉΓòÉ
  15084.  
  15085. ;  Trace source file for the NEW dynalink.  Compiled with 32-bit offsets.
  15086.  
  15087.      MODNAME=NEWCALLS.DLL
  15088.      MAJOR=241
  15089.      MAXDATALEN=200
  15090. ;  We will want to trace up to 200 bytes in any one trace call.
  15091.  
  15092.      TYPELIST NAME=API,ID=08,
  15093.               NAME=SYS,ID=04,
  15094.               NAME=PRE,ID=02,
  15095.               NAME=POST,ID=64
  15096.  
  15097.      GROUPLIST NAME=MEM,ID=1,
  15098.                NAME=FS,ID=3
  15099.  
  15100.               /* The following tracepoint does not need debug info,
  15101.                  only a MAP file is necessary with label NewAllocSeg
  15102.                  public in it.  The program must be compiled in 32-bit
  15103.                  mode because flat addressing is used (ASCIIZ32 instead
  15104.                  of ASCIIZ).
  15105.                  This logs lower word of EAX, the double word of EBX
  15106.                  and the string at the address specified by ESP with
  15107.                  offset ESI. */
  15108.  
  15109.      TRACE    MINOR=45, TP=.NewAllocSeg,
  15110.               TYPE=(API,PRE),
  15111.               GROUP=MEM,
  15112.               DESC="(NEW) NewAllocSeg Pre-Invocation",
  15113.               FMT ="                             AX = %W ",
  15114.               FMT ="                             EBX = %F",
  15115.               FMT ="                             param = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  15116.               REGS=(AX,EBX),
  15117.               ASCIIZ32=(FESP+ESI,DIRECT,20)
  15118.  
  15119.               /* This defines a tracepoint at Foo label.  The ten words
  15120.                  to log are found indirectly by using EBP with offset
  15121.                  EDI. Note that each value logged needs a format control. */
  15122.  
  15123.       TRACE   MINOR=0xD0, TP=.Foo,
  15124.               TYPE=(SYS),
  15125.               GROUP=FS,
  15126.               DESC="(NEW) Foo Pre-Invocation",
  15127.               FMT="                     First Five words = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69Wtrtrcust.scr, tk.sdb.ToolsReference, id207sW@(#)69   1.4W",
  15128.               FMT="                     Three words ignored %I6",
  15129.               FMT="                     Last Two Words = trtrcust.scr, tk.sdb.ToolsReference, id207sW",
  15130.               MEM32=(FEBP+EDI,INDIRECT,20)
  15131.  
  15132.  
  15133.               /* This defines a tracepoint at Goo label. EAX + EDI points
  15134.                  to a structure whose second field is a pointer to an
  15135.                  ASCIIZ string.  The offset from the first field in the
  15136.                  structure is 4 bytes. Max string size to log is 40 bytes.*/
  15137.  
  15138.       TRACE   MINOR=0xD1, TP=.Goo,
  15139.               TYPE=(SYS),
  15140.               GROUP=FS,
  15141.               DESC="(NEW) Goo Pre-Invocation",
  15142.               FMT="           Second field in struct points to /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  15143.               ASCIIZ32=(FEAX+EDI+4,INDIRECT,40)
  15144.  
  15145.  
  15146.               /* This defines a tracepoint at Hoo label.  EBP + EDI points
  15147.                  to memory that contains a pointer to a structure. We want
  15148.                  to log the third field in the structure (offset 6 from
  15149.                  begin of structure). */
  15150.  
  15151.       TRACE   MINOR=0xD2, TP=.Hoo,
  15152.               TYPE=(SYS),
  15153.               GROUP=FS,
  15154.               DESC="(NEW) Hoo Pre-Invocation",
  15155.               FMT="           Third field in struct is doubleword = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69D",
  15156.               MEM32=(FEBP+EDI,INDIRECT*+6,4)
  15157.  
  15158.  
  15159.               /* This defines a tracepoint at Zoo label.  EAX + EDI points
  15160.                  to memory that contains a pointer to end of a structure. We
  15161.                  want to log the last field in the structure (offset -2 from
  15162.                  end of structure). */
  15163.  
  15164.       TRACE   MINOR=0xD3, TP=.Zoo,
  15165.               TYPE=(SYS),
  15166.               GROUP=FS,
  15167.               DESC="(OS) Zoo Pre-Invocation",
  15168.               FMT="          Last field in struct is word = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  15169.               MEM=(FEAX+EDI,INDIRECT*-2,2)
  15170.  
  15171.  
  15172.               /* This defines a tracepoint at procedure CheckIT.  This is
  15173.                  a C routine compiled with debug information.  The
  15174.                  data to log is an ASCIIZ string called NameIt. */
  15175.  
  15176.       TRACE   MINOR=0xD3, TP=.CheckIt,
  15177.               TYPE=(PRE),
  15178.               GROUP=FS,
  15179.               DESC="(NEW) CheckIt Pre-Invocation",
  15180.               FMT="              NameIt = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  15181.               ASCIIZ32=(.NameIt,DIRECT,64)
  15182.  
  15183.  
  15184.               /* This defines a tracepoint at the return point of the
  15185.                  procedure CheckIt, a C routine compiled with debug.
  15186.                  Status_Rec is a record variable. We want to log the
  15187.                  age field (four bytes from the begin of Status_Rec)
  15188.                  the name (six bytes from Status_Rec that points to
  15189.                  an ASCIIZ string) and the age of the next Status_Rec
  15190.                  (a pointer to the next Status_Rec is ten bytes from
  15191.                  the begin of Status_Rec, the age is four bytes from
  15192.                  the begin of the next Status_Rec). */
  15193.  
  15194.       TRACE   MINOR=0x80D3, TP=.CheckIt,RETEP,
  15195.               TYPE=(POST),
  15196.               GROUP=FS,
  15197.               DESC="(NEW) CheckIt Post-Invocation",
  15198.               FMT="              Status_Rec.age = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  15199.               FMT="              Status_Rec.name = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  15200.               FMT="              Status_Rec.next->age = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  15201.               MEM32=(.Status_Rec+4,DIRECT,2),
  15202.               ASCIIZ32=(.Status_Rec+6,INDIRECT,64),
  15203.               MEM32=(.Status_Rec+10,INDIRECT*+4,2)
  15204.  
  15205.  
  15206.               /* This does not define a tracepoint, it only defines a
  15207.                  trace formatting string for minor code 223 (DF hex). */
  15208.  
  15209.       TRACE   MINOR=0xDF, TP=@STATIC,
  15210.               DESC="(NEW) StaticProcedure Pre-Invocation",
  15211.               FMT="                 DI = %W FLAGS = %W"
  15212.  
  15213.  
  15214.               /* This defines a tracepoint at routine LookUp, but no
  15215.                  data is to be logged, only the DESC will show up
  15216.                  in the Trace log when the tracepoint is formatted.
  15217.                  LookUp is a C language routine not compiled with
  15218.                  debug and not declared with Pascal
  15219.                  calling conventions; the underscore is needed for
  15220.                  this label. */
  15221.  
  15222.       TRACE   MINOR=0xE0, TP=._LookUp,
  15223.               TYPE=(SYS),
  15224.               GROUP=FS,
  15225.               DESC="(NEW) LookUp  Pre-Invocation"
  15226.  
  15227.  
  15228. ΓòÉΓòÉΓòÉ 22.8.3. TSF Using Mix of 16-bit and 32-bit Addressing ΓòÉΓòÉΓòÉ
  15229.  
  15230. ;  Trace source file for the MIXED dynalink.
  15231. ;    Parts were compiled with 16-bit compiler, some with 32-bit compiler.
  15232. ;    The developer must know how the parameters being sent in are
  15233. ;    to be addressed, whether they are segmented or flat addresses.
  15234.  
  15235.      MODNAME=MIXCALLS.DLL
  15236.      MAJOR=250
  15237.      MAXDATALEN=200
  15238. ;  We will want to trace up to 200 bytes in any one trace call.
  15239.  
  15240.      TYPELIST NAME=API,ID=08,
  15241.               NAME=SYS,ID=04,
  15242.               NAME=PRE,ID=02,
  15243.               NAME=POST,ID=64
  15244.  
  15245.      GROUPLIST NAME=MEM,ID=1,
  15246.                NAME=FS,ID=3
  15247.  
  15248.               /* The following tracepoint is for the routine MixStub.
  15249.                  This was compiled using segmented addressing and
  15250.                  one of the parameters to it is a pointer to a control
  15251.                  block called mix_ctrl.  This pointer, found at SS:SP,
  15252.                  is a flat address because the routine that sent it was
  15253.                  compiled with the flat addressing specification.
  15254.                  This logs the mix_ctrl block for 6 bytes. */
  15255.  
  15256.      TRACE    MINOR=95, TP=.MixStub,
  15257.               TYPE=(API,PRE),
  15258.               GROUP=MEM,
  15259.               DESC="(OS) MixStub     Pre-Invocation",
  15260.               FMT ="                             mix_ctrl = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W %W %W",
  15261.               MEM=(RSS+SP,IF,6)    /* is an indirect flat address */
  15262.  
  15263.  
  15264.               /* The following is for the routine FlatStub.  This was
  15265.                  compiled using 32-bit flat addresses.  A parameter to
  15266.                  flatstub is a pointer called p_seg_info.  This
  15267.                  pointer is a segmented address because the routine
  15268.                  calling flatstub was compiled using 16-bit segmented
  15269.                  addressing.  Log where p_seg_info points for 2 bytes. */
  15270.  
  15271.       TRACE   MINOR=0xf0, TP=.FlatStub,
  15272.               TYPE=(SYS),
  15273.               GROUP=FS,
  15274.               DESC="(OS) FlatStub Pre-Invocation",
  15275.               FMT="                     seg_info = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  15276.               MEM32=(.p_seg_info,IS,2)   /* value p_seg_info is a 16-bit */
  15277.                                          /*  segmented address           */
  15278.  
  15279.  
  15280. ΓòÉΓòÉΓòÉ 22.9. Trace Customizer Messages ΓòÉΓòÉΓòÉ
  15281.  
  15282. The messages generated by the Trace Customizer are given below. In addition to 
  15283. the message itself, the source line in error is displayed. 
  15284.  
  15285. Errors in the FATAL and SEVERE category will cause the compiler to abort 
  15286. immediately. 
  15287.  
  15288. ERROR messages will normally cause a tracepoint definition to be discarded and 
  15289. processing continues with the next definition. 
  15290.  
  15291. WARNING messages will allow a valid tracepoint definition to be produced, and 
  15292. the results will normally be as expected. 
  15293.  
  15294.  
  15295. ΓòÉΓòÉΓòÉ 22.9.1. External Messages ΓòÉΓòÉΓòÉ
  15296.  
  15297.  Msg No.   Message Text 
  15298.  
  15299.  TCU0001I: TRCUST Version %1 
  15300.  
  15301.  TCU0002I: created TDF file %1 
  15302.  
  15303.  TCU0004I: error detected, TRCUST aborted 
  15304.  
  15305.  TCU0005E: unrecognized executable header in %1 
  15306.  
  15307.  TCU0006E: invalid command line parameter %1 
  15308.  
  15309.  TCU0007E: unable to access %1 
  15310.  
  15311.  TCU0008E: unable to open %1 
  15312.  
  15313.  TCU0009E: unable to read from %1 
  15314.  
  15315.  TCU0010E: unable to write to %1 
  15316.  
  15317.  TCU0011E: unable to find %1 or access denied 
  15318.  
  15319.  TCU0012E: out of memory 
  15320.  
  15321.  TCU0013E: symbolic information not given for %1 
  15322.  
  15323.  TCU0014E: invalid quoted string encountered in %1 
  15324.  
  15325.  TCU0015E: too many tracepoints in %1 
  15326.  
  15327.  TCU0016E: unexpected end-of-file encountered in %1 
  15328.  
  15329.  TCU0017I: error detected, tracepoint ignored 
  15330.  
  15331.  TCU0018W: %1 (%2): invalid object number %3 in executable file 
  15332.  
  15333.  TCU0019W: %1 (%2): invalid offset for object number %3 in executable file 
  15334.  
  15335.  TCU0020W: %1 (%2): invalid page for tracepoint application 
  15336.  
  15337.  TCU0021W: %1 (%2): unable to find %3 in CodeView information 
  15338.  
  15339.  TCU0022W: %1 (%2): invalid line number in %3 
  15340.  
  15341.  TCU0023W: %1 (%2): invalid opcode for tracing 
  15342.  
  15343.  TCU0024W: %1 (%2): unable to find %3 symbol 
  15344.  
  15345.  TCU0025W: %1: duplicate %3 in tracepoint starting at line %2 
  15346.  
  15347.  TCU0026W: %1 (%2): index too large, high word ignored 
  15348.  
  15349.  TCU0027W: %1 (%2): invalid %3 syntax 
  15350.  
  15351.  TCU0028W: %1 (%2): %3 not specified 
  15352.  
  15353.  TCU0029W: %1 (%2): %3 redefinition 
  15354.  
  15355.  TCU0030W: %1 (%2): unable to find line number, %3 used 
  15356.  
  15357.  TCU0031W: %1 (%2): CodeView information does not exist for %3 
  15358.  
  15359.  TCU0032W: %1 (%2): tracing opcode defined after %3 
  15360.  
  15361.  TCU0033W: %1 (%2): %3 out of range, default assumed 
  15362.  
  15363.  TCU0034W: %1 (%2): syntax error, %3 unrecognized 
  15364.  
  15365.  TCU0035W: %1 (%2): RPN command record exceeds maximum limit 
  15366.  
  15367.  
  15368. ΓòÉΓòÉΓòÉ 22.9.2. Internal Messages ΓòÉΓòÉΓòÉ
  15369.  
  15370. Internal format messages produced by TRCUST are of the form: 
  15371.  
  15372.         TRCUST(n) severity: message_text
  15373.  
  15374. where: 
  15375.  
  15376.  n             is the line number of the tsf in error or (1) if the command 
  15377.                syntax is in error. 
  15378.  
  15379.  severity      is the message severity and may take one of the following 
  15380.                values: 
  15381.  
  15382.                    Fatal Messages 
  15383.  
  15384.                    Severe Messages 
  15385.  
  15386.                    Error Messages 
  15387.  
  15388.                    Warning Messages 
  15389.  
  15390.  message_text  is the text of the message. 
  15391.  
  15392.  
  15393. ΓòÉΓòÉΓòÉ 22.9.2.1. Fatal Messages ΓòÉΓòÉΓòÉ
  15394.  
  15395.  Msg No.   Message Text 
  15396.  
  15397.   1        TSF file not specified 
  15398.  
  15399.   2        file not found or access denied : %s 
  15400.  
  15401.   3        cannot open file : %s 
  15402.  
  15403.   4        error accessing file : %s 
  15404.  
  15405.   5        error writing to file : %s 
  15406.  
  15407.   6        unable to allocate more memory 
  15408.  
  15409.   7        too many tracepoints in file 
  15410.  
  15411.   8        error reading file: %s, Rc = %s 
  15412.  
  15413.   9        changing file pointer for: %s, Rc = %s 
  15414.  
  15415.  10        unknown EXE header type for: %s 
  15416.  
  15417.  11        invalid path specified in combine file 
  15418.  
  15419.  12        max TFF files to combine is 50 
  15420.  
  15421.  13        all TFFs not have same major code, file: %s 
  15422.  
  15423.  14        invalid MAP file extension given in: %s 
  15424.  
  15425.  15        TCF file not specified 
  15426.  
  15427.  16        filename to long: %s 
  15428.  
  15429.  17        token in TSF file exceeds %s bytes 
  15430.  
  15431.  
  15432. ΓòÉΓòÉΓòÉ 22.9.2.2. Severe Messages ΓòÉΓòÉΓòÉ
  15433.  
  15434.  Msg No.   Message Text 
  15435.  
  15436.  33        module name not specified 
  15437.  
  15438.  34        premature end of file encountered 
  15439.  
  15440.  35        syntax error : missing '%s' before '%s' 
  15441.  
  15442.  36        new line in literal 
  15443.  
  15444.  37        NULL in literal 
  15445.  
  15446.  38        keyword '%s' expected, '%s' found 
  15447.  
  15448.  39        symbolic info not given for %s 
  15449.  
  15450.  40        MAJOR redefinition 
  15451.  
  15452.  41        TDFID redefinition 
  15453.  
  15454.  42        MAXDATALENGTH redefinition 
  15455.  
  15456.  43        line too long in input file: %s 
  15457.  
  15458.  
  15459. ΓòÉΓòÉΓòÉ 22.9.2.3. Error Messages ΓòÉΓòÉΓòÉ
  15460.  
  15461.  Msg No.   Message Text 
  15462.  
  15463.  65        number expected, '%s' found 
  15464.  
  15465.  66        unexpected: %s, ignored 
  15466.  
  15467.  67        minor code not specified 
  15468.  
  15469.  68        minor code out of range 
  15470.  
  15471.  69        TYPELIST redefinition, ignored 
  15472.  
  15473.  70        GROUPLIST redefinition, ignored 
  15474.  
  15475.  71        TP redefinition, tracepoint ignored 
  15476.  
  15477.  72        MINOR redefinition, tracepoint ignored 
  15478.  
  15479.  73        OPCODE redefinition, tracepoint ignored 
  15480.  
  15481.  74        syntax error: missing '%s' before '%s' 
  15482.  
  15483.  75        opcode: %s out of range 
  15484.  
  15485.  76        opcode at TP address cannot be traced 
  15486.  
  15487.  77        opcode mismatch at address to apply TP 
  15488.  
  15489.  78        register expected, '%s' found 
  15490.  
  15491.  79        symbol not found: %s 
  15492.  
  15493.  80        address not found 
  15494.  
  15495.  81        segment register expected, '%s' found 
  15496.  
  15497.  82        trace record incomplete, '%s' required 
  15498.  
  15499.  83        RPN command record exceeds 255 bytes 
  15500.  
  15501.  84        invalid parameter: '%s', ignored 
  15502.  
  15503.  85        invalid ID: %s, ignored 
  15504.  
  15505.  86        group/type redefinition: %s, ignored 
  15506.  
  15507.  87        typeid redefinition: %s, ignored 
  15508.  
  15509.  88        groupid redefinition: %s, ignored 
  15510.  
  15511.  89        invalid address specified: %s 
  15512.  
  15513.  90        line number past end of code for file %s 
  15514.  
  15515.  91        Debug info does not exist for: %s 
  15516.  
  15517.  92        line number missing or invalid: %s 
  15518.  
  15519.  93        filename %s not found in Debug info 
  15520.  
  15521.  94        duplicate minor code = %s, ignored 
  15522.  
  15523.  95        duplicate minor code = %s in file %s, ignored 
  15524.  
  15525.  96        variable LEN parameter not preceding 
  15526.  
  15527.  97        RPN stack limit of 16 exceeded 
  15528.  
  15529.  98        invalid flat register specified: %s 
  15530.  
  15531.  99        total FMT format specs above 4096 bytes 
  15532.  
  15533.  100       zero length specified, tracepoint ignored 
  15534.  
  15535.  101       ORBIT redefinition, tracepoint ignored 
  15536.  
  15537.  102       invalid ORBIT value, tracepoint ignored 
  15538.  
  15539.  103       opcode defined after ABORT 
  15540.  
  15541.  104       opcode defined after REMOVE 
  15542.  
  15543.  105       duplicate TP address, ignored 
  15544.  
  15545.  106       /D not allowed with /C, ignored 
  15546.  
  15547.  
  15548. ΓòÉΓòÉΓòÉ 22.9.2.4. Warning Messages ΓòÉΓòÉΓòÉ
  15549.  
  15550.  Msg No.   Message Text 
  15551.  
  15552.  129       MAXDATALENGTH out of range, 512 used 
  15553.  
  15554.  130       typename unknown: %s, ignored 
  15555.  
  15556.  131       groupname unknown: %s, ignored 
  15557.  
  15558.  132       file: %s, extension invalid, using: %s 
  15559.  
  15560.  133       '%s' expected before '%s', one assumed 
  15561.  
  15562.  134       too many %s, first 16 types, 48 groups used 
  15563.  
  15564.  135       name too long: %s, first 8 characters used 
  15565.  
  15566.  136       linenum in file: %s not found, using #%s 
  15567.  
  15568.  137       bad object number: %s used for file %s 
  15569.  
  15570.  138       offset %s is invalid for object number %s 
  15571.  
  15572.  139       page tracepoint to be applied at not valid 
  15573.  
  15574.  140       MAXDATALENGTH to log could be exceeded 
  15575.  
  15576.  141       MAJOR out of range, 1 used 
  15577.  
  15578.  142       TDFID out of range, 0 used 
  15579.  
  15580.  143       index too large, high word ignored 
  15581.  
  15582.  
  15583. ΓòÉΓòÉΓòÉ 23. Workplace Class List ΓòÉΓòÉΓòÉ
  15584.  
  15585. The Workplace Class List is a tool that creates a workplace object class and an 
  15586. instance of a workplace object class. Workplace objects are constructed using 
  15587. the System Object Model (SOM) protocol and are instances of one of the 
  15588. following workplace object classes: 
  15589.  
  15590.  Predefined   These classes are defined by the system. Examples of predefined 
  15591.               workplace object classes are WPObject, WPFileSys, and WPAbstract. 
  15592.  
  15593.  Subclass     These classes are derived from existing predefined workplace 
  15594.               object classes. They add, remove, or change functions, but they 
  15595.               retain the basic behaviors and capabilities of the parent class. 
  15596.  
  15597.  Replaced     These classes replace the class being subclassed. They modify the 
  15598.               behavior of an instance of a predefined workplace object class 
  15599.               without the instance being aware of the new class. 
  15600.  
  15601.  
  15602. ΓòÉΓòÉΓòÉ 23.1. Starting Workplace Class List ΓòÉΓòÉΓòÉ
  15603.  
  15604. To start Workplace Class List, select the PM Development Tools folder, and then 
  15605. select Workplace Class List. A window appears.  The window contains a list of 
  15606. the workplace object classes currently registered in the OS/2 Workplace Shell. 
  15607. Using the window, you can: 
  15608.  
  15609.      Create an instance of a workplace object class 
  15610.      Replace a workplace object class 
  15611.      Restore a replaced workplace object class 
  15612.      Add a workplace object class 
  15613.      Delete a workplace object class 
  15614.  
  15615.  
  15616. ΓòÉΓòÉΓòÉ 23.1.1. Creating an Object-Class Instance ΓòÉΓòÉΓòÉ
  15617.  
  15618. To create an instance of a workplace object class: 
  15619.  
  15620.    1. Select the class from the list in the Workplace Object Class window. 
  15621.    2. Display the pop-up menu by clicking mouse button 2. 
  15622.    3. Select the Create Instance choice. 
  15623.  
  15624.       Note:  Only an instance of a physical workplace object class can be 
  15625.              created. In other words, you cannot create instances of WPObject 
  15626.              or WPClass because they are not physical classes. 
  15627.    4. Complete the following input fields: 
  15628.  
  15629.  Object Title          The text string you assign to the object. The text 
  15630.                        string becomes the object title and appears under the 
  15631.                        object when the object is displayed on the Workplace 
  15632.                        Shell. When the object is in an opened state, the text 
  15633.                        string appears in the title bar of the window. 
  15634.  Class of new object   The name of the class of which the object you selected 
  15635.                        is a member. 
  15636.  Parameters            A series of keyname=value pairs (separated by 
  15637.                        semicolons) that change the behavior of the object. Each 
  15638.                        object class defines the key names and parameters it 
  15639.                        expects to see. All parameters have safe defaults, so it 
  15640.                        is never required that parameters be passed to an 
  15641.                        object. 
  15642.  Location              A real name specified by a fully qualified file 
  15643.                        specification, such as C:\OS2\DLL\MINXOBJ.DLL, or a 
  15644.                        logical name specified by a predefined symbol. 
  15645.  
  15646.  Examples of logical names include the following: 
  15647.  
  15648.  LOCATION_NOWHERE                Hidden folder 
  15649.  LOCATION_DESKTOP                OS/2 Desktop (Workplace) 
  15650.  LOCATION_SYSTEM                 OS/2 System folder 
  15651.  LOCATION_TEMPLATES              Template folder 
  15652.  LOCATION_SYSTEMSETUP            System setup folder 
  15653.  LOCATION_STARTUP                Startup folder 
  15654.  LOCATION_INFORMATION            Information folder 
  15655.  LOCATION_DRIVES                 Drives folder 
  15656.  
  15657.  
  15658. ΓòÉΓòÉΓòÉ 23.1.2. Replacing a Workplace Object Class ΓòÉΓòÉΓòÉ
  15659.  
  15660. To replace an existing registered class: 
  15661.  
  15662.    1. Select the class from the list in the Workplace Object Class window. 
  15663.    2. Display the pop-up menu by clicking mouse button 2. 
  15664.    3. Select the Replace choice. Note that only classes that have already been 
  15665.       registered are valid. 
  15666.    4. Complete the following input fields:  Original class and Replacement 
  15667.       class. 
  15668.  
  15669.  Note:  The replacement class must be a descendant of the original class. 
  15670.         Replacing an object class is useful for modifying the behavior of 
  15671.         objects that are instances of the original class but are not aware of 
  15672.         the replacement class. 
  15673.  
  15674.  Original class        The name of the object class being replaced in the 
  15675.                        Workplace. 
  15676.  Replacement class     The name of the object class replacing the original 
  15677.                        class. 
  15678.  
  15679.  
  15680. ΓòÉΓòÉΓòÉ 23.1.3. Restoring a Replaced Workplace Object Class ΓòÉΓòÉΓòÉ
  15681.  
  15682. To return a replaced class to its original class: 
  15683.  
  15684.    1. Select the replaced class from the list in the Workplace Object Class 
  15685.       window. 
  15686.    2. Display the pop-up menu by clicking mouse button 2. 
  15687.    3. Select the Unreplace choice. Note that only classes that have already 
  15688.       been replaced are valid. 
  15689.    4. Complete the following input fields: 
  15690.  
  15691.  Original class        The name of the replaced object class being returned to 
  15692.                        its original object class in the Workplace. 
  15693.  Replacement class     The name of the replaced object class being returned to 
  15694.                        its original object class. 
  15695.  
  15696.  
  15697. ΓòÉΓòÉΓòÉ 23.1.4. Adding a Workplace Object Class ΓòÉΓòÉΓòÉ
  15698.  
  15699. To add a class to the Workplace Shell: 
  15700.  
  15701.    1. Display the pop-up menu by clicking mouse button 2. 
  15702.    2. Select the Add Class choice. 
  15703.    3. Complete the following input fields: 
  15704.  
  15705.  New class name      The name of object class you want to add to the Workplace. 
  15706.                      Type the class name exactly as it is built; it is 
  15707.                      case-sensitive. 
  15708.  Library module      The name of the dynamic link library (DLL) that holds the 
  15709.                      object definition. Type the library name with complete 
  15710.                      file specification information. 
  15711.  
  15712.                      Note:  The DLL must be created by the IBM System Object 
  15713.                             Model. 
  15714.  
  15715.  
  15716. ΓòÉΓòÉΓòÉ 23.1.5. Deleting an Object Class ΓòÉΓòÉΓòÉ
  15717.  
  15718. To delete a class from the Workplace Shell: 
  15719.  
  15720.    1. Select the class you want to delete from the list in the Workplace Object 
  15721.       Class window. 
  15722.    2. Display the pop-up menu by clicking mouse button 2. 
  15723.    3. Select the Delete a Class choice. 
  15724.    4. Complete the name of the class you want to delete from the Workplace. 
  15725.  
  15726.  Note:  You cannot delete classes that are predefined by the operating system, 
  15727.         such as WPObject or WPClass. 
  15728.  
  15729.  
  15730. ΓòÉΓòÉΓòÉ 24. Error Messages ΓòÉΓòÉΓòÉ
  15731.  
  15732.  
  15733. ΓòÉΓòÉΓòÉ 24.1. LINK386 Error Messages ΓòÉΓòÉΓòÉ
  15734.  
  15735. Format of Error Messages 
  15736.  
  15737. There are three types of LINK386 error messages: 
  15738.  
  15739.      Fatal errors cause LINK386 to stop running. They have the following 
  15740.       format: location : fatal error L1xxx : message text 
  15741.  
  15742.      Nonfatal errors indicate problems in the executable file. LINK386 
  15743.       produces the executable file and sets the error bit in the header for the 
  15744.       OS/2 environment. This means that the executable file cannot be run from 
  15745.       OS/2. Nonfatal error messages have the following format: 
  15746.  
  15747.            location : error L2xxx : message text 
  15748.  
  15749.      Warnings indicate possible problems in the executable file. LINK386 
  15750.       produces the executable file, but does not set the error bit in the 
  15751.       header for the OS/2 environment. Warnings have the following format: 
  15752.  
  15753.            location : warning L4xxx : message text 
  15754.  
  15755.  In all these messages, location is the input file associated with the error, 
  15756.  or it is LINK386 itself if there is no input file. The message text is the 
  15757.  actual text message that LINK386 generates. When the input file is a module 
  15758.  definition file, the line number is included, as in this example: 
  15759.  
  15760.   myfile.def(3): fatal error L1030: missing internal name
  15761.  
  15762.  When the input file is an object file or library file and has a module name, 
  15763.  the module name is enclosed in parentheses, as in the following examples: 
  15764.  
  15765.   SLIBCE.LIB(_file)
  15766.   MAIN.OBJ(main.c)
  15767.   TEXT.OBJ
  15768.  
  15769.  Error Message Descriptions 
  15770.  
  15771.       Fatal Error Messages (part 1) 1001 - 1049 
  15772.       Fatal Error Messages (part 2) 1050 - 1098 
  15773.       Fatal Error Messages (part 3) 1100 - 1130 
  15774.       Nonfatal Error Messages 2000 - 2063 
  15775.       Warning Error Messages 4000 - 4094 
  15776.  
  15777.  
  15778. ΓòÉΓòÉΓòÉ 24.1.1. Fatal Error Messages (Part 1) 1001 - 1049 ΓòÉΓòÉΓòÉ
  15779.  
  15780.  L1001     option : option name ambiguous 
  15781.            Explanation: A unique option name does not appear after the option 
  15782.            indicator (/). 
  15783.            Example: The command 
  15784.  
  15785.                           LINK386 /N main;
  15786.            produces this error because LINK386 cannot tell which of the seven 
  15787.            options beginning with the letter N is intended. 
  15788.            Action: Retry using the correct minimum option abbreviation. 
  15789.  
  15790.  L1004     option : invalid numeric value 
  15791.            Explanation: An incorrect value appeared for one of the LINK386 
  15792.            options. This might be because a character string has been entered 
  15793.            for an option that requires a numeric value or because the proper 
  15794.            numeric prefix (for example, 0x for hexadecimal) was not used for a 
  15795.            numeric value. 
  15796.            Action: Retry with a numeric value. 
  15797.  
  15798.  L1006     option : stack size exceeds 65,535 bytes 
  15799.            Explanation: The size you specified for the stack in the /STACK 
  15800.            option of the link command is more than 65,535 bytes. 
  15801.            Action: Retry with a stack size of less than or equal to 65,535 
  15802.            bytes. 
  15803.  
  15804.  L1008     option : segment limit set too high 
  15805.            Explanation: The specified limit on the /SEGMENTS option is greater 
  15806.            than 16 375. 
  15807.            Action: Retry with a limit in the range 1 to 16 375. 
  15808.  
  15809.  L1020     no object modules specified 
  15810.            Explanation: You did not specify any object file names to the 
  15811.            linker. 
  15812.            Action: Restart LINK386, including at least one object file name. 
  15813.  
  15814.  L1021     cannot nest response files 
  15815.            Explanation: A response file has been named within another response 
  15816.            file. You have used @filename within the response file. The @ symbol 
  15817.            is reserved by LINK386 to signify a response file name. 
  15818.            Action: Edit the response file to remove the nested response file. 
  15819.  
  15820.  L1022     response line too long 
  15821.            Explanation: A line in an automatic response file is longer than 256 
  15822.            characters. 
  15823.            Action: Edit the line to make it shorter than 256 characters. 
  15824.            Response files can contain more than one line. 
  15825.  
  15826.  L1023     terminated by user 
  15827.            Explanation: You pressed Ctrl+C or Ctrl+Break. 
  15828.            Action: Your action has terminated LINK386. Restart if necessary. 
  15829.  
  15830.  L1030     missing internal name 
  15831.            Explanation: You have not specified an internal name for an import 
  15832.            in the module definition file. 
  15833.            Action: Edit the module definition file, giving an internal name so 
  15834.            that LINK386 can identify references to the import. 
  15835.  
  15836.  L1031     module description redefined 
  15837.            Explanation: You have used the DESCRIPTION keyword for a module in 
  15838.            the module definition file more than once. 
  15839.            Action: Edit the module definition file, deleting the extra 
  15840.            descriptions. 
  15841.  
  15842.  L1032     module name redefined 
  15843.            Explanation: You have defined a module name more than once with the 
  15844.            NAME or LIBRARY keyword in the module definition file. 
  15845.            Action: Edit the module definition file, checking the module name 
  15846.            definitions. 
  15847.  
  15848.  L1033     input line too long; number characters allowed 
  15849.            Explanation: The input line contains more than number characters. 
  15850.            Action: Retry the command with fewer characters on the input line. 
  15851.  
  15852.  L1040     too many exported entries 
  15853.            Explanation: You have tried to export more than 65535 names. 
  15854.            Action: Retry with fewer names, creating an additional executable 
  15855.            module if necessary. 
  15856.  
  15857.  L1041     resident-name table overflow 
  15858.            Explanation: The total length of all your resident-names, together 
  15859.            with an overhead of 3 bytes for each name, is greater than the 
  15860.            LINK386 limit. The internal LINK386 limit is  65,534 for LINK386 
  15861.            versions prior to 2.01.012 and is 1,048,576 for LINK386 version 
  15862.            2.01.012 and later versions. 
  15863.            Action: Reduce the number or the length of your resident names. 
  15864.  
  15865.  L1042     nonresident-name table overflow 
  15866.            Explanation: The total length of all your nonresident-names, 
  15867.            together with an overhead of 3 bytes for each name, is greater than 
  15868.            65,534 for versions prior to 2.01.012 and is 1,048,576 for LINK386 
  15869.            version 2.01.012 and later versions. 
  15870.            Action: Reduce the number or the length of your nonresident-names. 
  15871.  
  15872.  L1043     relocation table overflow 
  15873.            Explanation: There are more than 65,535 load-time relocations for a 
  15874.            single segment. 
  15875.            Action: Reduce the number of relocations in the source files and 
  15876.            recompile or reassemble them. Interframe references generate 
  15877.            load-time relocations. 
  15878.  
  15879.  L1044     imported-name table overflow 
  15880.            Explanation: The total length of all your imported-names, together 
  15881.            with an overhead of 1 byte for each name, is greater than 65,535 
  15882.            bytes. 
  15883.            Action: Reduce the number or the length of your imported-names. 
  15884.  
  15885.  L1045     too many TYPDEF records 
  15886.            Explanation: An object module contains more than 255 TYPDEF records. 
  15887.            These records describe communal variables. This error can only 
  15888.            appear with programs produced by compilers that support communal 
  15889.            variables. 
  15890.            Action: Reduce the number of TYPDEF records, breaking the module 
  15891.            into smaller parts, if necessary. 
  15892.  
  15893.  L1046     too many external symbols in one module 
  15894.            Explanation: An object module specifies more than the limit of 1023 
  15895.            external symbols. 
  15896.            Action: Reduce the number of external symbols, breaking the module 
  15897.            into smaller parts, if necessary. 
  15898.  
  15899.  L1047     too many group, segment, and class names in one module 
  15900.            Explanation: The program module contains too many group, segment, 
  15901.            and class names. 
  15902.            Action: Reduce the number of groups, segments, or classes, and 
  15903.            re-create the object files. 
  15904.  
  15905.  L1048     too many segments in one module 
  15906.            Explanation: An object module has more than 255 segments. 
  15907.            Action: Reduce the number of segments, splitting the module or 
  15908.            combining some segments. 
  15909.  
  15910.  L1049     too many segments 
  15911.            Explanation: The program has more than the maximum number of 
  15912.            segments. The /SEGMENTS option specifies the maximum allowed number; 
  15913.            the maximum is 16375. 
  15914.            Action: Restart LINK386 using the /SEGMENTS option with an 
  15915.            appropriate number of segments. 
  15916.  
  15917.  
  15918. ΓòÉΓòÉΓòÉ 24.1.2. Fatal Error Messages (Part 2) 1050 - 1098 ΓòÉΓòÉΓòÉ
  15919.  
  15920.  L1050     too many groups in one module 
  15921.            Explanation: LINK386 found more than 32 group definitions (GRPDEF) 
  15922.            in a single module. 
  15923.            Action: Reduce the number of group definitions by splitting the 
  15924.            module, by eliminating one or more group definitions, or combining 
  15925.            group definitions. 
  15926.  
  15927.  L1051     too many groups 
  15928.            Explanation: The program defines more than 32 groups in addition to 
  15929.            DGROUP. 
  15930.            Action: Reduce the number of group definitions by splitting the 
  15931.            module, by eliminating one or more group definitions, or combining 
  15932.            group definitions. 
  15933.  
  15934.  L1052     too many libraries 
  15935.            Explanation: You tried to link with more than 32 libraries. 
  15936.            Action: Combine libraries, or use modules that require fewer 
  15937.            libraries. 
  15938.  
  15939.  L1053     out of memory for symbol table 
  15940.            Explanation: The program has more symbolic information, such as 
  15941.            public, external, segment, group, class, and file names, than the 
  15942.            amount that could fit in available real memory. 
  15943.            Action: Combine modules or segments and recreate the object files. 
  15944.            Eliminate as many public symbols as possible or use shorter names. 
  15945.  
  15946.  L1054     requested segment limit too high 
  15947.            Explanation: There is not enough memory to allocate the necessary 
  15948.            tables for the amount of segments requested. 
  15949.            Action: Reduce the number of segments by combining or creating 
  15950.            additional executable modules. 
  15951.  
  15952.  L1057     data record too large 
  15953.            Explanation: A LEDATA record (in an object module) contained more 
  15954.            than 1024 bytes of data. This is a translator (compiler or 
  15955.            assembler) error. 
  15956.            Action: Note which translator (compiler or assembler) produced the 
  15957.            incorrect object module and the circumstances, and contact your 
  15958.            supplier. 
  15959.  
  15960.  L1060     program exceeds number bytes 
  15961.            Explanation: There is not enough memory to process all segments. 
  15962.            Action: Reduce the number of segments by combining or creating 
  15963.            additional executable modules. 
  15964.  
  15965.  L1063     out of memory for debugging information 
  15966.            Explanation: LINK386 was given too many object files with debug 
  15967.            information, and ran out of space to store them. 
  15968.            Action: Reduce the number of object files that have debug 
  15969.            information. 
  15970.  
  15971.  L1064     out of memory - name heap exhausted 
  15972.            Explanation: The linker ran out of heap space; name = near or far. 
  15973.            Action: Reduce the number of background processes or install more 
  15974.            memory. 
  15975.  
  15976.  L1070     name: segment size exceeds 64K 
  15977.            Explanation: A single segment contains more than 64K of code or 
  15978.            data. This could be because you attempted to combine identically 
  15979.            named segments. 
  15980.            Action: Try compiling (or assembling) and linking using a larger 
  15981.            memory model or breaking up the named segment. 
  15982.  
  15983.  L1071     segment _TEXT larger than 65,520 bytes 
  15984.            Explanation: This error is likely to occur only in small-model C 
  15985.            programs, but it can occur when any program with a segment named 
  15986.            _TEXT is linked using the /DOSSEG option of the LINK386 command. 
  15987.            Small-model C programs must reserve code addresses 0 and 1; the 
  15988.            reserve is increased to 16 for alignment purposes. 
  15989.            Action: Make the program source code smaller, or change to a larger 
  15990.            memory model. 
  15991.  
  15992.  L1072     common area longer than 65,536 bytes 
  15993.            Explanation: The program has more than 64K of communal variables. 
  15994.            This error occurs only with programs produced by compilers that 
  15995.            support communal variables. 
  15996.            Action: Rewrite your program using fewer or smaller communal 
  15997.            variables. 
  15998.  
  15999.  L1073     file-segment limit exceeded 
  16000.            Explanation: There are more than 255 physical or file segments. 
  16001.            Action: Reduce the number of physical or file segments. You could 
  16002.            use the Combine Contiguous Data (/PACKD) option for combining data 
  16003.            segments or the Combine Contiguous Code (/PACKC) option for 
  16004.            combining code segments. 
  16005.  
  16006.  L1074     name: group larger than 64K 
  16007.            Explanation: A group contains segments that total more than 65,536 
  16008.            bytes. 
  16009.            Action: Reduce the number or size of segments or remove segments 
  16010.            from the group. 
  16011.  
  16012.  L1075     entry table larger than 65,535 bytes 
  16013.            Explanation: You have exceeded a linker table size limit because of 
  16014.            an excessive number of entry names. 
  16015.            Action: Reduce the number of names in the modules that you are 
  16016.            linking or create additional executable modules. 
  16017.  
  16018.  L1076     name: segment size exceeds numberM 
  16019.            Explanation: The named segment is larger than the specified size. 
  16020.            Action: Break the segment into smaller segments and try again. 
  16021.  
  16022.  L1077     common area longer than 4G-1 bytes 
  16023.            Explanation: The space for the C languages common area is too big. 
  16024.            Action: If the load module is an .EXE, consider putting some 
  16025.            routines in .DLL; otherwise, link without debugging information or 
  16026.            create additional executable modules. 
  16027.  
  16028.  L1080     cannot open list file 
  16029.            Explanation: The disk or a directory is full, or an invalid file 
  16030.            name was specified. 
  16031.            Action: Check that the file name specified is correct. Delete or 
  16032.            move files to make space and restart LINK386. 
  16033.  
  16034.  L1081     out of space for run file 
  16035.            Explanation: The disk on which the .EXE file is being written is 
  16036.            full. 
  16037.            Action: Delete or move files to make space and restart LINK386. 
  16038.  
  16039.  L1082     name: stub file not found 
  16040.            Explanation: The stub file specified in the module definition file 
  16041.            could not be found. 
  16042.            Action: Check that the correct path to the stub file has been 
  16043.            specified. 
  16044.  
  16045.  L1083     cannot open run file - reason 
  16046.            Explanation: The run file could not be opened for the stated reason. 
  16047.            Action: Correct the problem and restart LINK386. 
  16048.  
  16049.  L1088     out of space for list file 
  16050.            Explanation: The disk on which the listing file is being written is 
  16051.            full. 
  16052.            Action: Delete or move files to make space and restart LINK386. 
  16053.  
  16054.  L1089     filename: cannot open response file 
  16055.            Explanation: LINK386 cannot find the specified response file. This 
  16056.            usually indicates a typing error. 
  16057.            Action: Include the drive specifier or path, or both, for the 
  16058.            response file. 
  16059.  
  16060.  L1091     unexpected end-of-file on library 
  16061.            Explanation: The disk containing the library has probably been 
  16062.            removed or is corrupted. 
  16063.            Action: Replace the disk containing the library and restart LINK386. 
  16064.  
  16065.  L1092     cannot open module definition file 
  16066.            Explanation: The specified module definition file cannot be opened, 
  16067.            or an invalid file name was specified. 
  16068.            Action: Check that the specified file name is correct. Include the 
  16069.            drive specifier or path, or both, for the module definition file. 
  16070.  
  16071.  L1093     name: object not found 
  16072.            Explanation: LINK386 could not open the object module you specified. 
  16073.            Action: Specify full path name or directory in which object module 
  16074.            resides. 
  16075.  
  16076.  L1096     unexpected end-of-file 
  16077.            Explanation: LINK386 encountered an end-of-file character while 
  16078.            reading an input file AND expected more information. 
  16079.            Action: Check input files for errors and relink. 
  16080.  
  16081.  L1097     I/O error - string 
  16082.            Explanation: The linker encountered the I/O error shown while 
  16083.            reading from a file. 
  16084.            Action: Make sure the file is not corrupted or on a bad disk sector 
  16085.            and relink. 
  16086.  
  16087.  L1098     cannot open include file filename - reason 
  16088.            Explanation: LINK386 could not open the include file for the stated 
  16089.            reason. 
  16090.            Action: Correct the problem and restart LINK386. 
  16091.  
  16092.  
  16093. ΓòÉΓòÉΓòÉ 24.1.3. Fatal Error Messages (Part 3) 1100 - 1130 ΓòÉΓòÉΓòÉ
  16094.  
  16095.  L1100     stub .EXE file invalid 
  16096.            Explanation: The stub file specified in the module definition file 
  16097.            is not a valid .EXE file. 
  16098.            Action: Ensure that the stub file is an executable file. 
  16099.  
  16100.  L1101     invalid object module 
  16101.            Explanation: One of the object modules was incorrectly formed during 
  16102.            compilation or assembly. 
  16103.            Action: Recompile or reassemble your source code. If the error 
  16104.            persists, contact your supplier. 
  16105.  
  16106.  L1102     unexpected end-of-file 
  16107.            Explanation: An invalid format for a library was found. 
  16108.            Action: Restore the library file from your backup disk and restart 
  16109.            LINK386. If this does not work, rebuild your library or contact your 
  16110.            supplier. 
  16111.  
  16112.  L1103     name: attempt to access data outside segment bounds 
  16113.            Explanation: A data record in an object module specified data 
  16114.            extending beyond the end of a segment. This is a translator error. 
  16115.            Action: Note which translator (compiler or assembler) produced the 
  16116.            incorrect object module and the circumstances, and contact your 
  16117.            supplier. 
  16118.  
  16119.  L1104     filename: not valid library 
  16120.            Explanation: The specified file is not a valid library file. This 
  16121.            error causes LINK386 to stop running. 
  16122.            Action: Ensure that the named file is a valid library file and 
  16123.            restart LINK386. If this does not work, rebuild your library or 
  16124.            contact your supplier. 
  16125.  
  16126.  L1105     invalid object due to aborted incremental compile 
  16127.            Explanation: An object file from an aborted compile is trying to be 
  16128.            linked. 
  16129.            Action: Recompile the source that produced the bad compile and then 
  16130.            relink. 
  16131.  
  16132.  L1106     unknown COMDAT allocation type for name; record ignored 
  16133.            Explanation: The COMDAT (record in .OBJ) allocation type for the 
  16134.            named COMDAT was not valid. 
  16135.            Action: Recompile or reassemble .OBJ and try again. If that does not 
  16136.            work, contact your supplier. 
  16137.  
  16138.  L1107     unknown COMDAT selection type for name; record ignored 
  16139.            Explanation: The COMDAT (record in .OBJ) selection type for the 
  16140.            named COMDAT is not valid. 
  16141.            Action: Recompile or reassemble .OBJ and try again. If that does not 
  16142.            work, contact your supplier. 
  16143.  
  16144.  L1108     invalid format of debugging information 
  16145.            Explanation: An error was detected in a segment that contains debug 
  16146.            information. 
  16147.            Action: Recompile or reassemble and try again. If that does not 
  16148.            work, try relinking without using the /DE or /CO options. 
  16149.  
  16150.  L1113     unresolved COMDEF; internal error 
  16151.            Explanation: LINK386 encountered a COMDEF (record in .OBJ) in pass 2 
  16152.            that was not defined in pass 1. 
  16153.            Action: Recompile or reassemble and try again. If that does not 
  16154.            work, contact your supplier. 
  16155.  
  16156.  L1114     unresolved COMDAT name: internal error 
  16157.            Explanation: LINK386 found specified COMDAT in pass 2 that does not 
  16158.            correspond to COMDATs found in pass 1. 
  16159.            Action: Recompile or reassemble and try again. If that does not 
  16160.            work, contact your supplier. 
  16161.  
  16162.  L1117     unallocated COMDAT name; internal error 
  16163.            Explanation: The linker encountered COMDAT in pass 2 for which space 
  16164.            was not allocated during pass 1. 
  16165.            Action: Recompile or reassemble and try again. If that does not 
  16166.            work, contact your supplier. 
  16167.  
  16168.  L1121     name: group larger than 4G-1 bytes 
  16169.            Explanation: The group indicated is too large. 
  16170.            Action: Recompile or reassemble and try again. Remove segments from 
  16171.            the group or create additional executables if necessary. 
  16172.  
  16173.  L1123     name: segment defined both 16- and 32-bit 
  16174.            Explanation: The segment named was defined as both 16-bit and 
  16175.            32-bit. 
  16176.            Action: Create two segments (one for 16-bit, one for 32-bit), or 
  16177.            make sure the segment is defined one way and relink. 
  16178.  
  16179.  L1126     conflicting IOPL-parameter-words value 
  16180.            Explanation: The IOPL parameter words in the .DEF file does not 
  16181.            exactly match those in the corresponding EXPDEF object record. 
  16182.            Action: Make sure .DEF file coincides with that defined in .OBJ. 
  16183.            Relink. 
  16184.  
  16185.  L1128     too many nested include files in module-definition file 
  16186.            Explanation: The .DEF file exceeded a nesting level. 
  16187.            Action: Combine some nestings into one .DEF file and try again. 
  16188.  
  16189.  L1129     missing or bad include file name 
  16190.            Explanation: LINK386 could not find a file included by .DEF file. 
  16191.            Action: Make sure the file exists and can be located and that any 
  16192.            path is specified correctly. Try again. 
  16193.  
  16194.  L1130     internal fix-up applied to undefined area at offset in object number 
  16195.            Explanation: LINK386 attempted to apply an internal fix-up beyond 
  16196.            the defined limits of the object. 
  16197.            Action: This is probably a compiler or assembler error. Revise the 
  16198.            source file and re-create the object file. If that does not work, 
  16199.            contact your supplier. 
  16200.  
  16201.  
  16202. ΓòÉΓòÉΓòÉ 24.1.4. Fatal Error Messages (Part 4) 1200 - 1218 ΓòÉΓòÉΓòÉ
  16203.  
  16204.  L1200     out of memory for page range information 
  16205.            Explanation: The total size of all page range information is greater 
  16206.            than the internal limit in LINK386. 
  16207.            Action: Reduce the size of the executable, consider using dynamic 
  16208.            link libraries to split the program into smaller modules. 
  16209.  
  16210.  L1201     out of memory for contribution information 
  16211.            Explanation: The total size of the contribution information is 
  16212.            greater than the internal limit in LINK386. 
  16213.            Action: Reduce the size of the executable, consider using dynamic 
  16214.            link libraries to split the program into smaller modules. 
  16215.  
  16216.  L1202     out of memory for executable string information 
  16217.            Explanation: The total size of all executable string information is 
  16218.            greater than the internal limit in LINK386. 
  16219.            Action: Reduce the size of the executable, consider using dynamic 
  16220.            link libraries to split the program into smaller modules. 
  16221.  
  16222.  L1203     out of memory for identifier mangler DLL information 
  16223.            Explanation: The total size of all identifier mangler DLL 
  16224.            information is greater than the internal limit in LINK386. 
  16225.            Action: Reduce the size of the executable, consider using dynamic 
  16226.            link libraries to split the program into smaller modules. 
  16227.  
  16228.  L1204     out of memory for object page table information 
  16229.            Explanation: The total size of the object page table information is 
  16230.            greater than the internal limit in LINK386. 
  16231.            Action: Reduce the size of the executable, consider using dynamic 
  16232.            link libraries to split the program into smaller modules. 
  16233.  
  16234.  L1205     out of memory for fixup record information 
  16235.            Explanation: The total size of all fixup record information is 
  16236.            greater than the internal limit in LINK386. 
  16237.            Action: Reduce the size of the executable, consider using dynamic 
  16238.            link libraries to split the program into smaller modules. 
  16239.  
  16240.  L1206     out of memory for fix up page table information 
  16241.            Explanation: The total size of all fix up page table information is 
  16242.            greater than the internal limit in LINK386. 
  16243.            Action: Reduce the size of the executable, consider using dynamic 
  16244.            link libraries to split the program into smaller modules. 
  16245.  
  16246.  L1207     out of memory for import module information 
  16247.            Explanation: The total size of the import module information is 
  16248.            greater than the internal limit in LINK386. 
  16249.            Action: Reduce the size of the executable, consider using dynamic 
  16250.            link libraries to split the program into smaller modules. 
  16251.  
  16252.  L1208     out of memory for page directory information 
  16253.            Explanation: The total size of the page directory is greater than 
  16254.            the internal limit in LINK386. 
  16255.            Action: Reduce the size of the executable, consider using dynamic 
  16256.            link libraries to split the program into smaller modules. 
  16257.  
  16258.  L1209     out of memory for object page directory information 
  16259.            Explanation: The total size of the object page director is greater 
  16260.            than the internal limit in LINK386. 
  16261.            Action: Reduce the size of the executable, consider using dynamic 
  16262.            link libraries to split the program into smaller modules. 
  16263.  
  16264.  L1210     out of memory for module reference table information 
  16265.            Explanation: The total size of the module reference table is greater 
  16266.            than the internal limit in LINK386. 
  16267.            Action: Reduce the size of the executable, consider using dynamic 
  16268.            link libraries to split the program into smaller modules. 
  16269.  
  16270.  L1211     out of memory for chained relocation hash buckets 
  16271.            Explanation: The total size of the relocation bucket is greater than 
  16272.            the internal limit in LINK386. 
  16273.            Action: Reduce the size of the executable, consider using dynamic 
  16274.            link libraries to split the program into smaller modules. 
  16275.  
  16276.  L1212     out of memory for chained relocation hash tables 
  16277.            Explanation: The total size of the relocation hash tables is greater 
  16278.            than the internal limit in LINK386. 
  16279.            Action: Reduce the size of the executable, consider using dynamic 
  16280.            link libraries to split the program into smaller modules. 
  16281.  
  16282.  L1213     out of memory for entry point information 
  16283.            Explanation: The total size of the entry point information is 
  16284.            greater than the internal limit in LINK386. 
  16285.            Action: Reduce the size of the executable, consider using dynamic 
  16286.            link libraries to split the program into smaller modules. 
  16287.  
  16288.  L1214     out of memory for entry table area 
  16289.            Explanation: The total size of the entry table are is greater than 
  16290.            the internal limit in LINK386. 
  16291.            Action: Reduce the size of the executable, consider using dynamic 
  16292.            link libraries to split the program into smaller modules. 
  16293.  
  16294.  L1215     out of memory for imported names information 
  16295.             Explanation: The total size of the imported names information is 
  16296.            greater than the internal limit in LINK386. 
  16297.            Action: Reduce the size of the executable, consider using dynamic 
  16298.            link libraries to split the program into smaller modules. 
  16299.  
  16300.  L1216     out of memory for comdat iterated data 
  16301.            Explanation: The total size of all comdat iterated is greater than 
  16302.            the internal limit in LINK386. 
  16303.            Action: Reduce the size of the executable, consider using dynamic 
  16304.            link libraries to split the program into smaller modules. 
  16305.  
  16306.  L1217     out of memory for back patch information 
  16307.            Explanation: The total size of the back patch information is greater 
  16308.            than the internal limit in LINK386. 
  16309.            Action: Reduce the size of the executable, consider using dynamic 
  16310.            link libraries to split the program into smaller modules. 
  16311.  
  16312.  L1218     out of memory for property list tables 
  16313.            Explanation: The total size of the property list table is greater 
  16314.            than the internal limit in LINK386. 
  16315.            Action: Reduce the size of the executable, consider using dynamic 
  16316.            link libraries to split the program into smaller modules. 
  16317.  
  16318.  
  16319. ΓòÉΓòÉΓòÉ 24.1.5. Nonfatal Error Messages 2000 - 2063 ΓòÉΓòÉΓòÉ
  16320.  
  16321.  L2000     imported starting address 
  16322.            Explanation:  A MODEND, or starting address record, referred to an 
  16323.            imported name. Imported program-starting addresses are not 
  16324.            supported. 
  16325.            Action: The starting address record must refer to a non imported 
  16326.            name. Edit the source file and recompile or reassemble. 
  16327.  
  16328.  L2002     fix-up overflow at location in segment name 
  16329.            Explanation: A fix up overflow occurred near location, in the named 
  16330.            segment. See Conditions That Can Cause LINK386 Error 2002. 
  16331.            Action: Revise the source file and re-create the object file. If 
  16332.            that does not work, contact your supplier. 
  16333.  
  16334.  L2003     inter segment self-relative fix-up at location in segment name 
  16335.            Explanation: LINK386 detected an inter segment self-relative fix-up. 
  16336.            A self-relative fix-up cannot be in another segment. This is 
  16337.            probably caused by a near reference to procedure located in another 
  16338.            segment. 
  16339.            Action: Revise the source file and re-create the object file. If 
  16340.            that does not work, contact your supplier. 
  16341.  
  16342.  L2005     fix-up type unsupported at location in segment name 
  16343.            Explanation:  LINK386 detected an unsupported fix up type. This is 
  16344.            probably a compiler or assembler error. 
  16345.            Action: Revise the source file and re-create the object file. If 
  16346.            that does not work, contact your supplier. 
  16347.  
  16348.  L2010     too many fix-ups in LIDATA record 
  16349.            Explanation:  There are more fix ups applying to a LIDATA record 
  16350.            than will fit into the LINK386's 1024 byte buffer. The buffer is 
  16351.            divided between the data in the LIDATA record itself and the 
  16352.            run-time relocation items.  These are 8 bytes each, so the maximum 
  16353.            varies from 0 to 128.  This is probably a compiler error. 
  16354.            Action: Revise the source file and re-create the object file. If 
  16355.            that does not work, contact your supplier. 
  16356.  
  16357.  L2011     name: NEAR/HUGE conflict 
  16358.            Explanation:  There are conflicting NEAR and HUGE attributes for a 
  16359.            communal variable. This error can occur only with programs produced 
  16360.            by compilers that support communal variables. 
  16361.            Action: Specify only one of these attributes. 
  16362.  
  16363.  L2012     name: array-element size mismatch 
  16364.            Explanation: A far communal array has been declared with two or more 
  16365.            different array-element sizes (for example, an array declared once 
  16366.            as an array of characters and once as an array of real numbers). 
  16367.            This error occurs only when using compilers that support far 
  16368.            communal arrays. 
  16369.            Action: Match the definitions and re-create the object module or 
  16370.            modules. 
  16371.  
  16372.  L2013     LIDATA record too large 
  16373.            Explanation: A LIDATA record in an object module contains more than 
  16374.            512 bytes of data. It is likely that one of your assembler modules 
  16375.            contains a complex structure definition or a series of deeply-nested 
  16376.            DUP operators. (LIDATA is a DOS term.) 
  16377.            Example: The following structure definition causes this error: 
  16378.  
  16379.                       alpha   DB     10DUP(11 DUP(12 DUP(13 DUP(...))))
  16380.  
  16381.            Action: Simplify the structure definition and reassemble the module. 
  16382.  
  16383.  L2022     name (alias internalname) : export undefined 
  16384.            Explanation: A name has been directed to be exported but is not 
  16385.            defined anywhere. 
  16386.            Action: Edit the source file and define the export. 
  16387.  
  16388.  L2023     name (alias internalname) : export imported 
  16389.            Explanation: An imported name has been directed to be exported. 
  16390.            Items that are not in the source file itself cannot be exported. You 
  16391.            cannot export this imported name. 
  16392.            Action: Edit the source file to not export the imported name. 
  16393.  
  16394.  L2024     name: special symbol already defined 
  16395.            Explanation: Your program defined a symbol name that LINK386 already 
  16396.            used for one of its low-level symbols.  For example, the linker 
  16397.            generates special names for overlay support. 
  16398.            Action: Edit the source file and choose another name for the symbol. 
  16399.  
  16400.  L2025     name: symbol defined more than once 
  16401.            Explanation: A symbol has been defined more than once in the object 
  16402.            file. 
  16403.            Action: Edit the source file, removing the extra symbol definition. 
  16404.  
  16405.  L2026     entry ordinal number, name name : multiple definitions for same 
  16406.            ordinal 
  16407.            Explanation: More than one entry point name has been assigned to the 
  16408.            same ordinal in the module definition file. 
  16409.            Action: Edit the module definition file to correct the usage of the 
  16410.            ordinal. 
  16411.  
  16412.  L2027     number: ordinal too large for export 
  16413.            Explanation: You tried to export more than 3072 names or indicated 
  16414.            too large of an ordinal. 
  16415.            Action: Edit the source file or define smaller ordinals in the 
  16416.            module definition file. 
  16417.  
  16418.  L2029     string: unresolved external 
  16419.            Explanation: A symbol declared to be external in one or more modules 
  16420.            was not found among the given objects and libraries. 
  16421.            Action: Supply files that will resolve these external calls. 
  16422.  
  16423.  L2030     starting address not code (use class 'CODE') 
  16424.            Explanation: You specified a starting address to LINK386 that is not 
  16425.            within a segment of type 'CODE.' 
  16426.            Action: Reclassify the segment to CODE, or correct the starting 
  16427.            point. 
  16428.  
  16429.  L2044     string: symbol multiple defines, use /NOE 
  16430.            Explanation: The symbol shown was defined more than once, perhaps 
  16431.            for different things. 
  16432.            Action: Recompile with the /NOEXDICTIONARY option. 
  16433.  
  16434.  L2047     IOPL attribute conflict - segment: name in group:name 
  16435.            Explanation: The segment indicated within the group shown has 
  16436.            different IOPL attributes from the rest of the segments in the 
  16437.            group. 
  16438.            Action: Remove the segment from the group or make sure all segments 
  16439.            have the same IOPL attributes. Relink. 
  16440.  
  16441.  L2050     use16/use32 attribute conflict - segment:name in group:name 
  16442.            Explanation: The segment indicated within the group shown has a 
  16443.            different USE16/USE32 attribute from the rest of the segments in the 
  16444.            group. 
  16445.            Action: Remove the segment from the group or make sure all segments 
  16446.            have the same USE16/USE32 attribute. 
  16447.  
  16448.  L2052     name: unresolved external - possible calling convention mismatch 
  16449.            Explanation: LINK386 encountered an undefined external, which could 
  16450.            be a fast-call/C-call mismatch. 
  16451.            Action: Make sure the external is defined and called the same way 
  16452.            (for example, all C-calls). 
  16453.  
  16454.  L2053     call gates are NOT allowed in 32-bit object if its size exceeds 64K 
  16455.            - memory object number number 
  16456.            Explanation: The memory object indicated is larger than 64K and uses 
  16457.            call gates. 
  16458.            Action: Remove the call gates or break the object into smaller 
  16459.            portions.  Relink. 
  16460.  
  16461.  L2054     data for invalid page in segment name 
  16462.            Explanation: LINK386 encountered data past the defined end of 
  16463.            initialized data in the segment indicated. 
  16464.            Action:  The .OBJ is probably corrupted. Recompile or reassemble and 
  16465.            try again.  If that does not work, contact your supplier. 
  16466.  
  16467.  L2055     fix-up for invalid page at location in segment name 
  16468.            Explanation: LINK386 encountered a fixup past the defined end of 
  16469.            initialized data in the segment indicated. 
  16470.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  16471.            try again.  If that does not work, contact your 
  16472.  
  16473.  L2056     object type conflict - segment: name in group: name 
  16474.            Explanation: The segment indicated within the group shown has a 
  16475.            different TYPE attribute from the rest of the segments in the group. 
  16476.            Action: Remove the segment from the group or make sure all segments 
  16477.            have the same TYPE attribute. 
  16478.  
  16479.  L2057     duplicate of name with different size found; record ignored 
  16480.            Explanation: LINK386 encountered two COMDAT records with the 
  16481.            selection type "SAME SIZE." The records have the same name but have 
  16482.            different sizes. 
  16483.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  16484.            try again.  If that does not work, contact your 
  16485.  
  16486.  L2058     different duplicate of name found; record ignored 
  16487.            Explanation: LINK386 encountered two COMDAT records with the 
  16488.            selection type "EXACT." The records have the same name but have 
  16489.            different sizes. 
  16490.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  16491.            try again.  If that does not work, contact your 
  16492.  
  16493.  L2059     size of the data block associated with name exceeds 4G 
  16494.            Explanation: LINK386 encountered a continuation COMDAT record whose 
  16495.            additional size made the communal data too large. 
  16496.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  16497.            try again.  If that does not work, contact your 
  16498.  
  16499.  L2061     no space for the data block associated with record name inside the 
  16500.            segment name 
  16501.            Explanation: While being allocated space for a COMDAT record inside 
  16502.            the segment indicated, the segment grew larger than 64K. 
  16503.            Action: Make the segment smaller or move communal data into a 
  16504.            different segment. 
  16505.  
  16506.  L2062     continuation of COMDAT name has conflicting attributes; record 
  16507.            ignored 
  16508.            Explanation: While concatenating the COMDAT record indicated, 
  16509.            LINK386 found attributes that differ from those defined in the 
  16510.            initial COMDAT record. 
  16511.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  16512.            try again.  If that does not work, contact your 
  16513.  
  16514.  L2063     name allocated in undefined segment 
  16515.            Explanation: LINK386 encountered a COMDAT record in an undefined 
  16516.            explicit allocation segment. 
  16517.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  16518.            try again.  If that does not work, contact your supplier. 
  16519.  
  16520.  
  16521. ΓòÉΓòÉΓòÉ 24.1.6. Warning Error Messages 4000 - 4087 ΓòÉΓòÉΓòÉ
  16522.  
  16523.  L4000     seg disp. included near location in segment name 
  16524.            Explanation: This error is caused by using the LINK386 Warning of 
  16525.            Fix-ups (/W) option. 
  16526.            Action: The segment name and the location offset is displayed. 
  16527.  
  16528.  L4001     frame-relative fix-up, frame ignored near location in segment name 
  16529.            Explanation: A fix up occurred with a frame segment different from 
  16530.            the target segment where either the frame or the target segment is 
  16531.            not absolute. Such a fix-up is meaningless in the OS/2 environment, 
  16532.            so the target segment is assumed for the frame segment. This error 
  16533.            sometimes occurs if a 32-bit data item is referenced as if it were 
  16534.            in a 16-bit segment or a 16-bit segment referenced as if it were in 
  16535.            a 32-bit segment. 
  16536.            Action: Check that this is acceptable. 
  16537.  
  16538.  L4002     frame-relative absolute fix-up near location in segment name 
  16539.            Explanation: A fix up occurred with a frame segment different from 
  16540.            the target segment where both frame and target segments are 
  16541.            absolute. This fix up is processed using base-offset arithmetic, but 
  16542.            the warning is issued because the fix up might not be valid in the 
  16543.            OS/2 environment. This error sometimes occurs if a 32-bit data item 
  16544.            is referenced as if it were in a 16-bit segment or a 16-bit segment 
  16545.            referenced as if it were in a 32-bit segment. 
  16546.            Action: Check that this is acceptable. 
  16547.  
  16548.  L4003     intersegment self-relative fix up at location in segment name 
  16549.            Explanation: LINK386 found an intersegment self-relative fix-up at 
  16550.            the specified location. This might cause a problem with the 
  16551.            executable file. 
  16552.            Action: The error might have been caused by the way the program was 
  16553.            written or when it was compiled or assembled. 
  16554.  
  16555.  L4004     possible fix-up overflow at location in segment name 
  16556.            Explanation: LINK386 found a possible fix-up overflow at the 
  16557.            specified location. This might cause a problem with the executable 
  16558.            file. 
  16559.            Action: The error might have been caused by the way the program was 
  16560.            written or when it was compiled or assembled. 
  16561.  
  16562.  L4005     32-bit fix-up in 16-bit record ignored at location in segment name 
  16563.            Explanation: LINK386 encountered a 32-bit fix-up in a 16-bit record 
  16564.            at the specified location. This might cause a problem with the 
  16565.            executable file. 
  16566.            Action: The error might have been caused by the way the program was 
  16567.            written or when it was compiled or assembled. 
  16568.  
  16569.  L4006     illegal 16-bit flat-relative offset fix-up at location in object 
  16570.            name 
  16571.            Explanation: LINK386 encountered an illegal 16-bit flat relative 
  16572.            offset fix-up at the specified location. This might cause a problem 
  16573.            with the executable file. This error sometimes occurs if a 32-bit 
  16574.            data item is referenced as if it were in a 16-bit segment or a 
  16575.            16-bit segment referenced as if it were in a 32-bit segment. 
  16576.            Action: The error might have been caused by the way the program was 
  16577.            written or when it was compiled or assembled. 
  16578.  
  16579.  L4007     illegal 16-bit flat-relative pointer fix-up at location in object 
  16580.            name 
  16581.            Explanation: LINK386 encountered an illegal 16-bit flat-relative 
  16582.            pointer fix-up at the specified location. This error sometimes 
  16583.            occurs if a 32-bit data item is referenced as if it were in a 16-bit 
  16584.            segment or a 16-bit segment referenced as if it were in a 32-bit 
  16585.            segment. 
  16586.            Action: The error might have been caused by the way the program was 
  16587.            written or when it was compiled or assembled. 
  16588.  
  16589.  L4008     aliased fix-up to non-alias object near location in object name 
  16590.            Explanation: LINK386 encountered an aliased fix-up to a non-alias 
  16591.            object at the specified location. This error sometimes occurs if a 
  16592.            32-bit data item is referenced as if it were in a 16-bit segment or 
  16593.            a 16-bit segment referenced as if it were in a 32-bit segment. 
  16594.            Action: The error might have been caused by the way the program was 
  16595.            written or when it was compiled or assembled. 
  16596.  
  16597.  L4009     illegal target of flat-relative fix-up ignored at number in segment 
  16598.            name 
  16599.            Explanation: LINK386 encountered an illegal flat-relative fix-up at 
  16600.            the specified location. 
  16601.            Action: The error might have been caused by the way the program was 
  16602.            written or when it was compiled or assembled. 
  16603.  
  16604.  L4010     invalid alignment specification; assuming number 
  16605.            Explanation: The number following the /ALIGNMENT option is not a 
  16606.            power of 2, or is not in numerical form. The maximum alignment value 
  16607.            is 4096. 
  16608.            Action: If the default alignment of 512 is not acceptable, restart 
  16609.            LINK386 using a valid number. 
  16610.  
  16611.  L4017     name: unrecognized option name; option ignored 
  16612.            Explanation: The option specified is not valid for LINK386. 
  16613.            Action: Specify a valid option or remove the unrecognized option and 
  16614.            relink. 
  16615.  
  16616.  L4018     missing or bad application type; option name ignored 
  16617.            Explanation: The /PMTYPE option was specified without an application 
  16618.            type or with an invalid application type. 
  16619.            Action: Relink with an application type of PM, VIO, or NOVIO. 
  16620.  
  16621.  L4020     name: code segment size exceeds 65,500 
  16622.            Explanation: The code segment indicated is larger than 65,500 bytes 
  16623.            and might not be reliable. 
  16624.            Action: Break the segment into smaller segments and try again. 
  16625.  
  16626.  L4021     no stack segment 
  16627.            Explanation: The program does not contain a stack segment defined 
  16628.            with the STACK combine type. Normally, every .EXE program should 
  16629.            have a stack segment with the combine type specified as STACK. 
  16630.            Action: You can ignore this message if you have a specific reason 
  16631.            for not defining a stack or for defining one without the STACK 
  16632.            combine type. 
  16633.  
  16634.  L4022     name1, name2: groups overlap 
  16635.            Explanation: Two groups are defined in such a way that one starts in 
  16636.            the middle of another. This can occur if you defined segments in a 
  16637.            module definition file or assembly file and did not correctly order 
  16638.            the segments by class. 
  16639.            Action: Edit the source file and reorder the segments in the group. 
  16640.  
  16641.  L4023     name (alias): export internal name conflict 
  16642.            Explanation: An exported name, or its associated internal name, 
  16643.            conflicts with an already defined public symbol. 
  16644.            Action: Edit the source file using new names. 
  16645.  
  16646.  L4024     name: multiple definitions for export name 
  16647.            Explanation: The module named has been exported more than once with 
  16648.            different internal names. All internal names except the first one 
  16649.            are ignored. 
  16650.            Action: Edit the source file using new names. 
  16651.  
  16652.  L4025     modname impname (intname): import internal name conflict 
  16653.            Explanation: An imported name, or its associated internal name, is 
  16654.            also defined as an exported name. The import name is ignored. The 
  16655.            conflict could come from a definition in either the module 
  16656.            definition file or an object file. 
  16657.            Action: Edit the source file or module definition file using new 
  16658.            names. 
  16659.  
  16660.  L4026     modname impname (intname): self-imported 
  16661.            Explanation: The module definition file directed that a name be 
  16662.            imported from the module being produced. 
  16663.            Action: Edit the module definition file. 
  16664.  
  16665.  L4027     name: multiple definitions for import internal name 
  16666.            Explanation: An imported name, or its associated internal name, is 
  16667.            imported more than once. The imported name is ignored after the 
  16668.            first mention. 
  16669.            Action: Check that the name has been defined correctly. 
  16670.  
  16671.  L4028     name: segment already defined 
  16672.            Explanation: A segment is defined more than once with the same name 
  16673.            in the module definition file. Segments must have unique names for 
  16674.            LINK386. All definitions with the same name are ignored after the 
  16675.            first mention. 
  16676.            Action: Check that the segment has been defined correctly. 
  16677.  
  16678.  L4029     name: DGROUP segment converted to type data 
  16679.            Explanation: A segment that is a member of DGROUP has been defined 
  16680.            as type CODE in a module definition file or object file. This 
  16681.            probably happened because a CLASS keyword in a SEGMENTS statement 
  16682.            was not given. 
  16683.            Action: Check the module definition file syntax. 
  16684.  
  16685.  L4030     name: segment attributes changed to conform with automatic data 
  16686.            segment 
  16687.            Explanation: The segment named is defined in DGROUP, but the shared 
  16688.            attribute is in conflict with the instance attribute. 
  16689.            Example:  The shared attribute is NONSHARED and the instance 
  16690.            attribute is SINGLE, or the shared attribute is SHARED and the 
  16691.            instance attribute is MULTIPLE. The bad segment is forced to have 
  16692.            the right shared attribute and the link continues. 
  16693.            Action: Check that the LINK386 action is acceptable. 
  16694.  
  16695.  L4031     name: segment declared in more than one group 
  16696.            Explanation: A segment is declared to be a member of two different 
  16697.            groups. 
  16698.            Action: Correct the source file and re-create the object files. 
  16699.  
  16700.  L4032     name: code-group size exceeds 65500 bytes 
  16701.            Explanation: The code group indicated is larger than 65500 bytes and 
  16702.            therefore might not be reliable. 
  16703.            Action: Break the group into smaller groups or remove one or more 
  16704.            segments and try again. 
  16705.  
  16706.  L4036     no automatic data segment 
  16707.            Explanation: The program or dynamic link library did not define a 
  16708.            group named DGROUP. This is recognized by LINK386 as the automatic 
  16709.            data segment. 
  16710.            Action: Edit the source file. 
  16711.  
  16712.  L4038     program has no starting address 
  16713.            Explanation: The program did not contain a starting address. 
  16714.            Physical Device Drivers do not have program starting addresses, so 
  16715.            this error can be ignored when linking Physical Device Drives. 
  16716.            Action: Recompile the program and try again. 
  16717.  
  16718.  L4044     CODE segment :name in DATA group:name; assuming DATA 
  16719.            Explanation: A CODE statement in a module definition file was used 
  16720.            to define default attributes for a DATA segment. 
  16721.            Action: Define a CODE statement and relink. 
  16722.  
  16723.  L4045     name of output file is name 
  16724.            Explanation: A dynamic link library file was created without 
  16725.            specifying an extension.  In such cases, LINK386 supplies an 
  16726.            extension of .DLL.  This is to warn you in case you expected an .EXE 
  16727.            file to be generated 
  16728.            Action: No action. 
  16729.  
  16730.  L4046     DATA segment: name in CODE group: name; assuming CODE 
  16731.            Explanation: A DATA statement in a module definition file was used 
  16732.            to define default attributes for a CODE segment. 
  16733.            Action: Define a DATA statement and relink. 
  16734.  
  16735.  L4048     ignoring non-zero heap size 
  16736.            Explanation: The module definition file does not contain a HEAPSIZE 
  16737.            statement. 
  16738.            Action: Edit the file and relink. 
  16739.  
  16740.  L4049     ignoring non-zero stack size 
  16741.            Explanation: The module definition file does not contain a STACKSIZE 
  16742.            statement. 
  16743.            Action: Edit the file and relink. 
  16744.  
  16745.  L4051     filename: cannot find library 
  16746.            Explanation: LINK386 could not find the specified library file. 
  16747.            Action: Enter a new file name, a new path specification, or both. 
  16748.  
  16749.  L4053     VM.TMP :illegal file name; ignored 
  16750.            Explanation: VM.TMP cannot be used for an object file name. 
  16751.            Action: Rename the file and restart LINK386. 
  16752.  
  16753.  L4054     filename: cannot find file 
  16754.            Explanation: LINK386 could not find the specified file. 
  16755.            Action: Enter a new file name, a new path specification, or both. 
  16756.  
  16757.  L4067     changing default resolution for weak external name from oldname to 
  16758.            newname 
  16759.            Explanation: LINK386 encountered a redefinition of a default 
  16760.            resolution and is changing it to the value indicated. 
  16761.            Action: If the change is OK, no action is required; otherwise, fix 
  16762.            the module definition file and try again. 
  16763.  
  16764.  L4068     ignoring stack size greater than 64K 
  16765.            Explanation: LINK386 encountered a stack greater than 64K or zero 
  16766.            and is assuming a stack size of 65,534. 
  16767.            Action: Edit the file and relink. 
  16768.  
  16769.  L4069     filename truncated to name 
  16770.            Explanation: LINK386 encountered a file name greater than 256 bytes 
  16771.            (including terminating null) and truncated it to the size indicated. 
  16772.            Action: Edit the file and relink. 
  16773.  
  16774.  L4071     application type not specified; assuming name 
  16775.            Explanation: An application type of WINDOWAPI, WINDOWCOMPAT, 
  16776.            NOTWINDOWCOMPAT, or PRIVATE was not specified. LINK386 is assuming 
  16777.            the application type indicated. 
  16778.            Action: Edit the file and relink. 
  16779.  
  16780.  L4072     changing application type from oldname to newname 
  16781.            Explanation: The application type specified with /PMTYPE is 
  16782.            different from that in .DEF file. LINK386 is using the application 
  16783.            type indicated. 
  16784.            Action: Edit the file and relink. 
  16785.  
  16786.  L4073     name: 32-bit aliased data segment size exceeds 64K 
  16787.            Explanation: The segment indicated is greater than 64K in length and 
  16788.            is a 32-bit aliased data segment 
  16789.            Action: If this is expected, do nothing; if not, break into smaller 
  16790.            segments. 
  16791.  
  16792.  L4074     attribute conflict for segment name; ignoring attribute type 
  16793.            Explanation: The segment indicated for the .DEF file is defined with 
  16794.            conflicting characteristics. LINK386 is ignoring the attribute 
  16795.            indicated. 
  16796.            Action: Edit the file and relink. 
  16797.  
  16798.  L4075     object type conflict - assuming name 
  16799.            Explanation: The .DEF files specified conflicting attributes for an 
  16800.            object; only one of the following attributes are allowed: RESIDENT, 
  16801.            NONPERMANENT, PERMANENT, CONTIGUOUS, or DYNAMIC. LINK386 is assuming 
  16802.            the attribute indicated. 
  16803.            Action: Edit the file and relink. 
  16804.  
  16805.  L4077     symbol name not defined; ordered allocation ignored 
  16806.            Explanation: While doing ordered allocation of COMDAT records, 
  16807.            LINK386 encountered an undefined COMDAT record; ordered allocation 
  16808.            is determined from the .DEF file. 
  16809.            Action: Edit the file and relink. 
  16810.  
  16811.  L4079     symbol name already defined for ordered allocation; duplicate 
  16812.            ignored 
  16813.            Explanation: While processing ORDER list in .DEF file, LINK386 
  16814.            encountered a COMDAT record already defined for ordered allocation. 
  16815.            Action: Edit the file and relink. 
  16816.  
  16817.  L4080     changing substitute name for alias name from name to name 
  16818.            Explanation: LINK386 encountered an alias redefiniton and is 
  16819.            changing it to the values indicated. 
  16820.            Action: If this is OK, no action is required. Otherwise, edit the 
  16821.            file and relink. 
  16822.  
  16823.  L4082     name ignored for module with 16-bit starting address 
  16824.            Explanation: LINK386 encountered a DLL module with a 16-bit entry 
  16825.            point requesting termination. Only modules with 32-bit entry points 
  16826.            can specify DLL termination. 
  16827.            Action: Remove the termination request from the module definition 
  16828.            file. 
  16829.  
  16830.  L4083     invalid base address specification; assuming number 
  16831.            Explanation: The base address specified with the /BASE option or in 
  16832.            the module definition file is illegal, and LINK386 is assuming the 
  16833.            given value. 
  16834.            Action: Change the base address if necessary; otherwise, ignore the 
  16835.            message. 
  16836.  
  16837.  L4084     module name truncated to string 
  16838.            Explanation: The module name was truncated to the number of 
  16839.            characters indicated. 
  16840.            Action: If this action is satisfactory, no action is required. 
  16841.            Otherwise, edit the module definition file and shorten the name. 
  16842.  
  16843.  L4085     name (alias alias name): forwarder entry created for imported export 
  16844.            Explanation: LINK386 created a forwarder entry within the entry 
  16845.            table for the named export. 
  16846.            Action: If this action is satisfactory, no action is required. 
  16847.  
  16848.  L4087     internal fix-up applied to uninitialized area at offset in object 
  16849.            number 
  16850.            Explanation: LINK386 attempted to apply an internal fix-up beyond 
  16851.            the initialize limits of the object. 
  16852.            Action: If this is acceptable, no action is required. If the problem 
  16853.            continues, you might want to disable based addressing. 
  16854.  
  16855.  L4090     cannot load identifier manipulation DLL name 
  16856.            Explanation:  LINK386 detected an error while trying to load an 
  16857.            identifier manipulator dynamic link library.  This DLL was specified 
  16858.            in an object file, and is used by LINK386 to demangle a compiler 
  16859.            generated mangled name into a function prototype when printing an 
  16860.            error message.  Error messages will not be demangled for this object 
  16861.            file. 
  16862.            Action:  Make sure the appropriate identifier manipulator DLL is in 
  16863.            the LIBPATH. 
  16864.  
  16865.  L4091     cannot locate procedure in identifier manipulation DLL name 
  16866.            Explanation: LINK386 detected an error while trying to load a 
  16867.            procedure from an identifier manipulator dynamic link library.  This 
  16868.            DLL was specified in an object file, and is used by LINK386 to 
  16869.            demangle a compiler generated mangled name into a function prototype 
  16870.            when printing an error message.  Error messages will not be 
  16871.            demangled for this object file. 
  16872.            Action: Make sure the appropriate identifier manipulator DLL is in 
  16873.            the LIBPATH. 
  16874.  
  16875.  L4092     too many identifier manipulation DLLs 
  16876.            Explanation: Too many identifier manipulator dynamic link libraries 
  16877.            have been specified.  These DLLs are specified in object files, and 
  16878.            are used by LINK386 to demangle compiler generated mangled names 
  16879.            into function prototypes when printing an error messages. Error 
  16880.            messages may not be demangled for some object files. 
  16881.            Action: Reduce the number of different compilers used to create the 
  16882.            objects. 
  16883.  
  16884.  L4093     cannot initialize identifier manipulation DLL name 
  16885.            Explanation: LINK386 detected an error while trying to initialize an 
  16886.            identifier manipulator dynamic link library.  This DLL was specified 
  16887.            in an object file, and is used by LINK386 to demangle a compiler 
  16888.            generated mangled name into a function prototype when printing an 
  16889.            error message. Error messages will not be demangled for this object 
  16890.            file. 
  16891.            Action: Make sure the appropriate identifier manipulator DLL is in 
  16892.            the LIBPATH. 
  16893.  
  16894.  L4094     increasing stack size from number to number 
  16895.            Explanation: The stack size specified by either 
  16896.  
  16897.              1. size of a segment with combine type stack 
  16898.              2. STACKSIZE statement in the .DEF file 
  16899.              3. /STACK LINK386 command line option 
  16900.  
  16901.            will cause a system error if the program is executed on an OS/2 2.x 
  16902.            system.  LINK386 has changed the stacksize to a larger value to 
  16903.            preserve compatibility. 
  16904.            Action: No action required, LINK386 has corrected the problem.  To 
  16905.            eliminate the warning message, restart LINK386 and specify the new 
  16906.            stack size. 
  16907.  
  16908.  
  16909. ΓòÉΓòÉΓòÉ 24.1.7. Conditions That Can Cause LINK386 Error 2002 ΓòÉΓòÉΓòÉ
  16910.  
  16911. LINK386 Error 2002 can be caused by the following conditions: 
  16912.  
  16913.      A group is larger than 64K. 
  16914.      The program contains an intersegment short jump or intersegment short 
  16915.       call. 
  16916.      The name of a data item in the program conflicts with that of a 
  16917.       subroutine in a library included in the link. 
  16918.      An EXTRN declaration in an assembler language source file appeared inside 
  16919.       the body of a segment, as in the following example: 
  16920.  
  16921.             code    SEGMENT public  'CODE'
  16922.                     EXTRN   main:far
  16923.             start   PROC    far
  16924.                     call    main
  16925.                     ret
  16926.             start   ENDP
  16927.             code    ENDS
  16928.  
  16929.       The following construction is preferred: 
  16930.  
  16931.                     EXTRN   main:far
  16932.             code    SEGMENT public  'CODE'
  16933.             start   PROC    far
  16934.                     call    main
  16935.                     ret
  16936.             start   ENDP
  16937.             code    ENDS
  16938.  
  16939.  
  16940. ΓòÉΓòÉΓòÉ 24.2. Make Message File (MKMSGF) Error Messages ΓòÉΓòÉΓòÉ
  16941.  
  16942.  MKMSGF: Codepage %s is all zeroes 
  16943.            Explanation: The code-page ID specified with the /P option is zero. 
  16944.            The message file is built with a code-page of zero. 
  16945.            Action: Retry the command using the correct code-page specification. 
  16946.  
  16947.  MKMSGF: Codepage %s error in numeric conversion 
  16948.            Explanation: The code-page ID specified with the /P option is not 
  16949.            numeric. The message file is built with a code-page of zero. 
  16950.            Action: Retry the command using the correct code-page specification. 
  16951.  
  16952.  MKMSGF: Codepage %s is too large 
  16953.            Explanation: The code-page ID specified with the /P option is too 
  16954.            large. The message file is built with a code-page of zero. 
  16955.            Action: Retry the command using the correct code-page specification. 
  16956.  
  16957.  MKMSGF: Country %u is not supported 
  16958.            Explanation: The country ID specified within the /D option is not 
  16959.            supported. MKMSGF processing is stopped. 
  16960.            Action: Retry the command using the correct country code 
  16961.            specification. 
  16962.  
  16963.  MKMSGF: DBCS code page not found 
  16964.            Explanation: No DBCS code page has been found that supports the DBCS 
  16965.            range specified in the /D option.  MKMSGF processing is stopped. 
  16966.            Action: Retry the command using the correct DBCS ranges or country 
  16967.            ID for the input message file. 
  16968.  
  16969.  MKMSGF: Error reading input file 
  16970.            Explanation: Error during input from source file. 
  16971.            Action: Make sure the source message file exists and that the drive 
  16972.            is ready.  Retry the command. 
  16973.  
  16974.  MKMSGF: Error writing output file 
  16975.            Explanation: Error during output to target file. 
  16976.            Action: Make sure there is sufficient disk space or that the drive 
  16977.            is ready.  Retry the command. 
  16978.  
  16979.  MKMSGF: File not found 
  16980.            Explanation: Input file could not be found. 
  16981.            Action: Retry the command, using the correct source message file 
  16982.            name. 
  16983.  
  16984.  MKMSGF: Infile[.ext] outfile[.ext] [/V] 
  16985.  [/D <DBCS range or country>] [/P <code page>] [/L <language id,sub id>] 
  16986.            Explanation: This is the proper syntax for MKMSGF.  It is displayed 
  16987.            when no operands are specified on the command line and after some 
  16988.            syntax errors. 
  16989.            Action: None. 
  16990.  
  16991.  MKMSGF: Input file same as output file 
  16992.            Explanation: The input and output file names are the same. 
  16993.            Processing is stopped. 
  16994.            Action: Correct the command line or the control file and restart 
  16995.            MKMSGF. 
  16996.  
  16997.  MKMSGF: Insufficient storage 
  16998.            Explanation: Not enough storage to execute program or too many 
  16999.            messages in the file.  Message limit is about 6000. 
  17000.            Action: Reduce the number of programs running in your system, or 
  17001.            reduce the size of the message file by either deleting messages or 
  17002.            by reducing the size of each message.  Retry the command. 
  17003.  
  17004.  MKMSGF: Invalid language or sub id 
  17005.            Explanation: The language family ID specified with the /L option is 
  17006.            not supported. 
  17007.            Action: Retry the command using the correct language family ID. 
  17008.  
  17009.  MKMSGF: Invalid message file format 
  17010.            Explanation: Input file is not a recognizable message text file. 
  17011.            Action: If an incorrect file name was entered, retry the command 
  17012.            with the correct source message file name. 
  17013.  
  17014.  MKMSGF: Language family %s is all zeroes 
  17015.            Explanation: The language family ID specified with the /L option is 
  17016.            zero. The message file is built with a language family ID of zero. 
  17017.            Action: Retry the command using the correct language family ID. 
  17018.  
  17019.  MKMSGF: Language family %s error in numeric conversion 
  17020.            Explanation: The language family ID specified with the /L option is 
  17021.            not numeric.  The message file is built with a language family ID of 
  17022.            zero. 
  17023.            Action: Retry the command using the correct language family ID. 
  17024.  
  17025.  MKMSGF: Language family %s is too large 
  17026.            Explanation: The language family ID specified with the /L option is 
  17027.            not supported.  The message file is built with a language family ID 
  17028.            of zero. 
  17029.            Action: Retry the command using the correct language family ID. 
  17030.  
  17031.  MKMSGF: Message ID out of sequence 
  17032.            Explanation: A message was detected that was out of the required 
  17033.            sequential order. 
  17034.            Action: Correct the error by editing your source message file and 
  17035.            renumbering the messages. You might also want to delete or insert 
  17036.            the appropriate message numbers to achieve the required sequential 
  17037.            order. 
  17038.  
  17039.  MKMSGF: Message XXXX too long 
  17040.            Explanation: The message was too long to be processed (limit is 
  17041.            approximately 2K characters). 
  17042.            Action: Correct the error by editing your source message file and 
  17043.            making the message shorter. Then, retry the command. 
  17044.  
  17045.  MKMSGF: More than NN codepages entered 
  17046.            Explanation: A maximum of NN code-page IDs can be specified for a 
  17047.            single message file. Only the first NN is accepted.ECE 
  17048.            Action: Retry the command using the correct code-page 
  17049.            specifications. 
  17050.  
  17051.  MKMSGF: No sub id using 1 default 
  17052.            Explanation: The language version ID specified with the /L option is 
  17053.            either invalid or not supported.  The message file is built using 
  17054.            the default value shown. 
  17055.            Action: Retry the command using the correct language version ID. 
  17056.  
  17057.  MKMSGF: Sub id %s error in numeric conversion 
  17058.            Explanation: The language version specified with the /L option is 
  17059.            not numeric. The message file is built with a default language 
  17060.            version. 
  17061.            Action: Retry the command using the correct language version ID. 
  17062.  
  17063.  MKMSGF: Syntax error 
  17064.            Explanation: You entered the command incorrectly. 
  17065.            Action: Retry the command using proper syntax. To display the proper 
  17066.            syntax, type MKMSGF at the command line. 
  17067.  
  17068.  
  17069. ΓòÉΓòÉΓòÉ 24.3. Message Segment Binder (MSGBIND) Error Messages ΓòÉΓòÉΓòÉ
  17070.  
  17071.  MSGBIND: I/O error seeking infile 
  17072.            Explanation: A disk error occurred while seeking either the message 
  17073.            file or the .EXE file. 
  17074.            Action: Run CHKDSK on the drive containing the file and restart 
  17075.            MSGBIND. 
  17076.  
  17077.  MSGBIND: I/O error writing file 
  17078.            Explanation: A disk error occurred while writing messages to the 
  17079.            .EXE file. 
  17080.            Action: Run CHKDSK on the drive containing the .EXE file, and 
  17081.            restart MSGBIND. 
  17082.  
  17083.  MSGBIND: Must specify .EXE file before message file 
  17084.            Explanation: The input file was in error. 
  17085.            Action: Correct input file. 
  17086.  
  17087.  MSGBIND: Must specify message file before message number 
  17088.            Explanation: The input file was in error. 
  17089.            Action: Correct the input file. 
  17090.  
  17091.  MSGBIND: Out of memory, needed xxxx bytes 
  17092.            Explanation: There was not enough memory available to run MSGBIND. 
  17093.            Action: Reduce the number of programs presently running in your 
  17094.            system and restart MSGBIND. 
  17095.  
  17096.  MSGBIND: Premature EOF during copy 
  17097.            Explanation: The .EXE file was not built correctly. 
  17098.            Action: Rebuild the .EXE file and restart MSGBIND. 
  17099.  
  17100.  MSGBIND: Unable to create temp file-MSGBIND.TMP 
  17101.            Explanation: An error occurred while creating the intermediary file 
  17102.            MSGBIND.TMP. 
  17103.            Action: Delete or move files to make disk space available. If 
  17104.            MSGBIND.TMP is present as a read-only file, it must first be 
  17105.            deleted. Restart MSGBIND. 
  17106.  
  17107.  MSGBIND: Unable to open xxxxxxxx 
  17108.            Explanation: The input file specified was not found or an error 
  17109.            occurred when opening the message file. 
  17110.            Action: Restart MSGBIND using the correct input file name or a 
  17111.            backup copy of the message file. 
  17112.  
  17113.  Number of Message Files exceeded. Only nnn allowed 
  17114.            Explanation: The number of message files specified in the input file 
  17115.            exceeds the maximum number of files that MSGBIND can process at one 
  17116.            time. 
  17117.            Action: Correct the input file or combine message files, and then 
  17118.            restart MSGBIND. 
  17119.  
  17120.  Reading messages from xxxxxxxx 
  17121.            Explanation: Messages from the displayed message file are being read 
  17122.            into memory. 
  17123.            Action: None. This message is for information only. 
  17124.  
  17125.  Reading messages from xxxxxxxx -file not found 
  17126.            Explanation: The message file was not found in the path specified in 
  17127.            the input file. 
  17128.            Action: Edit the input file, correcting the path or file name, or 
  17129.            both.  Restart MSGBIND. 
  17130.  
  17131.  Reading messages from xxxxxxxx -not created with MKMSGF program 
  17132.            Explanation: The message file displayed was not created using the 
  17133.            MKMSGF program. 
  17134.            Action: Convert the source message file to a formatted message file 
  17135.            using the MKMSGF program, and restart MSGBIND. See the Make Message 
  17136.            File (MKMSGF). 
  17137.  
  17138.  Reading messages from xxxxxxxx -not enough memory 
  17139.            Explanation: There was not enough memory available to store the 
  17140.            messages. 
  17141.            Action: Reduce the number of programs running in your system, and 
  17142.            restart MSGBIND. 
  17143.  
  17144.  The object that would contain the bound messages would be too large. Refer to 
  17145.  the Toolkit Documentation for more information. 
  17146.            Explanation: (self explanatory) 
  17147.            Action: Do one or more, of the following: 
  17148.  
  17149.              1. Modify the module definition file to isolate the message 
  17150.                 object, and then relink the application. 
  17151.              2. Reduce the number of messages to be bound to the application as 
  17152.                 specified in the input file. 
  17153.              3. Reduce the size of the messages and rebuild the message file 
  17154.                 with MKMSGF. 
  17155.              4. Then restart MSGBIND. 
  17156.  
  17157.  Unable to bind message nnnn, message segment would exceed 64K. The remaining 
  17158.  messages will NOT be bound. 
  17159.            Explanation: (self explanatory) 
  17160.            Action: Do one or more, of the following: 
  17161.  
  17162.              1. Modify the module definition file to isolate the message 
  17163.                 object, and then relink the application. 
  17164.              2. Reduce the number of messages to be bound to the application as 
  17165.                 specified in the input file. 
  17166.              3. Reduce the size of the messages and rebuild the message file 
  17167.                 with MKMSGF. 
  17168.              4. Then restart MSGBIND. 
  17169.  
  17170.  Unable to locate call to Dos32GetMessage, messages will not be bound. 
  17171.            Explanation: The executable file to be modified makes no function 
  17172.            calls to the message retriever, or was not linked with the correct 
  17173.            library file. 
  17174.            Action: If the application does use the message retriever function, 
  17175.            such as DosGetMessage, relink the application using the correct 
  17176.            library file, and then restart MSGBIND. 
  17177.  
  17178.            If not, messages cannot be bound to the application. 
  17179.  
  17180.  Updating xxxxxxxx 
  17181.            Explanation: The .EXE file name displayed is being updated with the 
  17182.            requested messages. 
  17183.            Action: None. This message is for information only. 
  17184.  
  17185.  Updating xxxxxxxx -file not found 
  17186.            Explanation: The .EXE file name was not found in the path specified 
  17187.            in the input file. 
  17188.            Action: Edit the input file, correcting the path or file name, or 
  17189.            both.  Restart MSGBIND. 
  17190.  
  17191.  Updating xxxxxxxx -not linked with MSGSEG.OBJ 
  17192.            Explanation: The .EXE file name displayed made no DosGetMessage 
  17193.            functions, or the .EXE file was not linked with the correct library. 
  17194.            Messages can only be bound to applications that call message 
  17195.            retriever functions, such as DosGetMessage. 
  17196.            Action: If the .EXE file does make calls to message retriever 
  17197.            functions, relink the application using the correct library, and 
  17198.            restart MSGBIND. 
  17199.  
  17200.  usage: MSGBIND scriptfile 
  17201.            Explanation: The command was entered incorrectly. 
  17202.            Action: Restart MSGBIND. Refer to Syntax for the correct syntax. 
  17203.  
  17204.  Warning: No msgseg data found in new executable 
  17205.            Explanation: The executable file to be modified makes no function 
  17206.            calls to the message retriever, or was not linked with the correct 
  17207.            library file. 
  17208.            Action: If the application does use the message retriever function, 
  17209.            such as DosGetMessage, relink the application using the correct 
  17210.            library file, and then restart MSGBIND. 
  17211.  
  17212.            If not, messages cannot be bound to the application. 
  17213.  
  17214.  WARNING: Skipping messages for this file 
  17215.            Explanation: The .EXE file was in error, so the messages were not 
  17216.            bound to it. Either the .EXE file does not exist, or it has not been 
  17217.            linked with the correct library. 
  17218.            Action: If the .EXE file name is correct, relink the application 
  17219.            using the correct library, and restart MSGBIND. 
  17220.  
  17221.  WARNING: Skipping message numbers for this file 
  17222.            Explanation: The message file was in error, so all messages from 
  17223.            this message file were ignored. The message file might not exist, 
  17224.            might not be formatted correctly, or there might not be enough 
  17225.            memory to store all the messages. 
  17226.            Action: If the message file name is correct and has been correctly 
  17227.            formatted, check the memory available for the file. Restart MSGBIND. 
  17228.  
  17229.  WARNING: xxxx is an invalid message number 
  17230.            Explanation: The message number specified was not found in the 
  17231.            message file. 
  17232.            Action: Edit the input file and correct any message numbers that are 
  17233.            in error. Restart MSGBIND. 
  17234.  
  17235.  Writing messages 
  17236.            Explanation: The .EXE file is being updated with the messages 
  17237.            requested. 
  17238.            Action: None. This message is for information only. 
  17239.  
  17240.  
  17241. ΓòÉΓòÉΓòÉ 24.4. Resource Compiler Error Messages ΓòÉΓòÉΓòÉ
  17242.  
  17243. The error, warning, and information messages produced by the Resource Compiler 
  17244. (RC) are listed below.  The message number indicates the severity of the error: 
  17245.  
  17246.  Message Number      Severity 
  17247.  
  17248.  1000 - 1999         Severe Errors 
  17249.  
  17250.  2000 - 2999         Error Messages 
  17251.  
  17252.  3000 - 3999         Warning Messages 
  17253.  
  17254.  4000 - 4999         Informational Messages 
  17255.  
  17256.  When the compiler encounters a severe error, it displays the message and stops 
  17257.  processing.  When the compiler encounters other types of errors, it displays 
  17258.  the error message and continues processing. For any input file containing a 
  17259.  severe error or an error, the compiler will not produce an output (.RES) file. 
  17260.  
  17261.  
  17262. ΓòÉΓòÉΓòÉ 24.4.1. Severe Errors: 1000 - 1999 ΓòÉΓòÉΓòÉ
  17263.  
  17264.  R1001   RC cannot open file filename. 
  17265.  
  17266.          Explanation:  Resource Compiler was unable to open the given file. 
  17267.  
  17268.          Recovery:  Check the format of the file.  The same file might be in 
  17269.          use by another process. 
  17270.  
  17271.  R1002   RC could not find file filename. 
  17272.  
  17273.          Explanation:  Resource Compiler was unable to locate the given file. 
  17274.  
  17275.          Recovery:  Check the spelling of the file name and its path, and be 
  17276.          sure that the file exists. 
  17277.  
  17278.  R1003   RC had an I/O error with file filename. 
  17279.  
  17280.          Explanation:  Resource Compiler was unable to read or write the given 
  17281.          file. 
  17282.  
  17283.          Recovery:  Check the spelling of the file name and its path.  If the 
  17284.          file exists, confirm that its format is correct. 
  17285.  
  17286.  R1004   You did not specify an input file. 
  17287.  
  17288.          Explanation:  You did not name an input file on the command line. 
  17289.  
  17290.          Recovery:  Correct the syntax of your command line. 
  17291.  
  17292.  R1005   You did not specify an output file. 
  17293.  
  17294.          Explanation:  You did not name an output file on the command line, in 
  17295.          a context which required an output file name. 
  17296.  
  17297.          Recovery:  Correct the syntax of your command line. 
  17298.  
  17299.  R1006   The system DBCS environment is not correct. 
  17300.  
  17301.          Explanation:  Resource Compiler detected an error when examining your 
  17302.          system's double-byte character set environment vector. 
  17303.  
  17304.          Recovery:  Correct your system's double-byte character set 
  17305.          environment. 
  17306.  
  17307.  R1007   You specified more than one output file on the command line. 
  17308.  
  17309.          Explanation:  You specified extra file operands following the output 
  17310.          file name on your command line. 
  17311.  
  17312.          Recovery:  Correct the syntax of your command line. 
  17313.  
  17314.  R1008   The input and output file names must be different; both are filename. 
  17315.  
  17316.          Explanation:  On the command line, your input and output file names 
  17317.          were identical. 
  17318.  
  17319.          Recovery:  Give a different name for the output file. 
  17320.  
  17321.  R1009   RC detected errors during compilation. 
  17322.  
  17323.          Explanation:  The compiler was unable to complete the compile process. 
  17324.  
  17325.          Recovery:  Correct the errors noted on your display. 
  17326.  
  17327.  R1010   RC read an unexpected end of file on filename. 
  17328.  
  17329.          Explanation:  File filename did not contain certain data that Resource 
  17330.          Compiler needed. 
  17331.  
  17332.          Recovery:  Correct the contents of the file. 
  17333.  
  17334.  R1012   RC has an internal data error. 
  17335.  
  17336.          Explanation:  Resource Compiler detected an incorrect data state. 
  17337.  
  17338.          Recovery: Follow your local problem reporting procedures to notify IBM 
  17339.          of the error. 
  17340.  
  17341.  R1013   RC encountered errors in input file filename; resources will not be 
  17342.          bound. 
  17343.  
  17344.          Explanation:  Resource Compiler could not continue the compile 
  17345.          process. 
  17346.  
  17347.          Recovery:  Correct the file according to the error messages printed. 
  17348.  
  17349.  R1014   RC has an internal logic error -- consult your IBM representative. 
  17350.  
  17351.          Explanation:  Resource Compiler detected an incorrect internal state. 
  17352.  
  17353.          Recovery:  Follow your local problem reporting procedures to notify 
  17354.          IBM of the error. 
  17355.  
  17356.  R1015   The executable file was marked not loadable. 
  17357.  
  17358.          Explanation:  You requested that Resource Compiler bind resources to 
  17359.          an executable file, but the file could not be loaded. 
  17360.  
  17361.          Recovery:  Use a loadable executable file for binding resources. 
  17362.  
  17363.  R1016   RC failed to allocate memory. 
  17364.  
  17365.          Explanation:  A request for system memory could not be satisfied. 
  17366.  
  17367.          Recovery:  Your system's swapper file might not have enough disk space 
  17368.          to grow to a necessary size.  Clear some space on the device 
  17369.          containing your swapper file. 
  17370.  
  17371.  R1017   Not enough memory is available. 
  17372.  
  17373.          Explanation:  Tried an operation that use more than the available 
  17374.          memory. 
  17375.  
  17376.          Recovery:  Stop some programs to give more memory. 
  17377.  
  17378.  R1018   RC cannot open the file. 
  17379.  
  17380.          Explanation:  Resource Compiler attempted a file I/O operation which 
  17381.          was unsuccessful. 
  17382.  
  17383.          Recovery:  Check the spelling of the file name and its path, and be 
  17384.          sure that the file exists.  Be sure that other processes have released 
  17385.          the file for operations by the Resource Compiler. 
  17386.  
  17387.  R1019   RC cannot read from the file. 
  17388.  
  17389.          Explanation:  Resource Compiler attempted a file I/O operation which 
  17390.          was unsuccessful. 
  17391.  
  17392.          Recovery:  Check the spelling of the file name and its path, and be 
  17393.          sure that the file exists.  Be sure that other processes have released 
  17394.          the file for operations by the Resource Compiler. 
  17395.  
  17396.  R1020   RC cannot write to the file. 
  17397.  
  17398.          Explanation:  Resource Compiler attempted a file I/O operation which 
  17399.          was unsuccessful. 
  17400.  
  17401.          Recovery:  Check the spelling of the file name and its path, and be 
  17402.          sure that the file exists.  Be sure that other processes have released 
  17403.          the file for operations by the Resource Compiler. 
  17404.  
  17405.  R1021   RC cannot seek to a file. 
  17406.  
  17407.          Explanation:  Resource Compiler attempted a file I/O operation which 
  17408.          was unsuccessful. 
  17409.  
  17410.          Recovery:  Check the spelling of the file name and its path, and be 
  17411.          sure that the file exists.  Be sure that other processes have released 
  17412.          the file for operations by the Resource Compiler. 
  17413.  
  17414.  R1022   The file has no data. 
  17415.  
  17416.          Explanation:  Resource Compiler attempted to read an empty file. 
  17417.  
  17418.          Recovery:  Confirm that your input files have the proper data format. 
  17419.  
  17420.  R1025   Codepage could not be found on this system. 
  17421.  
  17422.          Explanation:  The code page specified does not exist. 
  17423.  
  17424.          Recovery:  Specify an existing code page. 
  17425.  
  17426.  
  17427. ΓòÉΓòÉΓòÉ 24.4.2. Error Messages: 2000 - 2999 ΓòÉΓòÉΓòÉ
  17428.  
  17429.  R2002   RC expected at least one argument for option. 
  17430.  
  17431.          Explanation:  You coded command-line option option without argument. 
  17432.  
  17433.          Recovery:  Supply the required argument for the option. 
  17434.  
  17435.  R2003   This input is incorrect: 
  17436.  
  17437.          Explanation:  The given text is incorrect. 
  17438.  
  17439.          Recovery:  Correct the syntax of the statement. 
  17440.  
  17441.  R2004   RC encountered an incorrect character in the source file. 
  17442.  
  17443.          Explanation:  The input file had a character which was incorrect in 
  17444.          context. 
  17445.  
  17446.          Recovery:  Remove the incorrect character from the file. 
  17447.  
  17448.  R2009   You defined too many macros from the command line. 
  17449.  
  17450.          Explanation:  You specified more than eight macro definitions on the 
  17451.          command line. 
  17452.  
  17453.          Recovery:  Supply extra macro definitions as #define statements within 
  17454.          an input file. 
  17455.  
  17456.  R2010   You specified the incorrect code page value value. 
  17457.  
  17458.          Explanation:  You coded command-line option -cp or -k or environment 
  17459.          variable DBCS but gave an incorrect value for the code page. 
  17460.  
  17461.          Recovery:  Use a value from the table of code pages and country codes 
  17462.          in "COUNTRYCODE" in the OS/2 Warp Control Program Programming Guide 
  17463.          and Reference. 
  17464.  
  17465.  R2011   You specified no code page value. 
  17466.  
  17467.          Explanation:  You coded command-line option -cp or -k or environment 
  17468.          variable DBCS but gave no value for the code page. 
  17469.  
  17470.          Recovery:  Use a value from the table of code pages and country codes 
  17471.          in "COUNTRYCODE" in the OS/2 Warp Control Program Programming Guide 
  17472.          and Reference. 
  17473.  
  17474.  R2013   The resource identifiers have too many long strings. 
  17475.  
  17476.          Explanation:  Your resource data contained more than 64K bytes of 
  17477.          strings used as resource identifiers.  The resources could not be 
  17478.          bound to the executable file. 
  17479.  
  17480.          Recovery:  Use fewer characters in the string identifiers of your 
  17481.          resource file. 
  17482.  
  17483.  R2014   RC cannot delete old resources within instance pages. 
  17484.  
  17485.          Explanation:  The input executable file contained original resources 
  17486.          inside instance pages. 
  17487.  
  17488.          Recovery:  Do not link resources into the executable file prior to 
  17489.          running Resource Compiler. 
  17490.  
  17491.  R2015   The resources have too many objects. 
  17492.  
  17493.          Explanation:  The input executable file contained an incorrect format. 
  17494.  
  17495.          Recovery:  Correct the object table of the input file. 
  17496.  
  17497.  R2016   The page table has too many entries. 
  17498.  
  17499.          Explanation:  The input executable file contained too many pages. 
  17500.  
  17501.          Recovery:  Correct the page table of the input file. 
  17502.  
  17503.  R2017   The executable file has too many fixups. 
  17504.  
  17505.          Explanation:  The input executable file contained too many fixups. 
  17506.  
  17507.          Recovery:  Correct the fixup page table of the input file. 
  17508.  
  17509.  R2018   RC cannot write a resident Format Directive. 
  17510.  
  17511.          Explanation:  The input executable file contained resident format 
  17512.          directives which the compiler could not rewrite during the binding 
  17513.          operation. 
  17514.  
  17515.          Recovery:  Correct the format directives table of the input file. 
  17516.  
  17517.  R2019   RC cannot read the OS/2 segment table in file filename. 
  17518.  
  17519.          Explanation:  The input executable file was not in the correct format. 
  17520.  
  17521.          Recovery:  Correct the segment table of the input file. 
  17522.  
  17523.  R2020   RC cannot delete temporary file filename. 
  17524.  
  17525.          Explanation:  The temporary executable file could not be deleted. 
  17526.  
  17527.          Recovery:  Be sure that you have specified a value for the TMP or TEMP 
  17528.          environment variable. 
  17529.  
  17530.  R2021   RC cannot write extended attributes for filename. 
  17531.  
  17532.          Explanation:  Resource Compiler was unable to write extended 
  17533.          attributes to the output executable file. 
  17534.  
  17535.          Recovery:  Be sure that no other process is using the executable file. 
  17536.  
  17537.  R2022   The default icon exceeds 64K. 
  17538.  
  17539.          Explanation:  The input executable file contained a default icon in 
  17540.          excess of 64K in size. 
  17541.  
  17542.          Recovery:  Use a default icon smaller than 64K. 
  17543.  
  17544.  R2023   The association table exceeds 64K. 
  17545.  
  17546.          Explanation:  The input executable file contained an association table 
  17547.          in excess of 64K in size. 
  17548.  
  17549.          Recovery:  Use an association table smaller than 64K. 
  17550.  
  17551.  R2024   You must specify an executable file name. 
  17552.  
  17553.          Explanation:  You did not specify the name of an executable file to 
  17554.          which to bind resources. 
  17555.  
  17556.          Recovery:  Specify the name of an executable file. 
  17557.  
  17558.  R2025   You must specify a resource or script file name. 
  17559.  
  17560.          Explanation:  You did not specify the name of an input file. 
  17561.  
  17562.          Recovery:  Specify the name of an input file. 
  17563.  
  17564.  R2026   RC encountered an error while binding resources to executable file 
  17565.          filename. 
  17566.  
  17567.          Explanation:  During the binding step, Resource Compiler found errors 
  17568.          described in other messages. 
  17569.  
  17570.          Recovery:  Follow the recovery steps given for the accompanying 
  17571.          messages. 
  17572.  
  17573.  R2027   RC encountered an error while reading the resource file. 
  17574.  
  17575.          Explanation:  Resource Compiler had an I/O error on the binary 
  17576.          resource file. 
  17577.  
  17578.          Recovery:  Confirm the spelling of the file name and path, and be sure 
  17579.          that no other process is using a file of that name. 
  17580.  
  17581.  R2028   RC encountered an error while writing the resource file. 
  17582.  
  17583.          Explanation:  Resource Compiler had an I/O error on the binary 
  17584.          resource file. 
  17585.  
  17586.          Recovery:  Confirm the spelling of the file name and path, and be sure 
  17587.          that no other process is using a file of that name. 
  17588.  
  17589.  R2030   You must specified a resource and a script file name. 
  17590.  
  17591.          Explanation:  Resource Compiler could not determine the names of the 
  17592.          input script file and the output binary file. 
  17593.  
  17594.          Recovery:  Give names for both of these files on the command line. 
  17595.  
  17596.  R2031   The executable file has an unknown format. 
  17597.  
  17598.          Explanation:  You tried to bind resources to an executable file in an 
  17599.          unknown format. 
  17600.  
  17601.          Recovery:  Use an executable file in either the NE (16-bit) or LX 
  17602.          (32-bit) linear executable format. 
  17603.  
  17604.  R2033   You specified the duplicate operand, which already exist in the group. 
  17605.  
  17606.          Explanation:  You used a command line operand more than once. 
  17607.  
  17608.          Recovery:  Remove the extra operand specification. 
  17609.  
  17610.  R2034   RC cannot create resource item type 'type' and id 'number'. 
  17611.  
  17612.          Explanation:  One of your resource statements specified an incorrect 
  17613.          combination of resource type and resource ID. 
  17614.  
  17615.          Recovery:  Do not duplicate resource IDs of the same type. 
  17616.  
  17617.  R2035   RC cannot create resource item type 'type' and id 'string'. 
  17618.  
  17619.          Explanation:  One of your resource statements specified an incorrect 
  17620.          combination of resource type and resource ID. 
  17621.  
  17622.          Recovery:  Do not duplicate resource IDs of the same type. 
  17623.  
  17624.  R2036   This resource name is too long (limit 512): 
  17625.  
  17626.          Explanation:  You coded the given name as a resource id, but its 
  17627.          length exceeds the legal limit. 
  17628.  
  17629.          Recovery:  Use a resource name shorter than 512 characters. 
  17630.  
  17631.  R2037   RC failed to add a resource.  The return code is nnnnn. 
  17632.  
  17633.          Explanation:  An error occurred while creating a resource. 
  17634.  
  17635.          Recovery:  Refer to the OS/2 return code nnnnn for more information. 
  17636.  
  17637.  R2038   The script file has an incorrect integer or hex or octal literal. 
  17638.  
  17639.          Explanation:  You provided a numeric literal in an incorrect format, 
  17640.          or with a value out of the legal range. 
  17641.  
  17642.          Recovery:  Correct the format or value of the literal. 
  17643.  
  17644.  R2039   The script file has an incorrect floating point literal. 
  17645.  
  17646.          Explanation:  You provided a numeric literal in an incorrect format, 
  17647.          or with a value out of the legal range. 
  17648.  
  17649.          Recovery:  Correct the format or value of the literal. 
  17650.  
  17651.  R2040   The script file has an incorrect floating point value. 
  17652.  
  17653.          Explanation:  You provided a numeric literal in an incorrect format, 
  17654.          or with a value out of the legal range. 
  17655.  
  17656.          Recovery:  Correct the format or value of the literal. 
  17657.  
  17658.  R2041   The script file has an integer literal too large for its type. 
  17659.  
  17660.          Explanation:  You provided a numeric literal in an incorrect format, 
  17661.          or with a value out of the legal range. 
  17662.  
  17663.          Recovery:  Correct the format or value of the literal. 
  17664.  
  17665.  R2042   You specified a character literal with more than one byte. 
  17666.  
  17667.          Explanation:  You provided a character literal in an incorrect format, 
  17668.          or with a value out of the legal range. 
  17669.  
  17670.          Recovery:  Correct the format or value of the literal. 
  17671.  
  17672.  R2043   You specified an empty character literal. 
  17673.  
  17674.          Explanation:  You provided a character literal in an incorrect format, 
  17675.          or with a value out of the legal range. 
  17676.  
  17677.          Recovery:  Correct the format or value of the literal. 
  17678.  
  17679.  R2044   The script file has a Hex or Octal escape sequence out of range. 
  17680.  
  17681.          Explanation:  You provided an escape sequence in an incorrect format, 
  17682.          or with a value out of the legal range. 
  17683.  
  17684.          Recovery:  Correct the format or value of the sequence. 
  17685.  
  17686.  R2045   A Hex escape sequence contained no hex digits. 
  17687.  
  17688.          Explanation:  You provided an escape sequence in an incorrect format, 
  17689.          or with a value out of the legal range. 
  17690.  
  17691.          Recovery:  Correct the format or value of the sequence. 
  17692.  
  17693.  R2046   You specified an incorrect escape sequence. 
  17694.  
  17695.          Explanation:  You provided an escape sequence in an incorrect format, 
  17696.          or with a value out of the legal range. 
  17697.  
  17698.          Recovery:  Correct the format or value of the sequence. 
  17699.  
  17700.  R2047   The given directive requires a valid macro name. 
  17701.  
  17702.          Explanation:  You specified preprocessor directive on which the 
  17703.          expected macro name was missing or incorrect. 
  17704.  
  17705.          Recovery:  Correct the macro name on the directive. 
  17706.  
  17707.  R2048   You specified an incorrect expression specified on a conditional 
  17708.          directive. 
  17709.  
  17710.          Explanation:  You specified an incorrect expression on an #if or #elif 
  17711.          preprocessor directive. 
  17712.  
  17713.          Recovery:  Correct the syntax of the expression. 
  17714.  
  17715.  R2049   The expression on a conditional directive results in division by zero. 
  17716.  
  17717.          Explanation:  You specified an incorrect expression on an #if or #elif 
  17718.          preprocessor directive. 
  17719.  
  17720.          Recovery:  Correct the syntax of the expression. 
  17721.  
  17722.  R2050   #elif or #else or #endif appeared in an incorrect context. 
  17723.  
  17724.          Explanation:  You specified an #elif or #else or #endif preprocessor 
  17725.          directive without a preceding #if or #ifdef or #ifndef preprocessor 
  17726.          directive. 
  17727.  
  17728.          Recovery:  Correct the logic of the preprocessor conditional blocks. 
  17729.  
  17730.  R2051   The preprocessor expected #endif but the input stream ended with open 
  17731.          scope. 
  17732.  
  17733.          Explanation:  You specified #if or #elif or #ifdef or #ifndef 
  17734.          preprocessor directive without a concluding #endif preprocessor 
  17735.          directive. 
  17736.  
  17737.          Recovery:  Correct the logic of the preprocessor conditional blocks. 
  17738.  
  17739.  R2052   You did not complete a #define parameter list before the end of the 
  17740.          source line. 
  17741.  
  17742.          Explanation:  You specified a function-type macro definition in a 
  17743.          #define preprocessor directive but did not end the parameter list with 
  17744.          a closing parenthesis. 
  17745.  
  17746.          Recovery:  Correct the syntax of the macro definition. 
  17747.  
  17748.  R2053   You specified an incorrect #define parameter list. 
  17749.  
  17750.          Explanation:  You specified a function-type macro definition in a 
  17751.          #define preprocessor directive but did not end the parameter list with 
  17752.          a closing parenthesis. 
  17753.  
  17754.          Recovery:  Correct the syntax of the macro definition. 
  17755.  
  17756.  R2054   #define parameter list has a duplicate parameter. 
  17757.  
  17758.          Explanation:  You repeated a parameter when specifying a function-type 
  17759.          macro. 
  17760.  
  17761.          Recovery:  Correct the syntax of the macro definition. 
  17762.  
  17763.  R2055   You invoked a macro with incorrect arguments. 
  17764.  
  17765.          Explanation:  You specified incorrect arguments to a macro with a 
  17766.          function-type definition. 
  17767.  
  17768.          Recovery:  Correct the syntax of the macro reference. 
  17769.  
  17770.  R2056   You did not complete a directive before the end of the source line. 
  17771.  
  17772.          Explanation:  You specified a preprocessor directive but did not 
  17773.          complete it on the same line. 
  17774.  
  17775.          Recovery:  Write the entire directive on the same line. 
  17776.  
  17777.  R2057   You did not end a character or string or #include literal before the 
  17778.          end of the line. 
  17779.  
  17780.          Explanation:  You specified a string or literal token which did not 
  17781.          end before the line ended. 
  17782.  
  17783.          Recovery:  Write the entire token on the same line. 
  17784.  
  17785.  R2058   An rcinclude statement must have a filename to include. 
  17786.  
  17787.          Explanation:  You specified an RCINCLUDE statement but omitted the 
  17788.          file name. 
  17789.  
  17790.          Recovery:  Code the name of the file on the RCINCLUDE statement. 
  17791.  
  17792.  R2059   A statement has an incorrect expression. 
  17793.  
  17794.          Explanation:  You specified an statement with an incorrect arithmetic 
  17795.          expression. 
  17796.  
  17797.          Recovery:  Correct the syntax of the expression. 
  17798.  
  17799.  R2060   The stringizing operator(#) appeared on a function-like macro. 
  17800.  
  17801.          Explanation:  You specified a stringizing operator on a function-like 
  17802.          macro. 
  17803.  
  17804.          Recovery:  Refer to C Language Reference for the rules governing the 
  17805.          stringizing operator. 
  17806.  
  17807.  R2061   You specified the Concatenation operator (##) incorrectly. 
  17808.  
  17809.          Explanation:  You specified a concatenation operator in an incorrect 
  17810.          context. 
  17811.  
  17812.          Recovery:  Refer to C Language Reference for the rules governing the 
  17813.          concatenation operator. 
  17814.  
  17815.  R2062   The script file has an incorrect wide character or wide string 
  17816.          literal. 
  17817.  
  17818.          Explanation:  You specified a wide character or wide string literal in 
  17819.          an incorrect format. 
  17820.  
  17821.          Recovery:  Refer to C Language Reference for the rules governing wide 
  17822.          characters and wide strings. 
  17823.  
  17824.  R2063   A literal has an incorrect multibyte character. 
  17825.  
  17826.          Explanation:  You specified a literal containing an incorrect 
  17827.          multibyte character. 
  17828.  
  17829.          Recovery:  Use only characters from your multibyte character set in 
  17830.          multibyte literal constants. 
  17831.  
  17832.  R2064   You used a wide character string on an #include. 
  17833.  
  17834.          Explanation:  You specified an #include preprocessor directive 
  17835.          containing a wide character string.  This usage is prohibited. 
  17836.  
  17837.          Recovery:  Correct the syntax of the directive. 
  17838.  
  17839.  R2065   A predefined macro can not be defined again. 
  17840.  
  17841.          Explanation:  You used a #define or #undef preprocessor directive to 
  17842.          redefine a predefined macro. These macro names cannot be changed using 
  17843.          directives. 
  17844.  
  17845.          Recovery:  For control over the values of macros, use macro names 
  17846.          which are not reserved for special use by the preprocessor. 
  17847.  
  17848.  R2066   A predefined macro can not be undefined. 
  17849.  
  17850.          Explanation:  You used a #define or #undef preprocessor directive to 
  17851.          undefine a predefined macro. These macro names cannot be changed using 
  17852.          directives. 
  17853.  
  17854.          Recovery:  For control over the values of macros, use macro names 
  17855.          which are not reserved for special use by the preprocessor. 
  17856.  
  17857.  R2067   The filename to be searched contained only whitespace. 
  17858.  
  17859.          Explanation:  You used an #include preprocessor directive to process a 
  17860.          file which had no tokens. 
  17861.  
  17862.          Recovery:  Eliminate the reference to the file, or supply the correct 
  17863.          information inside it. 
  17864.  
  17865.  R2068   The file cannot be searched because of missing include options. 
  17866.  
  17867.          Explanation:  You asked for a file to be included on an #include 
  17868.          directive and wrote the file name without a path name inside angle 
  17869.          brackets, and gave no path search specifications with the -I option. 
  17870.          With no search criteria, the preprocessor will be unable to locate the 
  17871.          file. 
  17872.  
  17873.          Recovery:  Specify search paths to the file by using the -I option. 
  17874.  
  17875.  R2069   You redefined a macro name with different replacement text. 
  17876.  
  17877.          Explanation:  You defined a macro, then redefined it to a different 
  17878.          value. 
  17879.  
  17880.          Recovery:  To change the value of a macro, first undefine it and then 
  17881.          use another #define directive. 
  17882.  
  17883.  R2076   An unexpected newline appeared within quotes. 
  17884.  
  17885.          Explanation:  You defined a string spanning more than one line, when 
  17886.          this usage is not permitted. 
  17887.  
  17888.          Recovery:  Remove the newline from the string. 
  17889.  
  17890.  R2077   A Hex escape must be followed by 2 or 4 hex digits. 
  17891.  
  17892.          Explanation:  You used a hexadecimal escape sequence in the wrong 
  17893.          format. 
  17894.  
  17895.          Recovery:  Only one-byte and two-byte characters are recognized as hex 
  17896.          escapes.  For example, use the form \x00 for a single-byte zero or 
  17897.          \x0000 for a double-byte zero. 
  17898.  
  17899.  R2078   A resource_Item has incorrect Window Data. 
  17900.  
  17901.          Explanation:  Resource Compiler encountered incorrect binary data 
  17902.          while examining the child windows of a resource. 
  17903.  
  17904.          Recovery:  The message appears together with other messages describing 
  17905.          the particular errors of the child window.  Follow the recovery 
  17906.          instructions of the accompanying messages. 
  17907.  
  17908.  R2079   You specified a non-numeric button item style. 
  17909.  
  17910.          Explanation:  You coded a field using a string token. 
  17911.  
  17912.          Recovery:  Replace the string by a defined numeric constant or 
  17913.          expression. 
  17914.  
  17915.  R2080   You specified a non-numeric combo box style. 
  17916.  
  17917.          Explanation:  You coded a field using a string token. 
  17918.  
  17919.          Recovery:  Replace the string by a defined numeric constant or 
  17920.          expression. 
  17921.  
  17922.  R2081   You specified a non-numeric control style. 
  17923.  
  17924.          Explanation:  You coded a field using a string token. 
  17925.  
  17926.          Recovery:  Replace the string by a defined numeric constant or 
  17927.          expression. 
  17928.  
  17929.  R2082   You specified a non-numeric entry field style. 
  17930.  
  17931.          Explanation:  You coded a field using a string token. 
  17932.  
  17933.          Recovery:  Replace the string by a defined numeric constant or 
  17934.          expression. 
  17935.  
  17936.  R2083   You specified a non-numeric frame style. 
  17937.  
  17938.          Explanation:  You coded a field using a string token. 
  17939.  
  17940.          Recovery:  Replace the string by a defined numeric constant or 
  17941.          expression. 
  17942.  
  17943.  R2084   You specified a non-numeric list box style. 
  17944.  
  17945.          Explanation:  You coded a field using a string token. 
  17946.  
  17947.          Recovery:  Replace the string by a defined numeric constant or 
  17948.          expression. 
  17949.  
  17950.  R2085   You specified a non-numeric static style. 
  17951.  
  17952.          Explanation:  You coded a field using a string token. 
  17953.  
  17954.          Recovery:  Replace the string by a defined numeric constant or 
  17955.          expression. 
  17956.  
  17957.  R2086   You specified a non-numeric window style. 
  17958.  
  17959.          Explanation:  You coded a field using a string token. 
  17960.  
  17961.          Recovery:  Replace the string by a defined numeric constant or 
  17962.          expression. 
  17963.  
  17964.  R2087   You specified a non-numeric control id. 
  17965.  
  17966.          Explanation:  You coded a field using a string token. 
  17967.  
  17968.          Recovery:  Replace the string by a defined numeric constant or 
  17969.          expression. 
  17970.  
  17971.  R2088   You specified a non-numeric resource id. 
  17972.  
  17973.          Explanation:  You coded a field using a string token. 
  17974.  
  17975.          Recovery:  Replace the string by a defined numeric constant or 
  17976.          expression. 
  17977.  
  17978.  R2089   You specified a non-numeric frame control flag. 
  17979.  
  17980.          Explanation:  You coded a field using a string token. 
  17981.  
  17982.          Recovery:  Replace the string by a defined numeric constant or 
  17983.          expression. 
  17984.  
  17985.  R2090   You specified an incorrect window class. 
  17986.  
  17987.          Explanation:  You coded a window class field using an unknown string 
  17988.          or number. 
  17989.  
  17990.          Recovery:  Use a correct value for the window class. 
  17991.  
  17992.  R2091   You specified an incorrect code page. 
  17993.  
  17994.          Explanation:  You coded a code page field using an unknown number. 
  17995.  
  17996.          Recovery:  Use a value from the table of code pages and country codes 
  17997.          in "COUNTRYCODE" in the OS/2 Warp Control Program Programming Guide 
  17998.          and Reference. 
  17999.  
  18000.  R2092   RC is using code page codepage. 
  18001.  
  18002.          Explanation:  You coded a code page field that is not defined.  The 
  18003.          compiler chose codepage as the code page value. 
  18004.  
  18005.          Recovery:  Use a value from the table of code pages and country codes 
  18006.          in "COUNTRYCODE" in the OS/2 Warp Control Program Programming Guide 
  18007.          and Reference. 
  18008.  
  18009.  R2093   You specified an incorrect memory or load option. 
  18010.  
  18011.          Explanation:  You used an incorrect memory or load option. 
  18012.  
  18013.          Recovery:  Valid memory options are FIXED, MOVEABLE, and DISCARDABLE. 
  18014.          Valid load options are PRELOAD and LOADONCALL. 
  18015.  
  18016.  R2094   You specified a non-numeric menu item style. 
  18017.  
  18018.          Explanation:  You used an incorrect menu item style. 
  18019.  
  18020.          Recovery:  Use a style as documented under MENUITEM Statement. 
  18021.  
  18022.  R2096   The value of the height must be from 0 to 65535. 
  18023.  
  18024.          Explanation:  You used an incorrect token in a numeric field. 
  18025.  
  18026.          Recovery:  Confirm that each macro you used has a definition.  You 
  18027.          might have omitted a field from a list of parameters separated by 
  18028.          commas. 
  18029.  
  18030.  R2097   You specified a non-numeric height. 
  18031.  
  18032.          Explanation:  You used an incorrect token in a numeric field. 
  18033.  
  18034.          Recovery:  Confirm that each macro you used has a definition.  You 
  18035.          might have omitted a field from a list of parameters separated by 
  18036.          commas. 
  18037.  
  18038.  R2098   The value of width must be from 0 to 65535. 
  18039.  
  18040.          Explanation:  You used an incorrect token in a numeric field. 
  18041.  
  18042.          Recovery:  Confirm that each macro you used has a definition.  You 
  18043.          might have omitted a field from a list of parameters separated by 
  18044.          commas. 
  18045.  
  18046.  R2099   You specified a non-numeric width. 
  18047.  
  18048.          Explanation:  You used an incorrect token in a numeric field. 
  18049.  
  18050.          Recovery:  Confirm that each macro you used has a definition.  You 
  18051.          might have omitted a field from a list of parameters separated by 
  18052.          commas. 
  18053.  
  18054.  R2100   The value of X Coordinate must be from -32768 to 32767. 
  18055.  
  18056.          Explanation:  You used an incorrect token in a numeric field. 
  18057.  
  18058.          Recovery:  Confirm that each macro you used has a definition.  You 
  18059.          might have omitted a field from a list of parameters separated by 
  18060.          commas. 
  18061.  
  18062.  R2101   You specified a non-numeric X Coordinate. 
  18063.  
  18064.          Explanation:  You used an incorrect token in a numeric field. 
  18065.  
  18066.          Recovery:  Confirm that each macro you used has a definition.  You 
  18067.          might have omitted a field from a list of parameters separated by 
  18068.          commas. 
  18069.  
  18070.  R2102   The value of Y Coordinate must be from -32768 to 32767. 
  18071.  
  18072.          Explanation:  You used an incorrect token in a numeric field. 
  18073.  
  18074.          Recovery:  Confirm that each macro you used has a definition.  You 
  18075.          might have omitted a field from a list of parameters separated by 
  18076.          commas. 
  18077.  
  18078.  R2103   You specified a non-numeric Y Coordinate. 
  18079.  
  18080.          Explanation:  You used an incorrect token in a numeric field. 
  18081.  
  18082.          Recovery:  Confirm that each macro you used has a definition.  You 
  18083.          might have omitted a field from a list of parameters separated by 
  18084.          commas. 
  18085.  
  18086.  R2106   A left parenthesis is incorrect or missing. 
  18087.  
  18088.          Explanation:  You used a numeric expression which lacked balanced 
  18089.          parentheses. 
  18090.  
  18091.          Recovery:  Correct the parentheses in the expression. 
  18092.  
  18093.  R2108   The value of a custom-resource type must be from 1 to 65535. 
  18094.  
  18095.          Explanation:  A RESOURCE statement contained a type field which 
  18096.          evaluated to a number outside the legal range. 
  18097.  
  18098.          Recovery:  Use a value from 1 to 65535 as a resource type. 
  18099.  
  18100.  R2109   You specified an incorrect Assocname in ASSOCTABLE. 
  18101.  
  18102.          Explanation:  An ASSOCTABLE statement contained an incorrect field as 
  18103.          indicated. 
  18104.  
  18105.          Recovery:  Use a legal value for the field.  The syntax rules appear 
  18106.          under ASSOCTABLE Statement. 
  18107.  
  18108.  R2110   You specified an incorrect File-match-string in ASSOCTABLE. 
  18109.  
  18110.          Explanation:  An ASSOCTABLE statement contained an incorrect field as 
  18111.          indicated. 
  18112.  
  18113.          Recovery:  Use a legal value for the field.  The syntax rules appear 
  18114.          under ASSOCTABLE Statement. 
  18115.  
  18116.  R2111   You specified an incorrect ea-flag in ASSOCTABLE. 
  18117.  
  18118.          Explanation:  An ASSOCTABLE statement contained an incorrect field as 
  18119.          indicated. 
  18120.  
  18121.          Recovery:  Use a legal value for the field.  The syntax rules appear 
  18122.          under ASSOCTABLE Statement. 
  18123.  
  18124.  R2112   An iconfile parameter is missing from the ASSOCTABLE. 
  18125.  
  18126.          Explanation:  An ASSOCTABLE statement contained an incorrect field as 
  18127.          indicated. 
  18128.  
  18129.          Recovery:  Use a legal value for the field.  The syntax rules appear 
  18130.          under ASSOCTABLE Statement. 
  18131.  
  18132.  R2113   You specified an incorrect parameter in SUBITEMSIZE. 
  18133.  
  18134.          Explanation:  A SUBITEMSIZE statement contained an incorrect value as 
  18135.          indicated. 
  18136.  
  18137.          Recovery:  Use a legal value for the field.  The syntax rules appear 
  18138.          under SUBITEMSIZE Statement. 
  18139.  
  18140.  R2114   The size value in SUBITEMSIZE must be 2 or greater. 
  18141.  
  18142.          Explanation:  A SUBITEMSIZE statement contained an incorrect value as 
  18143.          indicated. 
  18144.  
  18145.          Recovery:  Use a legal value for the field.  The syntax rules appear 
  18146.          under SUBITEMSIZE Statement. 
  18147.  
  18148.  R2115   A font file has an incorrect kern pair identifier or non-zero 
  18149.          usKerningPairs. 
  18150.  
  18151.          Explanation:  A FONT or RESOURCE statement referred to a font file 
  18152.          which has an incorrect binary format. 
  18153.  
  18154.          Recovery:  Correct the kerning information table in the referenced 
  18155.          font file. 
  18156.  
  18157.  R2116   A font file has an incorrect additional metrics identifier or font 
  18158.          signature. 
  18159.  
  18160.          Explanation:  A FONT statement referred to a file containing incorrect 
  18161.          data as indicated. 
  18162.  
  18163.          Recovery:  Use a properly-formatted font file. 
  18164.  
  18165.  R2117   You specified an incorrect data type in RCDATA. 
  18166.  
  18167.          Explanation:  An RCDATA statement contained an incorrect numeric or 
  18168.          string data item. 
  18169.  
  18170.          Recovery:  Correct the syntax of the item.  The syntax rules appear 
  18171.          under RCDATA Statement. 
  18172.  
  18173.  R2118   You specified an incorrect data type in RESOURCE. 
  18174.  
  18175.          Explanation:  RESOURCE statement contained an incorrect numeric or 
  18176.          string data item. 
  18177.  
  18178.          Recovery:  Correct the syntax of the item.  The syntax rules appear 
  18179.          under RESOURCE Statement. 
  18180.  
  18181.  R2119   You specified an incorrect text string or ordinal. 
  18182.  
  18183.          Explanation:  A statement contained an incorrect numeric or string 
  18184.          data item. 
  18185.  
  18186.          Recovery:  Correct the syntax of the item. 
  18187.  
  18188.  R2120   The value of an ordinal must be from 0 to 65535. 
  18189.  
  18190.          Explanation:  A statement contained an incorrect numeric or string 
  18191.          data item. 
  18192.  
  18193.          Recovery:  Correct the syntax of the item. 
  18194.  
  18195.  R2121   A logical OR cannot follow another logical OR. 
  18196.  
  18197.          Explanation:  A statement contained an incorrect expression with 
  18198.          logical operators. 
  18199.  
  18200.          Recovery:  Correct the syntax of the expression. 
  18201.  
  18202.  R2122   An integer value must follow the not operator. 
  18203.  
  18204.          Explanation:  A statement contained an incorrect expression with 
  18205.          logical operators. 
  18206.  
  18207.          Recovery:  Correct the syntax of the expression. 
  18208.  
  18209.  R2123   RC found an incorrect character in an Expression. 
  18210.  
  18211.          Explanation:  A statement contained an expression with incorrect 
  18212.          characters. 
  18213.  
  18214.          Recovery:  Correct the syntax of the expression. 
  18215.  
  18216.  R2124   An ordinal value must be preceded by a #. 
  18217.  
  18218.          Explanation:  A MENUITEM statement with style MIS_BITMAP accepts in 
  18219.          its text field a quoted value of a previously-defined bitmap, in the 
  18220.          form "#n", where n is the bitmap id. You coded this field in an 
  18221.          incorrect format as indicated in the message. 
  18222.  
  18223.          Recovery:  Correct the syntax of the text field. 
  18224.  
  18225.  R2125   You must specify an ordinal value from 0 to 65535 after a '#'. 
  18226.  
  18227.          Explanation:  A MENUITEM statement with style MIS_BITMAP accepts in 
  18228.          its text field a quoted value of a previously-defined bitmap, in the 
  18229.          form "#n", where n is the bitmap id. You coded this field in an 
  18230.          incorrect format as indicated in the message. 
  18231.  
  18232.          Recovery:  Correct the syntax of the text field. 
  18233.  
  18234.  R2126   You specified an incorrect text parameter. 
  18235.  
  18236.          Explanation:  A statement contained a text field with an incorrect 
  18237.          string. 
  18238.  
  18239.          Recovery:  Correct the syntax of the field. 
  18240.  
  18241.  R2127   You specified a non-numeric parameter. 
  18242.  
  18243.          Explanation:  A statement contained a numeric field that did not 
  18244.          evaluate to a number. 
  18245.  
  18246.          Recovery:  Correct the syntax of the field. 
  18247.  
  18248.  R2128   The Resource ID must be a value from 1 to 65535 (unsigned). 
  18249.  
  18250.          Explanation:  A statement contained a resource ID field that did not 
  18251.          evaluate to a number in the expected range. 
  18252.  
  18253.          Recovery:  Correct the value of the id field. 
  18254.  
  18255.  R2129   The Resource ID must be a value from 0 to 65535 (unsigned) or -32768 
  18256.          to 32767 (signed). 
  18257.  
  18258.          Explanation:  A statement contained a resource ID field that did not 
  18259.          evaluate to a number in the expected range. 
  18260.  
  18261.          Recovery:  Correct the value of the id field. 
  18262.  
  18263.  R2130   The Resource ID must not be negative. 
  18264.  
  18265.          Explanation:  A statement contained a resource ID field that did not 
  18266.          evaluate to a number in the expected range. 
  18267.  
  18268.          Recovery:  Correct the value of the id field. 
  18269.  
  18270.  R2131   The Resource ID must not be 0. 
  18271.  
  18272.          Explanation:  A statement contained a resource ID field that did not 
  18273.          evaluate to a number in the expected range. 
  18274.  
  18275.          Recovery:  Correct the value of the id field. 
  18276.  
  18277.  R2132   The Control ID must be a value from 0 to 65535 (unsigned) or -32768 to 
  18278.          32767 (signed). 
  18279.  
  18280.          Explanation:  A statement contained a resource ID field that did not 
  18281.          evaluate to a number in the expected range. 
  18282.  
  18283.          Recovery:  Correct the value of the id field. 
  18284.  
  18285.  R2134   Only one top level window is allowed. 
  18286.  
  18287.          Explanation:  A WINDOWTEMPLATE or DLGTEMPLATE statement contained more 
  18288.          than one WINDOW or DIALOG. 
  18289.  
  18290.          Recovery:  Use only one window per template. 
  18291.  
  18292.  R2135   A Template statement is empty.  You must specify a top level window. 
  18293.  
  18294.          Explanation:  A WINDOWTEMPLATE or DLGTEMPLATE statement contained no 
  18295.          WINDOW or DIALOG. 
  18296.  
  18297.          Recovery:  Use exactly one window per template. 
  18298.  
  18299.  R2136   RC found a duplicate string id. 
  18300.  
  18301.          Explanation:  A STRINGTABLE statement contained a duplicate 
  18302.          identifier. 
  18303.  
  18304.          Recovery:  Use unique string ids. 
  18305.  
  18306.  R2137   RC found a duplicate message id. 
  18307.  
  18308.          Explanation:  A MESSAGETABLE statement contained a duplicate 
  18309.          identifier. 
  18310.  
  18311.          Recovery:  Use unique and message ids. 
  18312.  
  18313.  R2138   A key-value character code in double quotation marks is a missing 
  18314.          parameter. 
  18315.  
  18316.          Explanation:  An ACCELTABLE statement contained a key-value field in 
  18317.          an incorrect format as indicated by the message. 
  18318.  
  18319.          Recovery:  Correct the format or value of the field. The syntax rules 
  18320.          appear under ACCELTABLE Statement. 
  18321.  
  18322.  R2139   Parameter key-value has more than the allowed characters. 
  18323.  
  18324.          Explanation:  An ACCELTABLE statement contained a key-value field in 
  18325.          an incorrect format as indicated by the message. 
  18326.  
  18327.          Recovery:  Correct the format or value of the field. The syntax rules 
  18328.          appear under ACCELTABLE Statement. 
  18329.  
  18330.  R2140   Parameter key-value with control (^) is out of the valid range (^A - 
  18331.          ^Z). 
  18332.  
  18333.          Explanation:  An ACCELTABLE statement contained a key-value field in 
  18334.          an incorrect format as indicated by the message. 
  18335.  
  18336.          Recovery:  Correct the format or value of the field. The syntax rules 
  18337.          appear under ACCELTABLE Statement. 
  18338.  
  18339.  R2141   Parameter key-value must be in the range (0 - 255). 
  18340.  
  18341.          Explanation:  An ACCELTABLE statement contained a key-value field in 
  18342.          an incorrect format as indicated by the message. 
  18343.  
  18344.          Recovery:  Correct the format or value of the field. The syntax rules 
  18345.          appear under ACCELTABLE Statement. 
  18346.  
  18347.  R2142   Parameter key-value must be string or numeric. 
  18348.  
  18349.          Explanation:  An ACCELTABLE statement contained a key-value field in 
  18350.          an incorrect format as indicated by the message. 
  18351.  
  18352.          Recovery:  Correct the format or value of the field. The syntax rules 
  18353.          appear under ACCELTABLE Statement. 
  18354.  
  18355.  R2143   Parameter command must be numeric. 
  18356.  
  18357.          Explanation:  An ACCELTABLE statement contained a command field in an 
  18358.          incorrect format as indicated by the message. 
  18359.  
  18360.          Recovery:  Correct the format or value of the field. The syntax rules 
  18361.          appear under ACCELTABLE Statement. 
  18362.  
  18363.  R2144   Parameter command must be a value from 0 to 65535. 
  18364.  
  18365.          Explanation:  An ACCELTABLE statement contained a command field in an 
  18366.          incorrect format as indicated by the message. 
  18367.  
  18368.          Recovery:  Correct the format or value of the field. The syntax rules 
  18369.          appear under ACCELTABLE Statement. 
  18370.  
  18371.  R2145   Parameter accel-option is incorrect. 
  18372.  
  18373.          Explanation:  An ACCELTABLE statement contained a accel-option field 
  18374.          in an incorrect format (or missing) as indicated by the message. 
  18375.  
  18376.          Recovery:  Supply the correct value of the field.  The syntax rules 
  18377.          appear under ACCELTABLE Statement. 
  18378.  
  18379.  R2146   Accel-option (CHAR, SCANCODE, or VIRTUALKEY) is a missing parameter. 
  18380.  
  18381.          Explanation:  An ACCELTABLE statement contained a accel-option field 
  18382.          in an incorrect format (or missing) as indicated by the message. 
  18383.  
  18384.          Recovery:  Supply the correct value of the field.  The syntax rules 
  18385.          appear under ACCELTABLE Statement. 
  18386.  
  18387.  R2147   The accelerator table is empty. 
  18388.  
  18389.          Explanation:  An ACCELTABLE statement contained an empty data block. 
  18390.  
  18391.          Recovery:  Supply the missing table.  The syntax rules appear under 
  18392.          ACCELTABLE Statement. 
  18393.  
  18394.  R2149   You specified a non-numeric menu item attribute. 
  18395.  
  18396.          Explanation:  A MENUITEM statement contained an undefined attribute. 
  18397.  
  18398.          Recovery:  Supply the missing attribute value.  The syntax rules 
  18399.          appear under MENUITEM Statement. 
  18400.  
  18401.  R2150   The menu is empty. 
  18402.  
  18403.          Explanation:  A MENU statement contained an empty data block. 
  18404.  
  18405.          Recovery:  Supply the missing menu items.  The syntax rules appear 
  18406.          under MENU Statement. 
  18407.  
  18408.  R2151   You specified an incorrect presentation parameter. 
  18409.  
  18410.          Explanation:  A control statement contained an incorrect presentation 
  18411.          parameter. 
  18412.  
  18413.          Recovery:  Correct syntax of the value or parameter. 
  18414.  
  18415.  R2152   You specified an incorrect control data value. 
  18416.  
  18417.          Explanation:  A control statement contained an incorrect control data 
  18418.          value. 
  18419.  
  18420.          Recovery:  Correct syntax of the value or parameter. 
  18421.  
  18422.  R2153   DLGINCLUDE statement must have a filename to include. 
  18423.  
  18424.          Explanation:  You specified a DLGINCLUDE statement but omitted the 
  18425.          file name. 
  18426.  
  18427.          Recovery:  Code the name of the file on the DLGINCLUDE statement. 
  18428.  
  18429.  R2154   Data in a STRINGTABLE statement BEGIN/END body is missing or 
  18430.          incorrect. 
  18431.  
  18432.          Explanation:  You specified incorrect string data inside the data 
  18433.          block of a STRINGTABLE statement, as indicated by the message. 
  18434.  
  18435.          Recovery:  Correct the syntax of the string.  The syntax rules appear 
  18436.          under STRINGTABLE Statement. 
  18437.  
  18438.  R2155   Data in a MESSAGETABLE statement BEGIN/END body is missing or 
  18439.          incorrect. 
  18440.  
  18441.          Explanation:  You specified incorrect string data inside the data 
  18442.          block of a MESSAGETABLE statement, as indicated by the message. 
  18443.  
  18444.          Recovery:  Correct the syntax of the string.  The syntax rules appear 
  18445.          under MESSAGETABLE Statement. 
  18446.  
  18447.  R2156   An Assocname is missing in ASSOCTABLE. 
  18448.  
  18449.          Explanation:  The field indicated by the message is missing from an 
  18450.          ASSOCTABLE statement. 
  18451.  
  18452.          Recovery:  Supply the missing field. 
  18453.  
  18454.  R2157   A file-match-string is missing in ASSOCTABLE. 
  18455.  
  18456.          Explanation:  The field indicated by the message is missing from an 
  18457.          ASSOCTABLE statement. 
  18458.  
  18459.          Recovery:  Supply the missing field. 
  18460.  
  18461.  R2158   Data in an RCDATA statement BEGIN/END body is missing or incorrect. 
  18462.  
  18463.          Explanation:  Data items are wrong or omitted in the statement 
  18464.          indicated by the message. 
  18465.  
  18466.          Recovery:  Supply the correct data. 
  18467.  
  18468.  R2159   Data in RESOURCE statement BEGIN/END body is missing or incorrect. 
  18469.  
  18470.          Explanation:  Data items are wrong or omitted in the statement 
  18471.          indicated by the message. 
  18472.  
  18473.          Recovery:  Supply the correct data. 
  18474.  
  18475.  R2160   Data in ASSOCTABLE statement BEGIN/END body is missing or incorrect. 
  18476.  
  18477.          Explanation:  Data items are wrong or omitted in the statement 
  18478.          indicated by the message. 
  18479.  
  18480.          Recovery:  Supply the correct data. 
  18481.  
  18482.  R2161   RC expected a SUBITEMSIZE statement before the parameter. 
  18483.  
  18484.          Explanation:  A HELPSUBTABLE statement was missing the SUBITEMSIZE 
  18485.          statement required when a size other than the default is to be used. 
  18486.  
  18487.          Recovery:  Supply the missing SUBITEMSIZE statement. The syntax rules 
  18488.          appear under HELPSUBTABLE Statement 
  18489.  
  18490.  R2162   Elements in HELPSUBITEM do not match with SUBITEMSIZE statement. 
  18491.  
  18492.          Explanation:  The structure of a HELPSUBITEM statement did not conform 
  18493.          to the size specified in the SUBITEMSIZE statement. 
  18494.  
  18495.          Recovery:  Correct the format of the HELPSUBITEM statement.  The 
  18496.          syntax rules appear under HELPSUBITEM Statement 
  18497.  
  18498.  2163    The Resource Type value overflowed when creating the LR formatted 
  18499.          record. 
  18500.  
  18501.          Explanation:  A Resource Type cannot exceed 65535. 
  18502.  
  18503.          Recovery:  Specify a value between 0 and 65535. 
  18504.  
  18505.  2164    The Resource ID value overflowed when creating the LR formatted 
  18506.          record. 
  18507.  
  18508.          Explanation:  A Resource ID cannot exceed 65535. 
  18509.  
  18510.          Recovery:  Specify a value between 0 and 65535. 
  18511.  
  18512.  2165    The Resource Flag value overflowed when creating the LR formatted 
  18513.          record. 
  18514.  
  18515.          Explanation:  A Resource Flag cannot exceed 65535. 
  18516.  
  18517.          Recovery:  Specify a value between 0 and 65535. 
  18518.  
  18519.  2166    The Resource Size value overflowed when creating the LR formatted 
  18520.          record. 
  18521.  
  18522.          Explanation:  A Resource Size cannot exceed 65535. 
  18523.  
  18524.          Recovery:  Specify a value between 0 and 65535. 
  18525.  
  18526.  R2167   Data in MSGDATA statement BEGIN/END body is missing or incorrect. 
  18527.  
  18528.          Explanation:  The MSGDATA body is missing or incorrect. 
  18529.  
  18530.          Recovery:  Correct the syntax or add the missing data. 
  18531.  
  18532.  R2168   A suffix letter is missing after the message id. 
  18533.  
  18534.          Explanation:  You left out a required suffix letter after the message 
  18535.          id. 
  18536.  
  18537.          Recovery:  Correct your input and try again. 
  18538.  
  18539.  R2169   A colon (:) is missing after the suffix letter. 
  18540.  
  18541.          Explanation:  You left out a required colon (:) after the suffix 
  18542.          letter. 
  18543.  
  18544.          Recovery:  Correct your input and try again. 
  18545.  
  18546.  R2170   A MSGDATA statement has a duplicate message ID. 
  18547.  
  18548.          Explanation:  You cannot use the same message ID on more than one 
  18549.          MSGDATA statements. 
  18550.  
  18551.          Recovery:  Use a unique message ID. 
  18552.  
  18553.  R2171   The segment name contains extended characters, which must be less than 
  18554.          or equal to ASCII 127. 
  18555.  
  18556.          Explanation:  Segment names must use ASCII characters with a value 
  18557.          less than or equal to 127. 
  18558.  
  18559.          Recovery: 
  18560.  
  18561.  R2172   A Resource statement must have either a file specification or a 
  18562.          BEGIN/END block. 
  18563.  
  18564.          Explanation:  You coded a RESOURCE statement without a file 
  18565.          specification or a data block, or you provided both a file 
  18566.          specification and a data block.  Exactly one of these forms must be 
  18567.          provided. 
  18568.  
  18569.          Recovery:  Correct the format of the RESOURCE statement.  The syntax 
  18570.          rules appear under 
  18571.  
  18572.  R2173   The source file ended with a continuation sequence. 
  18573.  
  18574.          Explanation:  Your input script file ended prematurely before the end 
  18575.          of a continued line. 
  18576.  
  18577.          Recovery:  Supply the completion of the incomplete line. 
  18578.  
  18579.  R2174   The source file ended while a comment was active. 
  18580.  
  18581.          Explanation:  Your input script file ended prematurely before the end 
  18582.          of a comment. 
  18583.  
  18584.          Recovery:  Supply the completion of the incomplete comment. 
  18585.  
  18586.  R2175   You specified an unknown preprocessor directive. 
  18587.  
  18588.          Explanation:  You used a # directive which is unknown to the 
  18589.          preprocessor. 
  18590.  
  18591.          Recovery:  Remove the unknown directive. 
  18592.  
  18593.  R2176   A header filename was missing from an #include directive. 
  18594.  
  18595.          Explanation:  You used an #include directive without naming a file to 
  18596.          include. 
  18597.  
  18598.          Recovery:  Supply the missing file name on the directive. 
  18599.  
  18600.  R2177   A header filename contained only whitespace. 
  18601.  
  18602.          Explanation:  The file referenced by an #include directive contained 
  18603.          no tokens to parse. 
  18604.  
  18605.          Recovery:  Supply the missing contents of the file, or remove the 
  18606.          directive. 
  18607.  
  18608.  R2178   RC could not find the header filename on an #include directive. 
  18609.  
  18610.          Explanation:  The file referenced by an #include directive could not 
  18611.          be located by the preprocessor. 
  18612.  
  18613.          Recovery:  Check the spelling of the file and path, and confirm that 
  18614.          the file exists. 
  18615.  
  18616.  R2179   #undef appeared with unknown macro name. 
  18617.  
  18618.          Explanation:  The macro referenced by an #undef directive was not 
  18619.          known to the preprocessor. 
  18620.  
  18621.          Recovery:  Check the spelling of the macro, or remove the #undef 
  18622.          directive. 
  18623.  
  18624.  R2180   You specified an include filename recursively. 
  18625.  
  18626.          Explanation:  The name on an #include directive has already been 
  18627.          included at a higher level. 
  18628.  
  18629.          Recovery:  Remove the nested #include directive. 
  18630.  
  18631.  R2181   A source filename contains no characters. 
  18632.  
  18633.          Explanation:  The input file was empty. 
  18634.  
  18635.          Recovery:  Check the spelling of the name, and confirm that the proper 
  18636.          data are contained in it. 
  18637.  
  18638.  R2182   RC is ignoring a typecast in an expression. 
  18639.  
  18640.          Explanation:  You used a type cast in an expression in a preprocessor 
  18641.          directive.  The cast will be ignored. 
  18642.  
  18643.          Recovery:  Remove the type cast. 
  18644.  
  18645.  R2183   RC found the characters /* inside a C style comment. 
  18646.  
  18647.          Explanation:  The input file had a C comment which contained the start 
  18648.          of another comment. 
  18649.  
  18650.          Recovery:  Do not use the characters /* inside a C comment; comments 
  18651.          cannot be nested. 
  18652.  
  18653.  R2184   You defined a macro with the name of a resource statement. 
  18654.  
  18655.          Explanation:  You used the name of a resource statement (for example, 
  18656.          search file for more e.g.'s.  DLGTEMPLATE) as the name of a macro to 
  18657.          be defined.  The names of resource statements are reserved words. 
  18658.  
  18659.          Recovery:  Use another name for the macro. 
  18660.  
  18661.  R2185   The given directive is missing its end-of-line character. 
  18662.  
  18663.          Explanation:  You used a preprocessor directive (such as #define) but 
  18664.          started another statement later on the same line.  A preprocessor 
  18665.          directive needs to be contained on one line. 
  18666.  
  18667.          Recovery:  Use the preprocessor directive alone on a line. 
  18668.  
  18669.  R2186   You specified conflicting or redundant memory or load options. 
  18670.  
  18671.          Explanation:  Memory or load options you specified conflict or are 
  18672.          redundant. 
  18673.  
  18674.          Recovery:  Specify non-conflicting or non-redundant memory or load 
  18675.          options. 
  18676.  
  18677.  
  18678. ΓòÉΓòÉΓòÉ 24.4.3. Warning Messages: 3000 - 3999 ΓòÉΓòÉΓòÉ
  18679.  
  18680.  R3006   name is an incorrect macro name. 
  18681.  
  18682.          Explanation:  The macro name name does not conform to the rules for 
  18683.          composing macro names as defined in C Language Reference.  The 
  18684.          Resource Compiler will ignore the definition. 
  18685.  
  18686.          Recovery:  Choose a legal name for the macro. 
  18687.  
  18688.  R3007   Country code code is incorrect for this code page. RC is using 
  18689.          previously-defined lead bytes. 
  18690.  
  18691.          Explanation:  The country code is not defined for use with the 
  18692.          specified code page. 
  18693.  
  18694.          Recovery:  Confirm that the country code and code page are correct. 
  18695.          For a list of supported code pages, refer to the "COUNTRYCODE" section 
  18696.          of the OS/2 Warp Control Programming Guide and Reference. 
  18697.  
  18698.  R3008   Code page cp is incorrect.  RC is using the default code page. 
  18699.  
  18700.          Explanation: The code page number cp is unknown, and the compiler will 
  18701.          use a default code page. 
  18702.  
  18703.          Recovery:  Select a supported code page.  For a list of supported code 
  18704.          pages, refer to the "COUNTRYCODE" section of the OS/2 Warp Control 
  18705.          Program Programming Guide and Reference. 
  18706.  
  18707.  R3009   RC is ignoring excess operand text. 
  18708.  
  18709.          Explanation:  The given text was an incorrect operand on the command 
  18710.          line. 
  18711.  
  18712.          Recovery:  Correct or remove the undefined text. 
  18713.  
  18714.  R3011   RC is ignoring the compression option for the NE format executable 
  18715.          file filename. 
  18716.  
  18717.          Explanation:  The compression option you specified is not valid for 
  18718.          this operation. 
  18719.  
  18720.          Recovery:  No action is necessary. 
  18721.  
  18722.  R3012   RC is ignoring the pack option for the NE executable file filename. 
  18723.  
  18724.          Explanation:  The pack option you specified is not a valid for this 
  18725.          operation. 
  18726.  
  18727.          Recovery:  No action is necessary. 
  18728.  
  18729.  R3013   RC found no resource item in this file. 
  18730.  
  18731.          Explanation:  The input binary resource file did not contain any 
  18732.          resources. 
  18733.  
  18734.          Recovery:  Confirm that the input file has the expected resource data. 
  18735.  
  18736.  R3014   RC found a resource type equal to zero. 
  18737.  
  18738.          Explanation:  The input binary resource file contained a resource with 
  18739.          type zero, which is incorrect. 
  18740.  
  18741.          Recovery:  Correct the resource definition in the input file. 
  18742.  
  18743.  R3015   RC is using ordinal number as a text field. 
  18744.  
  18745.          Explanation:  The specified number is the value of a text field on a 
  18746.          resource statement. 
  18747.  
  18748.          Recovery:  No action is necessary. 
  18749.  
  18750.  R3016   RC is truncating this text to 255 characters: 
  18751.  
  18752.          Explanation:  The text that follows this message appeared in a field 
  18753.          limited to 255 characters.  The compiler will use only the text shown. 
  18754.  
  18755.          Recovery:  No action is necessary. 
  18756.  
  18757.  R3017   RC is ignoring an extra comma in a CTLDATA statement. 
  18758.  
  18759.          Explanation:  You used a CTLDATA statement with a list of data values 
  18760.          separated by commas.  The compiler will ignore the extra commas it 
  18761.          found in the list. 
  18762.  
  18763.          Recovery:  No action is necessary. 
  18764.  
  18765.  R3018   RC is truncating to a 16-bit value. 
  18766.  
  18767.          Explanation:  You used a long integer value in a data field which is 
  18768.          limited to 64K.  The compiler will use only the least significant 16 
  18769.          bits of the number. 
  18770.  
  18771.          Recovery:  No action is necessary. 
  18772.  
  18773.  R3019   All text after percent followed by 0 characters will be truncated to 
  18774.          the end of the line. 
  18775.  
  18776.          Explanation:  You enter a text string with a percent 0 (%0) in it. 
  18777.  
  18778.          Recovery:  No action is necessary. 
  18779.  
  18780.  R3020   Parameters VIRTUALKEY, SCANMODE, and CHAR are mutually exclusive. 
  18781.  
  18782.          Explanation:  You used parameters in an ACCELTABLE statement which 
  18783.          cannot be used together. 
  18784.  
  18785.          Recovery:  The rules for coding the accelerator-options field are 
  18786.          given under 
  18787.  
  18788.  R3021   Parameters SYSCOMMAND, and HELP are mutually exclusive. 
  18789.  
  18790.          Explanation:  You used parameters in an ACCELTABLE statement which 
  18791.          cannot be used together. 
  18792.  
  18793.          Recovery:  The rules for coding the accelerator-options field are 
  18794.          given under  ACCELTABLE Statement. 
  18795.  
  18796.  R3022   Numeric value in RCDATA statement has been overflowed. 
  18797.  
  18798.          Explanation:  While evaluating numeric data in a block, the compiler 
  18799.          computed a 32-bit number using a 16-bit data field. This conversion 
  18800.          changed the value of the number. 
  18801.  
  18802.          Recovery:  No action is necessary. 
  18803.  
  18804.  R3023   Numeric value in RCDATA statement has been modified. 
  18805.  
  18806.          Explanation:  While evaluating numeric data in a block, the compiler 
  18807.          computed a 32-bit number using a 16-bit data field. This conversion 
  18808.          changed the value of the number. 
  18809.  
  18810.          Recovery:  No action is necessary. 
  18811.  
  18812.  R3024   Numeric value in RESOURCE statement has been overflowed. 
  18813.  
  18814.          Explanation:  While evaluating numeric data in a block, the compiler 
  18815.          computed a 32-bit number using a 16-bit data field. This conversion 
  18816.          changed the value of the number. 
  18817.  
  18818.          Recovery:  No action is necessary. 
  18819.  
  18820.  R3025   Numeric value in RESOURCE statement has been modified. 
  18821.  
  18822.          Explanation:  While evaluating numeric data in a block, the compiler 
  18823.          computed a 32-bit number using a 16-bit data field. This conversion 
  18824.          changed the value of the number. 
  18825.  
  18826.          Recovery:  No action is necessary. 
  18827.  
  18828.  R3026   MENUITEM expected a style of MIS_SUBMENU. 
  18829.  
  18830.          Explanation:  A MENUITEM statement having a submenu will use menuitem 
  18831.          style MIS_SUBMENU by default. 
  18832.  
  18833.          Recovery:  Specify MIS_SUBMENU in MENUITEM statement. 
  18834.  
  18835.  R3027   RC ignored text specified for SEPARATOR. 
  18836.  
  18837.          Explanation:  A MENUITEM SEPARATOR statement had extra text at the 
  18838.          end.  Resource Compiler will ignore the extra text. 
  18839.  
  18840.          Recovery:  Remove the extra text. 
  18841.  
  18842.  R3028   RC is ignoring a Message text line with no message ID. 
  18843.  
  18844.          Explanation:  A MESSAGETABLE statement without an ID has been ignored 
  18845.          by the Resource Compiler. 
  18846.  
  18847.          Recovery:  To use the message, provide an identifier for it. 
  18848.  
  18849.  R3030   RC encountered a duplicate resource type and id. RC is ignoring 
  18850.          resource ID id of type type. 
  18851.  
  18852.          Explanation:  A resource of type type and id id has the same type and 
  18853.          id as another resource.  The Resource Compiler used the first and 
  18854.          ignored the other. 
  18855.  
  18856.          Recovery:  Provide a unique identifier for the duplicated resource. 
  18857.  
  18858.  R3031   The ID value to be used is value. 
  18859.  
  18860.          Explanation:  The preprocessor will use value as the resource 
  18861.          identifier. 
  18862.  
  18863.          Recovery:  No action is necessary. 
  18864.  
  18865.  R3032   A parameter value is out of range. Valid signed range is -32768 to 
  18866.          32767, unsigned range is 0 to 65535. 
  18867.  
  18868.          Explanation:  You supplied a value for a 16-bit parameter which was 
  18869.          too large to be contained in the field. 
  18870.  
  18871.          Recovery:  Resource Compiler has converted the value to the 16-bit 
  18872.          number given. 
  18873.  
  18874.  R3033   RC is using the first DEFAULTICON statement, which you specified more 
  18875.          than once. 
  18876.  
  18877.          Explanation:  You supplied more than one DEFAULTICON statement for 
  18878.          your resources.  Resource Compiler will ignore all DEFAULTICON 
  18879.          statements after the first one. 
  18880.  
  18881.          Recovery:  Remove the extra DEFAULTICON statements. 
  18882.  
  18883.  R3034   'text' is not supported in this version of RC.  It is being ignored. 
  18884.  
  18885.          Explanation:  The given text is not supported by this version of the 
  18886.          Resource Compiler.  It is ignored. 
  18887.  
  18888.          Recovery:  Remove the text. 
  18889.  
  18890.  R3035   The DBCS lead-byte option is no longer supported in RC. 
  18891.  
  18892.          Explanation:  The command line and DBCS environment variable options 
  18893.          will be ignored. 
  18894.  
  18895.          Recovery: Use an installed code page. 
  18896.  
  18897.  
  18898. ΓòÉΓòÉΓòÉ 24.4.4. Informational Messages: 4000 - 4999 ΓòÉΓòÉΓòÉ
  18899.  
  18900.  R4012   Writing resources to OS/2 v2.0 Linear .EXE file 
  18901.  
  18902.          Explanation:  The Resource Compiler is binding resources to an 
  18903.          executable file. 
  18904.  
  18905.          Recovery:  No action is necessary. 
  18906.  
  18907.  R4013   RC is copying numpages pages:  numobjects objects containing numpages 
  18908.          page(s). 
  18909.  
  18910.          Explanation:  The program is performing the action you requested. 
  18911.  
  18912.          Recovery:  No action is necessary. 
  18913.  
  18914.  R4014   RC is writing nnnn resource object(s). 
  18915.  
  18916.          Explanation:  The program is performing the action you requested. 
  18917.  
  18918.          Recovery:  No action is necessary. 
  18919.  
  18920.  R4015   RC is writing numbytes bytes in numpages page(s). 
  18921.  
  18922.          Explanation:  The program is performing the action you requested. 
  18923.  
  18924.          Recovery:  No action is necessary. 
  18925.  
  18926.  R4019   Writing Extended Attributes: 
  18927.  
  18928.          Explanation:  The Resource Compiler program is writing the extended 
  18929.          attributes. 
  18930.  
  18931.          Recovery:  No action is necessary. 
  18932.  
  18933.  R4020   Writing Extended Attributes: Checksum. 
  18934.  
  18935.          Explanation:  The Resource Compiler program is writing the extended 
  18936.          attributes: Checksum. 
  18937.  
  18938.          Recovery:  No action is necessary. 
  18939.  
  18940.  R4023   RC successfully created a preprocessed output file. 
  18941.  
  18942.          Explanation:  The preprocessor wrote its output file to disk. 
  18943.  
  18944.          Recovery:  No action is necessary. 
  18945.  
  18946.  
  18947. ΓòÉΓòÉΓòÉ 25. Notices ΓòÉΓòÉΓòÉ
  18948.  
  18949. October 1997 
  18950.  
  18951. The following paragraph does not apply to the United Kingdom or any country 
  18952. where such provisions are inconsistent with local law:  INTERNATIONAL BUSINESS 
  18953. MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY 
  18954. KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
  18955. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states 
  18956. do not allow disclaimer of express or implied warranties in certain 
  18957. transactions, therefore, this statement may not apply to you. 
  18958.  
  18959. This publication could include technical inaccuracies or typographical errors. 
  18960. Changes are periodically made to the information herein; these changes will be 
  18961. incorporated in new editions of the publication. IBM may make improvements 
  18962. and/or changes in the product(s) and/or the program(s) described in this 
  18963. publication at any time. 
  18964.  
  18965. This publication was developed for products and services offered in the United 
  18966. States of America.  IBM may not offer the products, services, or features 
  18967. discussed in this document in other countries, and the information is subject 
  18968. to change without notice. Consult your local IBM representative for information 
  18969. on the products, services, and features available in your area. 
  18970.  
  18971. Requests for technical information about IBM products should be made to your 
  18972. IBM reseller or IBM marketing representative. 
  18973.  
  18974.  
  18975. ΓòÉΓòÉΓòÉ 25.1. Copyright Notices ΓòÉΓòÉΓòÉ
  18976.  
  18977. COPYRIGHT LICENSE: This publication contains printed sample application 
  18978. programs in source language, which illustrate OS/2 programming techniques. You 
  18979. may copy, modify, and distribute these sample programs in any form without 
  18980. payment to IBM, for the purposes of developing, using, marketing or 
  18981. distributing application programs conforming to the OS/2 application 
  18982. programming interface. 
  18983.  
  18984. Each copy of any portion of these sample programs or any derivative work, which 
  18985. is distributed to others, must include a copyright notice as follows: "(C) 
  18986. (your company name) (year).  All rights reserved." 
  18987.  
  18988. (C)Copyright International Business Machines Corporation 1994, 1997. All rights 
  18989. reserved. 
  18990. Note to U.S. Government Users - Documentation related to restricted rights - 
  18991. Use, duplication or disclosure is subject to restrictions set forth in GSA ADP 
  18992. Schedule Contract with IBM Corp. 
  18993.  
  18994.  
  18995. ΓòÉΓòÉΓòÉ 25.2. Disclaimers ΓòÉΓòÉΓòÉ
  18996.  
  18997. References in this publication to IBM products, programs, or services do not 
  18998. imply that IBM intends to make these available in all countries in which IBM 
  18999. operates. Any reference to an IBM product, program, or service is not intended 
  19000. to state or imply that only that IBM product, program, or service may be used. 
  19001. Subject to IBM's valid intellectual property or other legally protectable 
  19002. rights, any functionally equivalent product, program, or service may be used 
  19003. instead of the IBM product, program, or service. The evaluation and 
  19004. verification of operation in conjunction with other products, except those 
  19005. expressly designated by IBM, are the responsibility of the user. 
  19006.  
  19007. IBM may have patents or pending patent applications covering subject matter in 
  19008. this document. The furnishing of this document does not give you any license to 
  19009. these patents. You can send license inquiries, in writing, to: 
  19010.  
  19011.       IBM Director of Licensing 
  19012.       IBM Corporation 
  19013.       500 Columbus Avenue 
  19014.       Thornwood, NY  10594 
  19015.       U.S.A. 
  19016.  
  19017.  Asia-Pacific users can inquire, in writing, to the IBM Director of 
  19018.  Intellectual Property and Licensing, IBM World Trade Asia Corporation, 2-31 
  19019.  Roppongi 3-chome, Minato-ku, Tokyo 106, Japan. 
  19020.  
  19021.  Licensees of this program who wish to have information about it for the 
  19022.  purpose of enabling: (i) the exchange of information between independently 
  19023.  created programs and other programs (including this one) and (ii) the mutual 
  19024.  use of the information which has been exchanged, should contact IBM 
  19025.  Corporation, Department LZKS, 11400 Burnet Road, Austin, TX 78758 U.S.A.  Such 
  19026.  information may be available, subject to appropriate terms and conditions, 
  19027.  including in some cases, payment of a fee. 
  19028.  
  19029.  
  19030. ΓòÉΓòÉΓòÉ 25.3. Trademarks ΓòÉΓòÉΓòÉ
  19031.  
  19032. The following terms are trademarks of the IBM Corporation in the United States 
  19033. or other countries or both: 
  19034.  
  19035.  AIX                           PowerPC 
  19036.  C Set ++                      Presentation Manager 
  19037.  Common User Access            SAA 
  19038.  CUA                           System Application Architecture 
  19039.  IBM                           WIN-OS/2 
  19040.  Operating System/2            Workplace Shell 
  19041.  OS/2                          XGA 
  19042.  Personal System/2 
  19043.  
  19044.  The following terms are trademarks of other companies: 
  19045.  
  19046.  CL, CL386                Pentium 
  19047.  Intel                    X/Open Company Ltd. 
  19048.  Intel Corporation        /X/Opend 
  19049.  MASM, MASM386 
  19050.  
  19051.  PC Direct is a trademark of Ziff Communications Company and is used by IBM 
  19052.  Corporation under license. 
  19053.  
  19054.  UNIX is a registered trademark in the United States and other countries 
  19055.  licensed exclusively through X/Open Company Limited. 
  19056.  
  19057.  C-bus is a trademark of Corollary, Inc. 
  19058.  
  19059.  Microsoft, Windows, and the Windows 95 logo are trademarks or registered 
  19060.  trademarks of Microsoft Corporation. 
  19061.  
  19062.  Java and HotJava are trademarks of Sun Microsystems, Inc. 
  19063.  
  19064.  Other company, product, and service names may be trademarks or service marks 
  19065.  of others. 
  19066.  
  19067.  
  19068. ΓòÉΓòÉΓòÉ 26. Glossary ΓòÉΓòÉΓòÉ
  19069.  
  19070. This glossary defines many of the terms used in this book. It includes terms 
  19071. and definitions from the IBM Dictionary of Computing, as well as terms specific 
  19072. to the OS/2 operating system and the Presentation Manager. It is not a complete 
  19073. glossary for the entire OS/2 operating system; nor is it a complete dictionary 
  19074. of computer terms. 
  19075.  
  19076. Other primary sources for these definitions are: 
  19077.  
  19078.      The American National Standard Dictionary for Information Systems, ANSI 
  19079.       X3.172-1990, copyrighted 1990 by the American National Standards 
  19080.       Institute, 11 West 42nd Street, New York, New York 10036. These 
  19081.       definitions are identified by the symbol (A) after the definition. 
  19082.  
  19083.      The Information Technology Vocabulary, developed by Subcommittee 1, Joint 
  19084.       Technical Committee 1, of the International Organization for 
  19085.       Standardization and the International Electrotechnical Commission 
  19086.       (ISO/IEC JTC1/SC1). Definitions of published parts of this vocabulary are 
  19087.       identified by the symbol (I) after the definition; definitions taken from 
  19088.       draft international standards, committee drafts, and working papers being 
  19089.       developed by ISO/IEC JTC1/SC1 are identified by the symbol (T) after the 
  19090.       definition, indicating that final agreement has not yet been reached 
  19091.       among the participating National Bodies of SC1. 
  19092.  
  19093.  
  19094. ΓòÉΓòÉΓòÉ 26.1. Glossary Listing ΓòÉΓòÉΓòÉ
  19095.  
  19096. Select a starting letter of glossary terms: 
  19097.  
  19098.  A    N 
  19099.  B    O 
  19100.  C    P 
  19101.  D    Q 
  19102.  E    R 
  19103.  F    S 
  19104.  G    T 
  19105.  H    U 
  19106.  I    V 
  19107.  J    W 
  19108.  K    X 
  19109.  L    Y 
  19110.  M    Z 
  19111.  
  19112.  
  19113. ΓòÉΓòÉΓòÉ <hidden> Glossary - A ΓòÉΓòÉΓòÉ
  19114.  
  19115.  accelerator  - In SAA Common User Access architecture, a key or combination of 
  19116.    keys that invokes an application-defined function. 
  19117.  
  19118.  accelerator table  - A table used to define which key strokes are treated as 
  19119.    accelerators and the commands they are translated into. 
  19120.  
  19121.  access mode  - The manner in which an application gains access to a file it 
  19122.    has opened. Examples of access modes are read-only, write-only, and 
  19123.    read/write. 
  19124.  
  19125.  access permission  - All access rights that a user has regarding an object. (I)
  19126.  
  19127.  action  - One of a set of defined tasks that a computer performs. Users 
  19128.    request the application to perform an action in several ways, such as typing 
  19129.    a command, pressing a function key, or selecting the action name from an 
  19130.    action bar or menu. 
  19131.  
  19132.  action bar  - In SAA Common User Access architecture, the area at the top of a 
  19133.    window that contains choices that give a user access to actions available in 
  19134.    that window. 
  19135.  
  19136.  action point  - The current position on the screen at which the pointer is 
  19137.    pointing. Contrast with hot spot and input focus. 
  19138.  
  19139.  active program  - A program currently running on the computer.  An active 
  19140.    program can be interactive (running and receiving input from the user) or 
  19141.    noninteractive (running but not receiving input from the user). See also 
  19142.    interactive program and noninteractive program. 
  19143.  
  19144.  active window  - The window with which the user is currently interacting. 
  19145.  
  19146.  address space  - (1) The range of addresses available to a program. (A)  (2) 
  19147.    The area of virtual storage available for a particular job. 
  19148.  
  19149.  alphanumeric video output  - Output to the logical video buffer when the video 
  19150.    adapter is in text mode and the logical video buffer is addressed by an 
  19151.    application as a rectangular array of character cells. 
  19152.  
  19153.  American National Standard Code for Information Interchange  - The standard 
  19154.    code, using a coded character set consisting of 7-bit coded characters (8 
  19155.    bits including parity check), that is used for information interchange among 
  19156.    data processing systems, data communication systems, and associated 
  19157.    equipment. The ASCII set consists of control characters and graphic 
  19158.    characters. (A) 
  19159.  
  19160.    Note:  IBM has defined an extension to ASCII code (characters 128-255). 
  19161.  
  19162.  anchor  - A window procedure that handles Presentation Manager message 
  19163.    conversions between an icon procedure and an application. 
  19164.  
  19165.  anchor block  - An area of Presentation-Manager-internal resources to 
  19166.    allocated process or thread that calls WinInitialize. 
  19167.  
  19168.  anchor point  - A point in a window used by a program designer or by a window 
  19169.    manager to position a subsequently appearing window. 
  19170.  
  19171.  ANSI  - American National Standards Institute. 
  19172.  
  19173.  APA  - All points addressable. 
  19174.  
  19175.  API  - Application programming interface. 
  19176.  
  19177.  application  - A collection of software components used to perform specific 
  19178.    types of work on a computer; for example, a payroll application, an airline 
  19179.    reservation application, a network application. 
  19180.  
  19181.  application object  - In SAA Advanced Common User Access architecture, a form 
  19182.    that an application provides for a user; for example, a spreadsheet form. 
  19183.    Contrast with user object. 
  19184.  
  19185.  application programming interface (API)  - A functional interface supplied by 
  19186.    the operating system or by a separately orderable licensed program that 
  19187.    allows an application program written in a high-level language to use 
  19188.    specific data or functions of the operating system or the licensed program. 
  19189.  
  19190.  application-modal  - Pertaining to a message box or dialog box for which 
  19191.    processing must be completed before further interaction with any other 
  19192.    window owned by the same application may take place. 
  19193.  
  19194.  area  - In computer graphics, a filled shape such as a solid rectangle. 
  19195.  
  19196.  ASCII  - American National Standard Code for Information Interchange. 
  19197.  
  19198.  ASCIIZ  - A string of ASCII characters that is terminated with a byte 
  19199.    containing the value 0. 
  19200.  
  19201.  aspect ratio  - In computer graphics, the width-to-height ratio of an area, 
  19202.    symbol, or shape. 
  19203.  
  19204.  asynchronous (ASYNC)  - (1) Pertaining to two or more processes that do not 
  19205.    depend upon the occurrence of specific events such as common timing 
  19206.    signals. (T)  (2) Without regular time relationship;  unexpected or 
  19207.    unpredictable with respect to the execution of program instructions. See 
  19208.    also synchronous. 
  19209.  
  19210.  atom  - A constant that represents a string. As soon as a string has been 
  19211.    defined as an atom, the atom can be used in place of the string to save 
  19212.    space. Strings are associated with their respective atoms in an atom table. 
  19213.    See also integer atom. 
  19214.  
  19215.  atom table  - A table used to relate atoms with the strings that they 
  19216.    represent. Also in the table is the mechanism by which the presence of a 
  19217.    string can be checked. 
  19218.  
  19219.  atomic operation  - An operation that completes its work on an object before 
  19220.    another operation can be performed on the same object. 
  19221.  
  19222.  attribute  - A characteristic or property that can be controlled, usually to 
  19223.    obtain a required appearance;  for example, the color of a line. See also 
  19224.    graphics attributes and segment attributes. 
  19225.  
  19226.  automatic link  - In Information Presentation Facility (IPF), a link that 
  19227.    begins a chain reaction at the primary window. When the user selects the 
  19228.    primary window, an automatic link is activated to display secondary windows. 
  19229.  
  19230.  AVIO  - Advanced Video Input/Output. 
  19231.  
  19232.  
  19233. ΓòÉΓòÉΓòÉ <hidden> Glossary - B ΓòÉΓòÉΓòÉ
  19234.  
  19235.  B╨Æzier curve  - (1) A mathematical technique of specifying smooth continuous 
  19236.    lines and surfaces, which require a starting point and a finishing point 
  19237.    with several intermediate points that influence or control the path of the 
  19238.    linking curve. Named after Dr. P. B╨Æzier. (2) (D of C) In the AIX Graphics 
  19239.    Library, a cubic spline approximation to a set of four control points that 
  19240.    passes through the first and fourth control points and that has a continuous 
  19241.    slope where two spline segments meet. Named after Dr. P. B╨Æzier. 
  19242.  
  19243.  background  - (1) In multiprogramming, the conditions under which low-priority 
  19244.    programs are executed. Contrast with foreground. (2) An active session that 
  19245.    is not currently displayed on the screen. 
  19246.  
  19247.  background color  - The color in which the background of a graphic primitive 
  19248.    is drawn. 
  19249.  
  19250.  background mix  - An attribute that determines how the background of a graphic 
  19251.    primitive is combined with the existing color of the graphics presentation 
  19252.    space. Contrast with mix. 
  19253.  
  19254.  background program  - In multiprogramming, a program that executes with a low 
  19255.    priority. Contrast with foreground program. 
  19256.  
  19257.  bit map  - A representation in memory of the data displayed on an APA device, 
  19258.    usually the screen. 
  19259.  
  19260.  block  - (1) A string of data elements recorded or transmitted as a unit. The 
  19261.    elements may be characters, words, or logical records. (T)  (2) To record 
  19262.    data in a block. (3) A collection of contiguous records recorded as a unit. 
  19263.    Blocks are separated by interblock gaps and each block may contain one or 
  19264.    more records. (A)
  19265.  
  19266.  block device  - A storage device that performs I/O operations on blocks of 
  19267.    data called sectors. Data on block devices can be randomly accessed. Block 
  19268.    devices are designated by a drive letter (for example, C:). 
  19269.  
  19270.  blocking mode  - A condition set by an application that determines when its 
  19271.    threads might block. For example, an application might set the Pipemode 
  19272.    parameter for the DosCreateNPipe function so that its threads perform I/O 
  19273.    operations to the named pipe block when no data is available. 
  19274.  
  19275.  border  - A visual indication (for example, a separator line or a background 
  19276.    color) of the boundaries of a window. 
  19277.  
  19278.  boundary determination  - An operation used to compute the size of the 
  19279.    smallest rectangle that encloses a graphics object on the screen. 
  19280.  
  19281.  breakpoint  - (1) A point in a computer program where execution may be halted. 
  19282.    A breakpoint is usually at the beginning of an instruction where halts, 
  19283.    caused by external intervention, are convenient for resuming 
  19284.    execution. (T)  (2) A place in a program, specified by a command or a 
  19285.    condition, where the system halts execution and gives control to the 
  19286.    workstation user or to a specified program. 
  19287.  
  19288.  broken pipe  - When all of the handles that access one end of a pipe have been 
  19289.    closed. 
  19290.  
  19291.  bucket  - One or more fields in which the result of an operation is kept. 
  19292.  
  19293.  buffer  - (1) A portion of storage used to hold input or output data 
  19294.    temporarily. (2) To allocate and schedule the use of buffers. (A)
  19295.  
  19296.  button  - A mechanism used to request or initiate an action. See also barrel 
  19297.    buttons, bezel buttons, mouse button, push button, and radio button. 
  19298.  
  19299.  byte pipe  - Pipes that handle data as byte streams. All unnamed pipes are 
  19300.    byte pipes. Named pipes can be byte pipes or message pipes. See byte stream. 
  19301.  
  19302.  byte stream  - Data that consists of an unbroken stream of bytes. 
  19303.  
  19304.  
  19305. ΓòÉΓòÉΓòÉ <hidden> Glossary - C ΓòÉΓòÉΓòÉ
  19306.  
  19307.  cache  - A high-speed buffer storage that contains frequently accessed 
  19308.    instructions and data; it is used to reduce access time. 
  19309.  
  19310.  cached micro presentation space  - A presentation space from a 
  19311.    Presentation-Manager-owned store of micro presentation spaces. It can be 
  19312.    used for drawing to a window only, and must be returned to the store when 
  19313.    the task is complete. 
  19314.  
  19315.  CAD  - Computer-Aided Design. 
  19316.  
  19317.  call  - (1) The action of bringing a computer program, a routine, or a 
  19318.    subroutine into effect, usually by specifying the entry conditions and 
  19319.    jumping to an entry point. (I)  (A)  (2) To transfer control to a procedure, 
  19320.    program, routine, or subroutine. 
  19321.  
  19322.  calling sequence  - A sequence of instructions together with any associated 
  19323.    data necessary to execute a call. (T)
  19324.  
  19325.  Cancel  - An action that removes the current window or menu without processing 
  19326.    it, and returns the previous window. 
  19327.  
  19328.  cascaded menu  - In the OS/2 operating system, a menu that appears when the 
  19329.    arrow to the right of a cascading choice is selected. It contains a set of 
  19330.    choices that are related to the cascading choice. Cascaded menus are used to 
  19331.    reduce the length of a menu. See also cascading choice. 
  19332.  
  19333.  cascading choice  - In SAA Common User Access architecture, a choice in a menu 
  19334.    that, when selected, produces a cascaded menu containing other choices.  An 
  19335.    arrow () appears to the right of the cascading choice. 
  19336.  
  19337.  CASE statement  - In PM programming, provides the body of a window procedure. 
  19338.    There is usually one CASE statement for each message type supported by an 
  19339.    application. 
  19340.  
  19341.  CGA  - Color graphics adapter. 
  19342.  
  19343.  chained list  - A list in which the data elements may be dispersed but in 
  19344.    which each data element contains information for locating the 
  19345.    next. (T)Synonymous with linked list. 
  19346.  
  19347.  character  - A letter, digit, or other symbol. 
  19348.  
  19349.  character box  - In computer graphics, the boundary that defines, in world 
  19350.    coordinates, the horizontal and vertical space occupied by a single 
  19351.    character from a character set. See also character mode. Contrast with 
  19352.    character cell. 
  19353.  
  19354.  character cell  - The physical, rectangular space in which any single 
  19355.    character is displayed on a screen or printer device. Position is addressed 
  19356.    by row and column coordinates. Contrast with character box. 
  19357.  
  19358.  character code  - The means of addressing a character in a character set, 
  19359.    sometimes called code point. 
  19360.  
  19361.  character device  - A device that performs I/O operations on one character at 
  19362.    a time. Because character devices view data as a stream of bytes, 
  19363.    character-device data cannot be randomly accessed. Character devices include 
  19364.    the keyboard, mouse, and printer, and are referred to by name. 
  19365.  
  19366.  character mode  - A mode that, in conjunction with the font type, determines 
  19367.    the extent to which graphics characters are affected by the character box, 
  19368.    shear, and angle attributes. 
  19369.  
  19370.  character set  - (1) An ordered set of unique representations called 
  19371.    characters; for example, the 26 letters of English alphabet, Boolean 0 and 
  19372.    1, the set of symbols in the Morse code, and the 128 ASCII 
  19373.    characters. (A)  (2) All the valid characters for a programming language or 
  19374.    for a computer system. (3) A group of characters used for a specific reason; 
  19375.    for example, the set of characters a printer can print. 
  19376.  
  19377.  check box  - In SAA Advanced Common User Access architecture, a square box 
  19378.    with associated text that represents a choice. When a user selects a choice, 
  19379.    an X appears in the check box to indicate that the choice is in effect. The 
  19380.    user can clear the check box by selecting the choice again. Contrast with 
  19381.    radio button. 
  19382.  
  19383.  check mark  -  (1) (D of C) In SAA Advanced Common User Access architecture, a 
  19384.    symbol that shows that a choice is currently in effect. (2) The symbol that 
  19385.    is used to indicate a selected item on a pull-down menu. 
  19386.  
  19387.  child process  - In the OS/2 operating system, a process started by another 
  19388.    process, which is called the parent process. Contrast with parent process. 
  19389.  
  19390.  child window  - A window that appears within the border of its parent window 
  19391.    (either a primary window or another child window). When the parent window is 
  19392.    resized, moved, or destroyed, the child window also is resized, moved, or 
  19393.    destroyed; however, the child window can be moved or resized independently 
  19394.    from the parent window, within the boundaries of the parent window. Contrast 
  19395.    with parent window. 
  19396.  
  19397.  choice  - (1) An option that can be selected. The choice can be presented as 
  19398.    text, as a symbol (number or letter), or as an icon (a pictorial symbol). 
  19399.    (2) (D of C) In SAA Common User Access architecture, an item that a user can 
  19400.    select. 
  19401.  
  19402.  chord  - (1) To press more than one button on a pointing device while the 
  19403.    pointer is within the limits that the user has specified for the operating 
  19404.    environment. (2) (D of C) In graphics, a short line segment whose end points 
  19405.    lie on a circle. Chords are a means for producing a circular image from 
  19406.    straight lines. The higher the number of chords per circle, the smoother the 
  19407.    circular image. 
  19408.  
  19409.  class  - A way of categorizing objects based on their behavior and shape. A 
  19410.    class is, in effect, a definition of a generic object. In SOM, a class is a 
  19411.    special kind of object that can manufacture other objects that all have a 
  19412.    common shape and exhibit similar behavior (more precisely, all of the 
  19413.    objects manufactured by a class have the same memory layout and share a 
  19414.    common set of methods). New classes can be defined in terms of existing 
  19415.    classes through a technique known as inheritance. 
  19416.  
  19417.  class method  - A class method of class <X> is a method provided by the 
  19418.    metaclass of class <X>. Class methods are executed without requiring any 
  19419.    instances of class <X> to exist, and are frequently used to create 
  19420.    instances. In System Object Model, an action that can be performed on a 
  19421.    class object. 
  19422.  
  19423.  class object  - In System Object Model, the run-time implementation of a 
  19424.    class. 
  19425.  
  19426.  class style  - The set of properties that apply to every window in a window 
  19427.    class. 
  19428.  
  19429.  client  - (1) A functional unit that receives shared services from a 
  19430.    server. (T)  (2) A user, as in a client process that uses a named pipe or 
  19431.    queue that is created and owned by a server process. 
  19432.  
  19433.  client area  - The part of the window, inside the border, that is below the 
  19434.    menu bar. It is the user's work space, where a user types information and 
  19435.    selects choices from selection fields.  In primary windows, it is where an 
  19436.    application programmer presents the objects that a user works on. 
  19437.  
  19438.  client program  - An application that creates and manipulates instances of 
  19439.    classes. 
  19440.  
  19441.  client window  - The window in which the application displays output and 
  19442.    receives input. This window is located inside the frame window, under the 
  19443.    window title bar and any menu bar, and within any scroll bars. 
  19444.  
  19445.  clip limits  - The area of the paper that can be reached by a printer or 
  19446.    plotter. 
  19447.  
  19448.  clipboard  - In SAA Common User Access architecture, an area of computer 
  19449.    memory, or storage, that temporarily holds data. Data in the clipboard is 
  19450.    available to other applications. 
  19451.  
  19452.  clipping  - In computer graphics, removing those parts of a display image that 
  19453.    lie outside a given boundary. (I)  (A)
  19454.  
  19455.  clipping area  - The area in which the window can paint. 
  19456.  
  19457.  clipping path  - A clipping boundary in world-coordinate space. 
  19458.  
  19459.  clock tick  - The minimum unit of time that the system tracks. If the system 
  19460.    timer currently counts at a rate of X Hz, the system tracks the time every 
  19461.    1/X of a second. Also known as time tick. 
  19462.  
  19463.  CLOCK$  - Character-device name reserved for the system clock. 
  19464.  
  19465.  code page  - An assignment of graphic characters and control-function meanings 
  19466.    to all code points. 
  19467.  
  19468.  code point  - (1) Synonym for character code. (2) (D of C) A 1-byte code 
  19469.    representing one of 256 potential characters. 
  19470.  
  19471.  code segment  - An executable section of programming code within a load 
  19472.    module. 
  19473.  
  19474.  color dithering  - See dithering. 
  19475.  
  19476.  color graphics adapter (CGA)  - An adapter that simultaneously provides four 
  19477.    colors and is supported by all IBM Personal Computer and Personal System/2 
  19478.    models. 
  19479.  
  19480.  command  - The name and parameters associated with an action that a program 
  19481.    can perform. 
  19482.  
  19483.  command area  - An area composed of a command field prompt and a command entry 
  19484.    field. 
  19485.  
  19486.  command entry field  - An entry field in which users type commands. 
  19487.  
  19488.  command line  - On a display screen, a display line, sometimes at the bottom 
  19489.    of the screen, in which only commands can be entered. 
  19490.  
  19491.  command mode  - A state of a system or device in which the user can enter 
  19492.    commands. 
  19493.  
  19494.  command prompt  - A field prompt showing the location of the command entry 
  19495.    field in a panel. 
  19496.  
  19497.  Common Programming Interface (CPI)  - Definitions of those application 
  19498.    development languages and services that have, or are intended to have, 
  19499.    implementations on and a high degree of commonality across the SAA 
  19500.    environments. One of the three SAA architectural areas. See also Common User 
  19501.    Access architecture. 
  19502.  
  19503.  Common User Access (CUA) architecture  -  Guidelines for the dialog between a 
  19504.    human and a workstation or terminal. One of the three SAA architectural 
  19505.    areas. See also Common Programming Interface. 
  19506.  
  19507.  compile  - To translate a program written in a higher-level programming 
  19508.    language into a machine language program. 
  19509.  
  19510.  composite window  - A window composed of other windows (such as a frame 
  19511.    window, frame-control windows, and a client window) that are kept together 
  19512.    as a unit and that interact with each other. 
  19513.  
  19514.  computer-aided design (CAD)  - The use of a computer to design or change a 
  19515.    product, tool, or machine, such as using a computer for drafting or 
  19516.    illustrating. 
  19517.  
  19518.  COM1, COM2, COM3  - Character-device names reserved for serial ports 1 through 
  19519.    3. 
  19520.  
  19521.  CON  - Character-device name reserved for the console keyboard and screen. 
  19522.  
  19523.  conditional cascaded menu  - A pull-down menu associated with a menu item that 
  19524.    has a cascade mini-push button beside it in an object's pop-up menu. The 
  19525.    conditional cascaded menu is displayed when the user selects the mini-push 
  19526.    button. 
  19527.  
  19528.  container  - In SAA Common User Access architecture, an object that holds 
  19529.    other objects. A folder is an example of a container object. See also folder 
  19530.    and object. 
  19531.  
  19532.  contextual help  - In SAA Common User Access Architecture, help that gives 
  19533.    specific information about the item the cursor is on. The help is contextual 
  19534.    because it provides information about a specific item as it is currently 
  19535.    being used. Contrast with extended help. 
  19536.  
  19537.  contiguous  - Touching or joining at a common edge or boundary, for example, 
  19538.    an unbroken consecutive series of storage locations. 
  19539.  
  19540.  control  - In SAA Advanced Common User Access architecture, a component of the 
  19541.    user interface that allows a user to select choices or type information; for 
  19542.    example, a check box, an entry field, a radio button. 
  19543.  
  19544.  control area  - A storage area used by a computer program to hold control information. (I)  (A)
  19545.  
  19546.  Control Panel  - In the Presentation Manager, a program used to set up user 
  19547.    preferences that act globally across the system. 
  19548.  
  19549.  Control Program  - (1) The basic functions of the operating system, including 
  19550.    DOS emulation and the support for keyboard, mouse, and video input/output. 
  19551.    (2) A computer program designed to schedule and to supervise the execution 
  19552.    of programs of a computer system. (I)  (A)
  19553.  
  19554.  control window  - A window that is used as part of a composite window to 
  19555.    perform simple input and output tasks. Radio buttons and check boxes are 
  19556.    examples. 
  19557.  
  19558.  control word  - An instruction within a document that identifies its parts or 
  19559.    indicates how to format the document. 
  19560.  
  19561.  coordinate space  - A two-dimensional set of points used to generate output on 
  19562.    a video display of printer. 
  19563.  
  19564.  Copy  - A choice that places onto the clipboard, a copy of what the user has 
  19565.    selected. See also Cut and Paste. 
  19566.  
  19567.  correlation  - The action of determining which element or object within a 
  19568.    picture is at a given position on the display. This follows a pick 
  19569.    operation. 
  19570.  
  19571.  coverpage window  - A window in which the application's help information is 
  19572.    displayed. 
  19573.  
  19574.  CPI  - Common Programming Interface. 
  19575.  
  19576.  critical extended attribute  - An extended attribute that is necessary for the 
  19577.    correct operation of the system or a particular application. 
  19578.  
  19579.  critical section  - (1) In programming languages, a part of an asynchronous 
  19580.    procedure that cannot be executed simultaneously with a certain part of 
  19581.    another asynchronous procedure. (I)
  19582.  
  19583.    Note:  Part of the other asynchronous procedure also is a critical section. 
  19584.    (2) A section of code that is not reentrant; that is, code that can be 
  19585.    executed by only one thread at a time. 
  19586.  
  19587.  CUA architecture  - Common User Access architecture. 
  19588.  
  19589.  current position  - In computer graphics, the position, in user coordinates, 
  19590.    that becomes the starting point for the next graphics routine, if that 
  19591.    routine does not explicitly specify a starting point. 
  19592.  
  19593.  cursor  - A symbol displayed on the screen and associated with an input 
  19594.    device. The cursor indicates where input from the device will be placed. 
  19595.    Types of cursors include text cursors, graphics cursors, and selection 
  19596.    cursors. Contrast with pointer and input focus. 
  19597.  
  19598.  Cut  - In SAA Common User Access architecture, a choice that removes a 
  19599.    selected object, or a part of an object, to the clipboard, usually 
  19600.    compressing the space it occupied in a window. See also Copy and Paste. 
  19601.  
  19602.  
  19603. ΓòÉΓòÉΓòÉ <hidden> Glossary - D ΓòÉΓòÉΓòÉ
  19604.  
  19605.  daisy chain  - A method of device interconnection for determining interrupt 
  19606.    priority by connecting the interrupt sources serially. 
  19607.  
  19608.  data segment  - A nonexecutable section of a program module; that is, a 
  19609.    section of a program that contains data definitions. 
  19610.  
  19611.  data structure  - The syntactic structure of symbolic expressions and their 
  19612.    storage-allocation characteristics. (T)
  19613.  
  19614.  data transfer  - The movement of data from one object to another by way of the 
  19615.    clipboard or by direct manipulation. 
  19616.  
  19617.  DBCS  - Double-byte character set. 
  19618.  
  19619.  DDE  - Dynamic data exchange. 
  19620.  
  19621.  deadlock  - (1) Unresolved contention for the use of a resource. (2) An error 
  19622.    condition in which processing cannot continue because each of two elements 
  19623.    of the process is waiting for an action by, or a response from, the other. 
  19624.    (3) An impasse that occurs when multiple processes are waiting for the 
  19625.    availability of a resource that will not become available because it is 
  19626.    being held by another process that is in a similar wait state. 
  19627.  
  19628.  debug  - To detect, diagnose, and eliminate errors in programs. (T)
  19629.  
  19630.  decipoint  - In printing, one tenth of a point.  There are 72 points in an 
  19631.    inch. 
  19632.  
  19633.  default procedure  - A function provided by the Presentation Manager Interface 
  19634.    that may be used to process standard messages from dialogs or windows. 
  19635.  
  19636.  default value  - A value assumed when no value has been specified. Synonymous 
  19637.    with assumed value. For example, in the graphics programming interface, the 
  19638.    default line-type is 'solid'. 
  19639.  
  19640.  definition list  - A type of list that pairs a term and its description. 
  19641.  
  19642.  delta  - An application-defined threshold, or number of container items, from 
  19643.    either end of the list. 
  19644.  
  19645.  descendant  - See child process. 
  19646.  
  19647.  descriptive text  - Text used in addition to a field prompt to give more 
  19648.    information about a field. 
  19649.  
  19650.  Deselect all  - A choice that cancels the selection of all of the objects that 
  19651.    have been selected in that window. 
  19652.  
  19653.  Desktop Manager  - In the Presentation Manager, a window that displays a list 
  19654.    of groups of programs, each of which can be started or stopped. 
  19655.  
  19656.  desktop window  - The window, corresponding to the physical device, against 
  19657.    which all other types of windows are established. 
  19658.  
  19659.  detached process  - A background process that runs independent of the parent 
  19660.    process. 
  19661.  
  19662.  detent  - A point on a slider that represents an exact value to which a user 
  19663.    can move the slider arm. 
  19664.  
  19665.  device context  - A logical description of a data destination such as memory, 
  19666.    metafile, display, printer, or plotter. See also direct device context, 
  19667.    information device context, memory device context, metafile device context, 
  19668.    queued device context, and screen device context. 
  19669.  
  19670.  device driver  - A file that contains the code needed to attach and use a 
  19671.    device such as a display, printer, or plotter. 
  19672.  
  19673.  device space  - (1) Coordinate space in which graphics are assembled after all 
  19674.    GPI transformations have been applied. Device space is defined in 
  19675.    device-specific units. (2) ( D of C) In computer graphics, a space defined 
  19676.    by the complete set of addressable points of a display device. (A)
  19677.  
  19678.  dialog  - The interchange of information between a computer and its user 
  19679.    through a sequence of requests by the user and the presentation of responses 
  19680.    by the computer. 
  19681.  
  19682.  dialog box  - In SAA Advanced Common User Access architecture, a movable 
  19683.    window, fixed in size, containing controls that a user uses to provide 
  19684.    information required by an application so that it can continue to process a 
  19685.    user request. See also message box, primary window, secondary window. Also 
  19686.    known as a pop-up window. 
  19687.  
  19688.  Dialog Box Editor  - A WYSIWYG editor that creates dialog boxes for 
  19689.    communicating with the application user. 
  19690.  
  19691.  dialog item  - A component (for example, a menu or a button) of a dialog box. 
  19692.    Dialog items are also used when creating dialog templates. 
  19693.  
  19694.  dialog procedure  - A dialog window that is controlled by a window procedure. 
  19695.    It is responsible for responding to all messages sent to the dialog window. 
  19696.  
  19697.  dialog tag language  - A markup language used by the DTL compiler to create 
  19698.    dialog objects. 
  19699.  
  19700.  dialog template  - The definition of a dialog box, which contains details of 
  19701.    its position, appearance, and window ID, and the window ID of each of its 
  19702.    child windows. 
  19703.  
  19704.  direct device context  - A logical description of a data destination that is a 
  19705.    device other than the screen (for example, a printer or plotter), and where 
  19706.    the output is not to go through the spooler. Its purpose is to satisfy 
  19707.    queries. See also device context. 
  19708.  
  19709.  direct manipulation  - The user's ability to interact with an object by using 
  19710.    the mouse, typically by dragging an object around on the Desktop and 
  19711.    dropping it on other objects. 
  19712.  
  19713.  direct memory access (DMA)  - A technique for moving data directly between 
  19714.    main storage and peripheral equipment without requiring processing of the 
  19715.    data by the processing unit.(T)
  19716.  
  19717.  directory  - A type of file containing the names and controlling information 
  19718.    for other files or other directories. 
  19719.  
  19720.  display point  - Synonym for pel. 
  19721.  
  19722.  dithering  - (1) The process used in color displays whereby every other pel is 
  19723.    set to one color, and the intermediate pels are set to another. Together 
  19724.    they produce the effect of a third color at normal viewing distances. This 
  19725.    process can only be used on solid areas of color; it does not work, for 
  19726.    example, on narrow lines. (2) (D of C ) In computer graphics, a technique of 
  19727.    interleaving dark and light pixels so that the resulting image looks 
  19728.    smoothly shaded when viewed from a distance. 
  19729.  
  19730.  DMA  - Direct memory access. 
  19731.  
  19732.  DOS Protect Mode Interface (DPMI)  - An interface between protect mode and 
  19733.    real mode programs. 
  19734.  
  19735.  double-byte character set (DBCS)  - A set of characters in which each 
  19736.    character is represented by two bytes.  Languages such as Japanese, Chinese, 
  19737.    and Korean, which contain more characters than can be represented by 256 
  19738.    code points, require double-byte character sets. Since each character 
  19739.    requires two bytes, the entering, displaying, and printing of DBCS 
  19740.    characters requires hardware and software that can support DBCS. 
  19741.  
  19742.  doubleword  - A contiguous sequence of bits or characters that comprises two 
  19743.    computer words and is capable of being addressed as a unit. (A)
  19744.  
  19745.  DPMI  - DOS Protect Mode Interface. 
  19746.  
  19747.  drag  - In SAA Common User Access, to use a pointing device to move an object; 
  19748.    for example, clicking on a window border, and dragging it to make the window 
  19749.    larger. 
  19750.  
  19751.  dragging  - (1) In computer graphics, moving an object on the display screen 
  19752.    as if it were attached to the pointer. (2) (D of C) In computer graphics, 
  19753.    moving one or more segments on a display surface by translating. (I)  (A)
  19754.  
  19755.  drawing chain  - See segment chain. 
  19756.  
  19757.  drop  - To fix the position of an object that is being dragged, by releasing 
  19758.    the select button of the pointing device. See also drag. 
  19759.  
  19760.  DTL  - Dialog tag language. 
  19761.  
  19762.  dual-boot function  - A feature of the OS/2 operating system that allows the 
  19763.    user to start DOS from within the operating system, or an OS/2 session from 
  19764.    within DOS. 
  19765.  
  19766.  duplex  - Pertaining to communication in which data can be sent and received 
  19767.    at the same time. Synonymous with full duplex. 
  19768.  
  19769.  dynamic data exchange (DDE)  - A message protocol used to communicate between 
  19770.    applications that share data. The protocol uses shared memory as the means 
  19771.    of exchanging data between applications. 
  19772.  
  19773.  dynamic data formatting  - A formatting procedure that enables you to 
  19774.    incorporate text, bit maps or metafiles in an IPF window at execution time. 
  19775.  
  19776.  dynamic link library  - A collection of executable programming code and data 
  19777.    that is bound to an application at load time or run time, rather than during 
  19778.    linking. The programming code and data in a dynamic link library can be 
  19779.    shared by several applications simultaneously. 
  19780.  
  19781.  dynamic linking  - The process of resolving external references in a program 
  19782.    module at load time or run time rather than during linking. 
  19783.  
  19784.  dynamic segments  - Graphics segments drawn in exclusive-OR mix mode so that 
  19785.    they can be moved from one screen position to another without affecting the 
  19786.    rest of the displayed picture. 
  19787.  
  19788.  dynamic storage  - (1) A device that stores data in a manner that permits the 
  19789.    data to move or vary with time such that the specified data is not always 
  19790.    available for recovery. (A)  (2) A storage in which the cells require 
  19791.    repetitive application of control signals in order to retain stored data. 
  19792.    Such repetitive application of the control signals is called a refresh 
  19793.    operation. A dynamic storage may use static addressing or sensing 
  19794.    circuits. (A)  (3) See also static storage. 
  19795.  
  19796.  dynamic time slicing  - Varies the size of the time slice depending on system 
  19797.    load and paging activity. 
  19798.  
  19799.  dynamic-link module  - A module that is linked at load time or run time. 
  19800.  
  19801.  
  19802. ΓòÉΓòÉΓòÉ <hidden> Glossary - E ΓòÉΓòÉΓòÉ
  19803.  
  19804.  EBCDIC  - Extended binary-coded decimal interchange code. A coded character 
  19805.    set consisting of 8-bit coded characters (9 bits including parity check), 
  19806.    used for information interchange among data processing systems, data 
  19807.    communications systems, and associated equipment. 
  19808.  
  19809.  edge-triggered  - Pertaining to an event semaphore that is posted then reset 
  19810.    before a waiting thread gets a chance to run. The semaphore is considered to 
  19811.    be posted for the rest of that thread's waiting period; the thread does not 
  19812.    have to wait for the semaphore to be posted again. 
  19813.  
  19814.  EGA  - Extended graphics adapter. 
  19815.  
  19816.  element  - An entry in a graphics segment that comprises one or more graphics 
  19817.    orders and that is addressed by the element pointer. 
  19818.  
  19819.  EMS  - Expanded Memory Specification. 
  19820.  
  19821.  encapsulation  - Hiding an object's implementation, that is, its private, 
  19822.    internal data and methods. Private variables and methods are accessible only 
  19823.    to the object that contains them. 
  19824.  
  19825.  entry field  - In SAA Common User Access architecture, an area where a user 
  19826.    types information. Its boundaries are usually indicated. See also selection 
  19827.    field. 
  19828.  
  19829.  entry panel  - A defined panel type containing one or more entry fields and 
  19830.    protected information such as headings, prompts, and explanatory text. 
  19831.  
  19832.  entry-field control  - The component of a user interface that provides the 
  19833.    means by which the application receives data entered by the user in an entry 
  19834.    field. When it has the input focus, the entry field displays a flashing 
  19835.    pointer at the position where the next typed character will go. 
  19836.  
  19837.  environment segment  - The list of environment variables and their values for 
  19838.    a process. 
  19839.  
  19840.  environment strings  - ASCII text strings that define the value of environment 
  19841.    variables. 
  19842.  
  19843.  environment variables  - Variables that describe the execution environment of 
  19844.    a process. These variables are named by the operating system or by the 
  19845.    application. Environment variables named by the operating system are PATH, 
  19846.    DPATH, INCLUDE, INIT, LIB, PROMPT, and TEMP. The values of environment 
  19847.    variables are defined by the user in the CONFIG.SYS file, or by using the 
  19848.    SET command at the OS/2 command prompt. 
  19849.  
  19850.  error message  - An indication that an error has been detected. (A)
  19851.  
  19852.  event semaphore  - A semaphore that enables a thread to signal a waiting 
  19853.    thread or threads that an event has occurred or that a task has been 
  19854.    completed. The waiting threads can then perform an action that is dependent 
  19855.    on the completion of the signaled event. 
  19856.  
  19857.  exception  - An abnormal condition such as an I/O error encountered in 
  19858.    processing a data set or a file. 
  19859.  
  19860.  exclusive system semaphore  - A system semaphore that can be modified only by 
  19861.    threads within the same process. 
  19862.  
  19863.  executable file  - (1) A file that contains programs or commands that perform 
  19864.    operations or actions to be taken. (2) A collection of related data records 
  19865.    that execute programs. 
  19866.  
  19867.  exit  - To execute an instruction within a portion of a computer program in 
  19868.    order to terminate the execution of that portion. Such portions of computer 
  19869.    programs include loops, subroutines, modules, and so on. (T)  Repeated exit 
  19870.    requests return the user to the point from which all functions provided to 
  19871.    the system are accessible. Contrast with cancel. 
  19872.  
  19873.  expanded memory specification (EMS)  - Enables DOS applications to access 
  19874.    memory above the 1MB real mode addressing limit. 
  19875.  
  19876.  extended attribute  - An additional piece of information about a file object, 
  19877.    such as its data format or category. It consists of a name and a value. A 
  19878.    file object may have more than one extended attribute associated with it. 
  19879.  
  19880.  extended help  - In SAA Common User Access architecture, a help action that 
  19881.    provides information about the contents of the application window from which 
  19882.    a user requested help. Contrast with contextual help. 
  19883.  
  19884.  extended-choice selection  - A mode that allows the user to select more than 
  19885.    one item from a window. Not all windows allow extended choice selection. 
  19886.    Contrast with multiple-choice selection. 
  19887.  
  19888.  extent  - Continuous space on a disk or diskette that is occupied by or 
  19889.    reserved for a particular data set, data space, or file. 
  19890.  
  19891.  external link  - In Information Presentation Facility, a link that connects 
  19892.    external online document files. 
  19893.  
  19894.  
  19895. ΓòÉΓòÉΓòÉ <hidden> Glossary - F ΓòÉΓòÉΓòÉ
  19896.  
  19897.  family-mode application  - An application program that can run in the OS/2 
  19898.    environment and in the DOS environment; however, it cannot take advantage of 
  19899.    many of the OS/2-mode facilities, such as multitasking, interprocess 
  19900.    communication, and dynamic linking. 
  19901.  
  19902.  FAT  - File allocation table. 
  19903.  
  19904.  FEA  - Full extended attribute. 
  19905.  
  19906.  field-level help  - Information specific to the field on which the cursor is 
  19907.    positioned. This help function is "contextual" because it provides 
  19908.    information about a specific item as it is currently used; the information 
  19909.    is dependent upon the context within the work session. 
  19910.  
  19911.  FIFO  - First-in-first-out. (A)
  19912.  
  19913.  file  - A named set of records stored or processed as a unit. (T)
  19914.  
  19915.  file allocation table (FAT)  - In IBM personal computers, a table used by the 
  19916.    operating system to allocate space on a disk for a file, and to locate and 
  19917.    chain together parts of the file that may be scattered on different sectors 
  19918.    so that the file can be used in a random or sequential manner. 
  19919.  
  19920.  file attribute  - Any of the attributes that describe the characteristics of a 
  19921.    file. 
  19922.  
  19923.  File Manager  - In the Presentation Manager, a program that displays 
  19924.    directories and files, and allows various actions on them. 
  19925.  
  19926.  file specification  - The full identifier for a file, which includes its drive 
  19927.    designation, path, file name, and extension. 
  19928.  
  19929.  file system  - The combination of software and hardware that supports storing 
  19930.    information on a storage device. 
  19931.  
  19932.  file system driver (FSD)  - A program that manages file I\O and controls the 
  19933.    format of information on the storage media. 
  19934.  
  19935.  fillet  - A curve that is tangential to the end points of two adjoining lines. 
  19936.    See also polyfillet. 
  19937.  
  19938.  filtering  - An application process that changes the order of data in a queue. 
  19939.  
  19940.  first-in-first-out (FIFO)  - A queuing technique in which the next item to be 
  19941.    retrieved is the item that has been in the queue for the longest time. (A)
  19942.  
  19943.  flag  - (1) An indicator or parameter that shows the setting of a switch. (2) 
  19944.    A character that signals the occurrence of some condition, such as the end 
  19945.    of a word. (A)  (3) (D of C) A characteristic of a file or directory that 
  19946.    enables it to be used in certain ways. See also archive flag, hidden flag, 
  19947.    and read-only flag. 
  19948.  
  19949.  focus  - See input focus. 
  19950.  
  19951.  folder  - A container used to organize objects. 
  19952.  
  19953.  font  - A particular size and style of typeface that contains definitions of 
  19954.    character sets, marker sets, and pattern sets. 
  19955.  
  19956.  Font Editor  - A utility program provided with the IBM Developers Toolkit that 
  19957.    enables the design and creation of new fonts. 
  19958.  
  19959.  foreground program  - (1) The program with which the user is currently 
  19960.    interacting. Also known as interactive program. Contrast with background 
  19961.    program. (2) (D of C) In multiprogramming,  a high-priority program. 
  19962.  
  19963.  frame  - The part of a window that can contain several different visual 
  19964.    elements specified by the application, but drawn and controlled by the 
  19965.    Presentation Manager. The frame encloses the client area. 
  19966.  
  19967.  frame styles  - Standard window layouts provided by the Presentation Manager. 
  19968.  
  19969.  FSD  - File system driver. 
  19970.  
  19971.  full-duplex  - Synonym for duplex. 
  19972.  
  19973.  full-screen application  - An application that has complete control of the 
  19974.    screen. 
  19975.  
  19976.  function  - (1) In a programming language, a block, with or without formal 
  19977.    parameters, whose execution is invoked by means of a call. (2) A set of 
  19978.    related control statements that cause one or more programs to be performed. 
  19979.  
  19980.  function key  - A key that causes a specified sequence of operations to be 
  19981.    performed when it is pressed, for example, F1 and Alt-K. 
  19982.  
  19983.  function key area  - The area at the bottom of a window that contains function 
  19984.    key assignments such as F1=Help. 
  19985.  
  19986.  
  19987. ΓòÉΓòÉΓòÉ <hidden> Glossary - G ΓòÉΓòÉΓòÉ
  19988.  
  19989.  GDT  - Global Descriptor Table. 
  19990.  
  19991.  general protection fault  - An exception condition that occurs when a process 
  19992.    attempts to use storage or a module that has some level of protection 
  19993.    assigned to it, such as I/O privilege level. See also IOPL code segment. 
  19994.  
  19995.  Global Descriptor Table (GDT)  - A table that defines code and data segments 
  19996.    available to all tasks in an application. 
  19997.  
  19998.  global dynamic-link module  - A dynamic-link module that can be shared by all 
  19999.    processes in the system that refer to the module name. 
  20000.  
  20001.  global file-name character  - Either a question mark (?) or an asterisk (*) 
  20002.    used as a variable in a file name or file name extension when referring to a 
  20003.    particular file or group of files. 
  20004.  
  20005.  glyph  - A graphic symbol whose appearance conveys information. 
  20006.  
  20007.  GPI  - Graphics programming interface. 
  20008.  
  20009.  graphic primitive  - In computer graphics, a basic element, such as an arc or 
  20010.    a line, that is not made up of smaller parts and that is used to create 
  20011.    diagrams and pictures. See also graphics segment. 
  20012.  
  20013.  graphics  - (1) A picture defined in terms of graphic primitives and graphics 
  20014.    attributes. (2) (D of C) The making of charts and pictures. (3) Pertaining 
  20015.    to charts, tables, and their creation. (4) See computer graphics, coordinate 
  20016.    graphics, fixed-image graphics, interactive graphics, passive graphics, 
  20017.    raster graphics. 
  20018.  
  20019.  graphics attributes  - Attributes that apply to graphic primitives. Examples 
  20020.    are color, line type, and shading-pattern definition. See also segment 
  20021.    attributes. 
  20022.  
  20023.  graphics field  - The clipping boundary that defines the visible part of the 
  20024.    presentation-page contents. 
  20025.  
  20026.  graphics mode  - One of several states of a display. The mode determines the 
  20027.    resolution and color content of the screen. 
  20028.  
  20029.  graphics model space  - The conceptual coordinate space in which a picture is 
  20030.    constructed after any model transforms have been applied. Also known as 
  20031.    model space. 
  20032.  
  20033.  Graphics programming interface  - The formally defined programming language 
  20034.    that is between an IBM graphics program and the user of the program. 
  20035.  
  20036.  graphics segment  - A sequence of related graphic primitives and graphics 
  20037.    attributes. See also graphic primitive. 
  20038.  
  20039.  graying  - The indication that a choice on a pull-down is unavailable. 
  20040.  
  20041.  group  - A collection of logically connected controls. For example, the 
  20042.    buttons controlling paper size for a printer could be called a group. See 
  20043.    also program group. 
  20044.  
  20045.  
  20046. ΓòÉΓòÉΓòÉ <hidden> Glossary - H ΓòÉΓòÉΓòÉ
  20047.  
  20048.  handle  - (1) An identifier that represents an object, such as a device or 
  20049.    window, to the Presentation Interface. (2) (D of C) In the Advanced DOS and 
  20050.    OS/2 operating systems, a binary value created by the system that identifies 
  20051.    a drive, directory, and file so that the file can be found and opened. 
  20052.  
  20053.  hard error  - An error condition on a network that requires either that the 
  20054.    system be reconfigured or that the source of the error be removed before the 
  20055.    system can resume reliable operation. 
  20056.  
  20057.  header  - (1) System-defined control information that precedes user data. (2) 
  20058.    The portion of a message that contains control information for the message, 
  20059.    such as one or more destination fields, name of the originating station, 
  20060.    input sequence number, character string indicating the type of message, and 
  20061.    priority level for the message. 
  20062.  
  20063.  heading tags  - A document element that enables information to be displayed in 
  20064.    windows, and that controls entries in the contents window controls placement 
  20065.    of push buttons in a window, and defines the shape and size of windows. 
  20066.  
  20067.  heap  - An area of free storage available for dynamic allocation by an 
  20068.    application. Its size varies according to the storage requirements of the 
  20069.    application. 
  20070.  
  20071.  help function  - (1) A function that provides information about a specific 
  20072.    field, an application panel, or information about the help facility. (2) (D 
  20073.    of C) One or more display images that describe how to use application 
  20074.    software or how to do a system operation. 
  20075.  
  20076.  Help index  - In SAA Common User Access architecture, a help action that 
  20077.    provides an index of the help information available for an application. 
  20078.  
  20079.  help panel  - A panel with information to assist users that is displayed in 
  20080.    response to a help request from the user. 
  20081.  
  20082.  help window  - A Common-User-Access-defined secondary window that displays 
  20083.    information when the user requests help. 
  20084.  
  20085.  hidden file  - An operating system file that is not displayed by a directory 
  20086.    listing. 
  20087.  
  20088.  hide button  - In the OS/2 operating system, a small, square button located in 
  20089.    the right-hand corner of the title bar of a window that, when selected, 
  20090.    removes from the screen all the windows associated with that window. 
  20091.    Contrast with maximize button. See also restore button. 
  20092.  
  20093.  hierarchical inheritance  - The relationship between parent and child classes. 
  20094.    An object that is lower in the inheritance hierarchy than another object, 
  20095.    inherits all the characteristics and behaviors of the objects above it in 
  20096.    the hierarchy. 
  20097.  
  20098.  hierarchy  - A tree of segments beginning with the root segment and proceeding 
  20099.    downward to dependent segment types. 
  20100.  
  20101.  high-performance file system (HPFS)  - In the OS/2 operating system, an 
  20102.    installable file system that uses high-speed buffer storage, known as a 
  20103.    cache, to provide fast access to large disk volumes. The file system also 
  20104.    supports the coexistence of multiple, active file systems on a single 
  20105.    personal computer, with the capability of multiple and different storage 
  20106.    devices. File names used with the HPFS can have as many as 254 characters. 
  20107.  
  20108.  hit testing  - The means of identifying which window is associated with which 
  20109.    input device event. 
  20110.  
  20111.  hook  - A point in a system-defined function where an application can supply 
  20112.    additional code that the system processes as though it were part of the 
  20113.    function. 
  20114.  
  20115.  hook chain  - A sequence of hook procedures that are "chained" together so 
  20116.    that each event is passed, in turn, to each procedure in the chain. 
  20117.  
  20118.  hot spot  - The part of the pointer that must touch an object before it can be 
  20119.    selected. This is usually the tip of the pointer. Contrast with action 
  20120.    point. 
  20121.  
  20122.  HPFS  - high-performance file system. 
  20123.  
  20124.  hypergraphic link  - A connection between one piece of information and another 
  20125.    through the use of graphics. 
  20126.  
  20127.  hypertext  - A way of presenting information online with connections between 
  20128.    one piece of information and another, called hypertext links. See also 
  20129.    hypertext link. 
  20130.  
  20131.  hypertext link  - A connection between one piece of information and another. 
  20132.  
  20133.  
  20134. ΓòÉΓòÉΓòÉ <hidden> Glossary - I ΓòÉΓòÉΓòÉ
  20135.  
  20136.  I/O operation  - An input operation to, or output operation from a device 
  20137.    attached to a computer. 
  20138.  
  20139.  I-beam pointer  - A pointer that indicates an area, such as an entry field in 
  20140.    which text can be edited. 
  20141.  
  20142.  icon  - In SAA Advanced Common User Access architecture, a graphical 
  20143.    representation of an object, consisting of an image, image background, and a 
  20144.    label. Icons can represent items (such as a document file) that the user 
  20145.    wants to work on, and actions that the user wants to perform. In the 
  20146.    Presentation Manager, icons are used for data objects, system actions, and 
  20147.    minimized programs. 
  20148.  
  20149.  icon area  - In the Presentation Manager, the area at the bottom of the screen 
  20150.    that is normally used to display the icons for minimized programs. 
  20151.  
  20152.  Icon Editor  - The Presentation Manager-provided tool for creating icons. 
  20153.  
  20154.  IDL  - Interface Definition Language. 
  20155.  
  20156.  image font  - A set of symbols, each of which is described in a rectangular 
  20157.    array of pels. Some of the pels in the array are set to produce the image of 
  20158.    one of the symbols. Contrast with outline font. 
  20159.  
  20160.  implied metaclass  - Subclassing the metaclass of a parent class without a 
  20161.    separate CSC for the resultant metaclass. 
  20162.  
  20163.  indirect manipulation  - Interaction with an object through choices and 
  20164.    controls. 
  20165.  
  20166.  information device context  - A logical description of a data destination 
  20167.    other than the screen (for example, a printer or plotter), but where no 
  20168.    output will occur. Its purpose is to satisfy queries. See also device 
  20169.    context. 
  20170.  
  20171.  information panel  - A defined panel type characterized by a body containing 
  20172.    only protected information. 
  20173.  
  20174.  Information Presentation Facility (IPF)  - A facility provided by the OS/2 
  20175.    operating system, by which application developers can produce online 
  20176.    documentation and context-sensitive online help panels for their 
  20177.    applications. 
  20178.  
  20179.  inheritance  - The technique of specifying the shape and behavior of one class 
  20180.    (called a subclass) as incremental differences from another class (called 
  20181.    the parent class or superclass). The subclass inherits the superclass' state 
  20182.    representation and methods, and can provide additional data elements and 
  20183.    methods. The subclass also can provide new functions with the same method 
  20184.    names used by the superclass. Such a subclass method is said to override the 
  20185.    superclass method, and will be selected automatically by method resolution 
  20186.    on subclass instances. An overriding method can elect to call upon the 
  20187.    superclass' method as part of its own implementation. 
  20188.  
  20189.  input focus  - (1) The area of a window where user interaction is possible 
  20190.    using an input device, such as a mouse or the keyboard. (2) The position in 
  20191.    the active window where a user's normal interaction with the keyboard will 
  20192.    appear. 
  20193.  
  20194.  input router  - An internal OS/2 process that removes messages from the system 
  20195.    queue. 
  20196.  
  20197.  input/output control  - A device-specific command that requests a function of 
  20198.    a device driver. 
  20199.  
  20200.  installable file system (IFS)  - A file system in which software is installed 
  20201.    when the operating system is started. 
  20202.  
  20203.  instance  - (Or object instance). A specific object, as distinguished from the 
  20204.    abstract definition of an object referred to as its class. 
  20205.  
  20206.  instance method  - A method valid for a particular object. 
  20207.  
  20208.  instruction pointer  - In System/38, a pointer that provides addressability 
  20209.    for a machine interface instruction in a program. 
  20210.  
  20211.  integer atom  - An atom that represents a predefined system constant and 
  20212.    carries no storage overhead. For example, names of window classes provided 
  20213.    by Presentation Manager are expressed as integer atoms. 
  20214.  
  20215.  interactive graphics  - Graphics that can be moved or manipulated by a user at 
  20216.    a terminal. 
  20217.  
  20218.  interactive program  - (1) A program that is running (active) and is ready to 
  20219.    receive (or is receiving) input from a user. (2) A running program that can 
  20220.    receive input from the keyboard or another input device. Compare with active 
  20221.    program and contrast with noninteractive program. 
  20222.  
  20223.    Also known as a foreground program. 
  20224.  
  20225.  interchange file  - A file containing data that can be sent from one 
  20226.    Presentation Manager interface application to another. 
  20227.  
  20228.  Interface Definition Language (IDL)  - Language-neutral interface 
  20229.    specification for a SOM class. 
  20230.  
  20231.  interpreter  - A program that translates and executes each instruction of a 
  20232.    high-level programming language before it translates and executes. 
  20233.  
  20234.  interprocess communication (IPC)  - In the OS/2 operating system, the exchange 
  20235.    of information between processes or threads through semaphores, pipes, 
  20236.    queues, and shared memory. 
  20237.  
  20238.  interval timer  - (1) A timer that provides program interruptions on a 
  20239.    program-controlled basis. (2) An electronic counter that counts intervals of 
  20240.    time under program control. 
  20241.  
  20242.  IOCtl  - Input/output control. 
  20243.  
  20244.  IOPL  - Input/output privilege level. 
  20245.  
  20246.  IOPL code segment  - An IOPL executable section of programming code that 
  20247.    enables an application to directly manipulate hardware interrupts and ports 
  20248.    without replacing the device driver. See also privilege level. 
  20249.  
  20250.  IPC  - Interprocess communication. 
  20251.  
  20252.  IPF  - Information Presentation Facility. 
  20253.  
  20254.  IPF compiler  - A text compiler that interpret tags in a source file and 
  20255.    converts the information into the specified format. 
  20256.  
  20257.  IPF tag language  - A markup language that provides the instructions for 
  20258.    displaying online information. 
  20259.  
  20260.  item  - A data object that can be passed in a DDE transaction. 
  20261.  
  20262.  
  20263. ΓòÉΓòÉΓòÉ <hidden> Glossary - J ΓòÉΓòÉΓòÉ
  20264.  
  20265.  journal  - A special-purpose file that is used to record changes made in the 
  20266.    system. 
  20267.  
  20268.  
  20269. ΓòÉΓòÉΓòÉ <hidden> Glossary - K ΓòÉΓòÉΓòÉ
  20270.  
  20271.  Kanji  - A graphic character set used in Japanese ideographic alphabets. 
  20272.  
  20273.  KBD$  - Character-device name reserved for the keyboard. 
  20274.  
  20275.  kernel  - The part of an operating system that performs basic functions, such 
  20276.    as allocating hardware resources. 
  20277.  
  20278.  kerning  - The design of graphics characters so that their character boxes 
  20279.    overlap. Used to space text proportionally. 
  20280.  
  20281.  keyboard accelerator  - A keystroke that generates a command message for an 
  20282.    application. 
  20283.  
  20284.  keyboard augmentation  - A function that enables a user to press a keyboard 
  20285.    key while pressing a mouse button. 
  20286.  
  20287.  keyboard focus  - A temporary attribute of a window. The window that has a 
  20288.    keyboard focus receives all keyboard input until the focus changes to a 
  20289.    different window. 
  20290.  
  20291.  Keys help  - In SAA Common User Access architecture, a help action that 
  20292.    provides a listing of the application keys and their assigned functions. 
  20293.  
  20294.  
  20295. ΓòÉΓòÉΓòÉ <hidden> Glossary - L ΓòÉΓòÉΓòÉ
  20296.  
  20297.  label  - In a graphics segment, an identifier of one or more elements that is 
  20298.    used when editing the segment. 
  20299.  
  20300.  LAN  - Local area network. 
  20301.  
  20302.  language support procedure  - A function provided by the Presentation Manager 
  20303.    Interface for applications that do not, or cannot (as in the case of COBOL 
  20304.    and FORTRAN programs), provide their own dialog or window procedures. 
  20305.  
  20306.  lazy drag  - See pickup and drop. 
  20307.  
  20308.  lazy drag set  - See pickup set. 
  20309.  
  20310.  LDT  - In the OS/2 operating system, Local Descriptor Table. 
  20311.  
  20312.  LIFO stack  - A stack from which data is retrieved in last-in, first-out 
  20313.    order. 
  20314.  
  20315.  linear address  - A unique value that identifies the memory object. 
  20316.  
  20317.  linked list  - Synonym for chained list. 
  20318.  
  20319.  list box  - In SAA Advanced Common User Access architecture, a control that 
  20320.    contains scrollable choices from which a user can select one choice. 
  20321.  
  20322.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  20323.    selection list. 
  20324.  
  20325.  list button  - A button labeled with an underlined down-arrow that presents a 
  20326.    list of valid objects or choices that can be selected for that field. 
  20327.  
  20328.  list panel  - A defined panel type that displays a list of items from which 
  20329.    users can select one or more choices and then specify one or more actions to 
  20330.    work on those choices. 
  20331.  
  20332.  load time  - The point in time at which a program module is loaded into main 
  20333.    storage for execution. 
  20334.  
  20335.  load-on-call  - A function of a linkage editor that allows selected segments 
  20336.    of the module to be disk resident while other segments are executing. Disk 
  20337.    resident segments are loaded for execution and given control when any entry 
  20338.    point that they contain is called. 
  20339.  
  20340.  local area network (LAN)  - (1) A computer network located on a user's 
  20341.    premises within a limited geographical area. Communication within a local 
  20342.    area network is not subject to external regulations;  however, communication 
  20343.    across the LAN boundary may be subject to some form of regulation. (T)
  20344.  
  20345.    Note:  A LAN does not use store and forward techniques. (2) A network in 
  20346.    which a set of devices are connected to one another for communication and 
  20347.    that can be connected to a larger network. 
  20348.  
  20349.  Local Descriptor Table (LDT)  - Defines code and data segments specific to a 
  20350.    single task. 
  20351.  
  20352.  lock  - A serialization mechanism by means of which a resource is restricted 
  20353.    for use by the holder of the lock. 
  20354.  
  20355.  logical storage device  - A device that the user can map to a physical 
  20356.    (actual) device. 
  20357.  
  20358.  LPT1, LPT2, LPT3  - Character-device names reserved for parallel printers 1 
  20359.    through 3. 
  20360.  
  20361.  
  20362. ΓòÉΓòÉΓòÉ <hidden> Glossary - M ΓòÉΓòÉΓòÉ
  20363.  
  20364.  main window  - The window that is positioned relative to the desktop window. 
  20365.  
  20366.  manipulation button  - The button on a pointing device a user presses to 
  20367.    directly manipulate an object. 
  20368.  
  20369.  map  - (1) A set of values having a defined correspondence with the quantities 
  20370.    or values of another set. (I)  (A)  (2) To establish a set of values having 
  20371.    a defined correspondence with the quantities or values of another set. (I)
  20372.  
  20373.  marker box  - In computer graphics, the boundary that defines, in world 
  20374.    coordinates, the horizontal and vertical space occupied by a single marker 
  20375.    from a marker set. 
  20376.  
  20377.  marker symbol  - A symbol centered on a point. Graphs and charts can use 
  20378.    marker symbols to indicate the plotted points. 
  20379.  
  20380.  marquee box  - The rectangle that appears during a selection technique in 
  20381.    which a user selects objects by drawing a box around them with a pointing 
  20382.    device. 
  20383.  
  20384.  Master Help Index  - In the OS/2 operating system, an alphabetic list of help 
  20385.    topics related to using the operating system. 
  20386.  
  20387.  maximize  - To enlarge a window to its largest possible size. 
  20388.  
  20389.  media window  - The part of the physical device (display, printer, or plotter) 
  20390.    on which a picture is presented. 
  20391.  
  20392.  memory block  - Part memory within a heap. 
  20393.  
  20394.  memory device context  - A logical description of a data destination that is a 
  20395.    memory bit map. See also device context. 
  20396.  
  20397.  memory management  - A feature of the operating system for allocating, 
  20398.    sharing, and freeing main storage. 
  20399.  
  20400.  memory object  - Logical unit of memory requested by an application, which 
  20401.    forms the granular unit of memory manipulation from the application 
  20402.    viewpoint. 
  20403.  
  20404.  menu  - In SAA Advanced Common User Access architecture, an extension of the 
  20405.    menu bar that displays a list of choices available for a selected choice in 
  20406.    the menu bar. After a user selects a choice in menu bar, the corresponding 
  20407.    menu appears. Additional pop-up windows can appear from menu choices. 
  20408.  
  20409.  menu bar  - In SAA Advanced Common User Access architecture, the area near the 
  20410.    top of a window, below the title bar and above the rest of the window, that 
  20411.    contains choices that provide access to other menus. 
  20412.  
  20413.  menu button  - The button on a pointing device that a user presses to view a 
  20414.    pop-up menu associated with an object. 
  20415.  
  20416.  message  - (1) In the Presentation Manager, a packet of data used for 
  20417.    communication between the Presentation Manager interface and Presentation 
  20418.    Manager applications (2) In a user interface, information not requested by 
  20419.    users but presented to users by the computer in response to a user action or 
  20420.    internal process. 
  20421.  
  20422.  message box  - (1) A dialog window predefined by the system and used as a 
  20423.    simple interface for applications, without the necessity of creating 
  20424.    dialog-template resources or dialog procedures. (2) (D of C) In SAA Advanced 
  20425.    Common User Access architecture, a type of window that shows messages to 
  20426.    users. See also dialog box, primary window, secondary window. 
  20427.  
  20428.  message filter  - The means of selecting which messages from a specific window 
  20429.    will be handled by the application. 
  20430.  
  20431.  message queue  - A sequenced collection of messages to be read by the 
  20432.    application. 
  20433.  
  20434.  message stream mode  - A method of operation in which data is treated as a 
  20435.    stream of messages.  Contrast with  byte stream. 
  20436.  
  20437.  metacharacter  - See global file-name character. 
  20438.  
  20439.  metaclass  - A class whose instances are all classes. In SOM, any class 
  20440.    descended from SOMClass is a metaclass. The methods of a metaclass are 
  20441.    sometimes called "class" methods. 
  20442.  
  20443.  metafile  - A file containing a series of attributes that set color, shape and 
  20444.    size, usually of a picture or a drawing. Using a program that can interpret 
  20445.    these attributes, a user can view the assembled image. 
  20446.  
  20447.  metafile device context  - A logical description of a data destination that is 
  20448.    a metafile, which is used for graphics interchange. See also device context. 
  20449.  
  20450.  metalanguage  - A language used to specify another language. For example, data 
  20451.    types can be described using a metalanguage so as to make the descriptions 
  20452.    independent of any one computer language. 
  20453.  
  20454.  method  - One of the units that makes up the behavior of an object. A method 
  20455.    is a combination of a function and a name, such that many different 
  20456.    functions can have the same name. Which function the name refers to at any 
  20457.    point in time depends on the object that is to execute the method and is the 
  20458.    subject of method resolution. 
  20459.  
  20460.  method override  - The replacement, by a child class, of the implementation of 
  20461.    a method inherited from a parent and an ancestor class. 
  20462.  
  20463.  mickey  - A unit of measurement for physical mouse motion whose value depends 
  20464.    on the mouse device driver currently loaded. 
  20465.  
  20466.  micro presentation space  - A graphics presentation space in which a 
  20467.    restricted set of the GPI function calls is available. 
  20468.  
  20469.  minimize  - To remove from the screen all windows associated with an 
  20470.    application and replace them with an icon that represents the application. 
  20471.  
  20472.  mix  - An attribute that determines how the foreground of a graphic primitive 
  20473.    is combined with the existing color of graphics output. Also known as 
  20474.    foreground mix. Contrast with background mix. 
  20475.  
  20476.  mixed character string  - A string containing a mixture of one-byte and Kanji 
  20477.    or Hangeul (two-byte) characters. 
  20478.  
  20479.  mnemonic  - (1) A method of selecting an item on a pull-down by means of 
  20480.    typing the highlighted letter in the menu item. (2) (D of C) In SAA Advanced 
  20481.    Common User Access architecture, usually a single character, within the text 
  20482.    of a choice, identified by an underscore beneath the character. If all 
  20483.    characters in a choice already serve as mnemonics for other choices, another 
  20484.    character, placed in parentheses immediately following the choice, can be 
  20485.    used. When a user types the mnemonic for a choice, the choice is either 
  20486.    selected or the cursor is moved to that choice. 
  20487.  
  20488.  modal dialog box  - In SAA Advanced Common User Access architecture, a type of 
  20489.    movable window, fixed in size, that requires a user to enter information 
  20490.    before continuing to work in the application window from which it was 
  20491.    displayed. Contrast with modeless dialog box. Also known as a serial dialog 
  20492.    box. Contrast with parallel dialog box. 
  20493.  
  20494.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  20495.    pop-up window. 
  20496.  
  20497.  model space  - See graphics model space. 
  20498.  
  20499.  modeless dialog box  - In SAA Advanced Common User Access architecture, a type 
  20500.    of movable window, fixed in size, that allows users to continue their dialog 
  20501.    with the application without entering information in the dialog box. Also 
  20502.    known as a parallel dialog box. Contrast with modal dialog box. 
  20503.  
  20504.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  20505.    pop-up window. 
  20506.  
  20507.  module definition file  - A file that describes the code segments within a 
  20508.    load module. For example, it indicates whether a code segment is loadable 
  20509.    before module execution begins (preload), or loadable only when referred to 
  20510.    at run time (load-on-call). 
  20511.  
  20512.  mouse  - In SAA usage, a device that a user moves on a flat surface to 
  20513.    position a pointer on the screen. It allows a user to select a choice o 
  20514.    function to be performed or to perform operations on the screen, such as 
  20515.    dragging or drawing lines from one position to another. 
  20516.  
  20517.  MOUSE$  - Character-device name reserved for a mouse. 
  20518.  
  20519.  multiple-choice selection  - In SAA Basic Common User Access architecture, a 
  20520.    type of field from which a user can select one or more choices or select 
  20521.    none. See also check box. Contrast with extended-choice selection. 
  20522.  
  20523.  multiple-line entry field  - In SAA Advanced Common User Access architecture, 
  20524.    a control into which a user types more than one line of information. See 
  20525.    also single-line entry field. 
  20526.  
  20527.  multitasking  - The concurrent processing of applications or parts of 
  20528.    applications. A running application and its data are protected from other 
  20529.    concurrently running applications. 
  20530.  
  20531.  mutex semaphore  - (Mutual exclusion semaphore). A semaphore that enables 
  20532.    threads to serialize their access to resources. Only the thread that 
  20533.    currently owns the mutex semaphore can gain access to the resource, thus 
  20534.    preventing one thread from interrupting operations being performed by 
  20535.    another. 
  20536.  
  20537.  muxwait semaphore  - (Multiple wait semaphore). A semaphore that enables a 
  20538.    thread to wait either for multiple event semaphores to be posted or for 
  20539.    multiple mutex semaphores to be released. Alternatively, a muxwait semaphore 
  20540.    can be set to enable a thread to wait for any ONE of the event or mutex 
  20541.    semaphores in the muxwait semaphore's list to be posted or released. 
  20542.  
  20543.  
  20544. ΓòÉΓòÉΓòÉ <hidden> Glossary - N ΓòÉΓòÉΓòÉ
  20545.  
  20546.  named pipe  - A named buffer that provides client-to-server, server-to-client, 
  20547.    or full duplex communication between unrelated processes. Contrast with 
  20548.    unnamed pipe. 
  20549.  
  20550.  national language support (NLS)  - The modification or conversion of a United 
  20551.    States English product to conform to the requirements of another language or 
  20552.    country. This can include the enabling or retrofitting of a product and the 
  20553.    translation of nomenclature, MRI, or documentation of a product. 
  20554.  
  20555.  nested list  - A list that is contained within another list. 
  20556.  
  20557.  NLS  - national language support. 
  20558.  
  20559.  non-8.3 file-name format  - A file-naming convention in which file names can 
  20560.    consist of up to 255 characters. See also 8.3 file-name format. 
  20561.  
  20562.  noncritical extended attribute  - An extended attribute that is not necessary 
  20563.    for the function of an application. 
  20564.  
  20565.  nondestructive read  - Reading that does not erase the data in the source 
  20566.    location. (T)
  20567.  
  20568.  noninteractive program  - A running program that cannot receive input from the 
  20569.    keyboard or other input device. Compare with active program, and contrast 
  20570.    with interactive program. 
  20571.  
  20572.  nonretained graphics  - Graphic primitives that are not remembered by the 
  20573.    Presentation Manager interface when they have been drawn. Contrast with 
  20574.    retained graphics. 
  20575.  
  20576.  null character (NUL)  - (1) Character-device name reserved for a nonexistent 
  20577.    (dummy) device. (2) (D of C) A control character that is used to accomplish 
  20578.    media-fill or time-fill and that may be inserted into or removed from a 
  20579.    sequence of characters without affecting the meaning of the sequence; 
  20580.    however, the control of equipment or the format may be affected by this 
  20581.    character. (I)  (A)
  20582.  
  20583.  null-terminated string  - A string of (n+1) characters where the (n+1)th 
  20584.    character is the 'null' character (0x00) Also known as 'zero-terminated' 
  20585.    string and 'ASCIIZ' string. 
  20586.  
  20587.  
  20588. ΓòÉΓòÉΓòÉ <hidden> Glossary - O ΓòÉΓòÉΓòÉ
  20589.  
  20590.  object  - The elements of data and function that programs create, manipulate, 
  20591.    pass as arguments, and so forth. An object is a way of associating specific 
  20592.    data values with a specific set of named functions (called methods) for a 
  20593.    period of time (referred to as the lifetime of the object). The data values 
  20594.    of an object are referred to as its state. In SOM, objects are created by 
  20595.    other objects called classes. The specification of what comprises the set of 
  20596.    functions and data elements that make up an object is referred to as the 
  20597.    definition of a class. 
  20598.  
  20599.    SOM objects offer a high degree of encapsulation. This property permits many 
  20600.    aspects of the implementation of an object to change without affecting 
  20601.    client programs that depend on the object's behavior. 
  20602.  
  20603.  object definition  - See class. 
  20604.  
  20605.  object instance  - See instance. 
  20606.  
  20607.  Object Interface Definition Language (OIDL)  - Specification language used in 
  20608.    SOM Version 1 for defining classes. Replaced by Interface Definition 
  20609.    Language (IDL). 
  20610.  
  20611.  object window  - A window that does not have a parent but which might have 
  20612.    child windows. An object window cannot be presented on a device. 
  20613.  
  20614.  OIDL  - Object Interface Definition Language. 
  20615.  
  20616.  open  - To start working with a file, directory, or other object. 
  20617.  
  20618.  ordered list  - Vertical arrangements of items, with each item in the list 
  20619.    preceded by a number or letter. 
  20620.  
  20621.  outline font  - A set of symbols, each of which is created as a series of 
  20622.    lines and curves.  Synonymous with vector font. Contrast with image font. 
  20623.  
  20624.  output area  - An area of storage reserved for output. (A)
  20625.  
  20626.  owner window  - A window into which specific events that occur in another 
  20627.    (owned) window are reported. 
  20628.  
  20629.  ownership  - The determination of how windows communicate using messages. 
  20630.  
  20631.  owning process  - The process that owns the resources that might be shared 
  20632.    with other processes. 
  20633.  
  20634.  
  20635. ΓòÉΓòÉΓòÉ <hidden> Glossary - P ΓòÉΓòÉΓòÉ
  20636.  
  20637.  page  - (1) A 4KB segment of contiguous physical memory. (2) (D of C) A 
  20638.    defined unit of space on a storage medium. 
  20639.  
  20640.  page viewport  - A boundary in device coordinates that defines the area of the 
  20641.    output device in which graphics are to be displayed. The presentation-page 
  20642.    contents are transformed automatically to the page viewport in device space. 
  20643.  
  20644.  paint  - (1) The action of drawing or redrawing the contents of a window. (2) 
  20645.    In computer graphics, to shade an area of a display image;  for example, 
  20646.    with crosshatching or color. 
  20647.  
  20648.  panel  - In SAA Basic Common User Access architecture, a particular 
  20649.    arrangement of information that is presented in a window or pop-up. If some 
  20650.    of the information is not visible, a user can scroll through the 
  20651.    information. 
  20652.  
  20653.  panel area  - An area within a panel that contains related information. The 
  20654.    three major Common User Access-defined panel areas are the action bar, the 
  20655.    function key area, and the panel body. 
  20656.  
  20657.  panel area separator  - In SAA Basic Common User Access architecture, a solid, 
  20658.    dashed, or blank line that provides a visual distinction between two 
  20659.    adjacent areas of a panel. 
  20660.  
  20661.  panel body  - The portion of a panel not occupied by the action bar, function 
  20662.    key area, title or scroll bars. The panel body can contain protected 
  20663.    information, selection fields, and entry fields. The layout and content of 
  20664.    the panel body determine the panel type. 
  20665.  
  20666.  panel body area  - See client area. 
  20667.  
  20668.  panel definition  - A description of the contents and characteristics of a 
  20669.    panel. A panel definition is the application developer's mechanism for 
  20670.    predefining the format to be presented to users in a window. 
  20671.  
  20672.  panel ID  - In SAA Basic Common User Access architecture, a panel identifier, 
  20673.    located in the upper-left corner of a panel.  A user can choose whether to 
  20674.    display the panel ID. 
  20675.  
  20676.  panel title  - In SAA Basic Common User Access architecture, a particular 
  20677.    arrangement of information that is presented in a window or pop-up. If some 
  20678.    of the information is not visible, a user can scroll through the 
  20679.    information. 
  20680.  
  20681.  paper size  - The size of paper, defined in either standard U.S. or European 
  20682.    names (for example, A, B, A4), and measured in inches or millimeters 
  20683.    respectively. 
  20684.  
  20685.  parallel dialog box  - See modeless dialog box. 
  20686.  
  20687.  parameter list  - A list of values that provides a means of associating 
  20688.    addressability of data defined in a called program with data in the calling 
  20689.    program. It contains parameter names and the order in which they are to be 
  20690.    associated in the calling and called program. 
  20691.  
  20692.  parent class  - See inheritance. 
  20693.  
  20694.  parent process  - In the OS/2 operating system, a process that creates other 
  20695.    processes. Contrast with child process. 
  20696.  
  20697.  parent window  - In the OS/2 operating system, a window that creates a child 
  20698.    window. The child window is drawn within the parent window. If the parent 
  20699.    window is moved, resized, or destroyed, the child window also will be moved, 
  20700.    resized, or destroyed. However, the child window can be moved and resized 
  20701.    independently from the parent window, within the boundaries of the parent 
  20702.    window. Contrast with child window. 
  20703.  
  20704.  partition  - (1) A fixed-size division of storage. (2) On an IBM personal 
  20705.    computer fixed disk, one of four possible storage areas of variable size; 
  20706.    one may be accessed by DOS, and each of the others may be assigned to 
  20707.    another operating system. 
  20708.  
  20709.  Paste  - A choice in the Edit pull-down that a user selects to move the 
  20710.    contents of the clipboard into a preselected location. See also Copy and 
  20711.    Cut. 
  20712.  
  20713.  path  - The route used to locate files; the storage location of a file. A 
  20714.    fully qualified path lists the drive identifier, directory name, 
  20715.    subdirectory name (if any), and file name with the associated extension. 
  20716.  
  20717.  PDD  - Physical device driver. 
  20718.  
  20719.  peeking  - An action taken by any thread in the process that owns the queue to 
  20720.    examine queue elements without removing them. 
  20721.  
  20722.  pel  - (1) The smallest area of a display screen capable of being addressed 
  20723.    and switched between visible and invisible states. Synonym for display 
  20724.    point, pixel, and picture element. (2) (D of C) Picture element. 
  20725.  
  20726.  persistent object  - An object whose instance data and state are preserved 
  20727.    between system shutdown and system startup. 
  20728.  
  20729.  physical device driver (PDD)  - A system interface that handles hardware 
  20730.    interrupts and supports a set of input and output functions. 
  20731.  
  20732.  pick  - To select part of a displayed object using the pointer. 
  20733.  
  20734.  pickup  - To add an object or set of objects to the pickup set. 
  20735.  
  20736.  pickup and drop  - A drag operation that does not require the direct 
  20737.    manipulation button to be pressed for the duration of the drag. 
  20738.  
  20739.  pickup set  - The set of objects that have been picked up as part of a pickup 
  20740.    and drop operation. 
  20741.  
  20742.  picture chain  - See segment chain. 
  20743.  
  20744.  picture element  - (1) Synonym for pel. (2) (D of C) In computer graphics, the 
  20745.    smallest element of a display surface that can be independently assigned 
  20746.    color and intensity. (T)  . (3) The area of the finest detail that can be 
  20747.    reproduced effectively on the recording medium. 
  20748.  
  20749.  PID  - Process identification. 
  20750.  
  20751.  pipe  - (1) A named or unnamed buffer used to pass data between processes. A 
  20752.    process reads from or writes to a pipe as if the pipe were a standard-input 
  20753.    or standard-output file. See also named pipe and unnamed pipe. (2) (D of C) 
  20754.    To direct data so that the output from one process becomes the input to 
  20755.    another process. The standard output of one command can be connected to the 
  20756.    standard input of another with the pipe operator (|). 
  20757.  
  20758.  pixel  - (1) Synonym for pel. (2) (D of C) Picture element. 
  20759.  
  20760.  plotter  - An output unit that directly produces a hardcopy record of data on 
  20761.    a removable medium, in the form of a two-dimensional graphic representation. (T)
  20762.  
  20763.  PM  - Presentation Manager. 
  20764.  
  20765.  pointer  - (1) The symbol displayed on the screen that is moved by a pointing 
  20766.    device, such as a mouse. The pointer is used to point at items that users 
  20767.    can select. Contrast with cursor. (2) A data element that indicates the 
  20768.    location of another data element. (T)
  20769.  
  20770.  POINTER$  - Character-device name reserved for a pointer device (mouse screen 
  20771.    support). 
  20772.  
  20773.  pointing device  - In SAA Advanced Common User Access architecture, an 
  20774.    instrument, such as a mouse, trackball, or joystick, used to move a pointer 
  20775.    on the screen. 
  20776.  
  20777.  pointings  - Pairs of x-y coordinates produced by an operator defining 
  20778.    positions on a screen with a pointing device, such as a mouse. 
  20779.  
  20780.  polyfillet  - A curve based on a sequence of lines. The curve is tangential to 
  20781.    the end points of the first and last lines, and tangential also to the 
  20782.    midpoints of all other lines. See also fillet. 
  20783.  
  20784.  polygon  - One or more closed figures that can be drawn filled, outlined, or 
  20785.    filled and outlined. 
  20786.  
  20787.  polyline  - A sequence of adjoining lines. 
  20788.  
  20789.  polymorphism  - The ability to have different implementations of the same 
  20790.    method for two or more classes of objects. 
  20791.  
  20792.  pop  - To retrieve an item from a last-in-first-out stack of items. Contrast 
  20793.    with push. 
  20794.  
  20795.  pop-up menu  - A menu that lists the actions that a user can perform on an 
  20796.    object. The contents of the pop-up menu can vary depending on the context, 
  20797.    or state, of the object. 
  20798.  
  20799.  pop-up window  - (1) A window that appears on top of another window in a 
  20800.    dialog. Each pop-up window must be completed before returning to the 
  20801.    underlying window. (2) (D of C) In SAA Advanced Common User Access 
  20802.    architecture, a movable window, fixed in size, in which a user provides 
  20803.    information required by an application so that it can continue to process a 
  20804.    user request. 
  20805.  
  20806.  presentation drivers  - Special purpose I/O routines that handle field 
  20807.    device-independent I/O requests from the PM and its applications. 
  20808.  
  20809.  Presentation Manager (PM)  - The interface of the OS/2 operating system that 
  20810.    presents, in windows a graphics-based interface to applications and files 
  20811.    installed and running under the OS/2 operating system. 
  20812.  
  20813.  presentation page  - The coordinate space in which a picture is assembled for 
  20814.    display. 
  20815.  
  20816.  presentation space (PS)  - (1) Contains the device-independent definition of a 
  20817.    picture. (2) (D of C) The display space on a display device. 
  20818.  
  20819.  primary window  - In SAA Common User Access architecture, the window in which 
  20820.    the main interaction between the user and the application takes place. In a 
  20821.    multiprogramming environment, each application starts in its own primary 
  20822.    window. The primary window remains for the duration of the application, 
  20823.    although the panel displayed will change as the user's dialog moves forward. 
  20824.    See also secondary window. 
  20825.  
  20826.  primitive  - In computer graphics, one of several simple functions for drawing 
  20827.    on the screen, including, for example, the rectangle, line, ellipse, 
  20828.    polygon, and so on. 
  20829.  
  20830.  primitive attribute  - A specifiable characteristic of a graphic primitive. 
  20831.    See graphics attributes. 
  20832.  
  20833.  print job  - The result of sending a document or picture to be printed. 
  20834.  
  20835.  Print Manager  - In the Presentation Manager, the part of the spooler that 
  20836.    manages the spooling process. It also allows users to view print queues and 
  20837.    to manipulate print jobs. 
  20838.  
  20839.  privilege level  - A protection level imposed by the hardware architecture of 
  20840.    the IBM personal computer.  There are four privilege levels (number 0 
  20841.    through 3).  Only certain types of programs are allowed to execute at each 
  20842.    privilege level.  See also IOPL code segment. 
  20843.  
  20844.  procedure call  - In programming languages, a language construct for invoking 
  20845.    execution of a procedure. 
  20846.  
  20847.  process  - An instance of an executing application and the resources it is 
  20848.    using. 
  20849.  
  20850.  program  - A sequence of instructions that a computer can interpret and 
  20851.    execute. 
  20852.  
  20853.  program details  - Information about a program that is specified in the 
  20854.    Program Manager window and is used when the program is started. 
  20855.  
  20856.  program group  - In the Presentation Manager, several programs that can be 
  20857.    acted upon as a single entity. 
  20858.  
  20859.  program name  - The full file specification of a program. Contrast with 
  20860.    program title. 
  20861.  
  20862.  program title  - The name of a program as it is listed in the Program Manager 
  20863.    window. Contrast with program name. 
  20864.  
  20865.  prompt  - A displayed symbol or message that requests input from the user or 
  20866.    gives operational information; for example, on the display screen of an IBM 
  20867.    personal computer, the DOS A> prompt. The user must respond to the prompt in 
  20868.    order to proceed. 
  20869.  
  20870.  protect mode  - A method of program operation that limits or prevents access 
  20871.    to certain instructions or areas of storage. Contrast with real mode. 
  20872.  
  20873.  protocol  - A set of semantic and syntactic rules that determines the behavior 
  20874.    of functional units in achieving communication. (I)
  20875.  
  20876.  pseudocode  - An artificial language used to describe computer program 
  20877.    algorithms without using the syntax of any particular programming language. (A)
  20878.  
  20879.  pull-down  - (1) An action bar extension that displays a list of choices 
  20880.    available for a selected action bar choice. After users select an action bar 
  20881.    choice, the pull-down appears with the list of choices. Additional pop-up 
  20882.    windows may appear from pull-down choices to further extend the actions 
  20883.    available to users. (2) (D of C) In SAA Common User Access architecture, 
  20884.    pertaining to a choice in an action bar pull-down. 
  20885.  
  20886.  push  - To add an item to a last-in-first-out stack of items. Contrast with 
  20887.    pop. 
  20888.  
  20889.  push button  - In SAA Advanced Common User Access architecture, a rectangle 
  20890.    with text inside. Push buttons are used in windows for actions that occur 
  20891.    immediately when the push button is selected. 
  20892.  
  20893.  putback  - To remove an object or set of objects from the lazy drag set. This 
  20894.    has the effect of undoing the pickup operation for those objects 
  20895.  
  20896.  putdown  - To drop the objects in the lazy drag set on the target object. 
  20897.  
  20898.  
  20899. ΓòÉΓòÉΓòÉ <hidden> Glossary - Q ΓòÉΓòÉΓòÉ
  20900.  
  20901.  queue  - (1) A linked list of elements waiting to be processed in FIFO order. 
  20902.    For example, a queue may be a list of print jobs waiting to be printed. (2) 
  20903.    (D of C) A line or list of items waiting to be processed; for example, work 
  20904.    to be performed or messages to be displayed. 
  20905.  
  20906.  queued device context  - A logical description of a data destination (for 
  20907.    example, a printer or plotter) where the output is to go through the 
  20908.    spooler. See also device context. 
  20909.  
  20910.  
  20911. ΓòÉΓòÉΓòÉ <hidden> Glossary - R ΓòÉΓòÉΓòÉ
  20912.  
  20913.  radio button  - (1) A control window, shaped like a round button on the 
  20914.    screen, that can be in a checked or unchecked state. It is used to select a 
  20915.    single item from a list. Contrast with check box. (2) In SAA Advanced Common 
  20916.    User Access architecture, a circle with text beside it. Radio buttons are 
  20917.    combined to show a user a fixed set of choices from which only one can be 
  20918.    selected. The circle is partially filled when a choice is selected. 
  20919.  
  20920.  RAS  - Reliability, availability, and serviceability. 
  20921.  
  20922.  raster  - (1) In computer graphics, a predetermined pattern of lines that 
  20923.    provides uniform coverage of a display space. (T)  (2) The coordinate grid 
  20924.    that divides the display area of a display device.  (A)
  20925.  
  20926.  read-only file  - A file that can be read from but not written to. 
  20927.  
  20928.  real mode  - A method of program operation that does not limit or prevent 
  20929.    access to any instructions or areas of storage.  The operating system loads 
  20930.    the entire program into storage and gives the program access to all system 
  20931.    resources. Contrast with protect mode. 
  20932.  
  20933.  realize  - To cause the system to ensure, wherever possible, that the physical 
  20934.    color table of a device is set to the closest possible match in the logical 
  20935.    color table. 
  20936.  
  20937.  recursive routine  - A routine that can call itself, or be called by another 
  20938.    routine that was called by the recursive routine. 
  20939.  
  20940.  reentrant  - The attribute of a program or routine that allows the same copy 
  20941.    of the program or routine to be used concurrently by two or more tasks. 
  20942.  
  20943.  reference phrase  - (1) A word or phrase that is emphasized in a 
  20944.    device-dependent manner to inform the user that additional information for 
  20945.    the word or phrase is available. (2) (D of C) In hypertext, text that is 
  20946.    highlighted and preceded by a single-character input field used to signify 
  20947.    the existence of a hypertext link. 
  20948.  
  20949.  reference phrase help  - In SAA Common User Access architecture, highlighted 
  20950.    words or phrases within help information that a user selects to get 
  20951.    additional information. 
  20952.  
  20953.  refresh  - To update a window, with changed information, to its current 
  20954.    status. 
  20955.  
  20956.  region  - A clipping boundary in device space. 
  20957.  
  20958.  register  - A part of internal storage having a specified storage capacity and 
  20959.    usually intended for a specific purpose. (T)
  20960.  
  20961.  remote file system  - A file-system driver that gains access to a remote 
  20962.    system without a block device driver. 
  20963.  
  20964.  resource  - The means of providing extra information used in the definition of 
  20965.    a window. A resource can contain definitions of fonts, templates, 
  20966.    accelerators, and mnemonics; the definitions are held in a resource file. 
  20967.  
  20968.  resource file  - A file containing information used in the definition of a 
  20969.    window. Definitions can be of fonts, templates, accelerators, and mnemonics. 
  20970.  
  20971.  restore  - To return a window to its original size or position following a 
  20972.    sizing or moving action. 
  20973.  
  20974.  retained graphics  - Graphic primitives that are remembered by the 
  20975.    Presentation Manager interface after they have been drawn. Contrast with 
  20976.    nonretained graphics. 
  20977.  
  20978.  return code  - (1) A value returned to a program to indicate the results of an 
  20979.    operation requested by that program. (2) A code used to influence the 
  20980.    execution of succeeding instructions.(A) 
  20981.  
  20982.  reverse video  - (1) A form of highlighting a character, field, or cursor by 
  20983.    reversing the color of the character, field, or cursor with its background; 
  20984.    for example, changing a red character on a black background to a black 
  20985.    character on a red background. (2) In SAA Basic Common User Access 
  20986.    architecture, a screen emphasis feature that interchanges the foreground and 
  20987.    background colors of an item. 
  20988.  
  20989.  REXX Language  - Restructured Extended Executor. A procedural language that 
  20990.    provides batch language functions along with structured programming 
  20991.    constructs such as loops; conditional testing and subroutines. 
  20992.  
  20993.  RGB  - (1) Color coding in which the brightness of the additive primary colors 
  20994.    of light, red, green, and blue, are specified as three distinct values of 
  20995.    white light. (2) Pertaining to a color display that accepts signals 
  20996.    representing red, green, and blue. 
  20997.  
  20998.  roman  - Relating to a type style with upright characters. 
  20999.  
  21000.  root segment  - In a hierarchical database, the highest segment in the tree 
  21001.    structure. 
  21002.  
  21003.  round-robin scheduling  - A process that allows each thread to run for a 
  21004.    specified amount of time. 
  21005.  
  21006.  run time  - (1) Any instant at which the execution of a particular computer 
  21007.    program takes place. (T)  (2) The amount of time needed for the execution of 
  21008.    a particular computer program. (T)  (3) The time during which an instruction 
  21009.    in an instruction register is decoded and performed. Synonym for execution 
  21010.    time. 
  21011.  
  21012.  
  21013. ΓòÉΓòÉΓòÉ <hidden> Glossary - S ΓòÉΓòÉΓòÉ
  21014.  
  21015.  SAA  - Systems Application Architecture. 
  21016.  
  21017.  SBCS  - Single-byte character set. 
  21018.  
  21019.  scheduler  - A computer program designed to perform functions such as 
  21020.    scheduling, initiation, and termination of jobs. 
  21021.  
  21022.  screen  - In SAA Basic Common User Access architecture, the physical surface 
  21023.    of a display device upon which information is shown to a user. 
  21024.  
  21025.  screen device context  - A logical description of a data destination that is a 
  21026.    particular window on the screen. See also device context. 
  21027.  
  21028.  SCREEN$  - Character-device name reserved for the display screen. 
  21029.  
  21030.  scroll bar  - In SAA Advanced Common User Access architecture, a part of a 
  21031.    window, associated with a scrollable area, that a user interacts with to see 
  21032.    information that is not currently allows visible. 
  21033.  
  21034.  scrollable entry field  - An entry field larger than the visible field. 
  21035.  
  21036.  scrollable selection field  - A selection field that contains more choices 
  21037.    than are visible. 
  21038.  
  21039.  scrolling  - Moving a display image vertically or horizontally in a manner 
  21040.    such that new data appears at one edge, as existing data disappears at the 
  21041.    opposite edge. 
  21042.  
  21043.  secondary window  - A window that contains information that is dependent on 
  21044.    information in a primary window and is used to supplement the interaction in 
  21045.    the primary window. 
  21046.  
  21047.  sector  - On disk or diskette storage, an addressable subdivision of a track 
  21048.    used to record one block of a program or data. 
  21049.  
  21050.  segment  - See graphics segment. 
  21051.  
  21052.  segment attributes  - Attributes that apply to the segment as an entity, as 
  21053.    opposed to the individual primitives within the segment. For example, the 
  21054.    visibility or detectability of a segment. 
  21055.  
  21056.  segment chain  - All segments in a graphics presentation space that are 
  21057.    defined with the 'chained' attribute. Synonym for picture chain. 
  21058.  
  21059.  segment priority  - The order in which segments are drawn. 
  21060.  
  21061.  segment store  - An area in a normal graphics presentation space where 
  21062.    retained graphics segments are stored. 
  21063.  
  21064.  select  - To mark or choose an item. Note that select means to mark or type in 
  21065.    a choice on the screen; enter means to send all selected choices to the 
  21066.    computer for processing. 
  21067.  
  21068.  select button  - The button on a pointing device, such as a mouse, that is 
  21069.    pressed to select a menu choice.  Also known as button 1. 
  21070.  
  21071.  selection cursor  - In SAA Advanced Common User Access architecture, a visual 
  21072.    indication that a user has selected a choice. It is represented by outlining 
  21073.    the choice with a dotted box. See also text cursor. 
  21074.  
  21075.  selection field  - (1) In SAA Advanced Common User Access architecture, a set 
  21076.    of related choices. See also entry field. (2) In SAA Basic Common User 
  21077.    Access architecture, an area of a panel that cannot be scrolled and contains 
  21078.    a fixed number of choices. 
  21079.  
  21080.  semantics  - The relationships between symbols and their meanings. 
  21081.  
  21082.  semaphore  - An object used by applications for signalling purposes and for 
  21083.    controlling access to serially reusable resources. 
  21084.  
  21085.  separator  - In SAA Advanced Common User Access architecture, a line or color 
  21086.    boundary that provides a visual distinction between two adjacent areas. 
  21087.  
  21088.  serial dialog box  - See modal dialog box. 
  21089.  
  21090.  serialization  - The consecutive ordering of items. 
  21091.  
  21092.  serialize  - To ensure that one or more events occur in a specified sequence. 
  21093.  
  21094.  serially reusable resource (SRR)  - A logical resource or object that can be 
  21095.    accessed by only one task at a time. 
  21096.  
  21097.  session  - (1) A routing mechanism for user interaction via the console; a 
  21098.    complete environment that determines how an application runs and how users 
  21099.    interact with the application. OS/2 can manage more than one session at a 
  21100.    time, and more than one process can run in a session. Each session has its 
  21101.    own set of environment variables that determine where OS/2 looks for 
  21102.    dynamic-link libraries and other important files. (2) (D of C) In the OS/2 
  21103.    operating system, one instance of a started program or command prompt. Each 
  21104.    session is separate from all other sessions that might be running on the 
  21105.    computer. The operating system is responsible for coordinating the resources 
  21106.    that each session uses, such as computer memory, allocation of processor 
  21107.    time, and windows on the screen. 
  21108.  
  21109.  Settings Notebook  - A control window that is used to display the settings for 
  21110.    an object and to enable the user to change them. 
  21111.  
  21112.  shadow  - An object that refers to another object. A shadow is not a copy of 
  21113.    another object, but is another representation of the object. 
  21114.  
  21115.  shadow box  - The area on the screen that follows mouse movements and shows 
  21116.    what shape the window will take if the mouse button is released. 
  21117.  
  21118.  shared data  - Data that is used by two or more programs. 
  21119.  
  21120.  shared memory  - In the OS/2 operating system, a segment that can be used by 
  21121.    more than one program. 
  21122.  
  21123.  shear  - In computer graphics, the forward or backward slant of a graphics 
  21124.    symbol or string of such symbols relative to a line perpendicular to the 
  21125.    baseline of the symbol. 
  21126.  
  21127.  shell  - (1) A software interface between a user and the operating system of a 
  21128.    computer. Shell programs interpret commands and user interactions on devices 
  21129.    such as keyboards, pointing devices, and touch-sensitive screens, and 
  21130.    communicate them to the operating system. (2) Software that allows a kernel 
  21131.    program to run under different operating-system environments. 
  21132.  
  21133.  shutdown  - The process of ending operation of a system or a subsystem, 
  21134.    following a defined procedure. 
  21135.  
  21136.  sibling processes  - Child processes that have the same parent process. 
  21137.  
  21138.  sibling windows  - Child windows that have the same parent window. 
  21139.  
  21140.  simple list  - A list of like values; for example, a list of user names. 
  21141.    Contrast with mixed list. 
  21142.  
  21143.  single-byte character set (SBCS)  - A character set in which each character is 
  21144.    represented by a one-byte code.  Contrast with double-byte character set. 
  21145.  
  21146.  slider box  - In SAA Advanced Common User Access architecture: a part of the 
  21147.    scroll bar that shows the position and size of the visible information in a 
  21148.    window relative to the total amount of information available. Also known as 
  21149.    thumb mark. 
  21150.  
  21151.  SOM  - System Object Model. 
  21152.  
  21153.  source file  - A file that contains source statements for items such as 
  21154.    high-level language programs and data description specifications. 
  21155.  
  21156.  source statement  - A statement written in a programming language. 
  21157.  
  21158.  specific dynamic-link module  - A dynamic-link module created for the 
  21159.    exclusive use of an application. 
  21160.  
  21161.  spin button  - In SAA Advanced Common User Access architecture, a type of 
  21162.    entry field that shows a scrollable ring of choices from which a user can 
  21163.    select a choice. After the last choice is displayed, the first choice is 
  21164.    displayed again.  A user can also type a choice from the scrollable ring 
  21165.    into the entry field without interacting with the spin button. 
  21166.  
  21167.  spline  - A sequence of one or more B╨Æzier curves. 
  21168.  
  21169.  spooler  - A program that intercepts the data going to printer devices and 
  21170.    writes it to disk. The data is printed or plotted when it is complete and 
  21171.    the required device is available.  The spooler prevents output from 
  21172.    different sources from being intermixed. 
  21173.  
  21174.  stack  - A list constructed and maintained so that the next data element to be 
  21175.    retrieved is the most recently stored. This method is characterized as 
  21176.    last-in-first-out (LIFO). 
  21177.  
  21178.  standard window  - A collection of window elements that form a panel. The 
  21179.    standard window can include one or more of the following window elements: 
  21180.    sizing borders, system menu icon, title bar, maximize/minimize/restore 
  21181.    icons, action bar and pull-downs, scroll bars, and client area. 
  21182.  
  21183.  static control  - The means by which the application presents descriptive 
  21184.    information (for example, headings and descriptors) to the user. The user 
  21185.    cannot change this information. 
  21186.  
  21187.  static storage  - (1) A read/write storage unit in which data is retained in 
  21188.    the absence of control signals. (A)  Static storage may use dynamic 
  21189.    addressing or sensing circuits. (2) Storage other than dynamic storage. (A)
  21190.  
  21191.  style  - See window style. 
  21192.  
  21193.  subclass  - A class that inherits from another class. See also Inheritance. 
  21194.  
  21195.  subdirectory  - In an IBM personal computer, a file referred to in a root 
  21196.    directory that contains the names of other files stored on the diskette or 
  21197.    fixed disk. 
  21198.  
  21199.  superclass  - A class from which another class inherits. See also inheritance. 
  21200.  
  21201.  swapping  - (1) A process that interchanges the contents of an area of real 
  21202.    storage with the contents of an area in auxiliary storage. (I)  (A)  (2) In 
  21203.    a system with virtual storage, a paging technique that writes the active 
  21204.    pages of a job to auxiliary storage and reads pages of another job from 
  21205.    auxiliary storage into real storage. (3) The process of temporarily removing 
  21206.    an active job from main storage, saving it on disk, and processing another 
  21207.    job in the area of main storage formerly occupied by the first job. 
  21208.  
  21209.  switch  - (1) In SAA usage, to move the cursor from one point of interest to 
  21210.    another;  for example, to move from one screen or window to another or from 
  21211.    a place within a displayed image to another place on the same displayed 
  21212.    image. (2) In a computer program, a conditional instruction and an indicator 
  21213.    to be interrogated by that instruction. (3) A device or programming 
  21214.    technique for making a selection, for example, a toggle, a conditional jump. 
  21215.  
  21216.  switch list  - See Task List. 
  21217.  
  21218.  symbolic identifier  - A text string that equates to an integer value in an 
  21219.    include file, which is used to identify a programming object. 
  21220.  
  21221.  symbols  - In Information Presentation Facility, a document element used to 
  21222.    produce characters that cannot be entered from the keyboard. 
  21223.  
  21224.  synchronous  - Pertaining to two or more processes that depend upon the 
  21225.    occurrence of specific events such as common timing signals. (T)  See also 
  21226.    asynchronous. 
  21227.  
  21228.  System Menu  - In the Presentation Manager, the pull-down in the top left 
  21229.    corner of a window that allows it to be moved and sized with the keyboard. 
  21230.  
  21231.  System Object Model (SOM)  - A mechanism for language-neutral, object-oriented 
  21232.    programming in the OS/2 environment. 
  21233.  
  21234.  system queue  - The master queue for all pointer device or keyboard events. 
  21235.  
  21236.  system-defined messages  - Messages that control the operations of 
  21237.    applications and provides input an other information for applications to 
  21238.    process. 
  21239.  
  21240.  Systems Application Architecture (SAA)  - A set of IBM software interfaces, 
  21241.    conventions, and protocols that provide a framework for designing and 
  21242.    developing applications that are consistent across systems. 
  21243.  
  21244.  
  21245. ΓòÉΓòÉΓòÉ <hidden> Glossary - T ΓòÉΓòÉΓòÉ
  21246.  
  21247.  table tags  - In Information Presentation Facility, a document element that 
  21248.    formats text in an arrangement of rows and columns. 
  21249.  
  21250.  tag  - (1) One or more characters attached to a set of data that contain 
  21251.    information about the set, including its identification. (I)  (A)  (2) In 
  21252.    Generalized Markup Language markup, a name for a type of document or 
  21253.    document element that is entered in the source document to identify it. 
  21254.  
  21255.  target object  - An object to which the user is transferring information. 
  21256.  
  21257.  Task List  - In the Presentation Manager, the list of programs that are 
  21258.    active. The list can be used to switch to a program and to stop programs. 
  21259.  
  21260.  terminate-and-stay-resident (TSR)  - Pertaining to an application that 
  21261.    modifies an operating system interrupt vector to point to its own location 
  21262.    (known as hooking an interrupt). 
  21263.  
  21264.  text  - Characters or symbols. 
  21265.  
  21266.  text cursor  - A symbol displayed in an entry field that indicates where typed 
  21267.    input will appear. 
  21268.  
  21269.  text window  - Also known as the VIO window. 
  21270.  
  21271.  text-windowed application  - The environment in which the operating system 
  21272.    performs advanced-video input and output operations. 
  21273.  
  21274.  thread  - A unit of execution within a process. It uses the resources of the 
  21275.    process. 
  21276.  
  21277.  thumb mark  - The portion of the scroll bar that describes the range and 
  21278.    properties of the data that is currently visible in a window. Also known as 
  21279.    a slider box. 
  21280.  
  21281.  thunk  - Term used to describe the process of address conversion, stack and 
  21282.    structure realignment, etc., necessary when passing control between 16-bit 
  21283.    and 32-bit modules. 
  21284.  
  21285.  tilde  - A mark used to denote the character that is to be used as a mnemonic 
  21286.    when selecting text items within a menu. 
  21287.  
  21288.  time slice  - (1) An interval of time on the processing unit allocated for use 
  21289.    in performing a task. After the interval has expired, processing-unit time 
  21290.    is allocated to another task, so a task cannot monopolize processing-unit 
  21291.    time beyond a fixed limit. (2) In systems with time sharing, a segment of 
  21292.    time allocated to a terminal job. 
  21293.  
  21294.  time-critical process  - A process that must be performed within a specified 
  21295.    time after an event has occurred. 
  21296.  
  21297.  timer  - A facility provided under the Presentation Manager, whereby 
  21298.    Presentation Manager will dispatch a message of class WM_TIMER to a 
  21299.    particular window at specified intervals. This capability may be used by an 
  21300.    application to perform a specific processing task at predetermined 
  21301.    intervals, without the necessity for the application to explicitly keep 
  21302.    track of the passage of time. 
  21303.  
  21304.  timer tick  - See clock tick. 
  21305.  
  21306.  title bar  - In SAA Advanced Common User Access architecture, the area at the 
  21307.    top of each window that contains the window title and system menu icon. When 
  21308.    appropriate, it also contains the minimize, maximize, and restore icons. 
  21309.    Contrast with panel title. 
  21310.  
  21311.  TLB  - Translation lookaside buffer. 
  21312.  
  21313.  transaction  - An exchange between a workstation and another device that 
  21314.    accomplishes a particular action or result. 
  21315.  
  21316.  transform  - (1) The action of modifying a picture by scaling, shearing, 
  21317.    reflecting, rotating, or translating. (2) The object that performs or 
  21318.    defines such a modification; also referred to as a transformation. 
  21319.  
  21320.  Translation lookaside buffer (TLB)  - A hardware-based address caching 
  21321.    mechanism for paging information. 
  21322.  
  21323.  Tree  - In the Presentation Manager, the window in the File Manager that shows 
  21324.    the organization of drives and directories. 
  21325.  
  21326.  truncate  - (1) To terminate a computational process in accordance with some 
  21327.    rule (A)  (2) To remove the beginning or ending elements of a string. (3) To 
  21328.    drop data that cannot be printed or displayed in the line width specified or 
  21329.    available. (4) To shorten a field or statement to a specified length. 
  21330.  
  21331.  TSR  - Terminate-and-stay-resident. 
  21332.  
  21333.  
  21334. ΓòÉΓòÉΓòÉ <hidden> Glossary - U ΓòÉΓòÉΓòÉ
  21335.  
  21336.  unnamed pipe  - A circular buffer, created in memory, used by related 
  21337.    processes to communicate with one another. Contrast with named pipe. 
  21338.  
  21339.  unordered list  - In Information Presentation Facility, a vertical arrangement 
  21340.    of items in a list, with each item in the list preceded by a special 
  21341.    character or bullet. 
  21342.  
  21343.  update region  - A system-provided area of dynamic storage containing one or 
  21344.    more (not necessarily contiguous) rectangular areas of a window that are 
  21345.    visually invalid or incorrect, and therefore are in need of repainting. 
  21346.  
  21347.  user interface  - Hardware, software, or both that allows a user to interact 
  21348.    with and perform operations on a system, program, or device. 
  21349.  
  21350.  User Shell  - A component of OS/2 that uses a graphics-based, windowed 
  21351.    interface to allow the user to manage applications and files installed and 
  21352.    running under OS/2. 
  21353.  
  21354.  utility program  - (1) A computer program in general support of computer 
  21355.    processes; for example, a diagnostic program, a trace program, a sort 
  21356.    program. (T)  (2) A program designed to perform an everyday task such as 
  21357.    copying data from one storage device to another. (A)
  21358.  
  21359.  
  21360. ΓòÉΓòÉΓòÉ <hidden> Glossary - V ΓòÉΓòÉΓòÉ
  21361.  
  21362.  value set control  - A visual component that enables a user to select one 
  21363.    choice from a group of mutually exclusive choices. 
  21364.  
  21365.  vector font  - A set of symbols, each of which is created as a series of lines 
  21366.    and curves. Synonymous with outline font. Contrast with image font. 
  21367.  
  21368.  VGA  - Video graphics array. 
  21369.  
  21370.  view  - A way of looking at an object's information. 
  21371.  
  21372.  viewing pipeline  - The series of transformations applied to a graphic object 
  21373.    to map the object to the device on which it is to be presented. 
  21374.  
  21375.  viewing window  - A clipping boundary that defines the visible part of model 
  21376.    space. 
  21377.  
  21378.  VIO  - Video Input/Output. 
  21379.  
  21380.  virtual memory (VM)  - Synonymous with virtual storage. 
  21381.  
  21382.  virtual storage  - (1) The storage space that may be regarded as addressable 
  21383.    main storage by the user of a computer system in which virtual addresses are 
  21384.    mapped into real addresses. The size of virtual storage is limited by the 
  21385.    addressing scheme of the computer system and by the amount of auxiliary 
  21386.    storage available, not by the actual number of main storage 
  21387.    locations. (I)  (A)  (2) Addressable space that is apparent to the user as 
  21388.    the processor storage space, from which the instructions and the data are 
  21389.    mapped into the processor storage locations. (3) Synonymous with virtual 
  21390.    memory. 
  21391.  
  21392.  visible region  - A window's presentation space, clipped to the boundary of 
  21393.    the window and the boundaries of any overlying window. 
  21394.  
  21395.  volume  - (1) A file-system driver that uses a block device driver for input 
  21396.    and output operations to a local or remote device. (I)  (2) A portion of 
  21397.    data, together with its data carrier, that can be handled conveniently as a 
  21398.    unit. 
  21399.  
  21400.  
  21401. ΓòÉΓòÉΓòÉ <hidden> Glossary - W ΓòÉΓòÉΓòÉ
  21402.  
  21403.  wildcard character  - Synonymous with global file-name character. 
  21404.  
  21405.  window  - (1) A portion of a display surface in which display images 
  21406.    pertaining to a particular application can be presented. Different 
  21407.    applications can be displayed simultaneously in different windows. (A)  (2) 
  21408.    An area of the screen with visible boundaries within which information is 
  21409.    displayed. A window can be smaller than or the same size as the screen. 
  21410.    Windows can appear to overlap on the screen. 
  21411.  
  21412.  window class  - The grouping of windows whose processing needs conform to the 
  21413.    services provided by one window procedure. 
  21414.  
  21415.  window coordinates  - A set of coordinates by which a window position or size 
  21416.    is defined; measured in device units, or pels. 
  21417.  
  21418.  window handle  - Unique identifier of a window, generated by Presentation 
  21419.    Manager when the window is created, and used by applications to direct 
  21420.    messages to the window. 
  21421.  
  21422.  window procedure  - Code that is activated in response to a message. The 
  21423.    procedure controls the appearance and behavior of its associated windows. 
  21424.  
  21425.  window rectangle  - The means by which the size and position of a window is 
  21426.    described in relation to the desktop window. 
  21427.  
  21428.  window resource  - A read-only data segment stored in the .EXE file of an 
  21429.    application o the .DLL file of a dynamic link library. 
  21430.  
  21431.  window style  - The set of properties that influence how events related to a 
  21432.    particular window will be processed. 
  21433.  
  21434.  window title  - In SAA Advanced Common User Access architecture, the area in 
  21435.    the title bar that contains the name of the application and the OS/2 
  21436.    operating system file name, if applicable. 
  21437.  
  21438.  Workplace Shell  - The OS/2 object-oriented, graphical user interface. 
  21439.  
  21440.  workstation  - (1) A display screen together with attachments such as a 
  21441.    keyboard, a local copy device, or a tablet. (2) (D of C) One or more 
  21442.    programmable or nonprogrammable devices that allow a user to do work. 
  21443.  
  21444.  world coordinates  - A device-independent Cartesian coordinate system used by 
  21445.    the application program for specifying graphical input and output. (I)  (A)
  21446.  
  21447.  world-coordinate space  - Coordinate space in which graphics are defined 
  21448.    before transformations are applied. 
  21449.  
  21450.  WYSIWYG  - What-You-See-Is-What-You-Get. A capability of a text editor to 
  21451.    continually display pages exactly as they will be printed. 
  21452.  
  21453.  
  21454. ΓòÉΓòÉΓòÉ <hidden> Glossary - X ΓòÉΓòÉΓòÉ
  21455.  
  21456. There are no glossary terms for this starting letter. 
  21457.  
  21458.  
  21459. ΓòÉΓòÉΓòÉ <hidden> Glossary - Y ΓòÉΓòÉΓòÉ
  21460.  
  21461. There are no glossary terms for this starting letter. 
  21462.  
  21463.  
  21464. ΓòÉΓòÉΓòÉ <hidden> Glossary - Z ΓòÉΓòÉΓòÉ
  21465.  
  21466.  z-order  - The order in which sibling windows are presented. The topmost 
  21467.    sibling window obscures any portion of the siblings that it overlaps; the 
  21468.    same effect occurs down through the order of lower sibling windows. 
  21469.  
  21470.  zooming  - The progressive scaling of an entire display image in order to give 
  21471.    the visual impression of movement of all or part of a display group toward 
  21472.    or away from an observer. (I)  (A)
  21473.  
  21474.  8.3 file-name format  - A file-naming convention in which file names are 
  21475.    limited to eight characters before and three characters after a single dot. 
  21476.    Usually pronounced "eight-dot-three." See also non-8.3 file-name format. 
  21477.