home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / toolsref.zip / TOOLSREF.INF (.txt)
OS/2 Help File  |  2001-03-02  |  563KB  |  21,793 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 | WINDOWAPI |
  1570.                  WINDOWCOMPAT | NOTWINDOWCOMPAT)
  1571.   /RESETERROR
  1572.   /STACKDOS:(0H - ffffH)
  1573.   /STACKOS2:(0H - ffffffffH)
  1574.   /VERBOSE
  1575.  
  1576. Note, that for OS/2 16-bit NE modules the maximum value for /STACKOS2 is FFFFh. 
  1577.  
  1578.  
  1579. ΓòÉΓòÉΓòÉ 4.2. Options ΓòÉΓòÉΓòÉ
  1580.  
  1581. Usage Notes: 
  1582.  
  1583.      Option characters are not case sensitive: /R and /r are equivalent. 
  1584.      Options can be shortened to the fewest characters that uniquely identify 
  1585.       them.  The characters in brackets can be omitted: /N and /NOLOGO are 
  1586.       equivalent. 
  1587.      Although use of the minimum one-letter abbreviations is allowed, if a 
  1588.       future release has an additional option starting with the same letter, 
  1589.       the one-letter option will no longer be usable. 
  1590.      The option /STACK is deprecated, and has been replaced by /STACKDOS and 
  1591.       /STACKOS2. Because /STACK has serious limitations and can potentially 
  1592.       damage an executable file, it is strongly recommended that you do not use 
  1593.       it. Use one or both of the replacement options instead. 
  1594.  
  1595.  
  1596. ΓòÉΓòÉΓòÉ 4.2.1. Formats Affected by Options ΓòÉΓòÉΓòÉ
  1597.  
  1598. The EXEHDR options that can change executable files are MIN, MAX, STACKDOS, 
  1599. STACKOS2, PMTYPE, HEAP, RESETERROR, and NEWFILES. 
  1600.  
  1601. Executable headers are used by the operating system to determine 
  1602. characteristics of the executable file, such as stack size, entry point, number 
  1603. of objects (or segments), and so on. EXEHDR recognizes three different kinds of 
  1604. executable headers:  DOS (generated by DOS linker), OS/2 16-bit (generated by 
  1605. LINK), and OS/2 32-bit (generated by LINK386). 
  1606.  
  1607. An X in the following table indicates which option changes which executable 
  1608. header: 
  1609.  
  1610. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1611. ΓöéOption         ΓöéDOS            ΓöéOS/2 16-bit    ΓöéOS/2 32-bit    Γöé
  1612. Γöé               Γöé               Γöé(LINK)         Γöé(LINK386)      Γöé
  1613. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1614. ΓöéHEAP           Γöé               ΓöéX              ΓöéX              Γöé
  1615. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1616. ΓöéMAX            ΓöéX              Γöé               Γöé               Γöé
  1617. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1618. ΓöéMIN            ΓöéX              Γöé               Γöé               Γöé
  1619. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1620. ΓöéNEWFILES       Γöé               ΓöéX              Γöé               Γöé
  1621. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1622. ΓöéPMTYPE         Γöé               ΓöéX              ΓöéX              Γöé
  1623. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1624. ΓöéRESETERROR     Γöé               ΓöéX              ΓöéX              Γöé
  1625. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1626. ΓöéSTACKDOS       ΓöéX              Γöé               Γöé               Γöé
  1627. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1628. ΓöéSTACKOS2       Γöé               ΓöéX              ΓöéX              Γöé
  1629. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1630.  
  1631. For compatibility purposes, executable files generated by either of the OS/2 
  1632. link utilities include both a DOS header and an OS/2 header. 
  1633.  
  1634.  
  1635. ΓòÉΓòÉΓòÉ 4.2.1.1. /HEA[P] ΓòÉΓòÉΓòÉ
  1636.  
  1637. Set Heap Allocation (/HEAP) 
  1638.  
  1639. Syntax:  /HEA[P]:nnnn 
  1640.  
  1641. This option sets the size of the local heap and is applicable to OS/2 
  1642. applications only. The field <nnnn> contains the local heap size in bytes. 
  1643.  
  1644. You can specify <nnnn> in decimal, octal, or hexadecimal radix using standard C 
  1645. language notation. 
  1646.  
  1647.  
  1648. ΓòÉΓòÉΓòÉ 4.2.1.2. /HEL[P] and /? ΓòÉΓòÉΓòÉ
  1649.  
  1650. Display Help (/HELP or /?) 
  1651.  
  1652. Syntax:  /HEL[P]   OR   /? 
  1653.  
  1654. This option displays a brief summary of EXEHDR syntax. 
  1655.  
  1656.  
  1657. ΓòÉΓòÉΓòÉ 4.2.1.3. /MA[X] ΓòÉΓòÉΓòÉ
  1658.  
  1659. Set Maximum Allocation (/MAX) 
  1660.  
  1661. Syntax:  /MA[X]:nnnn 
  1662.  
  1663. This option sets the maximum allocation of memory for the program. The field 
  1664. <nnnn> contains the maximum number of 16-byte paragraphs required to load and 
  1665. run the program. This value must be equal to or greater than the minimum 
  1666. allocation. 
  1667.  
  1668. Compare to /MIN. 
  1669.  
  1670. The Maximum Allocation option is equivalent to the LINK386 /CParmaxalloc 
  1671. option. 
  1672.  
  1673. Refer to Set Max Allocation Space (/CP) (in LINK386 Help) 
  1674.  
  1675. You can specify <nnnn> in decimal, octal, or hexadecimal radix using standard C 
  1676. language notation. 
  1677.  
  1678.  
  1679. ΓòÉΓòÉΓòÉ 4.2.1.4. /MI[N] ΓòÉΓòÉΓòÉ
  1680.  
  1681. Set Minimum Allocation (/MIN) 
  1682.  
  1683. Syntax:  /MI[N]:nnnn 
  1684.  
  1685. This option sets the minimum allocation of memory for the program. The field 
  1686. <nnnn> contains the minimum number of 16-byte paragraphs required to load and 
  1687. run the program. This value must be equal to or less than the maximum 
  1688. allocation. 
  1689.  
  1690. Compare to /MAX. 
  1691.  
  1692. You can specify <nnnn> in decimal, octal, or hexadecimal radix using standard C 
  1693. language notation. 
  1694.  
  1695.  
  1696. ΓòÉΓòÉΓòÉ 4.2.1.5. /NE[WFILES] ΓòÉΓòÉΓòÉ
  1697.  
  1698. New Files (/NEWFILES) 
  1699.  
  1700. Syntax:  /NE[WFILES] 
  1701.  
  1702. This option enables long file name support for OS/2 16-bit LINK files. OS/2 
  1703. 32-bit LINK386 files have long file name support. 
  1704.  
  1705.  
  1706. ΓòÉΓòÉΓòÉ 4.2.1.6. /NO[LOGO] ΓòÉΓòÉΓòÉ
  1707.  
  1708. Suppress Sign-On Banner (/NOLOGO) 
  1709.  
  1710. Syntax:  /NO[LOGO] 
  1711.  
  1712. This option suppresses the sign-on banner displayed by EXEHDR when it starts. 
  1713.  
  1714.  
  1715. ΓòÉΓòÉΓòÉ 4.2.1.7. /P[MTYPE] ΓòÉΓòÉΓòÉ
  1716.  
  1717. Set Application Type (/PMTYPE) 
  1718.  
  1719. Syntax:  /P[MTYPE]:type 
  1720.  
  1721. This option specifies the type of application.  It pertains only to OS/2 
  1722. applications.  The /PMTYPE option in EXEHDR is equivalent to either the NAME 
  1723. Statement in the module-definition file or the Name Application Type (/PM) in 
  1724. LINK386. 
  1725.  
  1726. A keyword in <type> is equivalent to a keyword in a NAME statement, as shown in 
  1727. the following list: 
  1728.  
  1729.  Field Keyword       Equiv. Keyword 
  1730.  
  1731.  PM                  WINDOWAPI 
  1732.  
  1733.  VIO                 WINDOWCOMPAT 
  1734.  
  1735.  NOVIO               NOTWINDOWCOMPAT 
  1736.  
  1737.  The NAME statement keyword is also accepted. 
  1738.  
  1739.  
  1740. ΓòÉΓòÉΓòÉ 4.2.1.8. /R[ESETERROR] ΓòÉΓòÉΓòÉ
  1741.  
  1742. Reset LINK386 Error (/RESETERROR) 
  1743.  
  1744. Syntax:  /R[ESETERROR] 
  1745.  
  1746. This option clears an error flag stored in OS/2 applications. The error flag is 
  1747. set by LINK386 when the link has unresolved external references or duplicate 
  1748. symbol definitions (any LINK386 error messages starting with L2xxx). 
  1749.  
  1750. OS/2 does not load the application if the error flag is set. This option allows 
  1751. you to attempt to run a program with LINK386 errors and is useful during 
  1752. application development. 
  1753.  
  1754.  
  1755. ΓòÉΓòÉΓòÉ 4.2.1.9. /STACKDOS ΓòÉΓòÉΓòÉ
  1756.  
  1757. Set DOS Stack Allocation (/STACKDOS) 
  1758.  
  1759. Syntax:  /STACKDOS:nnnn 
  1760.  
  1761. This option sets the size of the stack in the DOS header. The field nnnn 
  1762. contains the stack size in bytes. This option is equivalent to the Control 
  1763. Stack Size (/ST) (in LINK). DOS modules have a maximum stack size of 65,535. 
  1764.  
  1765. Almost all OS/2 applications have a DOS header and DOS stub. The DOS stub 
  1766. normally is found in 3 forms. First, the LINK386 default stub. This simply 
  1767. prints an error message and exits the DOS program. It will say something like 
  1768. "Can only be run from Presentation Manager". The second common stub type is a 
  1769. FAPI (Family API) program. This allow the applications to be run equally from a 
  1770. real DOS machine, an OS/2 or Windows DOS box, or from an OS/2 protected mode 
  1771. session. Most of the OS/2 system utilities are written with FAPI. Third stub 
  1772. type is independant DOS and OS/2 binary images in one single application. The 
  1773. DOS .exe is included in the OS/2 STUB statement of the LINK386 .def file. 
  1774.  
  1775. You can specify nnnn in decimal, hexadecimal, or octal radix using standard C 
  1776. language notation. For instance, a DOS stack size of 4,096 bytes can be 
  1777. expressed as any of the following: 
  1778.  
  1779.      /STACKDOS:4096 
  1780.  
  1781.      /STACKDOS:0x1000 
  1782.  
  1783.      /STACKDOS:010000 
  1784.  
  1785.  Compare to /STACKOS2. 
  1786.  
  1787.  DO NOT USE /STACK 
  1788.  
  1789.  There is an old EXEHDR option /STACK that performed a function similar to 
  1790.  /STACKDOS and /STACKOS2 combined. The old /STACK option has serious 
  1791.  limitations and potentially dangerous side effects. It it very strongly 
  1792.  recommended that you do not use /STACK, and start using /STACKDOS and 
  1793.  /STACKOS2 instead. For an old DOS only application, the /STACK option should 
  1794.  work just fine. For a 32-bit OS/2 application, the old /STACK will change only 
  1795.  the DOS stub stack header, not the OS/2 header. For a 16-bit OS/2 application, 
  1796.  the old /STACK option will attempt to change both the DOS stub and OS/2 header 
  1797.  stack values to the same nnnn value. This is potentially disasterous. The DOS 
  1798.  stub and OS/2 headers are sometimes independant of each other. Attempts to 
  1799.  change one might have disasterous results in the other. Since there are 2 
  1800.  stacks in 2 different headers in the same application there needs to be 2 
  1801.  different options: /STACKDOS and /STACKOS2. 
  1802.  
  1803.  
  1804. ΓòÉΓòÉΓòÉ 4.2.1.10. /STACKOS2 ΓòÉΓòÉΓòÉ
  1805.  
  1806. Set OS/2 Stack Allocation (/STACKOS2) 
  1807.  
  1808. Syntax:  /STACKOS2:nnnn 
  1809.  
  1810. This option sets the size of the stack in the OS/2 header. The field nnnn 
  1811. contains the stack size in bytes. This option is equivalent to the Control 
  1812. Stack Size (/ST) (in LINK386 Help). OS/2 16-bit NE modules have a maximum stack 
  1813. size of 65,535. OS/2 32-bit LX modules have a maximum stack size of 
  1814. 4,294,967,295. The /STACKOS2 only changes the OS/2 header and has no effect on 
  1815. the DOS stub in the same module. 
  1816.  
  1817. You can specify nnnn in decimal, hexadecimal, or octal radix using standard C 
  1818. language notation. For instance, an OS/2 stack size of 32,768 bytes can be 
  1819. expressed as any of the following: 
  1820.  
  1821.      /STACKOS2:32768 
  1822.  
  1823.      /STACKOS2:0x8000 
  1824.  
  1825.      /STACKOS2:0100000 
  1826.  
  1827.  Compare to /STACKDOS. 
  1828.  
  1829.  DO NOT USE /STACK 
  1830.  
  1831.  There is an old EXEHDR option /STACK that performed a function similar to 
  1832.  /STACKDOS and /STACKOS2 combined. The old /STACK option has serious 
  1833.  limitations and potentially dangerous side effects. It it strongly recommended 
  1834.  that you no longer use /STACK, and start using /STACKDOS and /STACKOS2 
  1835.  instead. For an old DOS only application, the /STACK option should work just 
  1836.  fine. For a 32-bit OS/2 application, the old /STACK will change only the DOS 
  1837.  stub stack header, not the OS/2 header. For a 16-bit OS/2 application, the old 
  1838.  /STACK option will attempt to change both the DOS stub and OS/2 header stack 
  1839.  values to the same nnnn value. This is potentially disasterous. The DOS stub 
  1840.  and OS/2 headers are sometimes independant of each other. Attempts to change 
  1841.  one might have disasterous results in the other. Since there are 2 stacks in 2 
  1842.  different headers in the same application there needs to be 2 different 
  1843.  options: /STACKDOS and /STACKOS2. 
  1844.  
  1845.  
  1846. ΓòÉΓòÉΓòÉ 4.2.1.11. /V[ERBOSE] ΓòÉΓòÉΓòÉ
  1847.  
  1848. Display in Verbose Mode (/VERBOSE) 
  1849.  
  1850. Syntax:  /V[ERBOSE] 
  1851.  
  1852. This option displays the executable-file header in verbose mode. 
  1853.  
  1854.  
  1855. ΓòÉΓòÉΓòÉ 4.3. Output ΓòÉΓòÉΓòÉ
  1856.  
  1857. EXEHDR lists the current contents of the file header and information about each 
  1858. object (or segment) in the file. To redirect this output to a printer or disk 
  1859. file, use the operating system redirection operator. 
  1860.  
  1861. The output is in two parts: a Header Listing giving the contents of the file 
  1862. header; and an Object or Segment Listing giving attributes of all objects (or 
  1863. segments) in the file.  If the /VERBOSE option is specified, additional output 
  1864. is generated. 
  1865.  
  1866.  
  1867. ΓòÉΓòÉΓòÉ 4.3.1. Header Listing ΓòÉΓòÉΓòÉ
  1868.  
  1869. The header listing is comprised of the following fields: 
  1870.  
  1871.  <Module> Name of Application 
  1872.  
  1873.       This field lists the name of the application as specified in the NAME 
  1874.       statement of the module-definition file. 
  1875.  
  1876.       If no module definition was used to create the executable file, this 
  1877.       field displays the name assumed by default. 
  1878.  
  1879.       If a module definition was used to create the file, but the LIBRARY 
  1880.       statement appeared instead of the NAME statement (thus specifying a 
  1881.       dynamic-link library), the name of the library is given and EXEHDR uses 
  1882.       the word "Library" instead of "Module" to identify the field. 
  1883.  
  1884.  <Description> Description of Application 
  1885.  
  1886.       This field gives the contents, if any, of the DESCRIPTION statement of 
  1887.       the module-definition file used to create the file being examined. 
  1888.  
  1889.  <Data> Type of Automatic Data Object 
  1890.  
  1891.       This field indicates the type of automatic data segment in a program: 
  1892.       SHARED, NONSHARED, or NONE.  This type can be specified in a 
  1893.       module-definition file.  The defaults are NONSHARED for applications and 
  1894.       SHARED for dynamic-link libraries. 
  1895.  
  1896.  <Initial CS:IP> Program Starting Address 
  1897.  
  1898.       This field gives the program starting address (if an application is being 
  1899.       examined) or address of the initialization routine (if a dynamic-link 
  1900.       library is being examined). 
  1901.  
  1902.  <Initial SS:SP> Initial Stack Pointer 
  1903.  
  1904.       This field gives the value of the initial stack pointer. 
  1905.  
  1906.  <Extra Stack Allocation> Additional stack allocation 
  1907.  
  1908.       This field gives the value of the extra stack location. 
  1909.  
  1910.  <DGROUP> Automatic-Data-Object Number 
  1911.  
  1912.  
  1913. ΓòÉΓòÉΓòÉ 4.3.2. Object or Segment Listing ΓòÉΓòÉΓòÉ
  1914.  
  1915. The object listing is comprised of the following fields: 
  1916.  
  1917.  no.         Object index number, starting with 1, in decimal 
  1918.  
  1919.  type        Identification of the object as a code or data object 
  1920.  
  1921.              A code object is comprised of segments with class name ending in 
  1922.              CODE. All other objects are data objects. 
  1923.  
  1924.  address     Location, within the file, of the contents of the object (in 
  1925.              hexadecimal) 
  1926.  
  1927.  file        Size of the object (in bytes), as contained in the file (in 
  1928.              hexadecimal) 
  1929.  
  1930.  mem         Size of the object (in bytes), as it is stored in memory (in 
  1931.              hexadecimal) 
  1932.  
  1933.              If the value of this field is greater than the value of <file>, 
  1934.              the operating system pads the additional space with zero values at 
  1935.              load time. 
  1936.  
  1937.  flags       Object attributes 
  1938.  
  1939.              If the /VERBOSE option is not used, only non-default attributes 
  1940.              are listed.  Attributes are given in the form specified in the 
  1941.              module-definition file. 
  1942.  
  1943.  
  1944. ΓòÉΓòÉΓòÉ 4.3.3. Output Example ΓòÉΓòÉΓòÉ
  1945.  
  1946. The following output is generated by EXEHDR for the executable file 
  1947. LINK386.EXE: 
  1948.  
  1949. Module:                    LINK386
  1950. Description:               Operating System/2 32-bit LX Linker
  1951. Data:                      NONSHARED
  1952. Initial CS:IP:             seg   2 offset 6c78
  1953. Initial SS:SP:             seg   4 offset 0000
  1954. Extra stack allocation:    4000 bytes
  1955. DGROUP:                    seg   4
  1956.  
  1957. no. type address  file  mem   flags
  1958.   1 CODE 00006000 0f7d6 0f7d7
  1959.   2 CODE 00015a00 08e40 08e40
  1960.   3 DATA 0001ea00 02865 02865
  1961.   4 DATA 00021400 02337 08bd0
  1962.  
  1963.  
  1964. ΓòÉΓòÉΓòÉ 4.3.4. Verbose Output ΓòÉΓòÉΓòÉ
  1965.  
  1966. When you specify the /VERBOSE option, EXEHDR generates additional output: 
  1967.  
  1968.      DOS-specific header information. All OS/2 executable files have a DOS 
  1969.       header, whether bound or not.  If the program is not bound, the DOS 
  1970.       portion typically consists of a stub that simply terminates the program. 
  1971.  
  1972.      OS/2-specific header information. The object-table display in verbose 
  1973.       mode is described below. 
  1974.  
  1975.      File addresses and lengths of the various tables in the executable file. 
  1976.       For each table, the following is generated: 
  1977.  
  1978.         -  Name of the table 
  1979.         -  Address of the table within the file 
  1980.         -  Length of the table in hexadecimal radix 
  1981.         -  Length of the table in decimal radix 
  1982.  
  1983.      Object table with complete attributes, not just the non-default 
  1984.       attributes. The /VERBOSE option displays two additional attributes: 
  1985.  
  1986.         -  The RELOCS attribute is displayed for each object that has address 
  1987.            relocations. Relocations occur in each object that references 
  1988.            objects in other objects or makes dynamic-link references. 
  1989.         -  The ITERATED attribute is displayed for each object that has 
  1990.            iterated data. Iterated data consist of a special code that packs 
  1991.            repeated bytes. 
  1992.  
  1993.      Run-time relocations and fixups. 
  1994.  
  1995.      All exported entry points. 
  1996.  
  1997.  
  1998. ΓòÉΓòÉΓòÉ 4.4. Error messages ΓòÉΓòÉΓòÉ
  1999.  
  2000. EXEHDR error messages: 
  2001.  
  2002.  EXH1100: invalid magic number xxxxH 
  2003.                      {#define ER_badmagic} 
  2004.                      EXEHDR discovered an unknown signature xxxx in the header 
  2005.                      for the file. The signature in the header of a file 
  2006.                      identifies the type of .EXE to the operating system. 
  2007.                      EXEHDR only recognizes signatures for DOS (5A4DH) and OS/2 
  2008.                      (454EH and 584CH) files. Make sure the file is not a DOS 
  2009.                      .com image. Also make sure that it is a DOS or OS/2 .EXE 
  2010.                      file. Many Windows and Linux files have a different 
  2011.                      signature. 
  2012.  
  2013.  EXH1101: automatic data segment greater than 64K; correcting heap size 
  2014.                      {#define ER_autodata1} 
  2015.                      There was not enough space in the automatic data segment 
  2016.                      to accommodate the requested new heap size. The heap size 
  2017.                      has been adjusted to the maximum available space. This 
  2018.                      error only occurs for 16-bit OS/2 applications. If /HEAP 
  2019.                      or /STACKOS2 is used then the total size of DGROUP plus 
  2020.                      the heap plus the stack must be less than 64K. The heap 
  2021.                      will be assigned 64K-1-DGROUP-STACK. EXEHDR issues this 
  2022.                      warning that it performed the .EXE file modification with 
  2023.                      a reduced HEAP value. Make sure the reduced value is 
  2024.                      acceptable. 
  2025.  
  2026.  EXH1102: automatic data segment greater than 64K; correcting stack size 
  2027.                      {#define ER_autodata2} 
  2028.                      There was not enough space in the automatic data segment 
  2029.                      to accommodate the requested new stack size. The stack 
  2030.                      size has been adjusted to the maximum available space. 
  2031.                      This error only occurs for 16-bit OS/2 applications. If 
  2032.                      /HEAP or /STACKOS2 is used then the total size of DGROUP 
  2033.                      plus the heap plus the stack must be less than 64K. This 
  2034.                      error occurs when the heap is zero. The stack will be 
  2035.                      assigned 64K-1-DGROUP.  ACTION: EXEHDR issues this warning 
  2036.                      that it performed the .EXE file modification with a 
  2037.                      reduced STACK value. Make sure the reduced value is 
  2038.                      acceptable. 
  2039.  
  2040.  EXH1103: invalid .EXE file : actual length less than reported 
  2041.                      {#define ER_badsize} 
  2042.                      The second and third fields in the input DOS file header 
  2043.                      indicate a file size greater than the actual size of the 
  2044.                      file. This error occurs in DOS files only. EXEHDR assumes 
  2045.                      the file has been corrupted and will not perform any 
  2046.                      modifications. 
  2047.  
  2048.  EXH1104: cannot change load-high program 
  2049.                      {#define ER_high} 
  2050.                      When the minimum allocation value and the maximum 
  2051.                      allocation value are both 0, the file cannot be modified. 
  2052.                      Both minimum and maximum allocation of 0 is not a legal 
  2053.                      value for a DOS header. This is a DOS header only error 
  2054.                      condition. Change either /MIN or /MAX to a non-zero value. 
  2055.  
  2056.  EXH1105: minimum allocation less than stack; correcting minimum 
  2057.                      {#define ER_minalloc1} 
  2058.                      If the minimum allocation is not enough to accommodate the 
  2059.                      stack (either the original stack request or the modified 
  2060.                      request), the minimum allocation value is adjusted. This 
  2061.                      error applies only to DOS programs. This is a warning that 
  2062.                      EXEHDR has modified the /MIN value to create a legal DOS 
  2063.                      .EXE header. Make sure the new /MIN value is acceptable. 
  2064.  
  2065.  EXH1106: minimum allocation greater than maximum; correcting maximum 
  2066.                      {#define ER_minalloc2} 
  2067.                      If the minimum allocation is greater than the maximum 
  2068.                      allocation, the maximum allocation value is adjusted. If a 
  2069.                      display of DOS header values is requested, the values 
  2070.                      shown will be the values after the packed file is 
  2071.                      expanded. This error applies only to DOS programs. This is 
  2072.                      a warning that EXEHDR has modified the /MAX value to 
  2073.                      create a legal DOS .EXE header. Make sure the new /MAX 
  2074.                      value is acceptable. 
  2075.  
  2076.  EXH1107: unexpected end of resident/nonresident name table 
  2077.                      {#define ER_minalloc2} 
  2078.                      While decoding run-time relocation records, EXEHDR found 
  2079.                      the end of the resident/nonresident name table. The .EXE 
  2080.                      file is probably corrupted. This error applies only to 
  2081.                      OS/2 and Windows programs. The current version of EXEHDR 
  2082.                      will not issue this error any longer. Therefore, report to 
  2083.                      IBM if you receive this error with the current version of 
  2084.                      EXEHDR. 
  2085.  
  2086.  EXH1108: unknown format of relocation records 
  2087.                      {#define ER_badreloc} 
  2088.                      EXEHDR cannot decode the information in the file header 
  2089.                      because the header is not in a standard format. The fixup 
  2090.                      relocation count is 0, which is not permitted. This error 
  2091.                      applies only to OS/2 and Windows programs. 
  2092.  
  2093.  EXH1109: illegal value 'xxxx' 
  2094.                      {#define ER_illval} 
  2095.                      A command-line argument to EXEHDR contained an illegal 
  2096.                      value. Retry the EXEHDR command with a correct option. 
  2097.  
  2098.  EXH1110: malformed number xxxx 
  2099.                      {#define ER_badnum} 
  2100.                      A command-line option for EXEHDR required a value, but the 
  2101.                      specified number was mistyped. Retry the EXEHDR command 
  2102.                      with a correct option. 
  2103.  
  2104.  EXH1111: option requires value 
  2105.                      {#define ER_noval} 
  2106.                      A command-line option for EXEHDR required a value, but no 
  2107.                      value was specified, or the specified value was in an 
  2108.                      illegal format for the given option. Retry the EXEHDR 
  2109.                      command with a correct option. 
  2110.  
  2111.  EXH1112: value out of legal range xxxx - xxxx 
  2112.                      {#define ER_range1} 
  2113.                      A command-line option for EXEHDR required a value, but the 
  2114.                      specified number did not fall in the required decimal 
  2115.                      range. The current version of EXEHDR will not issue this 
  2116.                      error any longer. Therefore, report to IBM if you receive 
  2117.                      this error with the current version of EXEHDR. 
  2118.  
  2119.  EXH1113: value out of legal range xxxxH - xxxxH 
  2120.                      {#define ER_range2} 
  2121.                      A command-line option for EXEHDR required a value, but the 
  2122.                      specified number did not fall in the required hexadecimal 
  2123.                      range. Retry the EXEHDR command with a correct option. 
  2124.  
  2125.  EXH1114: missing option value; option xxxx ignored 
  2126.                      {#define ER_noval1} 
  2127.                      A command-line option for EXEHDR required a value, but 
  2128.                      nothing was specified. EXEHDR ignored the option. Retry 
  2129.                      the EXEHDR command with a correct option. 
  2130.  
  2131.  EXH1115: option xxxx ignored 
  2132.                      {#define ER_igno} 
  2133.                      A command-line option for EXEHDR was ignored. This error 
  2134.                      usually occurs with error U1116, unrecognized option. 
  2135.                      Retry the EXEHDR command with a correct option. 
  2136.  
  2137.  EXH1116: unrecognized option: xxxx 
  2138.                      {#define ER_unrec} 
  2139.                      A command-line option for EXEHDR was not recognized. This 
  2140.                      error usually occurs with either U1115, option ignored, or 
  2141.                      U1111, option requires value. Retry the EXEHDR command 
  2142.                      with a correct option. 
  2143.  
  2144.  EXH1117: The same option has been used more than once 
  2145.                      {#define ER_twice} 
  2146.                      You are not permitted to enter the same option more than 
  2147.                      once. Correct the command line by only entering each 
  2148.                      option only once. 
  2149.  
  2150.  EXH1118: Invalid option combination xxxx 
  2151.                      {#define ER_combine} 
  2152.                      Certain options can not be used together. For instance, 
  2153.                      /STACK is deprecated and replace by /STACKDOS and 
  2154.                      /STACKOS2. You are not permitted to use /STACK in 
  2155.                      combination with the replacement options. Remove the 
  2156.                      offending option. 
  2157.  
  2158.  EXH1119: /STACK deprecated, use /STACKDOS and/or /STACKOS2 
  2159.                      {#define ER_stackdep} 
  2160.                      The /STACK option should not be used any longer. Use the 
  2161.                      /STACKDOS and/or /STACKOS2 options instead. /STACK does 
  2162.                      not work on the LX 32-bit OS/2 binary files. Furthermore, 
  2163.                      on NE 16-bit OS/2 and Windows binary files it will attempt 
  2164.                      to change both the MZ DOS stub and the 16-bit NE stack 
  2165.                      values. This is potentially dangerous because the 2 stacks 
  2166.                      may have no relationship to each other. By changing one, 
  2167.                      you could accidently damage the other. To distinguish 
  2168.                      which stack you want to change use /STACKDOS or /STACKOS2. 
  2169.                      If you happen to want to change both stacks, then use both 
  2170.                      the /STACKDOS and /STACKOS2 options. Remove the /STACK 
  2171.                      option from your command line. Use the /STACKDOS and/or 
  2172.                      /STACKOS2 options instead. 
  2173.  
  2174.  EXH1120: input file missing 
  2175.                      {#define ER_noinp} 
  2176.                      No input file was specified on the EXEHDR command line. 
  2177.                      Retry the EXEHDR command with a correct filename. 
  2178.  
  2179.  EXH1121: command line too long: xxxx 
  2180.                      {#define ER_cmdmax} 
  2181.                      The current version of EXEHDR will not issue this error 
  2182.                      any longer. Therefore, report to IBM if you receive this 
  2183.                      error with the current version of EXEHDR. 
  2184.  
  2185.  EXH1122: input filename too long: xxxx 
  2186.                      {#define ER_filmax} 
  2187.                      The specified filename is longer than the allowable 
  2188.                      filename size. The current maximum size is 256 characters. 
  2189.                      Retry the EXEHDR command with a correct filename. 
  2190.  
  2191.  EXH1124: Invalid information level requested 
  2192.                      {#define ER_badinfo} 
  2193.                      DLL call to FileVerParseModuleVersion returns rc=124. 
  2194.  
  2195.  EXH1130: cannot read 'xxxx' 
  2196.                      {#define ER_read} 
  2197.                      EXEHDR could not read the input file. Either the file is 
  2198.                      missing or the file attribute is set to prevent reading. 
  2199.                      Make sure the file was correctly specified. If EXEHDR file 
  2200.                      modifying options are specified, make sure the file is 
  2201.                      read/write accessable. File modifying options require the 
  2202.                      ability to write to the file. 
  2203.  
  2204.  EXH1131: not valid .EXE file 
  2205.                      {#define ER_illexe} 
  2206.                      The input file specified on the EXEHDR command line was 
  2207.                      not a valid .EXE file. 
  2208.  
  2209.  EXH1132: unexpected end-of-file 
  2210.                      {#define ER_eof} 
  2211.                      EXEHDR found an unexpected end-of-file condition while 
  2212.                      reading the .EXE file. The .EXE file is probably corrupt. 
  2213.  
  2214.  EXH1133: no Import Procedure Names Table 
  2215.                      {#define ER_noimptab} 
  2216.  
  2217.  EXH1134: loop in internal fixup chain 
  2218.                      {#define ER_chaincycle} 
  2219.  
  2220.  EXH1140: out of memory 
  2221.                      {#define ER_memovf} 
  2222.                      There was not enough memory for EXEHDR to decode the 
  2223.                      header of the executable file. 
  2224.  
  2225.  EXH1150: Not a valid module version value 
  2226.                      {#define ER_badmodver} 
  2227.                      A call to FileVerParseModuleVersion returns rc=150. 
  2228.  
  2229.  
  2230. ΓòÉΓòÉΓòÉ 5. Font Editor ΓòÉΓòÉΓòÉ
  2231.  
  2232. You can use the OS/2 Font Editor to design and save your own fonts for use in 
  2233. applications. 
  2234.  
  2235. A font is a set of alphanumeric characters, punctuation marks, and other 
  2236. symbols that share a common typeface design and line weight. An application 
  2237. loads a font from a dynamic-link library file (.DLL file). 
  2238.  
  2239. The Font Editor allows you to edit an enlarged version of each character in an 
  2240. editing window, using the mouse to switch the enlarged representation of pels 
  2241. to black or white. 
  2242.  
  2243. You can change a series of pels by dragging the mouse pointer through them 
  2244. while holding down the mouse button. An enlarged scale version of the character 
  2245. is shown in a viewing window to the right of the edit window. 
  2246.  
  2247.  
  2248. ΓòÉΓòÉΓòÉ 5.1. Using the Font Editor ΓòÉΓòÉΓòÉ
  2249.  
  2250. To run the Font Editor, select Font Editor from the PM Development Tools 
  2251. folder. 
  2252.  
  2253. Select one of the options in the File menu to open a new or existing font. The 
  2254. letter A appears in both the editing and viewing windows. The rest of the font 
  2255. appears in the character selection scroll box at the bottom of the Font Editor 
  2256. window. 
  2257.  
  2258. To edit any other character in the font, select it from the character selection 
  2259. scroll box.  The character appears in the editing and viewing windows. 
  2260.  
  2261. Font Editing Functions 
  2262.  
  2263.       Functions for defining fonts are found on the Header menu. 
  2264.  
  2265.       Functions for editing character width are found on the Width and Shift 
  2266.       menus. 
  2267.  
  2268.  
  2269. ΓòÉΓòÉΓòÉ 5.1.1. Defining Fonts ΓòÉΓòÉΓòÉ
  2270.  
  2271. Use the Header menu to define the typestyle that you want to create: 
  2272.  
  2273.      Select Naming to specify the identification details such as the type-face 
  2274.       name. 
  2275.  
  2276.      Select General to specify spacing (fixed or proportional), type face 
  2277.       style, line width, and type weight. 
  2278.  
  2279.      Select Sizes to specify the font character dimensions. 
  2280.  
  2281.      Select Relations to specify the position of characters. 
  2282.  
  2283.      Select Definition to change character spacing in a proportional font. 
  2284.  
  2285.  
  2286. ΓòÉΓòÉΓòÉ 5.1.2. Editing Character Width ΓòÉΓòÉΓòÉ
  2287.  
  2288. The Width and Shift menus allow you to change the width of individual 
  2289. characters. 
  2290.  
  2291. The Width Menu 
  2292.  
  2293. Use the Width menu to alter the width of a single character. This menu is 
  2294. enabled only when you are editing a proportional space font. You can make a 
  2295. character wider or narrower by adding or deleting columns of pels from the 
  2296. right, the left, or both sides. You may also use the Set Character Increment 
  2297. option to set the width of a character. On-line help panels describe how to 
  2298. perform these functions. 
  2299.  
  2300. The Shift Menu 
  2301.  
  2302. Use the Shift menu to insert a one-pel-wide row or column into (or delete from) 
  2303. the character that you are editing. When you select shift, the pointer becomes 
  2304. a flat horizontal or vertical bar when inside the edit window.  This enables 
  2305. you to position it exactly where you want the operation to take place. 
  2306.  
  2307. To cancel a shift you have selected before execution, select Cancel Choice. 
  2308.  
  2309.  
  2310. ΓòÉΓòÉΓòÉ 5.1.3. Font Resource Files ΓòÉΓòÉΓòÉ
  2311.  
  2312. The Font Editor creates a file with a .FNT extension. The .FNT file is not 
  2313. referred to in the same resource file as other resources. 
  2314.  
  2315. Instead, it has its own resource file that contains a single-line statement 
  2316. that has a similar format to the ICON, POINTER, and BITMAP statements, for 
  2317. example: 
  2318.  
  2319. FONT  101      myfont.fnt     /* Font */
  2320.  
  2321. The FONT keyword identifies the resource type. 
  2322.  
  2323. The resource type is followed by an integer identifier that is used by the 
  2324. application to identify the resource. The integer is used as a parameter to the 
  2325. WinCreateStdWindow call. You cannot use a symbolic name for a font. 
  2326.  
  2327. The integer identifier can be followed by loading and memory options. Again, 
  2328. the example lets them default. 
  2329.  
  2330. The last part of the statement is the file name of the resource created by the 
  2331. Font Editor. A full path name must be given if it is not in the current 
  2332. directory. 
  2333.  
  2334. Producing a font file uses a process similar to binding resources to an .EXE 
  2335. file. You bind one or more .FNT files to a dummy .DLL, to produce a file 
  2336. containing the font or fonts. The final file should have the extension .FON. 
  2337.  
  2338. The .FON file created by the process is installed on the system and becomes a 
  2339. public font, a font that can be used by any application in the system. 
  2340.  
  2341. A font not installed on the system is called a private font. Before your 
  2342. application can use the font, your application must use GpiLoadFonts to load 
  2343. the .FON file. 
  2344.  
  2345.  
  2346. ΓòÉΓòÉΓòÉ 6. Forwarded Entry Point (FWDSTAMP) ΓòÉΓòÉΓòÉ
  2347.  
  2348. FWDSTAMP adds entry points, called forwarders, to a dynamic link library file 
  2349. (.DLL). Forwarders point to API functions or other exported code or data. They 
  2350. contain an import reference so that the final target address of the forwarded 
  2351. entry is contained in a different module. A forwarder might be called an 
  2352. imported export. 
  2353.  
  2354. When a file has a fix-up to a forwarded entry point, the loader resolves that 
  2355. fix-up to the address of the entry point that the forwarder imports, by 
  2356. traversing the chain of forwarders until the end of the chain (a nonforwarded 
  2357. export) is reached.  All forwarders are implicitly exported. 
  2358.  
  2359. The imported entry point that a forwarder refers to may itself be another 
  2360. forwarder. The loader will process a chain of forwarders until a nonforwarder 
  2361. entry point is encountered. 
  2362.  
  2363. There is no run-time cost to forwarders; however, there is a slight load-time 
  2364. cost as the loader resolves forwarder chains with their final addresses. 
  2365.  
  2366.  
  2367. ΓòÉΓòÉΓòÉ 6.1. Using Forwarders ΓòÉΓòÉΓòÉ
  2368.  
  2369. You use forwarders to combine several DLLs into one without having to relink 
  2370. old applications. For example, if MOUCALLS and VIOCALLS were combined into a 
  2371. single DLL called NEWLIB.DLL, then MOUCALLS and VIOCALLS could be replaced with 
  2372. special DLLs containing forwarders to NEWLIB.DLL. 
  2373.  
  2374. Important Notes 
  2375.  
  2376.      FWDSTAMP parses only the IMPORTS and EXPORTS section of the module 
  2377.       definition file.  FWDSTAMP does not verify the syntax of the other 
  2378.       sections. 
  2379.  
  2380.      When exported names already exist in the input file, their attributes are 
  2381.       kept, such as resident or nonresident names table, and ordinal numbers. 
  2382.       Any new conflicting attributes are ignored. 
  2383.  
  2384.      If there is no exported name, FWDSTAMP adds the one defined by the 
  2385.       EXPORTS statement in the module definition file. 
  2386.  
  2387.  
  2388. ΓòÉΓòÉΓòÉ 6.1.1. Starting FWDSTAMP ΓòÉΓòÉΓòÉ
  2389.  
  2390. You can start FWDSTAMP and specify all input from the command line.  An example 
  2391. of the syntax follows: 
  2392.  
  2393.    FWDSTAMP [options] infile deffile outfile
  2394.  
  2395.  [options]   Specifies one of the following: 
  2396.  
  2397.              /?               Displays FWDSTAMP help panel. 
  2398.  
  2399.              /V               Increases the level of information FWDSTAMP 
  2400.                               should output. 
  2401.  
  2402.  infile      Specifies the name of the dynamic link library file that LINK386 
  2403.              created.  Use the file-name extension of DLL. 
  2404.  
  2405.  deffile     Specifies the name of the module definition file (.DEF) that 
  2406.              contains the forwarders. (See Example). 
  2407.  
  2408.  outfile     Specifies the name of the .DLL file that will contain the added 
  2409.              forwarders. 
  2410.  
  2411.  
  2412. ΓòÉΓòÉΓòÉ 6.1.2. Example ΓòÉΓòÉΓòÉ
  2413.  
  2414. Forwarders are specified in the module definition file so that an exported 
  2415. name, which is also imported, is a forwarder. For example: 
  2416.  
  2417.         IMPORTS
  2418.             VIOMODEWAIT=NEWLIB.123
  2419.         EXPORTS
  2420.             VIOMODEWAIT @ 25
  2421.  
  2422. In the example, a forwarder entry point for VIOMODEWAIT is created and contains 
  2423. an import reference to NEWLIB.123. 
  2424.  
  2425.  
  2426. ΓòÉΓòÉΓòÉ 7. Generate Message Catalog Utility (GENCAT) ΓòÉΓòÉΓòÉ
  2427.  
  2428. One of the requirements for internationalization of programs is that messages 
  2429. be displayed in the language of the user. This requirement is satisfied by 
  2430. producing versions of the messages which are translated into all supported 
  2431. languages. 
  2432.  
  2433. The OS2 C library messaging support is based on the messaging support described 
  2434. in the X/Open XPG4 specification. It consists of functions for extracting 
  2435. messages from message catalog files (catopen, catgets, catclose) and utilities 
  2436. for producing message catalog files (gencat, mkcatdef). The functions are 
  2437. documented in the C Library Reference and the utilities are documented in this 
  2438. book. 
  2439.  
  2440. The Generate Message Catalog Utility (GENCAT) creates and modifies a message 
  2441. catalog. GENCAT creates the message catalog (usually *.cat) from a message text 
  2442. source file (usually *.msg) or standard input. 
  2443.  
  2444. If a message catalog with the name specified by the CatalogFile parameter 
  2445. exists, GENCAT modifies it according to the statements in the specified message 
  2446. source files. If the message catalog does not exist, GENCAT creates a catalog 
  2447. file with the name specified by the CatalogFile parameter. 
  2448.  
  2449. You can specify any number of message source files.  GENCAT processes  multiple 
  2450. source files, one after another, in the sequence specified. Each successive 
  2451. source file modifies the catalog. If you do not specify a source file, GENCAT 
  2452. accepts message source data from standard input. 
  2453.  
  2454. GENCAT does not accept symbolic message identifiers. You must run MKCATDEF if 
  2455. you want to use symbolic message identifiers in your message source file (see 
  2456. Preprocess Message Source File Utility (MKCATDEF)). 
  2457.  
  2458.  
  2459. ΓòÉΓòÉΓòÉ 7.1. Syntax ΓòÉΓòÉΓòÉ
  2460.  
  2461. gencat CatalogFile [ SourceFile ... ]
  2462.  
  2463.  
  2464. ΓòÉΓòÉΓòÉ 7.1.1. Examples ΓòÉΓòÉΓòÉ
  2465.  
  2466. To generate a TEST.CAT catalog from the source file TEST.MSG, enter: 
  2467.  
  2468. gencat test.cat test.msg
  2469.  
  2470. The TEST.MSG file does not contain symbolic identifiers. 
  2471.  
  2472.  
  2473. ΓòÉΓòÉΓòÉ 7.2. Source File Syntax ΓòÉΓòÉΓòÉ
  2474.  
  2475. All fields of a source line are separated by a single blank character. Any 
  2476. other blank characters are considered as being part of the subsequent field. 
  2477.  
  2478. Comments begin with a $ followed by a space and the text of the comment. For 
  2479. example: 
  2480.  
  2481. $ This is a comment
  2482.  
  2483. A $set directive is used to associate a message number with all subsequent 
  2484. messages, until the end of file or the next $set directive. The format is: 
  2485.  
  2486. $set <number> <comment>
  2487.  
  2488. For example: 
  2489.  
  2490. $set 1 this is the first set in the file
  2491.  
  2492. The set number must be in the range [1, {NL_SETMAX}]. Set numbers must be 
  2493. ascending within the file, but need not be contiguous. Any string following the 
  2494. set number is treated as a comment. If no $set directive is specified in a 
  2495. message text source file, all messages will be located in an 
  2496. implementation-defined default message set NL_SETD. 
  2497.  
  2498. A $delset directive is used to delete a message set from an existing message 
  2499. file. The format is: 
  2500.  
  2501. $delset <number> <comment>
  2502.  
  2503. For example: 
  2504.  
  2505. $delset 1 this deletes any previous definition of set 1 from this file
  2506.  
  2507. A message consists of a message number followed by the message text. The 
  2508. message number must be in the range [1, {NL_MSGMAX}]. The message text is 
  2509. stored in the message catalog with the set identifier specified by the last 
  2510. $set directive, and with message the message number. If the message text is 
  2511. empty, and a blank character field separator is present, an empty string is 
  2512. stored in the message catalog. If a message source line has a message number, 
  2513. but neither a field separator nor message text, the existing message with that 
  2514. number (if any) is deleted from the set. Message numbers must be in ascending 
  2515. order with a single set, but need not be contiguous. The length of the message 
  2516. text must be in the range [0, {NL_TEXTMAX}]. 
  2517.  
  2518. For example: 
  2519.  
  2520. 1 "This is the first message"
  2521. 2 "This is the second message"
  2522.  
  2523. A $quote directive specifies an optional quote character, which can be used to 
  2524. surround message text so that trailing spaces or null messages are visible in a 
  2525. message source line. By default, or if an empty $quote directive is supplied, 
  2526. no quoting of message text will be recognized. The format is: 
  2527.  
  2528. $quote <character>
  2529.  
  2530. For example: 
  2531.  
  2532. $quote "
  2533.  
  2534. Empty lines in the message file are ignored. The effects of lines starting with 
  2535. any character other than those defined above are implementation-defined. 
  2536.  
  2537. Text strings can contain the special characters and escape sequences defined in 
  2538. the following table: 
  2539.  
  2540. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2541. ΓöéDescription                             ΓöéSequence            Γöé
  2542. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2543. Γöénewline                                 Γöé\n                  Γöé
  2544. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2545. Γöéhorizontal tab                          Γöé\t                  Γöé
  2546. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2547. Γöévertical tab                            Γöé\v                  Γöé
  2548. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2549. Γöébackspace                               Γöé\b                  Γöé
  2550. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2551. Γöécarriage-return                         Γöé\r                  Γöé
  2552. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2553. Γöéform-feed                               Γöé\f                  Γöé
  2554. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2555. Γöébackslash                               Γöé\\                  Γöé
  2556. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2557. Γöéoctal character encoding                Γöé\ddd  (three or     Γöé
  2558. Γöé                                        Γöéfewer octal digits) Γöé
  2559. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2560.  
  2561. If the character following a backslash is not one of the above or the end of 
  2562. line, the backslash is ignored. A backslash at the end of a line is used to 
  2563. continue a string on the following line. For example: 
  2564.  
  2565. 1 This line continues \
  2566. to the next line
  2567.  
  2568.  
  2569. ΓòÉΓòÉΓòÉ 7.3. Related Information ΓòÉΓòÉΓòÉ
  2570.  
  2571.      MKCATDEF (see Preprocess Message Source File Utility (MKCATDEF)) 
  2572.  
  2573.      catclose, catgets and catopen (see C Library Reference) 
  2574.  
  2575.  
  2576. ΓòÉΓòÉΓòÉ 8. Icon Editor ΓòÉΓòÉΓòÉ
  2577.  
  2578. The Icon Editor lets you create your own art (icons, pointers, and bit maps) 
  2579. and save them for use by applications. 
  2580.  
  2581. Icons, pointers, and bit maps produced by the Icon Editor are graphic symbols 
  2582. that are made up of pels (also known as pixels) in any of the following display 
  2583. states: 
  2584.  
  2585.      Black 
  2586.      White 
  2587.      Color 
  2588.      Screen (background color) 
  2589.      Inverse screen (inverse of background color) 
  2590.  
  2591.  An application can use an icon to represent a minimized standard window.  For 
  2592.  example, an application that lists telephone numbers could use a telephone 
  2593.  icon when minimized.  An application can also use icons as warning symbols in 
  2594.  message boxes (for example, an exclamation mark or an upraised hand). 
  2595.  
  2596.  An application can associate a pointer with the mouse or similar pointing 
  2597.  device, so that the user can move the pointer around the screen to select 
  2598.  controls or text.  A pointer could also be used in an interactive graphics 
  2599.  application to draw graphics on the screen. For example, a free-hand 
  2600.  graphics-drawing application could use a pencil shape to represent the 
  2601.  pointer. 
  2602.  
  2603.  
  2604. ΓòÉΓòÉΓòÉ 8.1. Using the Icon Editor ΓòÉΓòÉΓòÉ
  2605.  
  2606. To run the Icon Editor, select the Development Tools folder and then select 
  2607. Icon Editor. 
  2608.  
  2609. The Icon Editor window consists of three parts:  the information panel, the 
  2610. palette window, and the editing window. 
  2611.  
  2612. The information panel at the top of the Icon Editor window displays the 
  2613. following information: 
  2614.  
  2615.      A picture of a two-button mouse, showing the colors currently selected 
  2616.       for each button 
  2617.  
  2618.      An actual-size image of the current figure that you are editing 
  2619.  
  2620.      The status area, showing the following: 
  2621.  
  2622.         -  Size (defined as 32 x 32 for icons and pointers; user-defined for 
  2623.            bit maps) 
  2624.         -  Pen location 
  2625.         -  Pen size (from 1 x 1 to 9 x 9) 
  2626.         -  Hot spot (for icons and pointers, but not bit maps) 
  2627.         -  Figure type (icon, pointer, or bit map) 
  2628.         -  Form name 
  2629.  
  2630.  The palette window, in the lower-right corner, displays the colors that are 
  2631.  available for use during editing. The colors currently selected are marked 
  2632.  with frames. 
  2633.  
  2634.  The editing window is the largest part of your working area.  Use the mouse or 
  2635.  keyboard to move the pointer, clicking or dragging the pointer to paint the 
  2636.  enlarged representation of pels with the selected color. 
  2637.  
  2638.  
  2639. ΓòÉΓòÉΓòÉ 8.1.1. Creating a Figure ΓòÉΓòÉΓòÉ
  2640.  
  2641. The Edit menu includes the functions used to select an icon, pointer, or bit 
  2642. map for editing, and to save it after you are through. 
  2643.  
  2644. Selecting your icon, pointer, or bit map 
  2645.  
  2646.      To create a new icon, pointer, or bit map, select New from the File menu. 
  2647.       The New Figure pop-up window appears, prompting you for more information. 
  2648.  
  2649.       Select the figure type:  Icon, Pointer, or Bit map. For a bit map, you 
  2650.       must specify the width and height in pels. Select Enter. 
  2651.  
  2652.       You can also create new art by modifying or editing an existing art of 
  2653.       the same type. 
  2654.  
  2655.      To edit existing art, select Open from the File menu. You will be 
  2656.       prompted for a name. 
  2657.  
  2658.       Note:  Unless you have turned off Safe Prompting on the Options menu, you 
  2659.              will be prompted to save if you select Open or New while there is 
  2660.              unsaved art on your screen. 
  2661.  
  2662.      If you started the Icon Editor from a command prompt and specified 
  2663.       multiple files, you can use the Next option on the File menu to select 
  2664.       the next file. 
  2665.  
  2666.       The Next option will not be selectable if you did not start from the 
  2667.       command line and specify multiple files. 
  2668.  
  2669.  Saving your icon, pointer, or bit map 
  2670.  
  2671.  To save your art, select either of the following: 
  2672.  
  2673.      Save to save it under its current file name. If this is new art, you will 
  2674.       be prompted for a name. 
  2675.  
  2676.      Save As to save it under a different name. You will be prompted for a new 
  2677.       name. 
  2678.  
  2679.  
  2680. ΓòÉΓòÉΓòÉ 8.1.2. Editing Art ΓòÉΓòÉΓòÉ
  2681.  
  2682. To edit your art, use the functions of the Edit menu. 
  2683.  
  2684. Select Undo to restore the art to the way it was before the most-recent editing 
  2685. operation. 
  2686.  
  2687. Four of the editing functions require that you first mark the area to be 
  2688. edited, using Select or Select All. 
  2689.  
  2690. If you choose Select, the cursor changes to a plus (+) inside a square. Hold 
  2691. mouse button 1 down to anchor one corner, and then drag the mouse.  Release the 
  2692. button to anchor the opposite corner of the rectangular area you want to edit. 
  2693.  
  2694. If you choose Select All, the entire figure is selected. 
  2695.  
  2696. The following functions require that an area be selected first: 
  2697.  
  2698.      Fill to fill the selected area with the current palette color.  For 
  2699.       additional information, see Filling Areas with Color. 
  2700.  
  2701.      Cut to cut an area you would like to move or delete. 
  2702.  
  2703.      Copy to copy an area you would like to duplicate elsewhere in the same 
  2704.       file or in another file. 
  2705.  
  2706.      Paste to place an area you have marked with Cut or Copy.  Drag the 
  2707.       outlined area that you have marked to the place you would like to paste 
  2708.       it. 
  2709.  
  2710.      Clear to erase all drawing within an area you have selected and leave 
  2711.       transparent pels. If you have used Select All, this will clear your 
  2712.       entire icon, pointer, or bit map. 
  2713.  
  2714.      Stretch Paste to paste the clipboard contents into your art, stretching 
  2715.       and positioning them to fit. 
  2716.  
  2717.      Flip Horizontal to flip the art on its horizontal axis, reversing bottom 
  2718.       and top. 
  2719.  
  2720.      Flip Vertical to flip the art on its vertical axis, reversing left and 
  2721.       right.  You can create a symmetrical drawing by copying one side of the 
  2722.       art to the other side, and then flipping one of them. 
  2723.  
  2724.      Circle to inscribe a circle or ellipse within the selected area. 
  2725.  
  2726.  
  2727. ΓòÉΓòÉΓòÉ 8.1.3. Using Options ΓòÉΓòÉΓòÉ
  2728.  
  2729. The choices on the Options menu enable you to test your art and vary your 
  2730. editing environment. To change an option, from the Options menu, select: 
  2731.  
  2732.  Test 
  2733.       To view the pointer or icon you are editing. The pointer or icon will be 
  2734.       displayed, in actual size, as the pointer until you toggle back by again 
  2735.       selecting Test from the Options menu. 
  2736.  
  2737.  Grid 
  2738.       To superimpose a grid over the editing window. This can be useful when 
  2739.       you want to draw a symmetrical figure. Each cell of the grid represents 
  2740.       one pel in the figure. 
  2741.  
  2742.  X background 
  2743.       To make the transparent pels (where the background is visible) apparent 
  2744.       when editing an icon or pointer.  All screen or inverse-screen colors 
  2745.       will be shown with an X.  This option does not apply to bit maps because 
  2746.       they have no transparent pels. 
  2747.  
  2748.  Draw Straight 
  2749.       To temporarily restrict your drawing to straight vertical and horizontal 
  2750.       lines.  Even if you deviate from the horizontal row, a horizontal line is 
  2751.       produced when the mouse pointer is dragged across the editing window. 
  2752.       Dragging the mouse up or down produces straight vertical lines. 
  2753.  
  2754.  Changing Pen Size 
  2755.       Select Pen size on the Options menu to specify how many pels the pointer 
  2756.       paints at a time. You can select any of nine square pen sizes: 
  2757.  
  2758.             ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2759.             Γöé 1x1       Γöé 4x4       Γöé 7x7       Γöé
  2760.             Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2761.             Γöé 2x2       Γöé 5x5       Γöé 8x8       Γöé
  2762.             Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2763.             Γöé 3x3       Γöé 6x6       Γöé 9x9       Γöé
  2764.             ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2765.  
  2766.       Shortcut: Select a pen size by pressing Ctrl and the size, such as Ctrl+6 
  2767.       for a 6 x 6 pen size. 
  2768.  
  2769.  Setting Preferences 
  2770.       To change your preferences, select Preferences from the Options menu. 
  2771.       Then select any of the following: 
  2772.  
  2773.       Safe prompting 
  2774.                 Provide a warning before destructive operations such as file 
  2775.                 overwrites. 
  2776.  
  2777.       Suppress Warnings 
  2778.                 Suppress display of informational messages. 
  2779.  
  2780.       Save state on exit 
  2781.                 Save settings for your next session. 
  2782.  
  2783.       Display status area 
  2784.                 Toggle between the picture of the mouse and the art from the 
  2785.                 status area. 
  2786.  
  2787.       Reset options and modes 
  2788.                 Deselect the following items: 
  2789.  
  2790.                      Select 
  2791.                      Hot Spot 
  2792.                      Color Fill 
  2793.                      Find Color The palette will not be reset. 
  2794.  
  2795.  Changing Pen Shape 
  2796.       Before you select Pen Shape, you must first select the shape using the 
  2797.       Select function on the Edit menu. See Editing Art for information about 
  2798.       Select. Then select Set Pen Shape on the Options menu. 
  2799.  
  2800.  Defining a Hot Spot 
  2801.       The Hot spot is the pel where mouse input for an icon or pointer is 
  2802.       directed.  The default hot spot location is 16 x 16, the center of the 
  2803.       icon or pointer.  Bit maps do not have hot spots. 
  2804.  
  2805.       Select Hot spot from the Options menu to designate this pel. The cursor 
  2806.       changes shape, and the screen coordinates of the current hot spot are 
  2807.       displayed in the information window. When you click on a new hot spot, 
  2808.       the screen coordinates of the new hot spot are displayed. 
  2809.  
  2810.       Select Hotspot again to return to editing. 
  2811.  
  2812.       When an application uses WinQueryPointerPos to query the screen position 
  2813.       of a pointer, the OS/2 operating system returns the coordinates of the 
  2814.       pointer hot spot. 
  2815.  
  2816.  
  2817. ΓòÉΓòÉΓòÉ 8.1.4. Selecting Colors ΓòÉΓòÉΓòÉ
  2818.  
  2819. Use Palette to select a new drawing color, using mouse button 1 or 2. 
  2820.  
  2821. The currently selected color for mouse button 2 is framed on the palette in 
  2822. red; the color for mouse button 1 is framed in green. The currently selected 
  2823. colors for both mouse buttons are also displayed at the left side of the status 
  2824. area. 
  2825.  
  2826. Changing Palettes or Palette Colors 
  2827.  
  2828. To change palettes or palette colors, select the Palette menu.  On the Palette 
  2829. menu, you can: 
  2830.  
  2831.      Select New to create a new palette.  The default palette will appear for 
  2832.       you to edit. 
  2833.  
  2834.      Select Open to open an existing palette. 
  2835.  
  2836.      Select Save to save your current palette. If it is a new palette, you 
  2837.       will be prompted for a name. 
  2838.  
  2839.      Select Save as to save the palette under a different name. You will be 
  2840.       prompted for a new name. 
  2841.  
  2842.      Select Edit color to edit a color in your palette. 
  2843.  
  2844.      Select Swap colors to swap the colors of mouse buttons 1 and 2.  A 
  2845.       submenu will appear, asking whether you want to preserve these colors in 
  2846.       your art.  Unless you select Preserve figure, the colors in your art will 
  2847.       be changed accordingly. 
  2848.  
  2849.      Select Set default palette to save the existing palette as your default 
  2850.       palette. 
  2851.  
  2852.  
  2853. ΓòÉΓòÉΓòÉ 8.1.5. Editing Palette Colors ΓòÉΓòÉΓòÉ
  2854.  
  2855. To change the colors that appear on your palette, follow these steps: 
  2856.  
  2857.    1. Select the color to be edited with the mouse. A frame appears around it 
  2858.       on the palette. 
  2859.  
  2860.    2. Select Edit color from the Palette menu. 
  2861.  
  2862.       Shortcuts: 
  2863.  
  2864.           Double-click on the color to be edited. 
  2865.           To select a color that you have already used in your art, use Find 
  2866.            color on the Tools menu. 
  2867.  
  2868.       The Edit Color window will appear. 
  2869.  
  2870.    3. You can change the way you define palette colors by checking Dynamic 
  2871.       editing and Important and choosing between RGB and HSV terms. 
  2872.  
  2873.           Dynamic editing, when checked, will make your art change dynamically 
  2874.            as you edit individual colors, so that you can see how the changes 
  2875.            will affect your art. 
  2876.  
  2877.           Important, when checked, will require that the color be accurately 
  2878.            rendered, without dithering (approximating the color). 
  2879.  
  2880.           Every color can be described numerically in either RGB or HSV terms: 
  2881.  
  2882.            RGB          As proportions of the primary colors red, blue, and 
  2883.                         green 
  2884.  
  2885.            HSV          In terms of hue, saturation, and value 
  2886.  
  2887.            To toggle between RGB and HSV, select the appropriate radio button. 
  2888.  
  2889.    4. Use the scroll bars to change RGB or HSV values, or change these numbers 
  2890.       from the keyboard. 
  2891.  
  2892.    5. Select OK to save the edited color. 
  2893.  
  2894.  
  2895. ΓòÉΓòÉΓòÉ 8.1.6. Filling Areas with Color ΓòÉΓòÉΓòÉ
  2896.  
  2897. There are two ways to fill an area with color: 
  2898.  
  2899.      To fill an irregularly-shaped area with the current palette color, select 
  2900.       Color fill from the Tools menu. 
  2901.  
  2902.       After you click on a specific pel, all adjoining areas that are the same 
  2903.       color as that pel will be colored with the selected color. 
  2904.  
  2905.      To fill a previously-selected area with the current palette color, select 
  2906.       Fill from the Edit menu. You must first select an area. See Editing Art 
  2907.       for information about Select and Select All. 
  2908.  
  2909.  Note:  To select a color that you have already used in your art, use Find 
  2910.         color on the Tools menu. A question-mark-arrow cursor will appear. 
  2911.  
  2912.  Click on a specific pel of that color, and that color is selected. 
  2913.  
  2914.  
  2915. ΓòÉΓòÉΓòÉ 8.1.7. Creating Icons for Specific Displays ΓòÉΓòÉΓòÉ
  2916.  
  2917. Although the Icon Editor edits and saves a device-independent form of the icon, 
  2918. the Device menu enables you to create versions of the icon for specific display 
  2919. devices. 
  2920.  
  2921. An independent form is automatically created when you create a new icon or 
  2922. pointer and all other forms are derived from it.  If you select any of the 
  2923. other device forms listed in the menu, a new form is created for the specified 
  2924. device.  The Custom option enables you to create an icon or pointer for any 
  2925. other device. 
  2926.  
  2927. Select List to view a list of all existing forms, including custom and standard 
  2928. forms.  Any item in this list can be selected and edited or deleted.  However, 
  2929. you must have at least one device-independent form.  Select Add in the list 
  2930. dialog to add a new device form. 
  2931.  
  2932. Several icon bit maps can be saved in a single icon resource; when the icon is 
  2933. saved, all versions are saved with it in a format that includes a device 
  2934. resolution tag for each version.  When the icon is loaded from a resource file, 
  2935. the display device resolution is matched against the device for which each 
  2936. device-dependent icon was intended. If a match is found, that icon is used.  If 
  2937. no match is found, the application uses the device-independent icon, which 
  2938. always exists. 
  2939.  
  2940. Figure files can contain any of the following forms to support multiple 
  2941. devices: 
  2942.  
  2943.      Independent 
  2944.      CGA (2 colors) 
  2945.      EGA (16 colors) 
  2946.      VGA (16 colors) 
  2947.      XGA/8514 (256 colors) 
  2948.      XGA/8514 (16 colors) 
  2949.      XGA/8514 Small Color Form (16 colors) 
  2950.      XGA/8514 Small BW Form 
  2951.      Custom 
  2952.  
  2953.  Device-dependent icons are those that are designed for a particular display 
  2954.  resolution. 
  2955.  
  2956.  An application can display icons or bit maps in dialog boxes or windows. 
  2957.  
  2958.  The file-name extension depends on the type of resource you are creating.  The 
  2959.  Icon Editor produces a file with any of the following extensions: 
  2960.  
  2961.       ICO for icons 
  2962.       PTR for pointers 
  2963.       BMP for bit maps 
  2964.  
  2965.  The ICO, PTR, or BMP files must be referred to in the resource script file for 
  2966.  your application.  The external files containing icons, pointers, and bit maps 
  2967.  are all referred to in the resource script file by single-line statements that 
  2968.  have a similar format. For example: 
  2969.  
  2970.   ICON    ID_MAINWND myprog.ico   /* Icon    */
  2971.  
  2972.   POINTER ID_PTR     mypoint.ptr  /* Pointer */
  2973.  
  2974.   BITMAP  ID_BMP     mybtmp.bmp   /* bit map  */
  2975.  
  2976.  ICON, POINTER, and BITMAP keywords identify the resource type. 
  2977.  
  2978.  The resource type is followed by a symbolic name or integer identifier that is 
  2979.  used by your application to identify the resource.  For example, with ICON, 
  2980.  the ID_MAINWND identifier can be used by the application in the control data 
  2981.  parameter of the WinCreateWindow call (or as a parameter to the 
  2982.  WinCreateStdWindow call) that creates the frame of the main window of your 
  2983.  application. The OS/2 operating system then associates the icon with the main 
  2984.  window. 
  2985.  
  2986.  The symbolic name or identifier can be followed by any loading and memory 
  2987.  options. 
  2988.  
  2989.  The last part of the statement is the file name and file type of the resource 
  2990.  created by the Icon Editor.  A fully qualified path name must be given if the 
  2991.  file is not in the current directory.  An icon that it used for a minimized 
  2992.  application should have the same file name as the executable file of the 
  2993.  application. 
  2994.  
  2995.  
  2996. ΓòÉΓòÉΓòÉ 8.2. Using a Command Line ΓòÉΓòÉΓòÉ
  2997.  
  2998. If you start the Icon Editor from a command line rather than from an icon, you 
  2999. have an additional option available. You can load more than one file at a time 
  3000. by specifying the files on the command line. For example, the following command 
  3001. would load the two specified icons, a bit map, and a pointer: 
  3002.  
  3003. ICONEDIT Ruth.ico gurp.ico alex.bmp pamela.ptr 
  3004.  
  3005. If you specify multiple files when you start the Icon Editor from the command 
  3006. line, you can use the Next option on the File menu to select the next file. 
  3007. This option is available only if you specify multiple files from the command 
  3008. line. 
  3009.  
  3010.  
  3011. ΓòÉΓòÉΓòÉ 9. Managing Import Libraries (IMPLIB) ΓòÉΓòÉΓòÉ
  3012.  
  3013. IMPLIB creates import libraries used to link dynamic-link libraries with 
  3014. applications. 
  3015.  
  3016. Import libraries are created by IMPLIB and used to link dynamic-link libraries 
  3017. with applications. 
  3018.  
  3019. What Are Import Libraries? 
  3020.  
  3021. Import libraries are similar in some respects to standard libraries: 
  3022.  
  3023.      You specify import libraries and standard libraries in the same command 
  3024.       line field of LINK386 (see Link for Object and Library Files (LINK386) 
  3025.       for information on LINK386) or OS/2 16-bit LINK. 
  3026.  
  3027.      Both kinds of libraries resolve external references at link time. 
  3028.  
  3029.  However, import libraries differ from standard libraries in that they contain 
  3030.  no executable code. Rather, they identify the dynamic-link libraries where the 
  3031.  executable code can be found at run time. 
  3032.  
  3033.  Why Use Import Libraries? 
  3034.  
  3035.  Creating import libraries is an extra step. Nevertheless, import libraries are 
  3036.  recommended for use with all dynamic-link libraries for two reasons: 
  3037.  
  3038.      IMPLIB automates much of the program creation process for you.  To use 
  3039.       IMPLIB, supply it with the .DEF file you already created for the 
  3040.       dynamic-link library.  Without an import library, you must create a 
  3041.       second .DEF file that explicitly defines all needed functions in the 
  3042.       dynamic-link library. 
  3043.  
  3044.      Import libraries make it easier for one person to write a library and 
  3045.       another to write the application. Much of the linking process (linking 
  3046.       the .DLL file and creating the import library) can be done by the author 
  3047.       of the dynamic-link library. The import library and associated .DLL file 
  3048.       can then be given as a unit to the person linking the application - that 
  3049.       person need not worry about creating a .DEF file. 
  3050.  
  3051.  
  3052. ΓòÉΓòÉΓòÉ 9.1. Running IMPLIB ΓòÉΓòÉΓòÉ
  3053.  
  3054. The following parameters can be used with IMPLIB: 
  3055.  
  3056.  <options> 
  3057.       The option that modifies the IMPLIB output. See IMPLIB Options 
  3058.  
  3059.  <implibname> 
  3060.       Import library created 
  3061.  
  3062.  <deffile> 
  3063.       One or more module definition files that export routines in the 
  3064.       dynamic-link library 
  3065.  
  3066.  <dllfile> 
  3067.       One or more dynamic-link libraries with exported routines. 
  3068.  
  3069.  You can specify any number of either module definition files or dynamic-link 
  3070.  libraries. 
  3071.  
  3072.  By using the _export keyword in C, you can declare functions that are exported 
  3073.  from the dynamic-link library. 
  3074.  
  3075.  
  3076. ΓòÉΓòÉΓòÉ 9.1.1. IMPLIB Syntax ΓòÉΓòÉΓòÉ
  3077.  
  3078. Syntax 
  3079.  
  3080. IMPLIB [options] implibname {deffile...| dllfile...}
  3081.  
  3082. Example 
  3083.  
  3084. The following command creates the import library named MYLIB.LIB from the 
  3085. module definition file MYLIB.DEF. 
  3086.  
  3087.     IMPLIB MYLIB.LIB MYLIB.DEF
  3088.  
  3089.  
  3090. ΓòÉΓòÉΓòÉ 9.1.2. IMPLIB Help ΓòÉΓòÉΓòÉ
  3091.  
  3092. To display IMPLIB help, type the following at the command prompt: 
  3093.  
  3094.     IMPLIB /?
  3095.  
  3096. The appropriate copyright statement is displayed along with a list of IMPLIB 
  3097. options. 
  3098.  
  3099.     Usage: IMPLIB [options] implibname {deffile... | dllfile...}
  3100.     Valid options are:
  3101.         /?
  3102.         /HELP
  3103.         /IGNORECASE
  3104.         /NOIGNORECASE
  3105.         /NOLOGO
  3106.  
  3107.  
  3108. ΓòÉΓòÉΓòÉ 9.1.3. IMPLIB Options ΓòÉΓòÉΓòÉ
  3109.  
  3110. Usage Notes: 
  3111.  
  3112.      Option characters are not case sensitive: /H and /h are equivalent. 
  3113.      Options can be shortened to the fewest characters that uniquely identify 
  3114.       them.  The characters in brackets can be omitted: /NOL and /NOLOGO are 
  3115.       equivalent. 
  3116.      Although use of the minimum one-letter abbreviations is allowed, if a 
  3117.       future release has an additional option starting with the same letter, 
  3118.       the one-letter option will no longer be usable. 
  3119.  
  3120.  The following options may be used with IMPLIB: 
  3121.  
  3122.  /? 
  3123.       Displays a short summary of IMPLIB syntax. 
  3124.  
  3125.  /H[ELP] 
  3126.       Displays a short summary of IMPLIB syntax. 
  3127.  
  3128.  /I[GNORECASE] 
  3129.       Turns case sensitivity off. This is the default. 
  3130.  
  3131.  /I[GNORECASE] 
  3132.       Turns case sensitivity on. By default, case sensitivity is off. 
  3133.  
  3134.  /NOL[OGO] 
  3135.       Suppresses the sign-on banner when IMPLIB starts. 
  3136.  
  3137.  
  3138. ΓòÉΓòÉΓòÉ 9.2. IMPLIB Error Messages ΓòÉΓòÉΓòÉ
  3139.  
  3140. There are two types of IMPLIB error messages: 
  3141.  
  3142.      Fatal errors cause IMPLIB to stop running.  Message numbers IM1600 
  3143.       through IM1606 report these problems. 
  3144.  
  3145.      Nonfatal errors indicate problems in the library file. IMPLIB produces 
  3146.       the library file and sets the error bit in the header for the OS/2 
  3147.       environment.  This means that the library file cannot be run from OS/2. 
  3148.       Message numbers IM2600 through IM2604 report these problems. 
  3149.  
  3150.  IM1600 
  3151.            error while writing to output file - name 
  3152.            Explanation: There was not enough disk space available to create the 
  3153.            target library. 
  3154.            Action: Delete or move files to make space on the disk and restart 
  3155.            IMPLIB. 
  3156.  
  3157.  IM1601 
  3158.            out of memory - heap name heap exhausted 
  3159.            Explanation: There was not enough memory available to run IMPLIB. 
  3160.            Action: Reduce the number of programs presently running in your 
  3161.            system and restart IMPLIB. 
  3162.  
  3163.  IM1602 
  3164.            error in the module definitions file 
  3165.            Explanation: There was an error in the module definition (.DEF) 
  3166.            file. 
  3167.            Action: Correct the symbol shown in the message, at the line number 
  3168.            given. Restart IMPLIB. 
  3169.  
  3170.  IM1603 
  3171.            name : cannot create file reason 
  3172.            Explanation: IMPLIB was unable to open or create the target library 
  3173.            specified. 
  3174.            Action: Check the file name and available space. Restart IMPLIB. 
  3175.  
  3176.  IM1604 
  3177.            name : cannot open file - reason 
  3178.            Explanation: IMPLIB was unable to open one of the specified input 
  3179.            module definition (.DEF) files. 
  3180.            Action: Check the file name. Restart IMPLIB. 
  3181.  
  3182.  IM1605 
  3183.            too many nested include files in module definition file 
  3184.            Explanation: The .DEF file exceeded a nesting level. 
  3185.            Action: Combine some nestings into one .DEF file and try again. 
  3186.  
  3187.  IM1606 
  3188.            missing or bad include file name 
  3189.            Explanation: IMPLIB could not find a file included by .DEF file. 
  3190.            Action: Make sure the file exists and can be located and that any 
  3191.            path is specified correctly. Try again. 
  3192.  
  3193.  IM2600 
  3194.            line number is too long; truncated to length characters 
  3195.            Explanation: You have tried to export more than 8192 names. 
  3196.            Action: Retry with fewer names, creating an additional executable 
  3197.            module if necessary. 
  3198.  
  3199.  IM2601 
  3200.            symbol multiply defined 
  3201.            Explanation: An export name was repeated within or across the module 
  3202.            definition (.DEF) files. 
  3203.            Action: Eliminate duplicate definitions of the export name. 
  3204.  
  3205.  IM2602 
  3206.            unexpected end of name table in DLL 
  3207.            Explanation: IMPLIB encountered an error when reading the module 
  3208.            names table or procedures names table. 
  3209.            Action: The 9per.DLL file is corrupted. Check to make sure that the 
  3210.            DLL was generated by OS/2 LINK or LINK386. 
  3211.  
  3212.  IM2603 
  3213.            name : invalid .DLL file 
  3214.            Explanation: IMPLIB could not parse the DLL properly. 
  3215.            Action: The .DLL file is corrupted. Check to make sure that the DLL 
  3216.            was generated by OS/2 LINK or LINK386. 
  3217.  
  3218.  IM2604 
  3219.            unrecognized option 'option'; option ignored 
  3220.            Explanation: You specified an incorrect option. 
  3221.            Action: Specify a correct IMPLIB option. 
  3222.  
  3223.  
  3224. ΓòÉΓòÉΓòÉ 10. Quick Information (KwikINF) ΓòÉΓòÉΓòÉ
  3225.  
  3226. KwikINF provides you with a quick and convenient method of accessing 
  3227. information in online documents stored in the OS/2 BOOKSHELF from anywhere on 
  3228. the desktop, with the exception of DOS or WIN-OS/2 sessions. When KwikINF has 
  3229. been started, you can open a dialog with KwikINF by pressing a user-selectable 
  3230. hot key. Until you configure KwikINF, your KwikINF hot key is ALT+Q. The 
  3231. KwikINF window includes a Configure push button. This opens another dialog with 
  3232. KwikINF:  the Configure KwikINF window. The KwikINF window also allows you to 
  3233. initiate searches for text strings in online documents of choice. 
  3234.  
  3235.  
  3236. ΓòÉΓòÉΓòÉ 10.1. Automatic Text Retrieval ΓòÉΓòÉΓòÉ
  3237.  
  3238. The KwikINF window includes a Search String entry field. You can specify the 
  3239. text string you want KwikINF to search for. Or, under certain conditions, this 
  3240. entry field automatically contains the word located under the cursor when you 
  3241. press your KwikINF hot key. This text retrieval feature is available from OS/2 
  3242. full-screen and Presentation Manager (PM) multi-line entry (MLE) fields. This 
  3243. feature is also available from PM AVIO and VIO windows. Communication Manager's 
  3244. 3270 emulator is a common example of a PM AVIO window. An OS/2 Window is a VIO 
  3245. window. This means that if, for example, you open an OS/2 Window and start an 
  3246. OS/2 text-based application, KwikINF will automatically retrieve the word under 
  3247. the cursor when you press your KwikINF hot key. This automatic text-retrieval 
  3248. feature is not available from graphic-text PM windows. 
  3249.  
  3250.  
  3251. ΓòÉΓòÉΓòÉ 10.2. BOOKSHELF Online Documents ΓòÉΓòÉΓòÉ
  3252.  
  3253. The KwikINF window includes a Volume to Search list box of all online documents 
  3254. stored in the OS/2 BOOKSHELF subdirectories. KwikINF initiates searches for 
  3255. information in any online document in this list. 
  3256.  
  3257. The BOOKSHELF is an environment variable, set in CONFIG.SYS, that contains a 
  3258. list of subdirectories containing online documents created as viewable .INF 
  3259. files with the Information Presentation Facility (IPF). The BOOKSHELF 
  3260. environment variable is set as follows: 
  3261.  
  3262. SET BOOKSHELF=<subdirectory>;...;<subdirectory>; 
  3263.  
  3264. Online documents for OS/2 (for example, the Command Reference) are stored in 
  3265. the \OS2\BOOK subdirectory of the drive on which OS/2 is installed.  Online 
  3266. documents for the OS/2 Toolkit (for example, the Programming References) are 
  3267. stored in the \TOOLKIT\BOOK subdirectory of the drive specified during 
  3268. installation of the online programming information. As an example, after 
  3269. installation of OS/2 and the Toolkit, the BOOKSHELF environment variable is set 
  3270. as follows: 
  3271.  
  3272. SET BOOKSHELF=C:\OS2\BOOK;D:\TOOLKIT\BOOK; 
  3273.  
  3274. Where c: is the drive where OS/2 is installed and D: is the drive where the 
  3275. Toolkit is installed. 
  3276.  
  3277. The online document where KwikINF looks for the Search String is selected from 
  3278. the Volume to Search list box by KwikINF or by you. KwikINF selects the Volume 
  3279. to Search by looking for the text string that has a matching entry in the 
  3280. KwikINF index file or, if there is no matching entry in the index file, in the 
  3281. Default Volume you have selected in the Configure KwikINF window. 
  3282.  
  3283.  
  3284. ΓòÉΓòÉΓòÉ 10.2.1. Index Files for Rapid Search ΓòÉΓòÉΓòÉ
  3285.  
  3286. The KwikINF index file provides a rapid-search mechanism for locating specific 
  3287. kinds of information in online documents in the BOOKSHELF. The KwikINF index 
  3288. file consists of one or more concatenated files stored in the BOOKSHELF and 
  3289. defined by the HELPNDX variable in CONFIG.SYS as shown in the following 
  3290. example: 
  3291.  
  3292. SET HELPNDX=EPMKWHLP.NDX
  3293.  
  3294. where EPMKWHLP.NDX is the KwikINF index file for the OS/2 Toolkit. 
  3295.  
  3296. As an example, the following excerpt from the KwikINF index file for the OS/2 
  3297. Toolkit: 
  3298.  
  3299. EXTENSIONS: *
  3300. DESCRIPTION: IBM Developer's Toolkit for OS/2
  3301. (IPF*, view ipfc20.inf ~)
  3302. (WinCreateWindow, view pmwin.inf ~)
  3303.  
  3304. is used by KwikINF to quickly locate Search String entries with the prefix IPF 
  3305. in the IPF-viewable file IPFC20.INF. and to quickly locate the specific Search 
  3306. String entry WinCreateWindow in the IPF-viewable file PMWIN.INF. 
  3307.  
  3308. The first token in a rapid-search string is a specific text string (for 
  3309. example, WinCreateWindow) or prefix wildcard (for example, IPF*).  It is also 
  3310. used as the text-string you want VIEW.EXE to locate within the online document. 
  3311. The second token is the name of the IPF file viewer (VIEW.EXE). The third token 
  3312. is a parameter for VIEW.EXE: the name of the .INF file that contains the online 
  3313. document.  Currently, the fourth token is not being used and it is treated as a 
  3314. comment. 
  3315.  
  3316.  
  3317. ΓòÉΓòÉΓòÉ 10.2.2. Enabling Online Documents ΓòÉΓòÉΓòÉ
  3318.  
  3319. You can enable any online document for KwikINF by: 
  3320.  
  3321.    1. Creating the online document as a viewable .INF file using the 
  3322.       Information Presentation Facility (IPF). 
  3323.  
  3324.    2. Appending the name of the subdirectory where it is stored to the 
  3325.       BOOKSHELF in CONFIG.SYS. 
  3326.  
  3327.    3. Creating an index file to support the KwikINF rapid-search mechanism, 
  3328.       storing it in the BOOKSHELF, and adding it to the HELPNDX variable in 
  3329.       CONFIG.SYS. 
  3330.  
  3331.  For example, you can enable your online document MYDOC stored in MYSUBDIR 
  3332.  subdirectory for KwikINF by: 
  3333.  
  3334.    1. Compiling the tagged source for MYDOC with the IPF compiler by entering: 
  3335.  
  3336.             IPFC MYDOC /INF
  3337.  
  3338.    2. Modifying the BOOKSHELF statement in CONFIG.SYS as follows: 
  3339.  
  3340.             SET BOOKSHELF=...;C:\MYSUBDIR;
  3341.  
  3342.    3. Creating MYINDEX file in MYSUBDIR as shown below: 
  3343.  
  3344.             /* C style comments and blank lines are acceptable */
  3345.             /* specific file extensions may be specified here  */
  3346.             EXTENSIONS: *
  3347.             /* a title may be placed here                      */
  3348.             DESCRIPTION: Any custom KwikINF index file
  3349.             /* rapid-search strings                            */
  3350.             (thisfunction, view mydoc.inf ~)
  3351.             (my*, view mydoc.inf ~)
  3352.  
  3353.    4. Modifying the HELPNDX variable in CONFIG.SYS as follows: 
  3354.  
  3355.             SET HELPNDX=EPMKWHLP.NDX+MYINDEX.NDX
  3356.  
  3357.  For more information on creating an IPF-viewable online document, see the IPF 
  3358.  Reference in the Toolkit Information folder. 
  3359.  
  3360.  
  3361. ΓòÉΓòÉΓòÉ 10.3. Using KwikINF ΓòÉΓòÉΓòÉ
  3362.  
  3363. KwikINF is installed as a program object in the OS/2 Toolkit Information 
  3364. folder.  You start KwikINF by double-clicking on the KwikINF object or by 
  3365. entering KwikINF from the command line of an OS/2 Window. You can start KwikINF 
  3366. automatically when you start OS/2 by placing a shadow of the KwikINF object in 
  3367. the Startup folder in the OS/2 System folder on the desktop. You shadow an 
  3368. object by pressing CTRL + SHIFT while dragging the object. 
  3369.  
  3370. KwikINF installs a PM system hook to monitor keystrokes in PM sessions and OS/2 
  3371. character device monitors to monitor keystrokes in OS/2 full-screen sessions. 
  3372. KwikINF will install only one copy of the hook and monitors, even if you 
  3373. attempt to re-start KwikINF. 
  3374.  
  3375. When KwikINF has been started, you can initiate searches for text strings in 
  3376. online documents of choice by pressing a user-selectable hot key. 
  3377.  
  3378. Note:  You cannot initiate searches for text strings in online documents from 
  3379.        DOS or WIN-OS/2 sessions. 
  3380.  
  3381.  Until you configure KwikINF, your KwikINF hot key is ALT+Q. You configure 
  3382.  KwikINF by pressing your KwikINF hot key and then pressing the Configure push 
  3383.  button to open the Configure KwikINF window. 
  3384.  
  3385.  Note:  When you start KwikINF by double-clicking on the KwikINF object in the 
  3386.         Toolkit Information folder, a message box tells you what hot key opens 
  3387.         the KwikINF window. This technique can also be used to determine what 
  3388.         your current KwikINF hot key is, after KwikINF has been started. 
  3389.  
  3390.  How you initiate a search for information in online documents is dependent on 
  3391.  where you are on the desktop when you press the KwikINF hot key: 
  3392.  
  3393.      From an OS/2 full-screen session, a PM VIO or AVIO window, or PM MLE: 
  3394.       position the cursor on the string you want to search for and press the 
  3395.       KwikINF hot key. KwikINF retrieves the word at the cursor. If you have 
  3396.       configured KwikINF to display the KwikINF window when the KwikINF hot key 
  3397.       is pressed, KwikINF automatically places the retrieved word in the Search 
  3398.       String entry field of the KwikINF window. When you press the Search push 
  3399.       button or Enter, KwikINF displays the information. If you have configured 
  3400.       KwikINF to bypass the KwikINF window when the KwikINF hot key is pressed, 
  3401.       KwikINF automatically displays the information. 
  3402.  
  3403.       If no word is under the cursor, the previous Search String is used. If no 
  3404.       previous Search String exists, KwikINF displays the Contents of the 
  3405.       Default volume to search. 
  3406.  
  3407.      From a graphic-text PM window: press the KwikINF hot key, then type the 
  3408.       string you want to search for in the Search String entry field of the 
  3409.       KwikINF window. The KwikINF text-retrieval feature is not available from 
  3410.       graphic-text PM windows. 
  3411.  
  3412.  The online document where KwikINF looks for the text string is selected from 
  3413.  the Volume to Search list box by KwikINF or by you. To open the online 
  3414.  document to the panel that contains the information, press the Search push 
  3415.  button or press Enter. 
  3416.  
  3417.  
  3418. ΓòÉΓòÉΓòÉ 10.3.1. KwikINF From the Command Line ΓòÉΓòÉΓòÉ
  3419.  
  3420. You can start, terminate, and configure KwikINF from the command line in an 
  3421. OS/2 Window by entering: 
  3422.  
  3423. KwikINF [no options] [/C] [/T] [/?]
  3424.  
  3425. where: 
  3426.  
  3427.  no options  starts KwikINF. After entering this command, the default KwikINF 
  3428.              hot key (ALT + Q) is enabled. 
  3429.  
  3430.  /T          terminates KwikINF and disables the KwikINF hot key. 
  3431.  
  3432.  /C          opens the Configure KwikINF window. Use this window to select 
  3433.              another KwikINF hot key, to select a default online document from 
  3434.              the BOOKSHELF to search, and to select the activation behavior of 
  3435.              the KwikINF window. 
  3436.  
  3437.  /?          displays the following information. 
  3438.  
  3439.                            Usage: KwikINF [Option]
  3440.                             Option    Description
  3441.                               /C      Configure KwikINF
  3442.                               /T      Terminate KwikINF
  3443.                               /?      This short help list
  3444.  
  3445.  
  3446. ΓòÉΓòÉΓòÉ 10.3.2. Configuring KwikINF ΓòÉΓòÉΓòÉ
  3447.  
  3448. You configure KwikINF through the Configure KwikINF window. KwikINF displays 
  3449. this window when you press the Configure push button on the KwikINF window or 
  3450. when you enter the following from the command line of an OS/2 Window: 
  3451.  
  3452. KwikINF /C
  3453.  
  3454. The Configure KwikINF window allows you to: 
  3455.  
  3456.      Select another KwikINF hot key. 
  3457.  
  3458.      Specify the number of OS/2 full-screen sessions enabled for KwikINF. 
  3459.  
  3460.      Specify the name of the default online document KwikINF searches. 
  3461.  
  3462.      Select the activation behavior of the KwikINF window. 
  3463.  
  3464.  Use the push buttons on the Configure KwikINF window as follows: 
  3465.  
  3466.      Press OK to enable your configuration choices. 
  3467.  
  3468.      Press Cancel to cancel your configuration choices. This closes the 
  3469.       Configure KwikINF window. 
  3470.  
  3471.      Press Help to get general help for the current window. 
  3472.  
  3473.  
  3474. ΓòÉΓòÉΓòÉ 10.3.3. Activation Key Sequence ΓòÉΓòÉΓòÉ
  3475.  
  3476. The Activation Key Sequence provides a selectable list of KwikINF hot keys. To 
  3477. access the list, single-click on the down arrow. Select the KwikINF hot key of 
  3478. your choice from the following list: 
  3479.  
  3480.  CTRL   + A 
  3481.  
  3482.  CTRL   + H 
  3483.  
  3484.  CTRL   + Q 
  3485.  
  3486.  ALT    + A 
  3487.  
  3488.  ALT    + Q (this is the default hot key) 
  3489.  
  3490.  The KwikINF hot key initiates searches for information in online documents 
  3491.  from anywhere on the desktop, with the exception of DOS or WIN-OS/2 sessions. 
  3492.  
  3493.  
  3494. ΓòÉΓòÉΓòÉ 10.3.4. Full Screen Sessions ΓòÉΓòÉΓòÉ
  3495.  
  3496. Use the Number of Fullscreen Sessions to Monitor spin button to specify the 
  3497. number of OS/2 full-screen sessions enabled for KwikINF.  KwikINF is 
  3498. implemented as a PM system hook to monitor keystrokes in PM sessions and as 
  3499. OS/2 character device monitors to monitor keystrokes in OS/2 full-screen 
  3500. sessions.  For OS/2 full-screen sessions, KwikINF will monitor only the number 
  3501. of sessions specified here. 
  3502.  
  3503.  
  3504. ΓòÉΓòÉΓòÉ 10.3.5. Default Volume to Search ΓòÉΓòÉΓòÉ
  3505.  
  3506. Use the Default Volume to Search single selection list box to specify which 
  3507. online document in the BOOKSHELF you want KwikINF to search by default. 
  3508. KwikINF looks for the Search String in this online document, when there is no 
  3509. matching entry in the KwikINF index file. Select the online document, then 
  3510. select the OK push button to activate the selection. 
  3511.  
  3512.  
  3513. ΓòÉΓòÉΓòÉ 10.3.6. Activation Behavior ΓòÉΓòÉΓòÉ
  3514.  
  3515. Use the Activation Behavior radio buttons to select the behavior of the KwikINF 
  3516. window. The KwikINF window can be displayed or bypassed when the user presses 
  3517. the KwikINF hot key after KwikINF has been installed. 
  3518.  
  3519.      Select the Display KwikINF Window radio button to tell KwikINF that you 
  3520.       always want the KwikINF window to be displayed when you press the KwikINF 
  3521.       hot key to initiate searches for information.  This is the default 
  3522.       behavior of the KwikINF window. 
  3523.  
  3524.       When the you press the KwikINF hot key, you can initiate a search for the 
  3525.       text string that may be automatically displayed in the Search String 
  3526.       entry field or for the text string that you enter into this field. You 
  3527.       can also specify which online document in the BOOKSHELF KwikINF searches 
  3528.       for the text string. 
  3529.  
  3530.      Select the Bypass KwikINF Window radio button to tell KwikINF that you do 
  3531.       not want the KwikINF window to be displayed when you press the KwikINF 
  3532.       hot key to initiate searches for information. This is typically used when 
  3533.       working under conditions where the KwikINF automatic text-retrieval 
  3534.       feature is available. 
  3535.  
  3536.       When you press the KwikINF hot key, KwikINF automatically looks for the 
  3537.       text string under the cursor in the online document that has a matching 
  3538.       entry in the KwikINF index file or, if there is no matching entry in the 
  3539.       index file, in the Default volume selected from the Configure KwikINF 
  3540.       window. 
  3541.  
  3542.       You configure KwikINF by pressing the Configure push button in the 
  3543.       KwikINF window. To configure KwikINF when this window is bypassed, press 
  3544.       SHIFT + your KwikINF hotkey to display the Configure KwikINF window. 
  3545.  
  3546.  
  3547. ΓòÉΓòÉΓòÉ 10.4. Searching Using the KwikINF Window ΓòÉΓòÉΓòÉ
  3548.  
  3549. If you have configured KwikINF to display the KwikINF window (this is the 
  3550. default condition), the KwikINF window is displayed when you press your KwikINF 
  3551. hot key. 
  3552.  
  3553. The KwikINF window allows you to search for a text string in an online document 
  3554. in the OS/2 BOOKSHELF.  The text string is typed by you in the Search String 
  3555. entry field or is automatically retrieved by KwikINF, under certain conditions, 
  3556. from under the cursor when you press your KwikINF hot key. 
  3557.  
  3558. The online document that KwikINF searches for the text string is selected from 
  3559. the Volume to Search list box by KwikINF or by you.  KwikINF selects the Volume 
  3560. to Search by looking for the text string that has a matching entry in the 
  3561. KwikINF index file or, if there is no matching entry in the index file, in the 
  3562. Default Volume you have selected in the Configure KwikINF window.  Or you can 
  3563. override KwikINF's selection of the Volume to Search by making your own 
  3564. selection from the list box. 
  3565.  
  3566. To initiate the search for the text string in the online document, press the 
  3567. Search push button or press Enter. If the search is successful, KwikINF opens 
  3568. the online document to the online panel that contains the information and 
  3569. displays a window with a title bar that matches the search string. 
  3570.  
  3571. If the search is not successful, you can search any online document for the 
  3572. information by following this procedure: 
  3573.  
  3574.      Clear the Search String entry field. 
  3575.  
  3576.      Select an online document from the Volume to Search list box.  The 
  3577.       Contents window of the online document appears. 
  3578.  
  3579.      Select Services from the menu bar. 
  3580.  
  3581.      Select Search from the Services pull down menu.  The Search help window 
  3582.       appears. 
  3583.  
  3584.      Type the text string, then select the All libraries radio button. 
  3585.  
  3586.      Select the Search push button or press Enter. 
  3587.  
  3588.  Use the push buttons on the KwikINF window as follows: 
  3589.  
  3590.      Press Search to initiate the search for the text string in the Search 
  3591.       String entry field in the selected online document. 
  3592.  
  3593.      Press Cancel to cancel the request to search for the text string and to 
  3594.       close the KwikINF window. 
  3595.  
  3596.      Press Configure to display the Configure KwikINF window. 
  3597.  
  3598.      Press Help to get general help for the current window. 
  3599.  
  3600.  
  3601. ΓòÉΓòÉΓòÉ 10.4.1. Search String Entry Field ΓòÉΓòÉΓòÉ
  3602.  
  3603. KwikINF searches for the text string in this entry field in the selected online 
  3604. document in the OS/2 BOOKSHELF. 
  3605.  
  3606. Under certain conditions, KwikINF automatically retrieves the word under the 
  3607. cursor when you press your KwikINF hot key. Letters, numbers, underscores, and 
  3608. the pound sign are retrievable by KwikINF. Blank spaces and other special 
  3609. characters are used as delimiters and are not retrievable by KwikINF. 
  3610.  
  3611. You may also type any text string you want into this field. All characters are 
  3612. valid in the entry field to allow for special search criteria. 
  3613.  
  3614.  
  3615. ΓòÉΓòÉΓòÉ 10.4.2. VOLUME TO SEARCH List Box ΓòÉΓòÉΓòÉ
  3616.  
  3617. The KwikINF window includes a list box of all online documents stored in the 
  3618. OS/2 BOOKSHELF subdirectories.  KwikINF initiates searches for information in 
  3619. any online document in this list. The online document where KwikINF looks for 
  3620. the Search String is selected from the Volume to Search list box by KwikINF or 
  3621. by you.  KwikINF selects the Volume to Search by looking for the text string 
  3622. that has a matching entry in the KwikINF index file or, if there is no matching 
  3623. entry in the index file, in the Default Volume you have selected in the 
  3624. Configure KwikINF window. Or you can override KwikINF's selection of the Volume 
  3625. to Search by making your own selection from the list box. 
  3626.  
  3627. You can also open and display the Contents of an online document by 
  3628. double-clicking on an entry in this list box. 
  3629.  
  3630.  
  3631. ΓòÉΓòÉΓòÉ 10.4.3. KwikINF Keys Help ΓòÉΓòÉΓòÉ
  3632.  
  3633. Use your KwikINF hot key (ALT+Q or the hot key you select from the Configure 
  3634. KwikINF window) to display the KwikINF window. You can also use your KwikINF 
  3635. hot key to initiate a search for a text string automatically, when you 
  3636. configure KwikINF to bypass the KwikINF window. 
  3637.  
  3638. To re-configure KwikINF, when you have configured KwikINF to bypass the KwikINF 
  3639. window, press SHIFT + your KwikINF hot key. 
  3640.  
  3641. To determine what your KwikINF hot key is, double-click on the KwikINF program 
  3642. object in the OS/2 Toolkit Information folder. 
  3643.  
  3644.  
  3645. ΓòÉΓòÉΓòÉ 11. Link for Object and Library Files (LINK386) ΓòÉΓòÉΓòÉ
  3646.  
  3647. LINK386 is used to combine object files and standard library files into a 
  3648. single file: an executable file, a dynamic-link library, or a device driver. 
  3649. The output file from LINK386 is not constrained to specific memory addresses. 
  3650. Thus, the operating system can load and execute this file at any convenient 
  3651. address. 
  3652.  
  3653. LINK386 Input 
  3654.  
  3655. LINK386 uses the following files as input: 
  3656.  
  3657.      One or more object files that are linked with any optional library files 
  3658.       to form the executable file. Object files usually have a .OBJ extension. 
  3659.  
  3660.       LINK386 accepts object files compiled or assembled for 8088, 80286, 
  3661.       80386, 80486, or PENTIUM* microprocessors. Object files must be in the 
  3662.       Object Module Format (OMF), which is based on the Intel* 8086 OMF, and 
  3663.       Tool Interface Standards Portable Formats Specification. 
  3664.  
  3665.      One or more library files.  The library files contain object modules that 
  3666.       are linked to the object files to form the executable file. Library files 
  3667.       usually have a .LIB extension. 
  3668.  
  3669.       Library files are used to resolve external references in your object 
  3670.       files. 
  3671.  
  3672.      A module definition file.  The module definition file provides 
  3673.       information to LINK386 about the executable file or dynamic link library 
  3674.       file it is creating.  The module definition file usually has a .DEF 
  3675.       extension. 
  3676.  
  3677.  LINK386 Output 
  3678.  
  3679.  LINK386 can produce dynamic-link libraries (.DLL) and device drivers (.SYS), 
  3680.  in addition to executable files (.EXE). For additional information, see Output 
  3681.  Files. 
  3682.  
  3683.  LINK386 displays all of its output messages on the standard output device. 
  3684.  
  3685.  LINK386 Features 
  3686.  
  3687.  LINK386 creates the executable file and map file in the current directory 
  3688.  unless you enter an explicit path. 
  3689.  
  3690.  LINK386 looks in several locations for object, library, and module-definition 
  3691.  files. See Where LINK386 Looks for Files. 
  3692.  
  3693.  File names are not case sensitive; for example, abc.exe and ABC.EXE refer to 
  3694.  the same file. 
  3695.  
  3696.  If you enter a file name without an extension, LINK386 adds a Default Filename 
  3697.  Extension that depends on the type of file expected. 
  3698.  
  3699.  If you leave a field blank (but define the field with a comma), LINK386 uses a 
  3700.  default for the field.  If you end the LINK386 command with a semicolon (;), 
  3701.  LINK386 uses Filename Defaults for all remaining fields. 
  3702.  
  3703.  If you do not give all file names or do not end the command line with a 
  3704.  semicolon, LINK386 prompts you for the omitted files. 
  3705.  
  3706.  
  3707. ΓòÉΓòÉΓòÉ 11.1. Starting LINK386 ΓòÉΓòÉΓòÉ
  3708.  
  3709. Some commands and applications call LINK386 for you, or you can run LINK386 by 
  3710. typing LINK386 at the operating-system prompt. Supply input to LINK386 by any 
  3711. of three methods: 
  3712.  
  3713.      Enter the input directly on the command line. 
  3714.  
  3715.      Respond to prompts generated by LINK386. 
  3716.  
  3717.      Put your input in a response file, and enter the file name on the command 
  3718.       line. 
  3719.  
  3720.  You can press Ctrl+C at any time to interrupt LINK386 and return to the 
  3721.  operating system. 
  3722.  
  3723.  To display LINK386 help, type LINK386 /? at the prompt. A copyright statement 
  3724.  appears along with a list of valid LINK386 options. 
  3725.  
  3726.  
  3727. ΓòÉΓòÉΓòÉ 11.1.1. Syntax ΓòÉΓòÉΓòÉ
  3728.  
  3729.       LINK386 [options] objfiles [,exefile, mapfile, libraries, deffile] 
  3730.  
  3731.       OR 
  3732.  
  3733.       LINK386 @responsefile 
  3734.  
  3735.  SYNTAX DEFINITIONS 
  3736.  
  3737.  The LINK386 command line includes the following fields: 
  3738.  
  3739.  <options> 
  3740.       Options modifying actions of LINK386. Options can appear anywhere on the 
  3741.       command line except immediately after the commas used to separate fields. 
  3742.       See Options and Using LINK386 Options. 
  3743.  
  3744.  <Object Files> 
  3745.       Object files to be linked. Separate multiple file names by plus (+) or 
  3746.       space characters. At least one name must be entered. Library files can 
  3747.       also be entered. See Entering Library Files as Object Files. 
  3748.  
  3749.  <exefile> 
  3750.       Output of file.  LINK386 produces either an executable file, a 
  3751.       dynamic-link library, or a device driver. 
  3752.  
  3753.  <mapfile> 
  3754.       Map file created that lists modules in <exefile>. Use the /M option to 
  3755.       include public symbols in this file. Enter NUL if you do not want a map 
  3756.       file. See List Public Symbols (/M). 
  3757.  
  3758.  <libraries> 
  3759.       Standard or import (not dynamic-link) libraries to be used in resolving 
  3760.       external references.  Separate multiple file names by plus (+) or space 
  3761.       characters. Some libraries are searched by default. You can also specify 
  3762.       a path to a directory -- LINK386 will search for libraries in a path 
  3763.       specified on the <libraries> line before searching directories given by 
  3764.       the LIB environment variable. See Linking with an Import Library, Default 
  3765.       Libraries and Specifying Library Directories. 
  3766.  
  3767.  <deffile> 
  3768.       Module definition file. 
  3769.  
  3770.  SYNTAX EXAMPLES 
  3771.  
  3772.  The following command links the object files FUN.OBJ, TEXT.OBJ, TABLE.OBJ, and 
  3773.  CARE.OBJ. LINK386 searches for unresolved external references in the library 
  3774.  file XLIB.LIB and in the default libraries. By default, the executable file is 
  3775.  named FUN.EXE. LINK386 also produces a map file, FUNLIST.MAP. 
  3776.  
  3777.     LINK386 FUN+TEXT+TABLE+CARE, ,FUNLIST, XLIB.LIB;
  3778.  
  3779.  The following command produces a map file named FUN.MAP because a comma 
  3780.  appears as a placeholder for <mapfile>. 
  3781.  
  3782.     LINK386 FUN,,;
  3783.  
  3784.  The next pair of command lines do not produce a map file because commas do not 
  3785.  appear as placeholders for <mapfile>. 
  3786.  
  3787.   LINK386 FUN,;
  3788.   LINK386 FUN;
  3789.  
  3790.  The following command links the files MAIN.OBJ, GETDATA.OBJ, and PRINTIT.OBJ 
  3791.  into an executable file named MAIN.EXE. A map file named MAIN.MAP is also 
  3792.  produced. 
  3793.  
  3794.     LINK386 MAIN+GETDATA+PRINTIT, , MAIN;
  3795.  
  3796.  The following command links GETDATA.OBJ and PRINTIT.OBJ into an OS/2 
  3797.  dynamic-link library.  MODDEF.DEF must contain a LIBRARY statement to produce 
  3798.  the dynamic-link library. 
  3799.  
  3800.   LINK386 GETDATA+PRINTIT,GETDATA.DLL, , MODDEF
  3801.  
  3802.  
  3803. ΓòÉΓòÉΓòÉ 11.1.2. Object Files ΓòÉΓòÉΓòÉ
  3804.  
  3805. LINK386 accepts object files compiled or assembled for the 8088, 80286, 
  3806. 80386,80486 or PENTIUM microprocessor. LINK386 also accepts standard library 
  3807. files. 
  3808.  
  3809.  
  3810. ΓòÉΓòÉΓòÉ 11.1.3. Output Files ΓòÉΓòÉΓòÉ
  3811.  
  3812. LINK386 Can Produce Three Types of Output Files 
  3813.  
  3814.      Executable (.EXE) files that run under OS/2 protected mode 
  3815.  
  3816.       LINK386 produces an executable file whenever you specify a 
  3817.       module-definition file containing a NAME Statement. The module definition 
  3818.       file should not have a LIBRARY Statement, VIRTUAL DEVICE Statement, or 
  3819.       PHYSICAL DEVICE Statement; otherwise, a dynamic-link library or device 
  3820.       driver is produced, as described below. 
  3821.  
  3822.      Dynamic-link library (.DLL) files 
  3823.  
  3824.       A dynamic-link library is produced whenever you specify a 
  3825.       module-definition file containing a LIBRARY statement. 
  3826.  
  3827.      Device driver (.SYS) files 
  3828.  
  3829.       A virtual or physical device driver is produced whenever you specify a 
  3830.       module-definition file containing the VIRTUAL DEVICE or PHYSICAL DEVICE 
  3831.       statements. 
  3832.  
  3833.  
  3834. ΓòÉΓòÉΓòÉ 11.1.4. Prompts ΓòÉΓòÉΓòÉ
  3835.  
  3836. LINK386 prompts you if any fields have not been entered on the Syntax or in a 
  3837. response file. For each prompt, simply enter the same input that you would 
  3838. enter on the command line and press Enter. 
  3839.  
  3840.  Object Modules [.OBJ]: 
  3841.       <objfiles> 
  3842.  
  3843.  Run File [basename.EXE]: 
  3844.       <exefile> 
  3845.  
  3846.  List File [NUL.MAP]: 
  3847.       <mapfile> 
  3848.  
  3849.  Libraries [.LIB]: 
  3850.       <libraries> 
  3851.  
  3852.  Definitions File [NUL.DEF]: 
  3853.       <deffile> 
  3854.  
  3855.  Special Features 
  3856.  
  3857.      To extend input to a new line, type a plus sign (+) as the last character 
  3858.       on the current line. When the same prompt appears on a new line, you can 
  3859.       continue. Do not, however, split a file name across lines. 
  3860.  
  3861.      To select the default response to a prompt, press Enter. The next prompt 
  3862.       appears. 
  3863.  
  3864.      To select default responses to the current prompt and all remaining 
  3865.       prompts, enter a semicolon (;). Note that at least one object file must 
  3866.       be entered. 
  3867.  
  3868.      You can specify options anywhere on any response line, except before a 
  3869.       comma at the end of a line of characters. If you want to specify more 
  3870.       than one option, either group them at the end of a response, or specify 
  3871.       them at the end of several responses. Each option must begin with a slash 
  3872.       (/). 
  3873.  
  3874.  
  3875. ΓòÉΓòÉΓòÉ 11.1.5. Response Files ΓòÉΓòÉΓòÉ
  3876.  
  3877. A response file is a text file used to provide input to LINK386. To use 
  3878. response file input for LINK386, type 
  3879.  
  3880.   LINK386 @responsefile
  3881.  
  3882. The @ symbol tells LINK386 that responsefile is the name of a response file. If 
  3883. the file is not in the working directory, you must specify the path. 
  3884.  
  3885. The field <responsefile> specifies the name of a file containing the same input 
  3886. that would be entered on the command line or entered in response to LINK386 
  3887. prompts.  In this file, each response should appear on a separate line or be 
  3888. separated from other responses by a comma. 
  3889.  
  3890. To operate LINK386 using a response file, you must first create a file that 
  3891. contains the responses you want LINK386 to process. You can give the file any 
  3892. name, and create it with any text editor. 
  3893.  
  3894. Special Features: 
  3895.  
  3896.      You can begin using a response file at any point on the LINK386 Syntax or 
  3897.       at any LINK386 prompt. The response file should contain responses to all 
  3898.       remaining fields or prompts. 
  3899.  
  3900.      If the file does not contain responses for all the prompts, LINK386 
  3901.       displays the appropriate prompt and waits for you to supply a response. 
  3902.       End the response file with a semicolon. 
  3903.  
  3904.      You can use special characters in the response file the same way you 
  3905.       would use them in responses entered at the keyboard. For example, you can 
  3906.       extend input to a new line by using the plus sign (+) and choose default 
  3907.       responses for all remaining prompts by using a semicolon (;). 
  3908.  
  3909.      LINK386 displays prompts and the entries from the response file on the 
  3910.       screen. If the entry in the response file is not acceptable, LINK386 
  3911.       pauses and waits for you to enter an acceptable response. The "Run in 
  3912.       Batch Mode (/BAT)" disables the prompt. 
  3913.  
  3914.      Options can appear anywhere in the response file. 
  3915.  
  3916.  
  3917. ΓòÉΓòÉΓòÉ 11.1.5.1. Response File Example ΓòÉΓòÉΓòÉ
  3918.  
  3919. FUN TEXT TABLE CARE
  3920. /DEBUG /MAP
  3921. FUNLIST
  3922. GRAF.LIB
  3923.  
  3924. If the text file above were named FUN.LNK, the following command would use this 
  3925. file as a response file: 
  3926.  
  3927. LINK386 @FUN.LNK
  3928.  
  3929. This would cause LINK386 to do the following: 
  3930.  
  3931.      Link the four object modules FUN, TEXT, TABLE, and CARE into an 
  3932.       executable file named FUN.EXE 
  3933.  
  3934.      Generate the map file FUNLIST.MAP 
  3935.  
  3936.      Generate Debugging information 
  3937.  
  3938.      Include public symbols and addresses in the map file 
  3939.  
  3940.      Link any needed routines from the library file GRAF.LIB 
  3941.  
  3942.  The response file in the following example instructs LINK386 to generate an 
  3943.  executable file, called FUN.EXE, from four object modules, FUN, SUN, RUN, and 
  3944.  GAMES. 
  3945.  
  3946.  If you specify the file name, FUNLIST, LINK386 will generate a map file named 
  3947.  FUNLIST.MAP.  Adding the /MAP option will cause LINK386 to include the public 
  3948.  symbols of the application in the map file. 
  3949.  
  3950.   fun+sun+run+game /map
  3951.   fun.exe
  3952.   funlist
  3953.   ;
  3954.  
  3955.  
  3956. ΓòÉΓòÉΓòÉ 11.1.6. Default Libraries ΓòÉΓòÉΓòÉ
  3957.  
  3958. Most compilers embed the names of needed libraries (called default libraries) 
  3959. in object files.  LINK386 searches these libraries. Because of this, you need 
  3960. to explicitly enter library names only in the following cases: 
  3961.  
  3962.      You want to use additional libraries. 
  3963.  
  3964.      You are using a library not in the current directory and not in a 
  3965.       directory specified by the LIB environment variable. See Where LINK386 
  3966.       Looks for Files. 
  3967.  
  3968.      You want to use a library other than the one specified in the object 
  3969.       file. 
  3970.  
  3971.  Explicitly entered libraries are always searched before default libraries.  If 
  3972.  an external reference is resolved by more than one library, the order of 
  3973.  libraries on the command line determines which library is used. 
  3974.  
  3975.  To ignore default libraries use the Ignore Default Libraries (/NOD). But be 
  3976.  careful - most compilers expect their object files to be linked with default 
  3977.  libraries. 
  3978.  
  3979.  
  3980. ΓòÉΓòÉΓòÉ 11.1.7. Entering Library Files as Object Files ΓòÉΓòÉΓòÉ
  3981.  
  3982. You can enter library files in the <objfiles> field.  Be sure to include the 
  3983. .LIB file name extension; otherwise, LINK386 assumes a .OBJ extension. 
  3984.  
  3985. With libraries entered in the <objfiles> field, LINK386 adds every module in 
  3986. the library to your output file.  With libraries entered in the <libraries> 
  3987. field, LINK386 adds only those required to resolve external references. 
  3988.  
  3989. The effect of entering a library this way is the same as if you had entered all 
  3990. of the library's module names into the <objfiles>field. 
  3991.  
  3992.  
  3993. ΓòÉΓòÉΓòÉ 11.1.7.1. Specifying Library Directories ΓòÉΓòÉΓòÉ
  3994.  
  3995. LINK386 searches additional locations for libraries using the drive name or 
  3996. path specification in the <libraries> field on the command line. 
  3997.  
  3998. You can specify up to 32 additional paths.  If you give more than 32 paths, 
  3999. LINK386 ignores the additional paths without displaying an error message. 
  4000.  
  4001.  
  4002. ΓòÉΓòÉΓòÉ 11.1.7.2. Where LINK386 Looks for Files ΓòÉΓòÉΓòÉ
  4003.  
  4004. When searching for an object, library, or module definition file, LINK386 looks 
  4005. in the following locations in this order: 
  4006.  
  4007.    1. The directory specified for the file if a path specification is included. 
  4008.       Default Libraries do not include path specifications. 
  4009.  
  4010.    2. The current directory. 
  4011.  
  4012.    3. Any directories entered on the command line. 
  4013.  
  4014.    4. Any directories given by the LIB environment variable. 
  4015.  
  4016.  If LINK386 cannot locate a file, it prompts you to enter the location. The 
  4017.  "Run in Batch Mode (/BAT)" disables these prompts. 
  4018.  
  4019.  
  4020. ΓòÉΓòÉΓòÉ 11.1.7.3. Library Search Example ΓòÉΓòÉΓòÉ
  4021.  
  4022. LINK386
  4023. Object Modules [.OBJ]: FUN TEXT TABLE CARE
  4024. Run File [FUN.EXE]:
  4025. List File [NUL.MAP]:
  4026. Libraries [.LIB]: C:\TESTLIB\ NEWLIBV3
  4027. Definitions File [NUL.DEF]:
  4028.  
  4029. This example links four object modules to create an executable file named 
  4030. FUN.EXE.  LINK386 searches NEWLIBV3.LIB before searching the default libraries 
  4031. to resolve references. 
  4032.  
  4033. To locate NEWLIBV3.LIB and the default libraries, LINK386 searches the 
  4034. following locations in this order: 
  4035.  
  4036.    1. The current directory 
  4037.  
  4038.    2. The C:\TESTLIB\ directory 
  4039.  
  4040.    3. The locations given by the LIB environment variable 
  4041.  
  4042.  
  4043. ΓòÉΓòÉΓòÉ 11.1.7.4. Filename Defaults ΓòÉΓòÉΓòÉ
  4044.  
  4045. If you do not enter a file name, LINK386 assumes a default: 
  4046.  
  4047.  <options> 
  4048.       No options 
  4049.  
  4050.  <objfiles> 
  4051.       None (This field is required.) 
  4052.  
  4053.  <exefile> 
  4054.       The base name of the first file in <objfiles> with the .EXE extension 
  4055.       added 
  4056.  
  4057.  <mapfile> 
  4058.       The base name in <exefile> with the .MAP extension added 
  4059.  
  4060.  <libraries> 
  4061.       No libraries 
  4062.  
  4063.  <deffile> 
  4064.       No module definition file 
  4065.  
  4066.  
  4067. ΓòÉΓòÉΓòÉ 11.1.7.5. Default Filename Extension ΓòÉΓòÉΓòÉ
  4068.  
  4069. If you do not enter an extension, LINK386 uses a default extension, depending 
  4070. on the type of file. 
  4071.  
  4072.  Object                   .OBJ 
  4073.  Executable               .EXE 
  4074.  Map                      .MAP 
  4075.  Standard Library         .LIB 
  4076.  Dynamic-Link Library     .DLL 
  4077.  Module Definition        .DEF 
  4078.  
  4079.  Overriding Default Extension 
  4080.  
  4081.  Any time you explicitly enter an extension, it overrides the default 
  4082.  extension.  To specify a file name without an extension, just enter a period 
  4083.  (.) after the file name. 
  4084.  
  4085.  
  4086. ΓòÉΓòÉΓòÉ 11.2. Options ΓòÉΓòÉΓòÉ
  4087.  
  4088. The following is a summary of LINK386 options: 
  4089.  
  4090.  /?                                 Display Help 
  4091.  /A[LIGNMENT]                       Align 
  4092.  /BAS[E]                            Base 
  4093.  /BAT[CH]                           Run in Batch Mode 
  4094.  /C[ODEVIEW]                        Prepare for Debugging 
  4095.  /DE[BUG]                           Prepare for Debugging 
  4096.  /DO[SSEG]                          Order Segments 
  4097.  /E[XEPACK]                         Exepack (You can add :1 or :2.) 
  4098.  /EXEPACK                           Exepack 
  4099.  /EXEPACK:1                         Exepack 
  4100.  /E:2                               Exepack 
  4101.  /E:1                               Exepack 
  4102.  /EXE:2                             Exepack 
  4103.  /EXEP                              Exepack 
  4104.  /F[ARCALLTRANSLATION]              Optimize Far Calls 
  4105.  /H[ELP]                            Display Help 
  4106.  /I[NFORMATION]                     Display Process Information 
  4107.  /L[INENUMBERS]                     Include Line Numbers 
  4108.  /M[AP]                             List Public Symbols 
  4109.  /NOD[EFAULTLIBRARYSEARCH]          Ignore Default Libraries 
  4110.  /NOE[XTDICTIONARY]                 Ignore Extended Dictionary 
  4111.  /NOF[ARCALLTRANSLATION]            Disable Far Optimization 
  4112.  /NOI[GNORECASE]                    Preserve Case Sensitivity 
  4113.  /NOL[OGO]                          Disable Sign-On Banner 
  4114.  /NON[ULLSDOSSEG]                   Order Segments without NULLs 
  4115.  /NOO[UTPUTONERROR]                 Does not produce <exefile> if an error 
  4116.                                     occurs during linking. 
  4117.  /NOS[ECTORALIGNCODE]               Disable Automatic Sector Alignment code. 
  4118.  /NOP[ACKCODE]                      Disable Code-Segment Packing 
  4119.  /PACKC[PACKCODE]                   Combine Contiguous Code 
  4120.  /PACKD[ATA]                        Combine Contiguous Data 
  4121.  /PAU[SE]                           Pause during Linking 
  4122.  /PM[TYPE]                          Name Application Type 
  4123.  /RU[NFROMVDM]                      Allow Execution From DOS Command Line 
  4124.  /SE[GMENTS]                        Set Max Number of Segments 
  4125.  /ST[ACK]                           Control Stack Size 
  4126.  /W[ARNFIXUP]                       Warn Fixup 
  4127.  
  4128.  Options Not Supported Under LINK386 
  4129.  
  4130.       /O[VERLAYINTERRUPT] 
  4131.       /CP[ARMAXALLOC] 
  4132.       /PADC[ODE] 
  4133.       /DS[ALLOCATE] 
  4134.       /PADD[ATA] 
  4135.       /Q[UICKLIB] 
  4136.       /HI[GH] 
  4137.       /T[INY] 
  4138.       /INC[REMENTAL] 
  4139.       /NOG[ROUPALIGN] 
  4140.  
  4141.  Specifying LINK386 Options 
  4142.  
  4143.  You can specify options anywhere on the response line, except before a comma 
  4144.  at the end of a line of characters.  If you want to specify more than one 
  4145.  option, either group them at the end of a response, or specify them at the end 
  4146.  of several responses.  Each option must begin with a forward slash (/). 
  4147.  
  4148.  
  4149. ΓòÉΓòÉΓòÉ 11.2.1. Using LINK386 Options ΓòÉΓòÉΓòÉ
  4150.  
  4151.    1. Options always begin with the slash character (/). 
  4152.  
  4153.    2. Options are not case sensitive.  For example, /de and /DE are equivalent. 
  4154.  
  4155.    3. You can specify options in either the short or long form.  The short form 
  4156.       is the shortest sequence of characters that uniquely identifies the 
  4157.       option.  The individual description of each option lists both forms with 
  4158.       the optional part enclosed in brackets.  For example, /BAT[CH] indicates 
  4159.       that either /BAT or /BATCH can be used. 
  4160.  
  4161.    4. Some linker options take numeric arguments.  You can enter numbers in 
  4162.       decimal, octal, or hexadecimal radix using standard C-language syntax. 
  4163.  
  4164.    5. You can also specify options in the LINK386 environment variable. 
  4165.  
  4166.    6. Although use of the minimum one-letter abbreviations is allowed, if a 
  4167.       future release has an additional option starting with the same letter, 
  4168.       the one-letter option will no longer be usable. 
  4169.  
  4170.  
  4171. ΓòÉΓòÉΓòÉ 11.2.2. Recommendations ΓòÉΓòÉΓòÉ
  4172.  
  4173. It is recommended that the ALIGN:2, BASE, FARCALLTRANSLATION, RUNFROMVDM, and 
  4174. EXEPACK:2 options be used when linking all executables.  This will compress 
  4175. them in size and improve their performance. Executables linked with EXEPACK:2 
  4176. can be run only on OS/2 versions 3.0 and later. 
  4177.  
  4178. If BASE is used with .EXE files, the /BASE:0x10000 option must be used.  Any 
  4179. other value will produce a warning. 
  4180.  
  4181.  
  4182. ΓòÉΓòÉΓòÉ 11.2.3. Entering Numeric Arguments ΓòÉΓòÉΓòÉ
  4183.  
  4184. Some LINK386 options and module statements take numeric arguments.  LINK386 
  4185. uses C-language syntax allowing you to specify numbers in any of the following 
  4186. forms: 
  4187.  
  4188.      Any number not prefixed with 0 or 0x is a decimal number. For example, 
  4189.       1234 is a decimal number. 
  4190.  
  4191.      Any number prefixed with 0 (but not 0x) is an octal number. For example, 
  4192.       01234 is an octal number. 
  4193.  
  4194.      Any number prefixed with 0x is a hexadecimal number. For example, 0x1234 
  4195.       is a hexadecimal number. 
  4196.  
  4197.  
  4198. ΓòÉΓòÉΓòÉ 11.2.4. Environment Variable ΓòÉΓòÉΓòÉ
  4199.  
  4200. You can use the LINK386 environment variable to cause certain options to be 
  4201. used each time you link.  LINK386 checks the environment variable for options 
  4202. if the variable exists. 
  4203.  
  4204. LINK386 expects to find options listed in the variable exactly as you would 
  4205. type them on the command line.  It does not accept other kinds of arguments; 
  4206. file names in the environment variable cause the following error message: 
  4207.  
  4208. unrecognized option
  4209.  
  4210. Each time you link, you can specify other options in addition to the ones 
  4211. specified in the LINK386 environment variable. If you type an option both on 
  4212. the Syntax and in the environment variable, the effect is the same as if the 
  4213. option were given once. 
  4214.  
  4215. Note:  A command line option overrides the effect of any environment-variable 
  4216. option that it conflicts with.  For example, the command line option /SE:512 
  4217. cancels the effect of the environment-variable option /SE:256. 
  4218.  
  4219. The only way to prevent an option in the environment variable from being used 
  4220. is to reset the environment variable itself. 
  4221.  
  4222.  
  4223. ΓòÉΓòÉΓòÉ 11.2.5. Environment Variable Example ΓòÉΓòÉΓòÉ
  4224.  
  4225. <SET LINK386=/NOI /SE:256 /DEBUG
  4226. <LINK386 TEST;
  4227. <LINK386 /NOD /DEBUG PROG;
  4228.  
  4229. In the example above, the file TEST.OBJ is linked with the options /NOI, 
  4230. /SE:256, and /DEBUG. The file PROG.OBJ is then linked with the option /NOD - in 
  4231. addition to /NOI, /SE:256, and /DEBUG. 
  4232.  
  4233.  
  4234. ΓòÉΓòÉΓòÉ 11.2.5.1. Alignment (/A) ΓòÉΓòÉΓòÉ
  4235.  
  4236. Syntax:  /A[LIGNMENT]:n 
  4237.  
  4238. This option directs LINK386 to set the alignment factor in the executable file 
  4239. to the number given, which must be a power of 2, from 2 to 32768. The default 
  4240. alignment is 512 bytes. Trailing zeroes are truncated to reduce the amount of 
  4241. data stored in a file. 
  4242.  
  4243. Each page starts at a location that is a multiple of n bytes from the beginning 
  4244. of the file.  For example, /A:16 would start pages at multiples of 16 bytes. 
  4245.  
  4246. Link386 produces pages that are a maximum of 4096 bytes in length. Alignment 
  4247. factors greater than 4096 will waste disk space. 
  4248.  
  4249.  
  4250. ΓòÉΓòÉΓòÉ 11.2.5.2. BASE (/BASE) ΓòÉΓòÉΓòÉ
  4251.  
  4252. Syntax: BASE:n 
  4253.  
  4254. Where n is a value rounded up to the nearest multiple of 64K Indicates that 
  4255. each object of the module has a preferred load address starting with object 1 
  4256. at this address, object 2 at the next available multiple of 64K, and so on. 
  4257. Internal relocation records are then applied using this addressing scheme. 
  4258.  
  4259. If the module's objects can be loaded beginning at this preferred address, then 
  4260. no load-time internal relocation records need be applied. 
  4261.  
  4262. If the module's objects cannot be loaded beginning at this preferred address, 
  4263. then the internal relocation records that have been retained in the file data 
  4264. will be applied. 
  4265.  
  4266. .EXE files may specify a base address, but it must be 64K.  If it isn't, a 
  4267. warning will be issued and a base address of 64K will be used anyway. This 
  4268. option provides the same support as the BASE module definition file statement. 
  4269.  
  4270.  
  4271. ΓòÉΓòÉΓòÉ 11.2.5.3. Run in Batch Mode (/BAT) ΓòÉΓòÉΓòÉ
  4272.  
  4273. Syntax:  /BAT[CH] 
  4274.  
  4275. By default, LINK386 prompts you for a new path name whenever it cannot find an 
  4276. object file or library it was directed to use. 
  4277.  
  4278. This option disables such prompting.  Instead, LINK386 generates an error or 
  4279. warning message, as appropriate, and leaves the external reference unresolved. 
  4280. The /BAT option also disables the display of the sign-on banner and the display 
  4281. of input from response files. 
  4282.  
  4283. This option is primarily used when LINK386 is called from a batch file or 
  4284. Description Files. 
  4285.  
  4286. Note:  This option does not affect prompts for Command Line Input. 
  4287.  
  4288.  
  4289. ΓòÉΓòÉΓòÉ 11.2.5.4. Prepare for Debugging (/C) ΓòÉΓòÉΓòÉ
  4290.  
  4291. Syntax:  /C[ODEVIEW] 
  4292.  
  4293. This option works exactly like the Prepare for Debugging (/DE) option. 
  4294.  
  4295. The /C option is used to prepare for debugging with any debugger. With this 
  4296. option, LINK386 imbeds symbolic data and line number information in the 
  4297. executable output file. 
  4298.  
  4299. You can run this executable file outside Debug; the debugging information in 
  4300. the file is ignored.  However, to reduce executable file size, use this option 
  4301. only for debugging.  Then you can link a separate version without the /C option 
  4302. after the program is debugged. 
  4303.  
  4304.  
  4305. ΓòÉΓòÉΓòÉ 11.2.5.5. Prepare for Debugging (/DE) ΓòÉΓòÉΓòÉ
  4306.  
  4307. Syntax:  /DE[BUG] 
  4308.  
  4309. The /DE option is used to prepare for debugging with any debugger.  With this 
  4310. option, LINK386 embeds symbolic data and line number information in the 
  4311. executable output file. 
  4312.  
  4313. You can run this executable file outside Debug; the debugging information in 
  4314. the file is ignored.  However, to reduce executable file size, use this option 
  4315. only for debugging.  Then you can link a separate version without the /DE 
  4316. option after the program is debugged. 
  4317.  
  4318.  
  4319. ΓòÉΓòÉΓòÉ 11.2.5.6. Order Segments (/DO) ΓòÉΓòÉΓòÉ
  4320.  
  4321. Syntax:  /DO[SSEG] 
  4322.  
  4323. This option is automatically enabled by a special object module record in many 
  4324. language libraries.  If you are linking to one of these libraries, you need not 
  4325. specify this option. 
  4326.  
  4327. The /DO option is also enabled by assembly modules that use the Macro Assembler 
  4328. directive .DOSSEG. 
  4329.  
  4330. This option forces segments to be ordered as follows (first to last): 
  4331.  
  4332.    1. All code segments 
  4333.  
  4334.    2. Far data segments 
  4335.  
  4336.    3. Near data (DGROUP) segments, in the following order: 
  4337.  
  4338.         a. Any segments of class BEGDATA (this class name is reserved) 
  4339.         b. Any segments not of class BEGDATA, BSS, or STACK 
  4340.         c. Segments of class BSS 
  4341.         d. Segments of class STACK 
  4342.  
  4343.  In addition, the /DO option causes LINK386 to do the following: 
  4344.  
  4345.      Initialize two special variables: 
  4346.  
  4347.             _edata = DGROUP : BSS
  4348.             _end = DGROUP : STACK
  4349.  
  4350.       The variables _edata and _end have special meanings for certain 
  4351.       compilers; avoid using these names in your programs.  Assembly-language 
  4352.       programs can refer to these variables, but should not change them. 
  4353.  
  4354.      Insert 16 null bytes at the beginning of the _TEXT segment (if this 
  4355.       segment is defined). 
  4356.  
  4357.  
  4358. ΓòÉΓòÉΓòÉ 11.2.5.7. Exepack (/E) ΓòÉΓòÉΓòÉ
  4359.  
  4360. Syntax:  /E[XEPACK] or /E[EXEPACK]:1 or /E[XEPACK]:2. 
  4361.  
  4362. EXEPACK causes pages of code and data in the file to be compressed. The OS/2 
  4363. Application Loader will automatically decompress these pages when the program 
  4364. is run. 
  4365.  
  4366. /EXEPACK:1 will use a compression algorithm that is compatible with OS/2 2.0, 
  4367. 2.1, and 2.11, as well as OS/2 3.0 and later. 
  4368.  
  4369. /EXEPACK:2 will use a compression algorithm that is compatible with OS/2 3.0 
  4370. and later. 
  4371.  
  4372. /EXEPACK:2 will produce smaller executables that typically load faster. 
  4373.  
  4374.  
  4375. ΓòÉΓòÉΓòÉ 11.2.5.8. Optimize Far Calls (/F) ΓòÉΓòÉΓòÉ
  4376.  
  4377. Syntax:  /F[ARCALLTRANSLATION] 
  4378.  
  4379. This option causes LINK386 to optimize far-call instructions made from one 
  4380. segment to a target address in the same segment. LINK386 replaces calling 
  4381. sequences such as CALL FAR function with the following: 
  4382.  
  4383. PUSH     CS
  4384. CALL     NEAR function
  4385. NOP
  4386.  
  4387. The new calling sequence is significantly faster when running in protected 
  4388. mode.  Also, a load-time relocation is eliminated, which decreases program file 
  4389. size and speeds program loading. 
  4390.  
  4391. In general, the greatest benefit occurs if you use the "Combine Contiguous 
  4392. Code(/PACKC)" in addition to the /F option. 
  4393.  
  4394. The /F option has no effect on programs that make only near calls. 
  4395.  
  4396. Note:  There is a small risk involved with using the /F option. LINK386 may 
  4397. mistakenly interpret a byte of immediate data in a code segment as a far call 
  4398. if it has to have the far-call opcode (0x9A). 
  4399.  
  4400.  
  4401. ΓòÉΓòÉΓòÉ 11.2.5.9. Display Help (/H or /?) ΓòÉΓòÉΓòÉ
  4402.  
  4403. Syntax:  /H[ELP]   OR    /? 
  4404.  
  4405. These options display a list of valid LINK386 options. 
  4406.  
  4407.  
  4408. ΓòÉΓòÉΓòÉ 11.2.5.10. Display Process Information (/I) ΓòÉΓòÉΓòÉ
  4409.  
  4410. Syntax:  /I[NFORMATION] 
  4411.  
  4412. This option causes LINK386 to display information about the linking process, 
  4413. including the phase of linking and the names of the object files being linked. 
  4414. Use this option to determine the locations of the object files being linked and 
  4415. the order in which they are linked. 
  4416.  
  4417. The output from this option is sent to standard output. 
  4418.  
  4419.  
  4420. ΓòÉΓòÉΓòÉ 11.2.5.11. Include Line Numbers (/L) ΓòÉΓòÉΓòÉ
  4421.  
  4422. Syntax:  /L[INENUMBERS] 
  4423.  
  4424. This option includes source file line numbers and associated addresses in the 
  4425. map file.  In addition, you must give LINK386 an object file (or files) with 
  4426. line number information.  You can use the /Zd option with most compilers to 
  4427. include line numbers in the object file.  If you give LINK386 an object file 
  4428. without line number information, the /L option has no effect. The option for 
  4429. CSET/++ is /ti. 
  4430.  
  4431. The /L option forces LINK386 to create a map file even if you did not 
  4432. explicitly tell LINK386 to create a map file.  By default, the file is given 
  4433. the same base name as the executable file, plus the extension .MAP.  You can 
  4434. override the default name by explicitly specifying a map file name. 
  4435.  
  4436.  
  4437. ΓòÉΓòÉΓòÉ 11.2.5.12. List Public Symbols (/M) ΓòÉΓòÉΓòÉ
  4438.  
  4439. Syntax:  /M[AP][:full] 
  4440.  
  4441. This option lists in the map file all public (global) symbols defined in the 
  4442. object files.  With this option, the map file contains a list of all the 
  4443. symbols sorted by name, and a list of all the symbols sorted by address.  If 
  4444. you don't use this option, the map file contains only a list of segments. 
  4445.  
  4446. With this option, LINK386 creates a map file by default. If you explicitly 
  4447. enter a map file name of NUL, then no map file is created, and this option has 
  4448. no effect. 
  4449.  
  4450. The Map option can be specified as /M:full to produce a comprehensive map 
  4451. showing the composition of each segment. 
  4452.  
  4453.  
  4454. ΓòÉΓòÉΓòÉ 11.2.5.13. Ignore Default Libraries (/NOD) ΓòÉΓòÉΓòÉ
  4455.  
  4456. Syntax:  /NOD[EFAULTLIBRARYSEARCH][:filename] 
  4457.  
  4458. This option tells LINK386 to ignore Default Libraries when resolving external 
  4459. references.  If you specify an object file in <filename>, LINK386 ignores only 
  4460. the default libraries in <filename>. 
  4461.  
  4462. In general, high-level-language programs do not work correctly without standard 
  4463. libraries.  Thus, if you use the /NOD option, you should explicitly specify the 
  4464. name of a standard library in the <libraries> field of the command line. 
  4465.  
  4466.  
  4467. ΓòÉΓòÉΓòÉ 11.2.5.14. Ignore Extended Dictionary (/NOE) ΓòÉΓòÉΓòÉ
  4468.  
  4469. Syntax:  /NOE[XTDICTIONARY] 
  4470.  
  4471. This option prevents LINK386 from searching the extended dictionary, an 
  4472. internal list of symbol locations included with libraries generated with the 
  4473. old LIB utility's /NOE option. 
  4474.  
  4475. Normally, LINK386 uses the extended dictionary to speed up library searches; 
  4476. thus, using /NOE slows LINK386.  This option should be used when a library 
  4477. symbol is redefined.  You need to use this option when LINK386 issues error 
  4478. L2044. 
  4479.  
  4480.  
  4481. ΓòÉΓòÉΓòÉ 11.2.5.15. Disable Far Optimization (/NOF) ΓòÉΓòÉΓòÉ
  4482.  
  4483. Syntax:  /NOF[ARCALLTRANSLATION] 
  4484.  
  4485. Far-call optimization is off by default.  If the LINK386 environment variable 
  4486. or another command (such as ICC) has turned it on, you can use /NOF to turn it 
  4487. off again. 
  4488.  
  4489.  
  4490. ΓòÉΓòÉΓòÉ 11.2.5.16. Preserve Case Sensitivity (/NOI) ΓòÉΓòÉΓòÉ
  4491.  
  4492. Syntax:  /NOI[GNORECASE] 
  4493.  
  4494. This option turns case sensitivity on; that is, LINK386 treats ABC, abc, and 
  4495. Abc as unique names.  By default, case sensitivity is off. 
  4496.  
  4497. This option can be used when you link programs written in case-sensitive 
  4498. languages such as C. 
  4499.  
  4500.  
  4501. ΓòÉΓòÉΓòÉ 11.2.5.17. Disable Sign-On Banner (/NOL) ΓòÉΓòÉΓòÉ
  4502.  
  4503. Syntax:  /NOL[OGO] 
  4504.  
  4505. This option disables the sign-on banner displayed when LINK386 starts. 
  4506.  
  4507.  
  4508. ΓòÉΓòÉΓòÉ 11.2.5.18. Order Segments without NULLs (/NON) ΓòÉΓòÉΓòÉ
  4509.  
  4510. Syntax:  /NON[ULLSDOSSEG] 
  4511.  
  4512. This option arranges segments in a special order.  The /NON option is 
  4513. equivalent to the Order Segments (/DO) except that /NON does NOT insert 16 null 
  4514. bytes at the beginning of the _TEXT segment (if this segment is defined). 
  4515.  
  4516. The /NON option overrides the /DO option when both are used. Therefore, you can 
  4517. use /NON to override the /DO comment record commonly found in standard 
  4518. libraries. 
  4519.  
  4520.  
  4521. ΓòÉΓòÉΓòÉ 11.2.5.19. No Output on Error (/NOO) ΓòÉΓòÉΓòÉ
  4522.  
  4523. Syntax:  /NOO[UTPUTONERROR] 
  4524.  
  4525. This option will keep Link386 from creating the executable if an error is 
  4526. encountered. 
  4527.  
  4528.  
  4529. ΓòÉΓòÉΓòÉ 11.2.5.20. Disable Code-Segment Combining (/NOP) ΓòÉΓòÉΓòÉ
  4530.  
  4531. Syntax:  /NOP[ACKCODE] 
  4532.  
  4533. This option turns code segment combining off. By default, code segment 
  4534. combining is on. 
  4535.  
  4536.  
  4537. ΓòÉΓòÉΓòÉ 11.2.5.21. Disable Sector Alignment of Code (/NOS) ΓòÉΓòÉΓòÉ
  4538.  
  4539. Syntax:  /NOS[ECTORALIGNCODE] 
  4540.  
  4541. Link386 will align passes of code on sector (512 bytes) boundaries.  This helps 
  4542. reduce the time to load the passes. The /NOSECTORALIGNCODE option is provided 
  4543. to turn off this feature.  Pages of code would then be aligned based on the 
  4544. /ALIGN value. 
  4545.  
  4546.  
  4547. ΓòÉΓòÉΓòÉ 11.2.5.22. Combine Contiguous Code (/PACKC) ΓòÉΓòÉΓòÉ
  4548.  
  4549. Syntax:  /PACKC[ODE]:number 
  4550.  
  4551. This option groups neighboring code segments.  Neighboring code segments are 
  4552. assigned the same segment address, and offsets to each routine are adjusted 
  4553. upward as required.  This option is on by default and is used only when you 
  4554. wish to override an environment variable that has turned code combining off. 
  4555. See Environment Variable and Disable Code-Segment Combining (/NOP) 
  4556.  
  4557. The <number> field specifies the maximum size of a code segment grouped by 
  4558. /PACKC.  If you do not use the /PACKC option or if you omit <number>, maximum 
  4559. size defaults to 65530. LINK386 stops adding segments to a group as soon as it 
  4560. cannot add another segment without exceeding <number>. At this point, LINK386 
  4561. forms a new segment. See Entering Numeric Arguments. 
  4562.  
  4563. Code combining generally produces slightly faster and more compact code.  Use 
  4564. the Optimize Far Calls (/F) option to provide the maximum opportunity for 
  4565. combining. 
  4566.  
  4567.  
  4568. ΓòÉΓòÉΓòÉ 11.2.5.23. Combining Contiguous Data (/PACKD) ΓòÉΓòÉΓòÉ
  4569.  
  4570. Syntax:  /PACKD[ATA] [:number] 
  4571.  
  4572. This option groups neighboring data segments.  It functions like the Combine 
  4573. Contiguous Code (/PACKC) option, except that it combines data segments. 
  4574.  
  4575. The <number> field specifies the maximum size of a data segment grouped by 
  4576. /PACKD; if you omit <number>, the maximum size defaults to 65,536.  LINK386 
  4577. stops adding segments to a group as soon as it cannot add another segment 
  4578. without exceeding <number>.  At this point, LINK386 forms a new group. See 
  4579. Entering Numeric Arguments. 
  4580.  
  4581.  
  4582. ΓòÉΓòÉΓòÉ 11.2.5.24. Pause during Linking (/PAU) ΓòÉΓòÉΓòÉ
  4583.  
  4584. Syntax:  /PAU[SE] 
  4585.  
  4586. This option makes LINK386 pause before writing the output file to disk.  The 
  4587. pause allows you to swap disks. 
  4588.  
  4589. With this option, LINK386 displays the following message before it creates the 
  4590. output file: 
  4591.  
  4592. About to generate .EXE file
  4593. Change diskette in drive letter and press Enter
  4594.  
  4595. LINK386 writes the output file when you press Enter. 
  4596.  
  4597. Be sure not to remove a disk containing the map file. If the disk you need to 
  4598. swap contains either of these files, press CTRL+C to terminate the LINK386 
  4599. session, rearrange your files, and link again. 
  4600.  
  4601.  
  4602. ΓòÉΓòÉΓòÉ 11.2.5.25. Name Application Type (/PM) ΓòÉΓòÉΓòÉ
  4603.  
  4604. Syntax:  /PM[TYPE]:type 
  4605.  
  4606. This option specifies the type of application being generated. Using the /PM 
  4607. option is equivalent to including a NAME statement in the module definition 
  4608. file. 
  4609.  
  4610. A keyword in <type> is equivalent to a keyword in a NAME statement as shown in 
  4611. the following list: 
  4612.  
  4613.  PM                  WINDOWAPI 
  4614.  VIO                 WINDOWCOMPAT 
  4615.  NOVIO               NOTWINDOWCOMPAT 
  4616.  
  4617.  
  4618. ΓòÉΓòÉΓòÉ 11.2.5.26. Execute from DOS Command Line (/RU) ΓòÉΓòÉΓòÉ
  4619.  
  4620. Syntax:  /RU[NFROMVDM]: 
  4621.  
  4622. This option allows the program to be executed from a DOS command line, if 
  4623. possible. 
  4624.  
  4625. This option causes LINK386 to insert an alternate DOS stub into the program. 
  4626. The DOS stub is executed if a protect mode program is executed from a DOS 
  4627. command line. The default DOS stub simply prints an error message and returns 
  4628. to the DOS command line. The alternate DOS stub will attempt to start the 
  4629. program in protect mode. 
  4630.  
  4631.  
  4632. ΓòÉΓòÉΓòÉ 11.2.5.27. Set Maximum Number of Segments (/SE) ΓòÉΓòÉΓòÉ
  4633.  
  4634. Syntax:  /SE[GMENTS]:number 
  4635.  
  4636. This option sets the number of logical segments a program can have. You can set 
  4637. <number> to any value in the range 1 to 3,072. See Entering Numeric Arguments. 
  4638.  
  4639. For each logical segment, LINK386 must allocate space to keep track of segment 
  4640. information.  By using a relatively low segment limit as a default (128), 
  4641. LINK386 is able to link faster and allocate less storage space. 
  4642.  
  4643. When you set the segment limit higher than 128, LINK386 allocates more space 
  4644. for segment information.  This option allows you to raise the segment limit for 
  4645. programs with a large number of segments. 
  4646.  
  4647. For programs with fewer than 128 segments, you can keep the storage 
  4648. requirements of LINK386 at the lowest level possible by setting the segment 
  4649. <number> field to reflect the actual number of segments in the program.  If the 
  4650. number of segments allocated is too high for the amount of memory LINK386 has 
  4651. available to it, you see the error message segment limit too high. 
  4652.  
  4653. To specify a number of segments that fits in the amount of memory available, 
  4654. set the segment lower and relink. 
  4655.  
  4656.  
  4657. ΓòÉΓòÉΓòÉ 11.2.5.28. Control Stack Size (/ST) ΓòÉΓòÉΓòÉ
  4658.  
  4659. Syntax:  /ST[ACK] :number 
  4660.  
  4661. This option controls the stack size (in bytes) of your program. You can specify 
  4662. any positive value for <number>. See Entering Numeric Arguments. 
  4663.  
  4664. If your program generates a stack-overflow message, you can increase the size 
  4665. of the stack.  In contrast, if your program uses the stack very little, you may 
  4666. save some space by decreasing the stack size. 
  4667.  
  4668.  
  4669. ΓòÉΓòÉΓòÉ 11.2.5.29. Warning of Fix-ups (/W) ΓòÉΓòÉΓòÉ
  4670.  
  4671. Syntax:  /W[ARNFIXUP] 
  4672.  
  4673. This option directs LINK386 to issue a warning for each segment-relative fix-up 
  4674. of location-type offset when the segment is contained within a group, but not 
  4675. at the beginning.  LINK386 includes the displacement of the segment from the 
  4676. group in determining the final value of the fix-up. 
  4677.  
  4678.  
  4679. ΓòÉΓòÉΓòÉ 11.2.6. /INF and /M Output Example ΓòÉΓòÉΓòÉ
  4680.  
  4681. The following is a sample of LINK386 output when Display Process Information 
  4682. (/I) and List Public Symbols (/M) options are specified: 
  4683.  
  4684.   **** PASS ONE ****
  4685.   TEST.OBJ(test.for)
  4686.   **** LIBRARY SEARCH ****
  4687.   LLIBFOR7.LIB(wr)
  4688.   LLIBFOR7.LIB(fmtout)
  4689.   LLIBFOR7.LIB(ldout)
  4690.   Γöé Γöé Γöé
  4691.   **** ASSIGN ADDRESSES ****
  4692.   1 segment "TEST_TEXT" length 122H bytes
  4693.   2 segment "_DATA" length 912H bytes
  4694.   3 segment "CONST" length 12H bytes
  4695.   Γöé Γöé Γöé
  4696.   **** PASS TWO ****
  4697.   TEST.OBJ(test.for)
  4698.   LLIBFOR7.LIB(wr)
  4699.   LLIBFOR7.LIB(fmtout)
  4700.   LLIBFOR7.LIB(ldout)
  4701.   Γöé Γöé Γöé
  4702.   **** WRITING EXECUTABLE ****
  4703.  
  4704.  
  4705. ΓòÉΓòÉΓòÉ 11.2.7. OS/2 Considerations ΓòÉΓòÉΓòÉ
  4706.  
  4707. In most respects, linking a program for OS/2 is similar to linking a program 
  4708. for DOS. The principal difference is that most programs created for DOS run as 
  4709. stand-alone applications, whereas programs for OS/2 generally call one or more 
  4710. dynamic-link libraries. See What Is a Dynamic-Link Library? and Advantages of 
  4711. Dynamic Linking. 
  4712.  
  4713. Import and Export Definitions 
  4714.  
  4715. Each dynamic-link library (.DLL file) defines export definitions that tell OS/2 
  4716. what functions the library has. Functions not exported can only be called from 
  4717. within the library. Each export definition specifies a function name. 
  4718.  
  4719. Conversely, each executable program (.EXE file) defines import definitions that 
  4720. tell OS/2 which dynamic-link functions the program needs and where they can be 
  4721. found. Otherwise, OS/2 would not know which dynamic-link libraries to load when 
  4722. the program is run. Each import definition specifies a function name and the 
  4723. .DLL file where the function resides. 
  4724.  
  4725. Methods of OS/2 Linking 
  4726.  
  4727. There are two methods of OS/2 Linking: 
  4728.  
  4729.      Linking without an Import Library 
  4730.      Linking with an Import Library 
  4731.  
  4732.  Linking with an import library requires more steps but has certain advantages. 
  4733.  
  4734.  
  4735. ΓòÉΓòÉΓòÉ 11.2.7.1. What Is a Dynamic-Link Library? ΓòÉΓòÉΓòÉ
  4736.  
  4737. A dynamic-link library contains executable code for common functions, just as 
  4738. an ordinary library does.  Yet code for functions in dynamic-link libraries is 
  4739. not copied into the executable (.EXE) file.  Instead, the library itself is 
  4740. loaded into memory at run time, along with the .EXE file. 
  4741.  
  4742.  
  4743. ΓòÉΓòÉΓòÉ 11.2.7.2. Advantages of Dynamic Linking ΓòÉΓòÉΓòÉ
  4744.  
  4745. Dynamic-link libraries serve much the same purpose that standard libraries do, 
  4746. but they also have the following advantages: 
  4747.  
  4748.      Applications link more quickly. With dynamic linking, the executable code 
  4749.       for a dynamic-link function is not copied into the .EXE file of the 
  4750.       application. Instead, only an import definition is copied. 
  4751.  
  4752.      Applications require less disk space. With dynamic linking, several 
  4753.       different program applications can access the same dynamic-link function 
  4754.       stored in one place.  Without dynamic linking, the code for the function 
  4755.       would be repeated in every .EXE file. 
  4756.  
  4757.      Libraries and applications are independent. Dynamic-link libraries can be 
  4758.       updated any number of times without relinking the applications that use 
  4759.       them.  If you are a user of third-party libraries, this is particularly 
  4760.       convenient.  You receive the updated .DLL file from the third-party 
  4761.       developers, and you only need to copy the new library onto your disk.  At 
  4762.       run time, your applications automatically call the updated library 
  4763.       functions. 
  4764.  
  4765.      Code and data segments can be shared. Code and data segments loaded from 
  4766.       a dynamic-link library can be shared.  Without dynamic linking, such 
  4767.       sharing is not possible because each file has its own copy of all the 
  4768.       code and data it uses.  By sharing segments with dynamic linking, you can 
  4769.       use memory more efficiently. 
  4770.  
  4771.  
  4772. ΓòÉΓòÉΓòÉ 11.2.7.3. Linking without an Import Library ΓòÉΓòÉΓòÉ
  4773.  
  4774. The figure below illustrates a simple case in which you create an application 
  4775. that uses a single dynamic-link library (.DLL) file. 
  4776.  
  4777.  
  4778. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4779. Γöé .OBJ and Γöé  Γöé.DEF fileΓöé    Γöé.DEF fileΓöé  Γöé .OBJ and Γöé
  4780. Γöé.LIB filesΓöé  Γöé(LIBRARY)Γöé    Γöé(imports)Γöé  Γöé.LIB filesΓöé
  4781. Γöé          Γöé  Γöé(exports)Γöé    Γöé         Γöé  Γöé          Γöé
  4782. ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ    ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ
  4783.      Γöé             Γöé              Γöé             Γöé
  4784.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ              ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4785.             Γöé                            Γöé
  4786.                                         
  4787.        (1) LINK386                  (2) LINK386
  4788.                                         
  4789.             Γöé                            Γöé
  4790.        ΓöîΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÉ                ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4791.        Γöé.DLL fileΓöé                Γöé .EXE file   Γöé
  4792.        Γöé(library)Γöé                Γöé(application)Γöé
  4793.        ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4794.  
  4795. As depicted above, linking occurs in two steps: 
  4796.  
  4797.    1. Object files (and standard libraries if any) are linked with a module 
  4798.       definition (.DEF) file to create a .DLL file. A .DEF file is used that 
  4799.       defines all functions exported by the .DLL file. 
  4800.  
  4801.    2. Object files (and standard libraries, if any) are linked with a .DEF file 
  4802.       to create an application (.EXE) file. A different .DEF file is used for 
  4803.       this step; it defines all dynamic-link functions imported (used) by the 
  4804.       application. 
  4805.  
  4806.  
  4807. ΓòÉΓòÉΓòÉ 11.2.7.4. Linking with an Import Library ΓòÉΓòÉΓòÉ
  4808.  
  4809. The figure below illustrates a simple case in which you create an application 
  4810. that uses a single dynamic-link library (.DLL) file. 
  4811.  
  4812.  
  4813. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4814. Γöé .OBJ and Γöé   Γöé.DEF fileΓöé       Γöé.LIB fileΓöé   Γöé .OBJ and Γöé
  4815. Γöé.LIB filesΓöé   Γöé(LIBRARY)Γöé       Γöé(imports)Γöé   Γöé.LIB filesΓöé
  4816. Γöé          Γöé   Γöé(exports)Γöé       Γöé         Γöé   Γöé          Γöé
  4817. ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ   ΓööΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÿ       ΓööΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÿ   ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4818.      Γöé            Γöé   Γöé             Γöé   Γöé           Γöé
  4819.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ   Γöé                ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4820.             Γöé         ΓööΓöÇ(2) IMPLIBΓöÇΓöÿ         Γöé
  4821.                                              
  4822.       (1) LINK386                       (3) LINK386
  4823.                                              
  4824.             Γöé                                 Γöé
  4825.        ΓöîΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÉ                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4826.        Γöé.DLL fileΓöé                     Γöé .EXE file   Γöé
  4827.        Γöé(library)Γöé                     Γöé(application)Γöé
  4828.        ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4829.  
  4830. As depicted above, linking occurs in three steps: 
  4831.  
  4832.    1. Object files (and dynamic-link libraries) are linked with a module 
  4833.       definition (.DEF) file to create a .DLL file. A .DEF file is used that 
  4834.       defines all functions exported by the .DLL file. 
  4835.  
  4836.    2. The IMPLIB program is used to generate an import library (.LIB) file. 
  4837.       IMPLIB takes as input the same module definition file used in the first 
  4838.       step.  For each export definition in the .DEF file, IMPLIB generates a 
  4839.       corresponding import definition.  (IMPLIB can also use the .DLL file 
  4840.       generated in step 1 if you use the _export keyword in C declarations to 
  4841.       export functions.) 
  4842.  
  4843.    3. The .LIB file generated by IMPLIB is used as input to LINK386, which 
  4844.       creates an application (.EXE) file.  This .LIB file provides LINK386 with 
  4845.       information about imported dynamic-link functions. 
  4846.  
  4847.  
  4848. ΓòÉΓòÉΓòÉ 11.2.8. Module Definition Files Basics ΓòÉΓòÉΓòÉ
  4849.  
  4850. What Is a Module Definition File? 
  4851.  
  4852. A module definition file describes the names, attributes, exports, imports, and 
  4853. other characteristics of an application or library. You must use module 
  4854. definition files to create most applications for OS/2. You must use module 
  4855. definition files to create all OS/2 dynamic-link libraries and device drivers. 
  4856.  
  4857. Module Statements 
  4858.  
  4859. A module definition file contains one or more Module Statements These 
  4860. statements: 
  4861.  
  4862.      Define various attributes of the executable file 
  4863.      Define attributes of code and data segments 
  4864.      Identify functions that are imported or exported 
  4865.  
  4866.  
  4867. ΓòÉΓòÉΓòÉ 11.2.8.1. Module Definition File Example ΓòÉΓòÉΓòÉ
  4868.  
  4869. The following module definition file gives module definitions for a 
  4870. dynamic-link library.  It includes one source level comment and five 
  4871. statements. 
  4872.  
  4873.   ; Sample module-definition file
  4874.  
  4875.   LIBRARY
  4876.  
  4877.   DESCRIPTION
  4878.    'Sample .DEF file for a dynamic-link library'
  4879.  
  4880.   CODE      PRELOAD
  4881.  
  4882.   STACKSIZE 1024
  4883.  
  4884.   EXPORTS
  4885.    Init    @1
  4886.    Begin   @2
  4887.    Finish  @3
  4888.    Load    @4
  4889.    Print   @5
  4890.  
  4891.  
  4892. ΓòÉΓòÉΓòÉ 11.2.8.2. Module Statement Rules ΓòÉΓòÉΓòÉ
  4893.  
  4894.      If you use a NAME, LIBRARY, VIRTUAL DEVICE, or PHYSICAL DEVICE statement, 
  4895.       it must precede all other statements in the module definition file. 
  4896.  
  4897.      You can include source level comments in the module definition file by 
  4898.       beginning a line with a semicolon (;). Such lines are ignored. 
  4899.  
  4900.      All module definition keywords (such as NAME, LIBRARY, and OLD) must be 
  4901.       entered in uppercase letters. 
  4902.  
  4903.  
  4904. ΓòÉΓòÉΓòÉ 11.2.9. Module Statements ΓòÉΓòÉΓòÉ
  4905.  
  4906. LINK386 has the following module definition file statements: 
  4907.  
  4908.  BASE                  Base 
  4909.  CODE                  Gives default attributes for code segments 
  4910.  DATA                  Gives default attributes for data segments 
  4911.  DESCRIPTION           Describes the module 
  4912.  EXETYPE               Identifies operating system 
  4913.  EXPORTS               Defines exported functions 
  4914.  IMPORTS               Defines imported functions 
  4915.  HEAPSIZE              Specifies local heap size 
  4916.  LIBRARY               Names dynamic-link library 
  4917.  NAME                  Names application 
  4918.  OLD                   Preserves import information 
  4919.  PHYSICAL DEVICE       Names physical device driver 
  4920.  PROTMODE              Specifies DOS protected mode 
  4921.  SEGMENTS              Gives attributes for specific segments 
  4922.  STACKSIZE             Specifies local stack size 
  4923.  STUB                  Adds DOS executable file to module 
  4924.  VIRTUAL DEVICE        Names virtual device driver 
  4925.  
  4926.  
  4927. ΓòÉΓòÉΓòÉ 11.2.10. BASE Statement ΓòÉΓòÉΓòÉ
  4928.  
  4929. Syntax: BASE=n 
  4930.  
  4931. Where n is a value rounded up to the nearest multiple of 64K Indicates that 
  4932. each object of the module has a preferred load address starting with object 1 
  4933. at this address, object 2 at the next available multiple of 64K, and so on. 
  4934. Internal relocation records are then applied using this addressing scheme. 
  4935.  
  4936. If the module's objects can be loaded beginning at this preferred address, then 
  4937. no load-time internal relocation records need be applied. 
  4938.  
  4939. If the module's objects cannot be loaded beginning at this preferred address, 
  4940. then the internal relocation records that have been retained in the file data 
  4941. will be applied. 
  4942.  
  4943. EXE files may specify a base address, but it must be 64K.  If it isn't, a 
  4944. warning will be issued and a base address of 64K will be used anyway. 
  4945.  
  4946.  
  4947. ΓòÉΓòÉΓòÉ 11.2.11. CODE Statement ΓòÉΓòÉΓòÉ
  4948.  
  4949. Syntax: CODE [attribute...] 
  4950.  
  4951. This statement defines the default attributes for code segments within the 
  4952. application or library. One or more attributes can appear following the CODE 
  4953. statement: 
  4954.  
  4955.  PRELOAD or LOADONCALL Sets when code segment is loaded 
  4956.  
  4957.            Note:  OS/2 2.x ignores the preload attribute. 
  4958.  
  4959.  EXECUTEONLY or EXECUTEREAD Sets read/execute status 
  4960.  
  4961.  IOPL or NOIOPL Sets I/O privilege 
  4962.  
  4963.  CONFORMING or NONCONFORMING Determines segment conformance 
  4964.  
  4965.  Attribute Rules: 
  4966.  
  4967.      Only one attribute from each pair appears. If you specify neither 
  4968.       attribute from a pair, LINK386 supplies the default, listed second in 
  4969.       each pair above. 
  4970.  
  4971.      Attributes can appear in any order. 
  4972.  
  4973.  Example 
  4974.  
  4975.  The following example sets defaults for module code segments so they have I/O 
  4976.  hardware privilege and are not loaded until accessed. 
  4977.  
  4978.   CODE LOADONCALL IOPL
  4979.  
  4980.  
  4981. ΓòÉΓòÉΓòÉ 11.2.11.1. Load Code Attributes ΓòÉΓòÉΓòÉ
  4982.  
  4983. These attributes determine when a code segment is loaded: 
  4984.  
  4985.  PRELOAD        The segment is loaded automatically when the program starts. 
  4986.  
  4987.                 Note:  OS/2 2.x ignores the preload attribute. 
  4988.  
  4989.  LOADONCALL     The segment is not loaded until accessed (default). 
  4990.  
  4991.  
  4992. ΓòÉΓòÉΓòÉ 11.2.11.2. Read/Execute Code Attributes ΓòÉΓòÉΓòÉ
  4993.  
  4994. These attributes determine whether a code segment can be read as well as 
  4995. executed: 
  4996.  
  4997.  EXECUTEONLY    The segment can only be executed. 
  4998.  
  4999.  EXECUTEREAD    The segment can be both executed and read (default). 
  5000.  
  5001.  
  5002. ΓòÉΓòÉΓòÉ 11.2.11.3. I/O Privilege Code Attributes ΓòÉΓòÉΓòÉ
  5003.  
  5004. I/O privilege code attributes determine whether a segment has I/O privilege 
  5005. (that is, whether it can access the hardware directly): 
  5006.  
  5007.  IOPL 
  5008.       The code segment has I/O privilege. 
  5009.  
  5010.  NOIOPL 
  5011.       The code segment does not have I/O privilege (default). 
  5012.  
  5013.  
  5014. ΓòÉΓòÉΓòÉ 11.2.11.4. Conforming Code Attributes ΓòÉΓòÉΓòÉ
  5015.  
  5016. These attributes specify whether a code segment is a conforming segment: 
  5017.  
  5018.  CONFORMING     The segment is conforming. 
  5019.  
  5020.  NONCONFORMING  The segment is nonconforming (default). 
  5021.  
  5022.  The concept of a conforming segment has to do with privilege level (the range 
  5023.  of instructions that the process can execute) and is relevant only when you 
  5024.  are writing device drivers and system level code. A conforming segment can be 
  5025.  called from either Ring 2 or Ring 3, and the segment executes at the privilege 
  5026.  level of the caller. 
  5027.  
  5028.  
  5029. ΓòÉΓòÉΓòÉ 11.2.12. DATA Statement ΓòÉΓòÉΓòÉ
  5030.  
  5031. Syntax: DATA [attribute...] 
  5032.  
  5033. This statement defines the default attributes for data segments within the 
  5034. application or library. One or more attributes can appear following the DATA 
  5035. statement: 
  5036.  
  5037.  PRELOAD or LOADONCALL 
  5038.       Sets when data segment is loaded 
  5039.  
  5040.       Note:  OS/2 2.x ignores the preload attribute. 
  5041.  
  5042.  READONLY or READWRITE 
  5043.       Sets read/write access 
  5044.  
  5045.  NONE, SINGLE, or MULTIPLE 
  5046.       Sets sharing attributes 
  5047.  
  5048.  IOPL or NOIOPL 
  5049.       Sets I/O privilege 
  5050.  
  5051.  SHARED or NONSHARED 
  5052.       Determines whether segment is shared 
  5053.  
  5054.  Attribute Rules 
  5055.  
  5056.      Only one attribute out of each group appears; if you specify none of the 
  5057.       attributes in a group, the last attribute listed above for that group is 
  5058.       generally the default.  (The defaults for NONE/SINGLE/MULTIPLE and 
  5059.       SHARED/NONSHARED vary depending on whether you are describing a 
  5060.       dynamic-link library or application.) 
  5061.  
  5062.      Attributes can appear in any order. 
  5063.  
  5064.  Example 
  5065.  
  5066.  The following example defines the application data segment so that it is 
  5067.  loaded only when it is accessed and cannot be shared by more than one copy of 
  5068.  the program.  By default, the data segment can be read and written, the 
  5069.  automatic data segment is copied for each instance of the module, and the data 
  5070.  segment has no I/O privilege. 
  5071.  
  5072.   DATA LOADONCALL NONSHARED
  5073.  
  5074.  
  5075. ΓòÉΓòÉΓòÉ 11.2.12.1. Load Data Attributes ΓòÉΓòÉΓòÉ
  5076.  
  5077. These attributes determine when a data segment is loaded: 
  5078.  
  5079.  PRELOAD        The segment is loaded automatically when the program starts. 
  5080.  
  5081.                 Note:  OS/2 2.x ignores the preload attribute. 
  5082.  
  5083.  LOADONCALL     The segment is not loaded until accessed (default). 
  5084.  
  5085.  
  5086. ΓòÉΓòÉΓòÉ 11.2.12.2. Read/Write Data Attributes ΓòÉΓòÉΓòÉ
  5087.  
  5088. These attributes determine the access rights to a data segment: 
  5089.  
  5090.  READONLY       The segment can only be read. 
  5091.  
  5092.  READWRITE      The segment can be both read and written to (default). 
  5093.  
  5094.  
  5095. ΓòÉΓòÉΓòÉ 11.2.12.3. Sharing Data Attributes ΓòÉΓòÉΓòÉ
  5096.  
  5097. These attributes determine how the automatic data segment can be shared: 
  5098.  
  5099.  NONE      No automatic data segment is created. 
  5100.  
  5101.  SINGLE    A single automatic data segment is shared by all instances of the 
  5102.            module.  In this case, the module is said to have solo data.  This 
  5103.            keyword is the default for dynamic-link libraries. 
  5104.  
  5105.  MULTIPLE  The automatic data segment is copied for each instance of the 
  5106.            module.  In this case, the module is said to have instance data. 
  5107.            This keyword is the default for applications. 
  5108.  
  5109.  These attributes refer to initialized global data. The automatic data segment 
  5110.  is the physical segment represented by the group name DGROUP.  This segment 
  5111.  group makes up the physical segment that contains the local stack and heap of 
  5112.  the application. 
  5113.  
  5114.  
  5115. ΓòÉΓòÉΓòÉ 11.2.12.4. Shareable Data Attributes ΓòÉΓòÉΓòÉ
  5116.  
  5117. These attributes determine whether all instances of the program can share a 
  5118. READWRITE data segment: 
  5119.  
  5120.  SHARED         One copy of the data segment is loaded and shared among all 
  5121.                 processes accessing the module (default for dynamic-link 
  5122.                 libraries). 
  5123.  
  5124.  NONSHARED      The segment cannot be shared, and must be loaded separately for 
  5125.                 each process (default for applications). 
  5126.  
  5127.  These attributes refer to non-initialized global data. Under OS/2, this field 
  5128.  is ignored if READONLY is specified, since READONLY data segments are always 
  5129.  shared. 
  5130.  
  5131.  
  5132. ΓòÉΓòÉΓòÉ 11.2.12.5. LINK386 -I/O Privilege Data Attributes ΓòÉΓòÉΓòÉ
  5133.  
  5134. These attributes determine whether data segments have I/O privilege (that is, 
  5135. whether they can access the hardware directly): 
  5136.  
  5137.  IOPL      The data segments have I/O privilege. 
  5138.  
  5139.  NOIOPL    The data segments do not have I/O privilege (default). 
  5140.  
  5141.  
  5142. ΓòÉΓòÉΓòÉ 11.2.13. SEGMENTS Statement ΓòÉΓòÉΓòÉ
  5143.  
  5144. Syntax: 
  5145.  
  5146. SEGMENTS
  5147.          segmentdefinitions
  5148.  
  5149. This statement defines the attributes of one or more segments in the 
  5150. application or library on a segment-by-segment basis. The attributes specified 
  5151. by this statement override defaults set in CODE and DATA statements. 
  5152.  
  5153. The SEGMENTS keyword marks the beginning of the segment definitions. This 
  5154. keyword can be followed by one or more segment definitions, each on a separate 
  5155. line (limited by the number set by the LINK386 /SE option, or 128 if the option 
  5156. is not used). See Set Maximum Number of Segments (/SE). 
  5157.  
  5158. Segment-Definition Syntax 
  5159.  
  5160. ['] segmentname ['] [CLASS 'classname'][attribute...] 
  5161.  
  5162. Each segment definition begins with <segmentname>, optionally enclosed in 
  5163. single quotation marks ('). The quotation marks are required if <segmentname> 
  5164. conflicts with a module definition keyword, such as CODE or DATA. 
  5165.  
  5166. The CLASS keyword specifies the class of the segment.  Single quotation marks 
  5167. (') are required for <classname>. If you do not use the CLASS argument, LINK386 
  5168. assumes that the class is CODE. 
  5169.  
  5170. One or more attributes can follow. The default attribute is listed last. 
  5171.  
  5172.  PRELOAD or LOADONCALL 
  5173.       Determines when segment is loaded 
  5174.  
  5175.       Note:  OS/2 s.x ignores the preload attribute. 
  5176.  
  5177.  READONLY or READWRITE 
  5178.       Sets read/write access 
  5179.  
  5180.  EXECUTEONLY or EXECUTEREAD 
  5181.       Sets read/execute status 
  5182.  
  5183.  IOPL or NOIOPL 
  5184.       Sets I/O privilege 
  5185.  
  5186.  CONFORMING or NONCONFORMING 
  5187.       Determines conformance 
  5188.  
  5189.  MIXED1632 
  5190.       Specify Mixed 16 and 32-Bit Segments 
  5191.  
  5192.  ALIAS 
  5193.       Specify that segment is aliased 
  5194.  
  5195.  SHARED or NONSHARED 
  5196.       Specify that segment is shared 
  5197.  
  5198.  Attribute Rules 
  5199.  
  5200.      Only one attribute from each pair appears. If you specify neither 
  5201.       attribute from a pair, LINK386 supplies the default (listed second in 
  5202.       each pair above). 
  5203.  
  5204.      Attributes can appear in any order. 
  5205.  
  5206.  Example 
  5207.  
  5208.   SEGMENTS
  5209.     cseg1 CLASS 'mycode' IOPL
  5210.     cseg2 EXECUTEONLY PRELOAD CONFORMING
  5211.     dseg CLASS 'data' LOADONCALL READONLY
  5212.  
  5213.  This example specifies segments named cseg1, cseg2, and dseg. The first 
  5214.  segment is assigned class mycode and the second is assigned CODE by default. 
  5215.  Each segment is given different attributes. 
  5216.  
  5217.  
  5218. ΓòÉΓòÉΓòÉ 11.2.13.1. Load Segments Attributes ΓòÉΓòÉΓòÉ
  5219.  
  5220. These attributes determine when a segment is loaded: 
  5221.  
  5222.  PRELOAD        The segment is loaded automatically when the program starts. 
  5223.  
  5224.                 Note:  OS/2 2.x ignores the preload attribute. 
  5225.  
  5226.  LOADONCALL     The segment is not loaded until accessed (default). 
  5227.  
  5228.  
  5229. ΓòÉΓòÉΓòÉ 11.2.13.2. Read/Write Segments Attributes ΓòÉΓòÉΓòÉ
  5230.  
  5231. These attributes determine the access rights to a data segment: 
  5232.  
  5233.  READONLY       The segment can only be read. 
  5234.  
  5235.  READWRITE      The segment can be both read and written to (default). 
  5236.  
  5237.  
  5238. ΓòÉΓòÉΓòÉ 11.2.13.3. Read/Execute Segments Attributes ΓòÉΓòÉΓòÉ
  5239.  
  5240. These attributes determine whether a code segment can be read as well as 
  5241. executed: 
  5242.  
  5243.  EXECUTEONLY    The segment can only be executed. 
  5244.  
  5245.  EXECUTEREAD    The segment can be both executed and read (default). 
  5246.  
  5247.  
  5248. ΓòÉΓòÉΓòÉ 11.2.13.4. I/O Privilege Segments Attributes ΓòÉΓòÉΓòÉ
  5249.  
  5250. These attributes determine whether a segment has I/O privilege (that is, 
  5251. whether it can access the hardware directly): 
  5252.  
  5253.  IOPL      The segment has I/O privilege. 
  5254.  
  5255.  NOIOPL    The segment does not have I/O privilege (default). 
  5256.  
  5257.  
  5258. ΓòÉΓòÉΓòÉ 11.2.13.5. Conforming Segments Attributes ΓòÉΓòÉΓòÉ
  5259.  
  5260. These attributes specify whether a code segment is a conforming segment: 
  5261.  
  5262.  CONFORMING     The segment is conforming. 
  5263.  
  5264.  NONCONFORMING  The segment is nonconforming (default). 
  5265.  
  5266.  The concept of a conforming segment has to do with privilege level (the range 
  5267.  of instructions that the process can execute). Conforming attributes are 
  5268.  relevant only when you are writing device driver and system-level code.  A 
  5269.  conforming segment can be called from either Ring 2 or Ring 3, and the segment 
  5270.  executes at the privilege level of the caller. 
  5271.  
  5272.  
  5273. ΓòÉΓòÉΓòÉ 11.2.13.6. Specify Mixed 16 and 32-Bit Segments ΓòÉΓòÉΓòÉ
  5274.  
  5275. Sometimes it is necessary to mix 16-bit code with 32-bit code. When you must 
  5276. create groups that allow such mixing, LINK386 requires that you declare the 
  5277. segments in that group as MIXED1632. 
  5278.  
  5279.  
  5280. ΓòÉΓòÉΓòÉ 11.2.13.7. Specify that Segment is Aliased ΓòÉΓòÉΓòÉ
  5281.  
  5282. Segments flagged with the ALIAS keyword can be addressed using the 16-bit 
  5283. segmented method (_far16), or the 32-bit linear method.  The loader must 
  5284. prepare an additional segment selector for each segment designated with the 
  5285. ALIAS keyword.  This new segment selector allows for 16-bit addressing. 
  5286.  
  5287. Example: 
  5288.  
  5289. SEGMENTS _CODE  ALIAS
  5290.  
  5291. The statement above specifies that the segment _CODE can be called using 16-bit 
  5292. far calls and 32-bit near calls. 
  5293.  
  5294.  
  5295. ΓòÉΓòÉΓòÉ 11.2.13.8. Specify that Segment is Shared ΓòÉΓòÉΓòÉ
  5296.  
  5297. These attributes determine if the segment can be shared by other processes. 
  5298.  
  5299.  SHARED         One copy of the data segment is loaded and shared among all 
  5300.                 processes accessing the module (default for dynamic-link 
  5301.                 libraries). 
  5302.  
  5303.  NONSHARED      The segment cannot be shared, and must be loaded separately for 
  5304.                 each process (default for applications). 
  5305.  
  5306.  
  5307. ΓòÉΓòÉΓòÉ 11.2.14. DESCRIPTION Statement ΓòÉΓòÉΓòÉ
  5308.  
  5309. Syntax: DESCRIPTION 'text' 
  5310.  
  5311. This statement inserts the specified text into the application or library. The 
  5312. DESCRIPTION statement is useful for embedding source control or copyright 
  5313. information into an application or library. 
  5314.  
  5315. The <text> field is a one line string enclosed in single quotation marks. 
  5316.  
  5317. Example 
  5318.  
  5319. The following example inserts the text Template Program into the application or 
  5320. library being defined. 
  5321.  
  5322. DESCRIPTION 'Template Program'
  5323.  
  5324.  
  5325. ΓòÉΓòÉΓòÉ 11.2.15. EXETYPE Statement ΓòÉΓòÉΓòÉ
  5326.  
  5327. Syntax: EXETYPE [OS2 | WINDOWS | UNKNOWN] 
  5328.  
  5329. This statement specifies under which operating system the application (or 
  5330. dynamic-link library) is to run. This statement is optional and provides an 
  5331. additional degree of protection against the program being run in an incorrect 
  5332. operating system. 
  5333.  
  5334. The EXETYPE keyword can be followed by a descriptor of the operating system: 
  5335.  
  5336.  OS2             OS/2 applications and dynamic-link libraries (default) 
  5337.  WINDOWS         Windows** applications 
  5338.  UNKNOWN         Other applications 
  5339.  
  5340.  The effect of EXETYPE is to set bits in the header that identify 
  5341.  operating-system type.  Operating-system loaders can check these bits. 
  5342.  
  5343.  
  5344. ΓòÉΓòÉΓòÉ 11.2.16. EXPORTS Statement ΓòÉΓòÉΓòÉ
  5345.  
  5346. Syntax: 
  5347.  
  5348. EXPORTS
  5349.       exportdefinitions
  5350.  
  5351. This statement defines the names and attributes of the functions exported to 
  5352. other modules and of the functions that run with I/O privilege. 
  5353.  
  5354. Note:  The term export refers to the process of making a function available to 
  5355. other run-time modules.  By default, functions are hidden from other modules at 
  5356. run time. 
  5357.  
  5358. Normally, the EXPORTS statement is meaningful only for functions within 
  5359. dynamic-link libraries and for functions that execute with I/O privilege. 
  5360.  
  5361. The EXPORTS keyword marks the beginning of the export definitions. Each 
  5362. definition is entered on a separate line.  You need to give an export 
  5363. definition for each dynamic-link routine you want to make available to other 
  5364. modules. 
  5365.  
  5366. Export-Definition Syntax 
  5367.  
  5368. entryname [=internalname] [@ord[RESIDENTNAME]] [pwords] 
  5369.  
  5370.  <entryname> 
  5371.       The function name as it is known to other modules. 
  5372.  
  5373.  <internalname> 
  5374.       The actual name of the export function as it appears within the module 
  5375.       itself; by default, this name is the same as <entryname>. 
  5376.  
  5377.  <ord> 
  5378.       The function's ordinal position within the module definition table.  If 
  5379.       this field is used, the function's entry point can be invoked by name or 
  5380.       by ordinal.  Use of ordinal positions is faster and may save space. 
  5381.  
  5382.  RESIDENTNAME 
  5383.       Indicates that the function's name be kept resident in memory at all 
  5384.       times. This keyword is applicable only if <ord> is used. If <ord> is not 
  5385.       used, OS/2 automatically keeps the names of all exported functions 
  5386.       resident in memory by default. 
  5387.  
  5388.  <pwords> 
  5389.       The total size of the function's parameters, as measured in words (bytes 
  5390.       divided by two). This field is required only if the function executes 
  5391.       with I/O privilege. When a function with I/O privilege is called, OS/2 
  5392.       consults <pwords> to determine how many words to copy from the caller's 
  5393.       stack to the I/O-privileged function's stack. 
  5394.  
  5395.  Example 
  5396.  
  5397.   EXPORTS
  5398.     SampleRead = read2bin @8
  5399.     StringIn = str1       @4 RESIDENTNAME
  5400.     CharTest  6
  5401.  
  5402.  This example defines three export functions: 
  5403.  
  5404.      SampleRead 
  5405.      StringIn 
  5406.      CharTest 
  5407.  
  5408.  The first two functions can be accessed either by their exported names or by 
  5409.  an ordinal number. Note that in the module's own source code, these functions 
  5410.  are actually defined as read2bin and str1, respectively. The last function 
  5411.  runs with I/O privilege and therefore is given with the total size of the 
  5412.  parameters - six words. 
  5413.  
  5414.  
  5415. ΓòÉΓòÉΓòÉ 11.2.17. IMPORTS Statement ΓòÉΓòÉΓòÉ
  5416.  
  5417. Syntax: 
  5418.  
  5419. IMPORTS
  5420.   importdefinitions
  5421.  
  5422. This statement defines the names of the functions imported for the application 
  5423. or library. 
  5424.  
  5425. Note:  The term import refers to the process of declaring that a symbol is 
  5426. defined in another run-time module (a dynamic-link library). 
  5427.  
  5428. Typically, LINK386 uses an import library to resolve external references to 
  5429. dynamic-link symbols. However, the IMPORTS statement provides an alternative 
  5430. for resolving these references within a module. 
  5431.  
  5432. The IMPORTS keyword marks the beginning of the import definitions. This keyword 
  5433. is followed by one or more import definitions, each on a separate line. Each 
  5434. import definition corresponds to a particular function. 
  5435.  
  5436. Import-Definition Syntax 
  5437.  
  5438. [internalname=]modulename.entry
  5439.  
  5440.  <internalname> 
  5441.       The name that the importing module uses to call the function.  Thus, 
  5442.       <internalname> appears in the source code of the importing module, 
  5443.       although the function can have a different name in the module where it is 
  5444.       defined.  By default, internalname is the same as <entry>. 
  5445.  
  5446.  <modulename> 
  5447.       The name of the application or library that contains the function. 
  5448.  
  5449.  <entry> 
  5450.       The function to be imported; can be a name or an ordinal value.  (Ordinal 
  5451.       values are set in an EXPORTS statement.) If an ordinal value is given, 
  5452.       then <internalname> is required. 
  5453.  
  5454.  Note:  A given function has a name for each of three different contexts.  The 
  5455.  function has a name used by the exporting module (where it is defined), a name 
  5456.  used as an entry point between modules, and a name as it is used by the 
  5457.  importing module (where it is called).  If neither module uses the optional 
  5458.  <internalname> field, the function has the same name in all three contexts. 
  5459.  If either of the modules uses the <internalname> field, the function may have 
  5460.  more than one distinct name. 
  5461.  
  5462.  Syntax: 
  5463.  
  5464.   IMPORTS
  5465.     Sample.SampleRead
  5466.     SampleA.SampleWrite
  5467.     ReadChar = Read.1
  5468.  
  5469.  This example defines three functions to be imported: 
  5470.  
  5471.      SampleRead 
  5472.      SampleWrite 
  5473.      A function that has been assigned an ordinal value of 1 
  5474.  
  5475.  The functions are found in the modules Sample, SampleA, and Read, 
  5476.  respectively. The function from the Read module is referred to as ReadChar in 
  5477.  the importing module.  The original name of the function, as it is defined in 
  5478.  the Read module, may or may not be known. 
  5479.  
  5480.  
  5481. ΓòÉΓòÉΓòÉ 11.2.18. HEAPSIZE Statement ΓòÉΓòÉΓòÉ
  5482.  
  5483. Syntax: HEAPSIZE bytes | MAXVAL 
  5484.  
  5485. This statement defines the size of the application's local heap in bytes. This 
  5486. value affects the size of the automatic data segment. 
  5487.  
  5488. The field <bytes> contains any positive integer.  You can enter <bytes> in 
  5489. decimal, octal, or hexadecimal radix. See Entering Numeric Arguments. 
  5490.  
  5491. Instead of entering a number for <bytes>, you can enter the keyword MAXVAL. 
  5492. This sets the heap size such that the default data segment DGROUP is exactly 
  5493. 64K.  MAXVAL is useful in bound applications in which you want to force a 64K 
  5494. requirement for DGROUP. 
  5495.  
  5496. Example 
  5497.  
  5498. HEAPSIZE 4000
  5499.  
  5500. This example sets the local heap to 4,000 bytes. 
  5501.  
  5502.  
  5503. ΓòÉΓòÉΓòÉ 11.2.19. LIBRARY Statement ΓòÉΓòÉΓòÉ
  5504.  
  5505. Syntax: LIBRARY [libraryname][initialization]  [termination] 
  5506.  
  5507. This statement identifies the executable file as a dynamic-link library and 
  5508. optionally defines the name and library module initialization required. 
  5509.  
  5510. If <libraryname> is given, it becomes the name of the library as it is known by 
  5511. OS/2. This name can be any valid file name. If <libraryname> is not given, the 
  5512. name of the executable file - with the extension removed - becomes the name of 
  5513. the library. 
  5514.  
  5515. If <initialization> is given, it defines the library initialization required 
  5516. and can be one of the values below. If omitted, <initialization> defaults to 
  5517. INITGLOBAL. 
  5518.  
  5519.  INITGLOBAL 
  5520.       The library initialization routine is called only when the library module 
  5521.       is initially loaded into memory. 
  5522.  
  5523.       Using this keyword without a termination flag implies TERMGLOBAL for DLLs 
  5524.       with 32-bit entry points. 
  5525.  
  5526.  INITINSTANCE 
  5527.       The library initialization routine is called each time a new process 
  5528.       gains access to the library. 
  5529.  
  5530.       Using this keyword without a termination flag implies TERMINSTANCE for 
  5531.       DLLs with 32-bit entry points. 
  5532.  
  5533.  If <termination> is given, it defines the library termination required and can 
  5534.  be one of the values below. If omitted, <initialization> defaults to 
  5535.  TERMGLOBAL. The termination flag can only apply to DLLs with 32-bit entry 
  5536.  points. 
  5537.  
  5538.  TERMGLOBAL 
  5539.       The library termination routine is called only when the library module is 
  5540.       unloaded from memory. 
  5541.  
  5542.       Using this keyword without an initialization flag implies INITGLOBAL. 
  5543.  
  5544.  TERMINSTANCE 
  5545.       The library termination routine is called each time a process 
  5546.       relinquishes access to the library. 
  5547.  
  5548.       Using this keyword without an initialization flag implies INITINSTANCE. 
  5549.  
  5550.  If the LIBRARY statement is included in a module definition file, the NAME 
  5551.  statement cannot appear. If no LIBRARY statement appears, the module 
  5552.  definition file describes an application. 
  5553.  
  5554.  The following example assigns the name calendar to the dynamic-link library 
  5555.  and specifies that library initialization be performed each time a new process 
  5556.  gains access. 
  5557.  
  5558.     LIBRARY calendar INITINSTANCE
  5559.  
  5560.  
  5561. ΓòÉΓòÉΓòÉ 11.2.20. NAME Statement ΓòÉΓòÉΓòÉ
  5562.  
  5563. Syntax: NAME [appname][apptype] 
  5564.  
  5565. This statement identifies the executable file as an application and optionally 
  5566. defines the name and type. 
  5567.  
  5568. If <appname> is given, it becomes the name of the application as it is known by 
  5569. OS/2. This name can be any valid file name. If <appname> is not given, the name 
  5570. of the executable file - with the extension removed - becomes the name of the 
  5571. application. 
  5572.  
  5573. If <apptype> is given, it defines the type of application: 
  5574.  
  5575.  WINDOWAPI 
  5576.       Presentation Manager* application. The application uses the API provided 
  5577.       by the Presentation Manager and must be executed in the Presentation 
  5578.       Manager environment. 
  5579.  
  5580.  WINDOWCOMPAT 
  5581.       Application compatible with Presentation Manager. The application can run 
  5582.       inside the Presentation Manager, or it can run in a separate screen 
  5583.       group. An application can be of this type if it uses the proper subset of 
  5584.       OS/2 video, keyboard, and mouse functions supported in the Presentation 
  5585.       Manager applications. 
  5586.  
  5587.  NOTWINDOWCOMPAT 
  5588.       Application that is not compatible with the Presentation Manager and must 
  5589.       operate in a separate screen group from the Presentation Manager. 
  5590.  
  5591.  If the NAME statement appears, the LIBRARY, VIRTUAL DEVICE and PHYSICAL DEVICE 
  5592.  statements cannot appear. If none of these statements appear, the module 
  5593.  definition file is assumed to describe an application. 
  5594.  
  5595.  Example 
  5596.  
  5597.  The following example assigns the name calendar to the application being 
  5598.  defined. 
  5599.  
  5600.   NAME calendar WINDOWCOMPAT
  5601.  
  5602.  This application is Presentation Manager-compatible. 
  5603.  
  5604.  
  5605. ΓòÉΓòÉΓòÉ 11.2.21. OLD Statement ΓòÉΓòÉΓòÉ
  5606.  
  5607. Syntax: OLD 'filename' 
  5608.  
  5609. This statement directs LINK386 to search another dynamic-link module for export 
  5610. ordinals.  Exported names in the current module that match exported names in 
  5611. the OLD module are assigned ordinal values from that module unless one of the 
  5612. following conditions is in effect: 
  5613.  
  5614.      The name in the OLD module has no ordinal value assigned. 
  5615.  
  5616.      An ordinal value is explicitly assigned in the current module. 
  5617.  
  5618.  This statement is useful for preserving export ordinal values throughout 
  5619.  successive versions of a dynamic-link module.  The OLD statement has no effect 
  5620.  on application modules. 
  5621.  
  5622.  
  5623. ΓòÉΓòÉΓòÉ 11.2.22. PHYSICAL DEVICE Statement ΓòÉΓòÉΓòÉ
  5624.  
  5625. Syntax: PHYSICAL DEVICE [drivername] 
  5626.  
  5627. This statement identifies the executable file as a physical device driver. 
  5628.  
  5629. If <drivername> is given, it becomes the name of the driver as it is known by 
  5630. OS/2. This name can be any valid file name. If <drivername> is not given, the 
  5631. name of the executable file - with the extension removed - becomes the name of 
  5632. the driver. 
  5633.  
  5634.  
  5635. ΓòÉΓòÉΓòÉ 11.2.23. PROTMODE Statement ΓòÉΓòÉΓòÉ
  5636.  
  5637. Syntax: PROTMODE 
  5638.  
  5639. This statement specifies that the module runs only in protected mode and not in 
  5640. Windows or dual mode. This statement is always optional and permits a protected 
  5641. mode only application to omit some information from the executable file header. 
  5642.  
  5643. If this statement is not included in the module definition file, LINK386 
  5644. assumes the application can be run in either real or protected mode. 
  5645.  
  5646.  
  5647. ΓòÉΓòÉΓòÉ 11.2.24. STACKSIZE Statement ΓòÉΓòÉΓòÉ
  5648.  
  5649. Syntax: STACKSIZE number 
  5650.  
  5651. This statement performs the same function as the LINK386 /ST option; if both 
  5652. are used, the STACKSIZE statement overrides the /ST option.  See Control Stack 
  5653. Size (/ST). 
  5654.  
  5655. The field <number> contains a positive integer.  You can specify <number> in 
  5656. decimal, octal, or hexadecimal radix. See Entering Numeric Arguments. 
  5657.  
  5658. Example 
  5659.  
  5660. STACKSIZE 4096
  5661.  
  5662. This example allocates 4,096 bytes of local-stack space. 
  5663.  
  5664.  
  5665. ΓòÉΓòÉΓòÉ 11.2.25. STUB Statement ΓòÉΓòÉΓòÉ
  5666.  
  5667. Syntax: STUB 'filename' 
  5668.  
  5669. This statement adds a DOS executable file to the beginning of the application 
  5670. or library being created. The stub is invoked whenever the module is executed 
  5671. under DOS. Typically, the stub displays a message and terminates execution. By 
  5672. default, LINK386 adds its own standard stub for this purpose. 
  5673.  
  5674. The field <filename> specifies the DOS executable file to be added. LINK386 
  5675. looks for <filename> in the current directory and in the directories specified 
  5676. by the PATH environment variable. 
  5677.  
  5678. Example 
  5679.  
  5680. STUB 'STOPIT.EXE'
  5681.  
  5682. This example appends the DOS executable file STOPIT.EXE to the beginning of the 
  5683. module. STOPIT.EXE is executed when the module is run under DOS. 
  5684.  
  5685.  
  5686. ΓòÉΓòÉΓòÉ 11.2.26. VIRTUAL DEVICE Statement ΓòÉΓòÉΓòÉ
  5687.  
  5688. Syntax: VIRTUAL DEVICE [drivername] 
  5689.  
  5690. This statement identifies the executable file as a virtual device driver. 
  5691.  
  5692. If <drivername> is given, it becomes the name of the driver as it is known by 
  5693. OS/2. This name can be any valid file name. If <drivername> is not given, the 
  5694. name of the executable file - with the extension removed - becomes the name of 
  5695. the driver. 
  5696.  
  5697.  
  5698. ΓòÉΓòÉΓòÉ 12. MAP File to SYM File Creator (MAPSYM) ΓòÉΓòÉΓòÉ
  5699.  
  5700. The MAPSYM program creates .SYM files from .MAP files.  .SYM files are used by 
  5701. the kernel debugger for symbolic debugging. 
  5702.  
  5703. Note:  You must run MAPSYM from the directory in which the file to be converted 
  5704. is located. 
  5705.  
  5706. To create a .SYM file, follow these steps: 
  5707.  
  5708.    1. Make sure you are in the correct directory. 
  5709.  
  5710.    2. At the prompt type the following: 
  5711.  
  5712.             mapsym filename
  5713.  
  5714.       Note that the .MAP extension is not required. 
  5715.  
  5716.  
  5717. ΓòÉΓòÉΓòÉ 12.1. Help ΓòÉΓòÉΓòÉ
  5718.  
  5719. To display MAPSYM help, type MAPSYM at the prompt, with no arguments. The 
  5720. appropriate copyright statement appears, along with the following: 
  5721.  
  5722. usage: mapsym [-aln] mapfile
  5723.  
  5724.  
  5725. ΓòÉΓòÉΓòÉ 12.2. Options ΓòÉΓòÉΓòÉ
  5726.  
  5727. The following options may be used with MAPSYM: 
  5728.  
  5729.  /A   Omits Alphabetical sorting of symbols. 
  5730.  
  5731.  /N   Includes source code line Numbers in *.SYM file. 
  5732.  
  5733.  /L   Produces verbose Listing. 
  5734.  
  5735.  
  5736. ΓòÉΓòÉΓòÉ 13. View and Set Program Type For Executable File (MARKEXE) ΓòÉΓòÉΓòÉ
  5737.  
  5738. The MARKEXE program enables you to view and set the program type for an 
  5739. executable file. The program type identifies the OS/2 sessions in which a 
  5740. program can run. 
  5741.  
  5742. For applications running on OS/2 for SMP Version 3, MARKEXE enables you to set 
  5743. the MPUNSAFE bit, which forces the application to always run in uniprocessor 
  5744. mode. See Requirements for Multi-Processing for information on when to set the 
  5745. MPUNSAFE bit. 
  5746.  
  5747. Use MARKEXE with the OS/2 Linear Executable Linker (LINK386) or the OS/2 
  5748. Segmented Executable Linker (LINK) to change or set the program type of 
  5749. programs you have created and to set or unset the MPUNSAFE bit. 
  5750.  
  5751. You can set DLL initialization and termination and also enable long file name 
  5752. support. When using LINK386, you can set DLL initialization and termination; 
  5753. long file name support is already set. When using LINK, you can set DLL 
  5754. initialization and long file name support. 
  5755.  
  5756.  
  5757. ΓòÉΓòÉΓòÉ 13.1. Command-Line Syntax ΓòÉΓòÉΓòÉ
  5758.  
  5759. MARKEXE uses the following syntax: 
  5760.  
  5761. MARKEXE [/?] [FORCE] [NO] [option] filename...
  5762.  
  5763. Filename is a file name or a list of file names. Global file-name characters 
  5764. (*.EXE) also can be used. For descriptions of the above terms, see Syntax 
  5765. Definitions. If no option is given, DISPLAY is assumed. 
  5766.  
  5767. Typing MARKEXE /? at the command line displays the appropriate copyright 
  5768. statement along with a list of options. 
  5769.  
  5770.   DISPLAY         - display status of flags
  5771.   DLLINIT         - per-process initialization
  5772.   DLLTERM         - per-process termination
  5773.   WINDOWAPI       - window api (PM application)
  5774.   WINDOWCOMPAT    - window compatible application
  5775.   NOTWINDOWCOMPAT - not window compatible application
  5776.   UNSPECIFIED     - unspecified application type
  5777.   LFNS            - long file name support
  5778.   MPUNSAFE        - multi-processor unsafe application
  5779.  
  5780.  
  5781. ΓòÉΓòÉΓòÉ 13.1.1. Syntax Definitions ΓòÉΓòÉΓòÉ
  5782.  
  5783. MARKEXE has the following keywords, options, and program types. You can also 
  5784. specify any number of files to be viewed or marked. 
  5785.  
  5786. KEYWORDS 
  5787.  
  5788.  FORCE               Marks the executable file with OS/2 as the target 
  5789.                      operating system even though the file was marked for 
  5790.                      another operating system. Using FORCE might produce 
  5791.                      internally inconsistent executable files. 
  5792.  
  5793.  NO                  Sets the command to the opposite condition. This keyword 
  5794.                      does not apply to the DISPLAY option or any of the Program 
  5795.                      Type options. 
  5796.  
  5797.  OPTIONS 
  5798.  
  5799.  DISPLAY             Displays the application type in a message; does not make 
  5800.                      any changes. (This is the default option.) 
  5801.  
  5802.  DLLINIT             Sets per process initialization for the dynamic link 
  5803.                      library. 
  5804.  
  5805.  DLLTERM             Sets per process termination for the dynamic link library. 
  5806.                      (Use with LINK386 only.) 
  5807.  
  5808.  LFNS                Enables support of long file names.  (Use with LINK only.) 
  5809.  
  5810.  MPUNSAFE            Marks the application as unsafe for running in a 
  5811.                      multi-processor environment. 
  5812.  
  5813.  Note:  Only one option may be entered on the command line. 
  5814.  
  5815.  PROGRAM TYPES 
  5816.  
  5817.  MARKEXE does not modify the file if the executable file's program type is the 
  5818.  same as the requested type. It displays a message instead. 
  5819.  
  5820.  WINDOWAPI           The application is a Presentation Manager application and 
  5821.                      can run in the Presentation Manager session only. 
  5822.  
  5823.  WINDOWCOMPAT        The application can run in a Presentation Manager window 
  5824.                      or in an full-screen session. 
  5825.  
  5826.  NOTWINDOWCOMPAT     The application must run in an OS/2 full-screen session. 
  5827.  
  5828.  UNSPECIFIED         The application type is not known. By default, the OS/2 
  5829.                      operating system will force the program to run in a 
  5830.                      full-screen session. 
  5831.  
  5832.  Note:  Specifying an incorrect program type might cause undesirable results 
  5833.         when you try to run that program. For example, do not change a 
  5834.         WINDOWCOMPAT program to WINDOWAPI. 
  5835.  
  5836.  Only one program type may be entered on the command line. 
  5837.  
  5838.  
  5839. ΓòÉΓòÉΓòÉ 13.1.2. Viewing Program Type ΓòÉΓòÉΓòÉ
  5840.  
  5841. To display the program type of an executable file without changing the file, 
  5842. specify only a file name, omitting an option. 
  5843.  
  5844.    MARKEXE filename.exe
  5845.  
  5846. Example 
  5847.  
  5848. To view the program type of MYPROG.EXE, type the following: 
  5849.  
  5850.    MARKEXE myprog.exe
  5851.  
  5852. MARKEXE displays the type in a message that looks like this: 
  5853.  
  5854.    myprog.exe: OS/2 1.x, WINDOWCOMPAT, LFNS
  5855.  
  5856.  
  5857. ΓòÉΓòÉΓòÉ 13.1.3. Setting Program Type ΓòÉΓòÉΓòÉ
  5858.  
  5859. To set the program type of an executable file, specify one of the program 
  5860. types. More than one executable file can be set to the same program type on a 
  5861. single command line. 
  5862.  
  5863.    MARKEXE type filename.exe another.exe
  5864.  
  5865. Examples 
  5866.  
  5867. To set WINDOWCOMPAT as the program type of MYPROG.EXE, type: 
  5868.  
  5869.    MARKEXE WINDOWCOMPAT myprog.exe
  5870.  
  5871. To set WINDOWAPI as the program type of several executable files, type: 
  5872.  
  5873.    MARKEXE WINDOWAPI marion.exe alex.exe
  5874.  
  5875.  
  5876. ΓòÉΓòÉΓòÉ 13.1.4. Requirements for Multi-Processing ΓòÉΓòÉΓòÉ
  5877.  
  5878. The following compatibility's requirements should be considered before running 
  5879. an application in multi-processor mode: 
  5880.  
  5881.      An application or associated subsystem must not use the 'INC' instruction 
  5882.       as a semaphore without prepending a 'LOCK' prefix. On a UniProcessor (UP) 
  5883.       system this instruction can be used as a high-performance semaphore 
  5884.       without calling any other operating system service if the semaphore is 
  5885.       free and when the semaphore is clear and there are no waiters for the 
  5886.       semaphore. Because the INC instruction cannot be interrupted once 
  5887.       started, and because the results would be stored in the flags register 
  5888.       which are per thread, then it could be used safely as a semaphore. 
  5889.  
  5890.       In an OS/2 for SMP environment, this technique will not work because it 
  5891.       is possible that two or more threads could be executing the same INC 
  5892.       instruction, receiving the same results in each processor's or thread's 
  5893.       flag register and thinking that they have the semaphore. 
  5894.  
  5895.      A 486 or greater instruction such as CMPXCHG has the same problem as 
  5896.       above if a 'LOCK' prefix is not prepended before the instruction. 
  5897.  
  5898.      An application or associated subsystem which relies on priorities to 
  5899.       guarantee execution of it's threads within a process will not work in 
  5900.       OS/2 for SMP. For example, an application may have a time-critical and an 
  5901.       idle thread, and may assume that while the time-critical thread is 
  5902.       executing the idle thread will not get any execution time unless the 
  5903.       time-critical thread explicitly yields the CPU. In an OS/2 for SMP 
  5904.       environment it is possible that both the time-critical and the idle 
  5905.       threads are executing simultaneously on different processors. 
  5906.  
  5907.  The above compatibility requirements apply only to multi-threaded 
  5908.  applications, and therefore do no apply to DOS and WINOS2 applications. 
  5909.  However, you are strongly encouraged to write 32-bit multi-threaded 
  5910.  applications for better performance and portability on OS/2 for SMP. 
  5911.  
  5912.  Given the possibility that some set of applications may use one of these 
  5913.  techniques, OS/2 for SMP Version 3 provides a mechanism whereby these 
  5914.  multi-threaded applications can execute in UP mode. Only one thread of that 
  5915.  process would be allowed to execute at any given time. That thread could 
  5916.  execute on any one of the processors. MARKEXE can be used to mark the EXE file 
  5917.  as uniprocessor only. OS/2 forces the process to run in the uniprocessor mode 
  5918.  when the loader detects that the EXE file has been marked as uniprocessor 
  5919.  only. 
  5920.  
  5921.  Note:  OS/2 Warp Version 3 (non-SMP) still ships the EXECMODE utility. 
  5922.  
  5923.  
  5924. ΓòÉΓòÉΓòÉ 14. Preprocess Message Source File Utility (MKCATDEF) ΓòÉΓòÉΓòÉ
  5925.  
  5926. MKCATDEF preprocesses a message source file for input to GENCAT (see Generate 
  5927. Message Catalog Utility (GENCAT)). 
  5928.  
  5929. MKCATDEF reads a message source file containing symbolic identifiers and 
  5930. produces the following output: 
  5931.  
  5932.      The SYMBOLNAME.H file, containing statements that equate symbolic 
  5933.       identifiers with the set numbers and message ID numbers assigned by 
  5934.       MKCATDEF. You must include the SYMBOLNAME.H file in your application 
  5935.       program to associate the symbolic names to the set and message numbers 
  5936.       assigned by MKCATDEF. 
  5937.  
  5938.      A new message source file containing message numbers instead of symbolic 
  5939.       message identifiers. This output is suitable for input to GENCAT. 
  5940.  
  5941.  MKCATDEF sends the new message source file, with numbers instead of symbolic 
  5942.  identifiers, to standard output. You can use MKCATDEF output as input to 
  5943.  GENCAT in the following ways: 
  5944.  
  5945.      Use MKCATDEF with a > (redirection symbol) to write the new message 
  5946.       source to a file. Use this file as input to GENCAT. 
  5947.  
  5948.      Pipe the MKCATDEF output file directly to GENCAT. 
  5949.  
  5950.  After running MKCATDEF, you can use symbolic names in an application to refer 
  5951.  to messages. 
  5952.  
  5953.  
  5954. ΓòÉΓòÉΓòÉ 14.1. Syntax ΓòÉΓòÉΓòÉ
  5955.  
  5956. mkcatdef SymbolName SourceFile ...  [  -h ]
  5957.  
  5958.  
  5959. ΓòÉΓòÉΓòÉ 14.1.1. Flags ΓòÉΓòÉΓòÉ
  5960.  
  5961.  -h    Suppresses the generation of a SYMBOLNAME.H file. This flag must be the 
  5962.        last argument to MKCATDEF. 
  5963.  
  5964.  
  5965. ΓòÉΓòÉΓòÉ 14.1.2. Examples ΓòÉΓòÉΓòÉ
  5966.  
  5967. To process the SYMB.MSG message source file and redirect the output to the 
  5968. SYMB.SRC file, enter: 
  5969.  
  5970. mkcatdef symb symb.msg > symb.src
  5971.  
  5972. The generated SYMB.H file looks similar to the following: 
  5973.  
  5974. #ifdef        _H_SYMB_MSG
  5975. #define       _H_SYMB_MSG
  5976. #include <limits.h>
  5977. #include <nl_types.h>
  5978. #define       MF_SYMB "symb.cat"
  5979. /* The following was generated from symb.src. */
  5980. /* definitions for set MSFAC */
  5981. #define       SYM_FORM        1
  5982. #define       SYM_LEN 2
  5983. #define       MSG_H   6
  5984. #endif
  5985.  
  5986. MKCATDEF also creates the SYMB.SRC message catalog source file for the gencat 
  5987. command with numbers assigned to the symbolic identifiers: 
  5988.  
  5989. $quote " Use double quotation marks to delimit message text
  5990. $delset 1
  5991. $set 1
  5992. 1     "Symbolic identifiers can only contain alphanumeric \
  5993. characters or the _ (underscore character) but must begin with \
  5994. an alpha or _ character\n"
  5995. 2     "Symbolic identifiers cannot be more than 64 \
  5996. characters long\n"
  5997. 5     "You can mix symbolic identifiers and numbers\n"
  5998. $quote
  5999. 6     remember to include the "msg_h" file in your program
  6000.  
  6001. The assigned message numbers are noncontiguous because the source file 
  6002. contained a specific number. MKCATDEF always assigns the previous number plus 1 
  6003. to a symbolic identifier. 
  6004.  
  6005. Note:  MKCATDEF inserts a $delset command before a $set command in the output 
  6006. message source file. This means you cannot add, delete, or replace single 
  6007. messages in an existing catalog when piping to the gencat command. You must 
  6008. enter all messages in the set. 
  6009.  
  6010.  
  6011. ΓòÉΓòÉΓòÉ 14.2. Related Information ΓòÉΓòÉΓòÉ
  6012.  
  6013.      GENCAT (see Generate Message Catalog Utility (GENCAT)) 
  6014.  
  6015.      catclose, catgets and catopen (see C Library Reference) 
  6016.  
  6017.  
  6018. ΓòÉΓòÉΓòÉ 15. Make Message File (MKMSGF) ΓòÉΓòÉΓòÉ
  6019.  
  6020. The MKMSGF program reads the input message file that you specify and creates an 
  6021. output message file that DosGetMessage uses to display messages. 
  6022.  
  6023. There are two ways that the output message file can be used: 
  6024.  
  6025.      Selected messages can be bound to the message segment of an executable 
  6026.       file using the MSGBIND program. 
  6027.  
  6028.      Messages can be accessed directly from the output message file. 
  6029.  
  6030.  See How Message Retrieval Works for additional information. 
  6031.  
  6032.  
  6033. ΓòÉΓòÉΓòÉ 15.1. Syntax ΓòÉΓòÉΓòÉ
  6034.  
  6035. MKMSGF infile outfile [options] 
  6036.  
  6037.    OR 
  6038.  
  6039. MKMSGF @controlfile 
  6040.  
  6041. The infile field specifies the input file that contains message definitions. 
  6042. The input-file name can be any valid OS/2 file name, optionally preceded by a 
  6043. drive letter and a path. 
  6044.  
  6045. The outfile field specifies the output file created by MKMSGF. The output-file 
  6046. name can be any valid OS/2 file name, optionally preceded by a drive letter and 
  6047. a path. 
  6048.  
  6049. To differentiate between the two files, the following convention is 
  6050. recommended, using the same file name. 
  6051.  
  6052.      The infile file should have a .TXT extension. 
  6053.      The outfile file should have a .MSG extension. 
  6054.  
  6055.  Note:  The output file cannot have the same file name and extension as the 
  6056.         input file. 
  6057.  
  6058.  
  6059. ΓòÉΓòÉΓòÉ 15.1.1. Help ΓòÉΓòÉΓòÉ
  6060.  
  6061. There are two ways to display MKMSGF help. 
  6062.  
  6063. Short Syntax Help 
  6064.  
  6065. To display a short version of MKMSGF syntax help, type MKMSGF at the prompt, 
  6066. with no parameters. The following will be displayed: 
  6067.  
  6068. MKMSGF infile[.ext] outfile[.ext] [/V]
  6069. [/D <DBCS range or country>] [/P <code page>]
  6070. [/L <language id,sub id>]
  6071.  
  6072. Long Help 
  6073.  
  6074. To display a longer version of MKMSGF help, including defaults, country codes, 
  6075. and language IDs, type MKMSGF /? at the prompt. The following will be 
  6076. displayed: 
  6077.  
  6078. Use MKMSGF as follows:
  6079.  
  6080. MKMSGF <inputfile> <outputfile> [/V]
  6081.         [/D <DBCS range or country>]
  6082.         [/P <code page>]
  6083.         [/L <language family id,sub id>]
  6084.  
  6085. where the default values are:
  6086.    code page  -  none
  6087.    DBCS range -  none
  6088. A valid DBCS range is: n10,n11,n20,n21,...,nn0,nn1
  6089. A single number is taken as a DBCS country code.
  6090. For a complete list of code pages and country codes,
  6091. see the code page table under COUNTRYCODE in the online book
  6092. Control Program Programming Guide and Reference.
  6093. Supported OS/2 language/sublanguage ID values include:
  6094.  
  6095. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6096. ΓöéCode  ΓöéFamily  ΓöéSub  ΓöéLanguage               ΓöéPrincipal country Γöé
  6097. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6098. Γöé ARA  Γöé   1    Γöé  2  ΓöéArabic                 ΓöéArab Countries    Γöé
  6099. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6100. Γöé BGR  Γöé   2    Γöé  1  ΓöéBulgarian              ΓöéBulgaria          Γöé
  6101. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6102. Γöé CAT  Γöé   3    Γöé  1  ΓöéCatalan                ΓöéSpain             Γöé
  6103. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6104. Γöé CHT  Γöé   4    Γöé  1  ΓöéTraditional Chinese    ΓöéR.O.C.            Γöé
  6105. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6106. Γöé CHS  Γöé   4    Γöé  2  ΓöéSimplified Chinese     ΓöéP.R.C.            Γöé
  6107. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6108. Γöé CSY  Γöé   5    Γöé  1  ΓöéCzech                  ΓöéCzechoslovakia    Γöé
  6109. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6110. Γöé DAN  Γöé   6    Γöé  1  ΓöéDanish                 ΓöéDenmark           Γöé
  6111. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6112. Γöé DEU  Γöé   7    Γöé  1  ΓöéGerman                 ΓöéGermany           Γöé
  6113. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6114. Γöé DES  Γöé   7    Γöé  2  ΓöéSwiss German           ΓöéSwitzerland       Γöé
  6115. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6116. Γöé EEL  Γöé   8    Γöé  1  ΓöéGreek                  ΓöéGreece            Γöé
  6117. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6118. Γöé ENU  Γöé   9    Γöé  1  ΓöéUS English             ΓöéUnited States     Γöé
  6119. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6120. Γöé ENG  Γöé   9    Γöé  2  ΓöéUK English             ΓöéUnited Kingdom    Γöé
  6121. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6122. Γöé ESP  Γöé  10    Γöé  1  ΓöéCastilian Spanish      ΓöéSpain             Γöé
  6123. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6124. Γöé ESM  Γöé  10    Γöé  2  ΓöéMexican Spanish        ΓöéMexico            Γöé
  6125. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6126. Γöé FIN  Γöé  11    Γöé  1  ΓöéFinnish                ΓöéFinland           Γöé
  6127. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6128. Γöé FRA  Γöé  12    Γöé  1  ΓöéFrench                 ΓöéFrance            Γöé
  6129. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6130. Γöé FRB  Γöé  12    Γöé  2  ΓöéBelgian French         ΓöéBelgium           Γöé
  6131. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6132. Γöé FRC  Γöé  12    Γöé  3  ΓöéCanadian French        ΓöéCanada            Γöé
  6133. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6134. Γöé FRS  Γöé  12    Γöé  4  ΓöéSwiss French           ΓöéSwitzerland       Γöé
  6135. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6136. Γöé HEB  Γöé  13    Γöé  1  ΓöéHebrew                 ΓöéIsrael            Γöé
  6137. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6138. Γöé HUN  Γöé  14    Γöé  1  ΓöéHungarian              ΓöéHungary           Γöé
  6139. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6140. Γöé ISL  Γöé  15    Γöé  1  ΓöéIcelandic              ΓöéIceland           Γöé
  6141. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6142. Γöé ITA  Γöé  16    Γöé  1  ΓöéItalian                ΓöéItaly             Γöé
  6143. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6144. Γöé ITS  Γöé  16    Γöé  2  ΓöéSwiss Italian          ΓöéSwitzerland       Γöé
  6145. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6146. Γöé JPN  Γöé  17    Γöé  1  ΓöéJapanese               ΓöéJapan             Γöé
  6147. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6148. Γöé KOR  Γöé  18    Γöé  1  ΓöéKorean                 ΓöéKorea             Γöé
  6149. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6150. Γöé NLD  Γöé  19    Γöé  1  ΓöéDutch                  ΓöéNetherlands       Γöé
  6151. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6152. Γöé NLB  Γöé  19    Γöé  2  ΓöéBelgian Dutch          ΓöéBelgium           Γöé
  6153. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6154. Γöé NOR  Γöé  20    Γöé  1  ΓöéNorwegian - Bokmal     ΓöéNorway            Γöé
  6155. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6156. Γöé NON  Γöé  20    Γöé  2  ΓöéNorwegian - Nynorsk    ΓöéNorway            Γöé
  6157. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6158. Γöé PLK  Γöé  21    Γöé  1  ΓöéPolish                 ΓöéPoland            Γöé
  6159. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6160. Γöé PTB  Γöé  22    Γöé  1  ΓöéBrazilian Portuguese   ΓöéBrazil            Γöé
  6161. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6162. Γöé PTG  Γöé  22    Γöé  2  ΓöéPortuguese             ΓöéPortugal          Γöé
  6163. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6164. Γöé RMS  Γöé  23    Γöé  1  ΓöéRhaeto-Romanic         ΓöéSwitzerland       Γöé
  6165. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6166. Γöé ROM  Γöé  24    Γöé  1  ΓöéRomanian               ΓöéRomania           Γöé
  6167. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6168. Γöé RUS  Γöé  25    Γöé  1  ΓöéRussian                ΓöéU.S.S.R.          Γöé
  6169. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6170. Γöé SHL  Γöé  26    Γöé  1  ΓöéCroato-Serbian (Lat    ΓöéYugoslavia        Γöé
  6171. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6172. Γöé SHC  Γöé  26    Γöé  2  ΓöéSerbo-Croatian (Cyr    ΓöéYugoslavia        Γöé
  6173. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6174. Γöé SKY  Γöé  27    Γöé  1  ΓöéSlovakian              ΓöéCzechoslovakia    Γöé
  6175. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6176. Γöé SQI  Γöé  28    Γöé  1  ΓöéAlbanian               ΓöéAlbania           Γöé
  6177. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6178. Γöé SVE  Γöé  29    Γöé  1  ΓöéSwedish                ΓöéSweden            Γöé
  6179. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6180. Γöé THA  Γöé  30    Γöé  1  ΓöéThai                   ΓöéThailand          Γöé
  6181. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6182. Γöé TRK  Γöé  31    Γöé  1  ΓöéTurkish                ΓöéTurkey            Γöé
  6183. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6184. Γöé URD  Γöé  32    Γöé  1  ΓöéUrdu                   ΓöéPakistan          Γöé
  6185. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6186. Γöé BAH  Γöé  33    Γöé  1  ΓöéBahasa                 ΓöéIndonesia         Γöé
  6187. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6188.  
  6189.  
  6190. ΓòÉΓòÉΓòÉ 15.1.2. Input Message File ΓòÉΓòÉΓòÉ
  6191.  
  6192. The input message file is a standard ASCII file that contains three types of 
  6193. lines: 
  6194.  
  6195.      Comment lines 
  6196.      Component identifier line 
  6197.      Component message lines 
  6198.  
  6199.  Comment Lines 
  6200.  
  6201.  Comment lines are allowed anywhere in the input message file, except between 
  6202.  the component identifier and the first message. Comment lines must begin with 
  6203.  a semicolon (;) in the first column. 
  6204.  
  6205.  In the Input Message File Example, the comment lines are 
  6206.  
  6207.   ; This is a sample of an input
  6208.   ; message file for component DOS
  6209.   ; starting with three comment lines.
  6210.  
  6211.  Component Identifier Line 
  6212.  
  6213.  The component-identifier line contains a three-character name identifier that 
  6214.  precedes all MKMSGF message numbers. 
  6215.  
  6216.  In the example, the component identifier is DOS. 
  6217.  
  6218.  Component-Message Lines 
  6219.  
  6220.  Each component-message line consists of a message header and an ASCII text 
  6221.  message. 
  6222.  
  6223.  The message header is comprised of the following parts: 
  6224.  
  6225.      A three-character component identifier 
  6226.      A four-digit message number 
  6227.      A single character specifying message type (E, H, I, P, W, ?) 
  6228.      A colon (:) 
  6229.      Followed by a blank space. 
  6230.  
  6231.  The following message types are used: 
  6232.  
  6233.  Type   Meaning 
  6234.  E      Error 
  6235.  H      Help 
  6236.  I      Information 
  6237.  P      Prompt 
  6238.  W      Warning 
  6239.  ?      no message assigned to this number 
  6240.  
  6241.  The message header must begin in the first column of the line. Only one header 
  6242.  can precede the text of a message, although a message can span multiple lines. 
  6243.  
  6244.  Message numbers can start at any number, but messages must be numbered 
  6245.  sequentially.  If you do not use a message number, you must insert an empty 
  6246.  entry in its place in the text file. An empty entry consists of the message 
  6247.  number, with ? as the message type, and no text. 
  6248.  
  6249.  The character % has a special meaning when used within the text of a message: 
  6250.  
  6251.  %0 is placed at the end of a prompt (type P) to prevent DosGetMessage from 
  6252.  executing a carriage return and line feed.  This allows the user to be 
  6253.  prompted for input on the same line as the message text. 
  6254.  
  6255.  %1 - %9 are used to identify variable string insertion within the text of a 
  6256.  message.  These variables correspond to the Itable and IvCount parameters in 
  6257.  the DosGetMessage call. 
  6258.  
  6259.  Component-Message Example 
  6260.  
  6261.  For example, DOS0100E: is DOS error message 100. For additional examples, see 
  6262.  the Input Message File Example. 
  6263.  
  6264.  
  6265. ΓòÉΓòÉΓòÉ 15.1.3. Output File ΓòÉΓòÉΓòÉ
  6266.  
  6267. The output file contains the indexed message file that DosGetMessage will use. 
  6268. The output-file name can be any valid OS/2 file name, optionally preceded by a 
  6269. drive letter and a path.  The output file cannot have the same name as the 
  6270. input file. 
  6271.  
  6272. To differentiate between the two files, the following convention is 
  6273. recommended, using the same file name. 
  6274.  
  6275.      The infile file should have a .TXT extension. 
  6276.      The outfile file should have a .MSG extension. 
  6277.  
  6278.  Help-message file names begin with the component identifier, followed by 
  6279.  H.MSG. For example, the help file associated with the component identifier DOS 
  6280.  would be DOSH.MSG. 
  6281.  
  6282.  
  6283. ΓòÉΓòÉΓòÉ 15.2. Options ΓòÉΓòÉΓòÉ
  6284.  
  6285. Text-based messages in different code pages can be created using MKMSGF to 
  6286. display errors, help information, prompt, or provide general information to the 
  6287. application user. 
  6288.  
  6289. MKMSGF uses the following parameter formats to build message files: 
  6290.  
  6291.       MKMSGF infile outfile /Pcodepage 
  6292.  
  6293.       MKMSGF infile outfile /Ddbcsrange or country id 
  6294.  
  6295.       MKMSGF infile outfile /LlangID,VerId 
  6296.  
  6297.       MKMSGF infile outfile /V 
  6298.  
  6299.       MKMSGF infile outfile /? 
  6300.  
  6301.       MKMSGF @controlfile 
  6302.  
  6303.      Infile is the ASCII-text source file. 
  6304.  
  6305.       Example: 
  6306.  
  6307.             MSG
  6308.             MSG0001I: (mm%4dd%4yy) %2%4%1%4%3
  6309.             MSG0002I: (dd%4mm%4yy) %1%4%2%4%3
  6310.             MSG0003I: Current date is: %0
  6311.  
  6312.       %0 is a special argument that displays a prompt for user input. 
  6313.  
  6314.       %1 - %9 are the arguments the user can use to insert text in a message. 
  6315.  
  6316.      Outfile is the binary output message file. 
  6317.  
  6318.      @controlfile is the message definition file. 
  6319.  
  6320.  Options 
  6321.  
  6322.  /P        Code-page ID for the input message file. See /P Option 
  6323.  
  6324.  /D        DbcsRange or country ID for the input message file. See /D Option 
  6325.  
  6326.  /L        Language family ID (one word) and language version ID (one word). 
  6327.            See /L Option 
  6328.  
  6329.  /V        Verbose display of message file control variables as the message 
  6330.            file is being created. See /Verbose Option Output Example 
  6331.  
  6332.  /?        Help display of command syntax for MKMSGF. 
  6333.  
  6334.  Note:  Any combination of /P, /D, /L, and /V switches can be used for either 
  6335.         the command line or @controlfile execution method. 
  6336.  
  6337.  The / switch prefix and the - prefix can be used interchangeably when defining 
  6338.  switches to MKMSGF. 
  6339.  
  6340.  
  6341. ΓòÉΓòÉΓòÉ 15.2.1. /Verbose Option Output Example ΓòÉΓòÉΓòÉ
  6342.  
  6343. Following is a sample of MKMSGF output, using the Verbose option (/V). This 
  6344. output was produced using the following command: 
  6345.  
  6346. mkmsgf myapp.txt myapp.msg /v
  6347.  
  6348.   strIn     = myapp.txt
  6349.   strOut    = myapp.msg
  6350.   StrIncDir = (null)
  6351.   CodePages = 437
  6352.   Language family id = 0 and sub id = 0
  6353.   Language family id and sub id = unspecified
  6354.   flags     = none
  6355.   CP_type   = SBCS
  6356. "myapp.txt": length = 382 bytes.
  6357. 29 messages scanned.  Writing output file...
  6358. Size of table entry: word
  6359.  
  6360.  
  6361. ΓòÉΓòÉΓòÉ 15.2.2. /P Option ΓòÉΓòÉΓòÉ
  6362.  
  6363. The Code-page option (/P) specifies the code-page ID for that input message 
  6364. file. 
  6365.  
  6366. For a complete list of code pages, see the code page table under COUNTRYCODE in 
  6367. the online book Control Program Programming Reference. 
  6368.  
  6369. Up to 16 /P combinations can be saved with the message file. 
  6370.  
  6371. /P cannot be used to identify DBCS data. 
  6372.  
  6373.  
  6374. ΓòÉΓòÉΓòÉ 15.2.3. /D Option ΓòÉΓòÉΓòÉ
  6375.  
  6376. The DBCS option (/D) specifies the DBCS Range or country ID for that input 
  6377. message file. 
  6378.  
  6379. A valid DBCS country ID will cause the initialization of valid DBCS ranges to 
  6380. be set up for this file. 
  6381.  
  6382. See DBCS Code Pages and Country Codes for valid DBCS country codes. 
  6383.  
  6384.  
  6385. ΓòÉΓòÉΓòÉ 15.2.4. /L Option ΓòÉΓòÉΓòÉ
  6386.  
  6387. The Language option (/L) specifies the language family ID (one word) and 
  6388. language version ID (one word). 
  6389.  
  6390. Valid combination of language family and language version will be set for this 
  6391. file. 
  6392.  
  6393. A valid language family with invalid or undefined language version id will 
  6394. cause a default value of 1 to be set for language version. 
  6395.  
  6396.  
  6397. ΓòÉΓòÉΓòÉ 15.3. Control Files ΓòÉΓòÉΓòÉ
  6398.  
  6399. The control file (@controlfile) is used to create multiple-code-page message 
  6400. files. The at sign (@) is not part of the file name, but rather, a delimiter 
  6401. required before a control-file name. 
  6402.  
  6403. The control file has the following format: 
  6404.  
  6405. Example: 
  6406.  
  6407. root.in root.out /Pcodepage /Ddbcsrang/ctryid /LlangID,VerId
  6408. sub.001 sub1.out /Pcodepage /Ddbcsrang/ctryid /LlangID,VerId
  6409.                  .
  6410.                  .
  6411. sub.00n subn.out /Pcodepage /Ddbcsrang/ctryid /LlangID,VerId
  6412.  
  6413. The help option (/?) is invalid due to the purpose of the definition file. 
  6414.  
  6415. Note:  Any combination of /P /D /L and /V switches can be used for either the 
  6416.        command line or msg_definition_file execution method. 
  6417.  
  6418.  
  6419. ΓòÉΓòÉΓòÉ 15.3.1. Input Message File Example ΓòÉΓòÉΓòÉ
  6420.  
  6421. Following is an example of an input message file: 
  6422.  
  6423. ; This is a sample of an input
  6424. ; message file for component MAB
  6425. ; starting with three comment lines.
  6426. MAB
  6427. MAB0100E: File not found
  6428. MAB0101?:
  6429. MAB0102H: Usage: del [drive:][path] filename
  6430. MAB0103?:
  6431. MAB0104I: %1 files copied
  6432. MAB0105W: Warning! All data will be destroyed!
  6433. MAB0106?:
  6434. MAB0107?:
  6435. MAB0108P: Do you wish to apply these patches (Y or N)? %0
  6436. MAB0109E: Divide overflow
  6437.  
  6438.  
  6439. ΓòÉΓòÉΓòÉ 16. Make Template File (MKTMPF) ΓòÉΓòÉΓòÉ
  6440.  
  6441. MKTMPF creates template repository files from text input files. 
  6442.  
  6443. A template repository (also referred to as a repository file or repository in 
  6444. this document) is a binary file used by the operating system's Error Logging 
  6445. Facility to find error descriptions, causes, and actions in various message 
  6446. files. 
  6447.  
  6448. The first step in creating a repository file is to create a text input file for 
  6449. MKTMPF using any text editor. The contents and format of these files are 
  6450. described later in this document.  These input files can have any file name 
  6451. that is valid for your file system. A standard extension, TMP, is recommended, 
  6452. but not required. 
  6453.  
  6454. MKTMPF reads and validates this file, reporting any errors or warnings, before 
  6455. translating it to binary data and creating a repository file. 
  6456.  
  6457.  
  6458. ΓòÉΓòÉΓòÉ 16.1. Starting MKTMPF ΓòÉΓòÉΓòÉ
  6459.  
  6460. MKTMPF is started from the command line, so it can be used from batch files and 
  6461. makefiles in a batch environment. 
  6462.  
  6463.  
  6464. ΓòÉΓòÉΓòÉ 16.1.1. Command-Line Syntax ΓòÉΓòÉΓòÉ
  6465.  
  6466. The command-line syntax for MKTMPF is as follows: 
  6467.  
  6468. mktmpf [-?][-c][-q][-v][-O <outputfile>][-W <level>][-V<text>]<input file>
  6469.  
  6470.  
  6471. ΓòÉΓòÉΓòÉ 16.1.2. Command-Line Switches and Options ΓòÉΓòÉΓòÉ
  6472.  
  6473. There are two types of command-line arguments:  switches and options. Each 
  6474. command-line argument is denoted by a character prefixed by a hyphen (-) or a 
  6475. slash (/), and sometimes followed with a value to be used by the program. 
  6476. Command-line arguments are case-sensitive. 
  6477.  
  6478. Switches are used to set the state of a flag that affects the program's 
  6479. behavior. In effect, the presence of a given switch on the command line sets a 
  6480. flag that has a default value of FALSE, to TRUE. Switches consist of a hyphen 
  6481. or slash followed by a lowercase alphabetic character. They do not take a 
  6482. value, and can be grouped together with a single hyphen or slash (for example, 
  6483. -cq). 
  6484.  
  6485. Options are used to set the value of one of the variables that the program 
  6486. uses. They differ from switches in that they require at least one value to be 
  6487. entered. They consist of a hyphen or slash followed by an uppercase alphabetic 
  6488. character. 
  6489.  
  6490. The POSIX command-line delimiter "--" must be used when needed to separate 
  6491. options from operands. Any option-argument values that begin with a hyphen, 
  6492. plus sign, comma, at sign (@), space, or any special character must be enclosed 
  6493. in double quotation marks.  If any valid options are entered more than once on 
  6494. the command line, the last entry will be used and all previous occurrences will 
  6495. be ignored. 
  6496.  
  6497. Note: 
  6498.  
  6499. Options and switches are case-sensitive. 
  6500.  
  6501. Options can be specified in any order. 
  6502.  
  6503. <arg> indicates that "arg" is mandatory. 
  6504.  
  6505. [arg] indicates that "arg" is optional. 
  6506.  
  6507. If the -O, -V, or -W option immediately precedes the <input file> parameter, 
  6508. the two must be separated with "--".  For example: 
  6509.  
  6510. -O repository.rep -- infile.tmp
  6511.  
  6512.  The following are the switches and options that MKTMPF supports: 
  6513.  
  6514.  -?              A switch that displays help for MKTMPF. 
  6515.  
  6516.  -c              A switch that checks the input for syntax errors and does not 
  6517.                  create the repository file. 
  6518.  
  6519.  -q              A switch that suppresses the banner that MKTMPF displays when 
  6520.                  it starts. 
  6521.  
  6522.  -v              A switch that turns on verbose mode for logging and reporting 
  6523.                  purposes. 
  6524.  
  6525.  -O <output file> An option that specifies the name of the output repository 
  6526.                  file.  If this option is not provided, the output file name 
  6527.                  will match the input file name except the extension will be 
  6528.                  .REP. -O also overrides the repository path name specified in 
  6529.                  the input file. 
  6530.  
  6531.  -V <text>       An option that allows the user to specify the version of the 
  6532.                  repository file.  The version is 16 characters of user-defined 
  6533.                  text. 
  6534.  
  6535.  -W <level>      An option that specifies the warning level to be used. Valid 
  6536.                  warning levels are: 
  6537.  
  6538.                       1 - Displays fatal errors only. 
  6539.                       2 - Displays fatal and severe errors. 
  6540.                       3 - Displays fatal errors, severe errors, and warnings. 
  6541.                       4 - Displays all message types above, and informational 
  6542.                       messages. The default warning level is 3. 
  6543.  
  6544.  <input file>    The name of the file that contains the input statements used 
  6545.                  to build the templates. It must always be specified as the 
  6546.                  final parameter. 
  6547.  
  6548.  
  6549. ΓòÉΓòÉΓòÉ 16.2. Input Files ΓòÉΓòÉΓòÉ
  6550.  
  6551. The input file used by MKTMPF to create repository files can be created with a 
  6552. text editor (or other method of the user's choosing). It should contain one set 
  6553. of default path names and a set of one or more template entries. The following 
  6554. is an example of an input file with a single template. 
  6555.  
  6556. Note: 
  6557.  
  6558. The keywords surrounded by <> are replaced by the appropriate data. 
  6559.  
  6560. Blank lines are ignored. 
  6561.  
  6562. Any line in which an asterisk appears before any other non-white space is 
  6563. ignored. 
  6564.  
  6565. Keywords are not case-sensitive; key values are case-sensitive. 
  6566.  
  6567. Descriptive_name and comment must be in double quotation marks. 
  6568.  
  6569.   *****************************************************
  6570.   *** This section appears once in the input file   ***
  6571.   *****************************************************
  6572.    Repository_pathname = xxxxxxxxxx
  6573.    Default_message_pathname = xxxxxxxxxx
  6574.    Default_causes_pathname = xxxxxxxxxx
  6575.    Default_actions_pathname = xxxxxxxxxx
  6576.    Default_details_pathname = xxxxxxxxxx
  6577.    Descriptive_name = "xxxxxxxxxx"
  6578.   *****************************************************
  6579.   *** The remaining lines define a single template. ***
  6580.   *** Additional templates may be appended by       ***
  6581.   *** replicating the following text.               ***
  6582.   *****************************************************
  6583.    <action> Template_number = xxxxxxxx
  6584.    Comment = "xxxxxxxxxxxxxxxxx"
  6585.    Message_number = xxxxxxxx
  6586.    Log_Class = x
  6587.    Message_pathname = xxxxxxxxxxxxx
  6588.    Causes_pathname = xxxxxxxxxxxxxxx
  6589.    Actions_pathname = xxxxxxxxxxxxx
  6590.    Details_pathname = xxxxxxxxxxxxxxxxxxx
  6591.    Fail_causes = xxxxxxxx,xxxxxxxx,xxxxxxxx,xxxxxxxx
  6592.    Fail_actions = xxxxxxxx,xxxxxxxx,xxxxxxxx,xxxxxxxx
  6593.    Install_causes = xxxxxxxx,xxxxxxxx,xxxxxxxx,xxxxxxxx
  6594.    Install_actions = xxxxxxxx,xxxxxxxx,xxxxxxxx,xxxxxxxx
  6595.    User_causes = xxxxxxxx,xxxxxxxx,xxxxxxxx,xxxxxxxx
  6596.    User_actions = xxxxxxxx,xxxxxxxx,xxxxxxxx,xxxxxxxx
  6597.    Detail_data = <length>,<offset>,<heading>,<type>
  6598.  
  6599.  Note:  Long file names, white space, and special characters are acceptable if 
  6600.         the user's file system supports them. If a path name contains leading 
  6601.         or trailing white space, it should be enclosed in double quotation 
  6602.         marks. You can provide either a full path name or just the file name. 
  6603.         If the file name is provided, it is the developer's responsibility to 
  6604.         make sure it is in a directory specified in the DPATH of the system 
  6605.         where the repository will be used. 
  6606.  
  6607.  
  6608. ΓòÉΓòÉΓòÉ 16.2.1. Repository Keywords ΓòÉΓòÉΓòÉ
  6609.  
  6610. Repository keywords appear once and pertain to the entire input file. If a 
  6611. repository keyword is specified more than once, the last occurrence of the 
  6612. keyword will be used. 
  6613.  
  6614.  Repository_pathname (required) The name of the repository file where these 
  6615.                      templates are to be placed. This is a one-time parameter 
  6616.                      and, by convention, should be at the top of the input file 
  6617.                      (before any templates). The file extension, by convention, 
  6618.                      should be .REP and you can provide either a full path name 
  6619.                      or just the filename. If a path name contains leading or 
  6620.                      trailing white space, it should be enclosed in double 
  6621.                      quotation marks. If only the file name is provided, it 
  6622.                      will be placed in the current directory. If you do not 
  6623.                      specify a file name, one will be provided. 
  6624.  
  6625.  Default_message_pathname (optional) Default error-message file name that will 
  6626.                      be used if the template definition does not provide one. 
  6627.                      This is a one-time parameter and, by convention, should be 
  6628.                      at the top of the input file (before any templates are 
  6629.                      defined). 
  6630.  
  6631.  Default_causes_pathname (optional) Default causes-message  file name that will 
  6632.                      be used if the template definition does not provide one. 
  6633.                      This is a one-time parameter and, by convention, should be 
  6634.                      at the top of the input file (before any templates are 
  6635.                      defined). 
  6636.  
  6637.  Default_actions_pathname (optional) Default actions-message file name that 
  6638.                      will be used if the template definition does not provide 
  6639.                      one. This is a one-time parameter and, by convention, 
  6640.                      should be at the top of the input file (before any 
  6641.                      templates are defined). 
  6642.  
  6643.  Default_details_pathname (optional) Default details-message file name that 
  6644.                      will be used if the template definition does not provide 
  6645.                      one. This is a one-time parameter and, by convention, 
  6646.                      should be at the top of the input file (before any 
  6647.                      templates are defined). 
  6648.  
  6649.  Descriptive_name (optional) A 256-character (including ") descriptive name 
  6650.                      used to identify the contents of the template file.  This 
  6651.                      is a one-time parameter and must be at the top of the 
  6652.                      input file. 
  6653.  
  6654.  
  6655. ΓòÉΓòÉΓòÉ 16.2.2. Template Keywords ΓòÉΓòÉΓòÉ
  6656.  
  6657. Template keywords appear once for each template in this repository input file. 
  6658. If a template keyword is specified more than once, the last occurrence of the 
  6659. keyword will be used. 
  6660.  
  6661.  <action> (optional) Action that will be performed against this template entry. 
  6662.                      This keyword prefixes the Template_number keyword. If 
  6663.                      omitted, "ADD" will be the action taken. Valid actions 
  6664.                      are: 
  6665.  
  6666.                      ADD               Add this template to the specified 
  6667.                                        repository. 
  6668.  
  6669.                      COMMENT           Treat this entry as a comment only and 
  6670.                                        do not change the specified repository. 
  6671.  
  6672.  Template_number (required) The unique number that is to be associated with 
  6673.                      this template. MKTMPF will validate the number for 
  6674.                      uniqueness. This number is required for each template in 
  6675.                      the input file, and it cannot be 0. 
  6676.  
  6677.                      Note:  This signifies the start of a template entry.  The 
  6678.                             end of a template is detected by another 
  6679.                             Template_number entry or the end of file. 
  6680.  
  6681.  Comment (optional)   A 40-character (including ") user comment to be included 
  6682.                      with this template that might help the user identify what 
  6683.                      the template is used for. A sample comment would be: 
  6684.  
  6685.                      "I/O error on printer LPT2," which identifies that this 
  6686.                      template is to be used by FFSTProbes that detect I/O 
  6687.                      errors on LPT2. 
  6688.  
  6689.  Message_number (required) The main message number for this error. The message 
  6690.                      will be found in the  message file specified by 
  6691.                      Message_pathname or Default_message_pathname. This number 
  6692.                      is required for each template in the input file. A message 
  6693.                      number equal to 0 will be considered an error, because 
  6694.                      this could indicate a missing message number. 
  6695.  
  6696.  Log_Class (optional) The type (Log_Class) of this error; H = Hardware, S = 
  6697.                      Software (default). 
  6698.  
  6699.  Message_pathname (optional) Name of the message file that contains the main 
  6700.                      message for this template (Message = xxx). 
  6701.  
  6702.                      Note:  If this parameter is not provided, the 
  6703.                             Default_message_pathname information will be used. 
  6704.  
  6705.  Causes_pathname (optional) Name of the message file containing messages that 
  6706.                      provide cause information. 
  6707.  
  6708.                      Note:  If this parameter is not provided, the 
  6709.                             Default_causes_pathname information will be used. 
  6710.  
  6711.  Actions_pathname (optional) Name of the message file containing messages that 
  6712.                      provide specific information about actions that might 
  6713.                      correct this error. 
  6714.  
  6715.                      Note:  If this parameter is not provided, the 
  6716.                             Default_actions_pathname information will be used. 
  6717.  
  6718.  Details_pathname (optional) Name of the message file containing heading 
  6719.                      information for detail data formatting. 
  6720.  
  6721.                      Note:  If this parameter is not provided, the 
  6722.                             Default_details_pathname information will be used. 
  6723.  
  6724.  Fail_causes (optional) Up to four message numbers, separated by commas, that 
  6725.                      can be found in the Causes message file. These messages 
  6726.                      will provide information relating to the failure or error 
  6727.                      that occurred. 
  6728.  
  6729.  Fail_actions (optional) Up to four message numbers, separated by commas, that 
  6730.                      can be found in the Actions message file. These messages 
  6731.                      will provide information relating to the actions that 
  6732.                      should be taken to either correct or gather more 
  6733.                      information about the error. 
  6734.  
  6735.  Install_causes (optional) Up to four message numbers, separated by commas, 
  6736.                      that can be found in the Causes message file. These 
  6737.                      messages will provide information relating to possible 
  6738.                      installation causes of the failure or error that occurred. 
  6739.  
  6740.  Install_actions (optional) Up to four message numbers, separated by commas, 
  6741.                      that can be found in the Actions message file. These 
  6742.                      messages will provide information relating to the actions 
  6743.                      that should be taken to either correct or gather more 
  6744.                      information about the error. 
  6745.  
  6746.  User_causes (optional) Up to four message numbers, separated by commas, that 
  6747.                      can be found in the Causes message file. These messages 
  6748.                      will provide additional user information relating to the 
  6749.                      failure or error that occurred. 
  6750.  
  6751.  User_actions (optional) Up to four message numbers, separated by commas, that 
  6752.                      can be found in the Actions message file. These messages 
  6753.                      will provide information relating to the actions that 
  6754.                      should be taken to either correct or gather more 
  6755.                      information about the error. 
  6756.  
  6757.  Detail_data (optional) Entries used to format the user_data portion of 
  6758.                      template records. There can be multiple entries. Each 
  6759.                      entry contains four pieces of information separated by 
  6760.                      commas. The information must be in the following order: 
  6761.  
  6762.                      1. length      The length of data formatted by this 
  6763.                                     instruction. 
  6764.  
  6765.                      2. offset      The offset into the user_data area where 
  6766.                                     this formatting record is to start. The 
  6767.                                     first byte of user_data is position 0. 
  6768.  
  6769.                      3. heading     The message number of the details file that 
  6770.                                     is to be displayed before this data. A 
  6771.                                     blank specifies that no heading will be 
  6772.                                     displayed. 
  6773.  
  6774.                      4. type        The type of formatting that is to be done: 
  6775.  
  6776.                                     0         The data is not to be used. 
  6777.                                     1         The data conforms to ISO 8859.1 
  6778.                                               and is to be displayed in ASCII 
  6779.                                               characters. 
  6780.                                     2         The data is in binary format and 
  6781.                                               should be converted to decimal 
  6782.                                               before it is displayed. 
  6783.                                     3         Display the data in hexadecimal. 
  6784.                                     4         The data is Unicode and is to be 
  6785.                                               displayed in ASCII characters. 
  6786.  
  6787.  The following table shows which entries are required for the specific actions 
  6788.  of MKTMPF. If an entry is marked as "Optional," neither the entry type nor its 
  6789.  value is required. You can enter the entry type with no value if you desire to 
  6790.  have a placeholder. 
  6791.  
  6792.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6793.   ΓöéEntry Type               ΓöéAdd            ΓöéComment        Γöé
  6794.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6795.   ΓöéRepository_pathname      ΓöéRequired       ΓöéRequired       Γöé
  6796.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6797.   ΓöéDefault_Message_Pathname ΓöéOptional*      ΓöéOptional*      Γöé
  6798.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6799.   ΓöéDefault_Causes_Pathname  ΓöéOptional*      ΓöéOptional*      Γöé
  6800.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6801.   ΓöéDefault_Actions_Pathname ΓöéOptional*      ΓöéOptional*      Γöé
  6802.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6803.   ΓöéDefault_Details_Pathname ΓöéOptional*      ΓöéOptional       Γöé
  6804.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6805.   Γöé<action>                 ΓöéOptional       ΓöéRequired       Γöé
  6806.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6807.   ΓöéTemplate_number          ΓöéRequired       ΓöéOptional       Γöé
  6808.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6809.   ΓöéComment                  ΓöéOptional       ΓöéOptional       Γöé
  6810.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6811.   ΓöéMessage_number           ΓöéRequired       ΓöéOptional       Γöé
  6812.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6813.   ΓöéLog_Class                ΓöéOptional       ΓöéOptional       Γöé
  6814.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6815.   ΓöéMessage_pathname         ΓöéOptional*      ΓöéOptional       Γöé
  6816.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6817.   ΓöéCauses_pathname          ΓöéOptional*      ΓöéOptional       Γöé
  6818.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6819.   ΓöéActions_pathname         ΓöéOptional*      ΓöéOptional       Γöé
  6820.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6821.   ΓöéDetails_pathname         ΓöéOptional*      ΓöéOptional       Γöé
  6822.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6823.   ΓöéFail_causes              ΓöéOptional       ΓöéOptional       Γöé
  6824.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6825.   ΓöéFail_actions             ΓöéOptional       ΓöéOptional       Γöé
  6826.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6827.   ΓöéInstall_causes           ΓöéOptional       ΓöéOptional       Γöé
  6828.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6829.   ΓöéInstall_actions          ΓöéOptional       ΓöéOptional       Γöé
  6830.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6831.   ΓöéUser_causes              ΓöéOptional       ΓöéOptional       Γöé
  6832.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6833.   ΓöéUser_actions             ΓöéOptional       ΓöéOptional       Γöé
  6834.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6835.   ΓöéDetail_data              ΓöéOptional       ΓöéOptional       Γöé
  6836.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6837.   Γöé                         Γöé               Γöé               Γöé
  6838.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6839.   Γöé* Either the default pathΓöé               Γöé               Γöé
  6840.   Γöéname or the path name in Γöé               Γöé               Γöé
  6841.   Γöéeach template is requiredΓöé               Γöé               Γöé
  6842.   Γöéif the template is using Γöé               Γöé               Γöé
  6843.   Γöémessages. For examples,  Γöé               Γöé               Γöé
  6844.   Γöésee the following table. Γöé               Γöé               Γöé
  6845.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6846.   Γöé                         Γöé               Γöé               Γöé
  6847.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6848.  
  6849.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6850.   ΓöéRequired                      ΓöéWhen Required                 Γöé
  6851.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6852.   ΓöéDefault_message_pathname or   ΓöéAlways                        Γöé
  6853.   ΓöéMessage_pathname              Γöé                              Γöé
  6854.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6855.   Γöé                              Γöé                              Γöé
  6856.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6857.   ΓöéDefault_causes_pathname or    ΓöéWhen providing cause          Γöé
  6858.   ΓöéCauses_pathname               Γöéinformation                   Γöé
  6859.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6860.   Γöé                              Γöé                              Γöé
  6861.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6862.   ΓöéDefault_actions_pathname or   ΓöéWhen providing action         Γöé
  6863.   ΓöéActions_pathname              Γöéinformation                   Γöé
  6864.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6865.   Γöé                              Γöé                              Γöé
  6866.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6867.   ΓöéDefault_details_pathname or   ΓöéWhen providing detail data    Γöé
  6868.   ΓöéDetails_pathname              Γöéinformation                   Γöé
  6869.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6870.   Γöé                              Γöé                              Γöé
  6871.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6872.  
  6873.  
  6874. ΓòÉΓòÉΓòÉ 16.2.3. Output File and Error Reporting ΓòÉΓòÉΓòÉ
  6875.  
  6876. The output of MKTMPF is the repository file. 
  6877.  
  6878.  
  6879. ΓòÉΓòÉΓòÉ 16.2.3.1. Error Reporting ΓòÉΓòÉΓòÉ
  6880.  
  6881. Errors and other information are shown on the display. The log information for 
  6882. the verbose option includes: 
  6883.  
  6884.      The current settings for the following: 
  6885.  
  6886.         -  Quiet mode 
  6887.         -  Log file name 
  6888.         -  Output file name 
  6889.         -  Warning level 
  6890.         -  Check only 
  6891.         -  Version text 
  6892.  
  6893.      Informational and error messages 
  6894.  
  6895.  
  6896. ΓòÉΓòÉΓòÉ 17. Message Segment Binder (MSGBIND) ΓòÉΓòÉΓòÉ
  6897.  
  6898. The MSGBIND program binds a message segment to an executable program. It does 
  6899. this by reading an input file that specifies the executable files to modify. 
  6900. For each executable file, MSGBIND specifies which message files to scan, and 
  6901. for each message file, it specifies which messages to include in the executable 
  6902. file. Although the resulting executable file will be larger, access to messages 
  6903. will be faster. 
  6904.  
  6905. In the OS/2 operating system, message segment/objects are packed with other 
  6906. application code. If the size of the code segment/object and the bound messages 
  6907. exceeds 64KB, the following statement in the program definition file (.DEF) 
  6908. isolates the application code from the message statement/object: 
  6909.  
  6910.  16 Bit Applications 
  6911.       SEGMENTS '_MSGSEG' CLASS 'CODE' 
  6912.  
  6913.  32 Bit Applications 
  6914.       SEGMENTS '_MSGSEG32' CLASS 'CODE' 
  6915.  
  6916.  
  6917. ΓòÉΓòÉΓòÉ 17.1. Syntax ΓòÉΓòÉΓòÉ
  6918.  
  6919. The MSGBIND command line has the following form: 
  6920.  
  6921. MSGBIND infile
  6922.  
  6923. The infile field specifies the input file that identifies the executable files, 
  6924. output message files, and message numbers that will be bound.  The input-file 
  6925. name can be any valid OS/2 file name and can include an optional file name 
  6926. extension. 
  6927.  
  6928.  
  6929. ΓòÉΓòÉΓòÉ 17.1.1. Input File ΓòÉΓòÉΓòÉ
  6930.  
  6931. The input file contains the following three types of lines: 
  6932.  
  6933.      > Executable file 
  6934.  
  6935.      < Message file 
  6936.  
  6937.      Message numbers. 
  6938.  
  6939.  Executable file 
  6940.  
  6941.  The File in which messages are to be bound is preceded by a greater-than 
  6942.  symbol (>). The name of the file can be any valid OS/2 file name. 
  6943.  
  6944.  Two or more different executable files can be modified by the specifications 
  6945.  found in one input file. MSGBIND continues to use this file until it 
  6946.  encounters another greater-than symbol. 
  6947.  
  6948.  Message file 
  6949.  
  6950.  The message file to be read from is preceded by a less-than sign (<). You 
  6951.  create this file by using the MKMSGF program. The name can be any valid OS/2 
  6952.  file name. All message numbers that follow it are located in the specified 
  6953.  message file and are copied to the current output executable file. MSGBIND 
  6954.  reads the message-number list until it encounters one of the following: the 
  6955.  end of the input file, a new output specification, or a new input message 
  6956.  file. 
  6957.  
  6958.  Message Numbers 
  6959.  
  6960.  The messages in the message file are listed below the message-file name.  Only 
  6961.  those message numbers that you specify will be added. You can also specify an 
  6962.  asterisk (*) to indicate that all messages within the message file will be 
  6963.  added. Message numbers must consist of a three-letter component identifier 
  6964.  followed by a four-digit message number. 
  6965.  
  6966.  See Input Message File for a more detailed description of message numbers. 
  6967.  
  6968.  
  6969. ΓòÉΓòÉΓòÉ 17.1.2. Multiple Code-Page Message Files ΓòÉΓòÉΓòÉ
  6970.  
  6971. Multiple code-page message files can also be bound to an executable file, which 
  6972. enables a user to bind to an application messages for different countries. 
  6973.  
  6974. The following example shows how three messages in two different languages can 
  6975. be bound to an executable file: 
  6976.  
  6977. MSGBIND infile
  6978.  
  6979. where infile consists of the following: 
  6980.  
  6981.  >PROG1.EXE
  6982.  <TEXTUS.MSG
  6983.  MSG0001
  6984.  MSG0002
  6985.  MSG0003
  6986.  <TEXTIT.MSG
  6987.  MSG0001
  6988.  MSG0002
  6989.  MSG0003
  6990.  
  6991. where: 
  6992.  
  6993.      PROG1.EXE is the executable file to be modified. 
  6994.  
  6995.      TEXTUS.MSG is the file, created using MKMSGF, which contains messages in 
  6996.       US English. 
  6997.  
  6998.      TEXTIT.MSG is the file, created using MKMSGF, which contains the same 
  6999.       messages translated into Italian. 
  7000.  
  7001.      MSGnnnn defines the messages to be bound to the application: 
  7002.  
  7003.       MSG            Message component ID 
  7004.       0001           Message number 
  7005.  
  7006.  
  7007. ΓòÉΓòÉΓòÉ 17.1.3. Help ΓòÉΓòÉΓòÉ
  7008.  
  7009. To display MSGBIND help, type MSGBIND at the prompt, with no parameters. The 
  7010. following will be displayed: 
  7011.  
  7012. usage: MSGBIND scriptfile
  7013.  
  7014.  
  7015. ΓòÉΓòÉΓòÉ 17.2. How Message Retrieval Works ΓòÉΓòÉΓòÉ
  7016.  
  7017. When an application requests the message retriever for text associated with a 
  7018. message number, a test is made to determine if there is a bound message segment 
  7019. with this executable file.  If true, each bound message segment is searched for 
  7020. a match with the current session's code-page number. 
  7021.  
  7022. If a match is made, then the message number is searched for.  If it is found, 
  7023. the message will be returned to the caller. Otherwise, the search of remaining 
  7024. bound message segments will continue. 
  7025.  
  7026. If no match results from a search of all message segments, the message file on 
  7027. the disk is searched. DosGetMessage will access the message file under any of 
  7028. the following conditions: 
  7029.  
  7030.      The message file is in the current directory. 
  7031.      The message file is in the path specified in the DPATH environment 
  7032.       variable (protect mode). 
  7033.      The message file is in the path specified in the APPEND environment 
  7034.       variable (real mode). 
  7035.      The fully-qualified file name is specified in DosGetMessage. 
  7036.  
  7037.  
  7038. ΓòÉΓòÉΓòÉ 17.2.1. Sample Input File ΓòÉΓòÉΓòÉ
  7039.  
  7040. >c:\cmd.exe
  7041. <c:\os20\dosutil.msg
  7042. DOS0100
  7043. DOS0123
  7044. DOS0245
  7045. >c:\format.exe
  7046. <c:\os20\dosutil.msg
  7047. DOS0001
  7048. DOS0006
  7049. <c:\format.msg
  7050. FMT0001
  7051. FMT0002
  7052. <c:\myown.msg
  7053. *
  7054.  
  7055. The first line of a MSGBIND input file specifies that the executable file to 
  7056. modify is CMD.EXE.  The messages DOS0100, DOS0123, and DOS0245 are read from 
  7057. the file DOSUTIL.MSG and added to the CMD.EXE file.  The MSGBIND program then 
  7058. encounters an executable-file option for the FORMAT.EXE file.  The messages 
  7059. DOS0001 and DOS0006 are read from DOSUTIL.MSG and added to FORMAT.EXE.  Next, 
  7060. the messages FMT0001 and FMT0002 are read from the file FORMAT.MSG and added to 
  7061. FORMAT.EXE.  Finally, because an asterisk is specified, all the messages are 
  7062. read from the file MYOWN.MSG and added to FORMAT.EXE. 
  7063.  
  7064. The files DOSUTIL.MSG and FORMAT.MSG in this example are two 
  7065. output-message-file names from the MKMSGF program. 
  7066.  
  7067.  
  7068. ΓòÉΓòÉΓòÉ 18. Program Maintenance Utility Program (NMAKE) ΓòÉΓòÉΓòÉ
  7069.  
  7070. The Program Maintenance utility program, NMAKE, automates the process of 
  7071. updating project files.  NMAKE compares the modification dates for one set of 
  7072. files (the target files) with those of another set of files (the dependent 
  7073. files).  If any dependent files have changed more recently than the target 
  7074. files, NMAKE executes a series of commands to bring the targets up-to-date. 
  7075.  
  7076.  
  7077. ΓòÉΓòÉΓòÉ 18.1. Why Use NMAKE? ΓòÉΓòÉΓòÉ
  7078.  
  7079. The most common use of NMAKE is to automate the process of updating a project 
  7080. after you make a change to a source file.  Large projects tend to have many 
  7081. source files.  Often, only a few of your source files need to be compiled when 
  7082. you make a change.  You set up a special text file called a "description" file, 
  7083. or a "makefile", that tells NMAKE: 
  7084.  
  7085.      Which files depend on others 
  7086.      Which commands, such as compile and link commands, need to be carried out 
  7087.       to bring your program up-to-date 
  7088.  
  7089.  This use of NMAKE is only one example of its power.  By building suitable 
  7090.  description files, you can use NMAKE to 
  7091.  
  7092.      Make backups 
  7093.      Configure data files 
  7094.      Run programs when data files are modified 
  7095.  
  7096.  
  7097. ΓòÉΓòÉΓòÉ 18.2. Running NMAKE ΓòÉΓòÉΓòÉ
  7098.  
  7099. Run NMAKE by typing NMAKE on the operating-system command line.  Supply input 
  7100. to NMAKE by either of two methods: 
  7101.  
  7102.      Enter the input directly on the command line. 
  7103.      Put your input into a command file (a text file, also called a response 
  7104.       file) and enter the file name on the command line. 
  7105.  
  7106.  Press CTRL+C at any time during an NMAKE run to return to the operating 
  7107.  system. 
  7108.  
  7109.  Note:  Under the OS/2 operating system, do not use the ampersand character (&) 
  7110.         to combine the NMAKE command with the CD, CHDIR, or SET command. 
  7111.  
  7112.  
  7113. ΓòÉΓòÉΓòÉ 18.2.1. Using the Command Line ΓòÉΓòÉΓòÉ
  7114.  
  7115. When using NMAKE at the command line, keep the following in mind: 
  7116.  
  7117.      All fields are optional. 
  7118.      If the /F option (Specify Description File) is specified, NMAKE uses the 
  7119.       description file provided with the /F option. Otherwise, NMAKE will look 
  7120.       in the current directory for a description file named MAKEFILE. 
  7121.  
  7122.  
  7123. ΓòÉΓòÉΓòÉ 18.2.1.1. Command-Line Syntax ΓòÉΓòÉΓòÉ
  7124.  
  7125. NMAKE [options] [macrodefinitions] [targets] [/F filename]
  7126.  
  7127.  <options> 
  7128.       Specifies options that modify NMAKE's actions. 
  7129.  
  7130.  <macrodefinitions> 
  7131.       Lists macro definitions for NMAKE to use.  Macro definitions that contain 
  7132.       spaces must be enclosed by double quotation marks. 
  7133.  
  7134.  <targets> 
  7135.       Specifies the names of one or more target files to build. If you do not 
  7136.       list any targets, NMAKE builds the first target in the description file. 
  7137.  
  7138.  /F <filename> 
  7139.       Gives the name of the description file where you specify file 
  7140.       dependencies and which commands to execute when a file is out-of-date. 
  7141.  
  7142.  The following example: 
  7143.  
  7144.   NMAKE /S "program = flash" SORT.EXE SEARCH.EXE
  7145.  
  7146.      Invokes NMAKE with the /S option 
  7147.      Defines a macro, assigning the string "flash" to the macro "program" 
  7148.      Specifies two targets:  SORT.EXE and SEARCH.EXE 
  7149.  
  7150.  By default, NMAKE uses the file named MAKEFILE as the description file. 
  7151.  
  7152.  
  7153. ΓòÉΓòÉΓòÉ 18.2.1.2. Command-Line Help ΓòÉΓòÉΓòÉ
  7154.  
  7155. To display NMAKE help, type NMAKE /? at the prompt.  The appropriate copyright 
  7156. statement appears, along with the following: 
  7157.  
  7158. Usage:
  7159.     NMAKE @commandfile
  7160.     NMAKE /help
  7161.     NMAKE [/nologo] [/acdeinpqrst?] [/f makefile] [/x stderrfile] 
  7162.  
  7163.     [macrodefs][targets]
  7164.  
  7165. Where the options stand for
  7166.  /a    force All targets to be built
  7167.  /c    Cryptic mode; suppress sign-on banner & warning messages
  7168.  /d    Display modification dates
  7169.  /e    Environment variables override macros in the makefile
  7170.  /i    Ignore exit codes of commands invoked
  7171.  /n    No execute mode; display commands only
  7172.  /p    Print macro definitions & target descriptions
  7173.  /q    Query if target is up to date; for use in batch files
  7174.  /r    inference Rules from 'tools.ini' to be ignored
  7175.  /s    Silent execution of commands
  7176.  /t    Touch targets with current date & time
  7177.  /?    Help message
  7178.  /help  Help message
  7179.  /nologo Do not display sign-on banner
  7180.  
  7181.  
  7182. ΓòÉΓòÉΓòÉ 18.2.2. Using NMAKE Command Files ΓòÉΓòÉΓòÉ
  7183.  
  7184. A command file is a response file used to extend command-line input to NMAKE. 
  7185.  
  7186. You can split input to NMAKE between the command line and a command file. Use 
  7187. the name of a command file (preceded by @) where you normally type the input 
  7188. information on the command line. 
  7189.  
  7190. Why Use a Command File? 
  7191.  
  7192. Use a command file for: 
  7193.  
  7194.      Complex and long commands you type frequently 
  7195.      Strings of command-line arguments, such as macro definitions, that exceed 
  7196.       the limit for command-line length 
  7197.  
  7198.       Note:  A command file is not the same as a description file. For 
  7199.              information about description files, see Description Files 
  7200.  
  7201.  Command-File Syntax 
  7202.  
  7203.  To provide input to NMAKE with a command file, type 
  7204.  
  7205.   NMAKE @commandfile
  7206.  
  7207.  For the <commandfile> parameter, enter the name of a file containing the same 
  7208.  information as is normally entered on the command line. 
  7209.  
  7210.  NMAKE treats line breaks that occur between arguments as spaces. Macro 
  7211.  definitions can span multiple lines if you end each line except the last with 
  7212.  a backslash (\).  Macro definitions that contain spaces must be enclosed by 
  7213.  quotation marks, just as if they were entered directly on the command line. 
  7214.  
  7215.  Example 
  7216.  
  7217.  The following is a command file called UPDATE: 
  7218.  
  7219.   /S "program \
  7220.   = flash" SORT.EXE SEARCH.EXE
  7221.  
  7222.  You can use this command file by typing the following command: 
  7223.  
  7224.   NMAKE @UPDATE
  7225.  
  7226.  This runs NMAKE using: 
  7227.  
  7228.      The /S option 
  7229.      The macro definition "program = flash" 
  7230.      The targets specified as SORT.EXE and SEARCH.EXE 
  7231.      The description file, MAKEFILE, by default 
  7232.  
  7233.  Note that the backslash allows the macro definition to span two lines. 
  7234.  
  7235.  
  7236. ΓòÉΓòÉΓòÉ 18.3. Options ΓòÉΓòÉΓòÉ
  7237.  
  7238. The following describes the options you can use with NMAKE. 
  7239.  
  7240. Keep the following in mind when using these options: 
  7241.  
  7242.      Option characters are not case-sensitive;  /I and /i are equivalent. 
  7243.      You can use either a slash or a dash before the option characters;  -a 
  7244.       and /a are equivalent. 
  7245.  
  7246.  
  7247. ΓòÉΓòÉΓòÉ 18.3.1. Produce Error File (/X) ΓòÉΓòÉΓòÉ
  7248.  
  7249. Syntax: /X stderrfile 
  7250.  
  7251. This option produces a standard error file. 
  7252.  
  7253.  
  7254. ΓòÉΓòÉΓòÉ 18.3.2. Build All Targets (/A) ΓòÉΓòÉΓòÉ
  7255.  
  7256. Syntax: /A 
  7257.  
  7258. This option builds all specified targets, even if they are not out-of-date with 
  7259. respect to their dependent files. 
  7260.  
  7261. See Description Files. 
  7262.  
  7263.  
  7264. ΓòÉΓòÉΓòÉ 18.3.3. Suppress Messages (/C) ΓòÉΓòÉΓòÉ
  7265.  
  7266. Syntax: /C 
  7267.  
  7268. This option suppresses display of the NMAKE sign-on banner, non-fatal error 
  7269. messages, and warning messages.  To suppress the sign-on banner without 
  7270. suppressing other messages, use the /NOLOGO option. 
  7271.  
  7272.  
  7273. ΓòÉΓòÉΓòÉ 18.3.4. Display Modification Dates (/D) ΓòÉΓòÉΓòÉ
  7274.  
  7275. Syntax: /D 
  7276.  
  7277. This option displays the modification date of each file when the dates of 
  7278. target and dependent files are checked. 
  7279.  
  7280. See Description Files. 
  7281.  
  7282.  
  7283. ΓòÉΓòÉΓòÉ 18.3.5. Override Environment Variables (/E) ΓòÉΓòÉΓòÉ
  7284.  
  7285. Syntax: /E 
  7286.  
  7287. This option disables inherited macro redefinition. 
  7288.  
  7289. NMAKE inherits all current environment variables as macros, which can be 
  7290. redefined in a description file. The /E option disables any redefinition - the 
  7291. inherited macro always has the value of the environment variable. 
  7292.  
  7293.  
  7294. ΓòÉΓòÉΓòÉ 18.3.6. Specify Description File (/F) ΓòÉΓòÉΓòÉ
  7295.  
  7296. Syntax: /F filename 
  7297.  
  7298. This option specifies <filename> as the name of the description file to use. 
  7299. If a dash (-) is entered instead of a file name, NMAKE reads a description file 
  7300. from the standard input device, typically the keyboard. 
  7301.  
  7302. If a file name is not specified, it defaults to MAKEFILE. 
  7303.  
  7304.  
  7305. ΓòÉΓòÉΓòÉ 18.3.7. Display Help (/HELP or /?) ΓòÉΓòÉΓòÉ
  7306.  
  7307. Syntax:   /HELP    OR   /? 
  7308.  
  7309. This option displays a brief summary of NMAKE syntax. 
  7310.  
  7311.  
  7312. ΓòÉΓòÉΓòÉ 18.3.8. Ignore Exit Codes (/I) ΓòÉΓòÉΓòÉ
  7313.  
  7314. Syntax: /I 
  7315.  
  7316. This option ignores exit codes (also called error level or return codes) 
  7317. returned by programs such as compilers or linkers called by NMAKE.  If this 
  7318. option is not specified, NMAKE ends when any program returns a nonzero exit 
  7319. code. 
  7320.  
  7321.  
  7322. ΓòÉΓòÉΓòÉ 18.3.9. Display Commands (/N) ΓòÉΓòÉΓòÉ
  7323.  
  7324. Syntax: /N 
  7325.  
  7326. This option causes NMAKE commands to be displayed but not executed.  Use the /N 
  7327. option to: 
  7328.  
  7329.      Check which targets are out-of-date with respect to their dependents 
  7330.  
  7331.      Debug description files 
  7332.  
  7333.  
  7334. ΓòÉΓòÉΓòÉ 18.3.10. Suppress Sign-On Banner (/NOLOGO) ΓòÉΓòÉΓòÉ
  7335.  
  7336. Syntax: /NOLOGO 
  7337.  
  7338. This option suppresses the sign-on banner display when NMAKE is started.  If 
  7339. you want to suppress non fatal error messages and warnings as well, use the 
  7340. suppress messages (/C) option. 
  7341.  
  7342.  
  7343. ΓòÉΓòÉΓòÉ 18.3.11. Print Macro and Target Definitions (/P) ΓòÉΓòÉΓòÉ
  7344.  
  7345. Syntax: /P 
  7346.  
  7347. This option writes all macro definitions and target definitions. Output is sent 
  7348. to the standard output device (typically the display). 
  7349.  
  7350.  
  7351. ΓòÉΓòÉΓòÉ 18.3.12. Return Exit Code (/Q) ΓòÉΓòÉΓòÉ
  7352.  
  7353. Syntax: /Q 
  7354.  
  7355. This option causes NMAKE to return either of the following: 
  7356.  
  7357.      A 0 exit code if all targets built during an NMAKE run are up-to-date 
  7358.      A nonzero exit code if they are not up-to-date 
  7359.  Use this option to run NMAKE from within a batch file. 
  7360.  
  7361.  
  7362. ΓòÉΓòÉΓòÉ 18.3.13. Ignore TOOLS.INI File (/R) ΓòÉΓòÉΓòÉ
  7363.  
  7364. Syntax: /R 
  7365.  
  7366. This option ignores the following: 
  7367.  
  7368.      All inference rules and macros contained in the TOOLS.INI file 
  7369.      All predefined inference rules and macros 
  7370.  
  7371.  
  7372. ΓòÉΓòÉΓòÉ 18.3.14. Suppress Command Display (/S) ΓòÉΓòÉΓòÉ
  7373.  
  7374. Syntax: /S 
  7375.  
  7376. This option suppresses the display of commands as they are executed by NMAKE. 
  7377. It does not suppress the display of messages generated by the commands 
  7378. themselves. 
  7379.  
  7380. The /N command (Display Commands) takes precedence over the /S option.  If you 
  7381. use /N and /S together, commands are displayed but not executed. 
  7382.  
  7383.  
  7384. ΓòÉΓòÉΓòÉ 18.3.15. Change Target Modification Dates (/T) ΓòÉΓòÉΓòÉ
  7385.  
  7386. Syntax: /T 
  7387.  
  7388. This option changes or "touches" the modification dates for out-of-date target 
  7389. files to the current date. No commands are executed, and the target file is 
  7390. left unchanged. 
  7391.  
  7392.  
  7393. ΓòÉΓòÉΓòÉ 18.4. Description Files ΓòÉΓòÉΓòÉ
  7394.  
  7395. NMAKE uses a description file to determine what to do.  In its simplest form, a 
  7396. description file tells NMAKE which files depend on others and which commands 
  7397. need to be executed if a file changes. 
  7398.  
  7399. A description file looks like this: 
  7400.  
  7401.  
  7402. targets...: dependents...Γöé
  7403.      command             Γöé ΓöÇΓöÇdescription block
  7404.         :                Γöé
  7405.  
  7406. targets... : dependents...
  7407.      command
  7408.  
  7409.  
  7410. ΓòÉΓòÉΓòÉ 18.4.1. Description Blocks ΓòÉΓòÉΓòÉ
  7411.  
  7412. A dependent relationship between files is defined in a description block.  A 
  7413. "description block" indicates the relationship among various parts of the 
  7414. program.  It contains commands to bring all components up to date.  The 
  7415. description file can contain up to 1024 description blocks. 
  7416.  
  7417. Description File                       Description Block
  7418. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7419. Γöé Description  Γöé     Γöé                Γöé                           Γöé
  7420. Γöé   Block 1    Γöé     Γöé                Γöétargets... : dependents... Γöé
  7421. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                Γöé command                   Γöé
  7422. Γöé Descr Blk 2  Γöé                      Γöé command                   Γöé
  7423. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                Γöé command                   Γöé
  7424. Γöé      :       Γöé     Γöé                Γöé    :                      Γöé
  7425. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ     Γöé                Γöé                           Γöé
  7426. Γöé Descr Blk n  Γöé     Γöé                Γöé                           Γöé
  7427. Γöé              Γöé     Γöé                Γöé                           Γöé
  7428. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7429.  
  7430.  
  7431. ΓòÉΓòÉΓòÉ 18.4.2. Special Features ΓòÉΓòÉΓòÉ
  7432.  
  7433. The following are special features of description blocks: 
  7434.  
  7435.      Description files can contain macro definitions and use macros in 
  7436.       description blocks. Macros allow easy substitution of one text string for 
  7437.       another. 
  7438.  
  7439.      Description files can contain inference rules.  Inference rules allow 
  7440.       NMAKE to infer which commands to execute based on the file-name 
  7441.       extensions used for targets and dependents. 
  7442.  
  7443.      You can specify directories for NMAKE to search for dependent files by 
  7444.       using the following syntax: 
  7445.  
  7446.             targets : {directory1;directory2...}dependent ...
  7447.  
  7448.       NMAKE searches the current directory first, then <directory1>, 
  7449.       <directory2>, and so on. 
  7450.  
  7451.      A command can be placed on the same line as the target and dependent 
  7452.       files by using a semicolon (;) as depicted below: 
  7453.  
  7454.             targets... : dependents... ; command
  7455.  
  7456.      A long command can span several lines if each line ends with a backslash 
  7457.       ( \ ): 
  7458.  
  7459.             command \
  7460.               continuation of command
  7461.  
  7462.      The execution of a command can be modified if you precede the command 
  7463.       with special characters. 
  7464.  
  7465.      If you do not specify a command in a description block, NMAKE looks for 
  7466.       an inference rule to build the target. 
  7467.  
  7468.      DOS and OS/2 wildcard characters (* and ?) can be used in description 
  7469.       blocks.  For example, the following description block compiles all source 
  7470.       files with the .C extension: 
  7471.  
  7472.             ASTRO.EXE : *.C
  7473.               ICC $**
  7474.  
  7475.      NMAKE will expand the *.C specification into the complete list of C files 
  7476.       in the current directory.  $** is a complete list of dependents specified 
  7477.       for the current target. 
  7478.  
  7479.      NMAKE uses several punctuation characters in its syntax. To use one of 
  7480.       these characters as a literal character, place an escape character ( ^ ) 
  7481.       in front of it. For a list of punctuation characters, see Escape 
  7482.       Characters. 
  7483.  
  7484.      Normally a target file can appear in only one description block.  A 
  7485.       special syntax allows you to use a target in several description blocks. 
  7486.  
  7487.      A special syntax allows you to determine the drive, path, base name, and 
  7488.       extension of the first dependent file in a description block. 
  7489.  
  7490.  
  7491. ΓòÉΓòÉΓòÉ 18.4.3. Targets in Several Description Blocks ΓòÉΓòÉΓòÉ
  7492.  
  7493. Using a file as a target in more than one description block causes NMAKE to 
  7494. end.  You can overcome this limitation by using two colons (::) as the 
  7495. target/dependent separator instead of one colon. 
  7496.  
  7497. The following description block is permissible: 
  7498.  
  7499. X :: A
  7500.   command
  7501. X :: B
  7502.   command
  7503.  
  7504. The following causes NMAKE to end: 
  7505.  
  7506. X : A
  7507.   command
  7508. X : B
  7509.   command
  7510.  
  7511. It is permissible to use single colons if the target/dependent lines are 
  7512. grouped above the same commands. The following is permissible: 
  7513.  
  7514. X : A
  7515. X : B
  7516.   command
  7517. Double Colon (::) Target/Dependent Separator Example 
  7518.  
  7519. TARGET.LIB :: A.ASM B.ASM C.ASM
  7520.   ML A.ASM B.ASM C.ASM
  7521.   LIB TARGET -+A.OBJ -+B.OBJ -+C.OBJ;
  7522.  
  7523. TARGET.LIB :: D.C E.C
  7524.   ICC /C D.C E.C
  7525.   LIB TARGET -+D.OBJ -+E.OBJ;
  7526.  
  7527. These two description blocks update the library named TARGET.LIB.  If any of 
  7528. the assembly-language files have changed more recently than the library file, 
  7529. NMAKE executes the commands in the first block to assemble the source files and 
  7530. update the library.  Similarly, if any of the C-language files have changed, 
  7531. NMAKE executes the second group of commands to compile the C files and update 
  7532. the library. 
  7533.  
  7534.  
  7535. ΓòÉΓòÉΓòÉ 18.5. Macros ΓòÉΓòÉΓòÉ
  7536.  
  7537. Macros provide a convenient way to replace one string with another in the 
  7538. description file.  The text is automatically replaced each time NMAKE is run. 
  7539. This feature makes it easy to change text throughout the description file 
  7540. without having to edit every line that uses the text.  Two common uses of 
  7541. macros are: 
  7542.  
  7543.      To create a standard description file for several projects. The macro 
  7544.       represents the file names in commands.  These file names are defined when 
  7545.       you run NMAKE.  When you switch to a different project, changing the 
  7546.       macro changes the file names NMAKE uses throughout the description file. 
  7547.  
  7548.      To control the options that NMAKE passes to the compiler, assembler, or 
  7549.       linker.  When using a macro to specify the options, you can quickly 
  7550.       change the options throughout the description file in one easy step. 
  7551.  
  7552.  A macro can be defined: 
  7553.  
  7554.      In a description file 
  7555.      On the command line 
  7556.      In TOOLS.INI 
  7557.      Through inheritance from environment variables 
  7558.  
  7559.  
  7560. ΓòÉΓòÉΓòÉ 18.5.1. Example ΓòÉΓòÉΓòÉ
  7561.  
  7562. program = FLASH
  7563. c = LINK
  7564. options =
  7565.  
  7566. $(program).EXE : $(program).OBJ
  7567.   $c $(options) $(program).OBJ;
  7568.  
  7569. The example above defines three macros.  The description block executes the 
  7570. following commands: 
  7571.  
  7572. FLASH.EXE : FLASH.OBJ
  7573.   LINK  FLASH.OBJ;
  7574.  
  7575.  
  7576. ΓòÉΓòÉΓòÉ 18.5.2. Special Features ΓòÉΓòÉΓòÉ
  7577.  
  7578. Macros have the following special features: 
  7579.  
  7580.      When using a macro, you can substitute text in the macro itself. 
  7581.      Several macros have been predefined for special purposes. 
  7582.      If a macro is defined more than once, precedence rules govern which 
  7583.       definition is used. 
  7584.      You can also put macros into your TOOLS.INI file. 
  7585.  
  7586.  
  7587. ΓòÉΓòÉΓòÉ 18.5.3. Macros in a Description File ΓòÉΓòÉΓòÉ
  7588.  
  7589. Before using a macro, you need to define it, either on the NMAKE command line 
  7590. or in your description file.  Description-file macro definitions look like 
  7591. this: 
  7592.  
  7593. macroname = macrostring
  7594.  
  7595. Macro names can be any combination of alphanumeric characters and the 
  7596. underscore character ( _ ), and they are case-sensitive. A macro string can be 
  7597. any string of characters. 
  7598.  
  7599. The first character of the macro name must be the first character on the line. 
  7600. NMAKE ignores any spaces before or after the equal sign ( = ). 
  7601.  
  7602. The macro string can be a null string and can contain embedded spaces. Do not 
  7603. enclose the macro string in quotation marks; quotation marks are used only when 
  7604. you define macros on the command line. 
  7605.  
  7606.  
  7607. ΓòÉΓòÉΓòÉ 18.5.4. Macros on the Command Line ΓòÉΓòÉΓòÉ
  7608.  
  7609. Before using a macro, you need to define it, either on the NMAKE command line 
  7610. or in your description file.  Command-line macro definitions look like this: 
  7611.  
  7612. macroname=macrostring
  7613.  
  7614. No spaces can surround the equal sign.  If you embed spaces, NMAKE might 
  7615. misinterpret your macro.  If your macro string contains embedded spaces, 
  7616. enclose it in double quotation marks ( " ) like this: 
  7617.  
  7618. macroname="macro string"
  7619.  
  7620. or simply enclose the entire macro definition in double quotation marks ( " ) 
  7621. like this: 
  7622.  
  7623. "macroname = macro string"
  7624.  
  7625. Macro names can be any combination of alphanumeric characters and the 
  7626. underscore character ( _ ), and they are case-sensitive. A macro string can be 
  7627. any string of characters or a null string. 
  7628.  
  7629.  
  7630. ΓòÉΓòÉΓòÉ 18.5.5. Inherited Macros ΓòÉΓòÉΓòÉ
  7631.  
  7632. NMAKE inherits all current environment variables as macros. For example, if you 
  7633. have a PATH environment variable defined as PATH = C:\TOOLS\BIN, the string 
  7634. C:\TOOLS\BIN  is substituted when you use PATH in the description file. 
  7635.  
  7636. You can redefine inherited macros by including a line such as the example above 
  7637. in a description file.  While NMAKE is running, the macro takes on the 
  7638. redefined definition.  When NMAKE terminates, however, the environment variable 
  7639. resumes its original value. 
  7640.  
  7641. The Override Environment Variables (/E) option disables inherited macro 
  7642. redefinition. If you use this option, NMAKE ignores any attempt to redefine an 
  7643. inherited macro. 
  7644.  
  7645.  
  7646. ΓòÉΓòÉΓòÉ 18.5.6. Defined Macros ΓòÉΓòÉΓòÉ
  7647.  
  7648. After you have defined a macro, you can use it anywhere in your description 
  7649. file with the following syntax: 
  7650.  
  7651. $(macroname)
  7652.  
  7653. The parentheses are not required if the macro name is only one character long. 
  7654. To use a dollar sign ( $ ) without using a macro, enter two dollar signs ( $$ 
  7655. ), or use the caret ( ^ ) before the dollar sign as an escape character. 
  7656.  
  7657. When NMAKE runs, it replaces all occurrences of $(macroname) with the defined 
  7658. macro string. If the macro is undefined, nothing is substituted. After a macro 
  7659. is defined, you can cancel it only with the !UNDEF directive. 
  7660.  
  7661.  
  7662. ΓòÉΓòÉΓòÉ 18.5.7. Macro Substitutions ΓòÉΓòÉΓòÉ
  7663.  
  7664. Just as you use macros to substitute text within a description file, you use 
  7665. the following syntax to substitute text within a macro: 
  7666.  
  7667. $(macroname: string1 = string2)
  7668.  
  7669. Every occurrence of <string1> is replaced by <string2> in <macroname>.  Spaces 
  7670. between the colon and <string1> are considered part of <string1>.  If <string2> 
  7671. is a null string, all occurrences of <string1> are deleted from the macro.  The 
  7672. colon ( : ) must immediately follow <macroname>. 
  7673.  
  7674. Note:  The replacement of <string1> with <string2> in the macro is not a 
  7675.        permanent change.  If you use the macro again without a substitution, 
  7676.        you get the original unchanged macro. 
  7677.  
  7678.  Example 
  7679.  
  7680.   SOURCES = ONE.C TWO.C THREE.C
  7681.   PROGRAM.EXE : $(SOURCES:.C=.OBJ)
  7682.     LINK $**;
  7683.  
  7684.  The example above defines a macro called SOURCES, which contains the names of 
  7685.  three C source files.  With this macro, the target/dependent line substitutes 
  7686.  the .OBJ extension for the .C extension.  Thus, NMAKE executes the following 
  7687.  command: 
  7688.  
  7689.   LINK ONE.OBJ TWO.OBJ THREE.OBJ;
  7690.  
  7691.  Note:  $** is a special macro that translates to all dependent files for a 
  7692.         given target. 
  7693.  
  7694.  
  7695. ΓòÉΓòÉΓòÉ 18.6. Special Macros ΓòÉΓòÉΓòÉ
  7696.  
  7697. NMAKE predefines several macros.  The first six macros below return one or more 
  7698. file specifications for the files in the target/dependent line of a description 
  7699. block.  Except where noted, the file specification includes the path of the 
  7700. file, the base file name, and the file-name extension. 
  7701.  
  7702.  Macro          Value 
  7703.  
  7704.  $@             The specification of the target file. 
  7705.  
  7706.  $*             The base name (without extension) of the target file. Path 
  7707.                 information is also returned if the path was specified as part 
  7708.                 of the target file name. This macro cannot be used in a 
  7709.                 dependent list. 
  7710.  
  7711.  $**            The specifications of the dependent files. 
  7712.  
  7713.  $?             The specifications for only those dependent files that are 
  7714.                 out-of-date with respect to the targets. 
  7715.  
  7716.  $<             The specification of a single dependent file that is 
  7717.                 out-of-date with respect to the targets. This macro is used 
  7718.                 only in inference rules. 
  7719.  
  7720.  $$@            The file specification of the target that NMAKE is currently 
  7721.                 evaluating.  This is a dynamic dependency parameter, used only 
  7722.                 in dependent lists. 
  7723.  
  7724.  $(CC)          The string ICC, which is the command to run the C Set ++ 
  7725.                 Compiler.  You can redefine this macro to use a different 
  7726.                 command. 
  7727.  
  7728.  $(AS)          The string MASM, which is the command to run the Macro 
  7729.                 Assembler (MASM).  You can redefine this macro to use a 
  7730.                 different command. 
  7731.  
  7732.  $(MAKE)        The command name used to run NMAKE.  This macro is used to 
  7733.                 invoke NMAKE recursively.  If you redefine this macro, NMAKE 
  7734.                 issues a warning message. 
  7735.  
  7736.                 Note:  NMAKE executes the command line in which $(MAKE) 
  7737.                        appears, even if the display commands (/N) option is on. 
  7738.  
  7739.  $(MAKEFLAGS)   The NMAKE options currently in effect.  You cannot redefine 
  7740.                 this macro. 
  7741.  
  7742.  Note:  The special macros $** and $$@ are the only exceptions to the rule that 
  7743.         macro names longer than one character must be enclosed in parentheses. 
  7744.  
  7745.  You can append characters to any of the first six macros in this list to 
  7746.  modify the meaning of the macro. However, you cannot use macro substitutions 
  7747.  in these macros. 
  7748.  
  7749.  
  7750. ΓòÉΓòÉΓòÉ 18.6.1. Examples ΓòÉΓòÉΓòÉ
  7751.  
  7752. TRIG.LIB : SIN.OBJ COS.OBJ ARCTAN.OBJ
  7753.   !LIB TRIG.LIB -+$?;
  7754.  
  7755. In the example above, the macro $? represents the names of all dependent files 
  7756. that are out-of-date with respect to the target file.  The exclamation point ( 
  7757. ! ) preceding the LIB command causes NMAKE to execute the LIB command once for 
  7758. each dependent file in the list.  As a result of this description, the LIB 
  7759. command is executed up to three times, each time replacing a module with a 
  7760. newer version. 
  7761.  
  7762. DIR=C:\INCLUDE
  7763. $(DIR)\GLOBALS.H : GLOBALS.H
  7764.  COPY GLOBALS.H $@
  7765. $(DIR)\TYPES.H : TYPES.H
  7766.  COPY TYPES.H $@
  7767. $(DIR)\MACROS.H : MACROS.H
  7768.  COPY MACROS.H $@
  7769.  
  7770. The example above shows how to update a group of include files. Each of the 
  7771. files GLOBALS.H, TYPES.H, and MACROS.H in the directory C:\INCLUDE depends on 
  7772. its counterpart in the current directory.  If one of the include files is 
  7773. out-of-date, NMAKE replaces it with the file of the same name from the current 
  7774. directory. 
  7775.  
  7776. The following description file, which uses the special macro $$@, is 
  7777. equivalent: 
  7778.  
  7779. DIR=C:\INCLUDE
  7780. $(DIR)\GLOBALS.H $(DIR)\TYPES.H $(DIR)\MACROS.H : $$(@F)
  7781. !COPY $? $@
  7782.  
  7783. The special macro $$(@F) signifies the file name (without the path) of the 
  7784. current target. 
  7785.  
  7786. When NMAKE evaluates the description block, it evaluates the three targets, one 
  7787. at a time, with respect to their dependents.  Thus, NMAKE first checks whether 
  7788. C:\INCLUDE\GLOBALS.H is out-of-date compared with GLOBALS.H in the current 
  7789. directory.  If so, it executes the command to copy the dependent file GLOBALS.H 
  7790. to the target.  NMAKE repeats the procedure for the other two targets. 
  7791.  
  7792. Note that on the command line, the macro $? refers to the dependent for this 
  7793. target.  The macro $@ specifies the full file specification of the target file. 
  7794.  
  7795.  
  7796. ΓòÉΓòÉΓòÉ 18.6.2. File-Specification Parts ΓòÉΓòÉΓòÉ
  7797.  
  7798. A full file specification gives the base name of the file, the file-name 
  7799. extension, and the path.  The path provides the disk-drive identifier and the 
  7800. sequence of directories needed to locate the file on the disk. 
  7801.  
  7802. For example, the file specification: 
  7803.  
  7804. C:\SOURCE\PROG\SORT.OBJ
  7805.  
  7806. has the following parts: 
  7807.  
  7808. Path Name            C:\SOURCE\PROG
  7809. Base File Name       SORT
  7810. File-Name Extension  .OBJ
  7811.  
  7812.  
  7813. ΓòÉΓòÉΓòÉ 18.6.3. Characters That Modify Special Macros ΓòÉΓòÉΓòÉ
  7814.  
  7815. The following six macros all resolve to a file specification (or possibly 
  7816. several file specifications for $** and $?): 
  7817.  
  7818.      $*     $@     $**     $<     $?     $$@
  7819.  
  7820. You can append characters to any of these macros to modify the file name 
  7821. returned by the macro.  Depending on which character you use, parts of the full 
  7822. file specification are returned: 
  7823.  
  7824.                                Appended Character
  7825.      File Part Returned      D        F       B       R
  7826.  
  7827.      File Path               Yes      No      No      Yes
  7828.      Base File Name          No       Yes     Yes     Yes
  7829.      File Name Extension     No       Yes     No      No
  7830.  
  7831.  
  7832. ΓòÉΓòÉΓòÉ 18.6.4. Modified Special Macros Example ΓòÉΓòÉΓòÉ
  7833.  
  7834. If the macro $@ has the value 
  7835.  
  7836. C:\SOURCE\PROG\SORT.OBJ
  7837.  
  7838. the following values are returned for the modified macro: 
  7839.  
  7840.  Macro     Value 
  7841.  $(@D)     C:\SOURCE\PROG 
  7842.  $(@F)     SORT.OBJ 
  7843.  $(@B)     SORT 
  7844.  $(@R)     C:\SOURCE\PROG\SORT 
  7845.  
  7846.  Note:  Modified macros are always longer than a single character - they must 
  7847.         be enclosed by parentheses when used. 
  7848.  
  7849.  
  7850. ΓòÉΓòÉΓòÉ 18.6.5. Macro Precedence Rules ΓòÉΓòÉΓòÉ
  7851.  
  7852. When the same macro is defined in more than one place, the definition with the 
  7853. highest priority is used: 
  7854.  
  7855.    1. (Highest) Command line 
  7856.  
  7857.    2. Description file 
  7858.  
  7859.    3. TOOLS.INI file 
  7860.  
  7861.    4. Environment variables 
  7862.  
  7863.    5. (Lowest) Predefined macros (such as CC and AS) 
  7864.  
  7865.  If you invoke NMAKE with the Overriding Macro Definitions (/E) option, macros 
  7866.  defined by environment variables take precedence over those defined in a 
  7867.  description file. 
  7868.  
  7869.  
  7870. ΓòÉΓòÉΓòÉ 18.7. Inference Rules ΓòÉΓòÉΓòÉ
  7871.  
  7872. Inference rules are templates from which NMAKE infers what to do with a 
  7873. description block when no commands are given.  Only those extensions defined in 
  7874. a .SUFFIXES list can have inference rules.  The extensions .C, .OBJ, .ASM, and 
  7875. .EXE are automatically included in .SUFFIXES. 
  7876.  
  7877. When NMAKE encounters a description block with no commands, it looks for an 
  7878. inference rule that specifies how to create the target from the dependent 
  7879. files, given the two file extensions. Similarly, if a dependent file does not 
  7880. exist, NMAKE looks for an inference rule that specifies how to create the 
  7881. dependent file from another file with the same base name. 
  7882.  
  7883. NMAKE applies an inference rule only if the base name of the file it is trying 
  7884. to create matches the base name of a file that already exists. 
  7885.  
  7886. In effect, inference rules are useful only when there is a one-to-one 
  7887. correspondence between the files with the "from" extension and the files with 
  7888. the "to" extension.  You cannot, for example, define an inference rule that 
  7889. inserts a number of modules into a library. 
  7890.  
  7891. The use of inference rules eliminates the need to put the same commands in 
  7892. several description blocks.  For example, you can use inference rules to 
  7893. specify a single ICC command that changes any C source file (with a .C 
  7894. extension) to an object file (with a .OBJ extension). 
  7895.  
  7896. You define an inference rule by including text of the following form in your 
  7897. description file or in your TOOLS.INI file - see "Special Features". 
  7898.  
  7899. .fromext.toext:
  7900. commands
  7901. :
  7902.  
  7903. The elements of the inference rule are: 
  7904.  
  7905.  <fromext> 
  7906.       The file-name extension for dependent files to build a target 
  7907.  <toext> 
  7908.       The file-name extension for target files to be built 
  7909.  <commands> 
  7910.       The commands to build the <toext> target from the <fromext> dependent. 
  7911.  
  7912.  For example, an inference rule to convert C source files (with the .C 
  7913.  extension) to C object files (with the .OBJ extension) is 
  7914.  
  7915.   .C.OBJ:
  7916.    ICC $<
  7917.  
  7918.  Note:  The special macro $< represents the name of a dependent file that is 
  7919.         out-of-date relative to the target. 
  7920.  
  7921.  
  7922. ΓòÉΓòÉΓòÉ 18.7.1. Special Features ΓòÉΓòÉΓòÉ
  7923.  
  7924.      You can specify a path where NMAKE should look for target and dependent 
  7925.       files used in inference rules. 
  7926.  
  7927.      Inference rules are predefined for compiling and linking C programs, and 
  7928.       for assembling programs. 
  7929.  
  7930.      NMAKE looks for inference rules in the TOOLS.INI file if it cannot find a 
  7931.       rule in a description file. 
  7932.  
  7933.      Only those extensions defined in a .SUFFIXES list can have inference 
  7934.       rules.  The extensions .C, .OBJ, .ASM, and .EXE are automatically 
  7935.       included in .SUFFIXES. 
  7936.  
  7937.  
  7938. ΓòÉΓòÉΓòÉ 18.7.2. Example ΓòÉΓòÉΓòÉ
  7939.  
  7940. .OBJ.EXE:
  7941.   LINK $<;
  7942.  
  7943. EXAMPLE1.EXE: EXAMPLE1.OBJ
  7944.  
  7945. EXAMPLE2.EXE: EXAMPLE2.OBJ
  7946.   LINK /CO EXAMPLE2,,,LIBV3.LIB
  7947.  
  7948. The first line above defines an inference rule that causes the LINK command to 
  7949. create an executable file whenever a change is made in the corresponding object 
  7950. file.  The file name in the inference rule is specified with the special macro 
  7951. $< so that the rule applies to any .OBJ file with an out-of-date executable 
  7952. file. 
  7953.  
  7954. When NMAKE does not find any commands in the first description block, it checks 
  7955. for a rule that might apply and finds the rule defined on the first two lines 
  7956. of the description file.  NMAKE applies the rule, replacing $< with 
  7957. EXAMPLE1.OBJ when it executes the command, so that the LINK command becomes 
  7958.  
  7959. LINK EXAMPLE1.OBJ;
  7960.  
  7961. NMAKE does not search for an inference rule when examining the second 
  7962. description block, because a command is explicitly given. 
  7963.  
  7964.  
  7965. ΓòÉΓòÉΓòÉ 18.7.3. Inference-Rule Path Specifications ΓòÉΓòÉΓòÉ
  7966.  
  7967. When defining an inference rule, you can indicate to NMAKE where to look for 
  7968. target and dependent files.  Use the following syntax: 
  7969.  
  7970. {frompath}.fromext{topath}.toext
  7971.  commands
  7972.  :
  7973.  
  7974. NMAKE looks in the directory specified by <frompath> for files with the 
  7975. <fromext> extension.  It executes the commands to build files with the <toext> 
  7976. extension in the directory specified by <topath>. 
  7977.  
  7978.  
  7979. ΓòÉΓòÉΓòÉ 18.7.4. Predefined Inference Rules ΓòÉΓòÉΓòÉ
  7980.  
  7981. NMAKE predefines three inference rules: 
  7982.  
  7983. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7984. ΓöéInference Rule      ΓöéDefault             ΓöéCommand Action      Γöé
  7985. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7986. Γöé.C.OBJ              Γöé$(CC) $(CFLAGS) /C  ΓöéICC /C $*.C         Γöé
  7987. Γöé                    Γöé$*.C                Γöé                    Γöé
  7988. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7989. Γöé.C.EXE              Γöé$(CC) $(CFLAGS) $*.CΓöéICC $*.C            Γöé
  7990. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7991. Γöé.ASM.OBJ            Γöé$(AS) $(AFLAGS) $*; ΓöéMASM $*;            Γöé
  7992. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7993. NOTE 
  7994.  
  7995.    1. The first two rules automatically compile and link C programs. 
  7996.  
  7997.    2. The last rule automatically assembles programs. 
  7998.  
  7999.  
  8000. ΓòÉΓòÉΓòÉ 18.8. Directives ΓòÉΓòÉΓòÉ
  8001.  
  8002. Using directives, you can construct description files similar to batch files. 
  8003. NMAKE provides directives that: 
  8004.  
  8005.      Conditionally execute commands 
  8006.      Display error messages 
  8007.      Include the contents of other files 
  8008.      Turn some NMAKE options on or off 
  8009.  
  8010.  Each directive begins with an exclamation point ( ! ) in the first column of 
  8011.  the description file.  Spaces can be placed between the exclamation point and 
  8012.  the directive keyword. 
  8013.  
  8014.  The list below describes the directives: 
  8015.  
  8016.  !IF <expression> 
  8017.       Executes the statements between the !IF keyword and the next !ELSE or 
  8018.       !ENDIF directive if <expression> evaluates to a nonzero value. 
  8019.  
  8020.       The <expression> used with the !IF directive can consist of integer 
  8021.       constants, string constants, or exit codes returned by programs.  Integer 
  8022.       constants can use the C unary operators for numerical negation ( - ), 
  8023.       one's complement ( ~ ), and logical negation ( ! ).  You can also use any 
  8024.       of the C binary operators listed below: 
  8025.  
  8026.            Operator       Description 
  8027.  
  8028.       +                   Addition 
  8029.  
  8030.       -                   Subtraction 
  8031.  
  8032.       *                   Multiplication 
  8033.  
  8034.       /                   Division 
  8035.  
  8036.       %                   Modulus 
  8037.  
  8038.       &                   Bitwise AND 
  8039.  
  8040.       |                   Bitwise OR 
  8041.  
  8042.       ^^                  Bitwise XOR 
  8043.  
  8044.       &&                  Logical AND 
  8045.  
  8046.       ||                  Logical OR 
  8047.  
  8048.       <<                  Left shift 
  8049.  
  8050.       >>                  Right shift 
  8051.  
  8052.       ==                  Equality 
  8053.  
  8054.       !=                  Inequality 
  8055.  
  8056.       <                   Less than 
  8057.  
  8058.       >                   Greater than 
  8059.  
  8060.       <=                  Less than or equal to 
  8061.  
  8062.       >=                  Greater than or equal to 
  8063.  
  8064.       Note: 
  8065.  
  8066.       You can use parentheses to group expressions. 
  8067.  
  8068.       Values are assumed to be decimal values unless specified with a leading 0 
  8069.       (octal) or leading 0x (hexadecimal). 
  8070.  
  8071.       Strings are enclosed by quotation marks ( " ).  You can use the equality 
  8072.       ( ==) and inequality ( != ) operators to compare two strings. 
  8073.  
  8074.       You can invoke a program in an expression by enclosing the program name 
  8075.       in square brackets ( [ ] ).  The exit code returned by the program is 
  8076.       used in the expression. 
  8077.  
  8078.  !ELSE 
  8079.       Executes the statements between the !ELSE and !ENDIF directives if the 
  8080.       statements preceding the !ELSE directive were not executed. 
  8081.  
  8082.  !ENDIF 
  8083.       Marks the end of the !IF, !IFDEF, or !IFNDEF block of statements. 
  8084.  
  8085.  !IFDEF <macroname> 
  8086.       Executes the statements between the !IFDEF keyword and the next !ELSE or 
  8087.       !ENDIF directive if <macroname> is defined in the description file.  If a 
  8088.       macro has been defined as null, it is still considered to be defined. 
  8089.  
  8090.  !IFNDEF <macroname> 
  8091.       Executes the statements between the !IFNDEF keyword and the next !ELSE or 
  8092.       !ENDIF directive if <macroname> is not defined in the description file. 
  8093.  
  8094.  !UNDEF <macroname> 
  8095.       Undefines a previously defined macro. 
  8096.  
  8097.  !ERROR <text> 
  8098.       Prints text and then stops execution. 
  8099.  
  8100.  !INCLUDE <filename> 
  8101.       Reads and evaluates the file <filename> before continuing with the 
  8102.       current description file.  If <filename> is enclosed by angle brackets 
  8103.       (<>), NMAKE searches for the file in the directories specified by the 
  8104.       INCLUDE macro; otherwise, it looks only in the current directory.  The 
  8105.       INCLUDE macro is initially set to the value of the INCLUDE environment 
  8106.       variable. 
  8107.  
  8108.  !CMDSWITCHES {+|-}<opt> 
  8109.       Turns on or off one of four NMAKE options:  /D, /I, /N, and /S.  If no 
  8110.       options are specified, the options are reset to the values they had when 
  8111.       NMAKE was started. To turn an option on, precede it with a plus sign (+); 
  8112.       to turn it off, precede it with a minus sign (-). This directive updates 
  8113.       the MAKEFLAGS macro. 
  8114.  
  8115.       See Special Macros. 
  8116.  
  8117.  
  8118. ΓòÉΓòÉΓòÉ 18.8.1. Example ΓòÉΓòÉΓòÉ
  8119.  
  8120. !INCLUDE <INFRULES.TXT>
  8121. !CMDSWITCHES +D
  8122. WINNER.EXE:WINNER.OBJ
  8123. !IFDEF DEBUG
  8124. ! IF "$(DEBUG)"=="y"
  8125.      LINK /CO WINNER.OBJ;
  8126. ! ELSE
  8127.      LINK WINNER.OBJ;
  8128. ! ENDIF
  8129. !ELSE
  8130. ! ERROR Macro named DEBUG is not defined.
  8131. !ENDIF
  8132.  
  8133. The directives in this example do the following: 
  8134.  
  8135.      The !INCLUDE directive causes the file INFRULES.TXT to be read and 
  8136.       evaluated as if it were part of the description file. 
  8137.  
  8138.      The !CMDSWITCHES directive turns on the /D option, which displays the 
  8139.       dates of the files as they are checked. 
  8140.  
  8141.      If WINNER.EXE is out-of-date with respect to WINNER.OBJ, the !IFDEF 
  8142.       directive checks to see whether the macro DEBUG is defined.  If it is 
  8143.       defined, the !IF directive checks to see whether it is set to y.  If it 
  8144.       is, the linker is invoked with the /CO option; otherwise, it is invoked 
  8145.       without the /CO. If the DEBUG macro is not defined, the !ERROR directive 
  8146.       prints the message and NMAKE stops executing. 
  8147.  
  8148.  
  8149. ΓòÉΓòÉΓòÉ 18.8.2. Pseudotargets ΓòÉΓòÉΓòÉ
  8150.  
  8151. A pseudotarget is a target in a description block that is not a file.  Instead, 
  8152. it is a name that serves as a handle for building a group of files or executing 
  8153. a group of commands.  In the following example, UPDATE is a pseudotarget: 
  8154.  
  8155. UPDATE: *.*
  8156.   !copy $** A:\PRODUCT
  8157.  
  8158. When NMAKE evaluates a pseudotarget, it always considers the dependent files to 
  8159. be out-of-date.  In the description above, NMAKE copies each of the dependent 
  8160. files to the specified drive and directory. 
  8161.  
  8162. NMAKE predefines several pseudotargets for special purposes. 
  8163.  
  8164. See Predefined Pseudotargets. 
  8165.  
  8166.  
  8167. ΓòÉΓòÉΓòÉ 18.8.3. Predefined Pseudotargets ΓòÉΓòÉΓòÉ
  8168.  
  8169. NMAKE predefines several pseudotargets that provide special rules within a 
  8170. description file: 
  8171.  
  8172.  
  8173. ΓòÉΓòÉΓòÉ 18.8.3.1. .SILENT ΓòÉΓòÉΓòÉ
  8174.  
  8175. Syntax:  .SILENT : dependents... 
  8176.  
  8177. This pseudotarget suppresses the display of executed commands for a single 
  8178. description block.  The /S option does the same thing for all description 
  8179. blocks. 
  8180.  
  8181. See Suppress Command Display (/S). 
  8182.  
  8183.  
  8184. ΓòÉΓòÉΓòÉ 18.8.3.2. .IGNORE ΓòÉΓòÉΓòÉ
  8185.  
  8186. Syntax:  .IGNORE : dependents... 
  8187.  
  8188. This pseudotarget ignores exit codes returned by programs for a single 
  8189. description block.  The /I option does the same thing for all description 
  8190. blocks. 
  8191.  
  8192. See Ignore Exit Codes (/I). 
  8193.  
  8194.  
  8195. ΓòÉΓòÉΓòÉ 18.8.3.3. .SUFFIXES ΓòÉΓòÉΓòÉ
  8196.  
  8197. Syntax:  .SUFFIXES : extensions... 
  8198.  
  8199. This pseudotarget defines file extensions to try when NMAKE needs to build a 
  8200. target file for which no dependent files are specified. NMAKE searches the 
  8201. current directory for a file with the same name as the target file and an 
  8202. extension in <extensions...>.  If NMAKE finds such a file, and if an inference 
  8203. rule applies to the file, NMAKE treats the file as a dependent of the target. 
  8204.  
  8205. The .SUFFIXES pseudotarget is predefined as 
  8206.  
  8207. .SUFFIXES : .OBJ .EXE .C .ASM
  8208.  
  8209. To add extensions to the list, specify .SUFFIXES : followed by the new 
  8210. extensions.  To clear the list, specify 
  8211.  
  8212. .SUFFIXES:
  8213.  
  8214. Note:  Only those extensions specified in .SUFFIXES can have inference rules. 
  8215.        NMAKE ignores inference rules unless the extensions have been specified 
  8216.        in a .SUFFIXES list. 
  8217.  
  8218.  
  8219. ΓòÉΓòÉΓòÉ 18.8.3.4. .PRECIOUS ΓòÉΓòÉΓòÉ
  8220.  
  8221. Syntax:  .PRECIOUS : targets... 
  8222.  
  8223. This pseudotarget tells NMAKE not to delete a target even if the commands that 
  8224. build it are terminated or interrupted. This pseudotarget overrides the NMAKE 
  8225. default.  By default, NMAKE deletes the target if it cannot be sure that the 
  8226. target was built successfully. 
  8227.  
  8228. For example, 
  8229.  
  8230. .PRECIOUS : TOOLS.LIB
  8231. TOOLS.LIB : A2Z.OBJ Z2A.OBJ
  8232.  command
  8233.   :
  8234.  
  8235. If the commands to build TOOLS.LIB are interrupted, leaving an incomplete file, 
  8236. NMAKE does not delete the partially built TOOLS.LIB. 
  8237.  
  8238. Note:  The pseudotarget .PRECIOUS is useful only in limited circumstances. 
  8239.        Most professional development tools have their own interrupt handlers 
  8240.        and "clean up" when errors occur. 
  8241.  
  8242.  
  8243. ΓòÉΓòÉΓòÉ 18.9. InLine Files ΓòÉΓòÉΓòÉ
  8244.  
  8245. You might need to issue a command in the description file with a list of 
  8246. arguments exceeding the command-line limit of the operating system. Just as 
  8247. NMAKE supports the use of command files, it can also generate inline files that 
  8248. are read as response files by other programs. 
  8249.  
  8250. To generate an inline file, use the following syntax for your description 
  8251. block: 
  8252.  
  8253. target : dependents
  8254.   command @<<[filename]
  8255. inline file text
  8256. << [KEEP | NOKEEP]
  8257.  
  8258. All of the text between the two sets of double less-than signs (<<) is placed 
  8259. into an inline file and given the name <filename>.  You can refer to the inline 
  8260. file at a later time by using <filename>.  If <filename> is not given, NMAKE 
  8261. gives the file a unique name in the directory specified by the TMP environment 
  8262. variable, if it is defined.  Otherwise, NMAKE creates a unique file name in the 
  8263. current directory. 
  8264.  
  8265. The inline file can be temporary or permanent.  If you do not specify 
  8266. otherwise, or if you specify the keyword NOKEEP, the inline file is temporary. 
  8267. Specify KEEP to retain the file. 
  8268.  
  8269. Note:  The at sign (@) is not part of the NMAKE syntax but is the typical 
  8270.        character used by utility programs (such as LINK386) to designate a file 
  8271.        as a response file. 
  8272.  
  8273.  
  8274. ΓòÉΓòÉΓòÉ 18.9.1. Example ΓòÉΓòÉΓòÉ
  8275.  
  8276. MATH.LIB :  ADD.OBJ SUB.OBJ MUL.OBJ DIV.OBJ
  8277.   LIB @<<
  8278. MATH.LIB
  8279. -+ADD.OBJ-+SUB.OBJ-+MUL.OBJ-+DIV.OBJ
  8280. listing
  8281. <<
  8282.  
  8283. The above example creates an inline file and uses it to invoke the Library 
  8284. Manager (LIB).  The inline file is used as a response file by (LIB).  It 
  8285. specifies which library to use, the commands to execute, and the listing file 
  8286. to produce.  The inline file contains: 
  8287.  
  8288.           MATH.LIB
  8289.           -+ADD.OBJ-+SUB.OBJ-+MUL.OBJ-+DIV.OBJ
  8290.           listing
  8291.  
  8292. Because no file name is listed after the LIB command, the inline file is given 
  8293. a unique name and placed into the current directory (or the directory defined 
  8294. by the TMP environment variable). 
  8295.  
  8296.  
  8297. ΓòÉΓòÉΓòÉ 18.9.2. Escape Characters ΓòÉΓòÉΓòÉ
  8298.  
  8299. NMAKE uses the following punctuation characters in its syntax: 
  8300.  
  8301. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8302. Γöé(     Γöé)     Γöé#     Γöé$     Γöé^     Γöé\     Γöé
  8303. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8304. Γöé{     Γöé}     Γöé!     Γöé@     Γöé-     Γöé      Γöé
  8305. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8306.  
  8307. To use one of these characters in a command and not have it interpreted by 
  8308. NMAKE, use a caret ( ^ ) in front of the character. 
  8309.  
  8310. For example, 
  8311.  
  8312. BIG^#.C
  8313.  
  8314. is treated as 
  8315.  
  8316. BIG#.C
  8317.  
  8318. With the caret, you can include a literal newline character in a description 
  8319. file.  This capability is useful in macro definitions, as in the following 
  8320. example: 
  8321.  
  8322. XYZ=abc^<ENTER>
  8323. def
  8324.  
  8325. The effect is equivalent to assigning the C-style string "abc\ndef" to the XYZ 
  8326. macro.  Note that this effect differs from the effect of using the backslash ( 
  8327. \ ) to continue a line. A newline character that follows a backslash is 
  8328. replaced with a space. 
  8329.  
  8330. NMAKE ignores a caret that is not followed by any of the characters it uses in 
  8331. its syntax.  A caret that appears within quotation marks is not treated as an 
  8332. escape character. 
  8333.  
  8334. Note:  The escape character cannot be used in the command portion of a 
  8335.        dependency block. 
  8336.  
  8337.  
  8338. ΓòÉΓòÉΓòÉ 18.10. Characters That Modify Commands ΓòÉΓòÉΓòÉ
  8339.  
  8340. Any of three characters can be placed in front of a command to modify how the 
  8341. command is run: 
  8342.  
  8343.  - (dash)       Turns off error checking for the command 
  8344.  
  8345.  @ (at sign)    Suppresses display of the command 
  8346.  
  8347.  ! (exclamation point) Executes the command for each dependent file 
  8348.  
  8349.  Note: 
  8350.  
  8351.  Spaces can separate the modifying character from the command. Any command on a 
  8352.  separate line  - whether modified or not - must be indented by one or more 
  8353.  spaces or tabs. 
  8354.  
  8355.  You can use more than one character to modify a single command. 
  8356.  
  8357.  
  8358. ΓòÉΓòÉΓòÉ 18.10.1. Turn Error Checking Off (-) ΓòÉΓòÉΓòÉ
  8359.  
  8360. Syntax:  -[n] command 
  8361.  
  8362. The /I option globally turns command error-checking off.  The dash (-) command 
  8363. modifier overrides the global setting to turn error checking off for commands 
  8364. individually.  This modifier is used in two ways: 
  8365.  
  8366.      A dash without a number turns off all error checking. 
  8367.  
  8368.      A dash followed by a number causes NMAKE to halt only if the exit code 
  8369.       returned by the command is greater than the number. 
  8370.  
  8371.  See Ignore Exit Codes (/I). 
  8372.  
  8373.  
  8374. ΓòÉΓòÉΓòÉ 18.10.1.1. Dash-Command Modifier Examples ΓòÉΓòÉΓòÉ
  8375.  
  8376. LIGHT.LST : LIGHT.TXT
  8377.   - FLASH LIGHT.TXT
  8378.  
  8379. In the example above, NMAKE never ends, regardless of the exit code returned by 
  8380. FLASH. 
  8381.  
  8382. LIGHT.LST : LIGHT.TXT
  8383.   -1 FLASH LIGHT.TXT
  8384.  
  8385. In the example above, NMAKE ends if the exit code returned by FLASH is greater 
  8386. than 1. 
  8387.  
  8388.  
  8389. ΓòÉΓòÉΓòÉ 18.10.2. Suppress Command Display (@) ΓòÉΓòÉΓòÉ
  8390.  
  8391. Syntax:  @ command 
  8392.  
  8393. The /S option globally suppresses the display of commands while NMAKE is 
  8394. running.  The at sign (@) modifier suppresses the display for individual 
  8395. commands. 
  8396.  
  8397. Note:  Regardless of the /S option or the @ modifier, output generated by the 
  8398.        command itself always appears. 
  8399.  
  8400.  See Suppress Command Display (/S). 
  8401.  
  8402.  
  8403. ΓòÉΓòÉΓòÉ 18.10.2.1. At Sign (@) Command Modifier Example ΓòÉΓòÉΓòÉ
  8404.  
  8405. Suppress Command Display (@) 
  8406.  
  8407. SORT.EXE:SORT.OBJ
  8408.   @ ECHO sorting
  8409.  
  8410. The command line calling the ECHO command is not displayed.  The output of the 
  8411. ECHO command, however, is displayed. 
  8412.  
  8413.  
  8414. ΓòÉΓòÉΓòÉ 18.10.3. Execute Command for Dependent Files (!) ΓòÉΓòÉΓòÉ
  8415.  
  8416. Syntax:  ! command 
  8417.  
  8418. The exclamation-point command modifier causes the command to be executed for 
  8419. each dependent file if the command uses one of the special macros $? or $**. 
  8420. The $? macro refers to all dependent files out-of-date with respect to the 
  8421. target.  The $** macro refers to all dependent files in the description block. 
  8422.  
  8423. See Special Macros. 
  8424.  
  8425.  
  8426. ΓòÉΓòÉΓòÉ 18.10.3.1. Exclamation Point (!) Command Modifier Examples ΓòÉΓòÉΓòÉ
  8427.  
  8428. LEAP.TXT : HOP.ASM SKIP.BAS JUMP.C
  8429.   ! print $** lpt1:
  8430.  
  8431. The example above executes the following three commands, regardless of the 
  8432. modification dates of the dependent file: 
  8433.  
  8434. print HOP.ASM lpt1:
  8435. print SKIP.BAS lpt1:
  8436. print JUMP.C lpt1:
  8437.  
  8438. LEAP.TXT : HOP.ASM SKIP.BAS JUMP.C
  8439.   ! print $? lpt1:
  8440.  
  8441. The example above executes the print command only for those dependent files 
  8442. with modification dates later than that of the LEAP.TXT file. If HOP.ASM and 
  8443. JUMP.C have modification dates later than LEAP.TXT, the following two commands 
  8444. are executed: 
  8445.  
  8446. print HOP.ASM lpt1:
  8447. print JUMP.C lpt1:
  8448.  
  8449.  
  8450. ΓòÉΓòÉΓòÉ 18.10.4. EXTMAKE Syntax ΓòÉΓòÉΓòÉ
  8451.  
  8452. Description files can use a special syntax to determine the drive, path, base 
  8453. name, and extension of the first dependent file in a description block.  This 
  8454. syntax is called the "extmake" syntax. 
  8455.  
  8456. The characters, %s, represent the complete file specification of the first 
  8457. dependent file.  Various parts of the file specification are represented using 
  8458. the syntax 
  8459.  
  8460. %|partsF
  8461.  
  8462. where <parts> is a combination of the following letters: 
  8463.  
  8464.  d  Drive 
  8465.  p  Path 
  8466.  f  Base name 
  8467.  e  Extension 
  8468.  
  8469.  For example, to specify the drive and path name of the first dependent file in 
  8470.  a description block, use:
  8471.  
  8472.   %|dpF 
  8473.  
  8474.  The percent symbol (%) is a replacement in DOS and OS/2 command lines.  To use 
  8475.  the percent symbol in command-line arguments, use a double percent (%%). 
  8476.  
  8477.  
  8478. ΓòÉΓòÉΓòÉ 18.11. Macros and Inference Rules in TOOLS.INI ΓòÉΓòÉΓòÉ
  8479.  
  8480. You can place either macros or inference rules in your TOOLS.INI file.  NMAKE 
  8481. looks for the TOOLS.INI file first in the current directory and then in the 
  8482. directory indicated by the INIT environment variable. 
  8483.  
  8484. If NMAKE finds a TOOLS.INI file, it looks for the following tag: 
  8485.  
  8486. [nmake]
  8487.  
  8488. You can place macros and inference rules below this tag in the same format you 
  8489. would use in a description file. 
  8490.  
  8491. If a macro or inference rule is defined in both the TOOLS.INI file and the 
  8492. description file, the definition in the description file takes precedence. 
  8493. Also, if you use the /R option, the TOOLS.INI file is ignored. 
  8494.  
  8495.  
  8496. ΓòÉΓòÉΓòÉ 18.11.1. Example ΓòÉΓòÉΓòÉ
  8497.  
  8498. [nmake]
  8499. CFLAGS=/ss /ms /Gd-
  8500. .C.OBJ:
  8501.   $(CC) -c $(CFLAGS) $*.C
  8502.  
  8503. These lines in the TOOLS.INI file do the following: 
  8504.  
  8505.      Define the CFLAGS macro as "/ss /ms /Gd-" 
  8506.      Redefine the predefined inference rule to build .OBJ files from .C source 
  8507.       files 
  8508.  
  8509.  
  8510. ΓòÉΓòÉΓòÉ 18.12. NMAKE Error Messages ΓòÉΓòÉΓòÉ
  8511.  
  8512. This section provides a convenient reference to the many error messages that 
  8513. can be encountered when using the NMAKE facility. 
  8514.  
  8515. Error Message Descriptions 
  8516.  
  8517.  NMAKE Fatal Error Messages          (Part 1) 1000 - 1098 
  8518.  
  8519.  NMAKE Warnings                      (Part 2) 4001 - 4008 
  8520.  
  8521.  NMAKE Informational Messages        (Part 3)   2 -   6 
  8522.  
  8523.  
  8524. ΓòÉΓòÉΓòÉ 18.12.1. Fatal Error Messages (Part 1) 1000 - 1098 ΓòÉΓòÉΓòÉ
  8525.  
  8526.  U1000     syntax error : ')' missing in macro invocation 
  8527.            Explanation: A left parenthesis appeared without a matching right 
  8528.            parenthesis in a macro invocation.  The correct form is $(name). 
  8529.            Action: Add the right parenthesis in the proper syntax. 
  8530.  
  8531.  U1001     syntax error : illegal character 'character' in macro 
  8532.            Explanation: A non-alphanumeric character other than underscore 
  8533.            appeared in a macro. 
  8534.            Action: Use only characters valid for a macro name. 
  8535.  
  8536.  U1002     syntax error : bad macro invocation '$' 
  8537.            Explanation: A single dollar sign ($) appeared without a macro name 
  8538.            associated with it.  The correct form is $(name). 
  8539.            Action: Use a defined macro name. 
  8540.  
  8541.  U1003     syntax error : '=' missing in macro 
  8542.            Explanation: The = sign was missing in a macro definition. The 
  8543.            correct form is 'name = value'. 
  8544.            Action: Insert an equals sign (=) and retry. 
  8545.  
  8546.  U1004     syntax error : macro name missing 
  8547.            Explanation: A macro invocation appeared without a name. The correct 
  8548.            form is $(name). 
  8549.            Action: Supply the macro name and retry. 
  8550.  
  8551.  U1005     syntax error : text must follow ':' in macro 
  8552.            Explanation: A string substitution was specified for a macro, but 
  8553.            the string to be changed in the macro was not specified. 
  8554.            Action: Specify the string to be substituted. 
  8555.  
  8556.  U1006     syntax error : missing closing double quotation mark 
  8557.            Explanation: An opening double quotation mark appeared without a 
  8558.            closing quotation mark. 
  8559.            Action: Edit the line and add the closing quotation mark. 
  8560.  
  8561.  U1007     double quotation mark not allowed in name 
  8562.            Explanation: You used a ' " ' symbol inside a macro name. 
  8563.            Action: Correct the name without the quotation mark. 
  8564.  
  8565.  U1017     unknown directive 'directive' 
  8566.            Explanation: The directive specified is not a recognized directive. 
  8567.            Action: Check your spelling of the intended directive. 
  8568.  
  8569.  U1018     directive and/or expression part missing 
  8570.            Explanation: The directive is incompletely specified.  The 
  8571.            expression part is required. 
  8572.            Action: Supply the expression and retry the directive. 
  8573.  
  8574.  U1019     too many nested if blocks 
  8575.            Explanation: You exceeded the limit of 16 levels of nested !IF 
  8576.            directives. 
  8577.            Action: Simplify your nesting logic to fewer than 16 levels. 
  8578.  
  8579.  U1020     EOF found before next directive 
  8580.            Explanation: A directive, such as !ENDIF, was missing. 
  8581.            Action: Insert the required directive and retry. 
  8582.  
  8583.  U1021     syntax error : else unexpected 
  8584.            Explanation: An !ELSE directive was found that was not expected, or 
  8585.            was placed in a syntactically incorrect place. 
  8586.            Action: Correct the position of the !ELSE directive. 
  8587.  
  8588.  U1022     missing terminating character for string/program invocation : 
  8589.            'character' 
  8590.            Explanation: The closing double quotation mark in a string 
  8591.            comparison in an !IF directive was missing.  Or else the closing 
  8592.            bracket ( ] ) in a program invocation in a directive is missing. 
  8593.            Action: Insert the proper termination character. 
  8594.  
  8595.  U1023     syntax error present in expression 
  8596.            Explanation: An expression is incorrect. 
  8597.            Action: Check the allowed operators and operator precedence for the 
  8598.            expression. 
  8599.  
  8600.  U1024     illegal argument to !CMDSWITCHES 
  8601.            Explanation: An unrecognized !CMDSWITCHES option was specified. 
  8602.            Action: Use the correct !CMDSWITCHES option. 
  8603.  
  8604.  U1031     file name missing (or macro is null) 
  8605.            Explanation: An !INCLUDE directive was found, but the name of the 
  8606.            file to include is missing. 
  8607.            Action: Supply the name of the file to be included. 
  8608.  
  8609.  U1033     syntax error : 'string' unexpected 
  8610.            Explanation: The specified string is not part of the valid syntax 
  8611.            for a makefile. 
  8612.            Action: Correct the line according to the proper syntax. 
  8613.  
  8614.  U1034     syntax error : separator missing 
  8615.            Explanation: The colon that separates targets from dependents is 
  8616.            missing. 
  8617.            Action: Insert a colon after the target list. 
  8618.  
  8619.  U1035     syntax error : expected ':' or '=' separator 
  8620.            Explanation: Either a colon, implying a dependency line, or an = 
  8621.            sign, implying a macro definition, was expected. This message will 
  8622.            be displayed if NMAKE encounters a premature end-of-file character 
  8623.            while expecting one of these separators. 
  8624.            Action: Insert the proper separator in the line. 
  8625.  
  8626.  U1036     syntax error : too many names to left of '=' 
  8627.            Explanation: Only one string is allowed to the left of a macro 
  8628.            definition. 
  8629.            Action: Remove the incorrect text before the = sign. 
  8630.  
  8631.  U1037     syntax error : target name missing 
  8632.            Explanation: A colon (:) was found before a target name was found. 
  8633.            At least one target is required. 
  8634.            Action: Insert the correct target name before the colon. 
  8635.  
  8636.  U1038     internal error : lexer 
  8637.            Explanation: The lexer encountered an unexpected condition. 
  8638.            Action: Note the circumstances of the failure and contact IBM 
  8639.            Support. 
  8640.  
  8641.  U1039     internal error : parser 
  8642.            Explanation: The parser encountered an unexpected condition. 
  8643.            Action: Note the circumstances of the failure and contact IBM 
  8644.            Support. 
  8645.  
  8646.  U1040     internal error : macro expansion 
  8647.            Explanation: An unexpected condition was found during macro 
  8648.            expansion. 
  8649.            Action: Note the circumstances of the failure and contact IBM 
  8650.            Support. 
  8651.  
  8652.  U1041     internal error : target building 
  8653.            Explanation: An unexpected condition was found during target 
  8654.            building. 
  8655.            Action: Note the circumstances of the failure and contact IBM 
  8656.            Support. 
  8657.  
  8658.  U1042     internal error : expression stack overflow 
  8659.            Explanation: An expression was too complex to decode using internal 
  8660.            memory space. 
  8661.            Action: Note the circumstances of the failure and contact IBM 
  8662.            Support. 
  8663.  
  8664.  U1043     internal error : temp file limit exceeded 
  8665.            Explanation: NMAKE required too many temporary files. 
  8666.            Action: Note the circumstances of the failure and contact IBM 
  8667.            Support. 
  8668.  
  8669.  U1044     internal error : too many levels of recursion building a target 
  8670.            Explanation: Recursive invocations of NMAKE exceeded available 
  8671.            memory. 
  8672.            Action: Note the circumstances of the failure and contact IBM 
  8673.            Support. 
  8674.  
  8675.  U1045     messagetext 
  8676.            Explanation: NMAKE encountered an unexpected condition. 
  8677.            Action: Note the text of the message and contact IBM Support. 
  8678.  
  8679.  U1046     internal error : out of search handles 
  8680.            Explanation: NMAKE exceeded an internal limit on handles. 
  8681.            Action: Note the circumstances of the failure and contact IBM 
  8682.            Support. 
  8683.  
  8684.  U1049     macro too long (max allowed size : 64K) 
  8685.            Explanation: One of your macros expanded to longer than 65 535 
  8686.            bytes. 
  8687.            Action: Recode the macro definition so that it is less than 64K. 
  8688.  
  8689.  U1050     user-specified text 
  8690.            Explanation: The message specified with the !ERROR directive is 
  8691.            displayed. 
  8692.            Action: Action depends on the defined error condition. 
  8693.  
  8694.  U1051     out of memory 
  8695.            Explanation: NMAKE ran out of space in the far heap. 
  8696.            Action: Note the circumstances of the failure and contact IBM 
  8697.            Support. 
  8698.  
  8699.  U1052     file 'filename' not found 
  8700.            Explanation: The file was not found. 
  8701.            Action: Specify the filename properly in the makefile. 
  8702.  
  8703.  U1053     file 'filename' unreadable 
  8704.            Explanation: The filename cannot be read. 
  8705.            Action: Be sure that the file has the appropriate attributes to be 
  8706.            read. 
  8707.  
  8708.  U1054     cannot create in-line file 'filename' 
  8709.            Explanation: The program was unable to generate the specified 
  8710.            in-line file as a uniquely-named temporary file. 
  8711.            Action: Be sure your file system has enough space for temporary 
  8712.            files. 
  8713.  
  8714.  U1055     out of environment space 
  8715.            Explanation: The environment space limit was reached. 
  8716.            Action: Restart NMAKE with a larger environment space. 
  8717.  
  8718.  U1056     cannot find command processor 
  8719.            Explanation: The command processor CMD.EXE could not be found. 
  8720.            Action: Be sure that the COMSPEC environment variable points to a 
  8721.            command processor on your file system. 
  8722.  
  8723.  U1057     cannot delete temporary file 'filename' 
  8724.            Explanation: The program was unable to delete the specified file. 
  8725.            Action: The file needs to exist and have the write attribute. 
  8726.  
  8727.  U1058     terminated by user 
  8728.            Explanation: You pressed Ctrl+Break to stop NMAKE. 
  8729.            Action: None, the program has stopped. 
  8730.  
  8731.  U1060     unable to close file : 'filename' 
  8732.            Explanation: NMAKE was unable to close filename. 
  8733.            Action: Look for the named file with write attribute on your file 
  8734.            system. 
  8735.  
  8736.  U1061     /F option requires a file name 
  8737.            Explanation: You coded command-line option /f but failed to follow 
  8738.            it with the name of a description file. 
  8739.            Action: Specify the description file name after the option. 
  8740.  
  8741.  U1062     missing file name with /X option 
  8742.            Explanation: You coded command-line option /x but failed to follow 
  8743.            it with the name of a file to receive redirected stderr output. 
  8744.            Action: Give an output error file name after the option. 
  8745.  
  8746.  U1063     missing macro name before '=' 
  8747.            Explanation: You coded '=' in a command line macro definition, but 
  8748.            failed to supply the name of the macro. 
  8749.            Action: Give the macro name in the definition. 
  8750.  
  8751.  U1064     MAKEFILE not found and no target specified 
  8752.            Explanation: You invoked NMAKE without a /f option, and no file 
  8753.            named MAKEFILE was present. 
  8754.            Action: Either create a file named MAKEFILE, or use the /f switch. 
  8755.  
  8756.  U1065     incorrect option 'option' 
  8757.            Explanation: NMAKE does not use the option which you specified. 
  8758.            Action: Use a valid command line option. 
  8759.  
  8760.  U1070     cycle in macro definition 'macroname' 
  8761.            Explanation: A cycle was detected in the macro definition specified. 
  8762.            Action: Rewrite the macro to avoid the circular definition. 
  8763.  
  8764.  U1071     cycle in dependency tree for target 'targetname' 
  8765.            Explanation: A cycle was detected in the target dependency tree. 
  8766.            Action: Check the dependency lists descending from the given target 
  8767.            and remove the circular dependency. 
  8768.  
  8769.  U1072     cycle in include files : 'filenames' 
  8770.            Explanation: A cycle was detected in the tree of included files. 
  8771.            Action: Check the file names included by the given include file and 
  8772.            remove the circular inclusion. 
  8773.  
  8774.  U1073     don't know how to make 'filename' 
  8775.            Explanation: The specified target does not exist and there are no 
  8776.            commands to execute or inference rules given for it.  Hence NMAKE 
  8777.            cannot build it. 
  8778.            Action: Correct the specification of the file, which should exist on 
  8779.            your file system. 
  8780.  
  8781.  U1076     name too long 
  8782.            Explanation: The macro name, target name, or build command name 
  8783.            would overflow an internal buffer. 
  8784.            Action: Reduce the length of the specified name. 
  8785.  
  8786.  U1077     'program' : return code 'value' 
  8787.            Explanation: The invocation of NMAKE failed with a nonzero return 
  8788.            value. 
  8789.            Action: Determine the cause of failure of the specified program. 
  8790.  
  8791.  U1078     constant overflow at 'directive' 
  8792.            Explanation: A constant in 'directive' expression was too big. 
  8793.            Action: Reduce the size of the specified constant to a value within 
  8794.            the range of a signed long integer, -2147483648 <= value <= 
  8795.            2147483647. 
  8796.  
  8797.  U1079     illegal expression : divide by zero present 
  8798.            Explanation: An expression contains a division by zero. 
  8799.            Action: Remove the undefined division by zero from the expression. 
  8800.  
  8801.  U1080     operator and/or operand out of place : usage illegal 
  8802.            Explanation: The expression uses an operand or operator incorrectly. 
  8803.            Action: Check the allowed set of operators and their precedence. 
  8804.  
  8805.  U1081     'program' : program not found 
  8806.            Explanation: NMAKE could not find the external command or program. 
  8807.            Action: Be sure that the program is located in the PATH. 
  8808.  
  8809.  U1082     'command' : cannot execute command: out of memory 
  8810.            Explanation: NMAKE ran out of memory while running command. 
  8811.            Action: Make more memory available while running NMAKE. 
  8812.  
  8813.  U1083     target macro 'macroname' expands to nothing 
  8814.            Explanation: The expansion of the given macro is a null string. 
  8815.            Action: Correct the definition of the macro. 
  8816.  
  8817.  U1084     cannot create temporary file 'filename' 
  8818.            Explanation: NMAKE was unable to open the specified temporary file. 
  8819.            Action: Check the filename specification for validity. 
  8820.  
  8821.  U1085     cannot mix implicit and explicit rules 
  8822.            Explanation: A regular target was specified along with the target 
  8823.            for a rule (which has the form .sufx1.sufx2). 
  8824.            Action: Separate targets built by implicit and explicit inference 
  8825.            rules into different lists. 
  8826.  
  8827.  U1086     inference rule cannot have dependents 
  8828.            Explanation: Dependents are not allowed in the definition of an 
  8829.            inference rule. 
  8830.            Action: Remove the dependents list from the rule. 
  8831.  
  8832.  U1087     cannot have : and :: dependents for same target 
  8833.            Explanation: A target cannot have both a single-colon and 
  8834.            double-colon dependency. 
  8835.            Action: Choose either single-colon or double-colon separator for the 
  8836.            target. 
  8837.  
  8838.  U1088     invalid separator on inference rule : '::' 
  8839.            Explanation: Inference rules can use only a single-colon separator. 
  8840.            Action: Use a single-colon dependency for the target. 
  8841.  
  8842.  U1089     cannot have build commands for pseudotarget 'targetname' 
  8843.            Explanation: Pseudotargets (for example, .PRECIOUS, .SUFFIXES) 
  8844.            cannot have build commands specified. 
  8845.            Action: Remove the build commands from the specification of 
  8846.            targetname. 
  8847.  
  8848.  U1090     cannot have dependents for pseudotarget 'targetname' 
  8849.            Explanation: The specified pseudotarget, for example, .SILENT, 
  8850.            .IGNORE) cannot have a dependent. 
  8851.            Action: Remove the dependent from the specification of targetname. 
  8852.  
  8853.  U1092     too many names in rule 
  8854.            Explanation: The rules cannot have more than one pair of extensions 
  8855.            (ext1.ext2) as a target for the rule. 
  8856.            Action: Use only one pair of extensions in any inference rule. 
  8857.  
  8858.  U1093     cannot mix special pseudotargets 
  8859.            Explanation: It is illegal to list two or more pseudotargets 
  8860.            together. 
  8861.            Action: Use only one pseudotarget in any list. 
  8862.  
  8863.  U1094     syntax error : only [no]keep allowed here 
  8864.            Explanation: In a context where only KEEP or NOKEEP is accepted to 
  8865.            indicate the desired disposition of the inline file, you used an 
  8866.            incorrect string. 
  8867.            Action: Use the correct syntax for In-Line Files. 
  8868.  
  8869.  U1095     expanded command line 'string' too long 
  8870.            Explanation: After macro expansion, the command line length exceeds 
  8871.            1024 bytes. 
  8872.            Action: Rewrite the command line to stay within a 1024-byte limit. 
  8873.  
  8874.  U1097     extmake syntax usage error, no dependent 
  8875.            Explanation: You used the extmake file syntax on a description block 
  8876.            which had no dependent files. 
  8877.            Action: Specify one or more dependent files for the block. 
  8878.  
  8879.  U1098     extmake syntax in 'string' incorrect 
  8880.            Explanation: The given string contains an extmake syntax error. 
  8881.            Action: Correct the string according to the proper syntax. 
  8882.  
  8883.  
  8884. ΓòÉΓòÉΓòÉ 18.12.2. Warnings (Part 2) 4001 - 4008 ΓòÉΓòÉΓòÉ
  8885.  
  8886.  U4001     command file can be invoked only from command line 
  8887.            Explanation: You used an @ symbol on an argument in a command file. 
  8888.            You cannot invoke another command file from within a command file. 
  8889.            Action: If the you want '@' to be part of an argument in a command 
  8890.            file, you must enclose that argument in quotation marks. 
  8891.  
  8892.  U4002     no match found for wild card 'string' 
  8893.            Explanation: NMAKE expanded wildcards in the given string, but found 
  8894.            no files matching the specification. 
  8895.            Action: Check the existence of desired files on your file system. 
  8896.  
  8897.  U4004     too many rules for target 'targetname' 
  8898.            Explanation: You specified too many inference rules for the 
  8899.            specified targetname. 
  8900.            Action: Revise your rules specification for targetname. 
  8901.  
  8902.  U4005     ignoring rule 'string' (extension not in .SUFFIXES) 
  8903.            Explanation: You specified an inference rule with a suffix which was 
  8904.            not in the .SUFFIXES list. 
  8905.            Action: To use the suffix, be sure to include it in the .SUFFIXES 
  8906.            list. 
  8907.  
  8908.  U4006     special macro undefined : 'macroname' 
  8909.            Explanation: You specified the undefined macro macroname. 
  8910.            Action: NMAKE will ignore the undefined macroname.  You may use only 
  8911.            predefined special macros. 
  8912.  
  8913.  U4007     file name 'filename' too long; truncating to 8.3 
  8914.            Explanation: The specified filename is too long for a FAT file 
  8915.            system name. 
  8916.            Action: NMAKE will shorten the filename to at most an 
  8917.            eight-character name and 3-character extension. 
  8918.  
  8919.  U4008     removed target 'filename' 
  8920.            Explanation: While deleting non-precious files, NMAKE erased the 
  8921.            specified filename which was a target. 
  8922.            Action: Check your lists of targets and dependent files to be sure 
  8923.            that filename is not needed. 
  8924.  
  8925.  
  8926. ΓòÉΓòÉΓòÉ 18.12.3. Informational Messages (Part 3) 2-6 ΓòÉΓòÉΓòÉ
  8927.  
  8928.  Message 2 'filename' is up-to-date. 
  8929.            Explanation: The specified target filename is no older than any of 
  8930.            its dependent files. 
  8931.            Action: NMAKE does not need to rebuild this target. 
  8932.  
  8933.  Message 3 **'file1' newer than 'file2' 
  8934.            Explanation: While reporting creation times of files, NMAKE notes 
  8935.            that file1 was created after file2. 
  8936.            Action: [none] 
  8937.  
  8938.  Message 5 touch 'filename' 
  8939.            Explanation: You specified option /t to touch targets with the 
  8940.            current date and time. 
  8941.            Action: NMAKE has updated the creation time of filename. 
  8942.  
  8943.  Message 6 'filename' target does not exist 
  8944.            Explanation: The specified filename could not be found. 
  8945.            Action: NMAKE will rebuild the target. 
  8946.  
  8947.  
  8948. ΓòÉΓòÉΓòÉ 19. Object Utility/2 Description ΓòÉΓòÉΓòÉ
  8949.  
  8950. Object Utility/2 is a Workplace-Shell object that provides a facility for 
  8951. registering Workplace Shell classes, creating instances of Workplace Shell 
  8952. classes, and modifying instances of Workplace Shell classes. 
  8953.  
  8954. The following attributes can be set or modified for instances of Workplace 
  8955. Shell objects: 
  8956.  
  8957.      Template 
  8958.      Copy 
  8959.      Delete 
  8960.      Rename 
  8961.      Print 
  8962.      Link 
  8963.      Move 
  8964.      Drag 
  8965.  
  8966.  The attributes modify the behavior of the objects to allow or not allow these 
  8967.  actions. For example, the Template attribute allows you to create a template. 
  8968.  Some objects do not allow specific behaviors even if the attribute is 
  8969.  selected. 
  8970.  
  8971.  A Workplace Shell class must be registered with the Workplace Shell before it 
  8972.  will be recognized by Object Utility/2. After the object class is registered, 
  8973.  an instance of that class can be created. Object Utility/2 automates these 
  8974.  procedures of object-class registration and instantiation.  This tool can 
  8975.  create an instance of an object from a class that has already been 
  8976.  instantiated, or can modify an existing instance. 
  8977.  
  8978.  Registration of a class is performed by opening the main view of Object 
  8979.  Utility/2.  The class name and DLL name must be provided.  The class is not 
  8980.  registered if it has been registered previously. 
  8981.  
  8982.  To modify an existing instance, drag the icon representing the class and drop 
  8983.  it of Object Utility/2. You can enter the object ID and class name after 
  8984.  opening the main view. 
  8985.  
  8986.  After the item to be installed is dropped, a dialog box is displayed for 
  8987.  registration and instantiation information. 
  8988.  
  8989.  To destroy an object created by this tool, drag the object and drop it onto 
  8990.  the Shredder object on the Workplace Shell Desktop (if the no drag and no 
  8991.  delete options are not selected and the object allows deletion). A mechanism 
  8992.  to deregister an object class is not provided with this tool. 
  8993.  
  8994.  
  8995. ΓòÉΓòÉΓòÉ 19.1. Class Name Field ΓòÉΓòÉΓòÉ
  8996.  
  8997. Class name is a list of all the registered classes that have DLLs available on 
  8998. your system.  The OS/2 operating system allows classes to be registered without 
  8999. the DLLs available, but Object Utility/2 does not.  You can select a class from 
  9000. the list or enter one manually.  The Class Name field is required when 
  9001. registering a new class, modifying an existing instance that was not dropped on 
  9002. Object Utility/2, or creating a new instance. 
  9003.  
  9004.  
  9005. ΓòÉΓòÉΓòÉ 19.2. DLL Name Field ΓòÉΓòÉΓòÉ
  9006.  
  9007. The DLL name must be a fully qualified path and file name if the DLL is not 
  9008. located in a DLL search path. This field is required if you are registering a 
  9009. class. 
  9010.  
  9011.  
  9012. ΓòÉΓòÉΓòÉ 19.3. Object ID Field ΓòÉΓòÉΓòÉ
  9013.  
  9014. The Object ID must be enclosed in angle brackets (<>). This field is required 
  9015. when you modify an existing object that was not dropped on Object Utility/2. If 
  9016. you try to create an instance that is not a template, without an Object ID, you 
  9017. will receive a warning. You can create a new instance without an object ID. The 
  9018. Object ID must be unique, if specified, when creating an instance. Templates 
  9019. cannot have an object ID.  Instances with an object ID cannot be made into a 
  9020. template. 
  9021.  
  9022.  
  9023. ΓòÉΓòÉΓòÉ 19.4. Title Field ΓòÉΓòÉΓòÉ
  9024.  
  9025. The Title field is required when creating a new object. You can alter the title 
  9026. of an existing object by providing a different title in this field. 
  9027.  
  9028.  
  9029. ΓòÉΓòÉΓòÉ 19.5. Location Field ΓòÉΓòÉΓòÉ
  9030.  
  9031. You can either select an existing location from the location list or enter a 
  9032. location manually. The location must be an object ID that represents a folder 
  9033. (enclosed in angle brackets) or a fully qualified path name. 
  9034.  
  9035.  
  9036. ΓòÉΓòÉΓòÉ 19.6. Options ΓòÉΓòÉΓòÉ
  9037.  
  9038.  Create Instance     Creates an instance of the class. 
  9039.  
  9040.  Template            Creates a template of the class in the Templates folder. 
  9041.  
  9042.  No Copy             Removes Copy from the pop-up menu. 
  9043.  
  9044.  No Delete           Removes Delete from the pop-up menu. 
  9045.  
  9046.  No Rename           Removes Rename from the pop-up menu. 
  9047.  
  9048.  No Print            Removes Print from the pop-up menu. 
  9049.  
  9050.  No Link             Removes Link from the pop-up menu. 
  9051.  
  9052.  No Move             Removes Move from the pop-up menu. 
  9053.  
  9054.  No Drag             Prevents dragging of the object. 
  9055.  
  9056.  
  9057. ΓòÉΓòÉΓòÉ 20. PACK/UNPACK and PACK2/UNPACK2 ΓòÉΓòÉΓòÉ
  9058.  
  9059. PACK reduces the size of a file by compressing its data. You can use PACK for a 
  9060. single file or for a group of files, thereby reducing the disk space required 
  9061. for your OS/2 application.  UNPACK restores a packed file to it's original 
  9062. size. 
  9063.  
  9064. In addition to the original versions of these utility programs, enhanced 
  9065. versions of the programs are also included with OS/2. These enhanced versions 
  9066. are named PACK2 and UNPACK2. The options, parameters, and function for PACK2 
  9067. and UNPACK2 are identical to PACK and UNPACK.  The only difference is that 
  9068. PACK2 has a better compression algorithm. 
  9069.  
  9070. Note:  PACK and PACK2 are shipped with the OS/2 Toolkit. UNPACK and UNPACK2 are 
  9071. shipped with OS/2. 
  9072.  
  9073.  
  9074. ΓòÉΓòÉΓòÉ 20.1. Starting PACK ΓòÉΓòÉΓòÉ
  9075.  
  9076. You start PACK with a single command from the command line. The input required 
  9077. can be specified in one of two ways: 
  9078.  
  9079.      You can type the names of all the files you want to compress (Method 1). 
  9080.       See Running PACK With Individual Files. 
  9081.  
  9082.      You can type the name of a single file that contains a list of all the 
  9083.       files you want to compress (Method 2). See Running PACK With a Listfile. 
  9084.  
  9085.  When using PACK, select the method that is suitable for you. 
  9086.  
  9087.  
  9088. ΓòÉΓòÉΓòÉ 20.1.1. Running PACK With Individual Files ΓòÉΓòÉΓòÉ
  9089.  
  9090. You can start PACK with a single command from the command line. You can type 
  9091. the names of all the files you want to compress directly on the command line. 
  9092. Include the drive and path if the files are not in the working directory. You 
  9093. can specify file names with any combination of uppercase and lowercase letters. 
  9094. File-name extensions are not required; however, if you specify a file name that 
  9095. has an extension, also type the extension. 
  9096.  
  9097. The command-syntax is as follows: 
  9098.  
  9099.   PACK sourcefile [packedfile]
  9100.     [/H:headerpath\
  9101.     |/H:headerfile
  9102.     |/H:headerpath\ headerfile]
  9103.     [/D:headerdate]
  9104.     [/T:headertime]
  9105.     [/C] [/A] [/R]
  9106.  
  9107. where: 
  9108.  
  9109.  sourcefile          Specifies the name of the file you want packed 
  9110.                      (compressed). This parameter is required. Include the 
  9111.                      drive and path if the file is not in the working 
  9112.                      directory. Global file-name characters are permitted. 
  9113.  
  9114.                      When the data is compressed, the name of the source file 
  9115.                      is placed in the header of the compressed file and is used 
  9116.                      as the destination file name during unpacking. 
  9117.  
  9118.  packedfile          Specifies the name of the file that will contain the 
  9119.                      compressed data.  Files that contain compressed data can 
  9120.                      be recognized by the @ symbol as the last character in the 
  9121.                      file name.  If you do not specify this parameter, PACK 
  9122.                      places the compressed data in sourcefile and modifies its 
  9123.                      name to contain the @ symbol. 
  9124.  
  9125.  /H:headerpath\ or /H:headerfile or /H:headerpath\headerfile These parameters 
  9126.                      can be used separately or they can be paired. 
  9127.  
  9128.                      /H:headerpath\ 
  9129.                                Specifies the destination path to be placed in 
  9130.                                the header of the file that contains the 
  9131.                                compressed data. Drive letters are not 
  9132.                                permitted. Unless this path is overridden with 
  9133.                                the UNPACK command, it will be the destination 
  9134.                                path when the file is uncompressed. headerpath 
  9135.                                must end with a back slash (\). 
  9136.  
  9137.                      /H:headerfile 
  9138.                                Specifies the name of the file to be placed in 
  9139.                                the header of the compressed file. This file 
  9140.                                name will be used as the destination file for 
  9141.                                the uncompressed data and cannot be overridden. 
  9142.  
  9143.                                If a header file name is not specified, PACK 
  9144.                                automatically uses sourcefile as the name of the 
  9145.                                file that is placed in the header of the 
  9146.                                compressed file. 
  9147.  
  9148.                      /H:headerpath\headerfile 
  9149.                                Specifies that both a destination path and a 
  9150.                                destination file name are to be placed in the 
  9151.                                header of the file that has the compressed data. 
  9152.  
  9153.  /D:headerdate       Records the date in the header of the file that has the 
  9154.                      compressed data, and also in the destination file when it 
  9155.                      is uncompressed. 
  9156.  
  9157.                      The date must follow the format /D:MM-DD-YYYY (for 
  9158.                      example: /D:08-20-1991 and /D:12-30-2010) 
  9159.  
  9160.  /T:headertime       Records the time in the header of the file that has the 
  9161.                      compressed data, and also in the destination file when it 
  9162.                      is uncompressed. 
  9163.  
  9164.                      The time must follow the format /T:HH.MM (for example 
  9165.                      /T:02.06 and /T:14.54). Hour 00 represents 12 a.m. and 
  9166.                      hour 12 represents 12 p.m. 
  9167.  
  9168.  /C                  Specifies that the current path be placed in the header of 
  9169.                      the file that contains the compressed data. When the 
  9170.                      UNPACK command is used, this path will be the destination 
  9171.                      path for the file that contains the uncompressed data. 
  9172.  
  9173.                      You cannot use /C when the headerpath is used. 
  9174.  
  9175.  /A                  Adds data from sourcefile to the data in packedfile. 
  9176.  
  9177.                      The source file can be either in a compressed or 
  9178.                      uncompressed state. If the source file is in an 
  9179.                      uncompressed state, the data is compressed before being 
  9180.                      added to the file containing the compressed data. 
  9181.  
  9182.  /R                  Removes the file specified by sourcefile from the file 
  9183.                      that contains only compressed data. The sourcefile 
  9184.                      parameter must specify the path and file name exactly as 
  9185.                      they appear in the header of the file with the compressed 
  9186.                      data; otherwise, the following error message appears on 
  9187.                      the screen. 
  9188.  
  9189.                                           The specified file to remove was not found.
  9190.  
  9191.                      The /R parameter is valid only when used in conjunction 
  9192.                      with sourcefile and packedfile. 
  9193.  
  9194.  Note:  To display the path and file-name information stored in the header of 
  9195.         the file that contains the compressed data, use the UNPACK command and 
  9196.         specify the SHOW option. For information about the SHOW option, see the 
  9197.         UNPACK command in the online OS/2 Command Reference. 
  9198.  
  9199.  You can also get end-to-end compressed data by using global file-name 
  9200.  characters. For example: 
  9201.  
  9202.     PACK *.EXE BUNDLE
  9203.  
  9204.  
  9205. ΓòÉΓòÉΓòÉ 20.1.2. Running PACK With a Listfile ΓòÉΓòÉΓòÉ
  9206.  
  9207. You can start PACK with a single command from the command line. You can type 
  9208. the name of a single file that contains a list of all the files you want to 
  9209. compress. 
  9210.  
  9211. Include the drive and path if the files are not in the working directory. You 
  9212. can specify file names with any combination of uppercase and lowercase letters. 
  9213. File-name extensions are not required; however, if you specify a file name that 
  9214. has an extension, also type the extension. 
  9215.  
  9216. The command-line syntax is as follows: 
  9217.  
  9218.   PACK listfile [packedfile] /L
  9219.     [/H:headerpath\
  9220.     |/H:headerfile
  9221.     |/H:headerpath\ headerfile]
  9222.     [/D:headerdate]
  9223.     [/T:headertime]
  9224.     [/C]
  9225.  
  9226. where: 
  9227.  
  9228.  listfile            Specifies the name of the file that contains a list of 
  9229.                      files that are to be compressed. When naming a list file, 
  9230.                      do not use global file-name characters. 
  9231.  
  9232.                      For information about list files, see Creating a List 
  9233.                      File. 
  9234.  
  9235.  packedfile          Specifies the name of the file that will contain the 
  9236.                      compressed data. Files that contain compressed data can be 
  9237.                      recognized by the @ symbol as the last character in the 
  9238.                      file name. If you do not specify this parameter, PACK 
  9239.                      places the compressed data in sourcefile and modifies its 
  9240.                      name to contain the @ symbol. 
  9241.  
  9242.  /L                  Indicates that filename is a list file. A list file is not 
  9243.                      compressed; it simply contains a listing of the names of 
  9244.                      the files that are to be compressed. 
  9245.  
  9246.  /H:headerpath\ or /H:headerfile or /H:headerpath\ headerfile These parameters 
  9247.                      can be used separately or they can be paired. 
  9248.  
  9249.                      /H:headerpath\ 
  9250.                                Specifies the destination path (drive letters 
  9251.                                are not permitted) to be placed in the header of 
  9252.                                the file that contains the compressed data. 
  9253.                                Unless this path is overridden with the UNPACK 
  9254.                                command, it will be the destination path when 
  9255.                                the file is uncompressed. Headerpath must end 
  9256.                                with a back slash (\). 
  9257.  
  9258.                      /H:headerfile 
  9259.                                Specifies the name of the file to be placed in 
  9260.                                the header of the compressed file. This file 
  9261.                                name will be used as the destination file for 
  9262.                                the uncompressed data and cannot be overridden. 
  9263.  
  9264.                                If a header file name is not specified, PACK 
  9265.                                automatically uses sourcefile as the name of the 
  9266.                                file that is placed in the header of the 
  9267.                                compressed file. 
  9268.  
  9269.                      /H:headerpath\ headerfile 
  9270.                                Specifies that both a destination path and a 
  9271.                                destination file name are to be placed in the 
  9272.                                header of the file that has the compressed data. 
  9273.  
  9274.  /D:headerdate       Records the date in the header of the file that has the 
  9275.                      compressed data, and also in the destination file when it 
  9276.                      is uncompressed. 
  9277.  
  9278.                      The date must follow the format /D:MM-DD-YYYY. For 
  9279.                      example: /D:08-20-1991 and /D:12-30-2010. 
  9280.  
  9281.  /T:headertime       Records the time in the header of the file that has the 
  9282.                      compressed data, and also in the destination file when it 
  9283.                      is uncompressed. 
  9284.  
  9285.                      The time must follow the format /T:HH.MM. For example 
  9286.                      /T:02.06 and /T:14.54. Hour 00 represents 12 a.m. and hour 
  9287.                      12 represents 12 p.m. 
  9288.  
  9289.  /C                  Specifies that the current path be placed in the header of 
  9290.                      the file that contains the compressed data. When the 
  9291.                      UNPACK command is used, this path will be the destination 
  9292.                      path for the file that contains the uncompressed data. 
  9293.  
  9294.                      You cannot use /C when the headerpath is used. 
  9295.  
  9296.  Note:  The path and file-name information stored in the header of the file 
  9297.         that contains the compressed data can be displayed by using the /SHOW 
  9298.         option available with UNPACK. For information about the /SHOW option, 
  9299.         see the UNPACK command in the online OS/2 Command Reference. 
  9300.  
  9301.  
  9302. ΓòÉΓòÉΓòÉ 20.1.2.1. Creating a List File ΓòÉΓòÉΓòÉ
  9303.  
  9304. To use a list file with PACK, you must first create a file that contains the 
  9305. names of the files you want to compress. You can give the list file any name. 
  9306. Following is an example of specifying a list file at the command line. 
  9307.  
  9308.   PACK DEVICE.LST DEVICE.DRV /L
  9309.  
  9310. The /L indicates that DEVICE.LST is a list file. If the list file is not in the 
  9311. working directory, you must specify the drive and path. Global file-name 
  9312. characters are not permitted in the list-file name. DEVICE.DRV is the 
  9313. destination file for the end-to-end-compressed data. (End-to-end compressed 
  9314. data is the data from each of the files contained in the list file. This data 
  9315. is stored in a contiguous format in the destination file.) 
  9316.  
  9317. The syntax used in the list file is similar to that used in the command line. 
  9318. The syntax for a single line in the list file follows: 
  9319.  
  9320.   sourcefile
  9321.     [/H:headerpath\
  9322.     |/H:headerfile
  9323.     |/H:headerpath\ headerfile]
  9324.     [/D:headerdate]
  9325.     [/T:headertime]
  9326.     [/C]
  9327.  
  9328. When using the list-file method (method 2), global file-name characters are not 
  9329. permitted in the source-file name. Notice also that "PACK" is excluded and 
  9330. packedfile is not permitted in the list file, because they were specified on 
  9331. the command line. You can include comments or blank lines by entering a 
  9332. semicolon as the first character of the line. An example of a list file 
  9333. follows. 
  9334.  
  9335.   ;This is a comment
  9336.   C:\OS2\COMMAND.COM
  9337.   CONFIG.SYS /H:CONFIG.BAK /C
  9338.   \OS2\INSTALL\DDINSTAL.EXE
  9339.    /H:\OS2\DDINSTAL.TMP
  9340.    /D:10-15-91 /T:11.45
  9341.  
  9342.  
  9343. ΓòÉΓòÉΓòÉ 20.2. Starting UNPACK ΓòÉΓòÉΓòÉ
  9344.  
  9345. UNPACK restores a file of compressed data to its original size and copies it to 
  9346. a specified drive and path. To start the UNPACK command, type: 
  9347.  
  9348.   UNPACK sourcefile
  9349.   [destinationdrive:] [destinationpath]
  9350.   [/SHOW] [/N:singlefile]
  9351.   [/V] [/F]
  9352.  
  9353. where: 
  9354.  
  9355.  sourcefile          Specifies the name of an existing file that contains 
  9356.                      compressed data.  If this file contains one or more files 
  9357.                      of compressed data, UNPACK restores each file within the 
  9358.                      file. 
  9359.  
  9360.  destinationdrive:   Specifies the name of the drive where you want UNPACK to 
  9361.                      copy one or more restored files. 
  9362.  
  9363.                      When you specify a destination drive but not a path, 
  9364.                      UNPACK uses the path information stored in the header of 
  9365.                      the file that contains the compressed data. 
  9366.  
  9367.  destinationpath     Specifies the name of the directory (and its 
  9368.                      subdirectories) where you want UNPACK to copy one or more 
  9369.                      restored files. 
  9370.  
  9371.                      When specified, the destination path overrides the path 
  9372.                      information stored in the header of the file that contains 
  9373.                      the compressed data. 
  9374.  
  9375.  /SHOW               Displays the destination path and file-name information 
  9376.                      that are saved in the header of each file containing 
  9377.                      compressed data. 
  9378.  
  9379.  /N:singlefile       Extracts and uncompresses one file from a file that 
  9380.                      contains multiple files of compressed data. 
  9381.  
  9382.  /V                  Verifies that sectors written to the target disk are 
  9383.                      recorded correctly.  This parameter lets you know that 
  9384.                      critical data has been correctly recorded. 
  9385.  
  9386.                      This parameter causes UNPACK to run slower, because a 
  9387.                      check is made for each entry recorded on the disk. 
  9388.  
  9389.  /F                  Specifies that files with extended attributes should not 
  9390.                      be unpacked or copied if the destination file system does 
  9391.                      not support extended attributes. 
  9392.  
  9393.  
  9394. ΓòÉΓòÉΓòÉ 21. Resource Compiler ΓòÉΓòÉΓòÉ
  9395.  
  9396. The OS/2 Resource Compiler (RC) is an application-development tool that lets 
  9397. you add application resources, such as message strings, pointers, menus, and 
  9398. dialog boxes, to the executable file of your application. The Resource Compiler 
  9399. is primarily intended to prepare data for OS/2 applications that use functions 
  9400. such as WinLoadString, WinLoadPointer, WinLoadMenu, and WinLoadDlg.  These 
  9401. functions load resources from the executable file of your application or 
  9402. another specified executable file.  The application can then use the loaded 
  9403. resources as needed. 
  9404.  
  9405. The Resource Compiler and the resource functions let you quickly define and/or 
  9406. modify application resources without recompiling the application itself.  That 
  9407. is, RC can modify the resources in an executable file at any time without 
  9408. affecting the rest of the file. This means that you can create custom 
  9409. applications from a single executable file - you just use RC to add the custom 
  9410. resources you need to each application. 
  9411.  
  9412. The Resource Compiler is especially important for international applications 
  9413. because it lets you define all language-dependent data, such as message 
  9414. strings, as resources.  Preparing the application for a new language is simply 
  9415. a matter of adding new resources to the existing executable file. 
  9416.  
  9417.  
  9418. ΓòÉΓòÉΓòÉ 21.1. Using the Resource Compiler ΓòÉΓòÉΓòÉ
  9419.  
  9420. The Resource Compiler (RC) compiles a resource script file to create a new file 
  9421. called a binary resource file. 
  9422.  
  9423. The binary resource file can be added to the executable file of the 
  9424. application, replacing any existing resources in that file. 
  9425.  
  9426. You can start RC in any of three ways. 
  9427.  
  9428.      Compile and add a resource definition file to an executable file 
  9429.      Compile a resource script file 
  9430.      Add a binary resource file to an executable file 
  9431.  
  9432.  The RC command line has the following three basic forms: 
  9433.  
  9434.     rc resource-script-file [executable-file]
  9435.  
  9436.     rc resource-file [executable-file]
  9437.  
  9438.     rc -r  resource-script-file [resource-file]
  9439.  
  9440.  Note:  The third option does not add to the executable file.
  9441.  
  9442.  The resource-script-file field must be the file name of the resource script 
  9443.  file to be compiled.  If the file is not in the current directory, you must 
  9444.  provide a full path.  If you provide a file name without specifying an 
  9445.  extension, RC automatically appends the .RC extension to the name. 
  9446.  
  9447.  The executable-file field must be the name of the executable file to receive 
  9448.  the compiled resources.  This is a file having an extension of either .EXE or 
  9449.  .DLL.  If the file is not in the current directory, you must provide a full 
  9450.  path.  If you omit the executable-file field, RC adds the compiled resources 
  9451.  to the executable file that has the same name as the resource script file but 
  9452.  which has the .EXE file extension.  If you specify the executable-file field 
  9453.  but omit the extension, RC will append the .EXE extension.  If this executable 
  9454.  file does not exist, RC displays an error message. 
  9455.  
  9456.  The -r option directs RC to compile the resource script file without adding it 
  9457.  to an executable file.  You can use this option to prepare a binary resource 
  9458.  file that you can add to an executable file at a later time.  If you do not 
  9459.  explicitly name a binary resource file along with the -r option, RC uses the 
  9460.  same name as the resource script file but with the .RES extension. 
  9461.  
  9462.  The resource-file field must be the name of the binary resource file to be 
  9463.  added to the executable file.  If the binary resource file does not already 
  9464.  exist, RC creates it; otherwise, RC replaces the existing file.  If the file 
  9465.  is not in the current directory, you must provide a full path.  The binary 
  9466.  resource file must have the .RES extension. 
  9467.  
  9468.  For example, to compile the resource script file EXAMPLE.RC, and add the 
  9469.  result to the executable file EXAMPLE.EXE, use the following command: 
  9470.  
  9471.     rc example
  9472.  
  9473.  You do not need to specify the .RC extension. RC creates the binary resource 
  9474.  file EXAMPLE.RES and adds the compiled resource to the executable file 
  9475.  EXAMPLE.EXE. 
  9476.  
  9477.  To compile the resource script file EXAMPLE.RC into a binary resource file 
  9478.  without adding the resources to an executable file, use the following command: 
  9479.  
  9480.     rc -r example
  9481.  
  9482.  The compiler creates the binary resource file EXAMPLE.RES. To create a binary 
  9483.  resource file that has a name different from the resource script file, use the 
  9484.  following command: 
  9485.  
  9486.     rc -r example newfile.res
  9487.  
  9488.  To add the compiled resources in the binary resource file EXAMPLE.RES to an 
  9489.  executable file, use the following command: 
  9490.  
  9491.     rc example.res
  9492.  
  9493.  To specify the name of the executable file, if the name is different from the 
  9494.  resource file, use the following command: 
  9495.  
  9496.     rc example.res newfile.exe
  9497.  
  9498.  To add the compiled resources to a dynamic-link-library (.DLL) file, use the 
  9499.  following command: 
  9500.  
  9501.     rc example.res dynalink.dll
  9502.  
  9503.  
  9504. ΓòÉΓòÉΓòÉ 21.2. Command-Line Options ΓòÉΓòÉΓòÉ
  9505.  
  9506. The following options can be specified on the Resource Compiler command line: 
  9507.  
  9508.  -d <defname>[=<value>] Define macro to preprocessor 
  9509.  -i <pathspec>       Include file path 
  9510.  -n                  Suppress the display of the logo and the copyright 
  9511.                      information 
  9512.  -r                  Create .res file 
  9513.  -p                  Pack - 386 resources will not cross 64K boundaries. 
  9514.  -cp <cp>            Code page 
  9515.  -x[{1|2}]           Exepack - compress resources, using method 1 or 2. 
  9516.  -w2                 Suppress the display of all warning and informational 
  9517.                      messages. Errors and fatal errors continue to be 
  9518.                      displayed. 
  9519.  -h (or -?)          Access Help 
  9520.  
  9521.  Leave a blank after the letter when using option -d, -i , or -cp. Uppercase or 
  9522.  lowercase letters can be used. 
  9523.  
  9524.  If you omit the space after -d, the option works correctly although you 
  9525.  receive an informational message stating that an invalid option was specified. 
  9526.  
  9527.  
  9528. ΓòÉΓòÉΓòÉ 21.2.1. Explanation of Command-Line Options ΓòÉΓòÉΓòÉ
  9529.  
  9530. The -d option is useful for passing conditional-compilation flags to the 
  9531. preprocessor. The <defname> is a sequence of letters, underscore symbols, and 
  9532. digits which does not begin with a digit. The <value> is a sequence of symbols 
  9533. which you want to substitute for the <defname> wherever it appears in the input 
  9534. script file.  If you omit the =<value>, the <defname> will be set to the 
  9535. default value 1. For example, the option -d _3d is equivalent to including at 
  9536. the beginning of the input file this line: 
  9537.  
  9538. #define   _3d     1 
  9539.  
  9540. You can use the -d option up to 8 times to define different macros from the 
  9541. command line. 
  9542.  
  9543. The -i option defines paths for files to be included with the source file. The 
  9544. <pathspec> is any path where you want RC to search for files included by the 
  9545. preprocessor #include directive.  The <pathspec> must not contain embedded 
  9546. blanks.  To include more than one path, code the -i option once for each path. 
  9547. The preprocessor reads paths from the INCLUDE environment variable after 
  9548. reading the paths you provide with -i options. 
  9549.  
  9550. The -r option will create in your current directory a binary resource file 
  9551. containing the resources you compile.  The -r option takes no argument.  The 
  9552. name given to this binary resource file will be the same as the name of the 
  9553. input resource script file except that the extension will be .RES instead of 
  9554. .RC. When you use -r, you do not bind resources to an executable file. 
  9555.  
  9556. The -p option is used only when binding resources to an executable.  It 
  9557. positions resources so that they do not cross 64K boundaries. 
  9558.  
  9559. The -cp option is used to specify code page information for the resource script 
  9560. file to be compiled. The <codepage> is a numeric code page value. For a list of 
  9561. code page values, see the code page table under COUNTRYCODE in the online book 
  9562. OS/2 Warp Control Program Programming Reference. 
  9563.  
  9564. The -x option is used only when binding resources to an executable.  It causes 
  9565. resources to be compressed.  These resources will be decompressed automatically 
  9566. when the resource is accessed. 
  9567.  
  9568. The -x1 option causes Resource Compiler to use the compression algorithm that 
  9569. is compatible with OS/2 2.0, 2.1, and 2.11, as well as OS/2 3.0 and later. 
  9570.  
  9571. The -x2 option causes Resource Compiler to use a compression algorithm that is 
  9572. compatible with OS/2 3.0 and later. The -x2 option will produce smaller 
  9573. executable files that can access resources faster. 
  9574.  
  9575. -x with no number defaults to -x1. 
  9576.  
  9577. The -n option (nologo) causes Resource Compiler to suppress the display of the 
  9578. logo and the copyright information. 
  9579.  
  9580. The -w2 option causes Resource Compiler to suppress the display of all warning 
  9581. and informational messages. Errors and fatal errors continue to be displayed. 
  9582.  
  9583. The -h and -? options cause Resource Compiler to display a summary of the 
  9584. available options and environment variables that it uses.  When you use these 
  9585. options, Resource Compiler does not read any input files. Entering "RC" on the 
  9586. command line with no operands displays the same information. 
  9587.  
  9588.  
  9589. ΓòÉΓòÉΓòÉ 21.2.2. Code Pages ΓòÉΓòÉΓòÉ
  9590.  
  9591. In addition to -r, RC offers the -cp command-line option that lets you specify 
  9592. a code-page identifier. The syntax is as follows: 
  9593.  
  9594.   -cp codepage-id
  9595.  
  9596. The codepage-id field contains a valid code page. For a complete list of 
  9597. supported code pages, see the code page table under COUNTRYCODE in the online 
  9598. book OS/2 Warp Control Program Programming Guide and Reference. 
  9599.  
  9600.  
  9601. ΓòÉΓòÉΓòÉ 21.2.3. Defining Constants ΓòÉΓòÉΓòÉ
  9602.  
  9603. The -d option lets you define up to eight symbolic constants on the command 
  9604. line.  The syntax is as follows: 
  9605.  
  9606.   -d defname[=value]
  9607.  
  9608. In the previous example, defname is a name, and value is an integer constant, 
  9609. or an expression. The -d option is useful for passing conditional-compilation 
  9610. flags to the RC preprocessor. 
  9611.  
  9612. The following example specifies a Japanese code-page identifier and also 
  9613. defines two symbolic constants to be passed to the preprocessor as 
  9614. conditional-compilation flags. 
  9615.  
  9616.   rc -cp 942 -d DEBUG -d VERSION=2 example
  9617.  
  9618. Note:  RC creates many temporary files and writes them to the directory 
  9619. indicated by the TMP or TEMP environment variable.  If RC cannot write these 
  9620. temporary files to this directory, it writes them to the current directory. 
  9621.  
  9622.  
  9623. ΓòÉΓòÉΓòÉ 21.2.4. Online Help ΓòÉΓòÉΓòÉ
  9624.  
  9625. To display Resource Compiler help, type RC with no parameters, at a command 
  9626. prompt. The appropriate copyright statement will be displayed, along with a 
  9627. list of Resource Compiler options. You can also display this list by using the 
  9628. command-line options -h or -?. 
  9629.  
  9630. Usage:  rc [<options>] <.RC input file> [<.EXE output file>]
  9631.    or:  rc [<options>] <.RES input file> [<.EXE output file>]
  9632.    or:  rc [<options>] -r <.RC input file> [<.RES output file>]
  9633.  
  9634.         -d <defname>    - Preprocessor define
  9635.         -D <defname>    - Preprocessor define
  9636.         -i <path>       - Include file path
  9637.         -r              - Create .res file
  9638.         -p              - Pack - 386 resources will not cross 64K boundaries
  9639.         -x[1|2]         - Exepack - Compress resources, using method 1 or 2
  9640.         -cp <cp>        - Code page
  9641.         -n              - Don't show logo
  9642.         -w2             - Suppress warnings
  9643.         -?              - Access Help
  9644.         -h              - Access Help
  9645.  
  9646. Environment variables:
  9647.         DBCS=<cp>
  9648.         TMP=<temporary file path>
  9649.         TEMP=<temporary file path>
  9650.         INCLUDE=<include file path>; ...
  9651.  
  9652. Note:  Option -X2 will compress executable files that run only on OS/2 versions 
  9653.        3.0 and later. 
  9654.  
  9655.  
  9656. ΓòÉΓòÉΓòÉ 21.3. Resource Script Files ΓòÉΓòÉΓòÉ
  9657.  
  9658. This topic describes the resource script file used to define your application 
  9659. resources and explains how to compile the file and add the resources to your 
  9660. executable file. 
  9661.  
  9662. Use the Resource Compiler to perform the following actions: 
  9663.  
  9664.      Create a resource script file. 
  9665.  
  9666.      Compile the file. 
  9667.  
  9668.      Add the file to the executable file of your application (optional). 
  9669.  
  9670.  The following sections describe the resource script file and the RC program. 
  9671.  
  9672.  
  9673. ΓòÉΓòÉΓòÉ 21.3.1. About Resource Statements ΓòÉΓòÉΓòÉ
  9674.  
  9675. Resource statements have three basic forms: 
  9676.  
  9677.      Single-line Statements 
  9678.      Multiple-line Statements 
  9679.      Directives 
  9680.  
  9681.  Each resource statement consists of one or more 
  9682.  
  9683.      Keywords 
  9684.      Numbers 
  9685.      Expressions 
  9686.      Character Strings 
  9687.      Constants 
  9688.      File Names 
  9689.  
  9690.  You combine these to define the resource type, identifier, and data. 
  9691.  
  9692.  
  9693. ΓòÉΓòÉΓòÉ 21.3.1.1. Single-line Statements ΓòÉΓòÉΓòÉ
  9694.  
  9695. Single-line statements consist of a keyword identifying the resource type, a 
  9696. number or character string which specifies the resource identifier, and a file 
  9697. name specifying the file containing the resource data.  For example, this ICON 
  9698. statement defines an icon resource: 
  9699.  
  9700.     ICON 1 myicon.ico
  9701.  
  9702. The icon resource has the icon identifier 1.  The file MYICON.ICO contains the 
  9703. icon data.  The same example, using character strings for identifiers is shown 
  9704. below: 
  9705.  
  9706.     ICON "MyIcon" myicon.ico
  9707.  
  9708.  
  9709. ΓòÉΓòÉΓòÉ 21.3.1.2. Multiple-line Statements ΓòÉΓòÉΓòÉ
  9710.  
  9711. Multiple-line statements consist of a keyword identifying the resource type, a 
  9712. number or character string which specifies the resource identifier, and, 
  9713. between the BEGIN and END keywords, additional resource statements that define 
  9714. the resource data.  For example, this MENU statement defines a menu resource: 
  9715.  
  9716.     MENU 1
  9717.     BEGIN
  9718.         MENUITEM "Alpha", 101
  9719.         MENUITEM "Beta",  102
  9720.     END
  9721.  
  9722. The menu identifier is 1.  The menu contains two MENUITEM statements that 
  9723. define the contents of the menu.  In multiple-line statements such as 
  9724. DLGTEMPLATE and WINDOWTEMPLATE, RC allows any level of nested statements. For 
  9725. example, the DLGTEMPLATE and WINDOWTEMPLATE statements typically contain a 
  9726. single DIALOG or FRAME statement.  These statements can contain any number of 
  9727. WINDOW and CONTROL statements; the WINDOW and CONTROL statements can contain 
  9728. additional WINDOW and CONTROL statements; and so on.  The nested statements let 
  9729. you define controls and other child windows for the dialog boxes and windows. 
  9730. If a nested statement creates a child window or control, the parent and owner 
  9731. of the new window is the window created by the containing statement.  (FRAME 
  9732. statements occasionally create frame controls whose parent and owner windows 
  9733. are not the same.) 
  9734.  
  9735.  
  9736. ΓòÉΓòÉΓòÉ 21.3.1.3. Directives ΓòÉΓòÉΓòÉ
  9737.  
  9738. Directives consist of the reserved character # in the first column of a line, 
  9739. followed by the directive keyword and any additional numbers, character 
  9740. strings, or file names.  Valid directives include: 
  9741.  
  9742. #define
  9743. #include
  9744. #if
  9745. #ifdef
  9746. #ifndef
  9747. #else
  9748. #elif
  9749. #endif
  9750. #undef
  9751.  
  9752.  
  9753. ΓòÉΓòÉΓòÉ 21.3.1.4. Keywords ΓòÉΓòÉΓòÉ
  9754.  
  9755. Keywords are words that have a special meaning to the Resource Compiler.  In a 
  9756. statement, keywords specify the resource type, the directive, the memory 
  9757. options, and the beginning and ending of nested statements.  You can use 
  9758. keywords only as specified in the statement syntax. 
  9759.  
  9760. Keywords, except for those specifying directives, can be any combination of 
  9761. uppercase and lowercase letters.  Note that the left and right braces, { and }, 
  9762. are reserved characters.  You can use them in place of the BEGIN and END 
  9763. keywords, respectively. 
  9764.  
  9765.  
  9766. ΓòÉΓòÉΓòÉ 21.3.1.5. Numbers ΓòÉΓòÉΓòÉ
  9767.  
  9768. Numbers are integers that represent coordinates, dimensions, styles, and other 
  9769. numeric data.  You can specify numbers in decimal or in hexadecimal notation: 
  9770.  
  9771.      Decimal numbers must contain decimal digits but can start with a minus 
  9772.       sign (-) when they represent a negative number. 
  9773.  
  9774.      Hexadecimal numbers must contain hexadecimal digits (uppercase or 
  9775.       lowercase) and must start with the characters 0x or 0X. (These begin with 
  9776.       the digit zero.) 
  9777.  
  9778.  The following example shows several numbers represented in decimal and 
  9779.  hexadecimal notation: 
  9780.  
  9781.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9782.   ΓöéDecimal                       ΓöéHexadecimal                   Γöé
  9783.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9784.   Γöé1                             Γöé0x1                           Γöé
  9785.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9786.   Γöé10                            Γöé0xA                           Γöé
  9787.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9788.   Γöé255                           Γöé0xFF                          Γöé
  9789.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9790.   Γöé-1                            Γöé                              Γöé
  9791.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9792.   Γöé65535                         Γöé0xFFFF                        Γöé
  9793.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9794.  
  9795.  Statements that create controls in dialog windows and menu items require that 
  9796.  you specify an identifier for each control or menu item.  Statements that 
  9797.  create controls also require you to specify coordinates and dimensions. You 
  9798.  specify identifiers, coordinates and dimensions using integers or simple 
  9799.  expressions that evaluate to integers in the appropriate range.  This enables 
  9800.  you to specify identifiers, dimensions, and coordinates that are relative to 
  9801.  those of the corresponding dialog window or menu.  A resource identifier 
  9802.  encoded as an expression must resolve to an unsigned integer, not a string. 
  9803.  
  9804.  The ranges specific to number types are listed in the following table. 
  9805.  
  9806.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9807.   Γöé                    ΓöéSigned Range                            ΓöéUnsigned Range                ΓöéStrings             Γöé
  9808.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9809.   ΓöéIdentifiers         Γöé-32768 through 32767                    Γöé1 through 65535               ΓöéYes                 Γöé
  9810.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9811.   ΓöéCoordinates         Γöé-32768 through 32767                    Γöé0 through 65535               ΓöéNo                  Γöé
  9812.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9813.   ΓöéDimensions          ΓöéNot applicable                          Γöé0 through 65535               ΓöéNo                  Γöé
  9814.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9815.  
  9816.  
  9817. ΓòÉΓòÉΓòÉ 21.3.1.6. Expressions ΓòÉΓòÉΓòÉ
  9818.  
  9819. Expressions can be used whenever numbers can be used in a resource script file. 
  9820. An expression is a sequence of operators and operands that are evaluated to 
  9821. derive a numeric result.  The result of an expression can be used whenever 
  9822. Resource Compiler expects a numeric value.  The precedence and associativity of 
  9823. operators will be the same as the standard C programming language.  Expressions 
  9824. may be nested within other expressions. 
  9825.  
  9826. An example of operator precedence is illustrated by the following expression: 
  9827.  
  9828.     3 + 4 * 2
  9829.  
  9830. Because the multiplication operator (*) has a higher precedence than the 
  9831. addition operator (+), the computation 4 * 2 will be performed first. 
  9832.  
  9833. An example of operator associativity is illustrated by the following 
  9834. expression: 
  9835.  
  9836.     8 / 2 * 3
  9837.  
  9838. Because both the division (/) and multiplication (*) operators are at the same 
  9839. precedence level, their left-to-right associative property causes the 
  9840. computation 8 / 2 to be performed first. 
  9841.  
  9842. A Unary Expression consists of one operand and a unary operator. 
  9843.  
  9844.     (-1) is a unary expression.
  9845.  
  9846. A Binary Expression contains two operands separated by one operator. 
  9847.  
  9848.     (3 + 4)  is a binary arithmetic expression having evaluated value as 7.
  9849.     (2 < 1)  is a binary logical expression having evaluated value as 0 (False).
  9850.     (1 < 2)  is a binary logical expression having evaluated value as 1 (True).
  9851.     (2 << 1) is a binary left shift expression having evaluated value as 4.
  9852.     (4 >> 1) is a binary right shift expression having evaluated value as 2.
  9853.     (15 % 4) is a binary modulus expression having evaluated value as 3 (remainder).
  9854.  
  9855. The following example specifies the resource ID as the number 12: 
  9856.  
  9857.     ICON 12 myfile.ico
  9858.  
  9859. This same resource ID can also be specified in the form of an expression, as 
  9860. shown here: 
  9861.  
  9862.     #define BASE_ID         10
  9863.     #define ICON_OFFSET_ID  2
  9864.     ICON (BASE_ID + ICON_OFFSET_ID) myfile.ico
  9865.  
  9866. The constants BASE_ID and ICON_OFFSET_ID will be replaced with their macro 
  9867. values.  The result of the evaluated expression (10 + 2) will be 12 which is 
  9868. the same as in the first example.  The number 10 and 2 are operands in the 
  9869. expression and the symbol plus (+) is the operator applied on operands 10 and 
  9870. 2. 
  9871.  
  9872. Although the enclosing parentheses are not required, it is a good practice to 
  9873. enclose the expression in parentheses indicating that the whole expression 
  9874. constitutes a single parameter. 
  9875.  
  9876. The following table mentions the valid operators that can be used in an 
  9877. expression. 
  9878.  
  9879. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9880. ΓöéOperator            ΓöéSymbol              ΓöéType                Γöé
  9881. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9882. Γöéadd                 Γöé+                   Γöébinary              Γöé
  9883. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9884. Γöéand                 Γöé&                   Γöébinary              Γöé
  9885. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9886. Γöéand if              Γöé&&                  Γöébinary              Γöé
  9887. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9888. Γöébitwise exclusive orΓöé^                   Γöébinary              Γöé
  9889. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9890. Γöébitwise negation    Γöé~                   Γöéunary               Γöé
  9891. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9892. Γöébitwise negation    ΓöéNOT                 Γöéunary               Γöé
  9893. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9894. Γöédivide              Γöé/                   Γöébinary              Γöé
  9895. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9896. Γöéequals              Γöé=                   Γöébinary              Γöé
  9897. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9898. Γöégreater than        Γöé>                   Γöébinary              Γöé
  9899. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9900. Γöéleft shift          Γöé<<                  Γöébinary              Γöé
  9901. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9902. Γöéless than           Γöé<                   Γöébinary              Γöé
  9903. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9904. Γöéless than           Γöé<                   Γöébinary              Γöé
  9905. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9906. Γöélogical negation    Γöé!                   Γöéunary               Γöé
  9907. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9908. Γöéminus               Γöé-                   Γöébinary              Γöé
  9909. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9910. Γöémodulus             Γöé%                   Γöébinary              Γöé
  9911. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9912. Γöémultiply            Γöé*                   Γöébinary              Γöé
  9913. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9914. Γöénot equal           Γöé!=                  Γöébinary              Γöé
  9915. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9916. Γöénot less than       Γöé>=                  Γöébinary              Γöé
  9917. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9918. Γöénot greater than    Γöé<=                  Γöébinary              Γöé
  9919. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9920. Γöéor                  Γöé|                   Γöébinary              Γöé
  9921. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9922. Γöéor else             Γöé||                  Γöébinary              Γöé
  9923. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9924. Γöéright shift         Γöé>>                  Γöébinary              Γöé
  9925. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9926.  
  9927. Note:  The unary NOT operator is used only in the style field of resource 
  9928.        statements.  If operator NOT is encountered with the operands in an 
  9929.        expression, it will be translated as a ~ character. 
  9930.  
  9931. Any typecast with an operand will be ignored and a warning message will be 
  9932. generated.  For example, the expression ((long)3 + (short)2) has typecast 
  9933. (long) with operand 3 and typecast (short) with operand 2. The typecasts have 
  9934. no effect on expression evaluation. 
  9935.  
  9936.  
  9937. ΓòÉΓòÉΓòÉ 21.3.1.7. Character Strings ΓòÉΓòÉΓòÉ
  9938.  
  9939. A character string, which may also be called a string constant or string 
  9940. literal, contains a sequence of characters or escape sequences enclosed in 
  9941. double quotation mark symbols. Character strings represent names, labels, 
  9942. titles, and messages.  The meaning of each character value depends on the code 
  9943. page (character set) defined for the resource script file. 
  9944.  
  9945. A string constant has the form: 
  9946.  
  9947.        ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9948.  >ΓöÇΓöÇΓöÇ"ΓöÇΓö┤Γö¼ΓöÇΓöÇcharacterΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇ"ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ>
  9949.         ΓööΓöÇescape_sequenceΓöÇΓöÿ
  9950.  
  9951. Where: 
  9952.  
  9953.  character The ASCII value of the character must be in the range 1 through 255. 
  9954.  
  9955.  escape_sequence You can represent any member of the character set by an escape 
  9956.            sequence. For example, you can use escape sequences to place such 
  9957.            characters as tab, carriage return, and backspace in the character 
  9958.            string.  An escape sequence contains a backslash (\) character 
  9959.            followed by one of the escape sequence characters: a, b, f, n, r, t, 
  9960.            v, ', ", ?, \ or followed by an octal or hexadecimal number. 
  9961.  
  9962.            A hexadecimal escape sequence contains an character x followed by 
  9963.            one or more hexadecimal digits (0-9, A-F, a-f).  An octal escape 
  9964.            sequence contains one or more octal digits (0-7).  The value of the 
  9965.            hexadecimal or octal number specifies the value of the desired 
  9966.            character. 
  9967.  
  9968.  An escape sequence has the form: 
  9969.  
  9970.    >ΓöÇΓöÇΓöÇ\ΓöÇΓöÇΓö¼ΓöÇescape_sequence_characterΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ><
  9971.           Γö£ΓöÇoctal_digitsΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9972.           ΓööΓöÇxΓöÇhexadecimal_digitsΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9973.  
  9974.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9975.   ΓöéEscape sequence               ΓöéCharacter Represented         Γöé
  9976.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9977.   Γöé\a                            ΓöéAlert (bell)                  Γöé
  9978.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9979.   Γöé\b                            ΓöéBackspace                     Γöé
  9980.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9981.   Γöé\f                            ΓöéForm feed (new page)          Γöé
  9982.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9983.   Γöé\n                            ΓöéNewline                       Γöé
  9984.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9985.   Γöé\nnn                          ΓöéOctal character               Γöé
  9986.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9987.   Γöé\xdd                          ΓöéHexadecimal character         Γöé
  9988.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9989.   Γöé\r                            ΓöéCarriage return               Γöé
  9990.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9991.   Γöé\t                            ΓöéHorizontal tab                Γöé
  9992.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9993.   Γöé\v                            ΓöéVertical tab                  Γöé
  9994.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9995.   Γöé\'                            ΓöéSingle quotation mark         Γöé
  9996.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9997.   Γöé\"                            ΓöéDouble quotation mark         Γöé
  9998.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9999.   Γöé\?                            ΓöéQuestion mark                 Γöé
  10000.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10001.   Γöé\\                            ΓöéBackslash                     Γöé
  10002.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10003.  
  10004.  When you want the backslash to represent itself (rather than the beginning of 
  10005.  an escape sequence), you must use a \\ (two backslashes) escape sequence. 
  10006.  
  10007.  If two consecutive strings appear on the same source line without any space 
  10008.  between these two strings, the strings will be merged with an embedded quote. 
  10009.  
  10010.       /* Source Line 1 */ "String 1""String 2"
  10011.  
  10012.  Here two strings are specified on the same line with no space between the 
  10013.  strings.  These strings will be merged as - String 1"String 2.  Here the 
  10014.  ending double quote of first string and begin double quote of second string 
  10015.  creates the effect of embedded double quotes inside the merged string. These 
  10016.  consecutive double quote characters will be translated as a single double 
  10017.  quote character.  This is the same representation as shown below: 
  10018.  
  10019.       /* Source Line 1 */ "String 1\"String 2"
  10020.  
  10021.  Here an escape sequence \" is used to include double quote character inside 
  10022.  the string.  This is the recommended representation to include a double quote 
  10023.  character inside the string. 
  10024.  
  10025.  If one or more consecutive strings are separated by one or more spaces (the 
  10026.  end of source line is considered as space also), then strings will be 
  10027.  concatenated to produce a single string.  See the following example: 
  10028.  
  10029.       /* Source Line 1 */ "String 3:" "String 4",
  10030.       /* Source Line 2 */ "String 5:"
  10031.       /* Source Line 3 */ "String 6"
  10032.  
  10033.  The two strings "String 3:" and "String 4" specified on source line 1 are on 
  10034.  the same line separated with a single blank.  These two strings will be 
  10035.  concatenated as shown below: 
  10036.  
  10037.       String 3:String 4
  10038.  
  10039.  The two strings "String 5:" and "String 6" specified on source lines 2 and 3 
  10040.  are on different source lines.  These two strings will be concatenated the 
  10041.  same way as with strings specified on source line 1. 
  10042.  
  10043.       String 5:String 6
  10044.  
  10045.  Note that the comma had been specified after the "String 4" in source line 1 
  10046.  to stop the concatenation of strings on source lines 2 and 3.  If that comma 
  10047.  had not been specified, then all the strings on source lines 1, 2, and 3 would 
  10048.  have been merged as shown in the following example: 
  10049.  
  10050.       String 3:String4String5:String6
  10051.  
  10052.  If the string has no ending double quote mark at the end of the source line, 
  10053.  then the physical end of source line will generate a newline character as part 
  10054.  of the string data. 
  10055.  
  10056.       "This string on source line 1
  10057.       is continued on source line 2"
  10058.  
  10059.  In the above example, the newline character (hex 0A) will be inserted after 
  10060.  character 1.  This representation is equivalent to the following example. 
  10061.  
  10062.       "This string on source line 1\nis continued on source line 2"
  10063.  
  10064.  Here the escape sequence \n is used to generate newline character (hex 0A) 
  10065.  between two strings. 
  10066.  
  10067.       "String on Line 1
  10068.         String on Line 2"
  10069.  
  10070.  In the above example, the second string on line 2 is specified with two 
  10071.  leading spaces.  These leading spaces will be part of the string data.  If you 
  10072.  do not want any leading space on the strings that span next lines, then start 
  10073.  the strings in column 1 on the next lines.  This representation is equivalent 
  10074.  to the following example. 
  10075.  
  10076.       "String on Line 1\n  String on Line 2"
  10077.  
  10078.       You can use an another approach like the following example:
  10079.  
  10080.       "String on Line 1\n"
  10081.                      " String on Line 2"
  10082.  
  10083.  This approach is more readable.  Here the concatenation operation will be 
  10084.  performed on both strings without worry about the leading spaces before the 
  10085.  string " String on Line 2".  Leading spaces are provided inside the second 
  10086.  string so you can place second string on the next line at the indented place. 
  10087.  See the following STRINGTABLE statement example. 
  10088.  
  10089.       STRINGTABLE
  10090.       {
  10091.          1, "The data on disk will be erased\n"
  10092.             "Are you sure (Y/N) \?"
  10093.       }
  10094.  
  10095.  You can use the escape sequence \n to represent a new-line character as part 
  10096.  of the string.  You can use the escape \\ to represent a backslash character 
  10097.  as part of the string.  You can use the escape \" to present the double 
  10098.  quotation mark symbol as part of the string.  You can include any ASCII 
  10099.  character in a character string by specifying \xdd, where dd is the 
  10100.  hexadecimal representation of an ASCII character.  An error message is issued 
  10101.  if an escape sequence is not recognized. 
  10102.  
  10103.  In addition, when character strings are used as resource identifiers 
  10104.  additional rules apply: 
  10105.  
  10106.      They must be enclosed in double quotation marks (").  If a double 
  10107.       quotation mark is needed inside the string, it is encoded as two 
  10108.       consecutive double quotation marks. 
  10109.  
  10110.      They cannot contain any character larger than 0x7F. 
  10111.  
  10112.      They must be delimited by whitespace, just as an integer ID is. 
  10113.  
  10114.      Resources whose resource ID is compiled into a 16-bit value in the binary 
  10115.       data area, such as MENUITEM with its menu-id field, or HELPSUBITEM with 
  10116.       its child-window-id field, cannot use character strings for IDs. 
  10117.  
  10118.      They can contain an embedded newline character by continuing the string 
  10119.       on the following line without closing the string.  When the input file 
  10120.       represents newlines as 0x0D+0x0A or by 0x0D+0x0D+0x0A, the string is 
  10121.       compiled with the sequence 0x0A to represent the newline. 
  10122.  
  10123.      Duplicate string IDs are not permitted for resources of the same type. 
  10124.       However, the same string resource identifier can be used to identify 
  10125.       resources of different types. 
  10126.  
  10127.       When the Resource Compiler is compiling a script file and encounters more 
  10128.       than one resource of the same type having the same string ID, it will 
  10129.       generate an error message and stop compiling the file.  When the Resource 
  10130.       Compiler is binding a .RES file and encounters more than one resource of 
  10131.       the same type with the same string ID, it will generate a warning message 
  10132.       and ignore the second resource identifier; only the first resource having 
  10133.       the duplicated identifier will be bound to the file. 
  10134.  
  10135.  
  10136. ΓòÉΓòÉΓòÉ 21.3.1.8. Constants ΓòÉΓòÉΓòÉ
  10137.  
  10138. Constants are names that have been assigned values by using a #define directive 
  10139. or a -D command-line option.  A constant can represent a number, a character 
  10140. string, or other data.  Most resource statements in a resource script file use 
  10141. constants, and many use the constants defined in system header files.  For this 
  10142. reason, you should consider using the #include directive to include the 
  10143. appropriate system header file in your resource script file. 
  10144.  
  10145.  
  10146. ΓòÉΓòÉΓòÉ 21.3.1.9. File Names ΓòÉΓòÉΓòÉ
  10147.  
  10148. File names are OS/2 file names.  If the specified file is not in the current 
  10149. directory, you must specify the drive, directory, and file name. 
  10150.  
  10151.  
  10152. ΓòÉΓòÉΓòÉ 21.3.1.10. Binary Resource Files ΓòÉΓòÉΓòÉ
  10153.  
  10154. The binary resource file created by the Resource Compiler consists of one or 
  10155. more resource entries, each in the following form: 
  10156.  
  10157.   struct {
  10158.       UCHAR  fResType;
  10159.       USHORT usResType;
  10160.       union {
  10161.           struct {
  10162.               UCHAR  fResID;
  10163.               USHORT resid;
  10164.           };
  10165.           UCHAR resname[];
  10166.       };
  10167.       USHORT fsOptions;
  10168.       ULONG  cb;
  10169.       BYTE   bytes[1];
  10170.   };
  10171.  
  10172. The fields in each entry have the following meanings: 
  10173.  
  10174.  fRestype              Specifies whether the resource-type identifier is a 
  10175.                        string or an integer. For OS/2, the resource type is 
  10176.                        always an integer and this field is set to 0xFF. 
  10177.  
  10178.  usResType             Specifies the resource-type identifier. This value is a 
  10179.                        signed integer in the range -32768 through 32767, an 
  10180.                        unsigned integer in the range of 1 through 65535, or a 
  10181.                        character string. The following resource types are 
  10182.                        predefined: 
  10183.  
  10184.                        RT_ACCELTABLE              Accelerator table 
  10185.                        RT_BITMAP                  Bitmap 
  10186.                        RT_CHARTBL                 Character table 
  10187.                        RT_DIALOG                  Dialog template 
  10188.                        RT_DISPLAYINFO             Display information 
  10189.                        RT_DLGINCLUDE              Dialog include-file name 
  10190.                        RT_FKALONG                 Long-form function-key area 
  10191.                        RT_FKASHORT                Short-form function-key area 
  10192.                        RT_FONT                    Font 
  10193.                        RT_FONTDIR                 Font directory 
  10194.                        RT_HELPSUBTABLE            Help subtable 
  10195.                        RT_HELPTABLE               Help table 
  10196.                        RT_KEYTBL                  Key table 
  10197.                        RT_MENU                    Menu template 
  10198.                        RT_MESSAGE                 Error-message table 
  10199.                        RT_POINTER                 Mouse-pointer shape 
  10200.                        RT_RCDATA                  Binary data 
  10201.                        RT_STRING                  String table 
  10202.                        RT_VKEYTBL                 Virtual key table 
  10203.                        RT_RESNAMES                String ID table 
  10204.  
  10205.  fResID                Specifies whether the resource identifier is a string or 
  10206.                        an integer. For the OS/2 operating system, this field is 
  10207.                        set to 0xFF to indicate that the resource identifier is 
  10208.                        an integer. 
  10209.  
  10210.  resid                 Specifies the resource identifier. This value is an 
  10211.                        unsigned integer in the range of 1 through 65535. 
  10212.  
  10213.  resname               Specifies a string resource identifier as a sequence of 
  10214.                        characters ending with a 0x00 value. 
  10215.  
  10216.  fsOptions             Specifies the load and memory options.  This value can 
  10217.                        be a combination of the following: 
  10218.  
  10219.                        0x0010           MOVEABLE resource.  If not given, the 
  10220.                                         resource is FIXED. 
  10221.                        0x0040           PRELOAD resource.  If not given, the 
  10222.                                         resource is LOADONCALL. 
  10223.                        0x1000           DISCARDABLE resource. 
  10224.  
  10225.  cb                    Specifies the size of the resource (in bytes). 
  10226.  
  10227.  bytes                 Contains the resource. 
  10228.  
  10229.  Note:  There is a size limitation of 65280 bytes for a binary resource file. 
  10230.  
  10231.  
  10232. ΓòÉΓòÉΓòÉ 21.3.2. Statements and Directives ΓòÉΓòÉΓòÉ
  10233.  
  10234. The following statements and directives are used by the Resource Compiler (RC): 
  10235.  
  10236.       ACCELTABLE Statement 
  10237.       ASSOCTABLE Statement 
  10238.       AUTOCHECKBOX Statement 
  10239.       AUTORADIOBUTTON Statement 
  10240.       BITMAP Statement 
  10241.       CHECKBOX Statement 
  10242.       CODEPAGE Statement 
  10243.       COMBOBOX Statement 
  10244.       CONTAINER Statement 
  10245.       CONTROL Statement 
  10246.       CTEXT Statement 
  10247.       CTLDATA Statement 
  10248.       DEFAULTICON Statement 
  10249.       define Directive 
  10250.       DEFPUSHBUTTON Statement 
  10251.       DIALOG Statement 
  10252.       DLGINCLUDE Statement 
  10253.       DLGTEMPLATE Statement 
  10254.       EDITTEXT Statement 
  10255.       elif Directive 
  10256.       else Directive 
  10257.       endif Directive 
  10258.       ENTRYFIELD Statement 
  10259.       FONT Statement 
  10260.       FRAME Statement 
  10261.       GROUPBOX Statement 
  10262.       HELPITEM Statement 
  10263.       HELPSUBITEM Statement 
  10264.       HELPSUBTABLE Statement 
  10265.       HELPTABLE Statement 
  10266.       ICON Statement (Resource) 
  10267.       ICON Statement (Control) 
  10268.       if Directive 
  10269.       ifdef Directive 
  10270.       ifndef Directive 
  10271.       include Directive 
  10272.       LISTBOX Statement 
  10273.       LTEXT Statement 
  10274.       MENU Statement 
  10275.       MENUITEM Statement 
  10276.       MESSAGETABLE Statement 
  10277.       MLE Statement 
  10278.       NOTEBOOK Statement 
  10279.       POINTER Statement 
  10280.       PRESPARAMS Statement 
  10281.       PUSHBUTTON Statement 
  10282.       RADIOBUTTON Statement 
  10283.       RCDATA Statement 
  10284.       RCINCLUDE Statement 
  10285.       RESOURCE Statement 
  10286.       RTEXT Statement 
  10287.       SLIDER Statement 
  10288.       SPINBUTTON Statement 
  10289.       STRINGTABLE Statement 
  10290.       SUBITEMSIZE Statement 
  10291.       SUBMENU Statement 
  10292.       undef Directive 
  10293.       VALUESET Statement 
  10294.       WINDOW Statement 
  10295.       WINDOWTEMPLATE Statement 
  10296.  
  10297.  
  10298. ΓòÉΓòÉΓòÉ 21.3.2.1. ACCELTABLE Statement ΓòÉΓòÉΓòÉ
  10299.  
  10300. Syntax: 
  10301.  
  10302.   ACCELTABLE acceltable-id [mem-option] [code-page]
  10303.   BEGIN
  10304.   key-value, command[, accelerator-options]...
  10305.       .
  10306.       .
  10307.       .
  10308.   END
  10309.  
  10310. Description 
  10311.  
  10312. The ACCELTABLE statement creates a table of accelerators for an application. 
  10313. An accelerator is a keystroke that gives the user a quick way to choose a 
  10314. command from a menu or carry out some other task.  An accelerator table can be 
  10315. loaded when needed from the executable file by using the WinLoadAccelTable 
  10316. function. 
  10317.  
  10318. You can provide any number of ACCELTABLE statements in a resource script file. 
  10319. Each statement must specify a unique table identifier.  You can provide any 
  10320. number of accelerator definitions in an accelerator table; however, no two 
  10321. definitions in a table can specify the same key. 
  10322.  
  10323. Each accelerator definition must specify a key value and command. The 
  10324. WinSetAccelTable function used in the application translates the accelerator 
  10325. keystroke into a WM_COMMAND, WM_HELP, or WM_SYSCOMMAND message that has the 
  10326. corresponding command value.  The message type depends on the 
  10327. accelerator-option field. 
  10328.  
  10329.  acceltable-id     Specifies the accelerator-table identifier. This value must 
  10330.                    be an unsigned integer in the range of 1 through 65535, a 
  10331.                    simple expression that evaluates to a value in these ranges, 
  10332.                    or a character string. Each accelerator table in a resource 
  10333.                    script file must have a unique identifier. 
  10334.  mem-option        Specifies how the system manages the resource when it is in 
  10335.                    memory.  This value must be one of the following: 
  10336.                    Option              Meaning 
  10337.                    FIXED               System keeps the resource at a fixed 
  10338.                                        memory location. 
  10339.                    MOVEABLE            System moves the resource as necessary 
  10340.                                        to compact memory.  This is the default 
  10341.                                        option. 
  10342.                    DISCARDABLE         System discards the resource if it is no 
  10343.                                        longer needed. 
  10344.  code-page         Specifies a code page value. For a list of valid code pages 
  10345.                    see CODEPAGE Statement. 
  10346.  key-value         Specifies the character, scan, or virtual-key code of the 
  10347.                    accelerator key.  The meaning depends on the 
  10348.                    accelerator-options field.  The key-value field must be a 
  10349.                    single character enclosed in double-quotation marks or an 
  10350.                    integer in the range 0 through 255. If you specify an 
  10351.                    integer, you must specify the CHAR, SCANCODE, or VIRTUALKEY 
  10352.                    accelerator option; otherwise, the default option is CHAR. 
  10353.                    Integers must be in decimal or hexadecimal notation. 
  10354.  command           Specifies the command value for the corresponding 
  10355.                    WM_COMMAND, WM_HELP, or WM_SYSCOMMAND message.  This value 
  10356.                    must be a signed integer in the range 0 through 65535, or a 
  10357.                    simple expression that evaluates to an integer in that 
  10358.                    range. 
  10359.  accelerator-options Specifies the accelerator type.  This value can be a 
  10360.                    combination of the following: 
  10361.                    VIRTUALKEY           Specifies that the key-value field is a 
  10362.                                         virtual-key code. 
  10363.                    SCANCODE             Specifies that the key-value field is a 
  10364.                                         keyboard scan code. 
  10365.                    CHAR                 Specifies that the key-value field is a 
  10366.                                         character code. 
  10367.                    SHIFT                Specifies that the user must press the 
  10368.                                         Shift key and the key corresponding to 
  10369.                                         the key-value field to generate the 
  10370.                                         accelerator. 
  10371.                    CONTROL              Specifies that the user must press the 
  10372.                                         Ctrl key and the key corresponding to 
  10373.                                         the key-value field to generate the 
  10374.                                         accelerator. 
  10375.                    ALT                  Specifies that the user must press the 
  10376.                                         Alt key and the key corresponding to 
  10377.                                         the key-value field to generate the 
  10378.                                         accelerator. 
  10379.                    LONEKEY              Specifies that the user needs to press 
  10380.                                         only the key corresponding to the 
  10381.                                         key-value field to generate the 
  10382.                                         accelerator. 
  10383.                    SYSCOMMAND           Specifies that the accelerator 
  10384.                                         translates to a WM_SYSCOMMAND message. 
  10385.                                         If you do not include this option, the 
  10386.                                         accelerator translates to a WM_COMMAND 
  10387.                                         message. 
  10388.                    HELP                 Specifies that the accelerator 
  10389.                                         translates to a WM_HELP message.  If 
  10390.                                         you do not include this option, the 
  10391.                                         accelerator translates to a WM_COMMAND 
  10392.                                         message. 
  10393.  
  10394.  Note:  VIRTUALKEY, SCANCODE, and CHAR are mutually exclusive. SYSCOMMAND and 
  10395.  HELP are also mutually exclusive. 
  10396.  
  10397.  Comments 
  10398.  
  10399.  If two accelerators use the same key with different Shift, Control, or ALT 
  10400.  options, you should specify the more restrictive accelerator first in the 
  10401.  table.  For example, you should place Shift+Enter before Enter. 
  10402.  
  10403.  If you include the OS2.H header file, you can use the following constants to 
  10404.  specify the accelerator options: 
  10405.  
  10406.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10407.   ΓöéAF_ALT              ΓöéAF_CHAR             ΓöéAF_CONTROL          Γöé
  10408.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10409.   ΓöéAF_HELP             ΓöéAF_LONEKEY          ΓöéAF_SCANCODE         Γöé
  10410.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10411.   ΓöéAF_SHIFT            ΓöéAF_SYSCOMMAND       ΓöéAF_VIRTUALKEY       Γöé
  10412.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10413.  
  10414.  To combine these constants, you must use the bitwise OR (|) operator. 
  10415.  
  10416.  Example 
  10417.  
  10418.  This example creates an accelerator table whose accelerator-table identifier 
  10419.  is 1.  The table contains two accelerators:  Ctrl+S and Ctrl+G.  These 
  10420.  accelerators generate WM_COMMAND messages with values of 101 and 102, 
  10421.  respectively, when the user presses the corresponding keys. 
  10422.  
  10423.     ACCELTABLE 1
  10424.     BEGIN
  10425.         "S", 101, CONTROL
  10426.         "G", 102, CONTROL
  10427.     END
  10428.  
  10429.  
  10430. ΓòÉΓòÉΓòÉ 21.3.2.2. ASSOCTABLE Statement ΓòÉΓòÉΓòÉ
  10431.  
  10432. Syntax: 
  10433.  
  10434.   ASSOCTABLE assoctable-id [load-option][mem-option] [code-page]
  10435.   BEGIN
  10436.   association-name, file-match-string[, extended-attribute-flag]
  10437.      [, icon-filename]
  10438.     .
  10439.     .
  10440.     .
  10441.   END
  10442.  
  10443. Description 
  10444.  
  10445. The ASSOCTABLE statement defines a file-association table for an application. 
  10446. This table associates the data files that an application creates with the 
  10447. executable file of the application.  When the user selects one of these data 
  10448. files from File Manager, the associated application begins executing. 
  10449.  
  10450. A file-association table can also associate icons with the data files that an 
  10451. application creates.  The shell uses these icons to identify the data files 
  10452. graphically.  Because a file-association table associates icons by file type, 
  10453. all data files having the same file type have the same icon. 
  10454.  
  10455. You can provide any number of ASSOCTABLE statements in a resource script file, 
  10456. but each statement must specify a unique assoctable-id value.  The 
  10457. file-association tables are written not only to the resources within your 
  10458. executable file, but also to the .ASSOC extended attribute.  However, only the 
  10459. last file-association table specified in the resource script file is actually 
  10460. written to the extended attribute. 
  10461.  
  10462.  assoctable-id     Specifies the association-table identifier. This value must 
  10463.                    be an unsigned integer in the range of 1 through 65535, or a 
  10464.                    simple expression that evaluates to a value in these ranges. 
  10465.                    Character strings cannot be used as resource identifiers for 
  10466.                    this statement. 
  10467.  load-option       Specifies when the system loads the resource from the 
  10468.                    executable file into memory.  This value must be one of the 
  10469.                    following: 
  10470.                    PRELOAD             System loads the resource when the 
  10471.                                        application starts. 
  10472.                    LOADONCALL          System loads the resource when the 
  10473.                                        application calls the DosGetResource or 
  10474.                                        DosGetResource2 function.  This is the 
  10475.                                        default option. 
  10476.  mem-option        Specifies how the system manages the resource when it is in 
  10477.                    memory.  This value must be one of the following: 
  10478.                    FIXED               System keeps the resource at a fixed 
  10479.                                        memory location. 
  10480.                    MOVEABLE            System moves the resource as necessary 
  10481.                                        to compact memory.  This is the default 
  10482.                                        option. 
  10483.                    DISCARDABLE         System discards the resource if it is no 
  10484.                                        longer needed. 
  10485.  code-page         Specifies a code page value.  For a list of valid code pages 
  10486.                    see CODEPAGE Statement. 
  10487.  association-name  Specifies the name of the file type the application 
  10488.                    recognizes.  This field must contain zero or more characters 
  10489.                    enclosed in double quotation marks. 
  10490.  
  10491.                    Character values must be in the range 1 through 255.  If a 
  10492.                    double quotation mark is required in the name, you must 
  10493.                    include the double quotation mark twice. 
  10494.  file-match-string Specifies the file-matching string of a particular type of 
  10495.                    data file that the application creates. This field must 
  10496.                    contain zero or more characters enclosed in double quotation 
  10497.                    marks. You can only use characters that are valid in OS/2 
  10498.                    file names and extensions and the OS/2 wildcard characters 
  10499.                    question mark (?) and asterisk (*). 
  10500.  extended-attribute-flag Specifies the extended-attribute options. This value 
  10501.                    can be a combination of the following: 
  10502.                    EAF_DEFAULTOWNER           Specifies that the application 
  10503.                                               containing the file-association 
  10504.                                               table starts when the user 
  10505.                                               selects any file matching the 
  10506.                                               file-match-string field from File 
  10507.                                               Manager. 
  10508.                    EAF_REUSEICON              Specifies that the icon defined 
  10509.                                               in the previous entry of the 
  10510.                                               file-association table is used as 
  10511.                                               the icon for the current 
  10512.                                               data-file type. 
  10513.                    EAF_UNCHANGEABLE           Specifies that the entry should 
  10514.                                               not be edited. 
  10515.  icon-filename     Specifies the name of the file containing an icon. File 
  10516.                    Manager uses this icon to represent all application-created 
  10517.                    data files matching the file-match-string field.  The file 
  10518.                    must be in the current directory. 
  10519.  
  10520.  
  10521. ΓòÉΓòÉΓòÉ 21.3.2.3. AUTOCHECKBOX Statement ΓòÉΓòÉΓòÉ
  10522.  
  10523. Syntax: 
  10524.  
  10525.   AUTOCHECKBOX text, id, x, y, width, height[, style]
  10526.  
  10527. The AUTOCHECKBOX statement creates an automatic-check-box control. The control 
  10528. is a small rectangle (check box) that contains an X when the user selects it. 
  10529. The specified text is displayed to the right of the check box.  An X appears in 
  10530. the square when the user first selects the control and disappears the next time 
  10531. the user selects it.  The AUTOCHECKBOX statement, which you can use only in a 
  10532. DIALOG or WINDOW statement, defines the text, identifier, dimensions, and 
  10533. attributes of a control window.  The predefined class for this control is 
  10534. WC_BUTTON. If you do not specify the style, the default style is 
  10535. BS_AUTOCHECKBOX and WS_TABSTOP. 
  10536.  
  10537.  text    Specifies text that is displayed to the right of the control.  This 
  10538.          field must contain zero or more characters enclosed in double 
  10539.          quotation marks.  Character values must be in the range 1 through 255. 
  10540.          If a double quotation mark is required in the text, you must include 
  10541.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  10542.          indicates that the following character is used as a mnemonic character 
  10543.          for the control.  When the control is displayed, the tilde is not 
  10544.          shown, but the mnemonic character is underlined.  The user can choose 
  10545.          the control by pressing the key corresponding to the underlined 
  10546.          mnemonic character. 
  10547.  id      Specifies the control identifier. This value must be a signed integer 
  10548.          in the range -32768 through 32767, an unsigned integer in the range of 
  10549.          1 through 65535, or a simple expression that evaluates to a value in 
  10550.          these ranges. 
  10551.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10552.          This value must be a signed integer in the range -32768 through 32767 
  10553.          or an expression consisting of integers and the addition (+) or 
  10554.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10555.          units and is relative to the origin of the dialog box, window, or 
  10556.          control containing the specified control. 
  10557.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10558.          This value must be a signed integer in the range -32768 through 32767 
  10559.          or an expression consisting of integers and the addition (+) or 
  10560.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10561.          units and is relative to the origin of the dialog box, window, or 
  10562.          control containing the specified control. 
  10563.  width   Specifies the width of the control.  This value must be an integer in 
  10564.          the range 0 through 65535 or an expression consisting of integers and 
  10565.          the addition (+) or subtraction (-) operator.  The width is in 
  10566.          n-character units. 
  10567.  height  Specifies the height of the control.  This value must be an integer in 
  10568.          the range 0 through 65535 or an expression consisting of integers and 
  10569.          the addition (+) or subtraction (-) operator.  The height is in 
  10570.          1/8-character units. 
  10571.  style   Specifies the control styles.  This value can be a combination of the 
  10572.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  10573.          operator to combine styles. 
  10574.  
  10575.  Example 
  10576.  
  10577.  This example creates an automatic-check-box control that is labeled "Italic." 
  10578.  
  10579.     AUTOCHECKBOX "Italic", 101, 10, 10, 100, 100
  10580.  
  10581.  
  10582. ΓòÉΓòÉΓòÉ 21.3.2.4. AUTORADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  10583.  
  10584. Syntax: 
  10585.  
  10586.   AUTORADIOBUTTON text, id, x, y, width, height[, style]
  10587.  
  10588. The AUTORADIOBUTTON statement creates an automatic-radio-button control.  This 
  10589. control is a small circle with the given text displayed to its right.  The 
  10590. control highlights the circle and sends a message to its parent window when the 
  10591. user selects the button.  The control also removes the selection from any other 
  10592. automatic-radio-button controls in the same group.  When the user selects the 
  10593. button again, the control removes the highlight before sending a message.  The 
  10594. AUTORADIOBUTTON statement, which you can use only in a DIALOG or WINDOW 
  10595. statement, defines the text, identifier, dimensions, and attributes of a 
  10596. control window.  The predefined class for this control is WC_BUTTON.  If you do 
  10597. not specify a style, the default style is BS_AUTORADIOBUTTON. 
  10598.  
  10599.  text    Specifies text that is displayed to the right of the control.  This 
  10600.          field must contain zero or more characters enclosed in double 
  10601.          quotation marks.  Character values must be in the range 1 through 255. 
  10602.          If a double quotation mark is required in the text, you must include 
  10603.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  10604.          indicates that the following character is used as a mnemonic character 
  10605.          for the control.  When the control is displayed, the tilde is not 
  10606.          shown, but the mnemonic character is underlined. The user can choose 
  10607.          the control by pressing the key corresponding to the underlined 
  10608.          mnemonic character. 
  10609.  id      Specifies the control identifier. This value must be a signed integer 
  10610.          in the range -32768 through 32767, an unsigned integer in the range of 
  10611.          1 through 65535, or a simple expression that evaluates to a value in 
  10612.          these ranges. 
  10613.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10614.          This value must be a signed integer in the range -32768 through 32767 
  10615.          or an expression consisting of integers and the addition (+) or 
  10616.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10617.          units and is relative to the origin of the dialog box, window, or 
  10618.          control containing the specified control. 
  10619.  y       This value must be a signed integer in the range -32768 through 32767 
  10620.          or an expression consisting of integers and the addition (+) or 
  10621.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10622.          units and is relative to the origin of the dialog box, window, or 
  10623.          control containing the specified control. 
  10624.  width   Specifies the width of the control.  This value must be an integer in 
  10625.          the range 0 through 65535 or an expression consisting of integers and 
  10626.          the addition (+) or subtraction (-) operator.  The width is in 
  10627.          n-character units. 
  10628.  height  Specifies the height of the control.  This value must be an integer in 
  10629.          the range 0 through 65535 or an expression consisting of integers and 
  10630.          the addition (+) or subtraction (-) operator.  The height is in 
  10631.          1/8-character units. 
  10632.  style   Specifies the control styles.  This value can be a combination of the 
  10633.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  10634.          operator to combine styles. 
  10635.  
  10636.  Example 
  10637.  
  10638.  This example creates an automatic-radio-button control that is labeled 
  10639.  "Italic." 
  10640.  
  10641.     AUTORADIOBUTTON "Italic", 101, 10, 10, 24, 50
  10642.  
  10643.  
  10644. ΓòÉΓòÉΓòÉ 21.3.2.5. BITMAP Statement ΓòÉΓòÉΓòÉ
  10645.  
  10646. Syntax: 
  10647.  
  10648.   BITMAP bitmap-id [load-option] [mem-option] [codepage] filename
  10649.  
  10650. The BITMAP statement defines a bit map resource for an application.  A bit map 
  10651. resource, typically created using the Icon Editor, is a custom bit map that an 
  10652. application uses in its display or as an item in a menu.  The BITMAP statement 
  10653. copies the bit-map resource from the file specified in the filename field and 
  10654. adds it to the application's other resources.  A bit-map resource can be loaded 
  10655. from the executable file when needed by using the GpiLoadBitmap function. 
  10656.  
  10657. You can provide any number of BITMAP statements in a resource script file, but 
  10658. each statement must specify a unique bitmap-id value. 
  10659.  
  10660.  bitmap-id         Specifies the bit-map-resource identifier. This value must 
  10661.                    be an unsigned integer in the range of 1 through 65535, a 
  10662.                    simple expression that evaluates to a value in these ranges, 
  10663.                    or a character string. 
  10664.  load-option       Specifies when the system loads the resource from the 
  10665.                    executable file into memory.  This value must be one of the 
  10666.                    following: 
  10667.                    PRELOAD             System loads the resource when the 
  10668.                                        application starts. 
  10669.                    LOADONCALL          System loads the resource when the 
  10670.                                        application calls the GpiLoadBitmap 
  10671.                                        function.  This is the default option. 
  10672.  mem-option        Specifies how the system manages the resource when it is in 
  10673.                    memory.  This value must be one of the following: 
  10674.                    FIXED               System keeps the resource at a fixed 
  10675.                                        memory location. 
  10676.                    MOVEABLE            System moves the resource as necessary 
  10677.                                        to compact memory.  This is the default 
  10678.                                        option. 
  10679.                    DISCARDABLE         System discards the resource if it is no 
  10680.                                        longer needed. 
  10681.  codepage          Specifies a code page value. For a list of valid code pages 
  10682.                    see CODEPAGE Statement. 
  10683.  filename          Specifies the name of the file containing the icon resource. 
  10684.                    If the file is not in the current directory, filename must 
  10685.                    be preceded by a full path. 
  10686.  
  10687.  Example 
  10688.  
  10689.  This example defines a bit map whose bit-map identifier is 12. The bit-map 
  10690.  resource is copied from the file CUSTOM.BMP. 
  10691.  
  10692.     BITMAP 12 custom.bmp
  10693.  
  10694.  
  10695. ΓòÉΓòÉΓòÉ 21.3.2.6. CHECKBOX Statement ΓòÉΓòÉΓòÉ
  10696.  
  10697. Syntax: 
  10698.  
  10699.   CHECKBOX text, id, x, y, width, height[, style]
  10700.  
  10701. The CHECKBOX statement creates a check-box control.  The control is a small 
  10702. rectangle (check box) that has the specified text displayed to the right.  The 
  10703. control highlights the rectangle and sends a message to its parent window when 
  10704. the user selects the control.  The CHECKBOX statement, which you can use only 
  10705. in a DIALOG or WINDOW statement, defines the text, identifier, dimensions, and 
  10706. attributes of a control window.  The predefined class for this control is 
  10707. WC_BUTTON.  If you do not specify a style, the default style is BS_CHECKBOX and 
  10708. WS_TABSTOP. 
  10709.  
  10710.  text    Specifies text that is displayed to the right of the control.  This 
  10711.          field must contain zero or more characters enclosed in double 
  10712.          quotation marks.  Character values must be in the range 1 through 255. 
  10713.          If a double quotation mark is required in the text, you must include 
  10714.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  10715.          indicates that the following character is used as a mnemonic character 
  10716.          for the control.  When the control is displayed, the tilde is not 
  10717.          shown, but the mnemonic character is underlined.  The user can choose 
  10718.          the control by pressing the key corresponding to the underlined 
  10719.          mnemonic character. 
  10720.  id      Specifies the control identifier. This value must be a signed integer 
  10721.          in the range -32768 through 32767, an unsigned integer in the range of 
  10722.          1 through 65535, or a simple expression that evaluates to a value in 
  10723.          these ranges. 
  10724.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10725.          This value must be a signed integer in the range -32768 through 32767 
  10726.          or an expression consisting of integers and the addition (+) or 
  10727.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10728.          units and is relative to the origin of the dialog box, window, or 
  10729.          control containing the specified control. 
  10730.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10731.          This value must be a signed integer in the range -32768 through 32767 
  10732.          or an expression consisting of integers and the addition (+) or 
  10733.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10734.          units and is relative to the origin of the dialog box, window, or 
  10735.          control containing the specified control. 
  10736.  width   Specifies the width 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 width is in 
  10739.          n-character units. 
  10740.  height  Specifies the height of the control.  This value must be an integer in 
  10741.          the range 0 through 65535 or an expression consisting of integers and 
  10742.          the addition (+) or subtraction (-) operator.  The height is in 
  10743.          1/8-character units. 
  10744.  style   Specifies the control styles.  This value can be a combination of the 
  10745.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  10746.          operator to combine styles. 
  10747.  
  10748.  Example 
  10749.  
  10750.  This example creates a check-box control that is labeled "Italic." 
  10751.  
  10752.     CHECKBOX "Italic", 101, 10, 10, 100, 100
  10753.  
  10754.  
  10755. ΓòÉΓòÉΓòÉ 21.3.2.7. CODEPAGE Statement ΓòÉΓòÉΓòÉ
  10756.  
  10757. Syntax: 
  10758.  
  10759.   CODEPAGE codepage-id
  10760.  
  10761. The CODEPAGE statement sets the code page for all subsequent resources.  The 
  10762. code page specifies the character set used for characters in the resource. 
  10763.  
  10764. If the CODEPAGE statement is not given in a resource script file, RC uses the 
  10765. code page set up for the individual system.  If more than one CODEPAGE 
  10766. statement is given in the file, each CODEPAGE statement applies to the resource 
  10767. statements between it and the next CODEPAGE statement. 
  10768.  
  10769.  codepage-id       Identifies the code page to be used for subsequent 
  10770.                    resources. For a complete list of supported code pages, 
  10771.                    refer to the "COUNTRYCODE" section of the Control Program 
  10772.                    Programming Guide and Reference. 
  10773.  
  10774.  Comments 
  10775.  
  10776.  You may also specify a code page by placing a code-page identifier in the 
  10777.  load-options or memory-options field of any RC statement that uses those 
  10778.  fields. 
  10779.  
  10780.  Example 
  10781.  
  10782.  In this example, the code page for the character-string resources is set to 
  10783.  Portuguese (860). 
  10784.  
  10785.     CODEPAGE 860
  10786.  
  10787.     STRINGTABLE
  10788.     BEGIN
  10789.         1 "Filename not found"
  10790.         2 "Cannot open file for reading"
  10791.     END
  10792.  
  10793.  
  10794. ΓòÉΓòÉΓòÉ 21.3.2.8. COMBOBOX Statement ΓòÉΓòÉΓòÉ
  10795.  
  10796. Syntax: 
  10797.  
  10798.   COMBOBOX text, id, x, y, width, height[, style]
  10799.  
  10800. The COMBOBOX statement creates a combination-box control.  This control 
  10801. combines a list-box control with an entry-field control.  It allows the user to 
  10802. place the selected item from a list box into an entry field. 
  10803.  
  10804. The COMBOBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  10805. defines the text, identifier, dimensions, and attributes of a control window. 
  10806. The predefined class for this control is WC_COMBOBOX. If you do not specify a 
  10807. style, the default style is CBS_SIMPLE, WS_GROUP, WS_TABSTOP, and WS_VISIBLE. 
  10808.  
  10809.  text    Specifies text that is displayed in the entry field of the control. 
  10810.          This field must contain zero or more characters enclosed in double 
  10811.          quotation marks.  Character values must be in the range 1 through 255. 
  10812.          If a double quotation mark is required in the text, you must include 
  10813.          the double quotation mark twice. 
  10814.  id      Specifies the control identifier. This value must be a signed integer 
  10815.          in the range -32768 through 32767, an unsigned integer in the range of 
  10816.          1 through 65535, or a simple expression that evaluates to a value in 
  10817.          these ranges. 
  10818.  x       Specifies the x-coordinate of the lower-left corner of the control 
  10819.          This value must be a signed integer in the range -32768 through 32767 
  10820.          or an expression consisting of integers and the addition (+) or 
  10821.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10822.          units and is relative to the origin of the dialog box, window, or 
  10823.          control containing the specified control. 
  10824.  y       Specifies the y-coordinate of the lower-left corner of the control 
  10825.          This value must be a signed integer in the range -32768 through 32767 
  10826.          or an expression consisting of integers and the addition (+) or 
  10827.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10828.          units and is relative to the origin of the dialog box, window, or 
  10829.          control containing the specified control. 
  10830.  width   Specifies the width of the control.  This value must be an integer in 
  10831.          the range 0 through 65535 or an expression consisting of integers and 
  10832.          the addition (+) or subtraction (-) operator.  The width is in 
  10833.          n-character units. 
  10834.  height  Specifies the height of the control.  This value must be an integer in 
  10835.          the range 0 through 65535 or an expression consisting of integers and 
  10836.          the addition (+) or subtraction (-) operator.  The height is in 
  10837.          1/8-character units. 
  10838.  style   Specifies the control styles.  This value can be a combination of the 
  10839.          styles specified for WC_COMBOBOX. You can use the bitwise OR (|) 
  10840.          operator to combine styles. 
  10841.  
  10842.  Example 
  10843.  
  10844.  This example creates a combination-box control. 
  10845.  
  10846.     COMBOBOX "", 101, 10, 10, 24, 50
  10847.  
  10848.  
  10849. ΓòÉΓòÉΓòÉ 21.3.2.9. CONTAINER Statement ΓòÉΓòÉΓòÉ
  10850.  
  10851. Syntax: 
  10852.  
  10853.   CONTAINER  id, x, y, width, height [,style]
  10854.  
  10855. The CONTAINER statement creates a container control within a dialog window. 
  10856. The container control is a visual component that holds objects.  The CONTAINER 
  10857. statement defines the identifier, position, dimensions, and attributes of a 
  10858. container control. The predefined class for this control is WC_CONTAINER.  If 
  10859. you do not specify a style, the default style is WS_TABSTOP, WS_VISIBLE, and 
  10860. CCS_SINGLESEL. 
  10861.  
  10862.  id      Specifies the control identifier. This value is a signed integer 
  10863.          -32768 through 32767, an unsigned integer in the range of 1 through 
  10864.          65535, or a simple expression that evaluates to a value in these 
  10865.          ranges. 
  10866.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10867.          This value is a signed integer -32768 through 32767 or an expression 
  10868.          consisting of integers and the addition (+) or subtraction (-) 
  10869.          operator.  The coordinate is assumed to be in dialog units and is 
  10870.          relative to the origin of the dialog window containing the container 
  10871.          control. 
  10872.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10873.          This value is a signed integer -32768 through 32767 or an expression 
  10874.          consisting of integers and the addition (+) or subtraction (-) 
  10875.          operator.  The coordinate is assumed to be in dialog units and is 
  10876.          relative to the origin of the dialog window containing the container 
  10877.          control. 
  10878.  width   Specifies the width of the control.  This value is any integer 0 
  10879.          through 65535, or an expression consisting of integers and the 
  10880.          addition (+) or subtraction (-) operator. The width is in n-character 
  10881.          units. 
  10882.  height  Specifies the height of the control.  This value is any integer 0 
  10883.          through 65535, or an expression consisting of integers and the 
  10884.          addition (+) or subtraction (-) operator. The height is in 
  10885.          1/8-character units. 
  10886.  style   Specifies the control styles.  This value can be a combination of the 
  10887.          styles specified for WC_CONTAINER. Use the bitwise OR (|) operator to 
  10888.          combine styles. 
  10889.  
  10890.  Comments 
  10891.  
  10892.  A CONTAINER statement is only used in a DIALOG or WINDOW statement. 
  10893.  
  10894.  Example 
  10895.  
  10896.  This example creates a container control at position (30,30) within the dialog 
  10897.  window.  The container has a width of 70 character units and a height of 25 
  10898.  character units.  Its resource identifier is 301.  The default style 
  10899.  CCS_SINGLESEL has been overridden by the style specification CCS_MULTIPLESEL. 
  10900.  The default styles WS_TABSTOP and WS_GROUP are both in effect, though only the 
  10901.  latter is specified. 
  10902.  
  10903.   #define IDC_CONTAINER    301
  10904.   #define IDD_CONTAINERDLG 504
  10905.   DIALOG "Container", IDD_CONTAINERDLG, 23, 6, 120, 280, FS_NOBYTEALIGN |
  10906.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  10907.     BEGIN
  10908.        CONTAINER   IDC_CONTAINER, 30, 30, 70, 200, CCS_MULTIPLESEL |
  10909.                          WS_GROUP
  10910.     END
  10911.  
  10912.  
  10913. ΓòÉΓòÉΓòÉ 21.3.2.10. CONTROL Statement ΓòÉΓòÉΓòÉ
  10914.  
  10915. Syntax: 
  10916.  
  10917.   CONTROL text, id, x, y, width, height, class[, style]
  10918.           [data-definitions]
  10919.   [ BEGIN
  10920.   control-definition
  10921.       .
  10922.       .
  10923.       .
  10924.   END ]
  10925.  
  10926. The CONTROL statement defines a control as belonging to the specified class. 
  10927. The statement defines the position and dimensions of the control within the 
  10928. parent window, as well as the control style.  The CONTROL statement is most 
  10929. often used in a DIALOG or WINDOW statement. 
  10930.  
  10931. Typically, several CONTROL statements are used in each DIALOG statement, and 
  10932. each CONTROL statement must have a unique identifier value. The optional BEGIN 
  10933. and END statements enclose any CONTROL statements that may be given with the 
  10934. control.  CONTROL statements given in this manner represent child windows 
  10935. belonging to the control created by the CONTROL statement. 
  10936.  
  10937.  text    Specifies text that is displayed to the right of the control.  This 
  10938.          field must contain zero or more characters enclosed in double 
  10939.          quotation marks.  Character values must be in the range 1 through 255. 
  10940.          If a double quotation mark is required in the text, you must include 
  10941.          the double quotation mark twice.  In the appropriate styles, a tilde ( 
  10942.          ~ ) character in the text indicates that the following character is 
  10943.          used as a mnemonic character for the control.  When the control is 
  10944.          displayed, the tilde is not shown, but the mnemonic character is 
  10945.          underlined.  The user can choose the control by pressing the key 
  10946.          corresponding to the underlined mnemonic character. 
  10947.  
  10948.          When the style field for this control includes the style SS_BITMAP, 
  10949.          the text field should be written as a number equal to the resource 
  10950.          identifier of the bitmap to be loaded. 
  10951.  
  10952.  id      Specifies the control identifier. This value must be a signed integer 
  10953.          in the range -32768 through 32767, an unsigned integer in the range of 
  10954.          1 through 65535, or a simple expression that evaluates to a value in 
  10955.          these ranges. 
  10956.  
  10957.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  10958.          This value must be a signed integer in the range -32768 through 32767 
  10959.          or an expression consisting of integers and the addition (+) or 
  10960.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10961.          units and is relative to the origin of the parent window. 
  10962.  
  10963.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  10964.          This value must be a signed integer in the range -32768 through 32767 
  10965.          or an expression consisting of integers and the addition (+) or 
  10966.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  10967.          units and is relative to the origin of the parent window. 
  10968.  
  10969.  width   Specifies the width of the control.  This value must be an integer in 
  10970.          the range 0 through 65535 or an expression consisting of integers and 
  10971.          the addition (+) or subtraction (-) operator.  The value is in 
  10972.          n-character units. 
  10973.  
  10974.  height  Specifies the height of the control.  This value must be an integer in 
  10975.          the range 0 through 65535 or an expression consisting of integers and 
  10976.          the addition (+) or subtraction (-) operator.  The value is in 
  10977.          1/8-character units. 
  10978.  
  10979.  class   Specifies the control class.  This value can be one of the control 
  10980.          classes specified in the "Control Classes" table, in the Presentation 
  10981.          Manager Programming Reference, or the name of the control class, 
  10982.          enclosed in double quotation marks. 
  10983.  
  10984.  style   Specifies the control style.  This value can be a combination of 
  10985.          control styles. You can use the bitwise OR (|) operator to combine 
  10986.          styles. 
  10987.  
  10988.  data-definitions Specifies a CTLDATA and/or PRESPARAMS statement. These 
  10989.          statements define control and presentation data for the control. For 
  10990.          more information, see CTLDATA Statement and PRESPARAMS Statement. 
  10991.  
  10992.  control-definition Specifies a CONTROL statement or any one of several 
  10993.          predefined control statements. These statements define the style, 
  10994.          position, and dimensions of controls in the control. 
  10995.  
  10996.  Comments 
  10997.  
  10998.  The CONTROL statement can actually contain any combination of CONTROL, DIALOG, 
  10999.  and WINDOW statements.  But typically, a CONTROL statement contains no such 
  11000.  statements. 
  11001.  
  11002.  Example 
  11003.  
  11004.  This example creates a pushbutton control with the WS_TABSTOP and WS_VISIBLE 
  11005.  styles. 
  11006.  
  11007.     CONTROL "OK", 101, 10, 10, 20, 50, WC_BUTTON, BS_PUSHBUTTON |
  11008.                                                   WS_TABSTOP    |
  11009.                                                   WS_VISIBLE
  11010.  
  11011.  
  11012. ΓòÉΓòÉΓòÉ 21.3.2.11. CTEXT Statement ΓòÉΓòÉΓòÉ
  11013.  
  11014. Syntax: 
  11015.  
  11016.   CTEXT text, id, x, y, width, height[, style]
  11017.  
  11018. The CTEXT statement creates a centered-text control.  The control is a simple 
  11019. rectangle displaying the given text centered in the rectangle.  The text is 
  11020. formatted before it is displayed.  Words that would extend past the end of a 
  11021. line are automatically wrapped to the beginning of the next line.  The CTEXT 
  11022. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  11023. text, identifier, dimensions, and attributes of the control.  The predefined 
  11024. class for this control is WC_STATIC.  If you do not specify a style, the 
  11025. default style is SS_TEXT, DT_CENTER, and WS_GROUP. 
  11026.  
  11027.  text    Specifies text that is centered in the rectangular area of the 
  11028.          control.  This field must contain zero or more characters enclosed in 
  11029.          double quotation marks.  Character values must be in the range 1 
  11030.          through 255.  If a double quotation mark is required in the text, you 
  11031.          must include the double quotation mark twice. 
  11032.  id      Specifies the control identifier. This value must be a signed integer 
  11033.          in the range -32768 through 32767, an unsigned integer in the range of 
  11034.          1 through 65535, or a simple expression that evaluates to a value in 
  11035.          these ranges. 
  11036.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11037.          This value must be a signed integer in the range -32768 through 32767 
  11038.          or an expression consisting of integers and the addition (+) or 
  11039.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11040.          units and is relative to the origin of the dialog box, window, or 
  11041.          control containing the specified control. 
  11042.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11043.          This value must be a signed integer in the range -32768 through 32767 
  11044.          or an expression consisting of integers and the addition (+) or 
  11045.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11046.          units and is relative to the origin of the dialog box, window, or 
  11047.          control containing the specified control. 
  11048.  width   Specifies the width of the control.  This value must be an integer in 
  11049.          the range 0 through 65535 or an expression consisting of integers and 
  11050.          the addition (+) or subtraction (-) operator.  The width is in 
  11051.          n-character units. 
  11052.  height  Specifies the height of the control.  This value must be an integer in 
  11053.          the range 0 through 65535 or an expression consisting of integers and 
  11054.          the addition (+) or subtraction (-) operator.  The height is in 
  11055.          1/8-character units. 
  11056.  style   Specifies the control styles.  This value can be a combination of the 
  11057.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  11058.          operator to combine styles. 
  11059.  
  11060.  Example 
  11061.  
  11062.  This example creates a centered-text control that is labeled "Filename." 
  11063.  
  11064.     CTEXT "Filename", 101, 10, 10, 100, 100
  11065.  
  11066.  
  11067. ΓòÉΓòÉΓòÉ 21.3.2.12. CTLDATA Statement ΓòÉΓòÉΓòÉ
  11068.  
  11069. Syntax: 
  11070.  
  11071.   CTLDATA word-value[, word-value][...]
  11072.  
  11073.   CTLDATA string
  11074.  
  11075.   CTLDATA MENU
  11076.   BEGIN
  11077.   menuitem-definition
  11078.      .
  11079.      .
  11080.      .
  11081.   END
  11082.  
  11083. The CTLDATA statement defines control data for a custom dialog box, window, or 
  11084. control.  The statement has three basic forms to permit specifying a menu or 
  11085. specifying data in words or characters.  The data can be in any format, since 
  11086. only your window procedure will use it. The window procedure of the dialog box, 
  11087. window, or control receives this data when the item is created.  It is up to 
  11088. the window procedure to process the data. 
  11089.  
  11090.  word-value     Specifies a 16-bit value. This value must be a signed integer 
  11091.                 in the range -32768 through 32767 or an expression that 
  11092.                 evaluates in that range. 
  11093.  string         Specifies a string of 8-bit characters.  This field must 
  11094.                 contain zero or more characters enclosed in double quotation 
  11095.                 marks.  Character values must be in the range 1 through 255. 
  11096.                 If a double quotation mark is required in the string, you must 
  11097.                 include the double quotation mark twice. 
  11098.  menuitem-definition Specifies a MENUITEM or SUBMENU statement.  These 
  11099.                 statements define the individual commands or submenus in the 
  11100.                 given menu. For details about these statements, see MENUITEM 
  11101.                 Statement and SUBMENU Statement. 
  11102.  
  11103.  Comments 
  11104.  
  11105.  CTLDATA is often used to supply data that controls the subsequent operation of 
  11106.  the custom window.  For example, the CTLDATA statement may contain extended 
  11107.  style bits - that is, style bits designed specifically for your customized 
  11108.  window. 
  11109.  
  11110.  You should reserve the CTLDATA statement for window classes that you create 
  11111.  yourself. 
  11112.  
  11113.  Example 
  11114.  
  11115.  This example creates a menu for the window created with the WINDOW statement. 
  11116.  
  11117.     WINDOWTEMPLATE 1
  11118.     BEGIN
  11119.         WINDOW "Sample", 1, 0, 0, 100, 100, "MYCLASS", 0, FCF_STANDARD
  11120.         CTLDATA MENU
  11121.         BEGIN
  11122.             MENUITEM "Exit", 101
  11123.         END
  11124.     END
  11125.  
  11126.  
  11127. ΓòÉΓòÉΓòÉ 21.3.2.13. DEFAULTICON Statement ΓòÉΓòÉΓòÉ
  11128.  
  11129. Syntax: 
  11130.  
  11131.   DEFAULTICON filename.ico
  11132.  
  11133. This statement installs the named icon file definition under the ICON Extended 
  11134. Attribute of the program file.  An icon with an icon-id of 1 is the default 
  11135. unless you supply a different icon. 
  11136.  
  11137. Example 
  11138.  
  11139.   DEFAULTICON myicon.ico
  11140.  
  11141.  
  11142. ΓòÉΓòÉΓòÉ 21.3.2.14. define Directive ΓòÉΓòÉΓòÉ
  11143.  
  11144. Syntax: 
  11145.  
  11146.   define name value
  11147.  
  11148. The define directive assigns the given value to the specified name. All 
  11149. subsequent occurrences of the name are replaced by the value. 
  11150.  
  11151.  name    Specifies the name to be defined. This name can be any combination of 
  11152.          letters, digits, or underscore characters which does not begin with a 
  11153.          digit. 
  11154.  value   Specifies any integer, character string, or line of text. This value 
  11155.          can contain another defined name, which creates a level of nested 
  11156.          defines.  You are limited to 64 levels of nested defines. 
  11157.  
  11158.  Example 
  11159.  
  11160.  This example assigns values to the names "NONZERO" and "USERCLASS". 
  11161.  
  11162.     #define     NONZERO     1
  11163.     #define     USERCLASS   "MyControlClass"
  11164.  
  11165.  
  11166. ΓòÉΓòÉΓòÉ 21.3.2.15. DEFPUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  11167.  
  11168. Syntax: 
  11169.  
  11170.   DEFPUSHBUTTON text, id, x, y, width, height[, style]
  11171.  
  11172. The DEFPUSHBUTTON statement creates a default pushbutton control. The control 
  11173. is a round-cornered rectangle containing the given text. The rectangle has a 
  11174. bold outline to represent that it is the default response for the user.  The 
  11175. control sends a message to its parent window when the user chooses the control. 
  11176. The DEFPUSHBUTTON statement, which you can use only in a DIALOG or WINDOW 
  11177. statement, defines the text, identifier, dimensions, and attributes of the 
  11178. control.  The predefined class for this control is WC_BUTTON.  If you do not 
  11179. specify a style, the default style is BS_PUSHBUTTON, BS_DEFAULT, and 
  11180. WS_TABSTOP. 
  11181.  
  11182.  text    Specifies text that is centered in the rectangular area of the 
  11183.          control.  This field must contain zero or more characters enclosed in 
  11184.          double quotation marks.  Character values must be in the range 1 
  11185.          through 255.  If a double quotation mark is required in the text, you 
  11186.          must include the double quotation mark twice.  A tilde ( ~ ) character 
  11187.          in the text indicates that the following character is used as a 
  11188.          mnemonic character for the control.  When the control is displayed, 
  11189.          the tilde is not shown, but the mnemonic character is underlined. The 
  11190.          user can choose the control by pressing the key corresponding to the 
  11191.          underlined mnemonic character. 
  11192.  id      Specifies the control identifier. This value must be a signed integer 
  11193.          in the range -32768 through 32767, an unsigned integer in the range of 
  11194.          1 through 65535, or a simple expression that evaluates to a value in 
  11195.          these ranges. 
  11196.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11197.          This value must be a signed integer in the range -32768 through 32767 
  11198.          or an expression consisting of integers and the addition (+) or 
  11199.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11200.          units and is relative to the origin of the dialog box, window, or 
  11201.          control containing the specified control. 
  11202.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11203.          This value must be a signed integer in the range -32768 through 32767 
  11204.          or an expression consisting of integers and the addition (+) or 
  11205.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11206.          units and is relative to the origin of the dialog box, window, or 
  11207.          control containing the specified control. 
  11208.  width   Specifies the width of the control.  This value must be an integer in 
  11209.          the range 0 through 65535 or an expression consisting of integers and 
  11210.          the addition (+) or subtraction (-) operator.  The width is in 
  11211.          n-character units. 
  11212.  height  Specifies the height of the control.  This value must be an integer in 
  11213.          the range 0 through 65535 or an expression consisting of integers and 
  11214.          the addition (+) or subtraction (-) operator.  The height is in 
  11215.          1/8-character units. 
  11216.  style   Specifies the control styles.  This value can be a combination of the 
  11217.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  11218.          operator to combine styles. 
  11219.  
  11220.  Example 
  11221.  
  11222.  This example creates a default pushbutton control that is labeled "Cancel." 
  11223.  
  11224.   DEFPUSHBUTTON "Cancel", 101, 10, 10, 24, 50
  11225.  
  11226.  
  11227. ΓòÉΓòÉΓòÉ 21.3.2.16. DIALOG Statement ΓòÉΓòÉΓòÉ
  11228.  
  11229. Syntax: 
  11230.  
  11231.   DIALOG text, id, x, y, width, height[, style[, framectl]]
  11232.          [data-definitions]
  11233.   BEGIN
  11234.   control-definition
  11235.       .
  11236.       .
  11237.       .
  11238.   END
  11239.  
  11240. The DIALOG statement defines a window that an application can use to create 
  11241. dialog boxes.  The statement defines the position and dimensions of the dialog 
  11242. box on the screen, as well as the dialog-box style.  The DIALOG statement is 
  11243. most often used in a DLGTEMPLATE statement. 
  11244.  
  11245. Typically, you use only one DIALOG statement in each DLGTEMPLATE statement, and 
  11246. the DIALOG statement contains at least one control definition. 
  11247.  
  11248.  text        Specifies the dialog-box title if the style specifies a title bar. 
  11249.              This field must contain zero or more characters enclosed in double 
  11250.              quotation marks.  Character values must be in the range 1 through 
  11251.              255.  If a double quotation mark is required in the title, you 
  11252.              must include the double quotation mark twice. 
  11253.  id          Specifies the dialog-box identifier. This value must be a signed 
  11254.              integer in the range -32768 through 32767, an unsigned integer in 
  11255.              the range of 1 through 65535, or a simple expression that 
  11256.              evaluates to a value in these ranges. 
  11257.  x           Specifies the x-coordinate of the lower-left corner of the dialog 
  11258.              box.  This value must be a signed integer in the range -32768 
  11259.              through 32767 or an expression consisting of integers and the 
  11260.              addition (+) or subtraction (-) operator.  The value is in dialog 
  11261.              units, but its exact meaning depends on the dialog style.  See the 
  11262.              "Comments" section for details. 
  11263.  y           Specifies the y-coordinate of the lower-left corner of the dialog 
  11264.              box.  This value must be a signed integer in the range -32768 
  11265.              through 32767 or an expression consisting of integers and the 
  11266.              addition (+) or subtraction (-) operator.  The value is in dialog 
  11267.              units, but its exact meaning depends on the dialog style.  See the 
  11268.              "Comments" section for details. 
  11269.  width       Specifies the width of the dialog box.  This value must be an 
  11270.              integer in the range 0 through 65535 or an expression consisting 
  11271.              of integers and the addition (+) or subtraction (-) operator.  The 
  11272.              value is in n-character units. 
  11273.  height      Specifies the height of the dialog box.  This value must be an 
  11274.              integer in the range 0 through 65535 or an expression consisting 
  11275.              of integers and the addition (+) or subtraction (-) operator.  The 
  11276.              value is in 1/8-character units. 
  11277.  style       Specifies the dialog-box style.  This value can be any of the 
  11278.              window, dialog-box, or frame styles. You can use the bitwise OR 
  11279.              (|) operator to combine styles. 
  11280.  framectl    Specifies the styles for frame controls belonging to the dialog 
  11281.              box.  This value can be any of the frame-control styles specified 
  11282.              in the "Frame-Control Flags" table in the Presentation Manager 
  11283.              Programming Reference. You can use the bitwise OR (|) operator to 
  11284.              combine styles. 
  11285.  data-definitions Specifies a CTLDATA and/or PRESPARAMS statement. These 
  11286.              statements define control and presentation data for the dialog 
  11287.              box.  For more information, see CTLDATA Statement and PRESPARAMS 
  11288.              Statement. 
  11289.  control-definition Specifies a CONTROL statement or any one of several 
  11290.              predefined control statements.  These statements define the style, 
  11291.              position, and dimensions of controls in the dialog box. 
  11292.  
  11293.  Comments 
  11294.  
  11295.  The exact meaning of the coordinates depends on the style defined by the style 
  11296.  field.  For dialog boxes with FS_SCREENALIGN style, the coordinates are 
  11297.  relative to the origin of the display screen.  For dialog boxes with the style 
  11298.  FS_MOUSEALIGN, the coordinates are relative to the position of the mouse 
  11299.  pointer at the time the dialog box is created.  For all other dialog boxes, 
  11300.  the coordinates are relative to the origin of the parent window. 
  11301.  
  11302.  The DIALOG statement can actually contain any combination of CONTROL, DIALOG, 
  11303.  and WINDOW statements.  Typically, a DIALOG statement contains one or more 
  11304.  CONTROL statements. 
  11305.  
  11306.  Example 
  11307.  
  11308.  This example creates a dialog box that is labeled "Disk Error." 
  11309.  
  11310.   DLGTEMPLATE 1
  11311.   BEGIN
  11312.       DIALOG  "Disk Error", 100, 10, 10, 300, 110
  11313.       BEGIN
  11314.           CTEXT "Select One:", 1, 10, 80, 280, 12
  11315.           RADIOBUTTON "Retry", 2, 75, 50, 60, 12
  11316.           RADIOBUTTON "Abort", 3, 75, 30, 60, 12
  11317.           RADIOBUTTON "Ignore", 4, 75, 10, 60, 12
  11318.       END
  11319.   END
  11320.  
  11321.  
  11322. ΓòÉΓòÉΓòÉ 21.3.2.17. DLGINCLUDE Statement ΓòÉΓòÉΓòÉ
  11323.  
  11324. Syntax: 
  11325.  
  11326.   DLGINCLUDE id filename
  11327.  
  11328. The DLGINCLUDE statement adds the specified file to the resource file.  The 
  11329. DLGINCLUDE statement is typically used to let the application access the 
  11330. definitions file for the dialog box with the corresponding identifier.  The 
  11331. file named by filename must contain the define directives used by the dialog 
  11332. box. 
  11333.  
  11334. You can provide any number of DLGINCLUDE statements in a resource script file, 
  11335. but each must have a unique identifier. 
  11336.  
  11337.  id          Specifies the dialog-box identifier. This value must be a signed 
  11338.              integer in the range -32768 through 32767, an unsigned integer in 
  11339.              the range of 1 through 65535, a simple expression that evaluates 
  11340.              to a value in these ranges, or a character string. 
  11341.  filename    Specifies the name of the file containing the define directives. 
  11342.              If the file is not in the current directory, filename must be 
  11343.              preceded by a full path. 
  11344.  
  11345.  Example 
  11346.  
  11347.  This example includes the name of the definition file dlgdef.h. The dialog-box 
  11348.  identifier is 5. 
  11349.  
  11350.   DLGINCLUDE 5 \\INCLUDE\\DLGREF.H
  11351.  
  11352.  
  11353. ΓòÉΓòÉΓòÉ 21.3.2.18. DLGTEMPLATE Statement ΓòÉΓòÉΓòÉ
  11354.  
  11355. Syntax: 
  11356.  
  11357.   DLGTEMPLATE dialog-id  [load-option] [mem-option] [codepage]
  11358.   BEGIN
  11359.   dialog-definition
  11360.       .
  11361.       .
  11362.       .
  11363.   END
  11364.  
  11365. The DLGTEMPLATE statement creates a dialog-box template.  A dialog-box template 
  11366. consists of a series of statements that define the identifier, load and memory 
  11367. options, dialog-box dimensions, and controls in the dialog box.  The dialog-box 
  11368. template can be loaded from the executable file by using the WinLoadDlg 
  11369. function. 
  11370.  
  11371. You can provide any number of dialog-box templates in a resource script file, 
  11372. but each template must have a unique dialog-id value. 
  11373.  
  11374.  dialog-id         Specifies the dialog-box identifier. This value must be an 
  11375.                    unsigned integer in the range of 1 through 65535, a simple 
  11376.                    expression that evaluates to a value in these ranges, or a 
  11377.                    character string. 
  11378.  load-option       Specifies when the system loads the resource from the 
  11379.                    executable file into memory.  This value must be one of the 
  11380.                    following: 
  11381.                    PRELOAD             System loads the resource when the 
  11382.                                        application starts. 
  11383.                    LOADONCALL          System loads the resource when the 
  11384.                                        application calls the WinLoadDlg 
  11385.                                        function.  This is the default option. 
  11386.  mem-option        Specifies how the system manages the resource when it is in 
  11387.                    memory.  This value must be one or more of the following: 
  11388.                    FIXED               System keeps the resource at a fixed 
  11389.                                        memory location. 
  11390.                    MOVEABLE            System moves the resource as necessary 
  11391.                                        to compact memory. 
  11392.                    DISCARDABLE         System discards the resource if it is no 
  11393.                                        longer needed. The default setting is 
  11394.                    MOVEABLE and DISCARDABLE. 
  11395.  codepage          Specifies a code-page value.  For a list of valid code pages 
  11396.                    see CODEPAGE Statement. 
  11397.  dialog-definition Specifies a DIALOG statement. The statement defines the 
  11398.                    dimensions and style of the given dialog box. For details 
  11399.                    about the statement, see DIALOG Statement. 
  11400.  
  11401.  Comments 
  11402.  
  11403.  A DLGTEMPLATE statement can actually contain DIALOG, CONTROL, and WINDOW 
  11404.  statements.  Typically, you include only one DIALOG statement. 
  11405.  
  11406.  Example 
  11407.  
  11408.  This example uses a DLGTEMPLATE statement to create a dialog box. 
  11409.  
  11410.   DLGTEMPLATE ID_GETTIMER
  11411.   BEGIN
  11412.       DIALOG "Timer", 1, 10, 10, 100, 40
  11413.       BEGIN
  11414.           LTEXT "Time (0 - 15):", 4, 8, 24, 72, 12
  11415.           ENTRYFIELD "0", ID_TIME, 80, 28, 16, 8, ES_MARGIN
  11416.           DEFPUSHBUTTON "Enter", ID_TIMEOK, 10, 6, 36, 12
  11417.           PUSHBUTTON "Cancel", ID_TIMECANCEL, 52, 6, 40, 12
  11418.       END
  11419.   END
  11420.  
  11421.  
  11422. ΓòÉΓòÉΓòÉ 21.3.2.19. EDITTEXT Statement ΓòÉΓòÉΓòÉ
  11423.  
  11424. Syntax: 
  11425.  
  11426.   EDITTEXT text, id, x, y, width, height [,style]
  11427.  
  11428. The EDITTEXT statement creates an entry-field control.  This control is a 
  11429. rectangle in which the user can type and edit text. The control displays a 
  11430. pointer when the user selects the control.  The user can then use the keyboard 
  11431. to enter text or edit the existing text.  Editing keys include the BACKSPACE 
  11432. and DELETE keys.  By using the mouse or the DIRECTION keys, the user can select 
  11433. the character or characters to delete or select the place to insert new 
  11434. characters. 
  11435.  
  11436. The EDITTEXT statement defines the text, identifier, dimensions, and attributes 
  11437. of a control window.  The predefined class for this control is WC_ENTRYFIELD. 
  11438. If you do not specify a style, the default style is ES_AUTOSCROLL and 
  11439. WS_TABSTOP. 
  11440.  
  11441.  text    Specifies text that is displayed in the rectangular area of the 
  11442.          control.  This field must contain zero or more characters enclosed in 
  11443.          double quotation marks.  Character values must be in the range 1 
  11444.          through 255.  If a double quotation mark is required in the text, you 
  11445.          must include the double quotation mark twice. 
  11446.  id      Specifies the control identifier. This value is a signed integer 
  11447.          -32768 through 32767, an unsigned integer in the range of 1 through 
  11448.          65535, or a simple expression that evaluates to a value in these 
  11449.          ranges. 
  11450.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11451.          This value is a signed integer -32768 through 32767, or an expression 
  11452.          consisting of integers and the addition (+) or subtraction (-) 
  11453.          operator.  The coordinate is assumed to be in dialog units and is 
  11454.          relative to the origin of the dialog window. 
  11455.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11456.          This value is a signed integer -32768 through 32767, or an expression 
  11457.          consisting of integers and the addition (+) or subtraction (-) 
  11458.          operator.  The coordinate is assumed to be in dialog units and is 
  11459.          relative to the origin of the dialog window. 
  11460.  width   Specifies the width of the control.  This value is any integer 0 
  11461.          through 65535, or an expression consisting of integers and the 
  11462.          addition (+) or subtraction (-) operator. The width is in n-character 
  11463.          units. 
  11464.  height  Specifies the height of the control.  This value is any integer 0 
  11465.          through 65535, or an expression consisting of integers and the 
  11466.          addition (+) or subtraction (-) operator. The height is in 
  11467.          1/8-character units. 
  11468.  style   Specifies the control styles.  This value can be a combination of the 
  11469.          styles specified for WC_ENTRYFIELD.  You can use the bitwise OR ( | ) 
  11470.          operator to combine styles. 
  11471.  
  11472.  Comments 
  11473.  
  11474.  The EDITTEXT control statement is identical to the ENTRYFIELD control 
  11475.  statement. 
  11476.  
  11477.  Use the EDITTEXT statement only in a DIALOG or WINDOW statement. 
  11478.  
  11479.  Example 
  11480.  
  11481.  This example creates an entry-field control that is not labeled. 
  11482.  
  11483.      EDITTEXT "", 101, 10, 10, 24, 50
  11484.  
  11485.  
  11486. ΓòÉΓòÉΓòÉ 21.3.2.20. elif Directive ΓòÉΓòÉΓòÉ
  11487.  
  11488. Syntax: 
  11489.  
  11490.   elif constant-expression
  11491.  
  11492. The elif directive marks an optional clause of a conditional-compilation block 
  11493. defined by a ifdef, ifndef, or if directive.  The directive controls 
  11494. conditional compilation of the resource file by checking the specified constant 
  11495. expression.  If the constant expression is nonzero, elif directs the compiler 
  11496. to continue processing statements up to the next endif, else, or elif directive 
  11497. and then skip to the statement after endif.  If the constant expression is 
  11498. zero, elif directs the compiler to skip to the next endif, else, or elif 
  11499. directive.  You can use any number of elif directives in a conditional block. 
  11500.  
  11501.  constant-expression   Specifies the expression to be checked.  This value is a 
  11502.                        defined name, an integer constant, or an expression 
  11503.                        consisting of names, integers, and arithmetic and 
  11504.                        relational operators. 
  11505.  
  11506.  Example 
  11507.  
  11508.  In this example, elif directs the compiler to process the second BITMAP 
  11509.  statement only if the value assigned to the name "Version" is less than 7. 
  11510.  The elif directive itself is processed only if Version is greater than or 
  11511.  equal to 3. 
  11512.  
  11513.   #if Version < 3
  11514.   BITMAP 1 errbox.bmp
  11515.   #elif Version < 7
  11516.   BITMAP 1 userbox.bmp
  11517.   #endif
  11518.  
  11519.  
  11520. ΓòÉΓòÉΓòÉ 21.3.2.21. else Directive ΓòÉΓòÉΓòÉ
  11521.  
  11522. Syntax: 
  11523.  
  11524.   else
  11525.  
  11526. The else directive marks an optional clause of a conditional-compilation block 
  11527. defined by a ifdef, ifndef, or if directive.  The else directive must be the 
  11528. last directive before the endif directive. 
  11529.  
  11530. This directive has no arguments. 
  11531.  
  11532. Example 
  11533.  
  11534. This example compiles the second BITMAP statement only if the name "DEBUG" is 
  11535. not defined. 
  11536.  
  11537.     #ifdef DEBUG
  11538.         BITMAP 1 errbox.bmp
  11539.     #else
  11540.         BITMAP 1 userbox.bmp
  11541.     #endif
  11542.  
  11543.  
  11544. ΓòÉΓòÉΓòÉ 21.3.2.22. endif Directive ΓòÉΓòÉΓòÉ
  11545.  
  11546. Syntax: 
  11547.  
  11548.   endif
  11549.  
  11550. The endif directive marks the end of a conditional-compilation block defined by 
  11551. a ifdef directive.  One endif is required for each if, ifdef, or ifndef 
  11552. directive. 
  11553.  
  11554. This directive has no arguments. 
  11555.  
  11556.  
  11557. ΓòÉΓòÉΓòÉ 21.3.2.23. ENTRYFIELD Statement ΓòÉΓòÉΓòÉ
  11558.  
  11559. Syntax: 
  11560.  
  11561.   ENTRYFIELD text, id, x, y, width, height , [style]
  11562.  
  11563. The ENTRYFIELD statement creates an entry-field control.  This control is a 
  11564. rectangle in which the user can type and edit text.  The control displays a 
  11565. pointer when the user selects the control.  The user can then use the keyboard 
  11566. to enter text or edit the existing text. Editing keys include the BACKSPACE and 
  11567. DELETE keys.  By using the mouse or the DIRECTION keys, the user can select the 
  11568. character or characters to delete or select the place to insert new characters. 
  11569. The ENTRYFIELD statement, which you can use only in a DIALOG or WINDOW 
  11570. statement, defines the text, identifier, dimensions, and attributes of a 
  11571. control window.  The predefined class for this control is WC_ENTRYFIELD.  If 
  11572. you do not specify a style, the default style is ES_AUTOSCROLL and WS_TABSTOP. 
  11573.  
  11574.  text    Specifies text that is displayed in the rectangular area of the 
  11575.          control.  This field must contain zero or more characters enclosed in 
  11576.          double quotation marks.  Character values must be in the range 1 
  11577.          through 255.  If a double quotation mark is required in the text, you 
  11578.          must include the double quotation mark twice. 
  11579.  id      Specifies the control identifier. This value must be a signed integer 
  11580.          in the range -32768 through 32767, an unsigned integer in the range of 
  11581.          1 through 65535, or a simple expression that evaluates to a value in 
  11582.          these ranges. 
  11583.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11584.          This value must be a signed integer in the range -32768 through 32767 
  11585.          or an expression consisting of integers and the addition (+) or 
  11586.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11587.          units and is relative to the origin of the dialog box, window, or 
  11588.          control containing the specified control. 
  11589.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11590.          This value must be a signed integer in the range -32768 through 32767 
  11591.          or an expression consisting of integers and the addition (+) or 
  11592.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11593.          units and is relative to the origin of the dialog box, window, or 
  11594.          control containing the specified control. 
  11595.  width   Specifies the width of the control.  This value must be an integer in 
  11596.          the range 0 through 65535 or an expression consisting of integers and 
  11597.          the addition (+) or subtraction (-) operator.  The width is in 
  11598.          n-character units. 
  11599.  height  Specifies the height of the control.  This value must be an integer in 
  11600.          the range 0 through 65535 or an expression consisting of integers and 
  11601.          the addition (+) or subtraction (-) operator.  The height is in 
  11602.          1/8-character units. 
  11603.  style   Specifies the control styles.  This value can be a combination of the 
  11604.          styles specified for WC_ENTRYFIELD. You can use the bitwise OR (|) 
  11605.          operator to combine styles. 
  11606.  
  11607.  Example 
  11608.  
  11609.  This example creates an entry-field control that is not labeled. 
  11610.  
  11611.   ENTRYFIELD "", 101, 10, 10, 24, 50
  11612.  
  11613.  
  11614. ΓòÉΓòÉΓòÉ 21.3.2.24. FONT Statement ΓòÉΓòÉΓòÉ
  11615.  
  11616. Syntax: 
  11617.  
  11618.   FONT font-id  [load-option] [mem-option] [codepage]  filename
  11619.  
  11620. The FONT statement defines a font resource for an application. A font resource, 
  11621. typically created by using the OS/2 Font Editor, is a bit map defining the 
  11622. shape of the individual characters in a character set.  The FONT statement 
  11623. copies the font resource from the file specified in the filename field and adds 
  11624. it to the other resources of the application.  A font resource can be loaded 
  11625. from the executable file when needed by using the GpiLoadFonts function. 
  11626.  
  11627. You can provide any number of FONT statements in a resource script file, but 
  11628. each statement must specify a unique font-id value. 
  11629.  
  11630.  font-id           Specifies the font-resource identifier. This value must be 
  11631.                    an unsigned integer in the range of 1 through 65535, or a 
  11632.                    simple expression that evaluates to a value in these ranges. 
  11633.                    Character strings cannot be used as resource identifiers for 
  11634.                    this statement. 
  11635.  load-option       Specifies when the system loads the resource from the 
  11636.                    executable file into memory.  This value must be one of the 
  11637.                    following: 
  11638.                    PRELOAD             System loads the resource when the 
  11639.                                        application starts. 
  11640.                    LOADONCALL          System loads the resource when the 
  11641.                                        application calls the GpiLoadFonts 
  11642.                                        function.  This is the default option. 
  11643.  mem-option        Specifies how the system manages the resource when it is i 
  11644.                    memory.  This value must be one or more of the following: 
  11645.                    FIXED               System keeps the resource at a fixed 
  11646.                                        memory location. 
  11647.                    MOVEABLE            System moves the resource as necessary 
  11648.                                        to compact memory. 
  11649.                    DISCARDABLE         System discards the resource if it is no 
  11650.                                        longer needed. The default setting is 
  11651.                    MOVEABLE and DISCARDABLE. 
  11652.  codepage          Specifies a code page value.  For a list of valid code pages 
  11653.                    see CODEPAGE Statement. 
  11654.  filename          Specifies the name of the file containing the font resource. 
  11655.                    If the file is not in the current directory, filename must 
  11656.                    be preceded by a full path. 
  11657.  
  11658.  Example 
  11659.  
  11660.  This example defines a font whose font identifier is 5. The font resource is 
  11661.  copied from the file cmroman.fon. 
  11662.  
  11663.   FONT 5 cmroman.fon
  11664.  
  11665.  
  11666. ΓòÉΓòÉΓòÉ 21.3.2.25. FRAME Statement ΓòÉΓòÉΓòÉ
  11667.  
  11668. Syntax: 
  11669.  
  11670.   FRAME text, id, x, y, width, height[, style[, framectl]]
  11671.         data-definitions
  11672.   [ BEGIN
  11673.   window-definition
  11674.       .
  11675.       .
  11676.       .
  11677.   END ]
  11678.  
  11679. The FRAME statement defines a frame window.  The statement defines the title, 
  11680. identifier, position, and dimensions of the frame window, as well as the window 
  11681. style.  The FRAME statement is most often used in a WINDOWTEMPLATE statement, 
  11682. and typically, only one FRAME statement is used.  The FRAME statement, in turn, 
  11683. typically contains at least one WINDOW statement that defines the client window 
  11684. belonging to the frame window. 
  11685.  
  11686. The frame window has no default style.  You must use the framectl field to 
  11687. define additional frame controls, such as a title bar and system menu, to be 
  11688. created when the frame window is created.  If the text field is not empty, the 
  11689. statement automatically adds a title-bar control to the frame window, whether 
  11690. or not you specify the FCF_TITLEBAR style.  Frame controls are given default 
  11691. styles and control identifiers depending on their class.  For example, a 
  11692. title-bar control receives the identifier FID_TITLEBAR. 
  11693.  
  11694.  text        Specifies the title of the frame window.  This field must contain 
  11695.              zero or more characters enclosed in double quotation marks. 
  11696.              Character values must be in the range 1 through 255.  If a double 
  11697.              quotation mark is required in the name, you must include the 
  11698.              double quotation mark twice. 
  11699.  id          Specifies the window identifier.  This value must be a signed 
  11700.              integer in the range -32768 through 32767, an unsigned integer in 
  11701.              the range of 1 through 65535, or a simple expression that 
  11702.              evaluates to a value in these ranges. 
  11703.  x           Specifies the x-coordinate of the lower-left corner of the window. 
  11704.              This value must be a signed integer in the range -32768 through 
  11705.              32767 or an expression consisting of integers and the addition (+) 
  11706.              or subtraction (-) operator.  The coordinate is assumed to be in 
  11707.              dialog units and is relative to the origin of the dialog box, 
  11708.              window, or control containing the specified window. 
  11709.  y           Specifies the y-coordinate of the lower-left corner of the window. 
  11710.              This value must be a signed integer in the range -32768 through 
  11711.              32767 or an expression consisting of integers and the addition (+) 
  11712.              or subtraction (-) operator.  The coordinate is assumed to be in 
  11713.              dialog units and is relative to the origin of the dialog box, 
  11714.              window, or control containing the specified window. 
  11715.  width       Specifies the width of the window.  This value must be an integer 
  11716.              in the range 0 through 65535 or an expression consisting of 
  11717.              integers and the addition (+) or subtraction (-) operator.  The 
  11718.              width is in n-character units. 
  11719.  height      Specifies the height of the window.  This value must be a integer 
  11720.              in the range 0 through 65535 or an expression consisting of 
  11721.              integers and the addition (+) or subtraction (-) operator.  The 
  11722.              height is in 1/8-character units. 
  11723.  style       Specifies the frame and window styles.  This value can be a 
  11724.              combination of frame styles. You can use the bitwise OR (|) 
  11725.              operator to combine styles. 
  11726.  framectl    Specifies the styles of frame controls belonging to the frame 
  11727.              window.  This value can be a combination of the styles specified 
  11728.              in the "Frame-Control Styles" table in the Presentation Manager 
  11729.              Programmers Reference. You can use the bitwise OR (|) operator to 
  11730.              combine styles. 
  11731.  data-definitions Specifies a CTLDATA and/or PRESPARAMS statement.  These 
  11732.              statements define control and presentation data for the frame 
  11733.              window.  For more information, see CTLDATA Statement and 
  11734.              PRESPARAMS Statement. 
  11735.  window-definition Specifies a WINDOW statement or any one of several 
  11736.              predefined control statements.  These statements define the style, 
  11737.              position, and dimensions of windows or controls in the frame 
  11738.              window. 
  11739.  
  11740.  Comments 
  11741.  
  11742.  The FRAME statement can actually contain any combination of CONTROL, DIALOG, 
  11743.  and WINDOW statements.  Typically, a FRAME statement contains one WINDOW 
  11744.  statement. 
  11745.  
  11746.  Example 
  11747.  
  11748.  This example creates a standard frame window, with a title bar, a system menu, 
  11749.  minimize and maximize boxes, and a vertical scroll bar. The FRAME statement 
  11750.  contains a WINDOW statement defining the client window belonging to the frame 
  11751.  window. 
  11752.  
  11753.   WINDOWTEMPLATE 1
  11754.   BEGIN
  11755.       FRAME "My Window", 1, 10, 10, 320, 130, 0,
  11756.               FCF_STANDARD | FCF_VERTSCROLL
  11757.       BEGIN
  11758.           WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass"
  11759.       END
  11760.   END
  11761.  
  11762.  
  11763. ΓòÉΓòÉΓòÉ 21.3.2.26. GROUPBOX Statement ΓòÉΓòÉΓòÉ
  11764.  
  11765. Syntax: 
  11766.  
  11767.   GROUPBOX text, id, x, y, width, height [, style]
  11768.  
  11769. The GROUPBOX statement creates a group-box control.  The control is a rectangle 
  11770. that groups other controls together.  The controls are grouped by drawing a 
  11771. border around them and displaying the given text in the upper-left corner.  The 
  11772. GROUPBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  11773. defines the text, identifier, dimensions, and attributes of a control window. 
  11774. The predefined class for this control is WC_STATIC.  If you do not specify a 
  11775. style, the default style is SS_GROUPBOX and WS_TABSTOP. 
  11776.  
  11777.  text    Specifies text that appears in the upper-left corner of the control. 
  11778.          This field must contain zero or more characters enclosed in double 
  11779.          quotation marks.  Character values must be in the range 1 through 255. 
  11780.          If a double quotation mark is required in the text, you must include 
  11781.          the double quotation mark twice. 
  11782.  id      Specifies the control identifier.  This value must be a signed integer 
  11783.          in the range -32768 through 32767, an unsigned integer in the range of 
  11784.          1 through 65535, or a simple expression that evaluates to a value in 
  11785.          these ranges. 
  11786.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  11787.          This value must be a signed integer in the range -32768 through 32767 
  11788.          or an expression consisting of integers and the addition (+) or 
  11789.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11790.          units and is relative to the origin of the dialog box, window, or 
  11791.          control containing the specified control. 
  11792.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  11793.          This value must be a signed integer in the range -32768 through 32767 
  11794.          or an expression consisting of integers and the addition (+) or 
  11795.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  11796.          units and is relative to the origin of the dialog box, window, or 
  11797.          control containing the specified control. 
  11798.  width   Specifies the width of the control.  This value must be an integer in 
  11799.          the range 0 through 65535 or an expression consisting of integers and 
  11800.          the addition (+) or subtraction (-) operator.  The width is in 
  11801.          n-character units. 
  11802.  height  Specifies the height of the control.  This value must be an integer in 
  11803.          the range 0 through 65535 or an expression consisting of integers and 
  11804.          the addition (+) or subtraction (-) operator.  The height is in 
  11805.          1/8-character units. 
  11806.  style   Specifies the control styles.  This value can be a combination of the 
  11807.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  11808.          operator to combine styles. 
  11809.  
  11810.  Example 
  11811.  
  11812.  This example creates a group-box control that is labeled "Options." 
  11813.  
  11814.   GROUPBOX "Options", 101, 10, 10, 100, 100
  11815.  
  11816.  
  11817. ΓòÉΓòÉΓòÉ 21.3.2.27. HELPITEM Statement ΓòÉΓòÉΓòÉ
  11818.  
  11819. Syntax: 
  11820.  
  11821.   HELPITEM application-window-id, help-subtable-id, extended-helppanel-id
  11822.  
  11823. The HELPITEM statement defines the help items in a help table.  The statement, 
  11824. permitted only in a HELPTABLE statement, specifies the resource identifier of 
  11825. an application window for which help is provided, and the resource identifiers 
  11826. of the help subtable and extended help panel associated with the application 
  11827. window. 
  11828.  
  11829. You can provide any number of HELPITEM statements in a HELPTABLE statement. 
  11830. You should provide one HELPITEM statement for each application window for which 
  11831. help is provided. 
  11832.  
  11833.  application-window-id     Specifies the resource identifier of an application 
  11834.                            window for which help is provided. This value must 
  11835.                            be a signed integer in the range -32768 through 
  11836.                            32767, an unsigned integer in the range of 1 through 
  11837.                            65535, or a simple expression that evaluates to a 
  11838.                            value in these ranges. 
  11839.  
  11840.  help-subtable-id          Specifies the resource identifier of the help 
  11841.                            subtable associated with the specified application 
  11842.                            window. This value must be an unsigned integer in 
  11843.                            the range of 1 through 65535, or a simple expression 
  11844.                            that evaluates to a value in these ranges. 
  11845.  
  11846.  extended-helppanel-id     Specifies the resource identifier of the extended 
  11847.                            help panel associated with the specified application 
  11848.                            window. This value must be an integer in the range 0 
  11849.                            through 65535. However, in IPF a panel-id must be an 
  11850.                            integer in the range of 0 to 64000. 
  11851.  
  11852.  Example 
  11853.  
  11854.  This example defines a help item that associates a help subtable called 
  11855.  IDSUB_FILEMENU and an extended help panel called IDEXT_APPHLP with an 
  11856.  application window called IDWIN_FILEMENU. 
  11857.  
  11858.   HELPITEM IDWIN_FILEMENU, IDSUB_FILEMENU, IDEXT_APPHLP
  11859.  
  11860.  
  11861. ΓòÉΓòÉΓòÉ 21.3.2.28. HELPSUBITEM Statement ΓòÉΓòÉΓòÉ
  11862.  
  11863. Syntax: 
  11864.  
  11865.   HELPSUBITEM child-window-id, helppanel-id [ , integer...]
  11866.  
  11867. The HELPSUBITEM statement defines the help subitems in a help subtable.  This 
  11868. statement, which is permitted only in a HELPSUBTABLE statement, specifies the 
  11869. identifier of a child window for which help is provided, the identifier of the 
  11870. help panel associated with the child window, and one or more optional, 
  11871. application-defined integers. 
  11872.  
  11873. You can provide any number of HELPSUBITEM statements in a HELPSUBTABLE 
  11874. statement.  You should provide one HELPSUBITEM statement for each child window 
  11875. for which help is provided. 
  11876.  
  11877.  child-window-id     Specifies the resource identifier of the child window for 
  11878.                      which help is provided. Character strings cannot be used 
  11879.                      as resource identifiers for this statement. 
  11880.  helppanel-id        Specifies the resource identifier of the help panel 
  11881.                      associated with the specified child window. 
  11882.  integer             Specifies optional, application-defined integers.  If you 
  11883.                      use this field, you must include the SUBITEMSIZE statement 
  11884.                      in the help subtable to specify the size, in words, of 
  11885.                      each help subitem in the help subtable. For details about 
  11886.                      this statement, see SUBITEMSIZE Statement. 
  11887.  
  11888.  Example 
  11889.  
  11890.  This example defines a help subitem that associates a child window called 
  11891.  IDCLD_FILEMENU with a help panel called IDHP_FILEMENU. 
  11892.  
  11893.   HELPSUBITEM IDCLD_FILEMENU, IDHP_FILEMENU
  11894.  
  11895.  
  11896. ΓòÉΓòÉΓòÉ 21.3.2.29. HELPSUBTABLE Statement ΓòÉΓòÉΓòÉ
  11897.  
  11898. Syntax: 
  11899.  
  11900.   HELPSUBTABLE helpsubtable-id
  11901.     SUBITEMSIZE size
  11902.   BEGIN
  11903.   helpsubitem-definition
  11904.       .
  11905.       .
  11906.       .
  11907.   END
  11908.  
  11909. The HELPSUBTABLE statement defines the contents of a help-subtable resource.  A 
  11910. help-subtable resource contains a help-subitem entry for each item that can be 
  11911. selected in an application window.  Each of these items should be a child 
  11912. window of the application window specified in the help-table resource.  The 
  11913. help subtable should contain a help subitem for each control, child window, and 
  11914. menu item in the application window. 
  11915.  
  11916. You can provide any number of HELPSUBTABLE statements in a resource script 
  11917. file, but each statement must specify a unique helpsubtable-id value.  You can 
  11918. also provide any number of helpsubitem-definition statements in the help 
  11919. subtable.  These specify the child window for which help is provided, the help 
  11920. panel containing the help text for the child window, and one or more 
  11921. application-defined integers. 
  11922.  
  11923. If you include optional integers in the helpsubitem-definition statements, you 
  11924. must also include a SUBITEMSIZE statement to specify the size, in words, of 
  11925. each help subitem.  All help subitems in a help subtable must be the same size. 
  11926. The default size is two words per help subitem. (No SUBITEMSIZE statement is 
  11927. needed if you do not include optional integers in the helpsubitem-definition 
  11928. statement.) 
  11929.  
  11930.  helpsubtable-id 
  11931.       Specifies the resource identifier of the help subtable. This value must 
  11932.       be an unsigned integer in the range of 1 through 65535, or a simple 
  11933.       expression that evaluates to a value in these ranges. Character strings 
  11934.       cannot be used as resource identifiers for this statement. 
  11935.  helpsubitem-definition 
  11936.       Specifies a HELPSUBITEM statement.  A HELPSUBITEM statement specifies a 
  11937.       child window, the help panel associated with the child window, and one or 
  11938.       more optional, application-defined integers.  For details about this 
  11939.       statement, see HELPSUBITEM Statement. 
  11940.  
  11941.  Example 
  11942.  
  11943.  This example creates a help-subtable resource whose help-subtable identifier 
  11944.  is IDSUB_FILEMENU.  Each HELPSUBITEM statement specifies a child window and a 
  11945.  help panel. 
  11946.  
  11947.   HELPSUBTABLE IDSUB_FILEMENU
  11948.   BEGIN
  11949.       HELPSUBITEM IDCLD_OPEN, IDPNL_OPEN
  11950.       HELPSUBITEM IDCLD_SAVE, IDPNL_SAVE
  11951.   END
  11952.  
  11953.  
  11954. ΓòÉΓòÉΓòÉ 21.3.2.30. HELPTABLE Statement ΓòÉΓòÉΓòÉ
  11955.  
  11956. Syntax: 
  11957.  
  11958.   HELPTABLE helptable-id
  11959.   BEGIN
  11960.   helpitem-definition
  11961.       .
  11962.       .
  11963.       .
  11964.   END
  11965.  
  11966. The HELPTABLE statement defines the contents of a help-table resource. A 
  11967. help-table resource contains a help-item entry for each application window, 
  11968. dialog box, and message box for which help is provided. 
  11969.  
  11970. You can provide any number of HELPTABLE statements in a resource script file, 
  11971. but each statement must specify a unique helptable-id value.  You can also 
  11972. provide any number of helpitem-definition statements in the help table.  These 
  11973. specify the application windows for which help is provided, the help subtables 
  11974. associated with each application window, and the extended help panels 
  11975. associated with each application window. 
  11976.  
  11977.  helptable-id          Specifies the resource identifier of the help table. 
  11978.                        This value must be an unsigned integer in the range of 1 
  11979.                        through 65535, or a simple expression that evaluates to 
  11980.                        a value in these ranges. Character strings cannot be 
  11981.                        used as resource identifiers for this statement. 
  11982.  helpitem-definition   Specifies a HELPITEM statement. A HELPITEM statement 
  11983.                        specifies an application window and the associated help 
  11984.                        subtable and extended help panel. For details about this 
  11985.                        statement, see HELPITEM Statement. 
  11986.  
  11987.  Example 
  11988.  
  11989.  This example creates a help-table resource whose help-table identifier is 1. 
  11990.  Each HELPITEM statement specifies an application window, a help subtable, and 
  11991.  an extended help panel. 
  11992.  
  11993.   HELPTABLE 1
  11994.   BEGIN
  11995.       HELPITEM IDWIN_FILEMENU, IDSUB_FILEMENU, IDEXT_APPHLP
  11996.       HELPITEM IDWIN_EDITMENU, IDSUB_EDITMENU, IDEXT_APPHLP
  11997.   END
  11998.  
  11999.  
  12000. ΓòÉΓòÉΓòÉ 21.3.2.31. ICON Statement (Resource) ΓòÉΓòÉΓòÉ
  12001.  
  12002. Syntax: 
  12003.  
  12004.   ICON icon-id  [load-option] [ mem-option] [codepage] filename
  12005.  
  12006. This form of the ICON statement defines an icon resource for an application. 
  12007. An icon resource, typically created by using Icon Editor, is a bit map defining 
  12008. the shape of the icon to be used for a given application.  The ICON statement 
  12009. copies the icon resource from the file specified in the filename field and adds 
  12010. it to the application's other resources.  An icon resource can be loaded when 
  12011. creating a window by using the WinCreateStdWindow function with the FS_ICON 
  12012. style. 
  12013.  
  12014. You can provide any number of ICON statements in a resource script file, but 
  12015. each statement must specify a unique icon-id value. 
  12016.  
  12017.  icon-id           Specifies the icon-resource identifier.  This value must be 
  12018.                    an unsigned integer in the range of 1 through 65535, a 
  12019.                    simple expression that evaluates to a value in these ranges, 
  12020.                    or a character string. An icon-id of 1 has a special 
  12021.                    meaning; for details, see the "Comment" section. 
  12022.  load-option       Specifies when the system loads the resource from the 
  12023.                    executable file into memory.  This value must be one of the 
  12024.                    following: 
  12025.                    PRELOAD             System loads the resource when the 
  12026.                                        application starts. 
  12027.                    LOADONCALL          System loads the resource when the 
  12028.                                        application calls the WinCreateStdWindow 
  12029.                                        function.  This is the default option. 
  12030.  mem-option        Specifies how the system manages the resource when it is in 
  12031.                    memory.  This value must be one or more of the following: 
  12032.                    FIXED               System keeps the resource at a fixed 
  12033.                                        memory location. 
  12034.                    MOVEABLE            System moves the resource as necessary 
  12035.                                        to compact memory. 
  12036.                    DISCARDABLE         System discards the resource if it is no 
  12037.                                        longer needed. The default setting is 
  12038.                    MOVEABLE and DISCARDABLE. 
  12039.  codepage          Specifies a code page value.  For a list of valid code pages 
  12040.                    see CODEPAGE Statement. 
  12041.  filename          Specifies the name of the file containing the icon resource. 
  12042.                    If the file is not in the current directory, filename must 
  12043.                    be preceded by a full path. 
  12044.  
  12045.  Comments 
  12046.  
  12047.  An icon with an icon-id of 1 is the default icon.  The RC program writes the 
  12048.  icon not only to the resources in your executable file, but also as the .ICON 
  12049.  extended attribute.  File Manager will display this icon next to the name of 
  12050.  the executable file. 
  12051.  
  12052.  Example 
  12053.  
  12054.  This example defines an icon whose icon identifier is 11.  The icon resource 
  12055.  is copied from the file custom.ico. 
  12056.  
  12057.   ICON 11 custom.ico
  12058.  
  12059.  
  12060. ΓòÉΓòÉΓòÉ 21.3.2.32. ICON Statement (Control) ΓòÉΓòÉΓòÉ
  12061.  
  12062. Syntax: 
  12063.  
  12064.   ICON icon-id, id, x, y, width, height, [style]
  12065.  
  12066. This form of the ICON statement creates an icon control.  This control is an 
  12067. icon displayed in a dialog box.  The ICON statement, which you can use only in 
  12068. a DIALOG or WINDOW statement, defines the icon-resource identifier, 
  12069. icon-control identifier, position, and attributes of a control window.  The 
  12070. predefined class for this control is WC_STATIC.  If you do not specify a style, 
  12071. the default style is SS_ICON.  For the ICON statement, the width and height 
  12072. fields are ignored; the icon automatically sizes itself. 
  12073.  
  12074.  icon-id   Specifies the resource identifier of an icon that is defined 
  12075.            elsewhere in the resource file. 
  12076.  id        Specifies the control identifier.  This value must be a signed 
  12077.            integer in the range -32768 through 32767, an unsigned integer in 
  12078.            the range of 1 through 65535, or a simple expression that evaluates 
  12079.            to a value in these ranges. 
  12080.  x         Specifies the x-coordinate of the lower-left corner of the control. 
  12081.            This value must be a signed integer in the range -32768 through 
  12082.            32767 or an expression consisting of integers and the addition (+) 
  12083.            or subtraction (-) operator.  The coordinate is assumed to be in 
  12084.            dialog units and is relative to the origin of the dialog box, 
  12085.            window, or control containing the specified control. 
  12086.  y         Specifies the y-coordinate of the lower-left corner of the control. 
  12087.            This value must be a signed integer in the range -32768 through 
  12088.            32767 or an expression consisting of integers and the addition (+) 
  12089.            or subtraction (-) operator.  The coordinate is assumed to be in 
  12090.            dialog units and is relative to the origin of the dialog box, 
  12091.            window, or control containing the specified control. 
  12092.  width     Specifies a reserved value.  Can be set to zero. 
  12093.  height    Specifies a reserved value.  Can be set to zero. 
  12094.  style     Specifies the control styles.  This value can be a combination of 
  12095.            the styles specified for WC_STATIC. You can use the bitwise OR (|) 
  12096.            operator to combine styles. 
  12097.  
  12098.  Example 
  12099.  
  12100.  This example creates an icon control whose icon identifier is 99. 
  12101.  
  12102.   ICON 99, 101, 10, 10, 0, 0
  12103.  
  12104.  
  12105. ΓòÉΓòÉΓòÉ 21.3.2.33. if Directive ΓòÉΓòÉΓòÉ
  12106.  
  12107. Syntax: 
  12108.  
  12109.   if constant-expression
  12110.  
  12111. The if directive controls conditional compilation of the resource file by 
  12112. checking the specified constant expression.  If the constant expression is 
  12113. nonzero, if directs the compiler to continue processing statements up to the 
  12114. next endif, else, or elif directive and then skip to the statement after the 
  12115. endif directive.  If the constant expression is zero, if directs the compiler 
  12116. to skip to the next endif, else, or elif directive. 
  12117.  
  12118.  constant-expression   Specifies the expression to be checked.  This value is a 
  12119.                        defined name, an integer constant, or an expression 
  12120.                        consisting of names, integers, and arithmetic and 
  12121.                        relational operators. 
  12122.  
  12123.  Example 
  12124.  
  12125.  This example compiles the BITMAP statement only if the value assigned to the 
  12126.  name "Version" is less than 3. 
  12127.  
  12128.   #if Version < 3
  12129.   BITMAP 1 errbox.bmp
  12130.   #endif
  12131.  
  12132.  
  12133. ΓòÉΓòÉΓòÉ 21.3.2.34. ifdef Directive ΓòÉΓòÉΓòÉ
  12134.  
  12135. Syntax: 
  12136.  
  12137.   ifdef name
  12138.  
  12139. The ifdef directive controls conditional compilation of the resource file by 
  12140. checking the specified name.  If the name has been defined by using a define 
  12141. directive or by using the -d command-line option of rc, ifdef directs the 
  12142. compiler to continue with the statement immediately after the ifdef directive. 
  12143. If the name has not been defined, ifdef directs the compiler to skip all 
  12144. statements up to the next endif directive. 
  12145.  
  12146.  name    Specifies the name to be checked by the directive. 
  12147.  
  12148.  Example 
  12149.  
  12150.  This example compiles the BITMAP statement only if the name "Debug" is 
  12151.  defined. 
  12152.  
  12153.   #ifdef Debug
  12154.   BITMAP 1 errbox.bmp
  12155.   #endif
  12156.  
  12157.  
  12158. ΓòÉΓòÉΓòÉ 21.3.2.35. ifndef Directive ΓòÉΓòÉΓòÉ
  12159.  
  12160. Syntax: 
  12161.  
  12162.   ifndef name
  12163.  
  12164. The ifndef directive controls conditional compilation of the resource file by 
  12165. checking the specified name.  If the name has not been defined or if its 
  12166. definition has been removed by using the undef directive, ifndef directs the 
  12167. compiler to continue processing statements up to the next endif, else, or elif 
  12168. directive and then skip to the statement after the endif directive.  If the 
  12169. name is defined, ifndef directs the compiler to skip to the next endif, else, 
  12170. or elif directive. 
  12171.  
  12172.  name    Specifies the name to be checked by the directive. 
  12173.  
  12174.  Example 
  12175.  
  12176.  This example compiles the BITMAP statement only if the name "Optimize" is not 
  12177.  defined. 
  12178.  
  12179.   #ifndef Optimize
  12180.   BITMAP 1 errbox.bmp
  12181.   #endif
  12182.  
  12183.  
  12184. ΓòÉΓòÉΓòÉ 21.3.2.36. include Directive ΓòÉΓòÉΓòÉ
  12185.  
  12186. Syntax: 
  12187.  
  12188.   include filename
  12189.  
  12190. The include directive causes RC to process the file specified in the filename 
  12191. field.  This file should be a header file that defines the constants used in 
  12192. the resource script file.  Only the #define directives in the specified file 
  12193. are processed; all other statements are ignored by the Resource Compiler. 
  12194.  
  12195.  filename    Specifies the OS/2 name of the file to be included.  This value 
  12196.              must be an ASCII string enclosed either in double quotation marks 
  12197.              (if the file is in the current directory) or in less-than and 
  12198.              greater-than characters (<>) (if the file is in the directory 
  12199.              specified by -i command-line options or by the INCLUDE environment 
  12200.              variable).  You must give a full path enclosed in double quotation 
  12201.              marks if the file is not in the current directory or in the 
  12202.              directory specified by -i command-line  options or by the INCLUDE 
  12203.              environment variable. 
  12204.  
  12205.  Comments 
  12206.  
  12207.  The filename field is handled as a C string.  Therefore, you must include two 
  12208.  backslashes wherever one is required in the path.  (As an alternative, you can 
  12209.  use a single forward slash (/) instead of two backslashes.) 
  12210.  
  12211.  Example 
  12212.  
  12213.  This example processes the header files OS2.H and HEADERS\MYDEFS.H\I while 
  12214.  compiling the resource script file. 
  12215.  
  12216.   #include <os2.h>
  12217.   #include "headers\\\\mydefs.h"
  12218.  
  12219.  
  12220. ΓòÉΓòÉΓòÉ 21.3.2.37. LISTBOX Statement ΓòÉΓòÉΓòÉ
  12221.  
  12222. Syntax: 
  12223.  
  12224.   LISTBOX id, x, y, width, height[, style]
  12225.  
  12226. The LISTBOX statement creates commonly used controls for a dialog box or 
  12227. window.  The control is a rectangle containing a list of user-selectable 
  12228. strings, such as file names. 
  12229.  
  12230. The LISTBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  12231. defines the identifier, dimensions, and attributes of a control window.  The 
  12232. predefined class for this control is WC_LISTBOX.  If you do not specify a 
  12233. style, the default style is WS_TABSTOP. 
  12234.  
  12235.  id      Specifies the control identifier.  This value must be a signed integer 
  12236.          in the range -32768 through 32767, an unsigned integer in the range of 
  12237.          1 through 65535, or a simple expression that evaluates to a value in 
  12238.          these ranges. 
  12239.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  12240.          This value must be a signed integer in the range -32768 through 32767 
  12241.          or an expression consisting of integers and the addition (+) or 
  12242.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12243.          units and is relative to the origin of the dialog box, window, or 
  12244.          control containing the specified control. 
  12245.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  12246.          This value must be a signed integer in the range -32768 through 32767 
  12247.          or an expression consisting of integers and the addition (+) or 
  12248.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12249.          units and is relative to the origin of the dialog box, window, or 
  12250.          control containing the specified control. 
  12251.  width   Specifies the width of the control.  This value must be an integer in 
  12252.          the range 0 through 65535 or an expression consisting of integers and 
  12253.          the addition (+) or subtraction (-) operator.  The width is in 
  12254.          n-character units. 
  12255.  height  Specifies the height of the control.  This value must be an integer in 
  12256.          the range 0 through 65535 or an expression consisting of integers and 
  12257.          the addition (+) or subtraction (-) operator.  The height is in 
  12258.          1/8-character units. 
  12259.  style   Specifies the control styles.  This value can be a combination of the 
  12260.          styles specified for WC_LISTBOX. You can use the bitwise OR (|) 
  12261.          operator to combine styles. 
  12262.  
  12263.  Example 
  12264.  
  12265.  This example creates a list-box control whose identifier is 101. 
  12266.  
  12267.   LISTBOX 101, 10, 10, 100, 100
  12268.  
  12269.  
  12270. ΓòÉΓòÉΓòÉ 21.3.2.38. LTEXT Statement ΓòÉΓòÉΓòÉ
  12271.  
  12272. Syntax: 
  12273.  
  12274.   LTEXT text, id, x, y, width, height [, style]
  12275.  
  12276. The LTEXT statement creates a left-aligned text control.  The control is a 
  12277. simple rectangle displaying the given text left-aligned in the rectangle.  The 
  12278. text is formatted before it is displayed.  Words that would extend past the end 
  12279. of a line are automatically wrapped to the beginning of the next line.  The 
  12280. LTEXT statement, which you can use only in a DIALOG or WINDOW statement, 
  12281. defines the text, identifier, dimensions, and attributes of the control.  The 
  12282. predefined class for this control is WC_STATIC.  If you do not specify a style, 
  12283. the default style is SS_TEXT, DT_LEFT, and WS_GROUP. 
  12284.  
  12285.  text    Specifies text that is left-aligned in the rectangular area of the 
  12286.          control.  This field must contain zero or more characters enclosed in 
  12287.          double quotation marks.  Character values must be in the range 1 
  12288.          through 255.  If a double quotation mark is required in the text, you 
  12289.          must include the double quotation mark twice. 
  12290.  id      Specifies the control identifier.  This value must be a signed integer 
  12291.          in the range -32768 through 32767, an unsigned integer in the range of 
  12292.          1 through 65535, or a simple expression that evaluates to a value in 
  12293.          these ranges. 
  12294.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  12295.          This value must be a signed integer in the range -32768 through 32767 
  12296.          or an expression consisting of integers and the addition (+) or 
  12297.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12298.          units and is relative to the origin of the dialog box, window, or 
  12299.          control containing the specified control. 
  12300.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  12301.          This value must be a signed integer in the range -32768 through 32767 
  12302.          or an expression consisting of integers and the addition (+) or 
  12303.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12304.          units and is relative to the origin of the dialog box, window, or 
  12305.          control containing the specified control. 
  12306.  width   Specifies the width of the control.  This value must be an integer in 
  12307.          the range 0 through 65535 or an expression consisting of integers and 
  12308.          the addition (+) or subtraction (-) operator.  The width is in 
  12309.          n-character units. 
  12310.  height  Specifies the height of the control.  This value must be an integer in 
  12311.          the range 0 through 65535 or an expression consisting of integers and 
  12312.          the addition (+) or subtraction (-) operator.  The height is in 
  12313.          1/8-character units. 
  12314.  style   Specifies the control styles.  This value can be a combination of the 
  12315.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  12316.          operator to combine styles. 
  12317.  
  12318.  Example 
  12319.  
  12320.  This example creates a left-aligned text control that is labeled "Filename." 
  12321.  
  12322.   LTEXT "Filename", 101, 10, 10, 100, 100
  12323.  
  12324.  
  12325. ΓòÉΓòÉΓòÉ 21.3.2.39. MENU Statement ΓòÉΓòÉΓòÉ
  12326.  
  12327. Syntax: 
  12328.  
  12329.   MENU menu-id  [load-option] [mem-option] [codepage]
  12330.   BEGIN
  12331.   menuitem-definition
  12332.       .
  12333.       .
  12334.       .
  12335.   END
  12336.  
  12337. The MENU statement defines the contents of a menu resource.  A menu resource is 
  12338. a collection of information that defines the appearance and function of an 
  12339. application menu.  A menu is a special input tool that lets a user choose 
  12340. commands from a list of command names.  A menu resource can be loaded from the 
  12341. executable file when needed by using the WinLoadMenu function. 
  12342.  
  12343. You can provide any number of MENU statements in a resource script file, but 
  12344. each statement must specify a unique menu-id value.  You can provide any number 
  12345. of menuitem-definition statements in the menu. These define the submenus and 
  12346. menu items (commands) in the menu.  The order of the statements defines the 
  12347. order of the menu items. 
  12348.  
  12349.  menu-id               Specifies the menu-resource identifier.  This value must 
  12350.                        be an unsigned integer in the range of 1 through 65535, 
  12351.                        a simple expression that evaluates to a value in these 
  12352.                        ranges, or a character string. 
  12353.  load-option           Specifies when the system loads the resource from the 
  12354.                        executable file into memory.  This value must be one of 
  12355.                        the following: 
  12356.                        PRELOAD             System loads the resource when the 
  12357.                                            application starts. 
  12358.                        LOADONCALL          System loads the resource when the 
  12359.                                            application calls the WinLoadMenu 
  12360.                                            function. This is the default 
  12361.                                            option. 
  12362.  mem-option            Specifies how the system manages the resource when it is 
  12363.                        in memory.  This value must be one or more of the 
  12364.                        following: 
  12365.                        FIXED               System keeps the resource at a fixed 
  12366.                                            memory location. 
  12367.                        MOVEABLE            System moves the resource as 
  12368.                                            necessary to compact memory. 
  12369.                        DISCARDABLE         System discards the resource if it 
  12370.                                            is no longer needed. The default 
  12371.                        setting is MOVEABLE and DISCARDABLE. 
  12372.  codepage              Specifies a codepage value.  For a list of valid code 
  12373.                        pages see CODEPAGE Statement. 
  12374.  menuitem-definition   Specifies a PRESPARAMS, MENUITEM, or SUBMENU statement. 
  12375.                        You can use one or more PRESPARAMS statements to control 
  12376.                        the appearance of a menu, such as the font and the 
  12377.                        foreground and background colors.  If used, PRESPARAMS 
  12378.                        statements must be the first statements following the 
  12379.                        BEGIN keyword.  For details about the PRESPARAMS 
  12380.                        statement, see PRESPARAMS Statement. 
  12381.  
  12382.                        MENUITEM and SUBMENU statements define the individual 
  12383.                        commands or submenus in the given menu.  For details 
  12384.                        about these statements, see MENUITEM Statement and 
  12385.                        SUBMENU Statement. 
  12386.  
  12387.  Example 
  12388.  
  12389.  This example creates a menu resource whose menu identifier is 1. The menu 
  12390.  contains a menu item named Alpha and a submenu named Beta. The submenu 
  12391.  contains two menu items, Item 1 and Item 2. 
  12392.  
  12393.   MENU 1
  12394.   BEGIN
  12395.       MENUITEM "Alpha", 100
  12396.       SUBMENU "Beta", 101
  12397.       BEGIN
  12398.           MENUITEM "Item 1", 200
  12399.           MENUITEM "Item 2", 201, , MIA_CHECKED
  12400.       END
  12401.   END
  12402.  
  12403.  
  12404. ΓòÉΓòÉΓòÉ 21.3.2.40. MENUITEM Statement ΓòÉΓòÉΓòÉ
  12405.  
  12406. Syntax: 
  12407.  
  12408.   MENUITEM text, menu-id[,  menuitem-style] [, menuitem-attribute]
  12409.  
  12410. The MENUITEM statement creates a menu item for a menu.  The statement, 
  12411. permitted only in a MENU or SUBMENU statement, defines the text, identifier, 
  12412. and attributes of a menu item.  The system displays the text when it displays 
  12413. the corresponding menu.  If the user chooses the menu item, the system 
  12414. generates a WM_COMMAND message that includes the specified menu-item identifier 
  12415. and sends it to the window owning the menu. 
  12416.  
  12417. MENUITEM SEPARATOR 
  12418.  
  12419. The alternative form of the MENUITEM statement, MENUITEM SEPARATOR, creates a 
  12420. menu separator.  A menu separator is a horizontal dividing bar between two menu 
  12421. items in a submenu.  The separator is not active - that is, the user cannot 
  12422. choose it, it has no text associated with it, and it has no identifier. 
  12423.  
  12424.  text              Specifies the text of the menu item.  This field must 
  12425.                    contain zero or more characters enclosed in double quotation 
  12426.                    marks.  Character values must be in the range 1 through 255. 
  12427.                    If a double quotation mark is required in the string, you 
  12428.                    must include the double quotation mark twice.  The tilde 
  12429.                    character ( ~ ) and the \t and \a character combinations 
  12430.                    have special meanings in the string; for details, see the 
  12431.                    "Comments" section. 
  12432.  
  12433.                    If the menuitem-style field is MIS_BITMAP, item-name must be 
  12434.                    a bit-map identifier instead of a name. The bit-map 
  12435.                    identifier must have been previously defined using a BITMAP 
  12436.                    statement, must be preceded by the \b character, and must be 
  12437.                    enclosed in double quotation marks. 
  12438.  
  12439.  menu-id           Specifies the menu-item identifier.  This value must be a 
  12440.                    signed integer in the range -32768 through 32767, an 
  12441.                    unsigned integer in the range of 1 through 65535, or a 
  12442.                    simple expression that evaluates to a value in these ranges. 
  12443.  
  12444.                    Duplicate menu-item identifiers are allowed, but menu items 
  12445.                    with non-unique identifiers cannot receive messages. 
  12446.  
  12447.                    Character strings cannot be used as resource identifiers for 
  12448.                    this statement. 
  12449.  
  12450.  menuitem-style    Specifies the menu-item style.  This value can be a 
  12451.                    combination of the following: 
  12452.  
  12453.                    MIS_BITMAP               Specifies that item-name is a bit 
  12454.                                             map identifier. 
  12455.                    MIS_BREAK                Specifies that the menu has 
  12456.                                             multiple columns of items in one 
  12457.                                             pull-down menu or multiple lines of 
  12458.                                             menus in the top-level menu. 
  12459.                    MIS_BREAKSEPARATOR       Specifies that the menu has a 
  12460.                                             vertical line between the columns 
  12461.                                             in a pull-down menu. 
  12462.                    MIS_BUTTONSEPARATOR      Specifies that the user can 
  12463.                                             activate the menu item only by 
  12464.                                             using the mouse.  The text is 
  12465.                                             centered in the item, rather than 
  12466.                                             left justified.  This option is 
  12467.                                             used for the Help item on the right 
  12468.                                             side of the menu bar. 
  12469.                    MIS_HELP                 Specifies that the menu item 
  12470.                                             generates a WM_HELP message. 
  12471.                    MIS_OWNERDRAW            Specifies that the menu item is 
  12472.                                             drawn by the owner window. 
  12473.                    MIS_SEPARATOR            Specifies that the menu item is a 
  12474.                                             menu separator. 
  12475.                    MIS_STATIC               Specifies that the user cannot 
  12476.                                             choose the menu item. 
  12477.                    MIS_SUBMENU              Specifies that the MENUITEM 
  12478.                                             statement is to be treated as a 
  12479.                                             SUBMENU statement.  When you 
  12480.                                             specify this option, you must 
  12481.                                             follow the MENUITEM statement with 
  12482.                                             a BEGIN and END clause, as in a 
  12483.                                             SUBMENU statement.  You may include 
  12484.                                             a PRESPARAMS statement immediately 
  12485.                                             after the BEGIN keyword. 
  12486.                    MIS_SYSCOMMAND           Specifies that the menu item 
  12487.                                             generates a WM_SYSCOMMAND message. 
  12488.                    MIS_TEXT                 Specifies that item-name is a 
  12489.                                             character string.  This is the 
  12490.                                             default option. 
  12491.  
  12492.  menuitem-attribute Specifies the menu-item attributes.  This value can be a 
  12493.                    combination of the following: 
  12494.  
  12495.                    MIA_CHECKED              Places a check mark next to the 
  12496.                                             menu-item name. 
  12497.                    MIA_DISABLED             Disables the menu item, preventing 
  12498.                                             the system from generating a 
  12499.                                             message when the user chooses the 
  12500.                                             command. 
  12501.                    MIA_FRAMED               Places a frame (heavy border) 
  12502.                                             around the menu item. 
  12503.                    MIA_HILITED              Places a highlight on the menu-item 
  12504.                                             name when it is displayed, by 
  12505.                                             inverting the name and background. 
  12506.                    MIA_NODISMISS            Causes a submenu or menu item to 
  12507.                                             remain displayed after the user 
  12508.                                             chooses an item. 
  12509.  
  12510.  Comments 
  12511.  
  12512.  You can use the \t or \a character combination in any item name. The \t 
  12513.  character inserts a tab when the name is displayed and is typically used to 
  12514.  separate the menu-item name from the name of an accelerator key.  The \a 
  12515.  character aligns to the right all text that follows it.  These characters are 
  12516.  intended to be used for menu items in submenus only.  The width of the 
  12517.  displayed submenu is always adjusted so that there is at least one space (and 
  12518.  usually more) between any pieces of text separated by a \t or a \a.  (When 
  12519.  compiling the menu resource, the compiler stores the \t and \a characters as 
  12520.  control characters.  For example, the \t is stored as 0x09.) 
  12521.  
  12522.  A tilde ( ~ ) character in the item name indicates that the following 
  12523.  character is used as a mnemonic character for the item. When the menu is 
  12524.  displayed, the tilde is not shown, but the mnemonic character is underlined. 
  12525.  The user can choose the menu item by pressing the key corresponding to the 
  12526.  underlined mnemonic character. 
  12527.  
  12528.  Example 
  12529.  
  12530.  This example creates a menu item named Alpha.  The item identifier is 101. 
  12531.  
  12532.   MENUITEM "Alpha", 101
  12533.  
  12534.  This example creates a menu item named Beta.  The item identifier is 102. The 
  12535.  menu item has a text style and a checked attribute. 
  12536.  
  12537.   MENUITEM "Beta", 102, MIS_TEXT, MIA_CHECKED
  12538.  
  12539.  This example creates a menu separator between menu items named Gamma and 
  12540.  Delta. 
  12541.  
  12542.   MENUITEM "Gamma", 103
  12543.   MENUITEM SEPARATOR
  12544.   MENUITEM "Delta", 104
  12545.  
  12546.  This example creates a menu item that has a bit map instead of a name. The 
  12547.  bit-map identifier, 1, is first defined using a BITMAP statement. The 
  12548.  identifier for the menu item is 301.  Note that a sign must be placed in front 
  12549.  of the bit map identifier in the MENUITEM statement. 
  12550.  
  12551.   BITMAP 1 mybitmap.bmp
  12552.  
  12553.   MENUITEM "#1", 301, MIS_BITMAP
  12554.  
  12555.  
  12556. ΓòÉΓòÉΓòÉ 21.3.2.41. MESSAGETABLE Statement ΓòÉΓòÉΓòÉ
  12557.  
  12558. Syntax: 
  12559.  
  12560.   MESSAGETABLE  [load-option] [mem-option] [codepage]
  12561.   BEGIN
  12562.   string-id string-definition
  12563.       .
  12564.       .
  12565.       .
  12566.   END
  12567.  
  12568. The MESSAGETABLE statement creates one or more string resources for an 
  12569. application.  A string resource is a null-terminated character string that has 
  12570. a unique string identifier.  A string resource can be loaded from the 
  12571. executable file when needed by using the DosGetResource function with the 
  12572. RT_MESSAGE resource type. RT_MESSAGE resources are bundled together in groups 
  12573. of 16, with any missing IDs replaced with zero length strings. Each group, or 
  12574. bundle, is assigned a unique sequential identifier. The resource string 
  12575. identifier is not necessarily the same as the identifier specified when using 
  12576. DosGetResource. The formula for calculating the identifier of the resource 
  12577. bundle, for use in DosGetResource, is as follows: 
  12578.  
  12579. bundle ID = (id / 16) + 1
  12580. where id is the string identifier assigned in the RC file. 
  12581.  
  12582. Thus, bundle 1 contains strings 0 to 15, bundle 2 contains strings 16 to 31, 
  12583. and so on. Once the address of the bundle has been returned by DosGetResource 
  12584. (using the calculated identifier), the buffer can be parsed to locate the 
  12585. particular string within the bundle. The number of the string is calculated by 
  12586. the formula: 
  12587.  
  12588. string = id % 16
  12589. (string = remainder for id/16). 
  12590.  
  12591. The buffer returned consists of the CodePage of the strings in the first 
  12592. USHORT, followed by the 16 strings in the bundle. The first BYTE of each string 
  12593. is the length of the string (including the null terminator), followed by the 
  12594. string and the terminator. A zero length string is represented by two bytes: 
  12595. 01 (string length) followed by the null terminator. 
  12596.  
  12597. You can provide any number of MESSAGETABLE statements in a resource script 
  12598. file.  The compiler treats all the strings from the various MESSAGETABLE 
  12599. statements as if they belonged to a single statement. This means that no two 
  12600. strings in a resource script file can have the same string identifier. 
  12601.  
  12602. Although the MESSAGETABLE and STRINGTABLE statements are nearly identical, most 
  12603. applications use the STRINGTABLE statement instead of the MESSAGETABLE 
  12604. statement to create string resources. 
  12605.  
  12606.  load-option    Specifies when the system loads the resource from the 
  12607.                 executable file into memory.  This value must be one of the 
  12608.                 following: 
  12609.                 PRELOAD             System loads the resource when the 
  12610.                                     application starts. 
  12611.                 LOADONCALL          System loads the resource when the 
  12612.                                     application calls the DosGetResource or 
  12613.                                     DosGetResource2 function.  This is the 
  12614.                                     default option. 
  12615.  mem-option     Specifies how the system manages the resource when it is in 
  12616.                 memory.  This value must be one or more of the following: 
  12617.                 FIXED               System keeps the resource at a fixed memory 
  12618.                                     location. 
  12619.                 MOVEABLE            System moves the resource as necessary to 
  12620.                                     compact memory. 
  12621.                 DISCARDABLE         System discards the resource if it is no 
  12622.                                     longer needed. The default setting is 
  12623.                 MOVEABLE and DISCARDABLE. 
  12624.  codepage       Specifies a code page value.  See CODEPAGE Statement for a list 
  12625.                 of valid code pages. 
  12626.  string-id      Specifies the character-string identifier.  This value must be 
  12627.                 a signed integer in the range -32768 through 32767, an unsigned 
  12628.                 integer in the range of 1 through 65535, or a simple expression 
  12629.                 that evaluates to a value in these ranges.  The value can be 
  12630.                 specified in decimal or hexadecimal notation.  Each string 
  12631.                 identifier in a resource script file must be unique. 
  12632.  string-definition Specifies a character string.  This field must contain zero 
  12633.                 or more characters enclosed in double quotation marks. 
  12634.                 Character values must be in the range 1 through 255.  If a 
  12635.                 double quotation mark is required in the string, you must 
  12636.                 provide the double quotation mark twice. 
  12637.  
  12638.  Comments 
  12639.  
  12640.  You can continue a string on multiple lines by terminating the line with a 
  12641.  backslash (\) or by terminating the line with a double quotation mark (") and 
  12642.  then starting the next line with a double quotation mark. 
  12643.  
  12644.  Example 
  12645.  
  12646.  This example creates two string resources whose string identifiers are 1 and 
  12647.  2. 
  12648.  
  12649.   MESSAGETABLE
  12650.   BEGIN
  12651.       1 "Filename not found"
  12652.       2 "Cannot open file for reading"
  12653.   END
  12654.  
  12655.  
  12656. ΓòÉΓòÉΓòÉ 21.3.2.42. MLE Statement ΓòÉΓòÉΓòÉ
  12657.  
  12658. Syntax: 
  12659.  
  12660.   MLE text, id, x, y, width, height[, style]
  12661.  
  12662. The MLE statement creates a multiple-line entry-field control.  The control is 
  12663. a rectangle in which the user can type and edit multiple lines of text.  The 
  12664. control displays a pointer when the user selects it.  The user can then use the 
  12665. keyboard to enter text or edit the existing text.  Editing keys include the 
  12666. BACKSPACE and DELETE keys. By using the mouse or the DIRECTION keys, the user 
  12667. can select the character or characters to delete or select the place to insert 
  12668. new characters.  The MLE statement, which you can use only in a DIALOG or 
  12669. WINDOW statement, defines the text, identifier, dimensions, and attributes of a 
  12670. control window.  The predefined class for this control is WC_MLE.  If you do 
  12671. not specify a style, the default style is MLS_BORDER, WS_GROUP, and WS_TABSTOP. 
  12672.  
  12673.  text    Specifies text that is displayed in the rectangular area of the 
  12674.          control.  If the MLS_READONLY style is not specified, the user can 
  12675.          edit the text.  This field must contain zero or more characters 
  12676.          enclosed in double quotation marks.  Character values must be in the 
  12677.          range 1 through 255.  If a double quotation mark is required in the 
  12678.          text, you must include the double quotation mark twice. 
  12679.  id      Specifies the control identifier.  This value must be a signed integer 
  12680.          in the range -32768 through 32767, an unsigned integer in the range of 
  12681.          1 through 65535, or a simple expression that evaluates to a value in 
  12682.          these ranges. 
  12683.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  12684.          This value must be a signed integer in the range -32768 through 32767 
  12685.          or an expression consisting of integers and the addition (+) or 
  12686.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12687.          units and is relative to the origin of the dialog box, window, or 
  12688.          control containing the specified control. 
  12689.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  12690.          This value must be a signed integer in the range -32768 through 32767 
  12691.          or an expression consisting of integers and the addition (+) or 
  12692.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12693.          units and is relative to the origin of the dialog box, window, or 
  12694.          control containing the specified control. 
  12695.  width   Specifies the width of the control.  This value must be an integer in 
  12696.          the range 0 through 65535 or an expression consisting of integers and 
  12697.          the addition (+) or subtraction (-) operator.  The width is in 
  12698.          n-character units. 
  12699.  height  Specifies the height of the control.  This value must be an integer in 
  12700.          the range 0 through 65535 or an expression consisting of integers and 
  12701.          the addition (+) or subtraction (-) operator.  The height is in 
  12702.          1/8-character units. 
  12703.  style   Specifies the control styles.  This value can be a combination of the 
  12704.          styles specified for WC_MLE. You can use the bitwise OR (|) operator 
  12705.          to combine styles. 
  12706.  
  12707.  Example 
  12708.  
  12709.  This example creates a multiple-line entry-field control that is not labeled. 
  12710.  
  12711.   MLE "", 101, 10, 10, 50, 100
  12712.  
  12713.  
  12714. ΓòÉΓòÉΓòÉ 21.3.2.43. NOTEBOOK Statement ΓòÉΓòÉΓòÉ
  12715.  
  12716. Syntax: 
  12717.  
  12718.   NOTEBOOK   id, x, y, width, height[, style]
  12719.  
  12720. The NOTEBOOK statement creates a notebook control within the dialog window. 
  12721. This control is used to organize information on individual pages so that it can 
  12722. be located and displayed easily. The NOTEBOOK statement defines the identifier, 
  12723. position, dimensions, and attributes of a notebook control. The predefined 
  12724. class for this control is WC_NOTEBOOK. If you do not specify a style, the 
  12725. default style is WS_TABSTOP and WS_VISIBLE. 
  12726.  
  12727.  id      Specifies the control identifier.  The value is a signed integer 
  12728.          -32768 through 32767, an unsigned integer in the range of 1 through 
  12729.          65535, or a simple expression that evaluates to a value in these 
  12730.          ranges. 
  12731.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  12732.          The value is a signed integer -32768 through 32767 or an expression 
  12733.          consisting of integers and the addition (+) or subtraction (-) 
  12734.          operator.  The coordinate is assumed to be in dialog units and is 
  12735.          relative to the origin of the dialog window. 
  12736.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  12737.          The value is a signed integer -32768 through 32767 or an expression 
  12738.          consisting of integers and the addition (+) or subtraction (-) 
  12739.          operator.  The coordinate is assumed to be in dialog units and is 
  12740.          relative to the origin of the dialog window. 
  12741.  width   Specifies the width of the control.  The value is any integer 0 
  12742.          through 65535 or an expression consisting of integers and the addition 
  12743.          (+) or subtraction (-) operator. The width is in n-character units. 
  12744.  height  Specifies the height of the control.  The value is any integer 0 
  12745.          through 65535 or an expression consisting of integers and the 
  12746.          addition (+) or subtraction (-) operator. The height is in 
  12747.          1/8-character units. 
  12748.  style   Specifies the control styles.  This value can be a combination of the 
  12749.          styles specified for WC_NOTEBOOK.  You can use the bitwise OR ( | ) 
  12750.          operator to combine styles. 
  12751.  
  12752.  Comments 
  12753.  
  12754.  The NOTEBOOK statement is used only in a DIALOG or WINDOW statement. 
  12755.  
  12756.  Example 
  12757.  
  12758.  This example creates a notebook control at position (20, 20) within the dialog 
  12759.  window.  The notebook has a width of 200 character units and a height of 50 
  12760.  character units.  Its resource identifier is 201. The tabs style 
  12761.  BKS_ROUNDEDTABS specification overrides the notebook default style of square 
  12762.  tabs. The default styles WS_TABSTOP and WS_GROUP are both in effect, though 
  12763.  only the latter is specified. 
  12764.  
  12765.   #define    IDC_NOTEBOOK     201
  12766.   #define    IDD_NOTEBOOKDLG  503
  12767.   DIALOG "Notebook", IDD_NOTEBOOKDLG, 11, 11, 420, 420, FS_NOBYTEALIGN |
  12768.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  12769.     BEGIN
  12770.       NOTEBOOK   IDC_NOTEBOOK, 20, 20, 200, 400, BKS_ROUNDEDTABS | WS_GROUP
  12771.     END
  12772.  
  12773.  
  12774. ΓòÉΓòÉΓòÉ 21.3.2.44. POINTER Statement ΓòÉΓòÉΓòÉ
  12775.  
  12776. Syntax: 
  12777.  
  12778.   POINTER pointer-id  [load-option]  [ mem-option] [codepage] filename
  12779.  
  12780. The POINTER statement defines a pointer resource for an application. A pointer 
  12781. resource, typically created by using the OS/2 Icon Editor, is a bit map 
  12782. defining the shape of the mouse pointer on the screen. The POINTER statement 
  12783. copies the pointer resource from the file specified in the filename field and 
  12784. adds it to the application's other resources.  A pointer resource can be loaded 
  12785. from the executable file when needed by using the WinLoadPointer function. 
  12786.  
  12787. You can provide any number of POINTER statements in a resource script file, but 
  12788. each statement must specify a unique pointer-id value. 
  12789.  
  12790.  pointer-id        Specifies the pointer-resource identifier.  This value must 
  12791.                    be an unsigned integer in the range of 1 through 65535, a 
  12792.                    simple expression that evaluates to a value in these ranges, 
  12793.                    or a character string. 
  12794.  load-option       Specifies when the system loads the resource from the 
  12795.                    executable file into memory.  This value must be one of the 
  12796.                    following: 
  12797.                    PRELOAD             System loads the resource when the 
  12798.                                        application starts. 
  12799.                    LOADONCALL          System loads the resource when the 
  12800.                                        application calls the WinLoadPointer 
  12801.                                        function.  This is the default option. 
  12802.  mem-option        Specifies how the system manages the resource when it is in 
  12803.                    memory.  This value must be one or more of the following: 
  12804.                    FIXED               System keeps the resource at a fixed 
  12805.                                        memory location. 
  12806.                    MOVEABLE            System moves the resource as necessary 
  12807.                                        to compact memory. 
  12808.                    DISCARDABLE         System discards the resource if it is no 
  12809.                                        longer needed. The default setting is 
  12810.                    MOVEABLE and DISCARDABLE. 
  12811.  codepage          Specifies a code page value.  See CODEPAGE Statement for a 
  12812.                    list of valid code pages. 
  12813.  filename          Specifies the name of the file containing the pointer 
  12814.                    resource. If the file is not in the current directory, 
  12815.                    filename must be preceded by a full path. 
  12816.  
  12817.  Example 
  12818.  
  12819.  This example defines a pointer whose pointer identifier is 10. The pointer 
  12820.  resource is copied from the file custom.cur. 
  12821.  
  12822.   POINTER 10 custom.cur
  12823.  
  12824.  
  12825. ΓòÉΓòÉΓòÉ 21.3.2.45. PRESPARAMS Statement ΓòÉΓòÉΓòÉ
  12826.  
  12827. Syntax: 
  12828.  
  12829.   PRESPARAMS presparam, value, presparam, value, ...
  12830.  
  12831. The PRESPARAMS statement defines presentation fields that customize a dialog 
  12832. box, menu, window, or control.  PRESPARAMS data is a series of types and 
  12833. values.  The window procedure of the dialog box, menu, window or control 
  12834. receives and processes this data when the item is created.  The data for custom 
  12835. controls can be in any format. 
  12836.  
  12837.  presparam   Specifies a presentation-field type. 
  12838.  value       Specifies the presentation-field value. 
  12839.  
  12840.  Comments 
  12841.  
  12842.  PRESPARAMS is often used to supply data to control the appearance of the 
  12843.  customized window when it is first created.  For example, the PRESPARAMS 
  12844.  statement may specify the colors to be used in the window. 
  12845.  
  12846.  Example 
  12847.  
  12848.  This example creates a menu resource with a menu identifier of 1. The 
  12849.  PRESPARAMS statement specifies that the following three menu items be 
  12850.  displayed in the 12-point Helvetica font. 
  12851.  
  12852.   MENU 1
  12853.   BEGIN
  12854.       PRESPARAMS PP_FONTNAMESIZE, "12.Helv"
  12855.       MENUITEM "New", 100
  12856.       MENUITEM "Open", 101
  12857.       MENUITEM "Save", 102
  12858.   END
  12859.  
  12860.  
  12861. ΓòÉΓòÉΓòÉ 21.3.2.46. PUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  12862.  
  12863. Syntax: 
  12864.  
  12865.   PUSHBUTTON text, id, x, y, width, height[, style]
  12866.  
  12867. The PUSHBUTTON statement creates a pushbutton control.  The control is a 
  12868. round-cornered rectangle containing the given text.  The control sends a 
  12869. message to its parent whenever the user chooses the control. The PUSHBUTTON 
  12870. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  12871. text, identifier, dimensions, and attributes of a control window.  The 
  12872. predefined class for this control is WC_BUTTON. If you do not specify a style, 
  12873. the default style is BS_PUSHBUTTON and WS_TABSTOP. 
  12874.  
  12875.  text    Specifies text that is centered in the rectangular area of the 
  12876.          control.  This field must contain zero or more characters enclosed in 
  12877.          double quotation marks.  Character values must be in the range 1 
  12878.          through 255.  If a double quotation mark is required in the text, you 
  12879.          must include the double quotation mark twice.  A tilde ( ~ ) character 
  12880.          in the text indicates that the following character is used as a 
  12881.          mnemonic character for the control.  When the control is displayed, 
  12882.          the tilde is not shown, but the mnemonic character is underlined. The 
  12883.          user can choose the control by pressing the key corresponding to the 
  12884.          underlined mnemonic character. 
  12885.  id      Specifies the control identifier.  This value must be a signed integer 
  12886.          in the range -32768 through 32767, an unsigned integer in the range of 
  12887.          1 through 65535, or a simple expression that evaluates to a value in 
  12888.          these ranges. 
  12889.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  12890.          This value must be a signed integer in the range -32768 through 32767 
  12891.          or an expression consisting of integers and the addition (+) or 
  12892.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12893.          units and is relative to the origin of the dialog box, window, or 
  12894.          control containing the specified control. 
  12895.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  12896.          This value must be a signed integer in the range -32768 through 32767 
  12897.          or an expression consisting of integers and the addition (+) or 
  12898.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12899.          units and is relative to the origin of the dialog box, window, or 
  12900.          control containing the specified control. 
  12901.  width   Specifies the width of the control.  This value must be an integer in 
  12902.          the range 0 through 65535 or an expression consisting of integers and 
  12903.          the addition (+) or subtraction (-) operator.  The width is in 
  12904.          n-character units. 
  12905.  height  Specifies the height of the control.  This value must be an integer in 
  12906.          the range 0 through 65535 or an expression consisting of integers and 
  12907.          the addition (+) or subtraction (-) operator.  The height is in 
  12908.          1/8-character units. 
  12909.  style   Specifies the control styles.  This value can be a combination of the 
  12910.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  12911.          operator to combine styles. 
  12912.  
  12913.  Example 
  12914.  
  12915.  This example creates a pushbutton control that is labeled "OK." 
  12916.  
  12917.   PUSHBUTTON "OK", 101, 10, 10, 100, 100
  12918.  
  12919.  
  12920. ΓòÉΓòÉΓòÉ 21.3.2.47. RADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  12921.  
  12922. Syntax: 
  12923.  
  12924.   RADIOBUTTON text, id, x, y, width, height[, style]
  12925.  
  12926. The RADIOBUTTON statement creates a radio-button control.  The control is a 
  12927. small circle that has the given text displayed to its right.  The control 
  12928. highlights the circle and sends a message to its parent window when the user 
  12929. selects the button.  The control removes the highlight and sends a message when 
  12930. the button is next selected.  The RADIOBUTTON statement, which you can use only 
  12931. in a DIALOG or WINDOW statement, defines the text, identifier, dimensions, and 
  12932. attributes of a control window.  The predefined class for this control is 
  12933. WC_BUTTON.  If you do not specify a style, the default style is BS_RADIOBUTTON. 
  12934.  
  12935.  text    Specifies text that is displayed to the right of the control.  This 
  12936.          field must contain zero or more characters enclosed in double 
  12937.          quotation marks.  Character values must be in the range 1 through 255. 
  12938.          If a double quotation mark is required in the text, you must include 
  12939.          the double quotation mark twice.  A tilde ( ~ ) character in the text 
  12940.          indicates that the following character is used as a mnemonic character 
  12941.          for the control.  When the control is displayed, the tilde is not 
  12942.          shown, but the mnemonic character is underlined.  The user can choose 
  12943.          the control by pressing the key corresponding to the underlined 
  12944.          mnemonic character. 
  12945.  id      Specifies the control identifier.  This value must be a signed integer 
  12946.          in the range -32768 through 32767, an unsigned integer in the range of 
  12947.          1 through 65535, or a simple expression that evaluates to a value in 
  12948.          these ranges. 
  12949.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  12950.          This value must be a signed integer in the range -32768 through 32767 
  12951.          or an expression consisting of integers and the addition (+) or 
  12952.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12953.          units and is relative to the origin of the dialog box, window, or 
  12954.          control containing the specified control. 
  12955.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  12956.          This value must be a signed integer in the range -32768 through 32767 
  12957.          or an expression consisting of integers and the addition (+) or 
  12958.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  12959.          units and is relative to the origin of the dialog box, window, or 
  12960.          control containing the specified control. 
  12961.  width   Specifies the width of the control.  This value must be an integer in 
  12962.          the range 0 through 65535 or an expression consisting of integers and 
  12963.          the addition (+) or subtraction (-) operator.  The width is in 
  12964.          n-character units. 
  12965.  height  Specifies the height of the control.  This value must be an integer in 
  12966.          the range 0 through 65535 or an expression consisting of integers and 
  12967.          the addition (+) or subtraction (-) operator.  The height is in 
  12968.          1/8-character units. 
  12969.  style   Specifies the control styles.  This value can be a combination of the 
  12970.          styles specified for WC_BUTTON. You can use the bitwise OR (|) 
  12971.          operator to combine styles. 
  12972.  
  12973.  Example 
  12974.  
  12975.  This example creates a radio-button control that is labeled "Italic." 
  12976.  
  12977.   RADIOBUTTON "Italic", 101, 10, 10, 24, 50
  12978.  
  12979.  
  12980. ΓòÉΓòÉΓòÉ 21.3.2.48. RCDATA Statement ΓòÉΓòÉΓòÉ
  12981.  
  12982. Syntax: 
  12983.  
  12984.   RCDATA resource-id
  12985.   BEGIN
  12986.   data-definition, data-definition   ...
  12987.       .
  12988.       .
  12989.       .
  12990.   END
  12991.  
  12992. The RCDATA statement defines a custom-data resource for an application.  The 
  12993. custom data can be in whatever format the application requires.  You can 
  12994. provide any number of RCDATA statements in a resource script file, but each 
  12995. statement must specify a unique resource-id value.  A custom-data resource can 
  12996. be loaded from the executable file when needed by using the DosGetResource or 
  12997. DosGetResource2 functions with the RT_RCDATA resource type. 
  12998.  
  12999.  resource-id       Specifies the custom-data identifier.  This value must be an 
  13000.                    unsigned integer in the range of 1 through 65535, a simple 
  13001.                    expression that evaluates to a value in these ranges, or a 
  13002.                    character string. 
  13003.  data-definition   Specifies the custom data.  The data may be simple 
  13004.                    expressions or strings. 
  13005.  
  13006.  Example 
  13007.  
  13008.  This example defines custom data that has a resource identifier of 5. 
  13009.  
  13010.   RCDATA 5
  13011.   BEGIN
  13012.       "E. A. Poe", 1849, -32, 3L, 0x8000000l, 3+4+5
  13013.   END
  13014.  
  13015.  
  13016. ΓòÉΓòÉΓòÉ 21.3.2.49. RCINCLUDE Statement ΓòÉΓòÉΓòÉ
  13017.  
  13018. Syntax: 
  13019.  
  13020.   RCINCLUDE filename
  13021.  
  13022. The RCINCLUDE statement causes RC to process the resource script file specified 
  13023. in the filename field along with the current resource script file.  The 
  13024. contents of both files are compiled by RC and the results are placed in one 
  13025. binary resource file and/or executable file. 
  13026.  
  13027.  filename    Specifies the name of the resource script file to be included. If 
  13028.              the file is not in the current directory, filename must be 
  13029.              preceded by a full path. 
  13030.  
  13031.  Comments 
  13032.  
  13033.  RCINCLUDE statements are processed before any other processing is done. 
  13034.  
  13035.  When specifying a high performance file system (HPFS) file name on an 
  13036.  RCINCLUDE statement, enclose the path and file name in double quotes; for 
  13037.  example: 
  13038.  
  13039.      RCINCLUDE "d:\project\long dialog.dlg"
  13040.  
  13041.  Double quotes enables the Resource Compiler to recognize a name containing 
  13042.  embedded blank characters. 
  13043.  
  13044.  Example 
  13045.  
  13046.  This example includes the file DIALOGS.RC as part of the current resource 
  13047.  script file. 
  13048.  
  13049.   RCINCLUDE dialogs.rc
  13050.  
  13051.  
  13052. ΓòÉΓòÉΓòÉ 21.3.2.50. RESOURCE Statement ΓòÉΓòÉΓòÉ
  13053.  
  13054. Syntax: 
  13055.  
  13056.   RESOURCE type-id resource-id [load-option] [mem-option]
  13057.            [code-page] filename
  13058.  
  13059.   or
  13060.  
  13061.   RESOURCE type-id resource-id [load-option] [mem-option]
  13062.            [code-page]
  13063.   BEGIN
  13064.   data-definition [, data-definition]...
  13065.   ...
  13066.   END
  13067.  
  13068. The RESOURCE statement defines a custom resource for an application. A custom 
  13069. resource can be any data in any format. The RESOURCE statement copies the 
  13070. custom resource from the specified file or inline data, and adds it to the 
  13071. application's other resources. A custom resource can be loaded from the 
  13072. executable file when needed by using the DosGetResource or DosGetResource2 
  13073. function and specifying the resource's type and resource identifier. 
  13074.  
  13075. The custom resource data can be defined in a separate file or as inline data in 
  13076. the input script. This is reflected in the two formats that can be used for 
  13077. this statement. The first format is used when the custom resource data is being 
  13078. read from a file. The second format is used when the data consists of a block 
  13079. of raw source data that is defined inline in the input script. 
  13080.  
  13081. You can provide any number of RESOURCE statements in a resource script file, 
  13082. but each statement must specify a unique combination of type-id and resource-id 
  13083. values. That is, RESOURCE statements having the same type-id value are 
  13084. permitted as long as the resource-id value for each is unique. 
  13085.  
  13086.  type-id           Specifies the custom-resource type.  This value must be an 
  13087.                    integer in the range 256 through 65535, or a simple 
  13088.                    expression that evaluates to a value in that range.  (Values 
  13089.                    0 through 255 are reserved.) 
  13090.  resource-id       Specifies the custom-resource identifier.  This value must 
  13091.                    be a signed integer in the range -32768 through 32767, an 
  13092.                    unsigned integer in the range of 1 through 65535, a simple 
  13093.                    expression that evaluates to a value in these ranges, or a 
  13094.                    character string. 
  13095.  load-option       Specifies when the system loads the resource from the 
  13096.                    executable file into memory.  This value must be one of the 
  13097.                    following: 
  13098.                    PRELOAD             System loads the resource when the 
  13099.                                        application starts. 
  13100.                    LOADONCALL          System loads the resource when the 
  13101.                                        application calls the DosGetResource or 
  13102.                                        DosGetResource2 function.  This is the 
  13103.                                        default option. 
  13104.  mem-option        Specifies how the system manages the resource when it is in 
  13105.                    memory.  This value must be one or more of the following: 
  13106.                    FIXED               System keeps the resource at a fixed 
  13107.                                        memory location. 
  13108.                    MOVEABLE            System moves the resource as necessary 
  13109.                                        to compact memory. 
  13110.                    DISCARDABLE         System discards the resource if it is no 
  13111.                                        longer needed. The default setting is 
  13112.                    MOVEABLE and DISCARDABLE. 
  13113.  codepage          Specifies a code page value. See CODEPAGE Statement. for a 
  13114.                    list of valid code pages. 
  13115.  filename          Specifies the name of the file containing the custom 
  13116.                    resource. If the file is not in the current directory, 
  13117.                    filename must be preceded by a full path. 
  13118.  data-definition   Specifies a custom data definition.  The data can be a 
  13119.                    simple expression or a string.  Integers can be specified in 
  13120.                    decimal, octal, or hexadecimal format.  Data definitions in 
  13121.                    series on the same line are separated by commas.  An integer 
  13122.                    specified without the suffix L must be in the range -32768 
  13123.                    through 65535. An integer with an L suffix must be within 
  13124.                    the range -2147483648 through 4294967295.  String data is 
  13125.                    specified within quotes. 
  13126.  
  13127.                    Note:  The Resource Compiler does not append a null 
  13128.                           character to the end of these strings as it does for 
  13129.                           RCDATA blocks;  any required null characters must be 
  13130.                           written as \0 within the data string. 
  13131.  
  13132.  Example 
  13133.  
  13134.  This example defines a custom resource whose type identifier is 300 and whose 
  13135.  resource identifier is 14.  The custom resource is copied from the file 
  13136.  CUSTOM.RES. 
  13137.  
  13138.   RESOURCE 300 14 custom.res
  13139.  
  13140.  
  13141. ΓòÉΓòÉΓòÉ 21.3.2.51. RTEXT Statement ΓòÉΓòÉΓòÉ
  13142.  
  13143. Syntax: 
  13144.  
  13145.   RTEXT text, id, x, y, width, height[, style]
  13146.  
  13147. The RTEXT statement creates a right-aligned text control.  The control is a 
  13148. simple rectangle displaying the given text right-aligned in the rectangle.  The 
  13149. text is formatted before it is displayed.  Words that would extend past the end 
  13150. of a line are automatically wrapped to the beginning of the next line.  The 
  13151. RTEXT statement, which you can use only in a DIALOG or WINDOW statement, 
  13152. defines the text, identifier, dimensions, and attributes of the control.  The 
  13153. predefined class for the control is WC_STATIC.  If you do not specify a style, 
  13154. the default style is SS_TEXT, DT_RIGHT, and WS_GROUP. 
  13155.  
  13156.  text    Specifies text that is right-aligned in the rectangular area of the 
  13157.          control.  This field must contain zero or more characters enclosed in 
  13158.          double quotation marks.  Character values must be in the range 1 
  13159.          through 255.  If a double quotation mark is required in the text, you 
  13160.          must include the double quotation mark twice. 
  13161.  id      Specifies the control identifier.  This value must be a signed integer 
  13162.          in the range -32768 through 32767, an unsigned integer in the range of 
  13163.          1 through 65535, or a simple expression that evaluates to a value in 
  13164.          these ranges. 
  13165.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  13166.          This value must be a signed integer in the range -32768 through 32767 
  13167.          or an expression consisting of integers and the addition (+) or 
  13168.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  13169.          units and is relative to the origin of the dialog box, window, or 
  13170.          control containing the specified control. 
  13171.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  13172.          This value must be a signed integer in the range -32768 through 32767 
  13173.          or an expression consisting of integers and the addition (+) or 
  13174.          subtraction (-) operator.  The coordinate is assumed to be in dialog 
  13175.          units and is relative to the origin of the dialog box, window, or 
  13176.          control containing the specified control. 
  13177.  width   Specifies the width of the control.  This value must be an integer in 
  13178.          the range 0 through 65535 or an expression consisting of integers and 
  13179.          the addition (+) or subtraction (-) operator.  The width is in 
  13180.          n-character units. 
  13181.  height  Specifies the height of the control.  This value must be an integer in 
  13182.          the range 0 through 65535 or an expression consisting of integers and 
  13183.          the addition (+) or subtraction (-) operator.  The height is in 
  13184.          1/8-character units. 
  13185.  style   Specifies the control styles.  This value can be a combination of the 
  13186.          styles specified for WC_STATIC. You can use the bitwise OR (|) 
  13187.          operator to combine styles. 
  13188.  
  13189.  Example 
  13190.  
  13191.  This example creates a right-aligned text control that is labeled "Filename." 
  13192.  
  13193.   RTEXT "Filename", 101, 10, 10, 100, 100
  13194.  
  13195.  
  13196. ΓòÉΓòÉΓòÉ 21.3.2.52. SLIDER Statement ΓòÉΓòÉΓòÉ
  13197.  
  13198. Syntax: 
  13199.  
  13200.   SLIDER   id, x, y, width, height[, style]
  13201.  
  13202. The SLIDER statement creates a slider control within the dialog window.  This 
  13203. control lets the user set, display, or modify a value by moving a slider arm 
  13204. along a slider shaft.  The SLIDER statement defines the identifier, position, 
  13205. dimensions, and attributes of a slider control.  The predefined class for this 
  13206. control is WC_SLIDER.  If you do not specify a style, the default style is 
  13207. WS_TABSTOP and WS_VISIBLE. 
  13208.  
  13209.  id      Specifies the control identifier.  The value is a signed integer 
  13210.          -32768 through 32767, an unsigned integer in the range of 1 through 
  13211.          65535, or a simple expression that evaluates to a value in these 
  13212.          ranges. 
  13213.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  13214.          The value is a signed integer -32768 through 32767 or an expression 
  13215.          consisting of integers and the addition (+) or subtraction (-) 
  13216.          operator.  The coordinate is assumed to be in dialog units and is 
  13217.          relative to the origin of the dialog window. 
  13218.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  13219.          The value is a signed integer -32768 through 32767 or an expression 
  13220.          consisting of integers and the addition (+) or subtraction (-) 
  13221.          operator.  The coordinate is assumed to be in dialog units and is 
  13222.          relative to the origin of the dialog window. 
  13223.  width   Specifies the width of the control.  The value is any integer 0 
  13224.          through 65535 or an expression consisting of integers and the addition 
  13225.          (+) or subtraction (-) operator. The width is in n-character units. 
  13226.  height  Specifies the height of the control.  The value is any integer 0 
  13227.          through 65535 or an expression consisting of integers and the addition 
  13228.          (+) or subtraction (-) operator. The height is in 1/8-character units. 
  13229.  style   Specifies the control styles.  The value can be any combination of the 
  13230.          styles specified for WC_SLIDER.  You can use the bitwise OR ( | ) 
  13231.          operator to combine styles. 
  13232.  
  13233.  Comments 
  13234.  
  13235.  The SLIDER statement is only used in a DIALOG or WINDOW statement. 
  13236.  
  13237.  Example 
  13238.  
  13239.  This example creates a slider control at position (40, 30) within the dialog 
  13240.  window.  The slider has a width of 120 character units and a height of 2 
  13241.  character units.  Its resource identifier is 101. The style specification 
  13242.  SLS_BUTTONSLEFT adds buttons to the left of the slider shaft.  The default 
  13243.  styles WS_TABSTOP and WS_VISIBLE are both in effect, though only the latter is 
  13244.  specified. 
  13245.  
  13246.   #define    IDC_SLIDER       101
  13247.   #define    IDD_SLIDERDLG    502
  13248.   DIALOG "Slider", IDD_SLIDERDLG, 11, 11, 200, 240, FS_NOBYTEALIGN |
  13249.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  13250.     BEGIN
  13251.       SLIDER   IDC_SLIDER, 40, 30, 120, 16, SLS_BUTTONSLEFT | WS_VISIBLE
  13252.     END
  13253.  
  13254.  
  13255. ΓòÉΓòÉΓòÉ 21.3.2.53. SPINBUTTON Statement ΓòÉΓòÉΓòÉ
  13256.  
  13257. Syntax: 
  13258.  
  13259.   SPINBUTTON   id, x, y, width, height[, style]
  13260.  
  13261. The SPINBUTTON statement creates a spin button control within the dialog 
  13262. window.  This control gives the user quick access to a finite set of data.  The 
  13263. SPINBUTTON statement defines the identifier, position, dimensions, and 
  13264. attributes of a spin button control.  The predefined class for this control is 
  13265. WC_SPINBUTTON. If you do not specify a style, the default style is WS_TABSTOP, 
  13266. WS_VISIBLE, and SPBS_MASTER. 
  13267.  
  13268.  id      Specifies the control identifier.  The value is a signed integer 
  13269.          -32768 through 32767, an unsigned integer in the range of 1 through 
  13270.          65535, or a simple expression that evaluates to a value in these 
  13271.          ranges. 
  13272.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  13273.          The value is a signed integer -32768 through 32767 or an expression 
  13274.          consisting of integers and the addition (+) or subtraction (-) 
  13275.          operator.  The coordinate is assumed to be in dialog units and is 
  13276.          relative to the origin of the dialog window. 
  13277.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  13278.          The value is a signed integer -32768 through 32767 or an expression 
  13279.          consisting of integers and the addition (+) or subtraction (-) 
  13280.          operator.  The coordinate is assumed to be in dialog units and is 
  13281.          relative to the origin of the dialog window. 
  13282.  width   Specifies the width of the control.  The value is any integer 0 
  13283.          through 65535 or an expression consisting of integers and the addition 
  13284.          (+) or subtraction (-) operator. The width is in n-character units. 
  13285.  height  Specifies the height of the control.  The value is any integer 0 
  13286.          through 65535 or an expression consisting of integers and the addition 
  13287.          (+) or subtraction (-) operator. The height is in 1/8-character units. 
  13288.  style   Specifies the control styles.  The value is any combination of the 
  13289.          styles specified for WC_SPINBUTTON.  You can use the bitwise OR ( | ) 
  13290.          operator to combine styles. 
  13291.  
  13292.  Comments 
  13293.  
  13294.  The SPINBUTTON statement is used only in a DIALOG or WINDOW statement. 
  13295.  
  13296.  Example 
  13297.  
  13298.  This example creates a spin-button control at position (80, 20) within the 
  13299.  dialog window.  The spin button has a width of 60 character units and a height 
  13300.  of 3 character units.  Its resource identifier is 302. The style specification 
  13301.  SPBS_NUMERICONLY creates a control which accepts only the digits 0-9 and 
  13302.  virtual keys.  The default styles SPBS_MASTER, WS_TABSTOP, and WS_VISIBLE are 
  13303.  all in effect, though only WS_TABSTOP is specified. 
  13304.  
  13305.   #define    IDC_SPINBUTTON   302
  13306.   #define    IDD_SPINDLG    502
  13307.   DIALOG "Spin button", IDD_SPINDLG, 11, 11, 200, 240, FS_NOBYTEALIGN |
  13308.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  13309.     BEGIN
  13310.       SPINBUTTON  IDC_SPINBUTTON, 80, 20, 60, 24, SPBS_NUMERICONLY | WS_TABSTOP
  13311.     END
  13312.  
  13313.  
  13314. ΓòÉΓòÉΓòÉ 21.3.2.54. STRINGTABLE Statement ΓòÉΓòÉΓòÉ
  13315.  
  13316. Syntax: 
  13317.  
  13318.   STRINGTABLE  [load-option] [mem-option] [codepage]
  13319.   BEGIN
  13320.   string-id string-definition
  13321.       .
  13322.       .
  13323.       .
  13324.   END
  13325.  
  13326. The STRINGTABLE statement creates one or more string resources for an 
  13327. application.  A string resource is a null-terminated character string that has 
  13328. a unique string identifier.  A string resource can be loaded from the 
  13329. executable file when needed by using the WinLoadString or with DosGetResource 
  13330. with the RT_STRING resource type. RT_STRING resources are bundled together in 
  13331. groups of 16, with any missing IDs replaced with zero length strings. Each 
  13332. group, or bundle, is assigned a unique sequential identifier. The resource 
  13333. string identifier is not necessarily the same as the identifier specified when 
  13334. using DosGetResource. The formula for calculating the identifier of the 
  13335. resource bundle, for use in DosGetResource, is as follows: 
  13336.  
  13337. bundle ID = (id / 16) +1
  13338. where id is the string ID assigned in the RC file. 
  13339.  
  13340. Thus, bundle 1 contains strings 0 to 15, bundle 2 contains strings 16 to 31, 
  13341. and so on. Once the address of the bundle has been returned by DosGetResource 
  13342. (using the calculated identifier), the buffer can be parsed to locate the 
  13343. particular string within the bundle. The number of the string is calculated by 
  13344. the formula: 
  13345.  
  13346. string = id % 16
  13347. (string = remainder for id/16). 
  13348.  
  13349. The buffer returned consists of the CodePage of the strings in the first 
  13350. USHORT, followed by the 16 strings in the bundle. The first BYTE of each string 
  13351. is the length of the string (including the null terminator), followed by the 
  13352. string and the terminator. A zero length string is represented by two bytes: 
  13353. 01 (string length) followed by the null terminator. 
  13354.  
  13355. You can provide any number of STRINGTABLE statements in a resource script file. 
  13356. The compiler treats all the strings from the various STRINGTABLE statements as 
  13357. if they belonged to a single statement.  This means that no two strings in a 
  13358. resource script file can have the same string identifier. 
  13359.  
  13360.  load-option    Specifies when the system loads the resource from the 
  13361.                 executable file into memory.  This value must be one of the 
  13362.                 following: 
  13363.  
  13364.                 PRELOAD             System loads the resource when the 
  13365.                                     application starts. 
  13366.                 LOADONCALL          System loads the resource when the 
  13367.                                     application calls the WinLoadString 
  13368.                                     function. This is the default option. 
  13369.  
  13370.  mem-option     Specifies how the system manages the resource when it is in 
  13371.                 memory.  This value must be one or more of the following: 
  13372.  
  13373.                 FIXED               System keeps the resource at a fixed memory 
  13374.                                     location. 
  13375.                 MOVEABLE            System moves the resource as necessary to 
  13376.                                     compact memory. 
  13377.                 DISCARDABLE         System discards the resource if it is no 
  13378.                                     longer needed. 
  13379.  
  13380.                 The default setting is MOVEABLE and DISCARDABLE. 
  13381.  
  13382.  code-page      Specifies a code page value.  See CODEPAGE Statement for a list 
  13383.                 of valid code page values. 
  13384.  
  13385.  string-id      Specifies the character-string identifier.  This value must be 
  13386.                 a signed integer in the range -32768 through 32767, an unsigned 
  13387.                 integer in the range of 1 through 65535, or a simple expression 
  13388.                 that evaluates to a value in these ranges.  The value can be 
  13389.                 specified in decimal or hexadecimal notation.  Each string 
  13390.                 identifier in a resource script file must be unique. 
  13391.  
  13392.  string-definition Specifies a character string.  This field must contain zero 
  13393.                 or more characters enclosed in double quotation marks. 
  13394.                 Character values must be in the range 1 through 255.  If a 
  13395.                 double quotation mark is required in the string, you must 
  13396.                 include the double quotation mark twice. 
  13397.  
  13398.  Comments 
  13399.  
  13400.  You can continue a string on multiple lines by terminating the line with a 
  13401.  backslash (\) or by terminating the line with a double quotation mark (") and 
  13402.  then starting the next line with a double quotation mark. 
  13403.  
  13404.  Example 
  13405.  
  13406.  This example creates two string resources whose string identifiers are 1 and 
  13407.  2. 
  13408.  
  13409.   #define IDS_HELLO    1
  13410.   #define IDS_GOODBYE  2
  13411.  
  13412.   STRINGTABLE
  13413.   BEGIN
  13414.       IDS_HELLO   "Hello"
  13415.       IDS_GOODBYE "Goodbye"
  13416.   END
  13417.  
  13418.  
  13419. ΓòÉΓòÉΓòÉ 21.3.2.55. SUBITEMSIZE Statement ΓòÉΓòÉΓòÉ
  13420.  
  13421. Syntax: 
  13422.  
  13423.   SUBITEMSIZE  size
  13424.  
  13425. The SUBITEMSIZE statement specifies the size, in words, of each help subitem in 
  13426. a help subtable.  The minimum size is two words, and each help subitem in a 
  13427. help subtable must be the same size.  When used, the SUBITEMSIZE statement must 
  13428. appear after the HELPSUBTABLE statement and before the BEGIN keyword. 
  13429.  
  13430. You do not need to use the SUBITEMSIZE statement if the help subitems are the 
  13431. default size (2). 
  13432.  
  13433.  size    Specifies the size of each help subitem.  This value must be an 
  13434.          integer. 
  13435.  
  13436.  Example 
  13437.  
  13438.  The SUBITEMSIZE statement in this example specifies that each HELPSUBITEM 
  13439.  statement contains three words. 
  13440.  
  13441.   HELPSUBTABLE 1
  13442.   SUBITEMSIZE 3
  13443.   BEGIN
  13444.       HELPSUBITEM IDCLD_FILEMENU, IDHP_FILEMENU, 5
  13445.       HELPSUBITEM IDCLD_HELPMENU, IDHP_HELPMENU, 6
  13446.   END
  13447.  
  13448.  
  13449. ΓòÉΓòÉΓòÉ 21.3.2.56. SUBMENU Statement ΓòÉΓòÉΓòÉ
  13450.  
  13451. Syntax: 
  13452.  
  13453.   SUBMENU text, submenu-id [, menuitem-style]
  13454.   BEGIN
  13455.   menuitem-definition
  13456.       .
  13457.       .
  13458.       .
  13459.   END
  13460.  
  13461. The SUBMENU statement creates a submenu for a given menu.  A submenu is a 
  13462. vertical list of menu items from which the user can choose a command. 
  13463.  
  13464. You can provide any number of SUBMENU statements in a MENU statement, but each 
  13465. SUBMENU statement must specify a unique submenu-id value. You can provide any 
  13466. number of menuitem-definition statements in the SUBMENU statement.  These 
  13467. define the menu items (commands) in the menu.  The order of the statements 
  13468. determines the order of the menu items. 
  13469.  
  13470.  text                  Specifies the text of the submenu.  This field must 
  13471.                        contain zero or more characters enclosed in double 
  13472.                        quotation marks.  Character values must be in the range 
  13473.                        1 through 255.  If a double quotation mark is required 
  13474.                        in the string, you must include the double quotation 
  13475.                        mark twice.  A tilde ( ~ ) character in the item name 
  13476.                        indicates that the following character is used as a 
  13477.                        mnemonic character for the item.  When the menu is 
  13478.                        displayed, the tilde is not shown, but the mnemonic 
  13479.                        character is underlined.  The user can choose the menu 
  13480.                        item by pressing the key corresponding to the underlined 
  13481.                        mnemonic character. 
  13482.  submenu-id            Specifies the submenu identifier. This value must be a 
  13483.                        signed integer in the range -32768 through 32767, an 
  13484.                        unsigned integer in the range of 1 through 65535, or a 
  13485.                        simple expression that evaluates to a value in these 
  13486.                        ranges. 
  13487.  menuitem-style        Specifies the submenu style. This value can be a 
  13488.                        combination of MIS_ values. For details on the MIS_ 
  13489.                        values, see MENUITEM Statement. 
  13490.  menuitem-definition   Specifies a PRESPARAMS or MENUITEM statement.  You can 
  13491.                        use the PRESPARAMS statement to control the appearance 
  13492.                        of a submenu, such as the font and the foreground and 
  13493.                        background colors.  If used, the PRESPARAMS statement 
  13494.                        must immediately follow the BEGIN keyword.  For details 
  13495.                        about the PRESPARAMS statement, see PRESPARAMS 
  13496.                        Statement. 
  13497.  
  13498.                        The MENUITEM statement defines an individual command in 
  13499.                        the given menu.  For details, see MENUITEM Statement. 
  13500.  
  13501.  Example 
  13502.  
  13503.  This example creates a submenu named Elements.  Its identifier is 2. The 
  13504.  submenu contains three menu items, which are created by using MENUITEM 
  13505.  statements. 
  13506.  
  13507.   SUBMENU "Elements", 2
  13508.   BEGIN
  13509.       MENUITEM "Oxygen", 200
  13510.       MENUITEM "Carbon", 201, , MIA_CHECKED
  13511.       MENUITEM "Hydrogen", 202
  13512.   END
  13513.  
  13514.  
  13515. ΓòÉΓòÉΓòÉ 21.3.2.57. undef Directive ΓòÉΓòÉΓòÉ
  13516.  
  13517. Syntax: 
  13518.  
  13519.   undef name
  13520.  
  13521. This directive removes the current definition of the specified name.  All 
  13522. subsequent occurrences of the name are processed without replacement. 
  13523.  
  13524.  name    Specifies the name to be removed.  This value is any combination of 
  13525.          letters, digits, and punctuation. 
  13526.  
  13527.  Example 
  13528.  
  13529.  This example removes the definitions for the names "nonzero" and "USERCLASS". 
  13530.  
  13531.   #undef     nonzero
  13532.   #undef     USERCLASS
  13533.  
  13534.  
  13535. ΓòÉΓòÉΓòÉ 21.3.2.58. VALUESET Statement ΓòÉΓòÉΓòÉ
  13536.  
  13537. Syntax: 
  13538.  
  13539.   VALUESET   id, x, y, width, height[, style]
  13540.  
  13541. The VALUESET statement creates a value set control within the dialog window. 
  13542. This control lets a user select one choice from a group of mutually exclusive 
  13543. choices.  The VALUESET statement defines the identifier, position, dimensions, 
  13544. and attributes of a value set control.  The predefined class for this control 
  13545. is WC_VALUESET.  If you do not specify a style, the default style is WS_TABSTOP 
  13546. and WS_VISIBLE. 
  13547.  
  13548.  id      Specifies the control identifier.  The value is a signed integer 
  13549.          -32768 through 32767, an unsigned integer in the range of 1 through 
  13550.          65535, or a simple expression that evaluates to a value in these 
  13551.          ranges. 
  13552.  x       Specifies the x-coordinate of the lower-left corner of the control. 
  13553.          The value is a signed integer -32768 through 32767 or an expression 
  13554.          consisting of integers and the addition (+) or subtraction (-) 
  13555.          operator.  The coordinate is assumed to be in dialog units and is 
  13556.          relative to the origin of the dialog window. 
  13557.  y       Specifies the y-coordinate of the lower-left corner of the control. 
  13558.          The value is a signed integer -32768 through 32767 or an expression 
  13559.          consisting of integers and the addition (+) or subtraction (-) 
  13560.          operator.  The coordinate is assumed to be in dialog units and is 
  13561.          relative to the origin of the dialog window. 
  13562.  width   Specifies the width of the control.  The value is any integer 0 
  13563.          through 65535 or an expression consisting of integers and the addition 
  13564.          (+) or subtraction (-) operator. The width is in n-character units. 
  13565.  height  Specifies the height of the control.  The value is any integer 0 
  13566.          through 65535 or an expression consisting of integers and the addition 
  13567.          (+) or subtraction (-) operator. The height is in 1/8-character units. 
  13568.  style   Specifies the control styles. The value is any combination of the 
  13569.          styles specified for WC_VALUESET. You can use the bitwise OR ( | ) 
  13570.          operator to combine styles. 
  13571.  
  13572.  Comments 
  13573.  
  13574.  The VALUESET statement is used only in a DIALOG or WINDOW statement. 
  13575.  
  13576.  Example 
  13577.  
  13578.  This example creates a value set control at position (40, 40) within the 
  13579.  dialog window.  The value set control has a width of 220 character and a 
  13580.  height of 20 character units.  Its resource identifier is 302.  The style 
  13581.  specification VS_ICON creates a control to show items in icon form.  The 
  13582.  default styles WS_TABSTOP and WS_VISIBLE are both in effect, though only 
  13583.  WS_TABSTOP is specified. 
  13584.  
  13585.   #define    IDC_VALUESET     302
  13586.   #define    IDD_VALUESETDLG  501
  13587.   DIALOG "Value set", IDD_VALUESETDLG, 11, 11, 260, 240, FS_NOBYTEALIGN |
  13588.           WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  13589.     BEGIN
  13590.       VALUESET  IDC_VALUESET, 40, 40, 220, 160, VS_ICON | WS_TABSTOP
  13591.     END
  13592.  
  13593.  
  13594. ΓòÉΓòÉΓòÉ 21.3.2.59. WINDOW Statement ΓòÉΓòÉΓòÉ
  13595.  
  13596. Syntax: 
  13597.  
  13598.   WINDOW text, id, x, y, width, height, class[, style[, framectl]]
  13599.          data-definitions
  13600. [ BEGIN
  13601. control-definition
  13602.     .
  13603.     .
  13604.     .
  13605. END ]
  13606.  
  13607. The WINDOW statement creates a window of the specified class.  The statement 
  13608. defines the position and dimensions of the window relative to its parent 
  13609. window, as well as the window-box style.  The WINDOW statement is typically 
  13610. used in a WINDOWTEMPLATE or FRAME statement. 
  13611.  
  13612. Typically, only one WINDOW statement is used in a FRAME statement.  It defines 
  13613. the client window belonging to the corresponding frame window. The optional 
  13614. BEGIN and END keywords enclose any CONTROL statements that are given with the 
  13615. window.  CONTROL statements given in this manner represent child windows 
  13616. belonging to the window created by the WINDOW statement. 
  13617.  
  13618.  text              Specifies the window title if the style specifies a title 
  13619.                    bar. This field must contain zero or more characters 
  13620.                    enclosed in double quotation marks.  The character values 
  13621.                    must be in the range 1 through 255.  If a double quotation 
  13622.                    mark is required in the title, you must include the double 
  13623.                    quotation mark twice. 
  13624.  id                Specifies the window identifier.  This value must be a 
  13625.                    signed integer in the range -32768 through 32767, an 
  13626.                    unsigned integer in the range of 1 through 65535, or a 
  13627.                    simple expression that evaluates to a value in these ranges. 
  13628.  x                 Specifies the x-coordinate of the lower-left corner of the 
  13629.                    window. This value must be a signed integer in the range 
  13630.                    -32768 through 32767 or an expression consisting of integers 
  13631.                    and the addition (+) or subtraction (-) operator.  The value 
  13632.                    is in dialog units.  The position is relative to the origin 
  13633.                    of the parent window. 
  13634.  y                 Specifies the y-coordinate of the lower-left corner of the 
  13635.                    window. This value must be a signed integer in the range 
  13636.                    -32768 through 32767 or an expression consisting of integers 
  13637.                    and the addition (+) or subtraction (-) operator.  The value 
  13638.                    is in dialog units.  The position is relative to the origin 
  13639.                    of the parent window. 
  13640.  width             Specifies the width of the window.  This value must be an 
  13641.                    integer in the range 0 through 65535 or an expression 
  13642.                    consisting of integers and the addition (+) or subtraction 
  13643.                    (-) operator.  The value is in n-character units. 
  13644.  height            Specifies the height of the window.  This value must be an 
  13645.                    integer in the range 0 through 65535 or an expression 
  13646.                    consisting of integers and the addition (+) or subtraction 
  13647.                    (-) operator.  The value is in 1/8-character units. 
  13648.  class             Specifies the window class.  This value can be one of the 
  13649.                    control classes specified in the "Control Classes" table in 
  13650.                    the Presentation Manager Programmer Reference or the name of 
  13651.                    the window class, enclosed in double quotation marks. 
  13652.  style             Specifies the window style.  This value can be any of the 
  13653.                    window, dialog box, or frame styles specified. 
  13654.  framectl          Specifies the style of the frame controls belonging to the 
  13655.                    window.  This value can be a combination of the styles 
  13656.                    specified in the table, "Frame-Control Styles." You can use 
  13657.                    the bitwise OR (|) operator to combine styles. 
  13658.  data-definitions  Specifies a CTLDATA and/or PRESPARAMS statement. These 
  13659.                    statements define control and presentation data for the 
  13660.                    window. For more information, see CTLDATA Statement and 
  13661.                    PRESPARAMS Statement. 
  13662.  control-definition Specifies a CONTROL statement or any one of several 
  13663.                    predefined control statements. These statements define the 
  13664.                    style, position, and dimensions of controls in the window. 
  13665.  
  13666.  Comments 
  13667.  
  13668.  The WINDOW statement can actually contain any combination of CONTROL, DIALOG, 
  13669.  and WINDOW statements. Typically, a WINDOW statement contains one or no such 
  13670.  statements. 
  13671.  
  13672.  Example 
  13673.  
  13674.  This example creates a client window belonging to the frame window. The client 
  13675.  window belongs to the "MyClientClass" window class and has the standard window 
  13676.  identifier FID_CLIENT. 
  13677.  
  13678.   WINDOWTEMPLATE 1
  13679.   BEGIN
  13680.       FRAME "My Window", 1, 10, 10, 320, 130,
  13681.                0, FCF_STANDARD | FCF_VERTSCROLL
  13682.       BEGIN
  13683.           WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass"
  13684.       END
  13685.   END
  13686.  
  13687.  
  13688. ΓòÉΓòÉΓòÉ 21.3.2.60. WINDOWTEMPLATE Statement ΓòÉΓòÉΓòÉ
  13689.  
  13690. Syntax: 
  13691.  
  13692.   WINDOWTEMPLATE window-id [load-option] [mem-option] [code-page]
  13693.   BEGIN
  13694.   window-definition
  13695.       .
  13696.       .
  13697.       .
  13698.   END
  13699.  
  13700. The WINDOWTEMPLATE statement creates a window template.  A window template 
  13701. consists of a series of statements that define the window identifier, load and 
  13702. memory options, window dimensions, and controls in the window.  The window 
  13703. template can be loaded from the executable file by using the WinLoadDlg 
  13704. function. 
  13705.  
  13706. You can provide any number of window templates in a resource script file, but 
  13707. each template must have a unique window-id value. 
  13708.  
  13709.  window-id           Specifies the window identifier.  This value must be a 
  13710.                      signed integer in the range -32768 through 32767, an 
  13711.                      unsigned integer in the range of 1 through 65535, a simple 
  13712.                      expression that evaluates to a value in these ranges, or a 
  13713.                      character string. 
  13714.  load-option         Specifies when the system loads the resource from the 
  13715.                      executable file into memory.  This value must be one of 
  13716.                      the following: 
  13717.                      PRELOAD             System loads the resource when the 
  13718.                                          application starts. 
  13719.                      LOADONCALL          System loads the resource when the 
  13720.                                          application calls the WinLoadDlg 
  13721.                                          function. This is the default option. 
  13722.  mem-option          Specifies how the system manages the resource when it is 
  13723.                      in memory.  This value must be one or more of the 
  13724.                      following: 
  13725.                      FIXED               System keeps the resource at a fixed 
  13726.                                          memory location. 
  13727.                      MOVEABLE            System moves the resource as necessary 
  13728.                                          to compact memory. 
  13729.                      DISCARDABLE         System discards the resource if it is 
  13730.                                          no longer needed. The default setting 
  13731.                      is MOVEABLE and DISCARDABLE. 
  13732.  code-page           Specifies a code page value.  See CODEPAGE Statement for a 
  13733.                      list of valid code pages. 
  13734.  window-definition   Specifies a WINDOW statement.  The statement defines the 
  13735.                      dimensions and style of the given window.  For details 
  13736.                      about the statement, see WINDOW Statement. 
  13737.  
  13738.  Comments 
  13739.  
  13740.  A WINDOWTEMPLATE statement can contain DIALOG, CONTROL, and WINDOW statements. 
  13741.  Typically, only one WINDOW statement is used in the WINDOWTEMPLATE statement. 
  13742.  
  13743.  
  13744. ΓòÉΓòÉΓòÉ 22. Dynamic Trace Customizer (TRCUST) ΓòÉΓòÉΓòÉ
  13745.  
  13746. OS/2 provides a mechanism by which developers may dynamically apply tracepoints 
  13747. in their module at run time.  This method eliminates all overhead of tracing 
  13748. when tracing is disabled. It also allows the developer to add tracepoints 
  13749. without modifying source code.  This reduces the possibility that adding a 
  13750. tracepoint will induce errors into one's code.  OS/2 needs a binary file, for 
  13751. each module being dynamically traced, which defines the tracepoints for the 
  13752. module. 
  13753.  
  13754. There are certain restrictions on the use of dynamic trace which should be 
  13755. noted.  These are: 
  13756.  
  13757.      Executable (.EXE) programs running in processes other than the trace 
  13758.       command cannot have dynamic tracepoints applied. 
  13759.  
  13760.      A dynamic tracepoint cannot be applied to a module running under the 
  13761.       Kernel Debugger that has a Breakpoint in place at the same location as 
  13762.       the trace point. 
  13763.  
  13764.      The trace command is unable to apply dynamic tracepoints to any module 
  13765.       for whom DosLoadModule is not applicable. This precludes the following: 
  13766.  
  13767.         -  Physical Device Drivers 
  13768.         -  Virtual Device Drivers 
  13769.         -  File System Device Drivers 
  13770.  
  13771.       The DTRACE utility (shipped with the IBM Developer Connection and OS/2 
  13772.       Warp 4) provides a means of overcoming this particular restriction. 
  13773.  
  13774.  The Trace Customizer (TRCUST) converts tracepoint definitions from a trace 
  13775.  source file (TSF) into dynamic tracepoints for the trace definition file 
  13776.  (TDF), and into formatting rules in the trace format file (TFF). 
  13777.  
  13778.  Definitions 
  13779.  
  13780.  .TSF          An ASCII file created by a developer which defines all dynamic 
  13781.                tracepoints for a given module. TRCUST currently allows at most 
  13782.                only one major code per TSF. 
  13783.  
  13784.  .TDF          A binary file, created by TRCUST, using the .TSF file as input. 
  13785.                This file defines all tracepoints in the module in a manner 
  13786.                acceptable to OS/2. This is used by the Trace Utility, TRACE. 
  13787.  
  13788.  .TFF          A binary file also created by TRCUST using the .TSF file.  This 
  13789.                file defines how all tracepoints will be formatted.  This is 
  13790.                used by the Trace Formatter, TRACEFMT. 
  13791.  
  13792.  major code    A byte value used to identify the module being traced. TRCUST 
  13793.                allows at most only one major code per TSF. 
  13794.  
  13795.  minor code    A word value used to uniquely identify each tracepoint. 
  13796.  
  13797.  GROUP         A value used to identify this tracepoint with tracepoints of the 
  13798.                same category.  Examples are MEM for memory management and PM 
  13799.                for Presentation Manager. For an example of uses of groups, see 
  13800.                the online help for the TRACE command. 
  13801.  
  13802.  TYPE          A value used to associate a subset of dynamic trace events 
  13803.                within a module. Examples are PRE for pre-invocation, POST for 
  13804.                post-invocation and API for API calls within a module. For an 
  13805.                explanation and examples of uses of types, see the online help 
  13806.                for the trace command. 
  13807.  
  13808.  
  13809. ΓòÉΓòÉΓòÉ 22.1. File Naming and Location ΓòÉΓòÉΓòÉ
  13810.  
  13811. The TDF file name is the same as the module to be traced, but has a file 
  13812. extension of TDF. The TFF has a name of the form TRC00xx.TFF where xx is the 
  13813. major code, for example, a module with major code 0xC2 will generate a TFF with 
  13814. the name TRC00C2.TFF. This naming convention is used to allow TRACEFMT to 
  13815. dynamically generate the TFF name given only the major code. 
  13816.  
  13817. TRCUST can be invoked to process a TSF or to combine several TFF files into a 
  13818. single TFF. For processing a TSF, TRCUST is given the name of a TSF, and 
  13819. optionally: 
  13820.  
  13821.      the desired name of the resulting TDF 
  13822.  
  13823.      the MAP file name 
  13824.  
  13825.      the error message level 
  13826.  
  13827.  TRCUST will store the TSF tracepoint formatting specifications in the TFF file 
  13828.  and if the tracepoint specified was not for a static tracepoint, the TSF 
  13829.  tracepoint definition will be converted into the format required by the Trace 
  13830.  Utility and stored in the TDF file. On errors, TRCUST will display appropriate 
  13831.  messages, skip any tracepoint with errors in its definition, and continue 
  13832.  processing the next tracepoint definition. 
  13833.  
  13834.  For combining TFF files that use the same major code, TRCUST is given the name 
  13835.  of the file containing the TFF filenames to combine and the name of the file 
  13836.  to contain the combined trace format statements. 
  13837.  
  13838.  TRCUST will issue an error message and abort processing under the following 
  13839.  conditions: 
  13840.  
  13841.      the TSF cannot be opened 
  13842.  
  13843.      when combining TFF files, if any TFF input files cannot be read or if all 
  13844.       TFF input files do not use the same major code 
  13845.  
  13846.      when defining dynamic tracepoints, if the executable module to contain 
  13847.       the tracepoints cannot be read 
  13848.  
  13849.      the TDF, or TFF files cannot be written to 
  13850.  
  13851.      an error in the header definition in the TSF 
  13852.  
  13853.      a missing ending quote in the TSF 
  13854.  
  13855.  Note:  TRCUST always returns 0 so that, when invoking it from a makefile, 
  13856.  processing of the rest of the makefile can continue if TRCUST aborts. 
  13857.  
  13858.  Combine TFF files when several modules that use dynamic tracing use the same 
  13859.  major code.  The Trace Formatter can only use one TFF file per major code to 
  13860.  get formatting information from. After the TSF file for each module is run 
  13861.  through TRCUST to produce a TDF and TFF file, TRCUST can be invoked again, 
  13862.  this time using the combine TFF files option and a file that only contains the 
  13863.  paths to all the TFF files using the same major code. TRCUST will read all the 
  13864.  TFF files.  If all TFF files don't use the same major code, TRCUST will issue 
  13865.  an error message and abort. TRCUST will read each trace format record from the 
  13866.  TFF files and write them (in ascending order according to minor code) to the 
  13867.  destination TFF file given. 
  13868.  
  13869.  
  13870. ΓòÉΓòÉΓòÉ 22.2. Invoking the Trace Customizer ΓòÉΓòÉΓòÉ
  13871.  
  13872. The Trace Customizer is a protect mode only program and must therefore be run 
  13873. under OS/2. TRCUST may be invoked to combine TFF files or to process a TSF. The 
  13874. syntax for combining TFF files is as follows: 
  13875.  
  13876.  
  13877.     [d:][path]TRCUST [d:][path]tffsource /C=[d:][path]tffdest [/Wn]
  13878.  
  13879. where: 
  13880.  
  13881.  TRCUST    is the name of the Trace Customizer program. A drive and path may 
  13882.            optionally be specified to explicitly define the location of the 
  13883.            Trace Customizer program, otherwise the program is searched for in 
  13884.            the current directory, followed by looking along the path defined by 
  13885.            the PATH environment variable. 
  13886.  
  13887.  [d:][path]tffsource is the name of a file containing fully qualified 
  13888.            (including extensions) pathnames of TFF files to combine. Each TFF 
  13889.            file must use the same major code and each filename in the tffsource 
  13890.            file is separated by white space. This will combine all TFF files 
  13891.            for the same major code into a single TFF file.  If duplicate minor 
  13892.            code format definitions are found, the first format definition for 
  13893.            the minor code remains valid, the duplicates are discarded and a 
  13894.            warning message is issued. If no path is provided the tffsource file 
  13895.            is searched for in the current directory, followed by using the 
  13896.            current value of DPATH. 
  13897.  
  13898.  [d:][path]tffdest is the name of the trace format destination file to store 
  13899.            the combined trace format definitions. 
  13900.  
  13901.  /Wn       (optional) is the level of error messages to be displayed, where n 
  13902.            can be 0, 1, or 2.  The possible message levels are shown below 
  13903.            along with the messages that each displays: 
  13904.  
  13905.                 Level    Messages 
  13906.               0          fatal and severe messages 
  13907.               1          fatal, severe, and error messages 
  13908.               2          all (fatal, severe, error, and warning) messages 
  13909.  
  13910.            A message level of 2 is the default. 
  13911.  
  13912.  An example of a tffsource file for using the combine TFF files option of 
  13913.  TRCUST is: 
  13914.  
  13915.   \TFF\PROG1\TRC00C2.TFF \TFF\PROG2\TRC00C2.TFF
  13916.   \TFF\PROG3\TRC00C2.TFF \TFF\PROG4\TRC00C2.TFF
  13917.  
  13918.  To invoke TRCUST to combine TFF files using the above file as input (assume 
  13919.  filename is \TFF\PROG\TFF00C2) and output the combined format statements into 
  13920.  file \TFF\PROG\TR\TRC00C2.TFF is: 
  13921.  
  13922.   TRCUST \TFF\PROG\TFF00C2 /C=\TFF\PROG\TRC00C2.TFF
  13923.  
  13924.  The syntax for processing a TSF file is as follows: 
  13925.  
  13926.      [d:][path]TRCUST [d:][path]tsf [[d:][path]tdf] [/M=mapfile] [/Wn]
  13927.  
  13928.  where: 
  13929.  
  13930.  TRCUST    is the name of the Trace Customizer program. A drive and path may 
  13931.            optionally be specified to explicitly define the location of the 
  13932.            Trace Customizer program, otherwise the program is searched for in 
  13933.            the current directory, followed by looking along the path defined by 
  13934.            the PATH environment variable. 
  13935.  
  13936.  [d:][path]tsf is the name of the trace source file. If no file extension is 
  13937.            provided then an extension of TSF is assumed. If no path is provided 
  13938.            the trace source file is searched for in the current directory, 
  13939.            followed by using the current value of DPATH. 
  13940.  
  13941.  [d:][path]tdf (optional) is the name of the trace definition file to store the 
  13942.            dynamic tracepoint definitions. If not specified, the TSF filename 
  13943.            is used with an extension of TDF. If no file extension is provided 
  13944.            then an extension of TDF is assumed. 
  13945.  
  13946.  /M=mapfile (optional) defines mapfile as the MAP file for this module. The 
  13947.            name may be qualified by a drive/directory, otherwise it will be 
  13948.            searched for in the current directory followed by the path specified 
  13949.            by the DPATH environment variable. If specified as an option, the 
  13950.            MAP file must exist and the filename extension must be MAP or TRCUST 
  13951.            will abort processing. The mapfile will only be used if a symbol is 
  13952.            not found in the symbolic debug information stored in the executable 
  13953.            module. 
  13954.  
  13955.  /Wn       (optional) is the level of error messages to be displayed, where n 
  13956.            can be 0, 1, or 2.  The possible message levels are shown below 
  13957.            along with the messages that each displays: 
  13958.  
  13959.                 Level    Messages 
  13960.               0          fatal and severe messages 
  13961.               1          fatal, severe, and error messages 
  13962.               2          all (fatal, severe, error, and warning) messages 
  13963.  
  13964.            A message level of 2 is the default. 
  13965.  
  13966.  
  13967. ΓòÉΓòÉΓòÉ 22.3. Symbolic Debug Support ΓòÉΓòÉΓòÉ
  13968.  
  13969. Source Level Symbolic Support 
  13970.  
  13971. If the module has been compiled and linked with the following debug options, 
  13972. then the Trace Customizer can look into the module to extract symbolic 
  13973. information. In this case addresses may be specified symbolically. 
  13974.  
  13975.      /Ti on the C/Set2 language compiler for C source files 
  13976.      /CO on the link command 
  13977.  
  13978.  Note that not all source files must be C language,  although only public 
  13979.  labels from assembler routines will be found in the symbolic information.  You 
  13980.  may specify filename and line number, a local variable name or a global 
  13981.  variable name when using C routines. All symbolic names are case sensitive 
  13982.  when the source was compiled with debug options, but if linking in a C 
  13983.  language program that was not compiled with debug options, all symbolic names 
  13984.  are case sensitive and begin with an underscore (_) character unless the name 
  13985.  is declared with the Pascal calling conventions, in which case the underscore 
  13986.  is omitted but the symbolic name is capitalized. 
  13987.  
  13988.  MAP File Support 
  13989.  
  13990.  The Trace Customizer can also use the symbolic information in the MAP file 
  13991.  produced by the linker. All public symbols will be listed with their offsets 
  13992.  in the module being traced. This is not as complete a support as offered by 
  13993.  the debug compile option for C language source files, but it does allow entry 
  13994.  points, public labels and global data to be referenced symbolically within the 
  13995.  TSF. Note that the use of a MAP file is not language dependent. 
  13996.  
  13997.  Note:  When using a MAP file, if the symbolic name is a C language entry 
  13998.         point, it will be case sensitive and begin with an underscore (_) 
  13999.         character unless it is declared with the Pascal naming convention, in 
  14000.         which case the underscore is omitted and the name is capitalized. If 
  14001.         the name is not from C language source file, the name is case 
  14002.         sensitive. 
  14003.  
  14004.  Building a Module 
  14005.  
  14006.  To trace only public procedures, you only need your MAP file that was 
  14007.  generated by linking your module. 
  14008.  
  14009.  To trace local variables in C language routines, compile the C programs with 
  14010.  the debug option and assemble the ASM routines with public symbols.  Link all 
  14011.  the OBJs together with the debug option (/CO) and run TRCUST on the executable 
  14012.  module. You can now strip the debug information from the executable file by 
  14013.  either relinking the OBJs without the debug option or by using a tool to 
  14014.  delete the debug information from the executable module file. 
  14015.  
  14016.  
  14017. ΓòÉΓòÉΓòÉ 22.4. TDF and TFF File Usage ΓòÉΓòÉΓòÉ
  14018.  
  14019. The TDF, and TFF files produced by TRCUST are used in the following way: 
  14020.  
  14021.                                 ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14022.                                 Γöé  .TSF   Γöé
  14023.                                 ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ
  14024.                                      V
  14025.                               ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14026.                               Γöé TRCUST Util Γöé
  14027.                               ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14028.         ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14029.         V                            V
  14030.    ΓöîΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÉ                  ΓöîΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÉ
  14031.    Γöé  .TDF   Γöé                  Γöé  .TFF   Γöé
  14032.    ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ                  ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÿ
  14033.         V                            Γöé
  14034.  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                     Γöé
  14035.  Γöé  TRACE Util Γöé                     Γöé
  14036.  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                     Γöé
  14037.         V                            Γöé
  14038. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                    Γöé
  14039. Γöétracepoints setΓöé                    Γöé
  14040. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                    Γöé
  14041.         V                            Γöé
  14042. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                    Γöé
  14043. Γöé tracepoint hitΓöé                    Γöé
  14044. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                    Γöé
  14045.         V                            Γöé
  14046. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                    Γöé
  14047. Γöé  OS/2 kernel  Γöé                    Γöé
  14048. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ                    Γöé
  14049.         V                            Γöé
  14050.         Γöé                            Γöé
  14051.         Γöé                            Γöé
  14052.         Γöé                            Γöé
  14053.         Γöé                            Γöé
  14054.         Γöé                            Γöé
  14055.         Γöé                            Γöé
  14056.         Γöé                            Γöé
  14057.         V                            V
  14058. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ             ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14059. Γöé  trace buffer Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ>ΓöñTRACEFMT UtilΓöé
  14060. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ             ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14061.                                      V
  14062.                               ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14063.                               Γöé  formatted  Γöé
  14064.                               Γöétrace recordsΓöé
  14065.                               ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14066. How TRCUST fits into the system 
  14067.  
  14068.  
  14069. ΓòÉΓòÉΓòÉ 22.4.1. Tracing a Module ΓòÉΓòÉΓòÉ
  14070.  
  14071. To trace a module do the following: 
  14072.  
  14073.    1. Define the tracepoints and data to be traced in the TSF. 
  14074.  
  14075.    2. Invoke the Trace Customizer using the TSF as input. 
  14076.  
  14077.       This produces two files, a TDF and a TFF. 
  14078.  
  14079.    3. Put the TDF file in the same directory the module to trace resides, put 
  14080.       the TFF file in a directory accessible by TRACEFMT.  It is suggested that 
  14081.       all TFF files reside in the same subdirectory, an example directory could 
  14082.       be \OS2\SYSTEM\TRACE. 
  14083.  
  14084.    4. Invoke the OS/2 TRACE command using the name of the TDF instead of the 
  14085.       major code value. 
  14086.  
  14087.       This activates the tracepoints, causing the trace data to be saved in the 
  14088.       system trace buffer. 
  14089.  
  14090.    5. The OS/2 TRACE command can be used to turn tracing off at any time. 
  14091.  
  14092.    6. To display the contents of the trace buffer, invoke the OS/2 TRACEFMT 
  14093.       command. 
  14094.  
  14095.       TRACEFMT uses the major code to determine the TFF file and uses the 
  14096.       formatting string corresponding to the minor code value to format the 
  14097.       data in the RAS trace buffer and output it to the screen, file or 
  14098.       printer. 
  14099.  
  14100.  
  14101. ΓòÉΓòÉΓòÉ 22.5. Symbols and Abbreviations Used in the Document ΓòÉΓòÉΓòÉ
  14102.  
  14103.  [...]             denotes optional items. 
  14104.  
  14105.  [... | ... | ...] denotes a list of optional items, zero or more of which may 
  14106.                    be chosen. 
  14107.  
  14108.  {... | ... | ...} denotes a list of items of which ONE must be chosen. 
  14109.  
  14110.  item...           denotes that item is repeated zero or more times. 
  14111.  
  14112.  statement,.....   denotes this example is incomplete. 
  14113.  
  14114.  nnn               is a number in the range 0-255 inclusive. 
  14115.  
  14116.  nnnnn             is a number in the range 0-65535 inclusive. 
  14117.  
  14118.  All numbers and values can be entered in decimal form or in C hexadecimal form 
  14119.  (0x....). 
  14120.  
  14121.  
  14122. ΓòÉΓòÉΓòÉ 22.6. Trace Source File ΓòÉΓòÉΓòÉ
  14123.  
  14124. This section details the statements that can appear within a trace source file. 
  14125.  
  14126. Examples are given of TRACE statements. 
  14127.  
  14128.  
  14129. ΓòÉΓòÉΓòÉ 22.6.1. TSF Format ΓòÉΓòÉΓòÉ
  14130.  
  14131. The layout of a trace source file is: 
  14132.  
  14133.  
  14134.                 ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14135.                 Γöé        Header          Γöé
  14136.                 Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14137.                 Γöé  Type List Definition  Γöé
  14138.                 Γöé       (optional)       Γöé
  14139.                 Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14140.                 Γöé  Group List Definition Γöé
  14141.                 Γöé       (optional)       Γöé
  14142.                 Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14143.                 Γöé                        Γöé
  14144.                 Γöé                        Γöé
  14145.                 Γöé Tracepoint Definitions Γöé
  14146.                 Γöé                        Γöé
  14147.                 Γöé                        Γöé
  14148.                 ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14149.  
  14150. Note: 
  14151.  
  14152.      Comments may be freely inserted anywhere in the trace source file. A 
  14153.       comment is identified by a ; or by using C syntax comments anywhere in 
  14154.       the file.  A C comment has start and end delimiters, namely /* and */. C 
  14155.       type comments may span lines, and may be nested. 
  14156.  
  14157.      Below are sample TSF files. See Sample Trace Source Files for more 
  14158.       examples. 
  14159.  
  14160.   ;  Sample trace source file depicting dynamic tracing for OS calls compiled
  14161.   ;  with 32-bit addressing
  14162.  
  14163.         MODNAME = doscall1.dll
  14164.         MAJOR   = 100  /* this is decimal, would be 0x64 if specified hex */
  14165.         MAXDATALENGTH = 200 /* max bytes logged per tracepoint is 200 */
  14166.  
  14167.         TYPELIST NAME=PRE,ID=1,
  14168.                  NAME=SYS,ID=0x40,
  14169.                  NAME=API,ID=128,     /* decimal, if hex would be 0x80 */
  14170.                  NAME=POST,ID=0x8000
  14171.  
  14172.         GROUPLIST NAME=MEM,ID=2,
  14173.                   NAME=FS,ID=0x5,
  14174.                   NAME=MOU,ID=13,
  14175.                   NAME=DOS,ID=0x2B    /* would be 43 if decimal */
  14176.  
  14177.         TRACE   MINOR=0x0001,
  14178.                 TP=.DosOpen,          /* Pre-invocation tracing on DosOpen */
  14179.                 TYPE=(PRE,API),
  14180.                 GROUP=DOS,
  14181.                 DESC="(OS) DosOpen    Pre-Invocation",
  14182.                 FMT="Major = %X  Minor = %Y",
  14183.                 FMT="            EAX = %D",
  14184.                 FMT="            FileName = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  14185.                 REGS=(EAX),
  14186.                 ASCIIZ32=(.FileName,DIRECT,128)
  14187.  
  14188.         TRACE   MINOR=0x7001,         /* Puts tracept on code at line 28 */
  14189.                                       /*   of file dosopen1.c.  Debug    */
  14190.                 TP=@dosopen1.c,28,    /*   info is needed to use this.   */
  14191.                 TYPE=(API),
  14192.                 GROUP=DOS,
  14193.                 DESC="(OS) CheckParm  After Createhandle",
  14194.                 FMT="                 New handle = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  14195.                 MEM32=(.handle,DIRECT,2)
  14196.  
  14197.         TRACE   MINOR=0x8001,         /* Post-invocation tracing at         */
  14198.                 TP=.DosOpenC,RETEP,   /*   procedure DosOpenC return point. */
  14199.                 TYPE=(API,POST),      /*   Debug    info is needed to use   */
  14200.                 GROUP=DOS,            /*   this type of tracepoint.         */
  14201.                 DESC="(OS) DosOpenC   Post-Invocation",
  14202.                 FMT="                 Return Code = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  14203.                 FMT="                 Variable Rec= /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69U",
  14204.                 MEM32=(.retcode,DIRECT,2),
  14205.                 /* The following will log a variable length structure.  The */
  14206.                 /*   second field in the structure is the length of the     */
  14207.                 /*   record(position var_struct+2).  This LEN parameter must*/
  14208.                 /*   immediately precede the memory specification defining  */
  14209.                 /*   the variable length record.                            */
  14210.                 LEN=(var_struct+2,DIRECT),
  14211.                 MEM32=(.var_struct,DIRECT,LEN)
  14212.  
  14213.  
  14214. ΓòÉΓòÉΓòÉ 22.6.2. TSF Header ΓòÉΓòÉΓòÉ
  14215.  
  14216. This defines common information for the module to be traced. The format is: 
  14217.  
  14218.         MODNAME = [d:][path]Name
  14219.         MAJOR   = nnn
  14220.       [ MAXDATALENGTH = nnnn ]
  14221.  
  14222. where: 
  14223.  
  14224.  d:          is the drive containing the module. If not specified the current 
  14225.              drive is used. 
  14226.  
  14227.  path        is the path to the module. If not specified the current path is 
  14228.              used. 
  14229.  
  14230.  Name        is the name of the executable module to be traced. If an extension 
  14231.              is not specified and the Name is not OS2KRNL, an extension of DLL 
  14232.              is appended to Name. 
  14233.  
  14234.  MAJOR=nnn   defines the major trace ID allocated to this module. It may be in 
  14235.              the range 1 to 255 decimal or specified 0x1 to 0xFF hex. The 
  14236.              default value is 1. The major trace ID is part of the data placed 
  14237.              in the trace buffer when a tracepoint is executed. 
  14238.  
  14239.              Only one major code is permitted per module. 
  14240.  
  14241.              Note:  OS/2 currently only supports major codes 0x1 - 0x00FF. 
  14242.  
  14243.  MAXDATALENGTH=nnnn (optional) defines the maximum amount of data that a single 
  14244.              tracepoint call will insert into the trace buffer. 
  14245.  
  14246.              The length may be in the range 20 to 512 decimal or specified 0x14 
  14247.              to 0x200 hex.  The default value is 512. This limit on the amount 
  14248.              of data to trace is to avoid yielding the processor when doing 
  14249.              dynamic tracing. 
  14250.  
  14251.  
  14252. ΓòÉΓòÉΓòÉ 22.6.3. Typelist Definition ΓòÉΓòÉΓòÉ
  14253.  
  14254. This defines the optional typelist event IDs. For more description and examples 
  14255. of event types see the online help for the trace command. 
  14256.  
  14257. The format is: 
  14258.  
  14259.         TYPELIST NAME=TypeName,ID=TypeValue,
  14260.                 [NAME=TypeName,ID=TypeValue,]...
  14261.  
  14262. where: 
  14263.  
  14264.  NAME=Typename 
  14265.            defines a 1-8 byte character string used to reference the TypeValue 
  14266.            in the tracepoint definitions.  All TypeNames and GroupNames within 
  14267.            a TSF must be unique. 
  14268.  
  14269.  ID=TypeValue 
  14270.            defines a bit value of the form 2**y where y in range 0 to 15, 
  14271.            permitting a maximum of 16 types to be defined in a single TSF. This 
  14272.            can be decimal or specified  0xnnnn for hex. 
  14273.  
  14274.  An example TYPELIST definition follows: 
  14275.  
  14276.         TYPELIST NAME=PRE,ID=1,
  14277.                  NAME=SYS,ID=0x40,
  14278.                  NAME=API,ID=128,
  14279.                  NAME=POST,ID=0x8000,.....
  14280.  
  14281.  
  14282. ΓòÉΓòÉΓòÉ 22.6.4. Grouplist Definition ΓòÉΓòÉΓòÉ
  14283.  
  14284. This defines the optional grouplist IDs. For more description and examples of 
  14285. groups see the online help for the trace command. 
  14286.  
  14287. The format is: 
  14288.  
  14289.         GROUPLIST NAME=GroupName,ID=GroupValue,
  14290.                  [NAME=GroupName,ID=GroupValue,]...
  14291.  
  14292. where: 
  14293.  
  14294.  NAME=GroupName 
  14295.            defines a 1-8 byte character string used to reference the GroupValue 
  14296.            in the tracepoint definitions.  There are a maximum of 48 GroupNames 
  14297.            allowed in a TSF file.  All TypeNames and GroupNames within a TSF 
  14298.            must be unique. 
  14299.  
  14300.  ID=GroupValue 
  14301.            defines a word value in the range 1 to 65535 decimal or 0x1 to 
  14302.            0xFFFF hex. 
  14303.  
  14304.  An example GROUPLIST definition follows: 
  14305.  
  14306.         GROUPLIST NAME=MEM,ID=2,
  14307.                   NAME=FS,ID=0x5,
  14308.                   NAME=MOU,ID=13,.....
  14309.  
  14310.  
  14311. ΓòÉΓòÉΓòÉ 22.6.5. Tracepoint Definitions ΓòÉΓòÉΓòÉ
  14312.  
  14313. The tracepoint address and the data to be traced are specified by the TRACE 
  14314. statement. There are a maximum of 65535 tracepoints permitted in a trace source 
  14315. file. 
  14316.  
  14317. The format of the TRACE statement is: 
  14318.  
  14319.         TRACE   [MINOR=minorcode,]
  14320.                 TP={@STATIC,|@filename,linenum,|.name[{+|-}offs][,RETEP]},
  14321.                 [OPCODE=0xnn,]
  14322.                 [TYPE=(typename[,typename...]),]
  14323.                 [GROUP=groupnam,]
  14324.                 [DESC="Tracepoint description",]
  14325.                 [FMT="Formatting string",]...
  14326.                 [LEN=(length_spec,flag),]
  14327.                 [DATA_STMT,]...
  14328.  
  14329. The TRACE keyword delimits a tracepoint definition statement. The definition is 
  14330. considered complete when the next TRACE keyword is encountered or the end of 
  14331. file is reached. There is one TRACE statement for each tracepoint. 
  14332.  
  14333. LEN is used to log variable length records. A DATA_STMT must immediately follow 
  14334. the LEN statement. LEN will give the location of a one word field containing 
  14335. the number of bytes to log for the following DATA_STMT. 
  14336.  
  14337.  
  14338. ΓòÉΓòÉΓòÉ 22.6.5.1. MINOR Keyword ΓòÉΓòÉΓòÉ
  14339.  
  14340. The MINOR parameter is an optional keyword parameter.  If it is specified in 
  14341. the first tracepoint definition, it must be specified in every tracepoint 
  14342. definition.  If it is not specified in the first tracepoint definition, it 
  14343. cannot be specified in any of the subsequent tracepoint definitions. It should 
  14344. be coded as: 
  14345.  
  14346.         MINOR=nnnnn,
  14347.  
  14348. where: 
  14349.  
  14350.  nnnnn     is a decimal number from 1 to 65535 or a hex number from 0x1 to 
  14351.            0xFFFF. This represents the minor code for the tracepoint, which 
  14352.            must be unique for the major code specified for this module. When 
  14353.            tracepoints with duplicate minor codes are encountered, the first is 
  14354.            saved and the rest are discarded, and an error message is issued. 
  14355.  
  14356.  If minor codes are not specified in the TSF, TRCUST sequentially provides 
  14357.  them, starting with 1, for each tracepoint definition it encounters. 
  14358.  
  14359.  
  14360. ΓòÉΓòÉΓòÉ 22.6.5.2. TP Keyword ΓòÉΓòÉΓòÉ
  14361.  
  14362. The TP parameter is a required keyword parameter. If TP is specified more than 
  14363. once for a single tracepoint definition, the tracepoint is discarded. TP has 
  14364. three mutually exclusive definitions which can be coded as: 
  14365.  
  14366.         TP=@STATIC,
  14367.  
  14368. where: 
  14369.  
  14370.  STATIC    defines this tracepoint entry to be used only for creating a trace 
  14371.            format statement for the TFF file.  No tracepoint definition is 
  14372.            created for the TDF, and the only other TRACE parameters that will 
  14373.            be used are DESC, MINOR and FMT. This is used to create trace 
  14374.            formatting information for static tracepoints. If the TSF contains 
  14375.            only @STATIC directives, no TDF files are created. 
  14376.  
  14377.           TP=@filename,linenum,
  14378.  
  14379.  where: 
  14380.  
  14381.  filename    is an ASCII string specifying the name (including extension) of a 
  14382.              source filename used in creating the module.  The source filename 
  14383.              is stored in the debug information contained in the executable 
  14384.              module, so debug information must exist to use this parameter. The 
  14385.              filename is not case sensitive. 
  14386.  
  14387.  linenum     is a decimal number specifying the line number in the given source 
  14388.              file name to place the tracepoint. 
  14389.  
  14390.  Note:  Debug information must exist to use this option. The statement at the 
  14391.  given source linenum may have been rearranged during compiler optimization, so 
  14392.  the developer must use this with caution.  If the linenum is not found in the 
  14393.  debug information, the tracepoint is applied at the next linenum defined in 
  14394.  the debug information and a warning message is issued to the user. 
  14395.  
  14396.  An example to apply a tracepoint to line 35 of file stubfile.c is: 
  14397.  
  14398.       TRACE   MINOR=0x700A,              /* puts tracepoint on code at line */
  14399.               TP=@stubfile.c,35,.....    /*  35 of source file stubfile.c   */
  14400.  
  14401.           TP=.name[{+|-}offs][,RETEP],
  14402.  
  14403.  where: 
  14404.  
  14405.  name 
  14406.            is a public label or an entry point name of a procedure to be 
  14407.            traced. The "." preceding name is required. Name must be found in 
  14408.            the debug information in the module or name must be a public symbol 
  14409.            as found in the MAP file. If debug information is used, the address 
  14410.            of this tracepoint will be immediately following the prologue of the 
  14411.            procedure. If MAP information is used, this address points to the 
  14412.            opcode at the given label. 
  14413.  
  14414.            If the procedure was compiled with debug support, Name is case 
  14415.            sensitive.  If not, C language functions will be case sensitive and 
  14416.            begin with an underscore "_" character unless the function is 
  14417.            declared with the Pascal calling convention, in which case the 
  14418.            underscore is omitted and the name is capitalized. 
  14419.  
  14420.  offs 
  14421.            (optional) is a decimal (specified as nnnnnnnn) or hex (specified as 
  14422.            0xnnnnnnnn) offset from the entry point address. 
  14423.  
  14424.  RETEP 
  14425.            (optional) specifies that the tracepoint will be inserted at the 
  14426.            return address corresponding to this entry point. This is just 
  14427.            before the procedure epilogue is executed and at this point the 
  14428.            procedure's automatic data is still addressable from register (E)BP 
  14429.            and the return code (if any) is set up in (E)AX. 
  14430.  
  14431.            The module must include information supplied by the debug compile 
  14432.            option (see Symbolic Debug Support), meaning that the source 
  14433.            language must have been C, otherwise an error message will be 
  14434.            generated and this tracepoint discarded. 
  14435.  
  14436.            When the RETEP is used, the name must be a valid entry point to a 
  14437.            procedure. 
  14438.  
  14439.            Note:  The RETEP option depends upon the manner in which a C 
  14440.                   compiler generates its code. Therefore this option may not 
  14441.                   work will some of the new compilers. 
  14442.  
  14443.  Note:  For ASM functions to accomplish tracing, a label must be made public to 
  14444.  have a tracepoint applied.  Therefore, to accomplish "POST" tracing, a label 
  14445.  must be made public at the return statement. 
  14446.  
  14447.  The following are partial examples of Pre/Post tracing of DosOpen: 
  14448.  
  14449.         TRACE   MINOR=0x0001,
  14450.                 TP=.DosOpen,.....            /* Pre-invocation tracing */
  14451.  
  14452.         TRACE   MINOR=0x8001,
  14453.                 TP=.DosOpen,RETEP,.....      /* Post-invocation tracing */
  14454.  
  14455.  It is not possible to set dynamic tracepoints on the following machine 
  14456.  instructions: 
  14457.  
  14458.  0x9C  PUSHF 
  14459.  0xCC  INT 3 
  14460.  0xCD  INT n 
  14461.  0xCE  INTO 
  14462.  0x62  BOUND 
  14463.  0x69  IMUL 
  14464.  0x6B  IMUL 
  14465.  0xF6  DIV, IDIV, MUL, IMUL, NEG, NOT, TEST (immediate) 
  14466.  0xF7  DIV, IDIV, MUL, IMUL, NEG, NOT, TEST (immediate) 
  14467.  
  14468.  TRCUST gives an error for these opcodes and the tracepoint is rejected. 
  14469.  
  14470.  In all cases, two tracepoints cannot be applied at the same address. 
  14471.  
  14472.  
  14473. ΓòÉΓòÉΓòÉ 22.6.5.3. OPCODE Keyword ΓòÉΓòÉΓòÉ
  14474.  
  14475. The OPCODE parameter is an optional keyword parameter. 
  14476.  
  14477.         OPCODE=0xnn,
  14478.  
  14479. where: 
  14480.  
  14481.  nn    is the expected one byte hex opcode to be found at the tracepoint 
  14482.        address and TRCUST verifies the value with that in the module. The 
  14483.        opcode of the instruction being traced must be the same as this value or 
  14484.        an error message is issued and the tracepoint is rejected. This may be 
  14485.        used to verify the opcode expected at the address specified by the TP 
  14486.        parameter. This may be useful when using TP = @filename,linenum to 
  14487.        ensure the requested instruction is traced. 
  14488.  
  14489.  
  14490. ΓòÉΓòÉΓòÉ 22.6.5.4. TYPE Keyword ΓòÉΓòÉΓòÉ
  14491.  
  14492. The TYPE parameter is an optional keyword parameter that defines the event 
  14493. types of this tracepoint. For more description and examples of event types see 
  14494. the online help for the TRACE command. 
  14495.  
  14496.         TYPE=(typename[,typename...]),
  14497.  
  14498. where: 
  14499.  
  14500.  typename    is an ASCII string specifying the type of this tracepoint. The 
  14501.              typename symbol must have been previously defined by the TYPELIST 
  14502.              statement. If an invalid typename is given, the tracepoint will be 
  14503.              discarded and a message issued. 
  14504.  
  14505.              The final type value is obtained by logically combining each type 
  14506.              name value using the OR operator. If TYPE is omitted, the trace 
  14507.              statement will have a type value of 0. 
  14508.  
  14509.  
  14510. ΓòÉΓòÉΓòÉ 22.6.5.5. GROUP Keyword ΓòÉΓòÉΓòÉ
  14511.  
  14512. The GROUP parameter is an optional keyword parameter that defines the group 
  14513. this tracepoint belongs to. For more description and examples of groups see the 
  14514. online help for the trace command. 
  14515.  
  14516.         GROUP=groupnam,
  14517.  
  14518. where: 
  14519.  
  14520.  groupnam    is an ASCII string specifying which group this tracepoint belongs. 
  14521.              The groupname symbol must have been previously defined by the 
  14522.              GROUPLIST statement. If an invalid groupname is given, the 
  14523.              tracepoint will be discarded and a message issued. 
  14524.  
  14525.              If GROUP is omitted, the trace statement will have a group value 
  14526.              of 0. 
  14527.  
  14528.  
  14529. ΓòÉΓòÉΓòÉ 22.6.5.6. DESC Keyword ΓòÉΓòÉΓòÉ
  14530.  
  14531. The DESC parameter is used to produce a description for the tracepoint that is 
  14532. output as the first line of formatted data. It should include the entry point 
  14533. name of the procedure being traced and whether this is an entry or return 
  14534. point. The descriptive string is enclosed in double quotes as for a C language 
  14535. string. The DESC parameter is required if any FMT specifications are present. 
  14536.  
  14537. The recommended formats for such strings are as follows: 
  14538.  
  14539.         DESC="name Pre-Invocation",
  14540.  
  14541.         DESC="name Post-Invocation",
  14542.  
  14543. where: 
  14544.  
  14545.  name              is the system component (in parentheses) followed by the 
  14546.                    entry point name of the procedure. 
  14547.  
  14548.  Pre-Invocation    identifies this tracepoint as an entry point, that is, 
  14549.                    before the function has been executed. 
  14550.  
  14551.  Post-Invocation   identifies this tracepoint as a return point from the 
  14552.                    function. 
  14553.  
  14554.  The words Pre-Invocation and Post-Invocation are not mandatory, merely 
  14555.  recommendations to be compatible with the base OS/2 tracepoints, when 
  14556.  formatted. If a tracepoint is inserted in the middle of a procedure it will be 
  14557.  appropriate to use different wording. The Trace Customizer does not check the 
  14558.  wording. 
  14559.  
  14560.  The following is an example of pre-invocation and post-invocation tracepoints: 
  14561.  
  14562.         TRACE  MINOR=0x0001,
  14563.                TP=.DosOpen,
  14564.                DESC="(OS) DosOpen    Pre-Invocation",.....
  14565.  
  14566.         TRACE  MINOR=0x8001,
  14567.                TP=.DosOpen,RETEP,
  14568.                DESC="(OS) DosOpen    Post-Invocation",.....
  14569.  
  14570.  
  14571. ΓòÉΓòÉΓòÉ 22.6.5.7. FMT Keyword ΓòÉΓòÉΓòÉ
  14572.  
  14573. The optional FMT parameter is used to produce the formatting string for the 
  14574. trace data. The developer should use these to control formatting the output 
  14575. produced by the Trace Formatter.  Each FMT keyword causes CR/LF to be appended 
  14576. to the format string. The formatting string is similar to a C library printf 
  14577. string specification. It consists of ASCII characters and formatting controls 
  14578. enclosed in double quotes as for a C language string. Each formatting primitive 
  14579. describes the format of the data in the trace buffer at the formatting position 
  14580. and must match the data stored in the trace buffer by the data statements 
  14581. described later. See Formatting Trace Data for a description of how the data is 
  14582. stored in the trace buffer and subsequently formatted. 
  14583.  
  14584. The formatting controls are as follows: 
  14585.  
  14586.  %Innn     Ignore nnn number of bytes in the trace buffer. 
  14587.  
  14588.            This tells the Trace Formatter to skip over the next nnn bytes in 
  14589.            the current trace record. This could be used, for example, to skip 
  14590.            over unimportant data, traced as a block, and only output the data 
  14591.            of interest. 
  14592.  
  14593.            When using this control, nnn represents an ASCII decimal number and 
  14594.            must be followed by a space. 
  14595.  
  14596.                               statement: FMT = "ignore ten bytes %I10 here",
  14597.                                          FMT = "       and two more %I2 here",
  14598.  
  14599.                               generates: ignore ten bytes here
  14600.                                                 and two more here
  14601.  
  14602.  %P        Process the data prefix bytes associated with the trace data. 
  14603.  
  14604.            This tells the Trace Formatter that the next bytes in the trace 
  14605.            record are the prefix or header bytes for data logged by the dynamic 
  14606.            tracing mechanism. This is required to precede any format control 
  14607.            describing data logged from memory.  Do not use this before data 
  14608.            that was logged from a register and never use with static 
  14609.            tracepoints. See Formatting Trace Data for a description of how the 
  14610.            data is stored in the trace buffer and the use of this control. 
  14611.  
  14612.                               statements: FMT="memory byte = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69B",
  14613.  
  14614.                               generates:  memory byte = C2
  14615.  
  14616.  %B        Output a byte of data. 
  14617.  
  14618.                               statement: FMT = "memory byte = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69B"
  14619.  
  14620.                               generates: memory byte = 01
  14621.  
  14622.  %W        Output a word of data. 
  14623.  
  14624.                               statement: FMT = "register word = %W"
  14625.  
  14626.                               generates: register word = 0001
  14627.  
  14628.  
  14629.                               statement: FMT = "memory word = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W"
  14630.  
  14631.                               generates: memory word = 0001
  14632.  
  14633.  %D        Output a double word of data. 
  14634.  
  14635.                               statement: FMT = "double word EAX = %D"
  14636.  
  14637.                               generates: double word EAX = 0000 4B2C
  14638.  
  14639.  
  14640.                               statement: FMT = "double memory word = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69D"
  14641.  
  14642.                               generates: double memory word = 0000 4B2C
  14643.  
  14644.  %F        Output a Flat (0:32 bit) address. 
  14645.  
  14646.                               statement: FMT = "flat address EAX = %F"
  14647.  
  14648.                               generates: flat address EAX = 00004B2C
  14649.  
  14650.  %Q        Output a quad word of data. 
  14651.  
  14652.                               statement: FMT = "quad word from regs EAX and EBX = %Q"
  14653.  
  14654.                               generates: quad word from regs EAX and EBX = 00004B2C 00000001
  14655.  
  14656.  %A        Output a segmented (16:16 bit) address. 
  14657.  
  14658.                               statement: FMT = "segmented address in SS:SP = %A"
  14659.  
  14660.                               generates: segmented address in SS:SP = 00B7:0001
  14661.  
  14662.  
  14663.                               statement: FMT = "segmented address in memory = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69A"
  14664.  
  14665.                               generates: segmented address in memory = 00B7:0001
  14666.  
  14667.  %R        Repeat the following format control for the rest of the memory that 
  14668.            was logged. 
  14669.  
  14670.            This is used for formatting variable length records.  Use this in 
  14671.            place of the prefix parameter %P to log the rest of the record in 
  14672.            the format specified following the repeat code. 
  14673.  
  14674.                          statement: FMT = "log a variable number of words from memory = 1W"
  14675.  
  14676.                          generates: log a variable number of words from memory = 0001 0004
  14677.  
  14678.  %S        Output an ASCIIZ string. 
  14679.  
  14680.            The prefix formatting control should always precede this for dynamic 
  14681.            tracepoints because the data was logged from memory. 
  14682.  
  14683.            Note:  If the tracepoint is static, then %P should not be used 
  14684.            because the string is terminated with a null byte. 
  14685.  
  14686.                               statement: FMT = "string = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S"
  14687.  
  14688.                               generates: string = c:\os2\os2.ini
  14689.  
  14690.  %U        Format the remainder of the trace record as a sequence of bytes. 
  14691.  
  14692.            This will output the remaining of the traced data, including any 
  14693.            prefix bytes. 
  14694.  
  14695.                               statement: FMT = "garbage = %U"
  14696.  
  14697.                               generates: garbage = 00 00 00 03 c2 c1 c4 ff 04 00 09 c0 18
  14698.  
  14699.  %X        Output the major event code. 
  14700.  
  14701.                               statement: FMT = "major code = %X"
  14702.  
  14703.                               generates: major code = 00C2
  14704.  
  14705.  %Y        Output the minor event code. 
  14706.  
  14707.                               statement: FMT = "minor code = %Y"
  14708.  
  14709.                               generates: minor code = 0081
  14710.  
  14711.  
  14712.  To avoid conflicts with source file control information, all formatting 
  14713.  specifications can be in upper or lower case. Also, prefix format 
  14714.  specifications may be combined with data format specifications. For example, 
  14715.  the following create the same format controls in the TFF: 
  14716.  
  14717.           FMT = "/usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W here"
  14718.           FMT = "%p%w here"
  14719.           FMT = " %P %W here"
  14720.  
  14721.  
  14722. ΓòÉΓòÉΓòÉ 22.6.5.8. LEN Keyword ΓòÉΓòÉΓòÉ
  14723.  
  14724. The LEN parameter is an optional keyword parameter that defines the length of 
  14725. the variable length record that will follow in the next MEM or MEM32 statement. 
  14726.  
  14727.         LEN=(length_spec,flag),
  14728.  
  14729. where: 
  14730.  
  14731.  length_spec     is an address specification that points to the one word length 
  14732.                  field of the next memory specification. This format can be 
  14733.                  symbolic_name+nnnnnnnn where symbolic_name is a symbolic 
  14734.                  memory location and nnnnnnnn is the offset from that symbolic 
  14735.                  address. The length_spec can also be Flat Register Form or 
  14736.                  Segment Register Form. 
  14737.  
  14738.  flag            is a mandatory parameter that identifies the level of 
  14739.                  indirection to be used on the length_spec. The flag may be one 
  14740.                  of the following: 
  14741.  
  14742.                                   D[IRECT]
  14743.                                   I[NDIRECT][*[{+|-}iiiiiiii]]...
  14744.  
  14745.                  DIRECT implies that the length_spec specifies a memory 
  14746.                  location that contains the length of the variable length 
  14747.                  record. 
  14748.  
  14749.                  INDIRECT means that the length_spec contains an address and is 
  14750.                  dereferenced to obtain the memory location. 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.  The following are example LEN statements followed by the memory statement 
  14756.  whose length they describe. 
  14757.  
  14758.       TRACE MINOR=.....,
  14759.             /* Symbol vrecord is a record whose first field is a one */
  14760.             /* word value that is the total length of the entire     */
  14761.             /* variable length record.                               */
  14762.             LEN=(vrecord,DIRECT),
  14763.             MEM=(.vrecord,DIRECT,LEN),
  14764.  
  14765.             /* Symbol vrec_ptr is a pointer to a variable length record */
  14766.             /* and vend_ptr is a pointer to the end of the same record. */
  14767.             /* The second field (10 bytes from end of record) is  total */
  14768.             /* length of the variable length record.                    */
  14769.             LEN=(vend_ptr,INDIRECT*-10),
  14770.             MEM=(.vrec_ptr,INDIRECT,LEN),
  14771.  
  14772.             /* Symbol vrec_ptr is a pointer to a variable length record.*/
  14773.             /* The second field (2 bytes from beginning of record) is   */
  14774.             /* total length of the variable length record.              */
  14775.             LEN=(vrec_ptr,INDIRECT*+2),
  14776.             MEM=(.vrec_ptr,INDIRECT,LEN),
  14777.  
  14778.             /* Symbol ind_ptr is a pointer to a structure.  The third   */
  14779.             /* field in the structure (6 bytes from beginning) is a     */
  14780.             /* pointer to a variable record.  The fourth field in the   */
  14781.             /* variable length record (8 bytes from beginning) is the   */
  14782.             /* total length of this variable length record.             */
  14783.             LEN=(ind_ptr,INDIRECT*+6*+8),
  14784.             MEM=(.ind_ptr,INDIRECT*+6*,LEN),
  14785.  
  14786.             /* If DS:DI contains the address of ind_ptr, to perform */
  14787.             /* the above logging, the statements would be:              */
  14788.             LEN=(RDS+DI,INDIRECT*+6*+8),
  14789.             MEM=(RDS+DI,INDIRECT*+6*,LEN)
  14790.  
  14791.  
  14792. ΓòÉΓòÉΓòÉ 22.6.5.9. DATA_STMT ΓòÉΓòÉΓòÉ
  14793.  
  14794. There are three types of data that may be traced as part of the optional 
  14795. DATA_STMT section of the TRACE statement. 
  14796.  
  14797.       Registers 
  14798.       Memory 
  14799.       ASCIIZ strings 
  14800.  
  14801.  More than one keyword is permitted in a tracepoint definition. The order of 
  14802.  the statements defines the order in which the data is inserted into the trace 
  14803.  buffer. 
  14804.  
  14805.  The combined amount of data to be traced for a single tracepoint cannot exceed 
  14806.  MAXDATALENGTH.  If TRCUST determines that the maximum data size might be 
  14807.  exceeded, a warning message is issued but the tracepoint definition will 
  14808.  remain valid. 
  14809.  
  14810.  The keywords for tracing the three types of data are REGS, MEM32, MEM, 
  14811.  ASCIIZ32, and ASCIIZ. 
  14812.  
  14813.  The REGS keyword identifies which registers are to be recorded in the trace 
  14814.  buffer. 
  14815.  
  14816.  The MEM32 keyword is used to record sections of memory in the trace buffer. 
  14817.  Access to this memory location is through 32-bit flat addresses from functions 
  14818.  compiled using 32-bit addressing. Several MEM32 parameters may be coded at any 
  14819.  one tracepoint if several different memory areas are to be traced. 
  14820.  
  14821.  The MEM keyword is also used to record sections of memory in the trace buffer, 
  14822.  but access to this memory is through a segment:offset pair. This is used for 
  14823.  functions compiled using 16-bit addressing with segment registers. Several MEM 
  14824.  parameters may be coded at any one tracepoint if several different memory 
  14825.  areas are to be traced. 
  14826.  
  14827.  The ASCIIZ32 keyword is used to record an ASCIIZ string in the trace buffer. 
  14828.  This is a special form of the MEM32 keyword and there may be more than one 
  14829.  ASCIIZ32 parameter coded for a single tracepoint. 
  14830.  
  14831.  The ASCIIZ keyword is used to record an ASCIIZ string in the trace buffer. 
  14832.  This is a special form of the MEM keyword and there may be more than one 
  14833.  ASCIIZ parameter coded for a single tracepoint. 
  14834.  
  14835.  
  14836. ΓòÉΓòÉΓòÉ 22.6.5.10. REGS Keyword ΓòÉΓòÉΓòÉ
  14837.  
  14838. This is coded as: 
  14839.  
  14840.         REGS=(register[,register]...),
  14841.  
  14842. where: 
  14843.  
  14844.  register    is one of the following to support OS/2 versions 1.1 and 1.2: 
  14845.  
  14846.              CS, DS, SS, ES, AX, BX, CX, DX, SP, BP, SI, DI, IP, FLAGS 
  14847.  
  14848.              with the addition of the following to support OS/2 version 2.0: 
  14849.  
  14850.              EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI, EFLAGS, EIP, FS, GS 
  14851.  
  14852.              or the symbolic name of a C language variable declared with the 
  14853.              register storage-class specifier as .symbolic_name. 
  14854.  
  14855.              The same register may appear multiple times in the register list. 
  14856.              It will be traced as many times as it appears. Extended registers 
  14857.              (E) are 32 bits and logged as two words. All other registers are 
  14858.              16 bits and logged as one word. 
  14859.  
  14860.  Note:  To log a C language variable declared with the register storage class, 
  14861.  debug information must exist and the variable name is case sensitive.  When 
  14862.  formatting the data logged from a register variable, remember that there are 
  14863.  no memory prefix bytes put into the log buffer. 
  14864.  
  14865.  The following is an example of the REGS statement: 
  14866.  
  14867.        /* Given the following declaration in a C language source file: */
  14868.        register int ret_code;
  14869.  
  14870.        /* To log registers AX, CX and the register variable ret_code: */
  14871.        TRACE MINOR=.....
  14872.              REGS=(AX,CX,.ret_code),
  14873.              FMT="AX=%W  CX=%W  ret_code=%W"
  14874.  
  14875.  
  14876. ΓòÉΓòÉΓòÉ 22.6.5.11. MEM32 Keyword ΓòÉΓòÉΓòÉ
  14877.  
  14878. This is used to log memory in a function compiled using 32-bit flat addressing 
  14879. and is coded as: 
  14880.  
  14881.         MEM32=(address_spec,flag,{length|LEN}),
  14882.  
  14883. where: 
  14884.  
  14885.  address_spec    is a flat memory address specification as described in Address 
  14886.                  Specification. 
  14887.  
  14888.  flag            is a mandatory parameter that identifies the level of 
  14889.                  indirection to be used on the address. The flag may be one of 
  14890.                  the following: 
  14891.  
  14892.                                   D[IRECT]
  14893.                                   I[NDIRECT][*[{+|-}iiiiiiii]]...
  14894.                                   IS
  14895.  
  14896.                  DIRECT implies that the address specifies a memory location to 
  14897.                  be saved in the trace buffer. 
  14898.  
  14899.                  INDIRECT means that the address contains a flat address and is 
  14900.                  dereferenced to obtain the memory location. The optional 
  14901.                  asterisks denote the level of indirection, one for each level. 
  14902.                  The indirect offsets iiiiiiii are added to or subtracted from 
  14903.                  the value found at the given level of indirection. 
  14904.  
  14905.                  IS (Indirect Segmented) means that the address contains a 
  14906.                  segmented address that is dereferenced to obtain the memory 
  14907.                  location. 
  14908.  
  14909.  length          is the number of bytes at the memory location to be saved in 
  14910.                  the trace buffer. If length is too big, a warning message will 
  14911.                  be given, and length will be set to MAXDATALENGTH. If length 
  14912.                  is 0 an error message will be given, and this tracepoint will 
  14913.                  be ignored. 
  14914.  
  14915.  LEN             specifies that this is a variable length record to log and the 
  14916.                  length was specified by the preceding LEN statement. If there 
  14917.                  was no preceding LEN statement, this tracepoint is rejected. 
  14918.                  Either length or LEN must be specified, but not both. 
  14919.  
  14920.  The following is an example of the MEM32 statement: 
  14921.  
  14922.        TRACE MINOR=.....
  14923.              /* To log retcode enter the following: */
  14924.              MEM32=(.retcode,DIRECT,2),
  14925.  
  14926.              /* s_ptr is a pointer to a structure, log it for 4 bytes. */
  14927.              MEM32=(.s_ptr,INDIRECT,4),
  14928.  
  14929.              /* Field 6 bytes into structure pointed at by s_ptr is a     */
  14930.              /*  pointer to a structure, log 8 bytes past begin of struct.*/
  14931.              MEM32=(.s_ptr,INDIRECT*+6*+8,10),  /* logs ten bytes */
  14932.  
  14933.              /* s_ptr points to a variable length record, second field */
  14934.              /*  is the record length (offset 4 from record beginning).*/
  14935.              LEN=(s_ptr,INDIRECT*+4),
  14936.              MEM32=(.s_ptr,INDIRECT,LEN)
  14937.  
  14938.              /* s_end points to the end of same variable length record,*/
  14939.              /*  second field is the record length (offset -6 from     */
  14940.              /*  record beginning).                                    */
  14941.              LEN=(s_end,INDIRECT*-6),
  14942.              MEM32=(.s_ptr,INDIRECT,LEN)
  14943.  
  14944.  
  14945. ΓòÉΓòÉΓòÉ 22.6.5.12. MEM Keyword ΓòÉΓòÉΓòÉ
  14946.  
  14947. This is used to log memory in a function compiled using 16-bit segment:offset 
  14948. addressing and is coded as: 
  14949.  
  14950.         MEM=(address_spec,flag,{length|LEN}),
  14951.  
  14952. where: 
  14953.  
  14954.  address_spec    is a segmented memory address specification as described in 
  14955.                  Address Specification. 
  14956.  
  14957.  flag            is a mandatory parameter that identifies the level of 
  14958.                  indirection to be used on the address. The flag may be one of 
  14959.                  the following: 
  14960.  
  14961.                                   D[IRECT]
  14962.                                   I[NDIRECT][*[{+|-}iiiiiiii]]...
  14963.                                   IF
  14964.  
  14965.                  DIRECT implies that the address specifies a memory location to 
  14966.                  be saved in the trace buffer. 
  14967.  
  14968.                  INDIRECT means that the address contains a segmented address 
  14969.                  and is dereferenced to obtain the memory location. The 
  14970.                  optional asterisks denote the level of indirection, one for 
  14971.                  each level. The indirect offsets iiiiiiii are added to or 
  14972.                  subtracted from the value found at the given level of 
  14973.                  indirection. 
  14974.  
  14975.                  IF (Indirect Flat) means that the address contains a flat 
  14976.                  address that is dereferenced to obtain the memory location. 
  14977.  
  14978.                  Only far pointers may be dereferenced when using segmented 
  14979.                  addressing. 
  14980.  
  14981.  length          is the number of bytes at the memory location to be saved in 
  14982.                  the trace buffer. If length is too big, a warning message will 
  14983.                  be given, and length will be set to MAXDATALENGTH. If length 
  14984.                  is 0 an error message will be given, and this tracepoint will 
  14985.                  be ignored. 
  14986.  
  14987.  LEN             specifies that this is a variable length record to log and the 
  14988.                  length was specified by the preceding LEN statement. If there 
  14989.                  was no preceding LEN statement, this tracepoint is rejected. 
  14990.                  Either length or LEN must be specified, but not both. 
  14991.  
  14992.  
  14993. ΓòÉΓòÉΓòÉ 22.6.5.13. ASCIIZ32 Keyword ΓòÉΓòÉΓòÉ
  14994.  
  14995. This is used to log a string in a function compiled using 32-bit flat 
  14996. addressing and is coded as: 
  14997.  
  14998.         ASCIIZ32=(address_spec,flag,maxlength),
  14999.  
  15000. where: 
  15001.  
  15002.  address_spec    is a 0:32 bit flat memory address specification as described 
  15003.                  in Address Specification. 
  15004.  
  15005.  flag            is a mandatory parameter that identifies the level of 
  15006.                  indirection to be used on the address. The flag may be one of 
  15007.                  the following: 
  15008.  
  15009.                                   D[IRECT]
  15010.                                   I[NDIRECT][*[{+|-}iiiiiiii]]...
  15011.                                   IS
  15012.  
  15013.                  DIRECT implies that the address points to a memory location, 
  15014.                  the contents of which are to be saved in the trace buffer. 
  15015.  
  15016.                  INDIRECT means that the address points to a flat address 
  15017.                  pointer which is dereferenced to obtain the target location to 
  15018.                  save in the trace buffer. The optional asterisks denote the 
  15019.                  level of indirection, one for each level. The indirect offsets 
  15020.                  iiiiiiii are added to or subtracted from the value found at 
  15021.                  the given level of indirection. 
  15022.  
  15023.                  IS (Indirect Segmented) means that the address points to a 
  15024.                  segmented address pointer which is dereferenced to obtain the 
  15025.                  target location to save in the trace buffer. 
  15026.  
  15027.  maxlength       is the maximum length of the string that will be saved in the 
  15028.                  trace buffer. It should be no greater than MAXDATALENGTH. The 
  15029.                  actual length to be traced will depend on where the zero 
  15030.                  terminating byte is found. 
  15031.  
  15032.                  If maxlength is 0 an error message will be given, and this 
  15033.                  tracepoint will be ignored. 
  15034.  
  15035.                  Note:  When using dynamic tracing, the OS/2 kernel does not 
  15036.                  place the terminating null byte into the trace buffer; 
  15037.                  therefore the prefix byte must be used by the Trace Formatter 
  15038.                  to obtain the length of the string. 
  15039.  
  15040.  
  15041. ΓòÉΓòÉΓòÉ 22.6.5.14. ASCIIZ Keyword ΓòÉΓòÉΓòÉ
  15042.  
  15043. This is used to log a string in a function compiled using 16-bit segment:offset 
  15044. addressing and is coded as: 
  15045.  
  15046.         ASCIIZ=(address_spec,flag,maxlength),
  15047.  
  15048. where: 
  15049.  
  15050.  address_spec    is a segmented memory address specification as described in 
  15051.                  Address Specification. 
  15052.  
  15053.  flag            is a mandatory parameter that identifies the level of 
  15054.                  indirection to be used on the address. The flag may be one of 
  15055.                  the following: 
  15056.  
  15057.                                   D[IRECT]
  15058.                                   I[NDIRECT][*[{+|-}iiiiiiii]]...
  15059.                                   IF
  15060.  
  15061.                  DIRECT implies that the address points to a memory location, 
  15062.                  the contents of which are to be saved in the trace buffer. 
  15063.  
  15064.                  INDIRECT means that the address points to a far pointer which 
  15065.                  is a segmented address that is dereferenced to obtain the 
  15066.                  target location to save in the trace buffer. The optional 
  15067.                  asterisks denote the level of indirection, one for each level. 
  15068.                  The indirect offsets iiiiiiii are added to or subtracted from 
  15069.                  the value found at the given level of indirection. 
  15070.  
  15071.                  IF (Indirect Flat) means that the address points to a far 
  15072.                  pointer, which is a flat address that is dereferenced to 
  15073.                  obtain the target location to save in the trace buffer. Only 
  15074.                  far pointers may be dereferenced using segmented addresses. 
  15075.  
  15076.  maxlength       is the maximum length of the string that will be saved in the 
  15077.                  trace buffer. It should be no greater than MAXDATALENGTH. The 
  15078.                  actual length to be traced will depend on where the zero 
  15079.                  terminating byte is found. 
  15080.  
  15081.                  If maxlength is 0 an error message will be given, and this 
  15082.                  tracepoint will be ignored. 
  15083.  
  15084.                  Note:  When using dynamic tracing, the OS/2 kernel does not 
  15085.                  place the terminating null byte into the trace buffer; 
  15086.                  therefore the prefix byte must be used by the Trace Formatter 
  15087.                  to obtain the length of the string. 
  15088.  
  15089.  
  15090. ΓòÉΓòÉΓòÉ 22.6.5.15. Address Specification ΓòÉΓòÉΓòÉ
  15091.  
  15092. The syntax for specifying a memory address given here applies to the MEM32, 
  15093. MEM, ASCIIZ32 and ASCIIZ keywords above. 
  15094.  
  15095. An address is specified in one of the following forms: 
  15096.  
  15097.      Symbolic name form (can be used for MEM32, MEM, ASCIIZ32, and ASCIIZ). 
  15098.      Flat register form (can be used only for MEM32 and ASCIIZ32). 
  15099.      Segment register form (can be used only for MEM and ASCIIZ). 
  15100.  
  15101.  Each of these forms is described below. 
  15102.  
  15103.  
  15104. ΓòÉΓòÉΓòÉ 22.6.5.15.1. Symbolic Name Form ΓòÉΓòÉΓòÉ
  15105.  
  15106. This is coded as: 
  15107.  
  15108.         .name[{+|-}nnnnnnnn]...[{+|-}(iiiiiiii)],
  15109.  
  15110. where: 
  15111.  
  15112.  name        is a symbolic name of a memory location. The "." is required 
  15113.              before the name The debug information in the module is checked for 
  15114.              the name. If the debug information for the name is not found and a 
  15115.              MAP was given, the MAP is checked. An error message is output by 
  15116.              the Trace Customizer if the symbol is not found and the trace 
  15117.              definition is ignored. 
  15118.  
  15119.              The name is case sensitive except under the conditions that 
  15120.              follow: 
  15121.  
  15122.              If the procedure containing name was not compiled with debug 
  15123.              option then if name is a C language symbolic name it will be case 
  15124.              sensitive and begin with an underscore (_) character unless it was 
  15125.              declared with the Pascal naming convention, in which case the 
  15126.              underscore is omitted and name is capitalized. 
  15127.  
  15128.  nnnnnnnn    (optional) is a displacement from the symbolic address. If hex the 
  15129.              syntax is 0xnnnnnnnn. 
  15130.  
  15131.  iiiiiiii    (optional) is a displacement from the indirect address. If hex the 
  15132.              syntax is 0xiiiiiiii. This specifies a displacement from the final 
  15133.              address when using INDIRECT, IF (Indirect Flat) or IS (Indirect 
  15134.              Segmented) addressing. 
  15135.  
  15136.  
  15137. ΓòÉΓòÉΓòÉ 22.6.5.15.2. Flat Register Form ΓòÉΓòÉΓòÉ
  15138.  
  15139. This is coded as: 
  15140.  
  15141.         Fbreg[{+|-}ireg]...[{+|-}nnnnnnnn]...[{+|-}(iiiiiiii)],
  15142.  
  15143. where: 
  15144.  
  15145.  breg        is a flat model (0:32 bit) base register and is one of: 
  15146.  
  15147.              EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI 
  15148.  
  15149.  ireg        (optional) is an extended data, base or index register. More than 
  15150.              one ireg may be used to define a displacement from the flat 
  15151.              register value to the memory location. It may be one of: 
  15152.  
  15153.              EAX, EBX, ECX, EDX, EBP, ESI, EDI 
  15154.  
  15155.  nnnnnnnn    (optional) is an optional fixed displacement to be added to the 
  15156.              address calculated in the registers.  If hex the format is 
  15157.              0xnnnnnnnn. 
  15158.  
  15159.  iiiiiiii    (optional) is a displacement from the indirect address. If hex the 
  15160.              syntax is 0xiiiiiiii. This specifies a displacement from the final 
  15161.              address when using INDIRECT or IS (Indirect Segmented) addressing. 
  15162.  
  15163.  This form of address is calculated at run time. 
  15164.  
  15165.  
  15166. ΓòÉΓòÉΓòÉ 22.6.5.15.3. Segment Register Form ΓòÉΓòÉΓòÉ
  15167.  
  15168. This is coded as: 
  15169.  
  15170.         Rsreg[{+|-}dreg]...[{+|-}nnnnn]...[{+|-}(iiiii)],
  15171.  
  15172. where: 
  15173.  
  15174.  sreg        is a segment register and is one of: 
  15175.  
  15176.              CS, DS, SS, ES, FS, GS 
  15177.  
  15178.  dreg        (optional) is a data, base or index register. More than one dreg 
  15179.              may be used to define a displacement from the segment register 
  15180.              value to the memory location. It is one of: 
  15181.  
  15182.              BP, SP, SI, DI, AX, BX, CX, DX 
  15183.  
  15184.  nnnnn       (optional) is an optional fixed displacement to be added to the 
  15185.              address calculated in the registers.  If hex the syntax is 0xnnnn. 
  15186.  
  15187.  iiiii       (optional) is a displacement from the indirect address. If hex the 
  15188.              syntax is 0xiiii. This specifies a displacement from the final 
  15189.              address when using INDIRECT or IF (Indirect Flat) addressing. 
  15190.  
  15191.  This form of address is calculated at run time. 
  15192.  
  15193.  
  15194. ΓòÉΓòÉΓòÉ 22.7. Formatting Trace Data ΓòÉΓòÉΓòÉ
  15195.  
  15196. This section gives a brief description of the formatting process as an aid to 
  15197. generating correct formatting strings. 
  15198.  
  15199. Each trace record stored in the RAS buffer consists of a header followed by a 
  15200. number of variable length trace data records. The header identifies the major 
  15201. and minor code, time stamp, process ID, etc., and the total length of the trace 
  15202. data for that trace record. 
  15203.  
  15204. Each MEM32, MEM, ASCIIZ32, or ASCIIZ data statement, coded in the trace source 
  15205. file for a tracepoint, produces an associated data record to be stored in the 
  15206. trace buffer. The data records consist of a 3-byte prefix followed by the trace 
  15207. data. This prefix consists of a status byte followed by the length of the data 
  15208. for that statement. The status byte indicates whether valid data has been 
  15209. traced. 
  15210.  
  15211. Dynamic trace can only trace data that is resident in memory at the time that 
  15212. the tracepoint is executed. Data may not be able to be traced for two reasons: 
  15213. it resides in a page that is currently paged out or the address specified is 
  15214. invalid. This latter case usually occurs due to tracing indirectly via invalid 
  15215. pointer variables. In either of these two cases dynamic trace sets the status 
  15216. byte accordingly and stores the pointer in the place of the wanted data. No 
  15217. more data is attempted to be traced for this invocation of the tracepoint, but 
  15218. tracing will resume the next time this tracepoint is encountered. 
  15219.  
  15220. Since the position of these prefix bytes, within a trace record, is dependent 
  15221. on the data being traced and the number of MEM32, MEM, ASCIIZ32, or ASCIIZ 
  15222. statements, the Trace Formatter must be told when to expect the prefix in the 
  15223. trace record. This is the purpose of the %P formatting control. It must be 
  15224. coded in the formatting string at every place a data record is expected. 
  15225.  
  15226. Note:  With ASCIIZ and ASCIIZ32 commands, the prefix must be used to obtain the 
  15227. length of the string since the string is not null terminated. 
  15228.  
  15229.  
  15230. ΓòÉΓòÉΓòÉ 22.8. Sample Trace Source Files ΓòÉΓòÉΓòÉ
  15231.  
  15232. This section gives four sample TSF files. The first is for a module written in 
  15233. a mix of C and MASM and compiled with 16:16 segmented addressing.  The second 
  15234. was compiled with 0:32 flat addressing.  The third module consists of routines, 
  15235. some which were compiled using 16-bit segmented addressing and some that were 
  15236. compiled using 32-bit flat addressing. The fourth is for monitoring function 
  15237. references in a module. 
  15238.  
  15239.  
  15240. ΓòÉΓòÉΓòÉ 22.8.1. TSF Using 16-bit Segmented Addressing ΓòÉΓòÉΓòÉ
  15241.  
  15242. ;  Trace source file for the xxx dynalink.  Compiled with 16-bit offsets.
  15243.  
  15244.      MODNAME=\c\src\xxx.dll
  15245.      MAJOR=0xC5
  15246.      MAXDATALEN=200
  15247. ;  We will want to trace up to 200 bytes in any one trace call.
  15248.  
  15249.      TYPELIST NAME=API,ID=08,
  15250.               NAME=SYS,ID=04,
  15251.               NAME=PRE,ID=02,
  15252.               NAME=POST,ID=64
  15253.  
  15254.      GROUPLIST NAME=MEM,ID=1,
  15255.                NAME=FS,ID=3
  15256.  
  15257.               /* The following tracepoint does not need debug info,
  15258.                  only a MAP file is necessary with label xxalloc
  15259.                  public in it.  The program must be compiled in 16-bit
  15260.                  mode because segmented addressing is used (ASCIIZ
  15261.                  instead of ASCIIZ32).
  15262.                  This logs the word registers AX and BX and the string
  15263.                  pointed at by DS:DI for a max of 20 bytes. */
  15264.  
  15265.      TRACE    MINOR=25, TP=.xxalloc,
  15266.               OPCODE=0x8B,    /* the opcode is optional */
  15267.               TYPE=(API,PRE),
  15268.               GROUP=MEM,
  15269.               DESC="(OS) xxalloc Pre-Invocation",
  15270.               FMT ="                             AX = %W ",
  15271.               FMT ="                             upper BX = %B",
  15272.               FMT ="                             lower BX = %B",
  15273.               FMT ="                             param = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  15274.               REGS=(AX,BX),
  15275.               ASCIIZ=(RDS+DI,DIRECT,20)
  15276.  
  15277.  
  15278.               /* This defines a tracepoint at Foo label.  The ten words
  15279.                  to log are found indirectly through SS:SP.  Note that
  15280.                  each word needs a format control but since only one
  15281.                  memory access was done,  one prefix control is needed. */
  15282.  
  15283.       TRACE   MINOR=0xB0, TP=.Foo,
  15284.               TYPE=(SYS),
  15285.               GROUP=FS,
  15286.               DESC="(OS) Foo Pre-Invocation",
  15287.               FMT="                     First Five words = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69Wtrtrcust.scr, tk.sdb.ToolsReference, id207sW@(#)69   1.4W",
  15288.               FMT="                     Three words ignored %I6",
  15289.               FMT="                     Last Two Words = trtrcust.scr, tk.sdb.ToolsReference, id207sW",
  15290.               MEM=(RSS+SP,INDIRECT,20)
  15291.  
  15292.  
  15293.               /* This defines a tracepoint at Goo label.  DS:DI points
  15294.                  to a structure whose second field is a pointer to an
  15295.                  ASCIIZ string.  The offset from the first field in the
  15296.                  structure is 4 bytes. Max string size to log is 40 bytes. */
  15297.  
  15298.       TRACE   MINOR=0xB1, TP=.Goo,
  15299.               TYPE=(SYS),
  15300.               GROUP=FS,
  15301.               DESC="(OS) Goo Pre-Invocation",
  15302.               FMT="          Second field in struct points to /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  15303.               ASCIIZ=(RDS+DI+4,INDIRECT,40)
  15304.  
  15305.  
  15306.               /* This defines a tracepoint at Hoo label.  DS:DI points to
  15307.                  memory that contains a pointer to a structure. We want to
  15308.                  log the third field in the structure (offset 6 from begin
  15309.                  of structure). */
  15310.  
  15311.       TRACE   MINOR=0xB2, TP=.Hoo,
  15312.               TYPE=(SYS),
  15313.               GROUP=FS,
  15314.               DESC="(OS) Hoo Pre-Invocation",
  15315.               FMT="          Third field in struct is doubleword = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69D",
  15316.               MEM=(RDS+DI,INDIRECT*+6,4)
  15317.  
  15318.  
  15319.               /* This defines a tracepoint at Zoo label.  DS:DI points to
  15320.                  memory that contains a pointer to end of a structure. We
  15321.                  want to log the last field in the structure(offset -2 from
  15322.                  end of structure). */
  15323.  
  15324.       TRACE   MINOR=0xB3, TP=.Zoo,
  15325.               TYPE=(SYS),
  15326.               GROUP=FS,
  15327.               DESC="(OS) Zoo Pre-Invocation",
  15328.               FMT="          Last field in struct is word = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  15329.               MEM=(RDS+DI,INDIRECT*-2,2)
  15330.  
  15331.  
  15332.               /* This defines a tracepoint at procedure CheckIT.  This
  15333.                  is a C routine compiled with debug information.  The
  15334.                  data to log is an ASCIIZ string called NameIt.  */
  15335.  
  15336.       TRACE   MINOR=0xB3, TP=.CheckIt,
  15337.               TYPE=(PRE),
  15338.               GROUP=FS,
  15339.               DESC="(OS) CheckIt Pre-Invocation",
  15340.               FMT="              NameIt = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  15341.               ASCIIZ=(.NameIt,DIRECT,64)
  15342.  
  15343.  
  15344.               /* This defines a tracepoint at the return point of the
  15345.                  procedure CheckIt, a C routine compiled with debug.
  15346.                  Status_Rec is a record variable. We want to log the
  15347.                  age field (four bytes from the begin of Status_Rec),
  15348.                  the name (six bytes from Status_Rec that points to
  15349.                  an ASCIIZ string), the age of the next Status_Rec
  15350.                  (a pointer to the next Status_Rec is ten bytes from
  15351.                  the begin of Status_Rec, the age is four bytes from
  15352.                  the begin of the next Status_Rec). */
  15353.  
  15354.       TRACE   MINOR=0x80B3, TP=.CheckIt,RETEP,
  15355.               TYPE=(POST),
  15356.               GROUP=FS,
  15357.               DESC="(OS) CheckIt Post-Invocation",
  15358.               FMT="              Status_Rec.age = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  15359.               FMT="              Status_Rec.name = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  15360.               FMT="              Status_Rec.next->age = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  15361.               MEM=(.Status_Rec+4,DIRECT,2),
  15362.               ASCIIZ=(.Status_Rec+6,INDIRECT,64),
  15363.               MEM=(.Status_Rec+10,INDIRECT*+4,2)
  15364.  
  15365.  
  15366.               /* This defines a tracepoint at line 58 in the source
  15367.                  file check.c   Debug info is needed to use this
  15368.                  type of tracepoint. v_ptr is a pointer to a variable
  15369.                  sized record.  The length is 4 bytes past the
  15370.                  beginning of the record.  Log that record. */
  15371.  
  15372.       TRACE   MINOR=0x71B4, TP=@check.c,58,
  15373.               TYPE=(SYS),
  15374.               GROUP=FS,
  15375.               DESC="(OS) CheckIt   before allocation",
  15376.               FMT="              Variant Record = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W96/09/03U",
  15377.               LEN=(v_ptr,INDIRECT*+4),
  15378.               MEM=(.v_ptr,INDIRECT,LEN)
  15379.  
  15380.  
  15381.               /* This does not define a tracepoint, it only defines a
  15382.                  trace formatting string for minor code 181 (B5 hex). */
  15383.  
  15384.       TRACE   MINOR=0xB5, TP=@STATIC,
  15385.               DESC="(OS) StaticProcedure Pre-Invocation",
  15386.               FMT="                 DI = %W FLAGS = %W"
  15387.  
  15388.  
  15389.               /* This defines a tracepoint at routine LookUp, but no
  15390.                  data is to be logged, only the DESC will show up
  15391.                  in the Trace log when the tracepoint is formatted. */
  15392.  
  15393.       TRACE   MINOR=0xB6, TP=.LookUp,
  15394.               TYPE=(SYS),
  15395.               GROUP=FS,
  15396.               DESC="(APP) LookUp  Pre-Invocation",
  15397.  
  15398.  
  15399. ΓòÉΓòÉΓòÉ 22.8.2. TSF Using 32-bit Addressing ΓòÉΓòÉΓòÉ
  15400.  
  15401. ;  Trace source file for the NEW dynalink.  Compiled with 32-bit offsets.
  15402.  
  15403.      MODNAME=NEWCALLS.DLL
  15404.      MAJOR=241
  15405.      MAXDATALEN=200
  15406. ;  We will want to trace up to 200 bytes in any one trace call.
  15407.  
  15408.      TYPELIST NAME=API,ID=08,
  15409.               NAME=SYS,ID=04,
  15410.               NAME=PRE,ID=02,
  15411.               NAME=POST,ID=64
  15412.  
  15413.      GROUPLIST NAME=MEM,ID=1,
  15414.                NAME=FS,ID=3
  15415.  
  15416.               /* The following tracepoint does not need debug info,
  15417.                  only a MAP file is necessary with label NewAllocSeg
  15418.                  public in it.  The program must be compiled in 32-bit
  15419.                  mode because flat addressing is used (ASCIIZ32 instead
  15420.                  of ASCIIZ).
  15421.                  This logs lower word of EAX, the double word of EBX
  15422.                  and the string at the address specified by ESP with
  15423.                  offset ESI. */
  15424.  
  15425.      TRACE    MINOR=45, TP=.NewAllocSeg,
  15426.               TYPE=(API,PRE),
  15427.               GROUP=MEM,
  15428.               DESC="(NEW) NewAllocSeg Pre-Invocation",
  15429.               FMT ="                             AX = %W ",
  15430.               FMT ="                             EBX = %F",
  15431.               FMT ="                             param = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  15432.               REGS=(AX,EBX),
  15433.               ASCIIZ32=(FESP+ESI,DIRECT,20)
  15434.  
  15435.               /* This defines a tracepoint at Foo label.  The ten words
  15436.                  to log are found indirectly by using EBP with offset
  15437.                  EDI. Note that each value logged needs a format control. */
  15438.  
  15439.       TRACE   MINOR=0xD0, TP=.Foo,
  15440.               TYPE=(SYS),
  15441.               GROUP=FS,
  15442.               DESC="(NEW) Foo Pre-Invocation",
  15443.               FMT="                     First Five words = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69Wtrtrcust.scr, tk.sdb.ToolsReference, id207sW@(#)69   1.4W",
  15444.               FMT="                     Three words ignored %I6",
  15445.               FMT="                     Last Two Words = trtrcust.scr, tk.sdb.ToolsReference, id207sW",
  15446.               MEM32=(FEBP+EDI,INDIRECT,20)
  15447.  
  15448.  
  15449.               /* This defines a tracepoint at Goo label. EAX + EDI points
  15450.                  to a structure whose second field is a pointer to an
  15451.                  ASCIIZ string.  The offset from the first field in the
  15452.                  structure is 4 bytes. Max string size to log is 40 bytes.*/
  15453.  
  15454.       TRACE   MINOR=0xD1, TP=.Goo,
  15455.               TYPE=(SYS),
  15456.               GROUP=FS,
  15457.               DESC="(NEW) Goo Pre-Invocation",
  15458.               FMT="           Second field in struct points to /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  15459.               ASCIIZ32=(FEAX+EDI+4,INDIRECT,40)
  15460.  
  15461.  
  15462.               /* This defines a tracepoint at Hoo label.  EBP + EDI points
  15463.                  to memory that contains a pointer to a structure. We want
  15464.                  to log the third field in the structure (offset 6 from
  15465.                  begin of structure). */
  15466.  
  15467.       TRACE   MINOR=0xD2, TP=.Hoo,
  15468.               TYPE=(SYS),
  15469.               GROUP=FS,
  15470.               DESC="(NEW) Hoo Pre-Invocation",
  15471.               FMT="           Third field in struct is doubleword = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69D",
  15472.               MEM32=(FEBP+EDI,INDIRECT*+6,4)
  15473.  
  15474.  
  15475.               /* This defines a tracepoint at Zoo label.  EAX + EDI points
  15476.                  to memory that contains a pointer to end of a structure. We
  15477.                  want to log the last field in the structure (offset -2 from
  15478.                  end of structure). */
  15479.  
  15480.       TRACE   MINOR=0xD3, TP=.Zoo,
  15481.               TYPE=(SYS),
  15482.               GROUP=FS,
  15483.               DESC="(OS) Zoo Pre-Invocation",
  15484.               FMT="          Last field in struct is word = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  15485.               MEM=(FEAX+EDI,INDIRECT*-2,2)
  15486.  
  15487.  
  15488.               /* This defines a tracepoint at procedure CheckIT.  This is
  15489.                  a C routine compiled with debug information.  The
  15490.                  data to log is an ASCIIZ string called NameIt. */
  15491.  
  15492.       TRACE   MINOR=0xD3, TP=.CheckIt,
  15493.               TYPE=(PRE),
  15494.               GROUP=FS,
  15495.               DESC="(NEW) CheckIt Pre-Invocation",
  15496.               FMT="              NameIt = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  15497.               ASCIIZ32=(.NameIt,DIRECT,64)
  15498.  
  15499.  
  15500.               /* This defines a tracepoint at the return point of the
  15501.                  procedure CheckIt, a C routine compiled with debug.
  15502.                  Status_Rec is a record variable. We want to log the
  15503.                  age field (four bytes from the begin of Status_Rec)
  15504.                  the name (six bytes from Status_Rec that points to
  15505.                  an ASCIIZ string) and the age of the next Status_Rec
  15506.                  (a pointer to the next Status_Rec is ten bytes from
  15507.                  the begin of Status_Rec, the age is four bytes from
  15508.                  the begin of the next Status_Rec). */
  15509.  
  15510.       TRACE   MINOR=0x80D3, TP=.CheckIt,RETEP,
  15511.               TYPE=(POST),
  15512.               GROUP=FS,
  15513.               DESC="(NEW) CheckIt Post-Invocation",
  15514.               FMT="              Status_Rec.age = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  15515.               FMT="              Status_Rec.name = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69S",
  15516.               FMT="              Status_Rec.next->age = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  15517.               MEM32=(.Status_Rec+4,DIRECT,2),
  15518.               ASCIIZ32=(.Status_Rec+6,INDIRECT,64),
  15519.               MEM32=(.Status_Rec+10,INDIRECT*+4,2)
  15520.  
  15521.  
  15522.               /* This does not define a tracepoint, it only defines a
  15523.                  trace formatting string for minor code 223 (DF hex). */
  15524.  
  15525.       TRACE   MINOR=0xDF, TP=@STATIC,
  15526.               DESC="(NEW) StaticProcedure Pre-Invocation",
  15527.               FMT="                 DI = %W FLAGS = %W"
  15528.  
  15529.  
  15530.               /* This defines a tracepoint at routine LookUp, but no
  15531.                  data is to be logged, only the DESC will show up
  15532.                  in the Trace log when the tracepoint is formatted.
  15533.                  LookUp is a C language routine not compiled with
  15534.                  debug and not declared with Pascal
  15535.                  calling conventions; the underscore is needed for
  15536.                  this label. */
  15537.  
  15538.       TRACE   MINOR=0xE0, TP=._LookUp,
  15539.               TYPE=(SYS),
  15540.               GROUP=FS,
  15541.               DESC="(NEW) LookUp  Pre-Invocation"
  15542.  
  15543.  
  15544. ΓòÉΓòÉΓòÉ 22.8.3. TSF Using Mix of 16-bit and 32-bit Addressing ΓòÉΓòÉΓòÉ
  15545.  
  15546. ;  Trace source file for the MIXED dynalink.
  15547. ;    Parts were compiled with 16-bit compiler, some with 32-bit compiler.
  15548. ;    The developer must know how the parameters being sent in are
  15549. ;    to be addressed, whether they are segmented or flat addresses.
  15550.  
  15551.      MODNAME=MIXCALLS.DLL
  15552.      MAJOR=250
  15553.      MAXDATALEN=200
  15554. ;  We will want to trace up to 200 bytes in any one trace call.
  15555.  
  15556.      TYPELIST NAME=API,ID=08,
  15557.               NAME=SYS,ID=04,
  15558.               NAME=PRE,ID=02,
  15559.               NAME=POST,ID=64
  15560.  
  15561.      GROUPLIST NAME=MEM,ID=1,
  15562.                NAME=FS,ID=3
  15563.  
  15564.               /* The following tracepoint is for the routine MixStub.
  15565.                  This was compiled using segmented addressing and
  15566.                  one of the parameters to it is a pointer to a control
  15567.                  block called mix_ctrl.  This pointer, found at SS:SP,
  15568.                  is a flat address because the routine that sent it was
  15569.                  compiled with the flat addressing specification.
  15570.                  This logs the mix_ctrl block for 6 bytes. */
  15571.  
  15572.      TRACE    MINOR=95, TP=.MixStub,
  15573.               TYPE=(API,PRE),
  15574.               GROUP=MEM,
  15575.               DESC="(OS) MixStub     Pre-Invocation",
  15576.               FMT ="                             mix_ctrl = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W %W %W",
  15577.               MEM=(RSS+SP,IF,6)    /* is an indirect flat address */
  15578.  
  15579.  
  15580.               /* The following is for the routine FlatStub.  This was
  15581.                  compiled using 32-bit flat addresses.  A parameter to
  15582.                  flatstub is a pointer called p_seg_info.  This
  15583.                  pointer is a segmented address because the routine
  15584.                  calling flatstub was compiled using 16-bit segmented
  15585.                  addressing.  Log where p_seg_info points for 2 bytes. */
  15586.  
  15587.       TRACE   MINOR=0xf0, TP=.FlatStub,
  15588.               TYPE=(SYS),
  15589.               GROUP=FS,
  15590.               DESC="(OS) FlatStub Pre-Invocation",
  15591.               FMT="                     seg_info = /usr/cmvc/family/pubdoc/vc/0/1/2/2/s.69W",
  15592.               MEM32=(.p_seg_info,IS,2)   /* value p_seg_info is a 16-bit */
  15593.                                          /*  segmented address           */
  15594.  
  15595.  
  15596. ΓòÉΓòÉΓòÉ 22.9. Trace Customizer Messages ΓòÉΓòÉΓòÉ
  15597.  
  15598. The messages generated by the Trace Customizer are given below. In addition to 
  15599. the message itself, the source line in error is displayed. 
  15600.  
  15601. Errors in the FATAL and SEVERE category will cause the compiler to abort 
  15602. immediately. 
  15603.  
  15604. ERROR messages will normally cause a tracepoint definition to be discarded and 
  15605. processing continues with the next definition. 
  15606.  
  15607. WARNING messages will allow a valid tracepoint definition to be produced, and 
  15608. the results will normally be as expected. 
  15609.  
  15610.  
  15611. ΓòÉΓòÉΓòÉ 22.9.1. External Messages ΓòÉΓòÉΓòÉ
  15612.  
  15613.  Msg No.   Message Text 
  15614.  
  15615.  TCU0001I: TRCUST Version %1 
  15616.  
  15617.  TCU0002I: created TDF file %1 
  15618.  
  15619.  TCU0004I: error detected, TRCUST aborted 
  15620.  
  15621.  TCU0005E: unrecognized executable header in %1 
  15622.  
  15623.  TCU0006E: invalid command line parameter %1 
  15624.  
  15625.  TCU0007E: unable to access %1 
  15626.  
  15627.  TCU0008E: unable to open %1 
  15628.  
  15629.  TCU0009E: unable to read from %1 
  15630.  
  15631.  TCU0010E: unable to write to %1 
  15632.  
  15633.  TCU0011E: unable to find %1 or access denied 
  15634.  
  15635.  TCU0012E: out of memory 
  15636.  
  15637.  TCU0013E: symbolic information not given for %1 
  15638.  
  15639.  TCU0014E: invalid quoted string encountered in %1 
  15640.  
  15641.  TCU0015E: too many tracepoints in %1 
  15642.  
  15643.  TCU0016E: unexpected end-of-file encountered in %1 
  15644.  
  15645.  TCU0017I: error detected, tracepoint ignored 
  15646.  
  15647.  TCU0018W: %1 (%2): invalid object number %3 in executable file 
  15648.  
  15649.  TCU0019W: %1 (%2): invalid offset for object number %3 in executable file 
  15650.  
  15651.  TCU0020W: %1 (%2): invalid page for tracepoint application 
  15652.  
  15653.  TCU0021W: %1 (%2): unable to find %3 in CodeView information 
  15654.  
  15655.  TCU0022W: %1 (%2): invalid line number in %3 
  15656.  
  15657.  TCU0023W: %1 (%2): invalid opcode for tracing 
  15658.  
  15659.  TCU0024W: %1 (%2): unable to find %3 symbol 
  15660.  
  15661.  TCU0025W: %1: duplicate %3 in tracepoint starting at line %2 
  15662.  
  15663.  TCU0026W: %1 (%2): index too large, high word ignored 
  15664.  
  15665.  TCU0027W: %1 (%2): invalid %3 syntax 
  15666.  
  15667.  TCU0028W: %1 (%2): %3 not specified 
  15668.  
  15669.  TCU0029W: %1 (%2): %3 redefinition 
  15670.  
  15671.  TCU0030W: %1 (%2): unable to find line number, %3 used 
  15672.  
  15673.  TCU0031W: %1 (%2): CodeView information does not exist for %3 
  15674.  
  15675.  TCU0032W: %1 (%2): tracing opcode defined after %3 
  15676.  
  15677.  TCU0033W: %1 (%2): %3 out of range, default assumed 
  15678.  
  15679.  TCU0034W: %1 (%2): syntax error, %3 unrecognized 
  15680.  
  15681.  TCU0035W: %1 (%2): RPN command record exceeds maximum limit 
  15682.  
  15683.  
  15684. ΓòÉΓòÉΓòÉ 22.9.2. Internal Messages ΓòÉΓòÉΓòÉ
  15685.  
  15686. Internal format messages produced by TRCUST are of the form: 
  15687.  
  15688.         TRCUST(n) severity: message_text
  15689.  
  15690. where: 
  15691.  
  15692.  n             is the line number of the tsf in error or (1) if the command 
  15693.                syntax is in error. 
  15694.  
  15695.  severity      is the message severity and may take one of the following 
  15696.                values: 
  15697.  
  15698.                    Fatal Messages 
  15699.  
  15700.                    Severe Messages 
  15701.  
  15702.                    Error Messages 
  15703.  
  15704.                    Warning Messages 
  15705.  
  15706.  message_text  is the text of the message. 
  15707.  
  15708.  
  15709. ΓòÉΓòÉΓòÉ 22.9.2.1. Fatal Messages ΓòÉΓòÉΓòÉ
  15710.  
  15711.  Msg No.   Message Text 
  15712.  
  15713.   1        TSF file not specified 
  15714.  
  15715.   2        file not found or access denied : %s 
  15716.  
  15717.   3        cannot open file : %s 
  15718.  
  15719.   4        error accessing file : %s 
  15720.  
  15721.   5        error writing to file : %s 
  15722.  
  15723.   6        unable to allocate more memory 
  15724.  
  15725.   7        too many tracepoints in file 
  15726.  
  15727.   8        error reading file: %s, Rc = %s 
  15728.  
  15729.   9        changing file pointer for: %s, Rc = %s 
  15730.  
  15731.  10        unknown EXE header type for: %s 
  15732.  
  15733.  11        invalid path specified in combine file 
  15734.  
  15735.  12        max TFF files to combine is 50 
  15736.  
  15737.  13        all TFFs not have same major code, file: %s 
  15738.  
  15739.  14        invalid MAP file extension given in: %s 
  15740.  
  15741.  15        TCF file not specified 
  15742.  
  15743.  16        filename to long: %s 
  15744.  
  15745.  17        token in TSF file exceeds %s bytes 
  15746.  
  15747.  
  15748. ΓòÉΓòÉΓòÉ 22.9.2.2. Severe Messages ΓòÉΓòÉΓòÉ
  15749.  
  15750.  Msg No.   Message Text 
  15751.  
  15752.  33        module name not specified 
  15753.  
  15754.  34        premature end of file encountered 
  15755.  
  15756.  35        syntax error : missing '%s' before '%s' 
  15757.  
  15758.  36        new line in literal 
  15759.  
  15760.  37        NULL in literal 
  15761.  
  15762.  38        keyword '%s' expected, '%s' found 
  15763.  
  15764.  39        symbolic info not given for %s 
  15765.  
  15766.  40        MAJOR redefinition 
  15767.  
  15768.  41        TDFID redefinition 
  15769.  
  15770.  42        MAXDATALENGTH redefinition 
  15771.  
  15772.  43        line too long in input file: %s 
  15773.  
  15774.  
  15775. ΓòÉΓòÉΓòÉ 22.9.2.3. Error Messages ΓòÉΓòÉΓòÉ
  15776.  
  15777.  Msg No.   Message Text 
  15778.  
  15779.  65        number expected, '%s' found 
  15780.  
  15781.  66        unexpected: %s, ignored 
  15782.  
  15783.  67        minor code not specified 
  15784.  
  15785.  68        minor code out of range 
  15786.  
  15787.  69        TYPELIST redefinition, ignored 
  15788.  
  15789.  70        GROUPLIST redefinition, ignored 
  15790.  
  15791.  71        TP redefinition, tracepoint ignored 
  15792.  
  15793.  72        MINOR redefinition, tracepoint ignored 
  15794.  
  15795.  73        OPCODE redefinition, tracepoint ignored 
  15796.  
  15797.  74        syntax error: missing '%s' before '%s' 
  15798.  
  15799.  75        opcode: %s out of range 
  15800.  
  15801.  76        opcode at TP address cannot be traced 
  15802.  
  15803.  77        opcode mismatch at address to apply TP 
  15804.  
  15805.  78        register expected, '%s' found 
  15806.  
  15807.  79        symbol not found: %s 
  15808.  
  15809.  80        address not found 
  15810.  
  15811.  81        segment register expected, '%s' found 
  15812.  
  15813.  82        trace record incomplete, '%s' required 
  15814.  
  15815.  83        RPN command record exceeds 255 bytes 
  15816.  
  15817.  84        invalid parameter: '%s', ignored 
  15818.  
  15819.  85        invalid ID: %s, ignored 
  15820.  
  15821.  86        group/type redefinition: %s, ignored 
  15822.  
  15823.  87        typeid redefinition: %s, ignored 
  15824.  
  15825.  88        groupid redefinition: %s, ignored 
  15826.  
  15827.  89        invalid address specified: %s 
  15828.  
  15829.  90        line number past end of code for file %s 
  15830.  
  15831.  91        Debug info does not exist for: %s 
  15832.  
  15833.  92        line number missing or invalid: %s 
  15834.  
  15835.  93        filename %s not found in Debug info 
  15836.  
  15837.  94        duplicate minor code = %s, ignored 
  15838.  
  15839.  95        duplicate minor code = %s in file %s, ignored 
  15840.  
  15841.  96        variable LEN parameter not preceding 
  15842.  
  15843.  97        RPN stack limit of 16 exceeded 
  15844.  
  15845.  98        invalid flat register specified: %s 
  15846.  
  15847.  99        total FMT format specs above 4096 bytes 
  15848.  
  15849.  100       zero length specified, tracepoint ignored 
  15850.  
  15851.  101       ORBIT redefinition, tracepoint ignored 
  15852.  
  15853.  102       invalid ORBIT value, tracepoint ignored 
  15854.  
  15855.  103       opcode defined after ABORT 
  15856.  
  15857.  104       opcode defined after REMOVE 
  15858.  
  15859.  105       duplicate TP address, ignored 
  15860.  
  15861.  106       /D not allowed with /C, ignored 
  15862.  
  15863.  
  15864. ΓòÉΓòÉΓòÉ 22.9.2.4. Warning Messages ΓòÉΓòÉΓòÉ
  15865.  
  15866.  Msg No.   Message Text 
  15867.  
  15868.  129       MAXDATALENGTH out of range, 512 used 
  15869.  
  15870.  130       typename unknown: %s, ignored 
  15871.  
  15872.  131       groupname unknown: %s, ignored 
  15873.  
  15874.  132       file: %s, extension invalid, using: %s 
  15875.  
  15876.  133       '%s' expected before '%s', one assumed 
  15877.  
  15878.  134       too many %s, first 16 types, 48 groups used 
  15879.  
  15880.  135       name too long: %s, first 8 characters used 
  15881.  
  15882.  136       linenum in file: %s not found, using #%s 
  15883.  
  15884.  137       bad object number: %s used for file %s 
  15885.  
  15886.  138       offset %s is invalid for object number %s 
  15887.  
  15888.  139       page tracepoint to be applied at not valid 
  15889.  
  15890.  140       MAXDATALENGTH to log could be exceeded 
  15891.  
  15892.  141       MAJOR out of range, 1 used 
  15893.  
  15894.  142       TDFID out of range, 0 used 
  15895.  
  15896.  143       index too large, high word ignored 
  15897.  
  15898.  
  15899. ΓòÉΓòÉΓòÉ 23. Workplace Class List ΓòÉΓòÉΓòÉ
  15900.  
  15901. The Workplace Class List is a tool that creates a workplace object class and an 
  15902. instance of a workplace object class. Workplace objects are constructed using 
  15903. the System Object Model (SOM) protocol and are instances of one of the 
  15904. following workplace object classes: 
  15905.  
  15906.  Predefined   These classes are defined by the system. Examples of predefined 
  15907.               workplace object classes are WPObject, WPFileSys, and WPAbstract. 
  15908.  
  15909.  Subclass     These classes are derived from existing predefined workplace 
  15910.               object classes. They add, remove, or change functions, but they 
  15911.               retain the basic behaviors and capabilities of the parent class. 
  15912.  
  15913.  Replaced     These classes replace the class being subclassed. They modify the 
  15914.               behavior of an instance of a predefined workplace object class 
  15915.               without the instance being aware of the new class. 
  15916.  
  15917.  
  15918. ΓòÉΓòÉΓòÉ 23.1. Starting Workplace Class List ΓòÉΓòÉΓòÉ
  15919.  
  15920. To start Workplace Class List, select the PM Development Tools folder, and then 
  15921. select Workplace Class List. A window appears.  The window contains a list of 
  15922. the workplace object classes currently registered in the OS/2 Workplace Shell. 
  15923. Using the window, you can: 
  15924.  
  15925.      Create an instance of a workplace object class 
  15926.      Replace a workplace object class 
  15927.      Restore a replaced workplace object class 
  15928.      Add a workplace object class 
  15929.      Delete a workplace object class 
  15930.  
  15931.  
  15932. ΓòÉΓòÉΓòÉ 23.1.1. Creating an Object-Class Instance ΓòÉΓòÉΓòÉ
  15933.  
  15934. To create an instance of a workplace object class: 
  15935.  
  15936.    1. Select the class from the list in the Workplace Object Class window. 
  15937.    2. Display the pop-up menu by clicking mouse button 2. 
  15938.    3. Select the Create Instance choice. 
  15939.  
  15940.       Note:  Only an instance of a physical workplace object class can be 
  15941.              created. In other words, you cannot create instances of WPObject 
  15942.              or WPClass because they are not physical classes. 
  15943.    4. Complete the following input fields: 
  15944.  
  15945.  Object Title          The text string you assign to the object. The text 
  15946.                        string becomes the object title and appears under the 
  15947.                        object when the object is displayed on the Workplace 
  15948.                        Shell. When the object is in an opened state, the text 
  15949.                        string appears in the title bar of the window. 
  15950.  Class of new object   The name of the class of which the object you selected 
  15951.                        is a member. 
  15952.  Parameters            A series of keyname=value pairs (separated by 
  15953.                        semicolons) that change the behavior of the object. Each 
  15954.                        object class defines the key names and parameters it 
  15955.                        expects to see. All parameters have safe defaults, so it 
  15956.                        is never required that parameters be passed to an 
  15957.                        object. 
  15958.  Location              A real name specified by a fully qualified file 
  15959.                        specification, such as C:\OS2\DLL\MINXOBJ.DLL, or a 
  15960.                        logical name specified by a predefined symbol. 
  15961.  
  15962.  Examples of logical names include the following: 
  15963.  
  15964.  LOCATION_NOWHERE                Hidden folder 
  15965.  LOCATION_DESKTOP                OS/2 Desktop (Workplace) 
  15966.  LOCATION_SYSTEM                 OS/2 System folder 
  15967.  LOCATION_TEMPLATES              Template folder 
  15968.  LOCATION_SYSTEMSETUP            System setup folder 
  15969.  LOCATION_STARTUP                Startup folder 
  15970.  LOCATION_INFORMATION            Information folder 
  15971.  LOCATION_DRIVES                 Drives folder 
  15972.  
  15973.  
  15974. ΓòÉΓòÉΓòÉ 23.1.2. Replacing a Workplace Object Class ΓòÉΓòÉΓòÉ
  15975.  
  15976. To replace an existing registered class: 
  15977.  
  15978.    1. Select the class from the list in the Workplace Object Class window. 
  15979.    2. Display the pop-up menu by clicking mouse button 2. 
  15980.    3. Select the Replace choice. Note that only classes that have already been 
  15981.       registered are valid. 
  15982.    4. Complete the following input fields:  Original class and Replacement 
  15983.       class. 
  15984.  
  15985.  Note:  The replacement class must be a descendant of the original class. 
  15986.         Replacing an object class is useful for modifying the behavior of 
  15987.         objects that are instances of the original class but are not aware of 
  15988.         the replacement class. 
  15989.  
  15990.  Original class        The name of the object class being replaced in the 
  15991.                        Workplace. 
  15992.  Replacement class     The name of the object class replacing the original 
  15993.                        class. 
  15994.  
  15995.  
  15996. ΓòÉΓòÉΓòÉ 23.1.3. Restoring a Replaced Workplace Object Class ΓòÉΓòÉΓòÉ
  15997.  
  15998. To return a replaced class to its original class: 
  15999.  
  16000.    1. Select the replaced class from the list in the Workplace Object Class 
  16001.       window. 
  16002.    2. Display the pop-up menu by clicking mouse button 2. 
  16003.    3. Select the Unreplace choice. Note that only classes that have already 
  16004.       been replaced are valid. 
  16005.    4. Complete the following input fields: 
  16006.  
  16007.  Original class        The name of the replaced object class being returned to 
  16008.                        its original object class in the Workplace. 
  16009.  Replacement class     The name of the replaced object class being returned to 
  16010.                        its original object class. 
  16011.  
  16012.  
  16013. ΓòÉΓòÉΓòÉ 23.1.4. Adding a Workplace Object Class ΓòÉΓòÉΓòÉ
  16014.  
  16015. To add a class to the Workplace Shell: 
  16016.  
  16017.    1. Display the pop-up menu by clicking mouse button 2. 
  16018.    2. Select the Add Class choice. 
  16019.    3. Complete the following input fields: 
  16020.  
  16021.  New class name      The name of object class you want to add to the Workplace. 
  16022.                      Type the class name exactly as it is built; it is 
  16023.                      case-sensitive. 
  16024.  Library module      The name of the dynamic link library (DLL) that holds the 
  16025.                      object definition. Type the library name with complete 
  16026.                      file specification information. 
  16027.  
  16028.                      Note:  The DLL must be created by the IBM System Object 
  16029.                             Model. 
  16030.  
  16031.  
  16032. ΓòÉΓòÉΓòÉ 23.1.5. Deleting an Object Class ΓòÉΓòÉΓòÉ
  16033.  
  16034. To delete a class from the Workplace Shell: 
  16035.  
  16036.    1. Select the class you want to delete from the list in the Workplace Object 
  16037.       Class window. 
  16038.    2. Display the pop-up menu by clicking mouse button 2. 
  16039.    3. Select the Delete a Class choice. 
  16040.    4. Complete the name of the class you want to delete from the Workplace. 
  16041.  
  16042.  Note:  You cannot delete classes that are predefined by the operating system, 
  16043.         such as WPObject or WPClass. 
  16044.  
  16045.  
  16046. ΓòÉΓòÉΓòÉ 24. Error Messages ΓòÉΓòÉΓòÉ
  16047.  
  16048.  
  16049. ΓòÉΓòÉΓòÉ 24.1. LINK386 Error Messages ΓòÉΓòÉΓòÉ
  16050.  
  16051. Format of Error Messages 
  16052.  
  16053. There are three types of LINK386 error messages: 
  16054.  
  16055.      Fatal errors cause LINK386 to stop running. They have the following 
  16056.       format: location : fatal error L1xxx : message text 
  16057.  
  16058.      Nonfatal errors indicate problems in the executable file. LINK386 
  16059.       produces the executable file and sets the error bit in the header for the 
  16060.       OS/2 environment. This means that the executable file cannot be run from 
  16061.       OS/2. Nonfatal error messages have the following format: 
  16062.  
  16063.            location : error L2xxx : message text 
  16064.  
  16065.      Warnings indicate possible problems in the executable file. LINK386 
  16066.       produces the executable file, but does not set the error bit in the 
  16067.       header for the OS/2 environment. Warnings have the following format: 
  16068.  
  16069.            location : warning L4xxx : message text 
  16070.  
  16071.  In all these messages, location is the input file associated with the error, 
  16072.  or it is LINK386 itself if there is no input file. The message text is the 
  16073.  actual text message that LINK386 generates. When the input file is a module 
  16074.  definition file, the line number is included, as in this example: 
  16075.  
  16076.   myfile.def(3): fatal error L1030: missing internal name
  16077.  
  16078.  When the input file is an object file or library file and has a module name, 
  16079.  the module name is enclosed in parentheses, as in the following examples: 
  16080.  
  16081.   SLIBCE.LIB(_file)
  16082.   MAIN.OBJ(main.c)
  16083.   TEXT.OBJ
  16084.  
  16085.  Error Message Descriptions 
  16086.  
  16087.       Fatal Error Messages (part 1) 1001 - 1049 
  16088.       Fatal Error Messages (part 2) 1050 - 1098 
  16089.       Fatal Error Messages (part 3) 1100 - 1130 
  16090.       Nonfatal Error Messages 2000 - 2063 
  16091.       Warning Error Messages 4000 - 4094 
  16092.  
  16093.  
  16094. ΓòÉΓòÉΓòÉ 24.1.1. Fatal Error Messages (Part 1) 1001 - 1049 ΓòÉΓòÉΓòÉ
  16095.  
  16096.  L1001     option : option name ambiguous 
  16097.            Explanation: A unique option name does not appear after the option 
  16098.            indicator (/). 
  16099.            Example: The command 
  16100.  
  16101.                           LINK386 /N main;
  16102.            produces this error because LINK386 cannot tell which of the seven 
  16103.            options beginning with the letter N is intended. 
  16104.            Action: Retry using the correct minimum option abbreviation. 
  16105.  
  16106.  L1004     option : invalid numeric value 
  16107.            Explanation: An incorrect value appeared for one of the LINK386 
  16108.            options. This might be because a character string has been entered 
  16109.            for an option that requires a numeric value or because the proper 
  16110.            numeric prefix (for example, 0x for hexadecimal) was not used for a 
  16111.            numeric value. 
  16112.            Action: Retry with a numeric value. 
  16113.  
  16114.  L1006     option : stack size exceeds 65,535 bytes 
  16115.            Explanation: The size you specified for the stack in the /STACK 
  16116.            option of the link command is more than 65,535 bytes. 
  16117.            Action: Retry with a stack size of less than or equal to 65,535 
  16118.            bytes. 
  16119.  
  16120.  L1008     option : segment limit set too high 
  16121.            Explanation: The specified limit on the /SEGMENTS option is greater 
  16122.            than 16 375. 
  16123.            Action: Retry with a limit in the range 1 to 16 375. 
  16124.  
  16125.  L1020     no object modules specified 
  16126.            Explanation: You did not specify any object file names to the 
  16127.            linker. 
  16128.            Action: Restart LINK386, including at least one object file name. 
  16129.  
  16130.  L1021     cannot nest response files 
  16131.            Explanation: A response file has been named within another response 
  16132.            file. You have used @filename within the response file. The @ symbol 
  16133.            is reserved by LINK386 to signify a response file name. 
  16134.            Action: Edit the response file to remove the nested response file. 
  16135.  
  16136.  L1022     response line too long 
  16137.            Explanation: A line in an automatic response file is longer than 256 
  16138.            characters. 
  16139.            Action: Edit the line to make it shorter than 256 characters. 
  16140.            Response files can contain more than one line. 
  16141.  
  16142.  L1023     terminated by user 
  16143.            Explanation: You pressed Ctrl+C or Ctrl+Break. 
  16144.            Action: Your action has terminated LINK386. Restart if necessary. 
  16145.  
  16146.  L1030     missing internal name 
  16147.            Explanation: You have not specified an internal name for an import 
  16148.            in the module definition file. 
  16149.            Action: Edit the module definition file, giving an internal name so 
  16150.            that LINK386 can identify references to the import. 
  16151.  
  16152.  L1031     module description redefined 
  16153.            Explanation: You have used the DESCRIPTION keyword for a module in 
  16154.            the module definition file more than once. 
  16155.            Action: Edit the module definition file, deleting the extra 
  16156.            descriptions. 
  16157.  
  16158.  L1032     module name redefined 
  16159.            Explanation: You have defined a module name more than once with the 
  16160.            NAME or LIBRARY keyword in the module definition file. 
  16161.            Action: Edit the module definition file, checking the module name 
  16162.            definitions. 
  16163.  
  16164.  L1033     input line too long; number characters allowed 
  16165.            Explanation: The input line contains more than number characters. 
  16166.            Action: Retry the command with fewer characters on the input line. 
  16167.  
  16168.  L1040     too many exported entries 
  16169.            Explanation: You have tried to export more than 65535 names. 
  16170.            Action: Retry with fewer names, creating an additional executable 
  16171.            module if necessary. 
  16172.  
  16173.  L1041     resident-name table overflow 
  16174.            Explanation: The total length of all your resident-names, together 
  16175.            with an overhead of 3 bytes for each name, is greater than the 
  16176.            LINK386 limit. The internal LINK386 limit is  65,534 for LINK386 
  16177.            versions prior to 2.01.012 and is 1,048,576 for LINK386 version 
  16178.            2.01.012 and later versions. 
  16179.            Action: Reduce the number or the length of your resident names. 
  16180.  
  16181.  L1042     nonresident-name table overflow 
  16182.            Explanation: The total length of all your nonresident-names, 
  16183.            together with an overhead of 3 bytes for each name, is greater than 
  16184.            65,534 for versions prior to 2.01.012 and is 1,048,576 for LINK386 
  16185.            version 2.01.012 and later versions. 
  16186.            Action: Reduce the number or the length of your nonresident-names. 
  16187.  
  16188.  L1043     relocation table overflow 
  16189.            Explanation: There are more than 65,535 load-time relocations for a 
  16190.            single segment. 
  16191.            Action: Reduce the number of relocations in the source files and 
  16192.            recompile or reassemble them. Interframe references generate 
  16193.            load-time relocations. 
  16194.  
  16195.  L1044     imported-name table overflow 
  16196.            Explanation: The total length of all your imported-names, together 
  16197.            with an overhead of 1 byte for each name, is greater than 65,535 
  16198.            bytes. 
  16199.            Action: Reduce the number or the length of your imported-names. 
  16200.  
  16201.  L1045     too many TYPDEF records 
  16202.            Explanation: An object module contains more than 255 TYPDEF records. 
  16203.            These records describe communal variables. This error can only 
  16204.            appear with programs produced by compilers that support communal 
  16205.            variables. 
  16206.            Action: Reduce the number of TYPDEF records, breaking the module 
  16207.            into smaller parts, if necessary. 
  16208.  
  16209.  L1046     too many external symbols in one module 
  16210.            Explanation: An object module specifies more than the limit of 1023 
  16211.            external symbols. 
  16212.            Action: Reduce the number of external symbols, breaking the module 
  16213.            into smaller parts, if necessary. 
  16214.  
  16215.  L1047     too many group, segment, and class names in one module 
  16216.            Explanation: The program module contains too many group, segment, 
  16217.            and class names. 
  16218.            Action: Reduce the number of groups, segments, or classes, and 
  16219.            re-create the object files. 
  16220.  
  16221.  L1048     too many segments in one module 
  16222.            Explanation: An object module has more than 255 segments. 
  16223.            Action: Reduce the number of segments, splitting the module or 
  16224.            combining some segments. 
  16225.  
  16226.  L1049     too many segments 
  16227.            Explanation: The program has more than the maximum number of 
  16228.            segments. The /SEGMENTS option specifies the maximum allowed number; 
  16229.            the maximum is 16375. 
  16230.            Action: Restart LINK386 using the /SEGMENTS option with an 
  16231.            appropriate number of segments. 
  16232.  
  16233.  
  16234. ΓòÉΓòÉΓòÉ 24.1.2. Fatal Error Messages (Part 2) 1050 - 1098 ΓòÉΓòÉΓòÉ
  16235.  
  16236.  L1050     too many groups in one module 
  16237.            Explanation: LINK386 found more than 32 group definitions (GRPDEF) 
  16238.            in a single module. 
  16239.            Action: Reduce the number of group definitions by splitting the 
  16240.            module, by eliminating one or more group definitions, or combining 
  16241.            group definitions. 
  16242.  
  16243.  L1051     too many groups 
  16244.            Explanation: The program defines more than 32 groups in addition to 
  16245.            DGROUP. 
  16246.            Action: Reduce the number of group definitions by splitting the 
  16247.            module, by eliminating one or more group definitions, or combining 
  16248.            group definitions. 
  16249.  
  16250.  L1052     too many libraries 
  16251.            Explanation: You tried to link with more than 32 libraries. 
  16252.            Action: Combine libraries, or use modules that require fewer 
  16253.            libraries. 
  16254.  
  16255.  L1053     out of memory for symbol table 
  16256.            Explanation: The program has more symbolic information, such as 
  16257.            public, external, segment, group, class, and file names, than the 
  16258.            amount that could fit in available real memory. 
  16259.            Action: Combine modules or segments and recreate the object files. 
  16260.            Eliminate as many public symbols as possible or use shorter names. 
  16261.  
  16262.  L1054     requested segment limit too high 
  16263.            Explanation: There is not enough memory to allocate the necessary 
  16264.            tables for the amount of segments requested. 
  16265.            Action: Reduce the number of segments by combining or creating 
  16266.            additional executable modules. 
  16267.  
  16268.  L1057     data record too large 
  16269.            Explanation: A LEDATA record (in an object module) contained more 
  16270.            than 1024 bytes of data. This is a translator (compiler or 
  16271.            assembler) error. 
  16272.            Action: Note which translator (compiler or assembler) produced the 
  16273.            incorrect object module and the circumstances, and contact your 
  16274.            supplier. 
  16275.  
  16276.  L1060     program exceeds number bytes 
  16277.            Explanation: There is not enough memory to process all segments. 
  16278.            Action: Reduce the number of segments by combining or creating 
  16279.            additional executable modules. 
  16280.  
  16281.  L1063     out of memory for debugging information 
  16282.            Explanation: LINK386 was given too many object files with debug 
  16283.            information, and ran out of space to store them. 
  16284.            Action: Reduce the number of object files that have debug 
  16285.            information. 
  16286.  
  16287.  L1064     out of memory - name heap exhausted 
  16288.            Explanation: The linker ran out of heap space; name = near or far. 
  16289.            Action: Reduce the number of background processes or install more 
  16290.            memory. 
  16291.  
  16292.  L1070     name: segment size exceeds 64K 
  16293.            Explanation: A single segment contains more than 64K of code or 
  16294.            data. This could be because you attempted to combine identically 
  16295.            named segments. 
  16296.            Action: Try compiling (or assembling) and linking using a larger 
  16297.            memory model or breaking up the named segment. 
  16298.  
  16299.  L1071     segment _TEXT larger than 65,520 bytes 
  16300.            Explanation: This error is likely to occur only in small-model C 
  16301.            programs, but it can occur when any program with a segment named 
  16302.            _TEXT is linked using the /DOSSEG option of the LINK386 command. 
  16303.            Small-model C programs must reserve code addresses 0 and 1; the 
  16304.            reserve is increased to 16 for alignment purposes. 
  16305.            Action: Make the program source code smaller, or change to a larger 
  16306.            memory model. 
  16307.  
  16308.  L1072     common area longer than 65,536 bytes 
  16309.            Explanation: The program has more than 64K of communal variables. 
  16310.            This error occurs only with programs produced by compilers that 
  16311.            support communal variables. 
  16312.            Action: Rewrite your program using fewer or smaller communal 
  16313.            variables. 
  16314.  
  16315.  L1073     file-segment limit exceeded 
  16316.            Explanation: There are more than 255 physical or file segments. 
  16317.            Action: Reduce the number of physical or file segments. You could 
  16318.            use the Combine Contiguous Data (/PACKD) option for combining data 
  16319.            segments or the Combine Contiguous Code (/PACKC) option for 
  16320.            combining code segments. 
  16321.  
  16322.  L1074     name: group larger than 64K 
  16323.            Explanation: A group contains segments that total more than 65,536 
  16324.            bytes. 
  16325.            Action: Reduce the number or size of segments or remove segments 
  16326.            from the group. 
  16327.  
  16328.  L1075     entry table larger than 65,535 bytes 
  16329.            Explanation: You have exceeded a linker table size limit because of 
  16330.            an excessive number of entry names. 
  16331.            Action: Reduce the number of names in the modules that you are 
  16332.            linking or create additional executable modules. 
  16333.  
  16334.  L1076     name: segment size exceeds numberM 
  16335.            Explanation: The named segment is larger than the specified size. 
  16336.            Action: Break the segment into smaller segments and try again. 
  16337.  
  16338.  L1077     common area longer than 4G-1 bytes 
  16339.            Explanation: The space for the C languages common area is too big. 
  16340.            Action: If the load module is an .EXE, consider putting some 
  16341.            routines in .DLL; otherwise, link without debugging information or 
  16342.            create additional executable modules. 
  16343.  
  16344.  L1080     cannot open list file 
  16345.            Explanation: The disk or a directory is full, or an invalid file 
  16346.            name was specified. 
  16347.            Action: Check that the file name specified is correct. Delete or 
  16348.            move files to make space and restart LINK386. 
  16349.  
  16350.  L1081     out of space for run file 
  16351.            Explanation: The disk on which the .EXE file is being written is 
  16352.            full. 
  16353.            Action: Delete or move files to make space and restart LINK386. 
  16354.  
  16355.  L1082     name: stub file not found 
  16356.            Explanation: The stub file specified in the module definition file 
  16357.            could not be found. 
  16358.            Action: Check that the correct path to the stub file has been 
  16359.            specified. 
  16360.  
  16361.  L1083     cannot open run file - reason 
  16362.            Explanation: The run file could not be opened for the stated reason. 
  16363.            Action: Correct the problem and restart LINK386. 
  16364.  
  16365.  L1088     out of space for list file 
  16366.            Explanation: The disk on which the listing file is being written is 
  16367.            full. 
  16368.            Action: Delete or move files to make space and restart LINK386. 
  16369.  
  16370.  L1089     filename: cannot open response file 
  16371.            Explanation: LINK386 cannot find the specified response file. This 
  16372.            usually indicates a typing error. 
  16373.            Action: Include the drive specifier or path, or both, for the 
  16374.            response file. 
  16375.  
  16376.  L1091     unexpected end-of-file on library 
  16377.            Explanation: The disk containing the library has probably been 
  16378.            removed or is corrupted. 
  16379.            Action: Replace the disk containing the library and restart LINK386. 
  16380.  
  16381.  L1092     cannot open module definition file 
  16382.            Explanation: The specified module definition file cannot be opened, 
  16383.            or an invalid file name was specified. 
  16384.            Action: Check that the specified file name is correct. Include the 
  16385.            drive specifier or path, or both, for the module definition file. 
  16386.  
  16387.  L1093     name: object not found 
  16388.            Explanation: LINK386 could not open the object module you specified. 
  16389.            Action: Specify full path name or directory in which object module 
  16390.            resides. 
  16391.  
  16392.  L1096     unexpected end-of-file 
  16393.            Explanation: LINK386 encountered an end-of-file character while 
  16394.            reading an input file AND expected more information. 
  16395.            Action: Check input files for errors and relink. 
  16396.  
  16397.  L1097     I/O error - string 
  16398.            Explanation: The linker encountered the I/O error shown while 
  16399.            reading from a file. 
  16400.            Action: Make sure the file is not corrupted or on a bad disk sector 
  16401.            and relink. 
  16402.  
  16403.  L1098     cannot open include file filename - reason 
  16404.            Explanation: LINK386 could not open the include file for the stated 
  16405.            reason. 
  16406.            Action: Correct the problem and restart LINK386. 
  16407.  
  16408.  
  16409. ΓòÉΓòÉΓòÉ 24.1.3. Fatal Error Messages (Part 3) 1100 - 1130 ΓòÉΓòÉΓòÉ
  16410.  
  16411.  L1100     stub .EXE file invalid 
  16412.            Explanation: The stub file specified in the module definition file 
  16413.            is not a valid .EXE file. 
  16414.            Action: Ensure that the stub file is an executable file. 
  16415.  
  16416.  L1101     invalid object module 
  16417.            Explanation: One of the object modules was incorrectly formed during 
  16418.            compilation or assembly. 
  16419.            Action: Recompile or reassemble your source code. If the error 
  16420.            persists, contact your supplier. 
  16421.  
  16422.  L1102     unexpected end-of-file 
  16423.            Explanation: An invalid format for a library was found. 
  16424.            Action: Restore the library file from your backup disk and restart 
  16425.            LINK386. If this does not work, rebuild your library or contact your 
  16426.            supplier. 
  16427.  
  16428.  L1103     name: attempt to access data outside segment bounds 
  16429.            Explanation: A data record in an object module specified data 
  16430.            extending beyond the end of a segment. This is a translator error. 
  16431.            Action: Note which translator (compiler or assembler) produced the 
  16432.            incorrect object module and the circumstances, and contact your 
  16433.            supplier. 
  16434.  
  16435.  L1104     filename: not valid library 
  16436.            Explanation: The specified file is not a valid library file. This 
  16437.            error causes LINK386 to stop running. 
  16438.            Action: Ensure that the named file is a valid library file and 
  16439.            restart LINK386. If this does not work, rebuild your library or 
  16440.            contact your supplier. 
  16441.  
  16442.  L1105     invalid object due to aborted incremental compile 
  16443.            Explanation: An object file from an aborted compile is trying to be 
  16444.            linked. 
  16445.            Action: Recompile the source that produced the bad compile and then 
  16446.            relink. 
  16447.  
  16448.  L1106     unknown COMDAT allocation type for name; record ignored 
  16449.            Explanation: The COMDAT (record in .OBJ) allocation type for the 
  16450.            named COMDAT was not valid. 
  16451.            Action: Recompile or reassemble .OBJ and try again. If that does not 
  16452.            work, contact your supplier. 
  16453.  
  16454.  L1107     unknown COMDAT selection type for name; record ignored 
  16455.            Explanation: The COMDAT (record in .OBJ) selection type for the 
  16456.            named COMDAT is not valid. 
  16457.            Action: Recompile or reassemble .OBJ and try again. If that does not 
  16458.            work, contact your supplier. 
  16459.  
  16460.  L1108     invalid format of debugging information 
  16461.            Explanation: An error was detected in a segment that contains debug 
  16462.            information. 
  16463.            Action: Recompile or reassemble and try again. If that does not 
  16464.            work, try relinking without using the /DE or /CO options. 
  16465.  
  16466.  L1113     unresolved COMDEF; internal error 
  16467.            Explanation: LINK386 encountered a COMDEF (record in .OBJ) in pass 2 
  16468.            that was not defined in pass 1. 
  16469.            Action: Recompile or reassemble and try again. If that does not 
  16470.            work, contact your supplier. 
  16471.  
  16472.  L1114     unresolved COMDAT name: internal error 
  16473.            Explanation: LINK386 found specified COMDAT in pass 2 that does not 
  16474.            correspond to COMDATs found in pass 1. 
  16475.            Action: Recompile or reassemble and try again. If that does not 
  16476.            work, contact your supplier. 
  16477.  
  16478.  L1117     unallocated COMDAT name; internal error 
  16479.            Explanation: The linker encountered COMDAT in pass 2 for which space 
  16480.            was not allocated during pass 1. 
  16481.            Action: Recompile or reassemble and try again. If that does not 
  16482.            work, contact your supplier. 
  16483.  
  16484.  L1121     name: group larger than 4G-1 bytes 
  16485.            Explanation: The group indicated is too large. 
  16486.            Action: Recompile or reassemble and try again. Remove segments from 
  16487.            the group or create additional executables if necessary. 
  16488.  
  16489.  L1123     name: segment defined both 16- and 32-bit 
  16490.            Explanation: The segment named was defined as both 16-bit and 
  16491.            32-bit. 
  16492.            Action: Create two segments (one for 16-bit, one for 32-bit), or 
  16493.            make sure the segment is defined one way and relink. 
  16494.  
  16495.  L1126     conflicting IOPL-parameter-words value 
  16496.            Explanation: The IOPL parameter words in the .DEF file does not 
  16497.            exactly match those in the corresponding EXPDEF object record. 
  16498.            Action: Make sure .DEF file coincides with that defined in .OBJ. 
  16499.            Relink. 
  16500.  
  16501.  L1128     too many nested include files in module-definition file 
  16502.            Explanation: The .DEF file exceeded a nesting level. 
  16503.            Action: Combine some nestings into one .DEF file and try again. 
  16504.  
  16505.  L1129     missing or bad include file name 
  16506.            Explanation: LINK386 could not find a file included by .DEF file. 
  16507.            Action: Make sure the file exists and can be located and that any 
  16508.            path is specified correctly. Try again. 
  16509.  
  16510.  L1130     internal fix-up applied to undefined area at offset in object number 
  16511.            Explanation: LINK386 attempted to apply an internal fix-up beyond 
  16512.            the defined limits of the object. 
  16513.            Action: This is probably a compiler or assembler error. Revise the 
  16514.            source file and re-create the object file. If that does not work, 
  16515.            contact your supplier. 
  16516.  
  16517.  
  16518. ΓòÉΓòÉΓòÉ 24.1.4. Fatal Error Messages (Part 4) 1200 - 1218 ΓòÉΓòÉΓòÉ
  16519.  
  16520.  L1200     out of memory for page range information 
  16521.            Explanation: The total size of all page range information is greater 
  16522.            than the internal limit in LINK386. 
  16523.            Action: Reduce the size of the executable, consider using dynamic 
  16524.            link libraries to split the program into smaller modules. 
  16525.  
  16526.  L1201     out of memory for contribution information 
  16527.            Explanation: The total size of the contribution information is 
  16528.            greater than the internal limit in LINK386. 
  16529.            Action: Reduce the size of the executable, consider using dynamic 
  16530.            link libraries to split the program into smaller modules. 
  16531.  
  16532.  L1202     out of memory for executable string information 
  16533.            Explanation: The total size of all executable string information is 
  16534.            greater than the internal limit in LINK386. 
  16535.            Action: Reduce the size of the executable, consider using dynamic 
  16536.            link libraries to split the program into smaller modules. 
  16537.  
  16538.  L1203     out of memory for identifier mangler DLL information 
  16539.            Explanation: The total size of all identifier mangler DLL 
  16540.            information is greater than the internal limit in LINK386. 
  16541.            Action: Reduce the size of the executable, consider using dynamic 
  16542.            link libraries to split the program into smaller modules. 
  16543.  
  16544.  L1204     out of memory for object page table information 
  16545.            Explanation: The total size of the object page table information is 
  16546.            greater than the internal limit in LINK386. 
  16547.            Action: Reduce the size of the executable, consider using dynamic 
  16548.            link libraries to split the program into smaller modules. 
  16549.  
  16550.  L1205     out of memory for fixup record information 
  16551.            Explanation: The total size of all fixup record information is 
  16552.            greater than the internal limit in LINK386. 
  16553.            Action: Reduce the size of the executable, consider using dynamic 
  16554.            link libraries to split the program into smaller modules. 
  16555.  
  16556.  L1206     out of memory for fix up page table information 
  16557.            Explanation: The total size of all fix up page table information is 
  16558.            greater than the internal limit in LINK386. 
  16559.            Action: Reduce the size of the executable, consider using dynamic 
  16560.            link libraries to split the program into smaller modules. 
  16561.  
  16562.  L1207     out of memory for import module information 
  16563.            Explanation: The total size of the import module information is 
  16564.            greater than the internal limit in LINK386. 
  16565.            Action: Reduce the size of the executable, consider using dynamic 
  16566.            link libraries to split the program into smaller modules. 
  16567.  
  16568.  L1208     out of memory for page directory information 
  16569.            Explanation: The total size of the page directory is greater than 
  16570.            the internal limit in LINK386. 
  16571.            Action: Reduce the size of the executable, consider using dynamic 
  16572.            link libraries to split the program into smaller modules. 
  16573.  
  16574.  L1209     out of memory for object page directory information 
  16575.            Explanation: The total size of the object page director is greater 
  16576.            than the internal limit in LINK386. 
  16577.            Action: Reduce the size of the executable, consider using dynamic 
  16578.            link libraries to split the program into smaller modules. 
  16579.  
  16580.  L1210     out of memory for module reference table information 
  16581.            Explanation: The total size of the module reference table is greater 
  16582.            than the internal limit in LINK386. 
  16583.            Action: Reduce the size of the executable, consider using dynamic 
  16584.            link libraries to split the program into smaller modules. 
  16585.  
  16586.  L1211     out of memory for chained relocation hash buckets 
  16587.            Explanation: The total size of the relocation bucket is greater than 
  16588.            the internal limit in LINK386. 
  16589.            Action: Reduce the size of the executable, consider using dynamic 
  16590.            link libraries to split the program into smaller modules. 
  16591.  
  16592.  L1212     out of memory for chained relocation hash tables 
  16593.            Explanation: The total size of the relocation hash tables is greater 
  16594.            than the internal limit in LINK386. 
  16595.            Action: Reduce the size of the executable, consider using dynamic 
  16596.            link libraries to split the program into smaller modules. 
  16597.  
  16598.  L1213     out of memory for entry point information 
  16599.            Explanation: The total size of the entry point information is 
  16600.            greater than the internal limit in LINK386. 
  16601.            Action: Reduce the size of the executable, consider using dynamic 
  16602.            link libraries to split the program into smaller modules. 
  16603.  
  16604.  L1214     out of memory for entry table area 
  16605.            Explanation: The total size of the entry table are is greater than 
  16606.            the internal limit in LINK386. 
  16607.            Action: Reduce the size of the executable, consider using dynamic 
  16608.            link libraries to split the program into smaller modules. 
  16609.  
  16610.  L1215     out of memory for imported names information 
  16611.             Explanation: The total size of the imported names information is 
  16612.            greater than the internal limit in LINK386. 
  16613.            Action: Reduce the size of the executable, consider using dynamic 
  16614.            link libraries to split the program into smaller modules. 
  16615.  
  16616.  L1216     out of memory for comdat iterated data 
  16617.            Explanation: The total size of all comdat iterated is greater than 
  16618.            the internal limit in LINK386. 
  16619.            Action: Reduce the size of the executable, consider using dynamic 
  16620.            link libraries to split the program into smaller modules. 
  16621.  
  16622.  L1217     out of memory for back patch information 
  16623.            Explanation: The total size of the back patch information is greater 
  16624.            than the internal limit in LINK386. 
  16625.            Action: Reduce the size of the executable, consider using dynamic 
  16626.            link libraries to split the program into smaller modules. 
  16627.  
  16628.  L1218     out of memory for property list tables 
  16629.            Explanation: The total size of the property list table is greater 
  16630.            than the internal limit in LINK386. 
  16631.            Action: Reduce the size of the executable, consider using dynamic 
  16632.            link libraries to split the program into smaller modules. 
  16633.  
  16634.  
  16635. ΓòÉΓòÉΓòÉ 24.1.5. Nonfatal Error Messages 2000 - 2063 ΓòÉΓòÉΓòÉ
  16636.  
  16637.  L2000     imported starting address 
  16638.            Explanation:  A MODEND, or starting address record, referred to an 
  16639.            imported name. Imported program-starting addresses are not 
  16640.            supported. 
  16641.            Action: The starting address record must refer to a non imported 
  16642.            name. Edit the source file and recompile or reassemble. 
  16643.  
  16644.  L2002     fix-up overflow at location in segment name 
  16645.            Explanation: A fix up overflow occurred near location, in the named 
  16646.            segment. See Conditions That Can Cause LINK386 Error 2002. 
  16647.            Action: Revise the source file and re-create the object file. If 
  16648.            that does not work, contact your supplier. 
  16649.  
  16650.  L2003     inter segment self-relative fix-up at location in segment name 
  16651.            Explanation: LINK386 detected an inter segment self-relative fix-up. 
  16652.            A self-relative fix-up cannot be in another segment. This is 
  16653.            probably caused by a near reference to procedure located in another 
  16654.            segment. 
  16655.            Action: Revise the source file and re-create the object file. If 
  16656.            that does not work, contact your supplier. 
  16657.  
  16658.  L2005     fix-up type unsupported at location in segment name 
  16659.            Explanation:  LINK386 detected an unsupported fix up type. This is 
  16660.            probably a compiler or assembler error. 
  16661.            Action: Revise the source file and re-create the object file. If 
  16662.            that does not work, contact your supplier. 
  16663.  
  16664.  L2010     too many fix-ups in LIDATA record 
  16665.            Explanation:  There are more fix ups applying to a LIDATA record 
  16666.            than will fit into the LINK386's 1024 byte buffer. The buffer is 
  16667.            divided between the data in the LIDATA record itself and the 
  16668.            run-time relocation items.  These are 8 bytes each, so the maximum 
  16669.            varies from 0 to 128.  This is probably a compiler error. 
  16670.            Action: Revise the source file and re-create the object file. If 
  16671.            that does not work, contact your supplier. 
  16672.  
  16673.  L2011     name: NEAR/HUGE conflict 
  16674.            Explanation:  There are conflicting NEAR and HUGE attributes for a 
  16675.            communal variable. This error can occur only with programs produced 
  16676.            by compilers that support communal variables. 
  16677.            Action: Specify only one of these attributes. 
  16678.  
  16679.  L2012     name: array-element size mismatch 
  16680.            Explanation: A far communal array has been declared with two or more 
  16681.            different array-element sizes (for example, an array declared once 
  16682.            as an array of characters and once as an array of real numbers). 
  16683.            This error occurs only when using compilers that support far 
  16684.            communal arrays. 
  16685.            Action: Match the definitions and re-create the object module or 
  16686.            modules. 
  16687.  
  16688.  L2013     LIDATA record too large 
  16689.            Explanation: A LIDATA record in an object module contains more than 
  16690.            512 bytes of data. It is likely that one of your assembler modules 
  16691.            contains a complex structure definition or a series of deeply-nested 
  16692.            DUP operators. (LIDATA is a DOS term.) 
  16693.            Example: The following structure definition causes this error: 
  16694.  
  16695.                       alpha   DB     10DUP(11 DUP(12 DUP(13 DUP(...))))
  16696.  
  16697.            Action: Simplify the structure definition and reassemble the module. 
  16698.  
  16699.  L2022     name (alias internalname) : export undefined 
  16700.            Explanation: A name has been directed to be exported but is not 
  16701.            defined anywhere. 
  16702.            Action: Edit the source file and define the export. 
  16703.  
  16704.  L2023     name (alias internalname) : export imported 
  16705.            Explanation: An imported name has been directed to be exported. 
  16706.            Items that are not in the source file itself cannot be exported. You 
  16707.            cannot export this imported name. 
  16708.            Action: Edit the source file to not export the imported name. 
  16709.  
  16710.  L2024     name: special symbol already defined 
  16711.            Explanation: Your program defined a symbol name that LINK386 already 
  16712.            used for one of its low-level symbols.  For example, the linker 
  16713.            generates special names for overlay support. 
  16714.            Action: Edit the source file and choose another name for the symbol. 
  16715.  
  16716.  L2025     name: symbol defined more than once 
  16717.            Explanation: A symbol has been defined more than once in the object 
  16718.            file. 
  16719.            Action: Edit the source file, removing the extra symbol definition. 
  16720.  
  16721.  L2026     entry ordinal number, name name : multiple definitions for same 
  16722.            ordinal 
  16723.            Explanation: More than one entry point name has been assigned to the 
  16724.            same ordinal in the module definition file. 
  16725.            Action: Edit the module definition file to correct the usage of the 
  16726.            ordinal. 
  16727.  
  16728.  L2027     number: ordinal too large for export 
  16729.            Explanation: You tried to export more than 3072 names or indicated 
  16730.            too large of an ordinal. 
  16731.            Action: Edit the source file or define smaller ordinals in the 
  16732.            module definition file. 
  16733.  
  16734.  L2029     string: unresolved external 
  16735.            Explanation: A symbol declared to be external in one or more modules 
  16736.            was not found among the given objects and libraries. 
  16737.            Action: Supply files that will resolve these external calls. 
  16738.  
  16739.  L2030     starting address not code (use class 'CODE') 
  16740.            Explanation: You specified a starting address to LINK386 that is not 
  16741.            within a segment of type 'CODE.' 
  16742.            Action: Reclassify the segment to CODE, or correct the starting 
  16743.            point. 
  16744.  
  16745.  L2044     string: symbol multiple defines, use /NOE 
  16746.            Explanation: The symbol shown was defined more than once, perhaps 
  16747.            for different things. 
  16748.            Action: Recompile with the /NOEXDICTIONARY option. 
  16749.  
  16750.  L2047     IOPL attribute conflict - segment: name in group:name 
  16751.            Explanation: The segment indicated within the group shown has 
  16752.            different IOPL attributes from the rest of the segments in the 
  16753.            group. 
  16754.            Action: Remove the segment from the group or make sure all segments 
  16755.            have the same IOPL attributes. Relink. 
  16756.  
  16757.  L2050     use16/use32 attribute conflict - segment:name in group:name 
  16758.            Explanation: The segment indicated within the group shown has a 
  16759.            different USE16/USE32 attribute from the rest of the segments in the 
  16760.            group. 
  16761.            Action: Remove the segment from the group or make sure all segments 
  16762.            have the same USE16/USE32 attribute. 
  16763.  
  16764.  L2052     name: unresolved external - possible calling convention mismatch 
  16765.            Explanation: LINK386 encountered an undefined external, which could 
  16766.            be a fast-call/C-call mismatch. 
  16767.            Action: Make sure the external is defined and called the same way 
  16768.            (for example, all C-calls). 
  16769.  
  16770.  L2053     call gates are NOT allowed in 32-bit object if its size exceeds 64K 
  16771.            - memory object number number 
  16772.            Explanation: The memory object indicated is larger than 64K and uses 
  16773.            call gates. 
  16774.            Action: Remove the call gates or break the object into smaller 
  16775.            portions.  Relink. 
  16776.  
  16777.  L2054     data for invalid page in segment name 
  16778.            Explanation: LINK386 encountered data past the defined end of 
  16779.            initialized data in the segment indicated. 
  16780.            Action:  The .OBJ is probably corrupted. Recompile or reassemble and 
  16781.            try again.  If that does not work, contact your supplier. 
  16782.  
  16783.  L2055     fix-up for invalid page at location in segment name 
  16784.            Explanation: LINK386 encountered a fixup past the defined end of 
  16785.            initialized data in the segment indicated. 
  16786.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  16787.            try again.  If that does not work, contact your 
  16788.  
  16789.  L2056     object type conflict - segment: name in group: name 
  16790.            Explanation: The segment indicated within the group shown has a 
  16791.            different TYPE attribute from the rest of the segments in the group. 
  16792.            Action: Remove the segment from the group or make sure all segments 
  16793.            have the same TYPE attribute. 
  16794.  
  16795.  L2057     duplicate of name with different size found; record ignored 
  16796.            Explanation: LINK386 encountered two COMDAT records with the 
  16797.            selection type "SAME SIZE." The records have the same name but have 
  16798.            different sizes. 
  16799.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  16800.            try again.  If that does not work, contact your 
  16801.  
  16802.  L2058     different duplicate of name found; record ignored 
  16803.            Explanation: LINK386 encountered two COMDAT records with the 
  16804.            selection type "EXACT." The records have the same name but have 
  16805.            different sizes. 
  16806.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  16807.            try again.  If that does not work, contact your 
  16808.  
  16809.  L2059     size of the data block associated with name exceeds 4G 
  16810.            Explanation: LINK386 encountered a continuation COMDAT record whose 
  16811.            additional size made the communal data too large. 
  16812.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  16813.            try again.  If that does not work, contact your 
  16814.  
  16815.  L2061     no space for the data block associated with record name inside the 
  16816.            segment name 
  16817.            Explanation: While being allocated space for a COMDAT record inside 
  16818.            the segment indicated, the segment grew larger than 64K. 
  16819.            Action: Make the segment smaller or move communal data into a 
  16820.            different segment. 
  16821.  
  16822.  L2062     continuation of COMDAT name has conflicting attributes; record 
  16823.            ignored 
  16824.            Explanation: While concatenating the COMDAT record indicated, 
  16825.            LINK386 found attributes that differ from those defined in the 
  16826.            initial COMDAT record. 
  16827.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  16828.            try again.  If that does not work, contact your 
  16829.  
  16830.  L2063     name allocated in undefined segment 
  16831.            Explanation: LINK386 encountered a COMDAT record in an undefined 
  16832.            explicit allocation segment. 
  16833.            Action: The .OBJ is probably corrupted. Recompile or reassemble and 
  16834.            try again.  If that does not work, contact your supplier. 
  16835.  
  16836.  
  16837. ΓòÉΓòÉΓòÉ 24.1.6. Warning Error Messages 4000 - 4087 ΓòÉΓòÉΓòÉ
  16838.  
  16839.  L4000     seg disp. included near location in segment name 
  16840.            Explanation: This error is caused by using the LINK386 Warning of 
  16841.            Fix-ups (/W) option. 
  16842.            Action: The segment name and the location offset is displayed. 
  16843.  
  16844.  L4001     frame-relative fix-up, frame ignored near location in segment name 
  16845.            Explanation: A fix up occurred with a frame segment different from 
  16846.            the target segment where either the frame or the target segment is 
  16847.            not absolute. Such a fix-up is meaningless in the OS/2 environment, 
  16848.            so the target segment is assumed for the frame segment. This error 
  16849.            sometimes occurs if a 32-bit data item is referenced as if it were 
  16850.            in a 16-bit segment or a 16-bit segment referenced as if it were in 
  16851.            a 32-bit segment. 
  16852.            Action: Check that this is acceptable. 
  16853.  
  16854.  L4002     frame-relative absolute fix-up near location in segment name 
  16855.            Explanation: A fix up occurred with a frame segment different from 
  16856.            the target segment where both frame and target segments are 
  16857.            absolute. This fix up is processed using base-offset arithmetic, but 
  16858.            the warning is issued because the fix up might not be valid in the 
  16859.            OS/2 environment. This error sometimes occurs if a 32-bit data item 
  16860.            is referenced as if it were in a 16-bit segment or a 16-bit segment 
  16861.            referenced as if it were in a 32-bit segment. 
  16862.            Action: Check that this is acceptable. 
  16863.  
  16864.  L4003     intersegment self-relative fix up at location in segment name 
  16865.            Explanation: LINK386 found an intersegment self-relative fix-up at 
  16866.            the specified location. This might cause a problem with the 
  16867.            executable file. 
  16868.            Action: The error might have been caused by the way the program was 
  16869.            written or when it was compiled or assembled. 
  16870.  
  16871.  L4004     possible fix-up overflow at location in segment name 
  16872.            Explanation: LINK386 found a possible fix-up overflow at the 
  16873.            specified location. This might cause a problem with the executable 
  16874.            file. 
  16875.            Action: The error might have been caused by the way the program was 
  16876.            written or when it was compiled or assembled. 
  16877.  
  16878.  L4005     32-bit fix-up in 16-bit record ignored at location in segment name 
  16879.            Explanation: LINK386 encountered a 32-bit fix-up in a 16-bit record 
  16880.            at the specified location. This might cause a problem with the 
  16881.            executable file. 
  16882.            Action: The error might have been caused by the way the program was 
  16883.            written or when it was compiled or assembled. 
  16884.  
  16885.  L4006     illegal 16-bit flat-relative offset fix-up at location in object 
  16886.            name 
  16887.            Explanation: LINK386 encountered an illegal 16-bit flat relative 
  16888.            offset fix-up at the specified location. This might cause a problem 
  16889.            with the executable file. This error sometimes occurs if a 32-bit 
  16890.            data item is referenced as if it were in a 16-bit segment or a 
  16891.            16-bit segment referenced as if it were in a 32-bit segment. 
  16892.            Action: The error might have been caused by the way the program was 
  16893.            written or when it was compiled or assembled. 
  16894.  
  16895.  L4007     illegal 16-bit flat-relative pointer fix-up at location in object 
  16896.            name 
  16897.            Explanation: LINK386 encountered an illegal 16-bit flat-relative 
  16898.            pointer fix-up at the specified location. This error sometimes 
  16899.            occurs if a 32-bit data item is referenced as if it were in a 16-bit 
  16900.            segment or a 16-bit segment referenced as if it were in a 32-bit 
  16901.            segment. 
  16902.            Action: The error might have been caused by the way the program was 
  16903.            written or when it was compiled or assembled. 
  16904.  
  16905.  L4008     aliased fix-up to non-alias object near location in object name 
  16906.            Explanation: LINK386 encountered an aliased fix-up to a non-alias 
  16907.            object at the specified location. This error sometimes occurs if a 
  16908.            32-bit data item is referenced as if it were in a 16-bit segment or 
  16909.            a 16-bit segment referenced as if it were in a 32-bit segment. 
  16910.            Action: The error might have been caused by the way the program was 
  16911.            written or when it was compiled or assembled. 
  16912.  
  16913.  L4009     illegal target of flat-relative fix-up ignored at number in segment 
  16914.            name 
  16915.            Explanation: LINK386 encountered an illegal flat-relative fix-up at 
  16916.            the specified location. 
  16917.            Action: The error might have been caused by the way the program was 
  16918.            written or when it was compiled or assembled. 
  16919.  
  16920.  L4010     invalid alignment specification; assuming number 
  16921.            Explanation: The number following the /ALIGNMENT option is not a 
  16922.            power of 2, or is not in numerical form. The maximum alignment value 
  16923.            is 4096. 
  16924.            Action: If the default alignment of 512 is not acceptable, restart 
  16925.            LINK386 using a valid number. 
  16926.  
  16927.  L4017     name: unrecognized option name; option ignored 
  16928.            Explanation: The option specified is not valid for LINK386. 
  16929.            Action: Specify a valid option or remove the unrecognized option and 
  16930.            relink. 
  16931.  
  16932.  L4018     missing or bad application type; option name ignored 
  16933.            Explanation: The /PMTYPE option was specified without an application 
  16934.            type or with an invalid application type. 
  16935.            Action: Relink with an application type of PM, VIO, or NOVIO. 
  16936.  
  16937.  L4020     name: code segment size exceeds 65,500 
  16938.            Explanation: The code segment indicated is larger than 65,500 bytes 
  16939.            and might not be reliable. 
  16940.            Action: Break the segment into smaller segments and try again. 
  16941.  
  16942.  L4021     no stack segment 
  16943.            Explanation: The program does not contain a stack segment defined 
  16944.            with the STACK combine type. Normally, every .EXE program should 
  16945.            have a stack segment with the combine type specified as STACK. 
  16946.            Action: You can ignore this message if you have a specific reason 
  16947.            for not defining a stack or for defining one without the STACK 
  16948.            combine type. 
  16949.  
  16950.  L4022     name1, name2: groups overlap 
  16951.            Explanation: Two groups are defined in such a way that one starts in 
  16952.            the middle of another. This can occur if you defined segments in a 
  16953.            module definition file or assembly file and did not correctly order 
  16954.            the segments by class. 
  16955.            Action: Edit the source file and reorder the segments in the group. 
  16956.  
  16957.  L4023     name (alias): export internal name conflict 
  16958.            Explanation: An exported name, or its associated internal name, 
  16959.            conflicts with an already defined public symbol. 
  16960.            Action: Edit the source file using new names. 
  16961.  
  16962.  L4024     name: multiple definitions for export name 
  16963.            Explanation: The module named has been exported more than once with 
  16964.            different internal names. All internal names except the first one 
  16965.            are ignored. 
  16966.            Action: Edit the source file using new names. 
  16967.  
  16968.  L4025     modname impname (intname): import internal name conflict 
  16969.            Explanation: An imported name, or its associated internal name, is 
  16970.            also defined as an exported name. The import name is ignored. The 
  16971.            conflict could come from a definition in either the module 
  16972.            definition file or an object file. 
  16973.            Action: Edit the source file or module definition file using new 
  16974.            names. 
  16975.  
  16976.  L4026     modname impname (intname): self-imported 
  16977.            Explanation: The module definition file directed that a name be 
  16978.            imported from the module being produced. 
  16979.            Action: Edit the module definition file. 
  16980.  
  16981.  L4027     name: multiple definitions for import internal name 
  16982.            Explanation: An imported name, or its associated internal name, is 
  16983.            imported more than once. The imported name is ignored after the 
  16984.            first mention. 
  16985.            Action: Check that the name has been defined correctly. 
  16986.  
  16987.  L4028     name: segment already defined 
  16988.            Explanation: A segment is defined more than once with the same name 
  16989.            in the module definition file. Segments must have unique names for 
  16990.            LINK386. All definitions with the same name are ignored after the 
  16991.            first mention. 
  16992.            Action: Check that the segment has been defined correctly. 
  16993.  
  16994.  L4029     name: DGROUP segment converted to type data 
  16995.            Explanation: A segment that is a member of DGROUP has been defined 
  16996.            as type CODE in a module definition file or object file. This 
  16997.            probably happened because a CLASS keyword in a SEGMENTS statement 
  16998.            was not given. 
  16999.            Action: Check the module definition file syntax. 
  17000.  
  17001.  L4030     name: segment attributes changed to conform with automatic data 
  17002.            segment 
  17003.            Explanation: The segment named is defined in DGROUP, but the shared 
  17004.            attribute is in conflict with the instance attribute. 
  17005.            Example:  The shared attribute is NONSHARED and the instance 
  17006.            attribute is SINGLE, or the shared attribute is SHARED and the 
  17007.            instance attribute is MULTIPLE. The bad segment is forced to have 
  17008.            the right shared attribute and the link continues. 
  17009.            Action: Check that the LINK386 action is acceptable. 
  17010.  
  17011.  L4031     name: segment declared in more than one group 
  17012.            Explanation: A segment is declared to be a member of two different 
  17013.            groups. 
  17014.            Action: Correct the source file and re-create the object files. 
  17015.  
  17016.  L4032     name: code-group size exceeds 65500 bytes 
  17017.            Explanation: The code group indicated is larger than 65500 bytes and 
  17018.            therefore might not be reliable. 
  17019.            Action: Break the group into smaller groups or remove one or more 
  17020.            segments and try again. 
  17021.  
  17022.  L4036     no automatic data segment 
  17023.            Explanation: The program or dynamic link library did not define a 
  17024.            group named DGROUP. This is recognized by LINK386 as the automatic 
  17025.            data segment. 
  17026.            Action: Edit the source file. 
  17027.  
  17028.  L4038     program has no starting address 
  17029.            Explanation: The program did not contain a starting address. 
  17030.            Physical Device Drivers do not have program starting addresses, so 
  17031.            this error can be ignored when linking Physical Device Drives. 
  17032.            Action: Recompile the program and try again. 
  17033.  
  17034.  L4044     CODE segment :name in DATA group:name; assuming DATA 
  17035.            Explanation: A CODE statement in a module definition file was used 
  17036.            to define default attributes for a DATA segment. 
  17037.            Action: Define a CODE statement and relink. 
  17038.  
  17039.  L4045     name of output file is name 
  17040.            Explanation: A dynamic link library file was created without 
  17041.            specifying an extension.  In such cases, LINK386 supplies an 
  17042.            extension of .DLL.  This is to warn you in case you expected an .EXE 
  17043.            file to be generated 
  17044.            Action: No action. 
  17045.  
  17046.  L4046     DATA segment: name in CODE group: name; assuming CODE 
  17047.            Explanation: A DATA statement in a module definition file was used 
  17048.            to define default attributes for a CODE segment. 
  17049.            Action: Define a DATA statement and relink. 
  17050.  
  17051.  L4048     ignoring non-zero heap size 
  17052.            Explanation: The module definition file does not contain a HEAPSIZE 
  17053.            statement. 
  17054.            Action: Edit the file and relink. 
  17055.  
  17056.  L4049     ignoring non-zero stack size 
  17057.            Explanation: The module definition file does not contain a STACKSIZE 
  17058.            statement. 
  17059.            Action: Edit the file and relink. 
  17060.  
  17061.  L4051     filename: cannot find library 
  17062.            Explanation: LINK386 could not find the specified library file. 
  17063.            Action: Enter a new file name, a new path specification, or both. 
  17064.  
  17065.  L4053     VM.TMP :illegal file name; ignored 
  17066.            Explanation: VM.TMP cannot be used for an object file name. 
  17067.            Action: Rename the file and restart LINK386. 
  17068.  
  17069.  L4054     filename: cannot find file 
  17070.            Explanation: LINK386 could not find the specified file. 
  17071.            Action: Enter a new file name, a new path specification, or both. 
  17072.  
  17073.  L4067     changing default resolution for weak external name from oldname to 
  17074.            newname 
  17075.            Explanation: LINK386 encountered a redefinition of a default 
  17076.            resolution and is changing it to the value indicated. 
  17077.            Action: If the change is OK, no action is required; otherwise, fix 
  17078.            the module definition file and try again. 
  17079.  
  17080.  L4068     ignoring stack size greater than 64K 
  17081.            Explanation: LINK386 encountered a stack greater than 64K or zero 
  17082.            and is assuming a stack size of 65,534. 
  17083.            Action: Edit the file and relink. 
  17084.  
  17085.  L4069     filename truncated to name 
  17086.            Explanation: LINK386 encountered a file name greater than 256 bytes 
  17087.            (including terminating null) and truncated it to the size indicated. 
  17088.            Action: Edit the file and relink. 
  17089.  
  17090.  L4071     application type not specified; assuming name 
  17091.            Explanation: An application type of WINDOWAPI, WINDOWCOMPAT, 
  17092.            NOTWINDOWCOMPAT, or PRIVATE was not specified. LINK386 is assuming 
  17093.            the application type indicated. 
  17094.            Action: Edit the file and relink. 
  17095.  
  17096.  L4072     changing application type from oldname to newname 
  17097.            Explanation: The application type specified with /PMTYPE is 
  17098.            different from that in .DEF file. LINK386 is using the application 
  17099.            type indicated. 
  17100.            Action: Edit the file and relink. 
  17101.  
  17102.  L4073     name: 32-bit aliased data segment size exceeds 64K 
  17103.            Explanation: The segment indicated is greater than 64K in length and 
  17104.            is a 32-bit aliased data segment 
  17105.            Action: If this is expected, do nothing; if not, break into smaller 
  17106.            segments. 
  17107.  
  17108.  L4074     attribute conflict for segment name; ignoring attribute type 
  17109.            Explanation: The segment indicated for the .DEF file is defined with 
  17110.            conflicting characteristics. LINK386 is ignoring the attribute 
  17111.            indicated. 
  17112.            Action: Edit the file and relink. 
  17113.  
  17114.  L4075     object type conflict - assuming name 
  17115.            Explanation: The .DEF files specified conflicting attributes for an 
  17116.            object; only one of the following attributes are allowed: RESIDENT, 
  17117.            NONPERMANENT, PERMANENT, CONTIGUOUS, or DYNAMIC. LINK386 is assuming 
  17118.            the attribute indicated. 
  17119.            Action: Edit the file and relink. 
  17120.  
  17121.  L4077     symbol name not defined; ordered allocation ignored 
  17122.            Explanation: While doing ordered allocation of COMDAT records, 
  17123.            LINK386 encountered an undefined COMDAT record; ordered allocation 
  17124.            is determined from the .DEF file. 
  17125.            Action: Edit the file and relink. 
  17126.  
  17127.  L4079     symbol name already defined for ordered allocation; duplicate 
  17128.            ignored 
  17129.            Explanation: While processing ORDER list in .DEF file, LINK386 
  17130.            encountered a COMDAT record already defined for ordered allocation. 
  17131.            Action: Edit the file and relink. 
  17132.  
  17133.  L4080     changing substitute name for alias name from name to name 
  17134.            Explanation: LINK386 encountered an alias redefiniton and is 
  17135.            changing it to the values indicated. 
  17136.            Action: If this is OK, no action is required. Otherwise, edit the 
  17137.            file and relink. 
  17138.  
  17139.  L4082     name ignored for module with 16-bit starting address 
  17140.            Explanation: LINK386 encountered a DLL module with a 16-bit entry 
  17141.            point requesting termination. Only modules with 32-bit entry points 
  17142.            can specify DLL termination. 
  17143.            Action: Remove the termination request from the module definition 
  17144.            file. 
  17145.  
  17146.  L4083     invalid base address specification; assuming number 
  17147.            Explanation: The base address specified with the /BASE option or in 
  17148.            the module definition file is illegal, and LINK386 is assuming the 
  17149.            given value. 
  17150.            Action: Change the base address if necessary; otherwise, ignore the 
  17151.            message. 
  17152.  
  17153.  L4084     module name truncated to string 
  17154.            Explanation: The module name was truncated to the number of 
  17155.            characters indicated. 
  17156.            Action: If this action is satisfactory, no action is required. 
  17157.            Otherwise, edit the module definition file and shorten the name. 
  17158.  
  17159.  L4085     name (alias alias name): forwarder entry created for imported export 
  17160.            Explanation: LINK386 created a forwarder entry within the entry 
  17161.            table for the named export. 
  17162.            Action: If this action is satisfactory, no action is required. 
  17163.  
  17164.  L4087     internal fix-up applied to uninitialized area at offset in object 
  17165.            number 
  17166.            Explanation: LINK386 attempted to apply an internal fix-up beyond 
  17167.            the initialize limits of the object. 
  17168.            Action: If this is acceptable, no action is required. If the problem 
  17169.            continues, you might want to disable based addressing. 
  17170.  
  17171.  L4090     cannot load identifier manipulation DLL name 
  17172.            Explanation:  LINK386 detected an error while trying to load an 
  17173.            identifier manipulator dynamic link library.  This DLL was specified 
  17174.            in an object file, and is used by LINK386 to demangle a compiler 
  17175.            generated mangled name into a function prototype when printing an 
  17176.            error message.  Error messages will not be demangled for this object 
  17177.            file. 
  17178.            Action:  Make sure the appropriate identifier manipulator DLL is in 
  17179.            the LIBPATH. 
  17180.  
  17181.  L4091     cannot locate procedure in identifier manipulation DLL name 
  17182.            Explanation: LINK386 detected an error while trying to load a 
  17183.            procedure from an identifier manipulator dynamic link library.  This 
  17184.            DLL was specified in an object file, and is used by LINK386 to 
  17185.            demangle a compiler generated mangled name into a function prototype 
  17186.            when printing an error message.  Error messages will not be 
  17187.            demangled for this object file. 
  17188.            Action: Make sure the appropriate identifier manipulator DLL is in 
  17189.            the LIBPATH. 
  17190.  
  17191.  L4092     too many identifier manipulation DLLs 
  17192.            Explanation: Too many identifier manipulator dynamic link libraries 
  17193.            have been specified.  These DLLs are specified in object files, and 
  17194.            are used by LINK386 to demangle compiler generated mangled names 
  17195.            into function prototypes when printing an error messages. Error 
  17196.            messages may not be demangled for some object files. 
  17197.            Action: Reduce the number of different compilers used to create the 
  17198.            objects. 
  17199.  
  17200.  L4093     cannot initialize identifier manipulation DLL name 
  17201.            Explanation: LINK386 detected an error while trying to initialize an 
  17202.            identifier manipulator dynamic link library.  This DLL was specified 
  17203.            in an object file, and is used by LINK386 to demangle a compiler 
  17204.            generated mangled name into a function prototype when printing an 
  17205.            error message. Error messages will not be demangled for this object 
  17206.            file. 
  17207.            Action: Make sure the appropriate identifier manipulator DLL is in 
  17208.            the LIBPATH. 
  17209.  
  17210.  L4094     increasing stack size from number to number 
  17211.            Explanation: The stack size specified by either 
  17212.  
  17213.              1. size of a segment with combine type stack 
  17214.              2. STACKSIZE statement in the .DEF file 
  17215.              3. /STACK LINK386 command line option 
  17216.  
  17217.            will cause a system error if the program is executed on an OS/2 2.x 
  17218.            system.  LINK386 has changed the stacksize to a larger value to 
  17219.            preserve compatibility. 
  17220.            Action: No action required, LINK386 has corrected the problem.  To 
  17221.            eliminate the warning message, restart LINK386 and specify the new 
  17222.            stack size. 
  17223.  
  17224.  
  17225. ΓòÉΓòÉΓòÉ 24.1.7. Conditions That Can Cause LINK386 Error 2002 ΓòÉΓòÉΓòÉ
  17226.  
  17227. LINK386 Error 2002 can be caused by the following conditions: 
  17228.  
  17229.      A group is larger than 64K. 
  17230.      The program contains an intersegment short jump or intersegment short 
  17231.       call. 
  17232.      The name of a data item in the program conflicts with that of a 
  17233.       subroutine in a library included in the link. 
  17234.      An EXTRN declaration in an assembler language source file appeared inside 
  17235.       the body of a segment, as in the following example: 
  17236.  
  17237.             code    SEGMENT public  'CODE'
  17238.                     EXTRN   main:far
  17239.             start   PROC    far
  17240.                     call    main
  17241.                     ret
  17242.             start   ENDP
  17243.             code    ENDS
  17244.  
  17245.       The following construction is preferred: 
  17246.  
  17247.                     EXTRN   main:far
  17248.             code    SEGMENT public  'CODE'
  17249.             start   PROC    far
  17250.                     call    main
  17251.                     ret
  17252.             start   ENDP
  17253.             code    ENDS
  17254.  
  17255.  
  17256. ΓòÉΓòÉΓòÉ 24.2. Make Message File (MKMSGF) Error Messages ΓòÉΓòÉΓòÉ
  17257.  
  17258.  MKMSGF: Codepage %s is all zeroes 
  17259.            Explanation: The code-page ID specified with the /P option is zero. 
  17260.            The message file is built with a code-page of zero. 
  17261.            Action: Retry the command using the correct code-page specification. 
  17262.  
  17263.  MKMSGF: Codepage %s error in numeric conversion 
  17264.            Explanation: The code-page ID specified with the /P option is not 
  17265.            numeric. The message file is built with a code-page of zero. 
  17266.            Action: Retry the command using the correct code-page specification. 
  17267.  
  17268.  MKMSGF: Codepage %s is too large 
  17269.            Explanation: The code-page ID specified with the /P option is too 
  17270.            large. The message file is built with a code-page of zero. 
  17271.            Action: Retry the command using the correct code-page specification. 
  17272.  
  17273.  MKMSGF: Country %u is not supported 
  17274.            Explanation: The country ID specified within the /D option is not 
  17275.            supported. MKMSGF processing is stopped. 
  17276.            Action: Retry the command using the correct country code 
  17277.            specification. 
  17278.  
  17279.  MKMSGF: DBCS code page not found 
  17280.            Explanation: No DBCS code page has been found that supports the DBCS 
  17281.            range specified in the /D option.  MKMSGF processing is stopped. 
  17282.            Action: Retry the command using the correct DBCS ranges or country 
  17283.            ID for the input message file. 
  17284.  
  17285.  MKMSGF: Error reading input file 
  17286.            Explanation: Error during input from source file. 
  17287.            Action: Make sure the source message file exists and that the drive 
  17288.            is ready.  Retry the command. 
  17289.  
  17290.  MKMSGF: Error writing output file 
  17291.            Explanation: Error during output to target file. 
  17292.            Action: Make sure there is sufficient disk space or that the drive 
  17293.            is ready.  Retry the command. 
  17294.  
  17295.  MKMSGF: File not found 
  17296.            Explanation: Input file could not be found. 
  17297.            Action: Retry the command, using the correct source message file 
  17298.            name. 
  17299.  
  17300.  MKMSGF: Infile[.ext] outfile[.ext] [/V] 
  17301.  [/D <DBCS range or country>] [/P <code page>] [/L <language id,sub id>] 
  17302.            Explanation: This is the proper syntax for MKMSGF.  It is displayed 
  17303.            when no operands are specified on the command line and after some 
  17304.            syntax errors. 
  17305.            Action: None. 
  17306.  
  17307.  MKMSGF: Input file same as output file 
  17308.            Explanation: The input and output file names are the same. 
  17309.            Processing is stopped. 
  17310.            Action: Correct the command line or the control file and restart 
  17311.            MKMSGF. 
  17312.  
  17313.  MKMSGF: Insufficient storage 
  17314.            Explanation: Not enough storage to execute program or too many 
  17315.            messages in the file.  Message limit is about 6000. 
  17316.            Action: Reduce the number of programs running in your system, or 
  17317.            reduce the size of the message file by either deleting messages or 
  17318.            by reducing the size of each message.  Retry the command. 
  17319.  
  17320.  MKMSGF: Invalid language or sub id 
  17321.            Explanation: The language family ID specified with the /L option is 
  17322.            not supported. 
  17323.            Action: Retry the command using the correct language family ID. 
  17324.  
  17325.  MKMSGF: Invalid message file format 
  17326.            Explanation: Input file is not a recognizable message text file. 
  17327.            Action: If an incorrect file name was entered, retry the command 
  17328.            with the correct source message file name. 
  17329.  
  17330.  MKMSGF: Language family %s is all zeroes 
  17331.            Explanation: The language family ID specified with the /L option is 
  17332.            zero. The message file is built with a language family ID of zero. 
  17333.            Action: Retry the command using the correct language family ID. 
  17334.  
  17335.  MKMSGF: Language family %s error in numeric conversion 
  17336.            Explanation: The language family ID specified with the /L option is 
  17337.            not numeric.  The message file is built with a language family ID of 
  17338.            zero. 
  17339.            Action: Retry the command using the correct language family ID. 
  17340.  
  17341.  MKMSGF: Language family %s is too large 
  17342.            Explanation: The language family ID specified with the /L option is 
  17343.            not supported.  The message file is built with a language family ID 
  17344.            of zero. 
  17345.            Action: Retry the command using the correct language family ID. 
  17346.  
  17347.  MKMSGF: Message ID out of sequence 
  17348.            Explanation: A message was detected that was out of the required 
  17349.            sequential order. 
  17350.            Action: Correct the error by editing your source message file and 
  17351.            renumbering the messages. You might also want to delete or insert 
  17352.            the appropriate message numbers to achieve the required sequential 
  17353.            order. 
  17354.  
  17355.  MKMSGF: Message XXXX too long 
  17356.            Explanation: The message was too long to be processed (limit is 
  17357.            approximately 2K characters). 
  17358.            Action: Correct the error by editing your source message file and 
  17359.            making the message shorter. Then, retry the command. 
  17360.  
  17361.  MKMSGF: More than NN codepages entered 
  17362.            Explanation: A maximum of NN code-page IDs can be specified for a 
  17363.            single message file. Only the first NN is accepted.ECE 
  17364.            Action: Retry the command using the correct code-page 
  17365.            specifications. 
  17366.  
  17367.  MKMSGF: No sub id using 1 default 
  17368.            Explanation: The language version ID specified with the /L option is 
  17369.            either invalid or not supported.  The message file is built using 
  17370.            the default value shown. 
  17371.            Action: Retry the command using the correct language version ID. 
  17372.  
  17373.  MKMSGF: Sub id %s error in numeric conversion 
  17374.            Explanation: The language version specified with the /L option is 
  17375.            not numeric. The message file is built with a default language 
  17376.            version. 
  17377.            Action: Retry the command using the correct language version ID. 
  17378.  
  17379.  MKMSGF: Syntax error 
  17380.            Explanation: You entered the command incorrectly. 
  17381.            Action: Retry the command using proper syntax. To display the proper 
  17382.            syntax, type MKMSGF at the command line. 
  17383.  
  17384.  
  17385. ΓòÉΓòÉΓòÉ 24.3. Message Segment Binder (MSGBIND) Error Messages ΓòÉΓòÉΓòÉ
  17386.  
  17387.  MSGBIND: I/O error seeking infile 
  17388.            Explanation: A disk error occurred while seeking either the message 
  17389.            file or the .EXE file. 
  17390.            Action: Run CHKDSK on the drive containing the file and restart 
  17391.            MSGBIND. 
  17392.  
  17393.  MSGBIND: I/O error writing file 
  17394.            Explanation: A disk error occurred while writing messages to the 
  17395.            .EXE file. 
  17396.            Action: Run CHKDSK on the drive containing the .EXE file, and 
  17397.            restart MSGBIND. 
  17398.  
  17399.  MSGBIND: Must specify .EXE file before message file 
  17400.            Explanation: The input file was in error. 
  17401.            Action: Correct input file. 
  17402.  
  17403.  MSGBIND: Must specify message file before message number 
  17404.            Explanation: The input file was in error. 
  17405.            Action: Correct the input file. 
  17406.  
  17407.  MSGBIND: Out of memory, needed xxxx bytes 
  17408.            Explanation: There was not enough memory available to run MSGBIND. 
  17409.            Action: Reduce the number of programs presently running in your 
  17410.            system and restart MSGBIND. 
  17411.  
  17412.  MSGBIND: Premature EOF during copy 
  17413.            Explanation: The .EXE file was not built correctly. 
  17414.            Action: Rebuild the .EXE file and restart MSGBIND. 
  17415.  
  17416.  MSGBIND: Unable to create temp file-MSGBIND.TMP 
  17417.            Explanation: An error occurred while creating the intermediary file 
  17418.            MSGBIND.TMP. 
  17419.            Action: Delete or move files to make disk space available. If 
  17420.            MSGBIND.TMP is present as a read-only file, it must first be 
  17421.            deleted. Restart MSGBIND. 
  17422.  
  17423.  MSGBIND: Unable to open xxxxxxxx 
  17424.            Explanation: The input file specified was not found or an error 
  17425.            occurred when opening the message file. 
  17426.            Action: Restart MSGBIND using the correct input file name or a 
  17427.            backup copy of the message file. 
  17428.  
  17429.  Number of Message Files exceeded. Only nnn allowed 
  17430.            Explanation: The number of message files specified in the input file 
  17431.            exceeds the maximum number of files that MSGBIND can process at one 
  17432.            time. 
  17433.            Action: Correct the input file or combine message files, and then 
  17434.            restart MSGBIND. 
  17435.  
  17436.  Reading messages from xxxxxxxx 
  17437.            Explanation: Messages from the displayed message file are being read 
  17438.            into memory. 
  17439.            Action: None. This message is for information only. 
  17440.  
  17441.  Reading messages from xxxxxxxx -file not found 
  17442.            Explanation: The message file was not found in the path specified in 
  17443.            the input file. 
  17444.            Action: Edit the input file, correcting the path or file name, or 
  17445.            both.  Restart MSGBIND. 
  17446.  
  17447.  Reading messages from xxxxxxxx -not created with MKMSGF program 
  17448.            Explanation: The message file displayed was not created using the 
  17449.            MKMSGF program. 
  17450.            Action: Convert the source message file to a formatted message file 
  17451.            using the MKMSGF program, and restart MSGBIND. See the Make Message 
  17452.            File (MKMSGF). 
  17453.  
  17454.  Reading messages from xxxxxxxx -not enough memory 
  17455.            Explanation: There was not enough memory available to store the 
  17456.            messages. 
  17457.            Action: Reduce the number of programs running in your system, and 
  17458.            restart MSGBIND. 
  17459.  
  17460.  The object that would contain the bound messages would be too large. Refer to 
  17461.  the Toolkit Documentation for more information. 
  17462.            Explanation: (self explanatory) 
  17463.            Action: Do one or more, of the following: 
  17464.  
  17465.              1. Modify the module definition file to isolate the message 
  17466.                 object, and then relink the application. 
  17467.              2. Reduce the number of messages to be bound to the application as 
  17468.                 specified in the input file. 
  17469.              3. Reduce the size of the messages and rebuild the message file 
  17470.                 with MKMSGF. 
  17471.              4. Then restart MSGBIND. 
  17472.  
  17473.  Unable to bind message nnnn, message segment would exceed 64K. The remaining 
  17474.  messages will NOT be bound. 
  17475.            Explanation: (self explanatory) 
  17476.            Action: Do one or more, of the following: 
  17477.  
  17478.              1. Modify the module definition file to isolate the message 
  17479.                 object, and then relink the application. 
  17480.              2. Reduce the number of messages to be bound to the application as 
  17481.                 specified in the input file. 
  17482.              3. Reduce the size of the messages and rebuild the message file 
  17483.                 with MKMSGF. 
  17484.              4. Then restart MSGBIND. 
  17485.  
  17486.  Unable to locate call to Dos32GetMessage, messages will not be bound. 
  17487.            Explanation: The executable file to be modified makes no function 
  17488.            calls to the message retriever, or was not linked with the correct 
  17489.            library file. 
  17490.            Action: If the application does use the message retriever function, 
  17491.            such as DosGetMessage, relink the application using the correct 
  17492.            library file, and then restart MSGBIND. 
  17493.  
  17494.            If not, messages cannot be bound to the application. 
  17495.  
  17496.  Updating xxxxxxxx 
  17497.            Explanation: The .EXE file name displayed is being updated with the 
  17498.            requested messages. 
  17499.            Action: None. This message is for information only. 
  17500.  
  17501.  Updating xxxxxxxx -file not found 
  17502.            Explanation: The .EXE file name was not found in the path specified 
  17503.            in the input file. 
  17504.            Action: Edit the input file, correcting the path or file name, or 
  17505.            both.  Restart MSGBIND. 
  17506.  
  17507.  Updating xxxxxxxx -not linked with MSGSEG.OBJ 
  17508.            Explanation: The .EXE file name displayed made no DosGetMessage 
  17509.            functions, or the .EXE file was not linked with the correct library. 
  17510.            Messages can only be bound to applications that call message 
  17511.            retriever functions, such as DosGetMessage. 
  17512.            Action: If the .EXE file does make calls to message retriever 
  17513.            functions, relink the application using the correct library, and 
  17514.            restart MSGBIND. 
  17515.  
  17516.  usage: MSGBIND scriptfile 
  17517.            Explanation: The command was entered incorrectly. 
  17518.            Action: Restart MSGBIND. Refer to Syntax for the correct syntax. 
  17519.  
  17520.  Warning: No msgseg data found in new executable 
  17521.            Explanation: The executable file to be modified makes no function 
  17522.            calls to the message retriever, or was not linked with the correct 
  17523.            library file. 
  17524.            Action: If the application does use the message retriever function, 
  17525.            such as DosGetMessage, relink the application using the correct 
  17526.            library file, and then restart MSGBIND. 
  17527.  
  17528.            If not, messages cannot be bound to the application. 
  17529.  
  17530.  WARNING: Skipping messages for this file 
  17531.            Explanation: The .EXE file was in error, so the messages were not 
  17532.            bound to it. Either the .EXE file does not exist, or it has not been 
  17533.            linked with the correct library. 
  17534.            Action: If the .EXE file name is correct, relink the application 
  17535.            using the correct library, and restart MSGBIND. 
  17536.  
  17537.  WARNING: Skipping message numbers for this file 
  17538.            Explanation: The message file was in error, so all messages from 
  17539.            this message file were ignored. The message file might not exist, 
  17540.            might not be formatted correctly, or there might not be enough 
  17541.            memory to store all the messages. 
  17542.            Action: If the message file name is correct and has been correctly 
  17543.            formatted, check the memory available for the file. Restart MSGBIND. 
  17544.  
  17545.  WARNING: xxxx is an invalid message number 
  17546.            Explanation: The message number specified was not found in the 
  17547.            message file. 
  17548.            Action: Edit the input file and correct any message numbers that are 
  17549.            in error. Restart MSGBIND. 
  17550.  
  17551.  Writing messages 
  17552.            Explanation: The .EXE file is being updated with the messages 
  17553.            requested. 
  17554.            Action: None. This message is for information only. 
  17555.  
  17556.  
  17557. ΓòÉΓòÉΓòÉ 24.4. Resource Compiler Error Messages ΓòÉΓòÉΓòÉ
  17558.  
  17559. The error, warning, and information messages produced by the Resource Compiler 
  17560. (RC) are listed below.  The message number indicates the severity of the error: 
  17561.  
  17562.  Message Number      Severity 
  17563.  
  17564.  1000 - 1999         Severe Errors 
  17565.  
  17566.  2000 - 2999         Error Messages 
  17567.  
  17568.  3000 - 3999         Warning Messages 
  17569.  
  17570.  4000 - 4999         Informational Messages 
  17571.  
  17572.  When the compiler encounters a severe error, it displays the message and stops 
  17573.  processing.  When the compiler encounters other types of errors, it displays 
  17574.  the error message and continues processing. For any input file containing a 
  17575.  severe error or an error, the compiler will not produce an output (.RES) file. 
  17576.  
  17577.  
  17578. ΓòÉΓòÉΓòÉ 24.4.1. Severe Errors: 1000 - 1999 ΓòÉΓòÉΓòÉ
  17579.  
  17580.  R1001   RC cannot open file filename. 
  17581.  
  17582.          Explanation:  Resource Compiler was unable to open the given file. 
  17583.  
  17584.          Recovery:  Check the format of the file.  The same file might be in 
  17585.          use by another process. 
  17586.  
  17587.  R1002   RC could not find file filename. 
  17588.  
  17589.          Explanation:  Resource Compiler was unable to locate the given file. 
  17590.  
  17591.          Recovery:  Check the spelling of the file name and its path, and be 
  17592.          sure that the file exists. 
  17593.  
  17594.  R1003   RC had an I/O error with file filename. 
  17595.  
  17596.          Explanation:  Resource Compiler was unable to read or write the given 
  17597.          file. 
  17598.  
  17599.          Recovery:  Check the spelling of the file name and its path.  If the 
  17600.          file exists, confirm that its format is correct. 
  17601.  
  17602.  R1004   You did not specify an input file. 
  17603.  
  17604.          Explanation:  You did not name an input file on the command line. 
  17605.  
  17606.          Recovery:  Correct the syntax of your command line. 
  17607.  
  17608.  R1005   You did not specify an output file. 
  17609.  
  17610.          Explanation:  You did not name an output file on the command line, in 
  17611.          a context which required an output file name. 
  17612.  
  17613.          Recovery:  Correct the syntax of your command line. 
  17614.  
  17615.  R1006   The system DBCS environment is not correct. 
  17616.  
  17617.          Explanation:  Resource Compiler detected an error when examining your 
  17618.          system's double-byte character set environment vector. 
  17619.  
  17620.          Recovery:  Correct your system's double-byte character set 
  17621.          environment. 
  17622.  
  17623.  R1007   You specified more than one output file on the command line. 
  17624.  
  17625.          Explanation:  You specified extra file operands following the output 
  17626.          file name on your command line. 
  17627.  
  17628.          Recovery:  Correct the syntax of your command line. 
  17629.  
  17630.  R1008   The input and output file names must be different; both are filename. 
  17631.  
  17632.          Explanation:  On the command line, your input and output file names 
  17633.          were identical. 
  17634.  
  17635.          Recovery:  Give a different name for the output file. 
  17636.  
  17637.  R1009   RC detected errors during compilation. 
  17638.  
  17639.          Explanation:  The compiler was unable to complete the compile process. 
  17640.  
  17641.          Recovery:  Correct the errors noted on your display. 
  17642.  
  17643.  R1010   RC read an unexpected end of file on filename. 
  17644.  
  17645.          Explanation:  File filename did not contain certain data that Resource 
  17646.          Compiler needed. 
  17647.  
  17648.          Recovery:  Correct the contents of the file. 
  17649.  
  17650.  R1012   RC has an internal data error. 
  17651.  
  17652.          Explanation:  Resource Compiler detected an incorrect data state. 
  17653.  
  17654.          Recovery: Follow your local problem reporting procedures to notify IBM 
  17655.          of the error. 
  17656.  
  17657.  R1013   RC encountered errors in input file filename; resources will not be 
  17658.          bound. 
  17659.  
  17660.          Explanation:  Resource Compiler could not continue the compile 
  17661.          process. 
  17662.  
  17663.          Recovery:  Correct the file according to the error messages printed. 
  17664.  
  17665.  R1014   RC has an internal logic error -- consult your IBM representative. 
  17666.  
  17667.          Explanation:  Resource Compiler detected an incorrect internal state. 
  17668.  
  17669.          Recovery:  Follow your local problem reporting procedures to notify 
  17670.          IBM of the error. 
  17671.  
  17672.  R1015   The executable file was marked not loadable. 
  17673.  
  17674.          Explanation:  You requested that Resource Compiler bind resources to 
  17675.          an executable file, but the file could not be loaded. 
  17676.  
  17677.          Recovery:  Use a loadable executable file for binding resources. 
  17678.  
  17679.  R1016   RC failed to allocate memory. 
  17680.  
  17681.          Explanation:  A request for system memory could not be satisfied. 
  17682.  
  17683.          Recovery:  Your system's swapper file might not have enough disk space 
  17684.          to grow to a necessary size.  Clear some space on the device 
  17685.          containing your swapper file. 
  17686.  
  17687.  R1017   Not enough memory is available. 
  17688.  
  17689.          Explanation:  Tried an operation that use more than the available 
  17690.          memory. 
  17691.  
  17692.          Recovery:  Stop some programs to give more memory. 
  17693.  
  17694.  R1018   RC cannot open the file. 
  17695.  
  17696.          Explanation:  Resource Compiler attempted a file I/O operation which 
  17697.          was unsuccessful. 
  17698.  
  17699.          Recovery:  Check the spelling of the file name and its path, and be 
  17700.          sure that the file exists.  Be sure that other processes have released 
  17701.          the file for operations by the Resource Compiler. 
  17702.  
  17703.  R1019   RC cannot read from the file. 
  17704.  
  17705.          Explanation:  Resource Compiler attempted a file I/O operation which 
  17706.          was unsuccessful. 
  17707.  
  17708.          Recovery:  Check the spelling of the file name and its path, and be 
  17709.          sure that the file exists.  Be sure that other processes have released 
  17710.          the file for operations by the Resource Compiler. 
  17711.  
  17712.  R1020   RC cannot write to the file. 
  17713.  
  17714.          Explanation:  Resource Compiler attempted a file I/O operation which 
  17715.          was unsuccessful. 
  17716.  
  17717.          Recovery:  Check the spelling of the file name and its path, and be 
  17718.          sure that the file exists.  Be sure that other processes have released 
  17719.          the file for operations by the Resource Compiler. 
  17720.  
  17721.  R1021   RC cannot seek to a file. 
  17722.  
  17723.          Explanation:  Resource Compiler attempted a file I/O operation which 
  17724.          was unsuccessful. 
  17725.  
  17726.          Recovery:  Check the spelling of the file name and its path, and be 
  17727.          sure that the file exists.  Be sure that other processes have released 
  17728.          the file for operations by the Resource Compiler. 
  17729.  
  17730.  R1022   The file has no data. 
  17731.  
  17732.          Explanation:  Resource Compiler attempted to read an empty file. 
  17733.  
  17734.          Recovery:  Confirm that your input files have the proper data format. 
  17735.  
  17736.  R1025   Codepage could not be found on this system. 
  17737.  
  17738.          Explanation:  The code page specified does not exist. 
  17739.  
  17740.          Recovery:  Specify an existing code page. 
  17741.  
  17742.  
  17743. ΓòÉΓòÉΓòÉ 24.4.2. Error Messages: 2000 - 2999 ΓòÉΓòÉΓòÉ
  17744.  
  17745.  R2002   RC expected at least one argument for option. 
  17746.  
  17747.          Explanation:  You coded command-line option option without argument. 
  17748.  
  17749.          Recovery:  Supply the required argument for the option. 
  17750.  
  17751.  R2003   This input is incorrect: 
  17752.  
  17753.          Explanation:  The given text is incorrect. 
  17754.  
  17755.          Recovery:  Correct the syntax of the statement. 
  17756.  
  17757.  R2004   RC encountered an incorrect character in the source file. 
  17758.  
  17759.          Explanation:  The input file had a character which was incorrect in 
  17760.          context. 
  17761.  
  17762.          Recovery:  Remove the incorrect character from the file. 
  17763.  
  17764.  R2009   You defined too many macros from the command line. 
  17765.  
  17766.          Explanation:  You specified more than eight macro definitions on the 
  17767.          command line. 
  17768.  
  17769.          Recovery:  Supply extra macro definitions as #define statements within 
  17770.          an input file. 
  17771.  
  17772.  R2010   You specified the incorrect code page value value. 
  17773.  
  17774.          Explanation:  You coded command-line option -cp or -k or environment 
  17775.          variable DBCS but gave an incorrect value for the code page. 
  17776.  
  17777.          Recovery:  Use a value from the table of code pages and country codes 
  17778.          in "COUNTRYCODE" in the OS/2 Warp Control Program Programming Guide 
  17779.          and Reference. 
  17780.  
  17781.  R2011   You specified no code page value. 
  17782.  
  17783.          Explanation:  You coded command-line option -cp or -k or environment 
  17784.          variable DBCS but gave no value for the code page. 
  17785.  
  17786.          Recovery:  Use a value from the table of code pages and country codes 
  17787.          in "COUNTRYCODE" in the OS/2 Warp Control Program Programming Guide 
  17788.          and Reference. 
  17789.  
  17790.  R2013   The resource identifiers have too many long strings. 
  17791.  
  17792.          Explanation:  Your resource data contained more than 64K bytes of 
  17793.          strings used as resource identifiers.  The resources could not be 
  17794.          bound to the executable file. 
  17795.  
  17796.          Recovery:  Use fewer characters in the string identifiers of your 
  17797.          resource file. 
  17798.  
  17799.  R2014   RC cannot delete old resources within instance pages. 
  17800.  
  17801.          Explanation:  The input executable file contained original resources 
  17802.          inside instance pages. 
  17803.  
  17804.          Recovery:  Do not link resources into the executable file prior to 
  17805.          running Resource Compiler. 
  17806.  
  17807.  R2015   The resources have too many objects. 
  17808.  
  17809.          Explanation:  The input executable file contained an incorrect format. 
  17810.  
  17811.          Recovery:  Correct the object table of the input file. 
  17812.  
  17813.  R2016   The page table has too many entries. 
  17814.  
  17815.          Explanation:  The input executable file contained too many pages. 
  17816.  
  17817.          Recovery:  Correct the page table of the input file. 
  17818.  
  17819.  R2017   The executable file has too many fixups. 
  17820.  
  17821.          Explanation:  The input executable file contained too many fixups. 
  17822.  
  17823.          Recovery:  Correct the fixup page table of the input file. 
  17824.  
  17825.  R2018   RC cannot write a resident Format Directive. 
  17826.  
  17827.          Explanation:  The input executable file contained resident format 
  17828.          directives which the compiler could not rewrite during the binding 
  17829.          operation. 
  17830.  
  17831.          Recovery:  Correct the format directives table of the input file. 
  17832.  
  17833.  R2019   RC cannot read the OS/2 segment table in file filename. 
  17834.  
  17835.          Explanation:  The input executable file was not in the correct format. 
  17836.  
  17837.          Recovery:  Correct the segment table of the input file. 
  17838.  
  17839.  R2020   RC cannot delete temporary file filename. 
  17840.  
  17841.          Explanation:  The temporary executable file could not be deleted. 
  17842.  
  17843.          Recovery:  Be sure that you have specified a value for the TMP or TEMP 
  17844.          environment variable. 
  17845.  
  17846.  R2021   RC cannot write extended attributes for filename. 
  17847.  
  17848.          Explanation:  Resource Compiler was unable to write extended 
  17849.          attributes to the output executable file. 
  17850.  
  17851.          Recovery:  Be sure that no other process is using the executable file. 
  17852.  
  17853.  R2022   The default icon exceeds 64K. 
  17854.  
  17855.          Explanation:  The input executable file contained a default icon in 
  17856.          excess of 64K in size. 
  17857.  
  17858.          Recovery:  Use a default icon smaller than 64K. 
  17859.  
  17860.  R2023   The association table exceeds 64K. 
  17861.  
  17862.          Explanation:  The input executable file contained an association table 
  17863.          in excess of 64K in size. 
  17864.  
  17865.          Recovery:  Use an association table smaller than 64K. 
  17866.  
  17867.  R2024   You must specify an executable file name. 
  17868.  
  17869.          Explanation:  You did not specify the name of an executable file to 
  17870.          which to bind resources. 
  17871.  
  17872.          Recovery:  Specify the name of an executable file. 
  17873.  
  17874.  R2025   You must specify a resource or script file name. 
  17875.  
  17876.          Explanation:  You did not specify the name of an input file. 
  17877.  
  17878.          Recovery:  Specify the name of an input file. 
  17879.  
  17880.  R2026   RC encountered an error while binding resources to executable file 
  17881.          filename. 
  17882.  
  17883.          Explanation:  During the binding step, Resource Compiler found errors 
  17884.          described in other messages. 
  17885.  
  17886.          Recovery:  Follow the recovery steps given for the accompanying 
  17887.          messages. 
  17888.  
  17889.  R2027   RC encountered an error while reading the resource file. 
  17890.  
  17891.          Explanation:  Resource Compiler had an I/O error on the binary 
  17892.          resource file. 
  17893.  
  17894.          Recovery:  Confirm the spelling of the file name and path, and be sure 
  17895.          that no other process is using a file of that name. 
  17896.  
  17897.  R2028   RC encountered an error while writing the resource file. 
  17898.  
  17899.          Explanation:  Resource Compiler had an I/O error on the binary 
  17900.          resource file. 
  17901.  
  17902.          Recovery:  Confirm the spelling of the file name and path, and be sure 
  17903.          that no other process is using a file of that name. 
  17904.  
  17905.  R2030   You must specified a resource and a script file name. 
  17906.  
  17907.          Explanation:  Resource Compiler could not determine the names of the 
  17908.          input script file and the output binary file. 
  17909.  
  17910.          Recovery:  Give names for both of these files on the command line. 
  17911.  
  17912.  R2031   The executable file has an unknown format. 
  17913.  
  17914.          Explanation:  You tried to bind resources to an executable file in an 
  17915.          unknown format. 
  17916.  
  17917.          Recovery:  Use an executable file in either the NE (16-bit) or LX 
  17918.          (32-bit) linear executable format. 
  17919.  
  17920.  R2033   You specified the duplicate operand, which already exist in the group. 
  17921.  
  17922.          Explanation:  You used a command line operand more than once. 
  17923.  
  17924.          Recovery:  Remove the extra operand specification. 
  17925.  
  17926.  R2034   RC cannot create resource item type 'type' and id 'number'. 
  17927.  
  17928.          Explanation:  One of your resource statements specified an incorrect 
  17929.          combination of resource type and resource ID. 
  17930.  
  17931.          Recovery:  Do not duplicate resource IDs of the same type. 
  17932.  
  17933.  R2035   RC cannot create resource item type 'type' and id 'string'. 
  17934.  
  17935.          Explanation:  One of your resource statements specified an incorrect 
  17936.          combination of resource type and resource ID. 
  17937.  
  17938.          Recovery:  Do not duplicate resource IDs of the same type. 
  17939.  
  17940.  R2036   This resource name is too long (limit 512): 
  17941.  
  17942.          Explanation:  You coded the given name as a resource id, but its 
  17943.          length exceeds the legal limit. 
  17944.  
  17945.          Recovery:  Use a resource name shorter than 512 characters. 
  17946.  
  17947.  R2037   RC failed to add a resource.  The return code is nnnnn. 
  17948.  
  17949.          Explanation:  An error occurred while creating a resource. 
  17950.  
  17951.          Recovery:  Refer to the OS/2 return code nnnnn for more information. 
  17952.  
  17953.  R2038   The script file has an incorrect integer or hex or octal literal. 
  17954.  
  17955.          Explanation:  You provided a numeric literal in an incorrect format, 
  17956.          or with a value out of the legal range. 
  17957.  
  17958.          Recovery:  Correct the format or value of the literal. 
  17959.  
  17960.  R2039   The script file has an incorrect floating point literal. 
  17961.  
  17962.          Explanation:  You provided a numeric literal in an incorrect format, 
  17963.          or with a value out of the legal range. 
  17964.  
  17965.          Recovery:  Correct the format or value of the literal. 
  17966.  
  17967.  R2040   The script file has an incorrect floating point value. 
  17968.  
  17969.          Explanation:  You provided a numeric literal in an incorrect format, 
  17970.          or with a value out of the legal range. 
  17971.  
  17972.          Recovery:  Correct the format or value of the literal. 
  17973.  
  17974.  R2041   The script file has an integer literal too large for its type. 
  17975.  
  17976.          Explanation:  You provided a numeric literal in an incorrect format, 
  17977.          or with a value out of the legal range. 
  17978.  
  17979.          Recovery:  Correct the format or value of the literal. 
  17980.  
  17981.  R2042   You specified a character literal with more than one byte. 
  17982.  
  17983.          Explanation:  You provided a character literal in an incorrect format, 
  17984.          or with a value out of the legal range. 
  17985.  
  17986.          Recovery:  Correct the format or value of the literal. 
  17987.  
  17988.  R2043   You specified an empty character literal. 
  17989.  
  17990.          Explanation:  You provided a character literal in an incorrect format, 
  17991.          or with a value out of the legal range. 
  17992.  
  17993.          Recovery:  Correct the format or value of the literal. 
  17994.  
  17995.  R2044   The script file has a Hex or Octal escape sequence out of range. 
  17996.  
  17997.          Explanation:  You provided an escape sequence in an incorrect format, 
  17998.          or with a value out of the legal range. 
  17999.  
  18000.          Recovery:  Correct the format or value of the sequence. 
  18001.  
  18002.  R2045   A Hex escape sequence contained no hex digits. 
  18003.  
  18004.          Explanation:  You provided an escape sequence in an incorrect format, 
  18005.          or with a value out of the legal range. 
  18006.  
  18007.          Recovery:  Correct the format or value of the sequence. 
  18008.  
  18009.  R2046   You specified an incorrect escape sequence. 
  18010.  
  18011.          Explanation:  You provided an escape sequence in an incorrect format, 
  18012.          or with a value out of the legal range. 
  18013.  
  18014.          Recovery:  Correct the format or value of the sequence. 
  18015.  
  18016.  R2047   The given directive requires a valid macro name. 
  18017.  
  18018.          Explanation:  You specified preprocessor directive on which the 
  18019.          expected macro name was missing or incorrect. 
  18020.  
  18021.          Recovery:  Correct the macro name on the directive. 
  18022.  
  18023.  R2048   You specified an incorrect expression specified on a conditional 
  18024.          directive. 
  18025.  
  18026.          Explanation:  You specified an incorrect expression on an #if or #elif 
  18027.          preprocessor directive. 
  18028.  
  18029.          Recovery:  Correct the syntax of the expression. 
  18030.  
  18031.  R2049   The expression on a conditional directive results in division by zero. 
  18032.  
  18033.          Explanation:  You specified an incorrect expression on an #if or #elif 
  18034.          preprocessor directive. 
  18035.  
  18036.          Recovery:  Correct the syntax of the expression. 
  18037.  
  18038.  R2050   #elif or #else or #endif appeared in an incorrect context. 
  18039.  
  18040.          Explanation:  You specified an #elif or #else or #endif preprocessor 
  18041.          directive without a preceding #if or #ifdef or #ifndef preprocessor 
  18042.          directive. 
  18043.  
  18044.          Recovery:  Correct the logic of the preprocessor conditional blocks. 
  18045.  
  18046.  R2051   The preprocessor expected #endif but the input stream ended with open 
  18047.          scope. 
  18048.  
  18049.          Explanation:  You specified #if or #elif or #ifdef or #ifndef 
  18050.          preprocessor directive without a concluding #endif preprocessor 
  18051.          directive. 
  18052.  
  18053.          Recovery:  Correct the logic of the preprocessor conditional blocks. 
  18054.  
  18055.  R2052   You did not complete a #define parameter list before the end of the 
  18056.          source line. 
  18057.  
  18058.          Explanation:  You specified a function-type macro definition in a 
  18059.          #define preprocessor directive but did not end the parameter list with 
  18060.          a closing parenthesis. 
  18061.  
  18062.          Recovery:  Correct the syntax of the macro definition. 
  18063.  
  18064.  R2053   You specified an incorrect #define parameter list. 
  18065.  
  18066.          Explanation:  You specified a function-type macro definition in a 
  18067.          #define preprocessor directive but did not end the parameter list with 
  18068.          a closing parenthesis. 
  18069.  
  18070.          Recovery:  Correct the syntax of the macro definition. 
  18071.  
  18072.  R2054   #define parameter list has a duplicate parameter. 
  18073.  
  18074.          Explanation:  You repeated a parameter when specifying a function-type 
  18075.          macro. 
  18076.  
  18077.          Recovery:  Correct the syntax of the macro definition. 
  18078.  
  18079.  R2055   You invoked a macro with incorrect arguments. 
  18080.  
  18081.          Explanation:  You specified incorrect arguments to a macro with a 
  18082.          function-type definition. 
  18083.  
  18084.          Recovery:  Correct the syntax of the macro reference. 
  18085.  
  18086.  R2056   You did not complete a directive before the end of the source line. 
  18087.  
  18088.          Explanation:  You specified a preprocessor directive but did not 
  18089.          complete it on the same line. 
  18090.  
  18091.          Recovery:  Write the entire directive on the same line. 
  18092.  
  18093.  R2057   You did not end a character or string or #include literal before the 
  18094.          end of the line. 
  18095.  
  18096.          Explanation:  You specified a string or literal token which did not 
  18097.          end before the line ended. 
  18098.  
  18099.          Recovery:  Write the entire token on the same line. 
  18100.  
  18101.  R2058   An rcinclude statement must have a filename to include. 
  18102.  
  18103.          Explanation:  You specified an RCINCLUDE statement but omitted the 
  18104.          file name. 
  18105.  
  18106.          Recovery:  Code the name of the file on the RCINCLUDE statement. 
  18107.  
  18108.  R2059   A statement has an incorrect expression. 
  18109.  
  18110.          Explanation:  You specified an statement with an incorrect arithmetic 
  18111.          expression. 
  18112.  
  18113.          Recovery:  Correct the syntax of the expression. 
  18114.  
  18115.  R2060   The stringizing operator(#) appeared on a function-like macro. 
  18116.  
  18117.          Explanation:  You specified a stringizing operator on a function-like 
  18118.          macro. 
  18119.  
  18120.          Recovery:  Refer to C Language Reference for the rules governing the 
  18121.          stringizing operator. 
  18122.  
  18123.  R2061   You specified the Concatenation operator (##) incorrectly. 
  18124.  
  18125.          Explanation:  You specified a concatenation operator in an incorrect 
  18126.          context. 
  18127.  
  18128.          Recovery:  Refer to C Language Reference for the rules governing the 
  18129.          concatenation operator. 
  18130.  
  18131.  R2062   The script file has an incorrect wide character or wide string 
  18132.          literal. 
  18133.  
  18134.          Explanation:  You specified a wide character or wide string literal in 
  18135.          an incorrect format. 
  18136.  
  18137.          Recovery:  Refer to C Language Reference for the rules governing wide 
  18138.          characters and wide strings. 
  18139.  
  18140.  R2063   A literal has an incorrect multibyte character. 
  18141.  
  18142.          Explanation:  You specified a literal containing an incorrect 
  18143.          multibyte character. 
  18144.  
  18145.          Recovery:  Use only characters from your multibyte character set in 
  18146.          multibyte literal constants. 
  18147.  
  18148.  R2064   You used a wide character string on an #include. 
  18149.  
  18150.          Explanation:  You specified an #include preprocessor directive 
  18151.          containing a wide character string.  This usage is prohibited. 
  18152.  
  18153.          Recovery:  Correct the syntax of the directive. 
  18154.  
  18155.  R2065   A predefined macro can not be defined again. 
  18156.  
  18157.          Explanation:  You used a #define or #undef preprocessor directive to 
  18158.          redefine a predefined macro. These macro names cannot be changed using 
  18159.          directives. 
  18160.  
  18161.          Recovery:  For control over the values of macros, use macro names 
  18162.          which are not reserved for special use by the preprocessor. 
  18163.  
  18164.  R2066   A predefined macro can not be undefined. 
  18165.  
  18166.          Explanation:  You used a #define or #undef preprocessor directive to 
  18167.          undefine a predefined macro. These macro names cannot be changed using 
  18168.          directives. 
  18169.  
  18170.          Recovery:  For control over the values of macros, use macro names 
  18171.          which are not reserved for special use by the preprocessor. 
  18172.  
  18173.  R2067   The filename to be searched contained only whitespace. 
  18174.  
  18175.          Explanation:  You used an #include preprocessor directive to process a 
  18176.          file which had no tokens. 
  18177.  
  18178.          Recovery:  Eliminate the reference to the file, or supply the correct 
  18179.          information inside it. 
  18180.  
  18181.  R2068   The file cannot be searched because of missing include options. 
  18182.  
  18183.          Explanation:  You asked for a file to be included on an #include 
  18184.          directive and wrote the file name without a path name inside angle 
  18185.          brackets, and gave no path search specifications with the -I option. 
  18186.          With no search criteria, the preprocessor will be unable to locate the 
  18187.          file. 
  18188.  
  18189.          Recovery:  Specify search paths to the file by using the -I option. 
  18190.  
  18191.  R2069   You redefined a macro name with different replacement text. 
  18192.  
  18193.          Explanation:  You defined a macro, then redefined it to a different 
  18194.          value. 
  18195.  
  18196.          Recovery:  To change the value of a macro, first undefine it and then 
  18197.          use another #define directive. 
  18198.  
  18199.  R2076   An unexpected newline appeared within quotes. 
  18200.  
  18201.          Explanation:  You defined a string spanning more than one line, when 
  18202.          this usage is not permitted. 
  18203.  
  18204.          Recovery:  Remove the newline from the string. 
  18205.  
  18206.  R2077   A Hex escape must be followed by 2 or 4 hex digits. 
  18207.  
  18208.          Explanation:  You used a hexadecimal escape sequence in the wrong 
  18209.          format. 
  18210.  
  18211.          Recovery:  Only one-byte and two-byte characters are recognized as hex 
  18212.          escapes.  For example, use the form \x00 for a single-byte zero or 
  18213.          \x0000 for a double-byte zero. 
  18214.  
  18215.  R2078   A resource_Item has incorrect Window Data. 
  18216.  
  18217.          Explanation:  Resource Compiler encountered incorrect binary data 
  18218.          while examining the child windows of a resource. 
  18219.  
  18220.          Recovery:  The message appears together with other messages describing 
  18221.          the particular errors of the child window.  Follow the recovery 
  18222.          instructions of the accompanying messages. 
  18223.  
  18224.  R2079   You specified a non-numeric button item style. 
  18225.  
  18226.          Explanation:  You coded a field using a string token. 
  18227.  
  18228.          Recovery:  Replace the string by a defined numeric constant or 
  18229.          expression. 
  18230.  
  18231.  R2080   You specified a non-numeric combo box style. 
  18232.  
  18233.          Explanation:  You coded a field using a string token. 
  18234.  
  18235.          Recovery:  Replace the string by a defined numeric constant or 
  18236.          expression. 
  18237.  
  18238.  R2081   You specified a non-numeric control style. 
  18239.  
  18240.          Explanation:  You coded a field using a string token. 
  18241.  
  18242.          Recovery:  Replace the string by a defined numeric constant or 
  18243.          expression. 
  18244.  
  18245.  R2082   You specified a non-numeric entry field style. 
  18246.  
  18247.          Explanation:  You coded a field using a string token. 
  18248.  
  18249.          Recovery:  Replace the string by a defined numeric constant or 
  18250.          expression. 
  18251.  
  18252.  R2083   You specified a non-numeric frame style. 
  18253.  
  18254.          Explanation:  You coded a field using a string token. 
  18255.  
  18256.          Recovery:  Replace the string by a defined numeric constant or 
  18257.          expression. 
  18258.  
  18259.  R2084   You specified a non-numeric list box style. 
  18260.  
  18261.          Explanation:  You coded a field using a string token. 
  18262.  
  18263.          Recovery:  Replace the string by a defined numeric constant or 
  18264.          expression. 
  18265.  
  18266.  R2085   You specified a non-numeric static style. 
  18267.  
  18268.          Explanation:  You coded a field using a string token. 
  18269.  
  18270.          Recovery:  Replace the string by a defined numeric constant or 
  18271.          expression. 
  18272.  
  18273.  R2086   You specified a non-numeric window style. 
  18274.  
  18275.          Explanation:  You coded a field using a string token. 
  18276.  
  18277.          Recovery:  Replace the string by a defined numeric constant or 
  18278.          expression. 
  18279.  
  18280.  R2087   You specified a non-numeric control id. 
  18281.  
  18282.          Explanation:  You coded a field using a string token. 
  18283.  
  18284.          Recovery:  Replace the string by a defined numeric constant or 
  18285.          expression. 
  18286.  
  18287.  R2088   You specified a non-numeric resource id. 
  18288.  
  18289.          Explanation:  You coded a field using a string token. 
  18290.  
  18291.          Recovery:  Replace the string by a defined numeric constant or 
  18292.          expression. 
  18293.  
  18294.  R2089   You specified a non-numeric frame control flag. 
  18295.  
  18296.          Explanation:  You coded a field using a string token. 
  18297.  
  18298.          Recovery:  Replace the string by a defined numeric constant or 
  18299.          expression. 
  18300.  
  18301.  R2090   You specified an incorrect window class. 
  18302.  
  18303.          Explanation:  You coded a window class field using an unknown string 
  18304.          or number. 
  18305.  
  18306.          Recovery:  Use a correct value for the window class. 
  18307.  
  18308.  R2091   You specified an incorrect code page. 
  18309.  
  18310.          Explanation:  You coded a code page field using an unknown number. 
  18311.  
  18312.          Recovery:  Use a value from the table of code pages and country codes 
  18313.          in "COUNTRYCODE" in the OS/2 Warp Control Program Programming Guide 
  18314.          and Reference. 
  18315.  
  18316.  R2092   RC is using code page codepage. 
  18317.  
  18318.          Explanation:  You coded a code page field that is not defined.  The 
  18319.          compiler chose codepage as the code page value. 
  18320.  
  18321.          Recovery:  Use a value from the table of code pages and country codes 
  18322.          in "COUNTRYCODE" in the OS/2 Warp Control Program Programming Guide 
  18323.          and Reference. 
  18324.  
  18325.  R2093   You specified an incorrect memory or load option. 
  18326.  
  18327.          Explanation:  You used an incorrect memory or load option. 
  18328.  
  18329.          Recovery:  Valid memory options are FIXED, MOVEABLE, and DISCARDABLE. 
  18330.          Valid load options are PRELOAD and LOADONCALL. 
  18331.  
  18332.  R2094   You specified a non-numeric menu item style. 
  18333.  
  18334.          Explanation:  You used an incorrect menu item style. 
  18335.  
  18336.          Recovery:  Use a style as documented under MENUITEM Statement. 
  18337.  
  18338.  R2096   The value of the height must be from 0 to 65535. 
  18339.  
  18340.          Explanation:  You used an incorrect token in a numeric field. 
  18341.  
  18342.          Recovery:  Confirm that each macro you used has a definition.  You 
  18343.          might have omitted a field from a list of parameters separated by 
  18344.          commas. 
  18345.  
  18346.  R2097   You specified a non-numeric height. 
  18347.  
  18348.          Explanation:  You used an incorrect token in a numeric field. 
  18349.  
  18350.          Recovery:  Confirm that each macro you used has a definition.  You 
  18351.          might have omitted a field from a list of parameters separated by 
  18352.          commas. 
  18353.  
  18354.  R2098   The value of width must be from 0 to 65535. 
  18355.  
  18356.          Explanation:  You used an incorrect token in a numeric field. 
  18357.  
  18358.          Recovery:  Confirm that each macro you used has a definition.  You 
  18359.          might have omitted a field from a list of parameters separated by 
  18360.          commas. 
  18361.  
  18362.  R2099   You specified a non-numeric width. 
  18363.  
  18364.          Explanation:  You used an incorrect token in a numeric field. 
  18365.  
  18366.          Recovery:  Confirm that each macro you used has a definition.  You 
  18367.          might have omitted a field from a list of parameters separated by 
  18368.          commas. 
  18369.  
  18370.  R2100   The value of X Coordinate must be from -32768 to 32767. 
  18371.  
  18372.          Explanation:  You used an incorrect token in a numeric field. 
  18373.  
  18374.          Recovery:  Confirm that each macro you used has a definition.  You 
  18375.          might have omitted a field from a list of parameters separated by 
  18376.          commas. 
  18377.  
  18378.  R2101   You specified a non-numeric X Coordinate. 
  18379.  
  18380.          Explanation:  You used an incorrect token in a numeric field. 
  18381.  
  18382.          Recovery:  Confirm that each macro you used has a definition.  You 
  18383.          might have omitted a field from a list of parameters separated by 
  18384.          commas. 
  18385.  
  18386.  R2102   The value of Y Coordinate must be from -32768 to 32767. 
  18387.  
  18388.          Explanation:  You used an incorrect token in a numeric field. 
  18389.  
  18390.          Recovery:  Confirm that each macro you used has a definition.  You 
  18391.          might have omitted a field from a list of parameters separated by 
  18392.          commas. 
  18393.  
  18394.  R2103   You specified a non-numeric Y Coordinate. 
  18395.  
  18396.          Explanation:  You used an incorrect token in a numeric field. 
  18397.  
  18398.          Recovery:  Confirm that each macro you used has a definition.  You 
  18399.          might have omitted a field from a list of parameters separated by 
  18400.          commas. 
  18401.  
  18402.  R2106   A left parenthesis is incorrect or missing. 
  18403.  
  18404.          Explanation:  You used a numeric expression which lacked balanced 
  18405.          parentheses. 
  18406.  
  18407.          Recovery:  Correct the parentheses in the expression. 
  18408.  
  18409.  R2108   The value of a custom-resource type must be from 1 to 65535. 
  18410.  
  18411.          Explanation:  A RESOURCE statement contained a type field which 
  18412.          evaluated to a number outside the legal range. 
  18413.  
  18414.          Recovery:  Use a value from 1 to 65535 as a resource type. 
  18415.  
  18416.  R2109   You specified an incorrect Assocname in ASSOCTABLE. 
  18417.  
  18418.          Explanation:  An ASSOCTABLE statement contained an incorrect field as 
  18419.          indicated. 
  18420.  
  18421.          Recovery:  Use a legal value for the field.  The syntax rules appear 
  18422.          under ASSOCTABLE Statement. 
  18423.  
  18424.  R2110   You specified an incorrect File-match-string in ASSOCTABLE. 
  18425.  
  18426.          Explanation:  An ASSOCTABLE statement contained an incorrect field as 
  18427.          indicated. 
  18428.  
  18429.          Recovery:  Use a legal value for the field.  The syntax rules appear 
  18430.          under ASSOCTABLE Statement. 
  18431.  
  18432.  R2111   You specified an incorrect ea-flag in ASSOCTABLE. 
  18433.  
  18434.          Explanation:  An ASSOCTABLE statement contained an incorrect field as 
  18435.          indicated. 
  18436.  
  18437.          Recovery:  Use a legal value for the field.  The syntax rules appear 
  18438.          under ASSOCTABLE Statement. 
  18439.  
  18440.  R2112   An iconfile parameter is missing from the ASSOCTABLE. 
  18441.  
  18442.          Explanation:  An ASSOCTABLE statement contained an incorrect field as 
  18443.          indicated. 
  18444.  
  18445.          Recovery:  Use a legal value for the field.  The syntax rules appear 
  18446.          under ASSOCTABLE Statement. 
  18447.  
  18448.  R2113   You specified an incorrect parameter in SUBITEMSIZE. 
  18449.  
  18450.          Explanation:  A SUBITEMSIZE statement contained an incorrect value as 
  18451.          indicated. 
  18452.  
  18453.          Recovery:  Use a legal value for the field.  The syntax rules appear 
  18454.          under SUBITEMSIZE Statement. 
  18455.  
  18456.  R2114   The size value in SUBITEMSIZE must be 2 or greater. 
  18457.  
  18458.          Explanation:  A SUBITEMSIZE statement contained an incorrect value as 
  18459.          indicated. 
  18460.  
  18461.          Recovery:  Use a legal value for the field.  The syntax rules appear 
  18462.          under SUBITEMSIZE Statement. 
  18463.  
  18464.  R2115   A font file has an incorrect kern pair identifier or non-zero 
  18465.          usKerningPairs. 
  18466.  
  18467.          Explanation:  A FONT or RESOURCE statement referred to a font file 
  18468.          which has an incorrect binary format. 
  18469.  
  18470.          Recovery:  Correct the kerning information table in the referenced 
  18471.          font file. 
  18472.  
  18473.  R2116   A font file has an incorrect additional metrics identifier or font 
  18474.          signature. 
  18475.  
  18476.          Explanation:  A FONT statement referred to a file containing incorrect 
  18477.          data as indicated. 
  18478.  
  18479.          Recovery:  Use a properly-formatted font file. 
  18480.  
  18481.  R2117   You specified an incorrect data type in RCDATA. 
  18482.  
  18483.          Explanation:  An RCDATA statement contained an incorrect numeric or 
  18484.          string data item. 
  18485.  
  18486.          Recovery:  Correct the syntax of the item.  The syntax rules appear 
  18487.          under RCDATA Statement. 
  18488.  
  18489.  R2118   You specified an incorrect data type in RESOURCE. 
  18490.  
  18491.          Explanation:  RESOURCE statement contained an incorrect numeric or 
  18492.          string data item. 
  18493.  
  18494.          Recovery:  Correct the syntax of the item.  The syntax rules appear 
  18495.          under RESOURCE Statement. 
  18496.  
  18497.  R2119   You specified an incorrect text string or ordinal. 
  18498.  
  18499.          Explanation:  A statement contained an incorrect numeric or string 
  18500.          data item. 
  18501.  
  18502.          Recovery:  Correct the syntax of the item. 
  18503.  
  18504.  R2120   The value of an ordinal must be from 0 to 65535. 
  18505.  
  18506.          Explanation:  A statement contained an incorrect numeric or string 
  18507.          data item. 
  18508.  
  18509.          Recovery:  Correct the syntax of the item. 
  18510.  
  18511.  R2121   A logical OR cannot follow another logical OR. 
  18512.  
  18513.          Explanation:  A statement contained an incorrect expression with 
  18514.          logical operators. 
  18515.  
  18516.          Recovery:  Correct the syntax of the expression. 
  18517.  
  18518.  R2122   An integer value must follow the not operator. 
  18519.  
  18520.          Explanation:  A statement contained an incorrect expression with 
  18521.          logical operators. 
  18522.  
  18523.          Recovery:  Correct the syntax of the expression. 
  18524.  
  18525.  R2123   RC found an incorrect character in an Expression. 
  18526.  
  18527.          Explanation:  A statement contained an expression with incorrect 
  18528.          characters. 
  18529.  
  18530.          Recovery:  Correct the syntax of the expression. 
  18531.  
  18532.  R2124   An ordinal value must be preceded by a #. 
  18533.  
  18534.          Explanation:  A MENUITEM statement with style MIS_BITMAP accepts in 
  18535.          its text field a quoted value of a previously-defined bitmap, in the 
  18536.          form "#n", where n is the bitmap id. You coded this field in an 
  18537.          incorrect format as indicated in the message. 
  18538.  
  18539.          Recovery:  Correct the syntax of the text field. 
  18540.  
  18541.  R2125   You must specify an ordinal value from 0 to 65535 after a '#'. 
  18542.  
  18543.          Explanation:  A MENUITEM statement with style MIS_BITMAP accepts in 
  18544.          its text field a quoted value of a previously-defined bitmap, in the 
  18545.          form "#n", where n is the bitmap id. You coded this field in an 
  18546.          incorrect format as indicated in the message. 
  18547.  
  18548.          Recovery:  Correct the syntax of the text field. 
  18549.  
  18550.  R2126   You specified an incorrect text parameter. 
  18551.  
  18552.          Explanation:  A statement contained a text field with an incorrect 
  18553.          string. 
  18554.  
  18555.          Recovery:  Correct the syntax of the field. 
  18556.  
  18557.  R2127   You specified a non-numeric parameter. 
  18558.  
  18559.          Explanation:  A statement contained a numeric field that did not 
  18560.          evaluate to a number. 
  18561.  
  18562.          Recovery:  Correct the syntax of the field. 
  18563.  
  18564.  R2128   The Resource ID must be a value from 1 to 65535 (unsigned). 
  18565.  
  18566.          Explanation:  A statement contained a resource ID field that did not 
  18567.          evaluate to a number in the expected range. 
  18568.  
  18569.          Recovery:  Correct the value of the id field. 
  18570.  
  18571.  R2129   The Resource ID must be a value from 0 to 65535 (unsigned) or -32768 
  18572.          to 32767 (signed). 
  18573.  
  18574.          Explanation:  A statement contained a resource ID field that did not 
  18575.          evaluate to a number in the expected range. 
  18576.  
  18577.          Recovery:  Correct the value of the id field. 
  18578.  
  18579.  R2130   The Resource ID must not be negative. 
  18580.  
  18581.          Explanation:  A statement contained a resource ID field that did not 
  18582.          evaluate to a number in the expected range. 
  18583.  
  18584.          Recovery:  Correct the value of the id field. 
  18585.  
  18586.  R2131   The Resource ID must not be 0. 
  18587.  
  18588.          Explanation:  A statement contained a resource ID field that did not 
  18589.          evaluate to a number in the expected range. 
  18590.  
  18591.          Recovery:  Correct the value of the id field. 
  18592.  
  18593.  R2132   The Control ID must be a value from 0 to 65535 (unsigned) or -32768 to 
  18594.          32767 (signed). 
  18595.  
  18596.          Explanation:  A statement contained a resource ID field that did not 
  18597.          evaluate to a number in the expected range. 
  18598.  
  18599.          Recovery:  Correct the value of the id field. 
  18600.  
  18601.  R2134   Only one top level window is allowed. 
  18602.  
  18603.          Explanation:  A WINDOWTEMPLATE or DLGTEMPLATE statement contained more 
  18604.          than one WINDOW or DIALOG. 
  18605.  
  18606.          Recovery:  Use only one window per template. 
  18607.  
  18608.  R2135   A Template statement is empty.  You must specify a top level window. 
  18609.  
  18610.          Explanation:  A WINDOWTEMPLATE or DLGTEMPLATE statement contained no 
  18611.          WINDOW or DIALOG. 
  18612.  
  18613.          Recovery:  Use exactly one window per template. 
  18614.  
  18615.  R2136   RC found a duplicate string id. 
  18616.  
  18617.          Explanation:  A STRINGTABLE statement contained a duplicate 
  18618.          identifier. 
  18619.  
  18620.          Recovery:  Use unique string ids. 
  18621.  
  18622.  R2137   RC found a duplicate message id. 
  18623.  
  18624.          Explanation:  A MESSAGETABLE statement contained a duplicate 
  18625.          identifier. 
  18626.  
  18627.          Recovery:  Use unique and message ids. 
  18628.  
  18629.  R2138   A key-value character code in double quotation marks is a missing 
  18630.          parameter. 
  18631.  
  18632.          Explanation:  An ACCELTABLE statement contained a key-value field in 
  18633.          an incorrect format as indicated by the message. 
  18634.  
  18635.          Recovery:  Correct the format or value of the field. The syntax rules 
  18636.          appear under ACCELTABLE Statement. 
  18637.  
  18638.  R2139   Parameter key-value has more than the allowed characters. 
  18639.  
  18640.          Explanation:  An ACCELTABLE statement contained a key-value field in 
  18641.          an incorrect format as indicated by the message. 
  18642.  
  18643.          Recovery:  Correct the format or value of the field. The syntax rules 
  18644.          appear under ACCELTABLE Statement. 
  18645.  
  18646.  R2140   Parameter key-value with control (^) is out of the valid range (^A - 
  18647.          ^Z). 
  18648.  
  18649.          Explanation:  An ACCELTABLE statement contained a key-value field in 
  18650.          an incorrect format as indicated by the message. 
  18651.  
  18652.          Recovery:  Correct the format or value of the field. The syntax rules 
  18653.          appear under ACCELTABLE Statement. 
  18654.  
  18655.  R2141   Parameter key-value must be in the range (0 - 255). 
  18656.  
  18657.          Explanation:  An ACCELTABLE statement contained a key-value field in 
  18658.          an incorrect format as indicated by the message. 
  18659.  
  18660.          Recovery:  Correct the format or value of the field. The syntax rules 
  18661.          appear under ACCELTABLE Statement. 
  18662.  
  18663.  R2142   Parameter key-value must be string or numeric. 
  18664.  
  18665.          Explanation:  An ACCELTABLE statement contained a key-value field in 
  18666.          an incorrect format as indicated by the message. 
  18667.  
  18668.          Recovery:  Correct the format or value of the field. The syntax rules 
  18669.          appear under ACCELTABLE Statement. 
  18670.  
  18671.  R2143   Parameter command must be numeric. 
  18672.  
  18673.          Explanation:  An ACCELTABLE statement contained a command field in an 
  18674.          incorrect format as indicated by the message. 
  18675.  
  18676.          Recovery:  Correct the format or value of the field. The syntax rules 
  18677.          appear under ACCELTABLE Statement. 
  18678.  
  18679.  R2144   Parameter command must be a value from 0 to 65535. 
  18680.  
  18681.          Explanation:  An ACCELTABLE statement contained a command field in an 
  18682.          incorrect format as indicated by the message. 
  18683.  
  18684.          Recovery:  Correct the format or value of the field. The syntax rules 
  18685.          appear under ACCELTABLE Statement. 
  18686.  
  18687.  R2145   Parameter accel-option is incorrect. 
  18688.  
  18689.          Explanation:  An ACCELTABLE statement contained a accel-option field 
  18690.          in an incorrect format (or missing) as indicated by the message. 
  18691.  
  18692.          Recovery:  Supply the correct value of the field.  The syntax rules 
  18693.          appear under ACCELTABLE Statement. 
  18694.  
  18695.  R2146   Accel-option (CHAR, SCANCODE, or VIRTUALKEY) is a missing parameter. 
  18696.  
  18697.          Explanation:  An ACCELTABLE statement contained a accel-option field 
  18698.          in an incorrect format (or missing) as indicated by the message. 
  18699.  
  18700.          Recovery:  Supply the correct value of the field.  The syntax rules 
  18701.          appear under ACCELTABLE Statement. 
  18702.  
  18703.  R2147   The accelerator table is empty. 
  18704.  
  18705.          Explanation:  An ACCELTABLE statement contained an empty data block. 
  18706.  
  18707.          Recovery:  Supply the missing table.  The syntax rules appear under 
  18708.          ACCELTABLE Statement. 
  18709.  
  18710.  R2149   You specified a non-numeric menu item attribute. 
  18711.  
  18712.          Explanation:  A MENUITEM statement contained an undefined attribute. 
  18713.  
  18714.          Recovery:  Supply the missing attribute value.  The syntax rules 
  18715.          appear under MENUITEM Statement. 
  18716.  
  18717.  R2150   The menu is empty. 
  18718.  
  18719.          Explanation:  A MENU statement contained an empty data block. 
  18720.  
  18721.          Recovery:  Supply the missing menu items.  The syntax rules appear 
  18722.          under MENU Statement. 
  18723.  
  18724.  R2151   You specified an incorrect presentation parameter. 
  18725.  
  18726.          Explanation:  A control statement contained an incorrect presentation 
  18727.          parameter. 
  18728.  
  18729.          Recovery:  Correct syntax of the value or parameter. 
  18730.  
  18731.  R2152   You specified an incorrect control data value. 
  18732.  
  18733.          Explanation:  A control statement contained an incorrect control data 
  18734.          value. 
  18735.  
  18736.          Recovery:  Correct syntax of the value or parameter. 
  18737.  
  18738.  R2153   DLGINCLUDE statement must have a filename to include. 
  18739.  
  18740.          Explanation:  You specified a DLGINCLUDE statement but omitted the 
  18741.          file name. 
  18742.  
  18743.          Recovery:  Code the name of the file on the DLGINCLUDE statement. 
  18744.  
  18745.  R2154   Data in a STRINGTABLE statement BEGIN/END body is missing or 
  18746.          incorrect. 
  18747.  
  18748.          Explanation:  You specified incorrect string data inside the data 
  18749.          block of a STRINGTABLE statement, as indicated by the message. 
  18750.  
  18751.          Recovery:  Correct the syntax of the string.  The syntax rules appear 
  18752.          under STRINGTABLE Statement. 
  18753.  
  18754.  R2155   Data in a MESSAGETABLE statement BEGIN/END body is missing or 
  18755.          incorrect. 
  18756.  
  18757.          Explanation:  You specified incorrect string data inside the data 
  18758.          block of a MESSAGETABLE statement, as indicated by the message. 
  18759.  
  18760.          Recovery:  Correct the syntax of the string.  The syntax rules appear 
  18761.          under MESSAGETABLE Statement. 
  18762.  
  18763.  R2156   An Assocname is missing in ASSOCTABLE. 
  18764.  
  18765.          Explanation:  The field indicated by the message is missing from an 
  18766.          ASSOCTABLE statement. 
  18767.  
  18768.          Recovery:  Supply the missing field. 
  18769.  
  18770.  R2157   A file-match-string is missing in ASSOCTABLE. 
  18771.  
  18772.          Explanation:  The field indicated by the message is missing from an 
  18773.          ASSOCTABLE statement. 
  18774.  
  18775.          Recovery:  Supply the missing field. 
  18776.  
  18777.  R2158   Data in an RCDATA statement BEGIN/END body is missing or incorrect. 
  18778.  
  18779.          Explanation:  Data items are wrong or omitted in the statement 
  18780.          indicated by the message. 
  18781.  
  18782.          Recovery:  Supply the correct data. 
  18783.  
  18784.  R2159   Data in RESOURCE statement BEGIN/END body is missing or incorrect. 
  18785.  
  18786.          Explanation:  Data items are wrong or omitted in the statement 
  18787.          indicated by the message. 
  18788.  
  18789.          Recovery:  Supply the correct data. 
  18790.  
  18791.  R2160   Data in ASSOCTABLE statement BEGIN/END body is missing or incorrect. 
  18792.  
  18793.          Explanation:  Data items are wrong or omitted in the statement 
  18794.          indicated by the message. 
  18795.  
  18796.          Recovery:  Supply the correct data. 
  18797.  
  18798.  R2161   RC expected a SUBITEMSIZE statement before the parameter. 
  18799.  
  18800.          Explanation:  A HELPSUBTABLE statement was missing the SUBITEMSIZE 
  18801.          statement required when a size other than the default is to be used. 
  18802.  
  18803.          Recovery:  Supply the missing SUBITEMSIZE statement. The syntax rules 
  18804.          appear under HELPSUBTABLE Statement 
  18805.  
  18806.  R2162   Elements in HELPSUBITEM do not match with SUBITEMSIZE statement. 
  18807.  
  18808.          Explanation:  The structure of a HELPSUBITEM statement did not conform 
  18809.          to the size specified in the SUBITEMSIZE statement. 
  18810.  
  18811.          Recovery:  Correct the format of the HELPSUBITEM statement.  The 
  18812.          syntax rules appear under HELPSUBITEM Statement 
  18813.  
  18814.  2163    The Resource Type value overflowed when creating the LR formatted 
  18815.          record. 
  18816.  
  18817.          Explanation:  A Resource Type cannot exceed 65535. 
  18818.  
  18819.          Recovery:  Specify a value between 0 and 65535. 
  18820.  
  18821.  2164    The Resource ID value overflowed when creating the LR formatted 
  18822.          record. 
  18823.  
  18824.          Explanation:  A Resource ID cannot exceed 65535. 
  18825.  
  18826.          Recovery:  Specify a value between 0 and 65535. 
  18827.  
  18828.  2165    The Resource Flag value overflowed when creating the LR formatted 
  18829.          record. 
  18830.  
  18831.          Explanation:  A Resource Flag cannot exceed 65535. 
  18832.  
  18833.          Recovery:  Specify a value between 0 and 65535. 
  18834.  
  18835.  2166    The Resource Size value overflowed when creating the LR formatted 
  18836.          record. 
  18837.  
  18838.          Explanation:  A Resource Size cannot exceed 65535. 
  18839.  
  18840.          Recovery:  Specify a value between 0 and 65535. 
  18841.  
  18842.  R2167   Data in MSGDATA statement BEGIN/END body is missing or incorrect. 
  18843.  
  18844.          Explanation:  The MSGDATA body is missing or incorrect. 
  18845.  
  18846.          Recovery:  Correct the syntax or add the missing data. 
  18847.  
  18848.  R2168   A suffix letter is missing after the message id. 
  18849.  
  18850.          Explanation:  You left out a required suffix letter after the message 
  18851.          id. 
  18852.  
  18853.          Recovery:  Correct your input and try again. 
  18854.  
  18855.  R2169   A colon (:) is missing after the suffix letter. 
  18856.  
  18857.          Explanation:  You left out a required colon (:) after the suffix 
  18858.          letter. 
  18859.  
  18860.          Recovery:  Correct your input and try again. 
  18861.  
  18862.  R2170   A MSGDATA statement has a duplicate message ID. 
  18863.  
  18864.          Explanation:  You cannot use the same message ID on more than one 
  18865.          MSGDATA statements. 
  18866.  
  18867.          Recovery:  Use a unique message ID. 
  18868.  
  18869.  R2171   The segment name contains extended characters, which must be less than 
  18870.          or equal to ASCII 127. 
  18871.  
  18872.          Explanation:  Segment names must use ASCII characters with a value 
  18873.          less than or equal to 127. 
  18874.  
  18875.          Recovery: 
  18876.  
  18877.  R2172   A Resource statement must have either a file specification or a 
  18878.          BEGIN/END block. 
  18879.  
  18880.          Explanation:  You coded a RESOURCE statement without a file 
  18881.          specification or a data block, or you provided both a file 
  18882.          specification and a data block.  Exactly one of these forms must be 
  18883.          provided. 
  18884.  
  18885.          Recovery:  Correct the format of the RESOURCE statement.  The syntax 
  18886.          rules appear under 
  18887.  
  18888.  R2173   The source file ended with a continuation sequence. 
  18889.  
  18890.          Explanation:  Your input script file ended prematurely before the end 
  18891.          of a continued line. 
  18892.  
  18893.          Recovery:  Supply the completion of the incomplete line. 
  18894.  
  18895.  R2174   The source file ended while a comment was active. 
  18896.  
  18897.          Explanation:  Your input script file ended prematurely before the end 
  18898.          of a comment. 
  18899.  
  18900.          Recovery:  Supply the completion of the incomplete comment. 
  18901.  
  18902.  R2175   You specified an unknown preprocessor directive. 
  18903.  
  18904.          Explanation:  You used a # directive which is unknown to the 
  18905.          preprocessor. 
  18906.  
  18907.          Recovery:  Remove the unknown directive. 
  18908.  
  18909.  R2176   A header filename was missing from an #include directive. 
  18910.  
  18911.          Explanation:  You used an #include directive without naming a file to 
  18912.          include. 
  18913.  
  18914.          Recovery:  Supply the missing file name on the directive. 
  18915.  
  18916.  R2177   A header filename contained only whitespace. 
  18917.  
  18918.          Explanation:  The file referenced by an #include directive contained 
  18919.          no tokens to parse. 
  18920.  
  18921.          Recovery:  Supply the missing contents of the file, or remove the 
  18922.          directive. 
  18923.  
  18924.  R2178   RC could not find the header filename on an #include directive. 
  18925.  
  18926.          Explanation:  The file referenced by an #include directive could not 
  18927.          be located by the preprocessor. 
  18928.  
  18929.          Recovery:  Check the spelling of the file and path, and confirm that 
  18930.          the file exists. 
  18931.  
  18932.  R2179   #undef appeared with unknown macro name. 
  18933.  
  18934.          Explanation:  The macro referenced by an #undef directive was not 
  18935.          known to the preprocessor. 
  18936.  
  18937.          Recovery:  Check the spelling of the macro, or remove the #undef 
  18938.          directive. 
  18939.  
  18940.  R2180   You specified an include filename recursively. 
  18941.  
  18942.          Explanation:  The name on an #include directive has already been 
  18943.          included at a higher level. 
  18944.  
  18945.          Recovery:  Remove the nested #include directive. 
  18946.  
  18947.  R2181   A source filename contains no characters. 
  18948.  
  18949.          Explanation:  The input file was empty. 
  18950.  
  18951.          Recovery:  Check the spelling of the name, and confirm that the proper 
  18952.          data are contained in it. 
  18953.  
  18954.  R2182   RC is ignoring a typecast in an expression. 
  18955.  
  18956.          Explanation:  You used a type cast in an expression in a preprocessor 
  18957.          directive.  The cast will be ignored. 
  18958.  
  18959.          Recovery:  Remove the type cast. 
  18960.  
  18961.  R2183   RC found the characters /* inside a C style comment. 
  18962.  
  18963.          Explanation:  The input file had a C comment which contained the start 
  18964.          of another comment. 
  18965.  
  18966.          Recovery:  Do not use the characters /* inside a C comment; comments 
  18967.          cannot be nested. 
  18968.  
  18969.  R2184   You defined a macro with the name of a resource statement. 
  18970.  
  18971.          Explanation:  You used the name of a resource statement (for example, 
  18972.          search file for more e.g.'s.  DLGTEMPLATE) as the name of a macro to 
  18973.          be defined.  The names of resource statements are reserved words. 
  18974.  
  18975.          Recovery:  Use another name for the macro. 
  18976.  
  18977.  R2185   The given directive is missing its end-of-line character. 
  18978.  
  18979.          Explanation:  You used a preprocessor directive (such as #define) but 
  18980.          started another statement later on the same line.  A preprocessor 
  18981.          directive needs to be contained on one line. 
  18982.  
  18983.          Recovery:  Use the preprocessor directive alone on a line. 
  18984.  
  18985.  R2186   You specified conflicting or redundant memory or load options. 
  18986.  
  18987.          Explanation:  Memory or load options you specified conflict or are 
  18988.          redundant. 
  18989.  
  18990.          Recovery:  Specify non-conflicting or non-redundant memory or load 
  18991.          options. 
  18992.  
  18993.  
  18994. ΓòÉΓòÉΓòÉ 24.4.3. Warning Messages: 3000 - 3999 ΓòÉΓòÉΓòÉ
  18995.  
  18996.  R3006   name is an incorrect macro name. 
  18997.  
  18998.          Explanation:  The macro name name does not conform to the rules for 
  18999.          composing macro names as defined in C Language Reference.  The 
  19000.          Resource Compiler will ignore the definition. 
  19001.  
  19002.          Recovery:  Choose a legal name for the macro. 
  19003.  
  19004.  R3007   Country code code is incorrect for this code page. RC is using 
  19005.          previously-defined lead bytes. 
  19006.  
  19007.          Explanation:  The country code is not defined for use with the 
  19008.          specified code page. 
  19009.  
  19010.          Recovery:  Confirm that the country code and code page are correct. 
  19011.          For a list of supported code pages, refer to the "COUNTRYCODE" section 
  19012.          of the OS/2 Warp Control Programming Guide and Reference. 
  19013.  
  19014.  R3008   Code page cp is incorrect.  RC is using the default code page. 
  19015.  
  19016.          Explanation: The code page number cp is unknown, and the compiler will 
  19017.          use a default code page. 
  19018.  
  19019.          Recovery:  Select a supported code page.  For a list of supported code 
  19020.          pages, refer to the "COUNTRYCODE" section of the OS/2 Warp Control 
  19021.          Program Programming Guide and Reference. 
  19022.  
  19023.  R3009   RC is ignoring excess operand text. 
  19024.  
  19025.          Explanation:  The given text was an incorrect operand on the command 
  19026.          line. 
  19027.  
  19028.          Recovery:  Correct or remove the undefined text. 
  19029.  
  19030.  R3011   RC is ignoring the compression option for the NE format executable 
  19031.          file filename. 
  19032.  
  19033.          Explanation:  The compression option you specified is not valid for 
  19034.          this operation. 
  19035.  
  19036.          Recovery:  No action is necessary. 
  19037.  
  19038.  R3012   RC is ignoring the pack option for the NE executable file filename. 
  19039.  
  19040.          Explanation:  The pack option you specified is not a valid for this 
  19041.          operation. 
  19042.  
  19043.          Recovery:  No action is necessary. 
  19044.  
  19045.  R3013   RC found no resource item in this file. 
  19046.  
  19047.          Explanation:  The input binary resource file did not contain any 
  19048.          resources. 
  19049.  
  19050.          Recovery:  Confirm that the input file has the expected resource data. 
  19051.  
  19052.  R3014   RC found a resource type equal to zero. 
  19053.  
  19054.          Explanation:  The input binary resource file contained a resource with 
  19055.          type zero, which is incorrect. 
  19056.  
  19057.          Recovery:  Correct the resource definition in the input file. 
  19058.  
  19059.  R3015   RC is using ordinal number as a text field. 
  19060.  
  19061.          Explanation:  The specified number is the value of a text field on a 
  19062.          resource statement. 
  19063.  
  19064.          Recovery:  No action is necessary. 
  19065.  
  19066.  R3016   RC is truncating this text to 255 characters: 
  19067.  
  19068.          Explanation:  The text that follows this message appeared in a field 
  19069.          limited to 255 characters.  The compiler will use only the text shown. 
  19070.  
  19071.          Recovery:  No action is necessary. 
  19072.  
  19073.  R3017   RC is ignoring an extra comma in a CTLDATA statement. 
  19074.  
  19075.          Explanation:  You used a CTLDATA statement with a list of data values 
  19076.          separated by commas.  The compiler will ignore the extra commas it 
  19077.          found in the list. 
  19078.  
  19079.          Recovery:  No action is necessary. 
  19080.  
  19081.  R3018   RC is truncating to a 16-bit value. 
  19082.  
  19083.          Explanation:  You used a long integer value in a data field which is 
  19084.          limited to 64K.  The compiler will use only the least significant 16 
  19085.          bits of the number. 
  19086.  
  19087.          Recovery:  No action is necessary. 
  19088.  
  19089.  R3019   All text after percent followed by 0 characters will be truncated to 
  19090.          the end of the line. 
  19091.  
  19092.          Explanation:  You enter a text string with a percent 0 (%0) in it. 
  19093.  
  19094.          Recovery:  No action is necessary. 
  19095.  
  19096.  R3020   Parameters VIRTUALKEY, SCANMODE, and CHAR are mutually exclusive. 
  19097.  
  19098.          Explanation:  You used parameters in an ACCELTABLE statement which 
  19099.          cannot be used together. 
  19100.  
  19101.          Recovery:  The rules for coding the accelerator-options field are 
  19102.          given under 
  19103.  
  19104.  R3021   Parameters SYSCOMMAND, and HELP are mutually exclusive. 
  19105.  
  19106.          Explanation:  You used parameters in an ACCELTABLE statement which 
  19107.          cannot be used together. 
  19108.  
  19109.          Recovery:  The rules for coding the accelerator-options field are 
  19110.          given under  ACCELTABLE Statement. 
  19111.  
  19112.  R3022   Numeric value in RCDATA statement has been overflowed. 
  19113.  
  19114.          Explanation:  While evaluating numeric data in a block, the compiler 
  19115.          computed a 32-bit number using a 16-bit data field. This conversion 
  19116.          changed the value of the number. 
  19117.  
  19118.          Recovery:  No action is necessary. 
  19119.  
  19120.  R3023   Numeric value in RCDATA statement has been modified. 
  19121.  
  19122.          Explanation:  While evaluating numeric data in a block, the compiler 
  19123.          computed a 32-bit number using a 16-bit data field. This conversion 
  19124.          changed the value of the number. 
  19125.  
  19126.          Recovery:  No action is necessary. 
  19127.  
  19128.  R3024   Numeric value in RESOURCE statement has been overflowed. 
  19129.  
  19130.          Explanation:  While evaluating numeric data in a block, the compiler 
  19131.          computed a 32-bit number using a 16-bit data field. This conversion 
  19132.          changed the value of the number. 
  19133.  
  19134.          Recovery:  No action is necessary. 
  19135.  
  19136.  R3025   Numeric value in RESOURCE statement has been modified. 
  19137.  
  19138.          Explanation:  While evaluating numeric data in a block, the compiler 
  19139.          computed a 32-bit number using a 16-bit data field. This conversion 
  19140.          changed the value of the number. 
  19141.  
  19142.          Recovery:  No action is necessary. 
  19143.  
  19144.  R3026   MENUITEM expected a style of MIS_SUBMENU. 
  19145.  
  19146.          Explanation:  A MENUITEM statement having a submenu will use menuitem 
  19147.          style MIS_SUBMENU by default. 
  19148.  
  19149.          Recovery:  Specify MIS_SUBMENU in MENUITEM statement. 
  19150.  
  19151.  R3027   RC ignored text specified for SEPARATOR. 
  19152.  
  19153.          Explanation:  A MENUITEM SEPARATOR statement had extra text at the 
  19154.          end.  Resource Compiler will ignore the extra text. 
  19155.  
  19156.          Recovery:  Remove the extra text. 
  19157.  
  19158.  R3028   RC is ignoring a Message text line with no message ID. 
  19159.  
  19160.          Explanation:  A MESSAGETABLE statement without an ID has been ignored 
  19161.          by the Resource Compiler. 
  19162.  
  19163.          Recovery:  To use the message, provide an identifier for it. 
  19164.  
  19165.  R3030   RC encountered a duplicate resource type and id. RC is ignoring 
  19166.          resource ID id of type type. 
  19167.  
  19168.          Explanation:  A resource of type type and id id has the same type and 
  19169.          id as another resource.  The Resource Compiler used the first and 
  19170.          ignored the other. 
  19171.  
  19172.          Recovery:  Provide a unique identifier for the duplicated resource. 
  19173.  
  19174.  R3031   The ID value to be used is value. 
  19175.  
  19176.          Explanation:  The preprocessor will use value as the resource 
  19177.          identifier. 
  19178.  
  19179.          Recovery:  No action is necessary. 
  19180.  
  19181.  R3032   A parameter value is out of range. Valid signed range is -32768 to 
  19182.          32767, unsigned range is 0 to 65535. 
  19183.  
  19184.          Explanation:  You supplied a value for a 16-bit parameter which was 
  19185.          too large to be contained in the field. 
  19186.  
  19187.          Recovery:  Resource Compiler has converted the value to the 16-bit 
  19188.          number given. 
  19189.  
  19190.  R3033   RC is using the first DEFAULTICON statement, which you specified more 
  19191.          than once. 
  19192.  
  19193.          Explanation:  You supplied more than one DEFAULTICON statement for 
  19194.          your resources.  Resource Compiler will ignore all DEFAULTICON 
  19195.          statements after the first one. 
  19196.  
  19197.          Recovery:  Remove the extra DEFAULTICON statements. 
  19198.  
  19199.  R3034   'text' is not supported in this version of RC.  It is being ignored. 
  19200.  
  19201.          Explanation:  The given text is not supported by this version of the 
  19202.          Resource Compiler.  It is ignored. 
  19203.  
  19204.          Recovery:  Remove the text. 
  19205.  
  19206.  R3035   The DBCS lead-byte option is no longer supported in RC. 
  19207.  
  19208.          Explanation:  The command line and DBCS environment variable options 
  19209.          will be ignored. 
  19210.  
  19211.          Recovery: Use an installed code page. 
  19212.  
  19213.  
  19214. ΓòÉΓòÉΓòÉ 24.4.4. Informational Messages: 4000 - 4999 ΓòÉΓòÉΓòÉ
  19215.  
  19216.  R4012   Writing resources to OS/2 v2.0 Linear .EXE file 
  19217.  
  19218.          Explanation:  The Resource Compiler is binding resources to an 
  19219.          executable file. 
  19220.  
  19221.          Recovery:  No action is necessary. 
  19222.  
  19223.  R4013   RC is copying numpages pages:  numobjects objects containing numpages 
  19224.          page(s). 
  19225.  
  19226.          Explanation:  The program is performing the action you requested. 
  19227.  
  19228.          Recovery:  No action is necessary. 
  19229.  
  19230.  R4014   RC is writing nnnn resource object(s). 
  19231.  
  19232.          Explanation:  The program is performing the action you requested. 
  19233.  
  19234.          Recovery:  No action is necessary. 
  19235.  
  19236.  R4015   RC is writing numbytes bytes in numpages page(s). 
  19237.  
  19238.          Explanation:  The program is performing the action you requested. 
  19239.  
  19240.          Recovery:  No action is necessary. 
  19241.  
  19242.  R4019   Writing Extended Attributes: 
  19243.  
  19244.          Explanation:  The Resource Compiler program is writing the extended 
  19245.          attributes. 
  19246.  
  19247.          Recovery:  No action is necessary. 
  19248.  
  19249.  R4020   Writing Extended Attributes: Checksum. 
  19250.  
  19251.          Explanation:  The Resource Compiler program is writing the extended 
  19252.          attributes: Checksum. 
  19253.  
  19254.          Recovery:  No action is necessary. 
  19255.  
  19256.  R4023   RC successfully created a preprocessed output file. 
  19257.  
  19258.          Explanation:  The preprocessor wrote its output file to disk. 
  19259.  
  19260.          Recovery:  No action is necessary. 
  19261.  
  19262.  
  19263. ΓòÉΓòÉΓòÉ 25. Notices ΓòÉΓòÉΓòÉ
  19264.  
  19265. October 1997 
  19266.  
  19267. The following paragraph does not apply to the United Kingdom or any country 
  19268. where such provisions are inconsistent with local law:  INTERNATIONAL BUSINESS 
  19269. MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY 
  19270. KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
  19271. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states 
  19272. do not allow disclaimer of express or implied warranties in certain 
  19273. transactions, therefore, this statement may not apply to you. 
  19274.  
  19275. This publication could include technical inaccuracies or typographical errors. 
  19276. Changes are periodically made to the information herein; these changes will be 
  19277. incorporated in new editions of the publication. IBM may make improvements 
  19278. and/or changes in the product(s) and/or the program(s) described in this 
  19279. publication at any time. 
  19280.  
  19281. This publication was developed for products and services offered in the United 
  19282. States of America.  IBM may not offer the products, services, or features 
  19283. discussed in this document in other countries, and the information is subject 
  19284. to change without notice. Consult your local IBM representative for information 
  19285. on the products, services, and features available in your area. 
  19286.  
  19287. Requests for technical information about IBM products should be made to your 
  19288. IBM reseller or IBM marketing representative. 
  19289.  
  19290.  
  19291. ΓòÉΓòÉΓòÉ 25.1. Copyright Notices ΓòÉΓòÉΓòÉ
  19292.  
  19293. COPYRIGHT LICENSE: This publication contains printed sample application 
  19294. programs in source language, which illustrate OS/2 programming techniques. You 
  19295. may copy, modify, and distribute these sample programs in any form without 
  19296. payment to IBM, for the purposes of developing, using, marketing or 
  19297. distributing application programs conforming to the OS/2 application 
  19298. programming interface. 
  19299.  
  19300. Each copy of any portion of these sample programs or any derivative work, which 
  19301. is distributed to others, must include a copyright notice as follows: "(C) 
  19302. (your company name) (year).  All rights reserved." 
  19303.  
  19304. (C)Copyright International Business Machines Corporation 1994, 1997. All rights 
  19305. reserved. 
  19306. Note to U.S. Government Users - Documentation related to restricted rights - 
  19307. Use, duplication or disclosure is subject to restrictions set forth in GSA ADP 
  19308. Schedule Contract with IBM Corp. 
  19309.  
  19310.  
  19311. ΓòÉΓòÉΓòÉ 25.2. Disclaimers ΓòÉΓòÉΓòÉ
  19312.  
  19313. References in this publication to IBM products, programs, or services do not 
  19314. imply that IBM intends to make these available in all countries in which IBM 
  19315. operates. Any reference to an IBM product, program, or service is not intended 
  19316. to state or imply that only that IBM product, program, or service may be used. 
  19317. Subject to IBM's valid intellectual property or other legally protectable 
  19318. rights, any functionally equivalent product, program, or service may be used 
  19319. instead of the IBM product, program, or service. The evaluation and 
  19320. verification of operation in conjunction with other products, except those 
  19321. expressly designated by IBM, are the responsibility of the user. 
  19322.  
  19323. IBM may have patents or pending patent applications covering subject matter in 
  19324. this document. The furnishing of this document does not give you any license to 
  19325. these patents. You can send license inquiries, in writing, to: 
  19326.  
  19327.       IBM Director of Licensing 
  19328.       IBM Corporation 
  19329.       500 Columbus Avenue 
  19330.       Thornwood, NY  10594 
  19331.       U.S.A. 
  19332.  
  19333.  Asia-Pacific users can inquire, in writing, to the IBM Director of 
  19334.  Intellectual Property and Licensing, IBM World Trade Asia Corporation, 2-31 
  19335.  Roppongi 3-chome, Minato-ku, Tokyo 106, Japan. 
  19336.  
  19337.  Licensees of this program who wish to have information about it for the 
  19338.  purpose of enabling: (i) the exchange of information between independently 
  19339.  created programs and other programs (including this one) and (ii) the mutual 
  19340.  use of the information which has been exchanged, should contact IBM 
  19341.  Corporation, Department LZKS, 11400 Burnet Road, Austin, TX 78758 U.S.A.  Such 
  19342.  information may be available, subject to appropriate terms and conditions, 
  19343.  including in some cases, payment of a fee. 
  19344.  
  19345.  
  19346. ΓòÉΓòÉΓòÉ 25.3. Trademarks ΓòÉΓòÉΓòÉ
  19347.  
  19348. The following terms are trademarks of the IBM Corporation in the United States 
  19349. or other countries or both: 
  19350.  
  19351.  AIX                           PowerPC 
  19352.  C Set ++                      Presentation Manager 
  19353.  Common User Access            SAA 
  19354.  CUA                           System Application Architecture 
  19355.  IBM                           WIN-OS/2 
  19356.  Operating System/2            Workplace Shell 
  19357.  OS/2                          XGA 
  19358.  Personal System/2 
  19359.  
  19360.  The following terms are trademarks of other companies: 
  19361.  
  19362.  CL, CL386                Pentium 
  19363.  Intel                    X/Open Company Ltd. 
  19364.  Intel Corporation        /X/Opend 
  19365.  MASM, MASM386 
  19366.  
  19367.  PC Direct is a trademark of Ziff Communications Company and is used by IBM 
  19368.  Corporation under license. 
  19369.  
  19370.  UNIX is a registered trademark in the United States and other countries 
  19371.  licensed exclusively through X/Open Company Limited. 
  19372.  
  19373.  C-bus is a trademark of Corollary, Inc. 
  19374.  
  19375.  Microsoft, Windows, and the Windows 95 logo are trademarks or registered 
  19376.  trademarks of Microsoft Corporation. 
  19377.  
  19378.  Java and HotJava are trademarks of Sun Microsystems, Inc. 
  19379.  
  19380.  Other company, product, and service names may be trademarks or service marks 
  19381.  of others. 
  19382.  
  19383.  
  19384. ΓòÉΓòÉΓòÉ 26. Glossary ΓòÉΓòÉΓòÉ
  19385.  
  19386. This glossary defines many of the terms used in this book. It includes terms 
  19387. and definitions from the IBM Dictionary of Computing, as well as terms specific 
  19388. to the OS/2 operating system and the Presentation Manager. It is not a complete 
  19389. glossary for the entire OS/2 operating system; nor is it a complete dictionary 
  19390. of computer terms. 
  19391.  
  19392. Other primary sources for these definitions are: 
  19393.  
  19394.      The American National Standard Dictionary for Information Systems, ANSI 
  19395.       X3.172-1990, copyrighted 1990 by the American National Standards 
  19396.       Institute, 11 West 42nd Street, New York, New York 10036. These 
  19397.       definitions are identified by the symbol (A) after the definition. 
  19398.  
  19399.      The Information Technology Vocabulary, developed by Subcommittee 1, Joint 
  19400.       Technical Committee 1, of the International Organization for 
  19401.       Standardization and the International Electrotechnical Commission 
  19402.       (ISO/IEC JTC1/SC1). Definitions of published parts of this vocabulary are 
  19403.       identified by the symbol (I) after the definition; definitions taken from 
  19404.       draft international standards, committee drafts, and working papers being 
  19405.       developed by ISO/IEC JTC1/SC1 are identified by the symbol (T) after the 
  19406.       definition, indicating that final agreement has not yet been reached 
  19407.       among the participating National Bodies of SC1. 
  19408.  
  19409.  
  19410. ΓòÉΓòÉΓòÉ 26.1. Glossary Listing ΓòÉΓòÉΓòÉ
  19411.  
  19412. Select a starting letter of glossary terms: 
  19413.  
  19414.  A    N 
  19415.  B    O 
  19416.  C    P 
  19417.  D    Q 
  19418.  E    R 
  19419.  F    S 
  19420.  G    T 
  19421.  H    U 
  19422.  I    V 
  19423.  J    W 
  19424.  K    X 
  19425.  L    Y 
  19426.  M    Z 
  19427.  
  19428.  
  19429. ΓòÉΓòÉΓòÉ <hidden> Glossary - A ΓòÉΓòÉΓòÉ
  19430.  
  19431.  accelerator  - In SAA Common User Access architecture, a key or combination of 
  19432.    keys that invokes an application-defined function. 
  19433.  
  19434.  accelerator table  - A table used to define which key strokes are treated as 
  19435.    accelerators and the commands they are translated into. 
  19436.  
  19437.  access mode  - The manner in which an application gains access to a file it 
  19438.    has opened. Examples of access modes are read-only, write-only, and 
  19439.    read/write. 
  19440.  
  19441.  access permission  - All access rights that a user has regarding an object. (I)
  19442.  
  19443.  action  - One of a set of defined tasks that a computer performs. Users 
  19444.    request the application to perform an action in several ways, such as typing 
  19445.    a command, pressing a function key, or selecting the action name from an 
  19446.    action bar or menu. 
  19447.  
  19448.  action bar  - In SAA Common User Access architecture, the area at the top of a 
  19449.    window that contains choices that give a user access to actions available in 
  19450.    that window. 
  19451.  
  19452.  action point  - The current position on the screen at which the pointer is 
  19453.    pointing. Contrast with hot spot and input focus. 
  19454.  
  19455.  active program  - A program currently running on the computer.  An active 
  19456.    program can be interactive (running and receiving input from the user) or 
  19457.    noninteractive (running but not receiving input from the user). See also 
  19458.    interactive program and noninteractive program. 
  19459.  
  19460.  active window  - The window with which the user is currently interacting. 
  19461.  
  19462.  address space  - (1) The range of addresses available to a program. (A)  (2) 
  19463.    The area of virtual storage available for a particular job. 
  19464.  
  19465.  alphanumeric video output  - Output to the logical video buffer when the video 
  19466.    adapter is in text mode and the logical video buffer is addressed by an 
  19467.    application as a rectangular array of character cells. 
  19468.  
  19469.  American National Standard Code for Information Interchange  - The standard 
  19470.    code, using a coded character set consisting of 7-bit coded characters (8 
  19471.    bits including parity check), that is used for information interchange among 
  19472.    data processing systems, data communication systems, and associated 
  19473.    equipment. The ASCII set consists of control characters and graphic 
  19474.    characters. (A) 
  19475.  
  19476.    Note:  IBM has defined an extension to ASCII code (characters 128-255). 
  19477.  
  19478.  anchor  - A window procedure that handles Presentation Manager message 
  19479.    conversions between an icon procedure and an application. 
  19480.  
  19481.  anchor block  - An area of Presentation-Manager-internal resources to 
  19482.    allocated process or thread that calls WinInitialize. 
  19483.  
  19484.  anchor point  - A point in a window used by a program designer or by a window 
  19485.    manager to position a subsequently appearing window. 
  19486.  
  19487.  ANSI  - American National Standards Institute. 
  19488.  
  19489.  APA  - All points addressable. 
  19490.  
  19491.  API  - Application programming interface. 
  19492.  
  19493.  application  - A collection of software components used to perform specific 
  19494.    types of work on a computer; for example, a payroll application, an airline 
  19495.    reservation application, a network application. 
  19496.  
  19497.  application object  - In SAA Advanced Common User Access architecture, a form 
  19498.    that an application provides for a user; for example, a spreadsheet form. 
  19499.    Contrast with user object. 
  19500.  
  19501.  application programming interface (API)  - A functional interface supplied by 
  19502.    the operating system or by a separately orderable licensed program that 
  19503.    allows an application program written in a high-level language to use 
  19504.    specific data or functions of the operating system or the licensed program. 
  19505.  
  19506.  application-modal  - Pertaining to a message box or dialog box for which 
  19507.    processing must be completed before further interaction with any other 
  19508.    window owned by the same application may take place. 
  19509.  
  19510.  area  - In computer graphics, a filled shape such as a solid rectangle. 
  19511.  
  19512.  ASCII  - American National Standard Code for Information Interchange. 
  19513.  
  19514.  ASCIIZ  - A string of ASCII characters that is terminated with a byte 
  19515.    containing the value 0. 
  19516.  
  19517.  aspect ratio  - In computer graphics, the width-to-height ratio of an area, 
  19518.    symbol, or shape. 
  19519.  
  19520.  asynchronous (ASYNC)  - (1) Pertaining to two or more processes that do not 
  19521.    depend upon the occurrence of specific events such as common timing 
  19522.    signals. (T)  (2) Without regular time relationship;  unexpected or 
  19523.    unpredictable with respect to the execution of program instructions. See 
  19524.    also synchronous. 
  19525.  
  19526.  atom  - A constant that represents a string. As soon as a string has been 
  19527.    defined as an atom, the atom can be used in place of the string to save 
  19528.    space. Strings are associated with their respective atoms in an atom table. 
  19529.    See also integer atom. 
  19530.  
  19531.  atom table  - A table used to relate atoms with the strings that they 
  19532.    represent. Also in the table is the mechanism by which the presence of a 
  19533.    string can be checked. 
  19534.  
  19535.  atomic operation  - An operation that completes its work on an object before 
  19536.    another operation can be performed on the same object. 
  19537.  
  19538.  attribute  - A characteristic or property that can be controlled, usually to 
  19539.    obtain a required appearance;  for example, the color of a line. See also 
  19540.    graphics attributes and segment attributes. 
  19541.  
  19542.  automatic link  - In Information Presentation Facility (IPF), a link that 
  19543.    begins a chain reaction at the primary window. When the user selects the 
  19544.    primary window, an automatic link is activated to display secondary windows. 
  19545.  
  19546.  AVIO  - Advanced Video Input/Output. 
  19547.  
  19548.  
  19549. ΓòÉΓòÉΓòÉ <hidden> Glossary - B ΓòÉΓòÉΓòÉ
  19550.  
  19551.  B╨Æzier curve  - (1) A mathematical technique of specifying smooth continuous 
  19552.    lines and surfaces, which require a starting point and a finishing point 
  19553.    with several intermediate points that influence or control the path of the 
  19554.    linking curve. Named after Dr. P. B╨Æzier. (2) (D of C) In the AIX Graphics 
  19555.    Library, a cubic spline approximation to a set of four control points that 
  19556.    passes through the first and fourth control points and that has a continuous 
  19557.    slope where two spline segments meet. Named after Dr. P. B╨Æzier. 
  19558.  
  19559.  background  - (1) In multiprogramming, the conditions under which low-priority 
  19560.    programs are executed. Contrast with foreground. (2) An active session that 
  19561.    is not currently displayed on the screen. 
  19562.  
  19563.  background color  - The color in which the background of a graphic primitive 
  19564.    is drawn. 
  19565.  
  19566.  background mix  - An attribute that determines how the background of a graphic 
  19567.    primitive is combined with the existing color of the graphics presentation 
  19568.    space. Contrast with mix. 
  19569.  
  19570.  background program  - In multiprogramming, a program that executes with a low 
  19571.    priority. Contrast with foreground program. 
  19572.  
  19573.  bit map  - A representation in memory of the data displayed on an APA device, 
  19574.    usually the screen. 
  19575.  
  19576.  block  - (1) A string of data elements recorded or transmitted as a unit. The 
  19577.    elements may be characters, words, or logical records. (T)  (2) To record 
  19578.    data in a block. (3) A collection of contiguous records recorded as a unit. 
  19579.    Blocks are separated by interblock gaps and each block may contain one or 
  19580.    more records. (A)
  19581.  
  19582.  block device  - A storage device that performs I/O operations on blocks of 
  19583.    data called sectors. Data on block devices can be randomly accessed. Block 
  19584.    devices are designated by a drive letter (for example, C:). 
  19585.  
  19586.  blocking mode  - A condition set by an application that determines when its 
  19587.    threads might block. For example, an application might set the Pipemode 
  19588.    parameter for the DosCreateNPipe function so that its threads perform I/O 
  19589.    operations to the named pipe block when no data is available. 
  19590.  
  19591.  border  - A visual indication (for example, a separator line or a background 
  19592.    color) of the boundaries of a window. 
  19593.  
  19594.  boundary determination  - An operation used to compute the size of the 
  19595.    smallest rectangle that encloses a graphics object on the screen. 
  19596.  
  19597.  breakpoint  - (1) A point in a computer program where execution may be halted. 
  19598.    A breakpoint is usually at the beginning of an instruction where halts, 
  19599.    caused by external intervention, are convenient for resuming 
  19600.    execution. (T)  (2) A place in a program, specified by a command or a 
  19601.    condition, where the system halts execution and gives control to the 
  19602.    workstation user or to a specified program. 
  19603.  
  19604.  broken pipe  - When all of the handles that access one end of a pipe have been 
  19605.    closed. 
  19606.  
  19607.  bucket  - One or more fields in which the result of an operation is kept. 
  19608.  
  19609.  buffer  - (1) A portion of storage used to hold input or output data 
  19610.    temporarily. (2) To allocate and schedule the use of buffers. (A)
  19611.  
  19612.  button  - A mechanism used to request or initiate an action. See also barrel 
  19613.    buttons, bezel buttons, mouse button, push button, and radio button. 
  19614.  
  19615.  byte pipe  - Pipes that handle data as byte streams. All unnamed pipes are 
  19616.    byte pipes. Named pipes can be byte pipes or message pipes. See byte stream. 
  19617.  
  19618.  byte stream  - Data that consists of an unbroken stream of bytes. 
  19619.  
  19620.  
  19621. ΓòÉΓòÉΓòÉ <hidden> Glossary - C ΓòÉΓòÉΓòÉ
  19622.  
  19623.  cache  - A high-speed buffer storage that contains frequently accessed 
  19624.    instructions and data; it is used to reduce access time. 
  19625.  
  19626.  cached micro presentation space  - A presentation space from a 
  19627.    Presentation-Manager-owned store of micro presentation spaces. It can be 
  19628.    used for drawing to a window only, and must be returned to the store when 
  19629.    the task is complete. 
  19630.  
  19631.  CAD  - Computer-Aided Design. 
  19632.  
  19633.  call  - (1) The action of bringing a computer program, a routine, or a 
  19634.    subroutine into effect, usually by specifying the entry conditions and 
  19635.    jumping to an entry point. (I)  (A)  (2) To transfer control to a procedure, 
  19636.    program, routine, or subroutine. 
  19637.  
  19638.  calling sequence  - A sequence of instructions together with any associated 
  19639.    data necessary to execute a call. (T)
  19640.  
  19641.  Cancel  - An action that removes the current window or menu without processing 
  19642.    it, and returns the previous window. 
  19643.  
  19644.  cascaded menu  - In the OS/2 operating system, a menu that appears when the 
  19645.    arrow to the right of a cascading choice is selected. It contains a set of 
  19646.    choices that are related to the cascading choice. Cascaded menus are used to 
  19647.    reduce the length of a menu. See also cascading choice. 
  19648.  
  19649.  cascading choice  - In SAA Common User Access architecture, a choice in a menu 
  19650.    that, when selected, produces a cascaded menu containing other choices.  An 
  19651.    arrow () appears to the right of the cascading choice. 
  19652.  
  19653.  CASE statement  - In PM programming, provides the body of a window procedure. 
  19654.    There is usually one CASE statement for each message type supported by an 
  19655.    application. 
  19656.  
  19657.  CGA  - Color graphics adapter. 
  19658.  
  19659.  chained list  - A list in which the data elements may be dispersed but in 
  19660.    which each data element contains information for locating the 
  19661.    next. (T)Synonymous with linked list. 
  19662.  
  19663.  character  - A letter, digit, or other symbol. 
  19664.  
  19665.  character box  - In computer graphics, the boundary that defines, in world 
  19666.    coordinates, the horizontal and vertical space occupied by a single 
  19667.    character from a character set. See also character mode. Contrast with 
  19668.    character cell. 
  19669.  
  19670.  character cell  - The physical, rectangular space in which any single 
  19671.    character is displayed on a screen or printer device. Position is addressed 
  19672.    by row and column coordinates. Contrast with character box. 
  19673.  
  19674.  character code  - The means of addressing a character in a character set, 
  19675.    sometimes called code point. 
  19676.  
  19677.  character device  - A device that performs I/O operations on one character at 
  19678.    a time. Because character devices view data as a stream of bytes, 
  19679.    character-device data cannot be randomly accessed. Character devices include 
  19680.    the keyboard, mouse, and printer, and are referred to by name. 
  19681.  
  19682.  character mode  - A mode that, in conjunction with the font type, determines 
  19683.    the extent to which graphics characters are affected by the character box, 
  19684.    shear, and angle attributes. 
  19685.  
  19686.  character set  - (1) An ordered set of unique representations called 
  19687.    characters; for example, the 26 letters of English alphabet, Boolean 0 and 
  19688.    1, the set of symbols in the Morse code, and the 128 ASCII 
  19689.    characters. (A)  (2) All the valid characters for a programming language or 
  19690.    for a computer system. (3) A group of characters used for a specific reason; 
  19691.    for example, the set of characters a printer can print. 
  19692.  
  19693.  check box  - In SAA Advanced Common User Access architecture, a square box 
  19694.    with associated text that represents a choice. When a user selects a choice, 
  19695.    an X appears in the check box to indicate that the choice is in effect. The 
  19696.    user can clear the check box by selecting the choice again. Contrast with 
  19697.    radio button. 
  19698.  
  19699.  check mark  -  (1) (D of C) In SAA Advanced Common User Access architecture, a 
  19700.    symbol that shows that a choice is currently in effect. (2) The symbol that 
  19701.    is used to indicate a selected item on a pull-down menu. 
  19702.  
  19703.  child process  - In the OS/2 operating system, a process started by another 
  19704.    process, which is called the parent process. Contrast with parent process. 
  19705.  
  19706.  child window  - A window that appears within the border of its parent window 
  19707.    (either a primary window or another child window). When the parent window is 
  19708.    resized, moved, or destroyed, the child window also is resized, moved, or 
  19709.    destroyed; however, the child window can be moved or resized independently 
  19710.    from the parent window, within the boundaries of the parent window. Contrast 
  19711.    with parent window. 
  19712.  
  19713.  choice  - (1) An option that can be selected. The choice can be presented as 
  19714.    text, as a symbol (number or letter), or as an icon (a pictorial symbol). 
  19715.    (2) (D of C) In SAA Common User Access architecture, an item that a user can 
  19716.    select. 
  19717.  
  19718.  chord  - (1) To press more than one button on a pointing device while the 
  19719.    pointer is within the limits that the user has specified for the operating 
  19720.    environment. (2) (D of C) In graphics, a short line segment whose end points 
  19721.    lie on a circle. Chords are a means for producing a circular image from 
  19722.    straight lines. The higher the number of chords per circle, the smoother the 
  19723.    circular image. 
  19724.  
  19725.  class  - A way of categorizing objects based on their behavior and shape. A 
  19726.    class is, in effect, a definition of a generic object. In SOM, a class is a 
  19727.    special kind of object that can manufacture other objects that all have a 
  19728.    common shape and exhibit similar behavior (more precisely, all of the 
  19729.    objects manufactured by a class have the same memory layout and share a 
  19730.    common set of methods). New classes can be defined in terms of existing 
  19731.    classes through a technique known as inheritance. 
  19732.  
  19733.  class method  - A class method of class <X> is a method provided by the 
  19734.    metaclass of class <X>. Class methods are executed without requiring any 
  19735.    instances of class <X> to exist, and are frequently used to create 
  19736.    instances. In System Object Model, an action that can be performed on a 
  19737.    class object. 
  19738.  
  19739.  class object  - In System Object Model, the run-time implementation of a 
  19740.    class. 
  19741.  
  19742.  class style  - The set of properties that apply to every window in a window 
  19743.    class. 
  19744.  
  19745.  client  - (1) A functional unit that receives shared services from a 
  19746.    server. (T)  (2) A user, as in a client process that uses a named pipe or 
  19747.    queue that is created and owned by a server process. 
  19748.  
  19749.  client area  - The part of the window, inside the border, that is below the 
  19750.    menu bar. It is the user's work space, where a user types information and 
  19751.    selects choices from selection fields.  In primary windows, it is where an 
  19752.    application programmer presents the objects that a user works on. 
  19753.  
  19754.  client program  - An application that creates and manipulates instances of 
  19755.    classes. 
  19756.  
  19757.  client window  - The window in which the application displays output and 
  19758.    receives input. This window is located inside the frame window, under the 
  19759.    window title bar and any menu bar, and within any scroll bars. 
  19760.  
  19761.  clip limits  - The area of the paper that can be reached by a printer or 
  19762.    plotter. 
  19763.  
  19764.  clipboard  - In SAA Common User Access architecture, an area of computer 
  19765.    memory, or storage, that temporarily holds data. Data in the clipboard is 
  19766.    available to other applications. 
  19767.  
  19768.  clipping  - In computer graphics, removing those parts of a display image that 
  19769.    lie outside a given boundary. (I)  (A)
  19770.  
  19771.  clipping area  - The area in which the window can paint. 
  19772.  
  19773.  clipping path  - A clipping boundary in world-coordinate space. 
  19774.  
  19775.  clock tick  - The minimum unit of time that the system tracks. If the system 
  19776.    timer currently counts at a rate of X Hz, the system tracks the time every 
  19777.    1/X of a second. Also known as time tick. 
  19778.  
  19779.  CLOCK$  - Character-device name reserved for the system clock. 
  19780.  
  19781.  code page  - An assignment of graphic characters and control-function meanings 
  19782.    to all code points. 
  19783.  
  19784.  code point  - (1) Synonym for character code. (2) (D of C) A 1-byte code 
  19785.    representing one of 256 potential characters. 
  19786.  
  19787.  code segment  - An executable section of programming code within a load 
  19788.    module. 
  19789.  
  19790.  color dithering  - See dithering. 
  19791.  
  19792.  color graphics adapter (CGA)  - An adapter that simultaneously provides four 
  19793.    colors and is supported by all IBM Personal Computer and Personal System/2 
  19794.    models. 
  19795.  
  19796.  command  - The name and parameters associated with an action that a program 
  19797.    can perform. 
  19798.  
  19799.  command area  - An area composed of a command field prompt and a command entry 
  19800.    field. 
  19801.  
  19802.  command entry field  - An entry field in which users type commands. 
  19803.  
  19804.  command line  - On a display screen, a display line, sometimes at the bottom 
  19805.    of the screen, in which only commands can be entered. 
  19806.  
  19807.  command mode  - A state of a system or device in which the user can enter 
  19808.    commands. 
  19809.  
  19810.  command prompt  - A field prompt showing the location of the command entry 
  19811.    field in a panel. 
  19812.  
  19813.  Common Programming Interface (CPI)  - Definitions of those application 
  19814.    development languages and services that have, or are intended to have, 
  19815.    implementations on and a high degree of commonality across the SAA 
  19816.    environments. One of the three SAA architectural areas. See also Common User 
  19817.    Access architecture. 
  19818.  
  19819.  Common User Access (CUA) architecture  -  Guidelines for the dialog between a 
  19820.    human and a workstation or terminal. One of the three SAA architectural 
  19821.    areas. See also Common Programming Interface. 
  19822.  
  19823.  compile  - To translate a program written in a higher-level programming 
  19824.    language into a machine language program. 
  19825.  
  19826.  composite window  - A window composed of other windows (such as a frame 
  19827.    window, frame-control windows, and a client window) that are kept together 
  19828.    as a unit and that interact with each other. 
  19829.  
  19830.  computer-aided design (CAD)  - The use of a computer to design or change a 
  19831.    product, tool, or machine, such as using a computer for drafting or 
  19832.    illustrating. 
  19833.  
  19834.  COM1, COM2, COM3  - Character-device names reserved for serial ports 1 through 
  19835.    3. 
  19836.  
  19837.  CON  - Character-device name reserved for the console keyboard and screen. 
  19838.  
  19839.  conditional cascaded menu  - A pull-down menu associated with a menu item that 
  19840.    has a cascade mini-push button beside it in an object's pop-up menu. The 
  19841.    conditional cascaded menu is displayed when the user selects the mini-push 
  19842.    button. 
  19843.  
  19844.  container  - In SAA Common User Access architecture, an object that holds 
  19845.    other objects. A folder is an example of a container object. See also folder 
  19846.    and object. 
  19847.  
  19848.  contextual help  - In SAA Common User Access Architecture, help that gives 
  19849.    specific information about the item the cursor is on. The help is contextual 
  19850.    because it provides information about a specific item as it is currently 
  19851.    being used. Contrast with extended help. 
  19852.  
  19853.  contiguous  - Touching or joining at a common edge or boundary, for example, 
  19854.    an unbroken consecutive series of storage locations. 
  19855.  
  19856.  control  - In SAA Advanced Common User Access architecture, a component of the 
  19857.    user interface that allows a user to select choices or type information; for 
  19858.    example, a check box, an entry field, a radio button. 
  19859.  
  19860.  control area  - A storage area used by a computer program to hold control information. (I)  (A)
  19861.  
  19862.  Control Panel  - In the Presentation Manager, a program used to set up user 
  19863.    preferences that act globally across the system. 
  19864.  
  19865.  Control Program  - (1) The basic functions of the operating system, including 
  19866.    DOS emulation and the support for keyboard, mouse, and video input/output. 
  19867.    (2) A computer program designed to schedule and to supervise the execution 
  19868.    of programs of a computer system. (I)  (A)
  19869.  
  19870.  control window  - A window that is used as part of a composite window to 
  19871.    perform simple input and output tasks. Radio buttons and check boxes are 
  19872.    examples. 
  19873.  
  19874.  control word  - An instruction within a document that identifies its parts or 
  19875.    indicates how to format the document. 
  19876.  
  19877.  coordinate space  - A two-dimensional set of points used to generate output on 
  19878.    a video display of printer. 
  19879.  
  19880.  Copy  - A choice that places onto the clipboard, a copy of what the user has 
  19881.    selected. See also Cut and Paste. 
  19882.  
  19883.  correlation  - The action of determining which element or object within a 
  19884.    picture is at a given position on the display. This follows a pick 
  19885.    operation. 
  19886.  
  19887.  coverpage window  - A window in which the application's help information is 
  19888.    displayed. 
  19889.  
  19890.  CPI  - Common Programming Interface. 
  19891.  
  19892.  critical extended attribute  - An extended attribute that is necessary for the 
  19893.    correct operation of the system or a particular application. 
  19894.  
  19895.  critical section  - (1) In programming languages, a part of an asynchronous 
  19896.    procedure that cannot be executed simultaneously with a certain part of 
  19897.    another asynchronous procedure. (I)
  19898.  
  19899.    Note:  Part of the other asynchronous procedure also is a critical section. 
  19900.    (2) A section of code that is not reentrant; that is, code that can be 
  19901.    executed by only one thread at a time. 
  19902.  
  19903.  CUA architecture  - Common User Access architecture. 
  19904.  
  19905.  current position  - In computer graphics, the position, in user coordinates, 
  19906.    that becomes the starting point for the next graphics routine, if that 
  19907.    routine does not explicitly specify a starting point. 
  19908.  
  19909.  cursor  - A symbol displayed on the screen and associated with an input 
  19910.    device. The cursor indicates where input from the device will be placed. 
  19911.    Types of cursors include text cursors, graphics cursors, and selection 
  19912.    cursors. Contrast with pointer and input focus. 
  19913.  
  19914.  Cut  - In SAA Common User Access architecture, a choice that removes a 
  19915.    selected object, or a part of an object, to the clipboard, usually 
  19916.    compressing the space it occupied in a window. See also Copy and Paste. 
  19917.  
  19918.  
  19919. ΓòÉΓòÉΓòÉ <hidden> Glossary - D ΓòÉΓòÉΓòÉ
  19920.  
  19921.  daisy chain  - A method of device interconnection for determining interrupt 
  19922.    priority by connecting the interrupt sources serially. 
  19923.  
  19924.  data segment  - A nonexecutable section of a program module; that is, a 
  19925.    section of a program that contains data definitions. 
  19926.  
  19927.  data structure  - The syntactic structure of symbolic expressions and their 
  19928.    storage-allocation characteristics. (T)
  19929.  
  19930.  data transfer  - The movement of data from one object to another by way of the 
  19931.    clipboard or by direct manipulation. 
  19932.  
  19933.  DBCS  - Double-byte character set. 
  19934.  
  19935.  DDE  - Dynamic data exchange. 
  19936.  
  19937.  deadlock  - (1) Unresolved contention for the use of a resource. (2) An error 
  19938.    condition in which processing cannot continue because each of two elements 
  19939.    of the process is waiting for an action by, or a response from, the other. 
  19940.    (3) An impasse that occurs when multiple processes are waiting for the 
  19941.    availability of a resource that will not become available because it is 
  19942.    being held by another process that is in a similar wait state. 
  19943.  
  19944.  debug  - To detect, diagnose, and eliminate errors in programs. (T)
  19945.  
  19946.  decipoint  - In printing, one tenth of a point.  There are 72 points in an 
  19947.    inch. 
  19948.  
  19949.  default procedure  - A function provided by the Presentation Manager Interface 
  19950.    that may be used to process standard messages from dialogs or windows. 
  19951.  
  19952.  default value  - A value assumed when no value has been specified. Synonymous 
  19953.    with assumed value. For example, in the graphics programming interface, the 
  19954.    default line-type is 'solid'. 
  19955.  
  19956.  definition list  - A type of list that pairs a term and its description. 
  19957.  
  19958.  delta  - An application-defined threshold, or number of container items, from 
  19959.    either end of the list. 
  19960.  
  19961.  descendant  - See child process. 
  19962.  
  19963.  descriptive text  - Text used in addition to a field prompt to give more 
  19964.    information about a field. 
  19965.  
  19966.  Deselect all  - A choice that cancels the selection of all of the objects that 
  19967.    have been selected in that window. 
  19968.  
  19969.  Desktop Manager  - In the Presentation Manager, a window that displays a list 
  19970.    of groups of programs, each of which can be started or stopped. 
  19971.  
  19972.  desktop window  - The window, corresponding to the physical device, against 
  19973.    which all other types of windows are established. 
  19974.  
  19975.  detached process  - A background process that runs independent of the parent 
  19976.    process. 
  19977.  
  19978.  detent  - A point on a slider that represents an exact value to which a user 
  19979.    can move the slider arm. 
  19980.  
  19981.  device context  - A logical description of a data destination such as memory, 
  19982.    metafile, display, printer, or plotter. See also direct device context, 
  19983.    information device context, memory device context, metafile device context, 
  19984.    queued device context, and screen device context. 
  19985.  
  19986.  device driver  - A file that contains the code needed to attach and use a 
  19987.    device such as a display, printer, or plotter. 
  19988.  
  19989.  device space  - (1) Coordinate space in which graphics are assembled after all 
  19990.    GPI transformations have been applied. Device space is defined in 
  19991.    device-specific units. (2) ( D of C) In computer graphics, a space defined 
  19992.    by the complete set of addressable points of a display device. (A)
  19993.  
  19994.  dialog  - The interchange of information between a computer and its user 
  19995.    through a sequence of requests by the user and the presentation of responses 
  19996.    by the computer. 
  19997.  
  19998.  dialog box  - In SAA Advanced Common User Access architecture, a movable 
  19999.    window, fixed in size, containing controls that a user uses to provide 
  20000.    information required by an application so that it can continue to process a 
  20001.    user request. See also message box, primary window, secondary window. Also 
  20002.    known as a pop-up window. 
  20003.  
  20004.  Dialog Box Editor  - A WYSIWYG editor that creates dialog boxes for 
  20005.    communicating with the application user. 
  20006.  
  20007.  dialog item  - A component (for example, a menu or a button) of a dialog box. 
  20008.    Dialog items are also used when creating dialog templates. 
  20009.  
  20010.  dialog procedure  - A dialog window that is controlled by a window procedure. 
  20011.    It is responsible for responding to all messages sent to the dialog window. 
  20012.  
  20013.  dialog tag language  - A markup language used by the DTL compiler to create 
  20014.    dialog objects. 
  20015.  
  20016.  dialog template  - The definition of a dialog box, which contains details of 
  20017.    its position, appearance, and window ID, and the window ID of each of its 
  20018.    child windows. 
  20019.  
  20020.  direct device context  - A logical description of a data destination that is a 
  20021.    device other than the screen (for example, a printer or plotter), and where 
  20022.    the output is not to go through the spooler. Its purpose is to satisfy 
  20023.    queries. See also device context. 
  20024.  
  20025.  direct manipulation  - The user's ability to interact with an object by using 
  20026.    the mouse, typically by dragging an object around on the Desktop and 
  20027.    dropping it on other objects. 
  20028.  
  20029.  direct memory access (DMA)  - A technique for moving data directly between 
  20030.    main storage and peripheral equipment without requiring processing of the 
  20031.    data by the processing unit.(T)
  20032.  
  20033.  directory  - A type of file containing the names and controlling information 
  20034.    for other files or other directories. 
  20035.  
  20036.  display point  - Synonym for pel. 
  20037.  
  20038.  dithering  - (1) The process used in color displays whereby every other pel is 
  20039.    set to one color, and the intermediate pels are set to another. Together 
  20040.    they produce the effect of a third color at normal viewing distances. This 
  20041.    process can only be used on solid areas of color; it does not work, for 
  20042.    example, on narrow lines. (2) (D of C ) In computer graphics, a technique of 
  20043.    interleaving dark and light pixels so that the resulting image looks 
  20044.    smoothly shaded when viewed from a distance. 
  20045.  
  20046.  DMA  - Direct memory access. 
  20047.  
  20048.  DOS Protect Mode Interface (DPMI)  - An interface between protect mode and 
  20049.    real mode programs. 
  20050.  
  20051.  double-byte character set (DBCS)  - A set of characters in which each 
  20052.    character is represented by two bytes.  Languages such as Japanese, Chinese, 
  20053.    and Korean, which contain more characters than can be represented by 256 
  20054.    code points, require double-byte character sets. Since each character 
  20055.    requires two bytes, the entering, displaying, and printing of DBCS 
  20056.    characters requires hardware and software that can support DBCS. 
  20057.  
  20058.  doubleword  - A contiguous sequence of bits or characters that comprises two 
  20059.    computer words and is capable of being addressed as a unit. (A)
  20060.  
  20061.  DPMI  - DOS Protect Mode Interface. 
  20062.  
  20063.  drag  - In SAA Common User Access, to use a pointing device to move an object; 
  20064.    for example, clicking on a window border, and dragging it to make the window 
  20065.    larger. 
  20066.  
  20067.  dragging  - (1) In computer graphics, moving an object on the display screen 
  20068.    as if it were attached to the pointer. (2) (D of C) In computer graphics, 
  20069.    moving one or more segments on a display surface by translating. (I)  (A)
  20070.  
  20071.  drawing chain  - See segment chain. 
  20072.  
  20073.  drop  - To fix the position of an object that is being dragged, by releasing 
  20074.    the select button of the pointing device. See also drag. 
  20075.  
  20076.  DTL  - Dialog tag language. 
  20077.  
  20078.  dual-boot function  - A feature of the OS/2 operating system that allows the 
  20079.    user to start DOS from within the operating system, or an OS/2 session from 
  20080.    within DOS. 
  20081.  
  20082.  duplex  - Pertaining to communication in which data can be sent and received 
  20083.    at the same time. Synonymous with full duplex. 
  20084.  
  20085.  dynamic data exchange (DDE)  - A message protocol used to communicate between 
  20086.    applications that share data. The protocol uses shared memory as the means 
  20087.    of exchanging data between applications. 
  20088.  
  20089.  dynamic data formatting  - A formatting procedure that enables you to 
  20090.    incorporate text, bit maps or metafiles in an IPF window at execution time. 
  20091.  
  20092.  dynamic link library  - A collection of executable programming code and data 
  20093.    that is bound to an application at load time or run time, rather than during 
  20094.    linking. The programming code and data in a dynamic link library can be 
  20095.    shared by several applications simultaneously. 
  20096.  
  20097.  dynamic linking  - The process of resolving external references in a program 
  20098.    module at load time or run time rather than during linking. 
  20099.  
  20100.  dynamic segments  - Graphics segments drawn in exclusive-OR mix mode so that 
  20101.    they can be moved from one screen position to another without affecting the 
  20102.    rest of the displayed picture. 
  20103.  
  20104.  dynamic storage  - (1) A device that stores data in a manner that permits the 
  20105.    data to move or vary with time such that the specified data is not always 
  20106.    available for recovery. (A)  (2) A storage in which the cells require 
  20107.    repetitive application of control signals in order to retain stored data. 
  20108.    Such repetitive application of the control signals is called a refresh 
  20109.    operation. A dynamic storage may use static addressing or sensing 
  20110.    circuits. (A)  (3) See also static storage. 
  20111.  
  20112.  dynamic time slicing  - Varies the size of the time slice depending on system 
  20113.    load and paging activity. 
  20114.  
  20115.  dynamic-link module  - A module that is linked at load time or run time. 
  20116.  
  20117.  
  20118. ΓòÉΓòÉΓòÉ <hidden> Glossary - E ΓòÉΓòÉΓòÉ
  20119.  
  20120.  EBCDIC  - Extended binary-coded decimal interchange code. A coded character 
  20121.    set consisting of 8-bit coded characters (9 bits including parity check), 
  20122.    used for information interchange among data processing systems, data 
  20123.    communications systems, and associated equipment. 
  20124.  
  20125.  edge-triggered  - Pertaining to an event semaphore that is posted then reset 
  20126.    before a waiting thread gets a chance to run. The semaphore is considered to 
  20127.    be posted for the rest of that thread's waiting period; the thread does not 
  20128.    have to wait for the semaphore to be posted again. 
  20129.  
  20130.  EGA  - Extended graphics adapter. 
  20131.  
  20132.  element  - An entry in a graphics segment that comprises one or more graphics 
  20133.    orders and that is addressed by the element pointer. 
  20134.  
  20135.  EMS  - Expanded Memory Specification. 
  20136.  
  20137.  encapsulation  - Hiding an object's implementation, that is, its private, 
  20138.    internal data and methods. Private variables and methods are accessible only 
  20139.    to the object that contains them. 
  20140.  
  20141.  entry field  - In SAA Common User Access architecture, an area where a user 
  20142.    types information. Its boundaries are usually indicated. See also selection 
  20143.    field. 
  20144.  
  20145.  entry panel  - A defined panel type containing one or more entry fields and 
  20146.    protected information such as headings, prompts, and explanatory text. 
  20147.  
  20148.  entry-field control  - The component of a user interface that provides the 
  20149.    means by which the application receives data entered by the user in an entry 
  20150.    field. When it has the input focus, the entry field displays a flashing 
  20151.    pointer at the position where the next typed character will go. 
  20152.  
  20153.  environment segment  - The list of environment variables and their values for 
  20154.    a process. 
  20155.  
  20156.  environment strings  - ASCII text strings that define the value of environment 
  20157.    variables. 
  20158.  
  20159.  environment variables  - Variables that describe the execution environment of 
  20160.    a process. These variables are named by the operating system or by the 
  20161.    application. Environment variables named by the operating system are PATH, 
  20162.    DPATH, INCLUDE, INIT, LIB, PROMPT, and TEMP. The values of environment 
  20163.    variables are defined by the user in the CONFIG.SYS file, or by using the 
  20164.    SET command at the OS/2 command prompt. 
  20165.  
  20166.  error message  - An indication that an error has been detected. (A)
  20167.  
  20168.  event semaphore  - A semaphore that enables a thread to signal a waiting 
  20169.    thread or threads that an event has occurred or that a task has been 
  20170.    completed. The waiting threads can then perform an action that is dependent 
  20171.    on the completion of the signaled event. 
  20172.  
  20173.  exception  - An abnormal condition such as an I/O error encountered in 
  20174.    processing a data set or a file. 
  20175.  
  20176.  exclusive system semaphore  - A system semaphore that can be modified only by 
  20177.    threads within the same process. 
  20178.  
  20179.  executable file  - (1) A file that contains programs or commands that perform 
  20180.    operations or actions to be taken. (2) A collection of related data records 
  20181.    that execute programs. 
  20182.  
  20183.  exit  - To execute an instruction within a portion of a computer program in 
  20184.    order to terminate the execution of that portion. Such portions of computer 
  20185.    programs include loops, subroutines, modules, and so on. (T)  Repeated exit 
  20186.    requests return the user to the point from which all functions provided to 
  20187.    the system are accessible. Contrast with cancel. 
  20188.  
  20189.  expanded memory specification (EMS)  - Enables DOS applications to access 
  20190.    memory above the 1MB real mode addressing limit. 
  20191.  
  20192.  extended attribute  - An additional piece of information about a file object, 
  20193.    such as its data format or category. It consists of a name and a value. A 
  20194.    file object may have more than one extended attribute associated with it. 
  20195.  
  20196.  extended help  - In SAA Common User Access architecture, a help action that 
  20197.    provides information about the contents of the application window from which 
  20198.    a user requested help. Contrast with contextual help. 
  20199.  
  20200.  extended-choice selection  - A mode that allows the user to select more than 
  20201.    one item from a window. Not all windows allow extended choice selection. 
  20202.    Contrast with multiple-choice selection. 
  20203.  
  20204.  extent  - Continuous space on a disk or diskette that is occupied by or 
  20205.    reserved for a particular data set, data space, or file. 
  20206.  
  20207.  external link  - In Information Presentation Facility, a link that connects 
  20208.    external online document files. 
  20209.  
  20210.  
  20211. ΓòÉΓòÉΓòÉ <hidden> Glossary - F ΓòÉΓòÉΓòÉ
  20212.  
  20213.  family-mode application  - An application program that can run in the OS/2 
  20214.    environment and in the DOS environment; however, it cannot take advantage of 
  20215.    many of the OS/2-mode facilities, such as multitasking, interprocess 
  20216.    communication, and dynamic linking. 
  20217.  
  20218.  FAT  - File allocation table. 
  20219.  
  20220.  FEA  - Full extended attribute. 
  20221.  
  20222.  field-level help  - Information specific to the field on which the cursor is 
  20223.    positioned. This help function is "contextual" because it provides 
  20224.    information about a specific item as it is currently used; the information 
  20225.    is dependent upon the context within the work session. 
  20226.  
  20227.  FIFO  - First-in-first-out. (A)
  20228.  
  20229.  file  - A named set of records stored or processed as a unit. (T)
  20230.  
  20231.  file allocation table (FAT)  - In IBM personal computers, a table used by the 
  20232.    operating system to allocate space on a disk for a file, and to locate and 
  20233.    chain together parts of the file that may be scattered on different sectors 
  20234.    so that the file can be used in a random or sequential manner. 
  20235.  
  20236.  file attribute  - Any of the attributes that describe the characteristics of a 
  20237.    file. 
  20238.  
  20239.  File Manager  - In the Presentation Manager, a program that displays 
  20240.    directories and files, and allows various actions on them. 
  20241.  
  20242.  file specification  - The full identifier for a file, which includes its drive 
  20243.    designation, path, file name, and extension. 
  20244.  
  20245.  file system  - The combination of software and hardware that supports storing 
  20246.    information on a storage device. 
  20247.  
  20248.  file system driver (FSD)  - A program that manages file I\O and controls the 
  20249.    format of information on the storage media. 
  20250.  
  20251.  fillet  - A curve that is tangential to the end points of two adjoining lines. 
  20252.    See also polyfillet. 
  20253.  
  20254.  filtering  - An application process that changes the order of data in a queue. 
  20255.  
  20256.  first-in-first-out (FIFO)  - A queuing technique in which the next item to be 
  20257.    retrieved is the item that has been in the queue for the longest time. (A)
  20258.  
  20259.  flag  - (1) An indicator or parameter that shows the setting of a switch. (2) 
  20260.    A character that signals the occurrence of some condition, such as the end 
  20261.    of a word. (A)  (3) (D of C) A characteristic of a file or directory that 
  20262.    enables it to be used in certain ways. See also archive flag, hidden flag, 
  20263.    and read-only flag. 
  20264.  
  20265.  focus  - See input focus. 
  20266.  
  20267.  folder  - A container used to organize objects. 
  20268.  
  20269.  font  - A particular size and style of typeface that contains definitions of 
  20270.    character sets, marker sets, and pattern sets. 
  20271.  
  20272.  Font Editor  - A utility program provided with the IBM Developers Toolkit that 
  20273.    enables the design and creation of new fonts. 
  20274.  
  20275.  foreground program  - (1) The program with which the user is currently 
  20276.    interacting. Also known as interactive program. Contrast with background 
  20277.    program. (2) (D of C) In multiprogramming,  a high-priority program. 
  20278.  
  20279.  frame  - The part of a window that can contain several different visual 
  20280.    elements specified by the application, but drawn and controlled by the 
  20281.    Presentation Manager. The frame encloses the client area. 
  20282.  
  20283.  frame styles  - Standard window layouts provided by the Presentation Manager. 
  20284.  
  20285.  FSD  - File system driver. 
  20286.  
  20287.  full-duplex  - Synonym for duplex. 
  20288.  
  20289.  full-screen application  - An application that has complete control of the 
  20290.    screen. 
  20291.  
  20292.  function  - (1) In a programming language, a block, with or without formal 
  20293.    parameters, whose execution is invoked by means of a call. (2) A set of 
  20294.    related control statements that cause one or more programs to be performed. 
  20295.  
  20296.  function key  - A key that causes a specified sequence of operations to be 
  20297.    performed when it is pressed, for example, F1 and Alt-K. 
  20298.  
  20299.  function key area  - The area at the bottom of a window that contains function 
  20300.    key assignments such as F1=Help. 
  20301.  
  20302.  
  20303. ΓòÉΓòÉΓòÉ <hidden> Glossary - G ΓòÉΓòÉΓòÉ
  20304.  
  20305.  GDT  - Global Descriptor Table. 
  20306.  
  20307.  general protection fault  - An exception condition that occurs when a process 
  20308.    attempts to use storage or a module that has some level of protection 
  20309.    assigned to it, such as I/O privilege level. See also IOPL code segment. 
  20310.  
  20311.  Global Descriptor Table (GDT)  - A table that defines code and data segments 
  20312.    available to all tasks in an application. 
  20313.  
  20314.  global dynamic-link module  - A dynamic-link module that can be shared by all 
  20315.    processes in the system that refer to the module name. 
  20316.  
  20317.  global file-name character  - Either a question mark (?) or an asterisk (*) 
  20318.    used as a variable in a file name or file name extension when referring to a 
  20319.    particular file or group of files. 
  20320.  
  20321.  glyph  - A graphic symbol whose appearance conveys information. 
  20322.  
  20323.  GPI  - Graphics programming interface. 
  20324.  
  20325.  graphic primitive  - In computer graphics, a basic element, such as an arc or 
  20326.    a line, that is not made up of smaller parts and that is used to create 
  20327.    diagrams and pictures. See also graphics segment. 
  20328.  
  20329.  graphics  - (1) A picture defined in terms of graphic primitives and graphics 
  20330.    attributes. (2) (D of C) The making of charts and pictures. (3) Pertaining 
  20331.    to charts, tables, and their creation. (4) See computer graphics, coordinate 
  20332.    graphics, fixed-image graphics, interactive graphics, passive graphics, 
  20333.    raster graphics. 
  20334.  
  20335.  graphics attributes  - Attributes that apply to graphic primitives. Examples 
  20336.    are color, line type, and shading-pattern definition. See also segment 
  20337.    attributes. 
  20338.  
  20339.  graphics field  - The clipping boundary that defines the visible part of the 
  20340.    presentation-page contents. 
  20341.  
  20342.  graphics mode  - One of several states of a display. The mode determines the 
  20343.    resolution and color content of the screen. 
  20344.  
  20345.  graphics model space  - The conceptual coordinate space in which a picture is 
  20346.    constructed after any model transforms have been applied. Also known as 
  20347.    model space. 
  20348.  
  20349.  Graphics programming interface  - The formally defined programming language 
  20350.    that is between an IBM graphics program and the user of the program. 
  20351.  
  20352.  graphics segment  - A sequence of related graphic primitives and graphics 
  20353.    attributes. See also graphic primitive. 
  20354.  
  20355.  graying  - The indication that a choice on a pull-down is unavailable. 
  20356.  
  20357.  group  - A collection of logically connected controls. For example, the 
  20358.    buttons controlling paper size for a printer could be called a group. See 
  20359.    also program group. 
  20360.  
  20361.  
  20362. ΓòÉΓòÉΓòÉ <hidden> Glossary - H ΓòÉΓòÉΓòÉ
  20363.  
  20364.  handle  - (1) An identifier that represents an object, such as a device or 
  20365.    window, to the Presentation Interface. (2) (D of C) In the Advanced DOS and 
  20366.    OS/2 operating systems, a binary value created by the system that identifies 
  20367.    a drive, directory, and file so that the file can be found and opened. 
  20368.  
  20369.  hard error  - An error condition on a network that requires either that the 
  20370.    system be reconfigured or that the source of the error be removed before the 
  20371.    system can resume reliable operation. 
  20372.  
  20373.  header  - (1) System-defined control information that precedes user data. (2) 
  20374.    The portion of a message that contains control information for the message, 
  20375.    such as one or more destination fields, name of the originating station, 
  20376.    input sequence number, character string indicating the type of message, and 
  20377.    priority level for the message. 
  20378.  
  20379.  heading tags  - A document element that enables information to be displayed in 
  20380.    windows, and that controls entries in the contents window controls placement 
  20381.    of push buttons in a window, and defines the shape and size of windows. 
  20382.  
  20383.  heap  - An area of free storage available for dynamic allocation by an 
  20384.    application. Its size varies according to the storage requirements of the 
  20385.    application. 
  20386.  
  20387.  help function  - (1) A function that provides information about a specific 
  20388.    field, an application panel, or information about the help facility. (2) (D 
  20389.    of C) One or more display images that describe how to use application 
  20390.    software or how to do a system operation. 
  20391.  
  20392.  Help index  - In SAA Common User Access architecture, a help action that 
  20393.    provides an index of the help information available for an application. 
  20394.  
  20395.  help panel  - A panel with information to assist users that is displayed in 
  20396.    response to a help request from the user. 
  20397.  
  20398.  help window  - A Common-User-Access-defined secondary window that displays 
  20399.    information when the user requests help. 
  20400.  
  20401.  hidden file  - An operating system file that is not displayed by a directory 
  20402.    listing. 
  20403.  
  20404.  hide button  - In the OS/2 operating system, a small, square button located in 
  20405.    the right-hand corner of the title bar of a window that, when selected, 
  20406.    removes from the screen all the windows associated with that window. 
  20407.    Contrast with maximize button. See also restore button. 
  20408.  
  20409.  hierarchical inheritance  - The relationship between parent and child classes. 
  20410.    An object that is lower in the inheritance hierarchy than another object, 
  20411.    inherits all the characteristics and behaviors of the objects above it in 
  20412.    the hierarchy. 
  20413.  
  20414.  hierarchy  - A tree of segments beginning with the root segment and proceeding 
  20415.    downward to dependent segment types. 
  20416.  
  20417.  high-performance file system (HPFS)  - In the OS/2 operating system, an 
  20418.    installable file system that uses high-speed buffer storage, known as a 
  20419.    cache, to provide fast access to large disk volumes. The file system also 
  20420.    supports the coexistence of multiple, active file systems on a single 
  20421.    personal computer, with the capability of multiple and different storage 
  20422.    devices. File names used with the HPFS can have as many as 254 characters. 
  20423.  
  20424.  hit testing  - The means of identifying which window is associated with which 
  20425.    input device event. 
  20426.  
  20427.  hook  - A point in a system-defined function where an application can supply 
  20428.    additional code that the system processes as though it were part of the 
  20429.    function. 
  20430.  
  20431.  hook chain  - A sequence of hook procedures that are "chained" together so 
  20432.    that each event is passed, in turn, to each procedure in the chain. 
  20433.  
  20434.  hot spot  - The part of the pointer that must touch an object before it can be 
  20435.    selected. This is usually the tip of the pointer. Contrast with action 
  20436.    point. 
  20437.  
  20438.  HPFS  - high-performance file system. 
  20439.  
  20440.  hypergraphic link  - A connection between one piece of information and another 
  20441.    through the use of graphics. 
  20442.  
  20443.  hypertext  - A way of presenting information online with connections between 
  20444.    one piece of information and another, called hypertext links. See also 
  20445.    hypertext link. 
  20446.  
  20447.  hypertext link  - A connection between one piece of information and another. 
  20448.  
  20449.  
  20450. ΓòÉΓòÉΓòÉ <hidden> Glossary - I ΓòÉΓòÉΓòÉ
  20451.  
  20452.  I/O operation  - An input operation to, or output operation from a device 
  20453.    attached to a computer. 
  20454.  
  20455.  I-beam pointer  - A pointer that indicates an area, such as an entry field in 
  20456.    which text can be edited. 
  20457.  
  20458.  icon  - In SAA Advanced Common User Access architecture, a graphical 
  20459.    representation of an object, consisting of an image, image background, and a 
  20460.    label. Icons can represent items (such as a document file) that the user 
  20461.    wants to work on, and actions that the user wants to perform. In the 
  20462.    Presentation Manager, icons are used for data objects, system actions, and 
  20463.    minimized programs. 
  20464.  
  20465.  icon area  - In the Presentation Manager, the area at the bottom of the screen 
  20466.    that is normally used to display the icons for minimized programs. 
  20467.  
  20468.  Icon Editor  - The Presentation Manager-provided tool for creating icons. 
  20469.  
  20470.  IDL  - Interface Definition Language. 
  20471.  
  20472.  image font  - A set of symbols, each of which is described in a rectangular 
  20473.    array of pels. Some of the pels in the array are set to produce the image of 
  20474.    one of the symbols. Contrast with outline font. 
  20475.  
  20476.  implied metaclass  - Subclassing the metaclass of a parent class without a 
  20477.    separate CSC for the resultant metaclass. 
  20478.  
  20479.  indirect manipulation  - Interaction with an object through choices and 
  20480.    controls. 
  20481.  
  20482.  information device context  - A logical description of a data destination 
  20483.    other than the screen (for example, a printer or plotter), but where no 
  20484.    output will occur. Its purpose is to satisfy queries. See also device 
  20485.    context. 
  20486.  
  20487.  information panel  - A defined panel type characterized by a body containing 
  20488.    only protected information. 
  20489.  
  20490.  Information Presentation Facility (IPF)  - A facility provided by the OS/2 
  20491.    operating system, by which application developers can produce online 
  20492.    documentation and context-sensitive online help panels for their 
  20493.    applications. 
  20494.  
  20495.  inheritance  - The technique of specifying the shape and behavior of one class 
  20496.    (called a subclass) as incremental differences from another class (called 
  20497.    the parent class or superclass). The subclass inherits the superclass' state 
  20498.    representation and methods, and can provide additional data elements and 
  20499.    methods. The subclass also can provide new functions with the same method 
  20500.    names used by the superclass. Such a subclass method is said to override the 
  20501.    superclass method, and will be selected automatically by method resolution 
  20502.    on subclass instances. An overriding method can elect to call upon the 
  20503.    superclass' method as part of its own implementation. 
  20504.  
  20505.  input focus  - (1) The area of a window where user interaction is possible 
  20506.    using an input device, such as a mouse or the keyboard. (2) The position in 
  20507.    the active window where a user's normal interaction with the keyboard will 
  20508.    appear. 
  20509.  
  20510.  input router  - An internal OS/2 process that removes messages from the system 
  20511.    queue. 
  20512.  
  20513.  input/output control  - A device-specific command that requests a function of 
  20514.    a device driver. 
  20515.  
  20516.  installable file system (IFS)  - A file system in which software is installed 
  20517.    when the operating system is started. 
  20518.  
  20519.  instance  - (Or object instance). A specific object, as distinguished from the 
  20520.    abstract definition of an object referred to as its class. 
  20521.  
  20522.  instance method  - A method valid for a particular object. 
  20523.  
  20524.  instruction pointer  - In System/38, a pointer that provides addressability 
  20525.    for a machine interface instruction in a program. 
  20526.  
  20527.  integer atom  - An atom that represents a predefined system constant and 
  20528.    carries no storage overhead. For example, names of window classes provided 
  20529.    by Presentation Manager are expressed as integer atoms. 
  20530.  
  20531.  interactive graphics  - Graphics that can be moved or manipulated by a user at 
  20532.    a terminal. 
  20533.  
  20534.  interactive program  - (1) A program that is running (active) and is ready to 
  20535.    receive (or is receiving) input from a user. (2) A running program that can 
  20536.    receive input from the keyboard or another input device. Compare with active 
  20537.    program and contrast with noninteractive program. 
  20538.  
  20539.    Also known as a foreground program. 
  20540.  
  20541.  interchange file  - A file containing data that can be sent from one 
  20542.    Presentation Manager interface application to another. 
  20543.  
  20544.  Interface Definition Language (IDL)  - Language-neutral interface 
  20545.    specification for a SOM class. 
  20546.  
  20547.  interpreter  - A program that translates and executes each instruction of a 
  20548.    high-level programming language before it translates and executes. 
  20549.  
  20550.  interprocess communication (IPC)  - In the OS/2 operating system, the exchange 
  20551.    of information between processes or threads through semaphores, pipes, 
  20552.    queues, and shared memory. 
  20553.  
  20554.  interval timer  - (1) A timer that provides program interruptions on a 
  20555.    program-controlled basis. (2) An electronic counter that counts intervals of 
  20556.    time under program control. 
  20557.  
  20558.  IOCtl  - Input/output control. 
  20559.  
  20560.  IOPL  - Input/output privilege level. 
  20561.  
  20562.  IOPL code segment  - An IOPL executable section of programming code that 
  20563.    enables an application to directly manipulate hardware interrupts and ports 
  20564.    without replacing the device driver. See also privilege level. 
  20565.  
  20566.  IPC  - Interprocess communication. 
  20567.  
  20568.  IPF  - Information Presentation Facility. 
  20569.  
  20570.  IPF compiler  - A text compiler that interpret tags in a source file and 
  20571.    converts the information into the specified format. 
  20572.  
  20573.  IPF tag language  - A markup language that provides the instructions for 
  20574.    displaying online information. 
  20575.  
  20576.  item  - A data object that can be passed in a DDE transaction. 
  20577.  
  20578.  
  20579. ΓòÉΓòÉΓòÉ <hidden> Glossary - J ΓòÉΓòÉΓòÉ
  20580.  
  20581.  journal  - A special-purpose file that is used to record changes made in the 
  20582.    system. 
  20583.  
  20584.  
  20585. ΓòÉΓòÉΓòÉ <hidden> Glossary - K ΓòÉΓòÉΓòÉ
  20586.  
  20587.  Kanji  - A graphic character set used in Japanese ideographic alphabets. 
  20588.  
  20589.  KBD$  - Character-device name reserved for the keyboard. 
  20590.  
  20591.  kernel  - The part of an operating system that performs basic functions, such 
  20592.    as allocating hardware resources. 
  20593.  
  20594.  kerning  - The design of graphics characters so that their character boxes 
  20595.    overlap. Used to space text proportionally. 
  20596.  
  20597.  keyboard accelerator  - A keystroke that generates a command message for an 
  20598.    application. 
  20599.  
  20600.  keyboard augmentation  - A function that enables a user to press a keyboard 
  20601.    key while pressing a mouse button. 
  20602.  
  20603.  keyboard focus  - A temporary attribute of a window. The window that has a 
  20604.    keyboard focus receives all keyboard input until the focus changes to a 
  20605.    different window. 
  20606.  
  20607.  Keys help  - In SAA Common User Access architecture, a help action that 
  20608.    provides a listing of the application keys and their assigned functions. 
  20609.  
  20610.  
  20611. ΓòÉΓòÉΓòÉ <hidden> Glossary - L ΓòÉΓòÉΓòÉ
  20612.  
  20613.  label  - In a graphics segment, an identifier of one or more elements that is 
  20614.    used when editing the segment. 
  20615.  
  20616.  LAN  - Local area network. 
  20617.  
  20618.  language support procedure  - A function provided by the Presentation Manager 
  20619.    Interface for applications that do not, or cannot (as in the case of COBOL 
  20620.    and FORTRAN programs), provide their own dialog or window procedures. 
  20621.  
  20622.  lazy drag  - See pickup and drop. 
  20623.  
  20624.  lazy drag set  - See pickup set. 
  20625.  
  20626.  LDT  - In the OS/2 operating system, Local Descriptor Table. 
  20627.  
  20628.  LIFO stack  - A stack from which data is retrieved in last-in, first-out 
  20629.    order. 
  20630.  
  20631.  linear address  - A unique value that identifies the memory object. 
  20632.  
  20633.  linked list  - Synonym for chained list. 
  20634.  
  20635.  list box  - In SAA Advanced Common User Access architecture, a control that 
  20636.    contains scrollable choices from which a user can select one choice. 
  20637.  
  20638.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  20639.    selection list. 
  20640.  
  20641.  list button  - A button labeled with an underlined down-arrow that presents a 
  20642.    list of valid objects or choices that can be selected for that field. 
  20643.  
  20644.  list panel  - A defined panel type that displays a list of items from which 
  20645.    users can select one or more choices and then specify one or more actions to 
  20646.    work on those choices. 
  20647.  
  20648.  load time  - The point in time at which a program module is loaded into main 
  20649.    storage for execution. 
  20650.  
  20651.  load-on-call  - A function of a linkage editor that allows selected segments 
  20652.    of the module to be disk resident while other segments are executing. Disk 
  20653.    resident segments are loaded for execution and given control when any entry 
  20654.    point that they contain is called. 
  20655.  
  20656.  local area network (LAN)  - (1) A computer network located on a user's 
  20657.    premises within a limited geographical area. Communication within a local 
  20658.    area network is not subject to external regulations;  however, communication 
  20659.    across the LAN boundary may be subject to some form of regulation. (T)
  20660.  
  20661.    Note:  A LAN does not use store and forward techniques. (2) A network in 
  20662.    which a set of devices are connected to one another for communication and 
  20663.    that can be connected to a larger network. 
  20664.  
  20665.  Local Descriptor Table (LDT)  - Defines code and data segments specific to a 
  20666.    single task. 
  20667.  
  20668.  lock  - A serialization mechanism by means of which a resource is restricted 
  20669.    for use by the holder of the lock. 
  20670.  
  20671.  logical storage device  - A device that the user can map to a physical 
  20672.    (actual) device. 
  20673.  
  20674.  LPT1, LPT2, LPT3  - Character-device names reserved for parallel printers 1 
  20675.    through 3. 
  20676.  
  20677.  
  20678. ΓòÉΓòÉΓòÉ <hidden> Glossary - M ΓòÉΓòÉΓòÉ
  20679.  
  20680.  main window  - The window that is positioned relative to the desktop window. 
  20681.  
  20682.  manipulation button  - The button on a pointing device a user presses to 
  20683.    directly manipulate an object. 
  20684.  
  20685.  map  - (1) A set of values having a defined correspondence with the quantities 
  20686.    or values of another set. (I)  (A)  (2) To establish a set of values having 
  20687.    a defined correspondence with the quantities or values of another set. (I)
  20688.  
  20689.  marker box  - In computer graphics, the boundary that defines, in world 
  20690.    coordinates, the horizontal and vertical space occupied by a single marker 
  20691.    from a marker set. 
  20692.  
  20693.  marker symbol  - A symbol centered on a point. Graphs and charts can use 
  20694.    marker symbols to indicate the plotted points. 
  20695.  
  20696.  marquee box  - The rectangle that appears during a selection technique in 
  20697.    which a user selects objects by drawing a box around them with a pointing 
  20698.    device. 
  20699.  
  20700.  Master Help Index  - In the OS/2 operating system, an alphabetic list of help 
  20701.    topics related to using the operating system. 
  20702.  
  20703.  maximize  - To enlarge a window to its largest possible size. 
  20704.  
  20705.  media window  - The part of the physical device (display, printer, or plotter) 
  20706.    on which a picture is presented. 
  20707.  
  20708.  memory block  - Part memory within a heap. 
  20709.  
  20710.  memory device context  - A logical description of a data destination that is a 
  20711.    memory bit map. See also device context. 
  20712.  
  20713.  memory management  - A feature of the operating system for allocating, 
  20714.    sharing, and freeing main storage. 
  20715.  
  20716.  memory object  - Logical unit of memory requested by an application, which 
  20717.    forms the granular unit of memory manipulation from the application 
  20718.    viewpoint. 
  20719.  
  20720.  menu  - In SAA Advanced Common User Access architecture, an extension of the 
  20721.    menu bar that displays a list of choices available for a selected choice in 
  20722.    the menu bar. After a user selects a choice in menu bar, the corresponding 
  20723.    menu appears. Additional pop-up windows can appear from menu choices. 
  20724.  
  20725.  menu bar  - In SAA Advanced Common User Access architecture, the area near the 
  20726.    top of a window, below the title bar and above the rest of the window, that 
  20727.    contains choices that provide access to other menus. 
  20728.  
  20729.  menu button  - The button on a pointing device that a user presses to view a 
  20730.    pop-up menu associated with an object. 
  20731.  
  20732.  message  - (1) In the Presentation Manager, a packet of data used for 
  20733.    communication between the Presentation Manager interface and Presentation 
  20734.    Manager applications (2) In a user interface, information not requested by 
  20735.    users but presented to users by the computer in response to a user action or 
  20736.    internal process. 
  20737.  
  20738.  message box  - (1) A dialog window predefined by the system and used as a 
  20739.    simple interface for applications, without the necessity of creating 
  20740.    dialog-template resources or dialog procedures. (2) (D of C) In SAA Advanced 
  20741.    Common User Access architecture, a type of window that shows messages to 
  20742.    users. See also dialog box, primary window, secondary window. 
  20743.  
  20744.  message filter  - The means of selecting which messages from a specific window 
  20745.    will be handled by the application. 
  20746.  
  20747.  message queue  - A sequenced collection of messages to be read by the 
  20748.    application. 
  20749.  
  20750.  message stream mode  - A method of operation in which data is treated as a 
  20751.    stream of messages.  Contrast with  byte stream. 
  20752.  
  20753.  metacharacter  - See global file-name character. 
  20754.  
  20755.  metaclass  - A class whose instances are all classes. In SOM, any class 
  20756.    descended from SOMClass is a metaclass. The methods of a metaclass are 
  20757.    sometimes called "class" methods. 
  20758.  
  20759.  metafile  - A file containing a series of attributes that set color, shape and 
  20760.    size, usually of a picture or a drawing. Using a program that can interpret 
  20761.    these attributes, a user can view the assembled image. 
  20762.  
  20763.  metafile device context  - A logical description of a data destination that is 
  20764.    a metafile, which is used for graphics interchange. See also device context. 
  20765.  
  20766.  metalanguage  - A language used to specify another language. For example, data 
  20767.    types can be described using a metalanguage so as to make the descriptions 
  20768.    independent of any one computer language. 
  20769.  
  20770.  method  - One of the units that makes up the behavior of an object. A method 
  20771.    is a combination of a function and a name, such that many different 
  20772.    functions can have the same name. Which function the name refers to at any 
  20773.    point in time depends on the object that is to execute the method and is the 
  20774.    subject of method resolution. 
  20775.  
  20776.  method override  - The replacement, by a child class, of the implementation of 
  20777.    a method inherited from a parent and an ancestor class. 
  20778.  
  20779.  mickey  - A unit of measurement for physical mouse motion whose value depends 
  20780.    on the mouse device driver currently loaded. 
  20781.  
  20782.  micro presentation space  - A graphics presentation space in which a 
  20783.    restricted set of the GPI function calls is available. 
  20784.  
  20785.  minimize  - To remove from the screen all windows associated with an 
  20786.    application and replace them with an icon that represents the application. 
  20787.  
  20788.  mix  - An attribute that determines how the foreground of a graphic primitive 
  20789.    is combined with the existing color of graphics output. Also known as 
  20790.    foreground mix. Contrast with background mix. 
  20791.  
  20792.  mixed character string  - A string containing a mixture of one-byte and Kanji 
  20793.    or Hangeul (two-byte) characters. 
  20794.  
  20795.  mnemonic  - (1) A method of selecting an item on a pull-down by means of 
  20796.    typing the highlighted letter in the menu item. (2) (D of C) In SAA Advanced 
  20797.    Common User Access architecture, usually a single character, within the text 
  20798.    of a choice, identified by an underscore beneath the character. If all 
  20799.    characters in a choice already serve as mnemonics for other choices, another 
  20800.    character, placed in parentheses immediately following the choice, can be 
  20801.    used. When a user types the mnemonic for a choice, the choice is either 
  20802.    selected or the cursor is moved to that choice. 
  20803.  
  20804.  modal dialog box  - In SAA Advanced Common User Access architecture, a type of 
  20805.    movable window, fixed in size, that requires a user to enter information 
  20806.    before continuing to work in the application window from which it was 
  20807.    displayed. Contrast with modeless dialog box. Also known as a serial dialog 
  20808.    box. Contrast with parallel dialog box. 
  20809.  
  20810.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  20811.    pop-up window. 
  20812.  
  20813.  model space  - See graphics model space. 
  20814.  
  20815.  modeless dialog box  - In SAA Advanced Common User Access architecture, a type 
  20816.    of movable window, fixed in size, that allows users to continue their dialog 
  20817.    with the application without entering information in the dialog box. Also 
  20818.    known as a parallel dialog box. Contrast with modal dialog box. 
  20819.  
  20820.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  20821.    pop-up window. 
  20822.  
  20823.  module definition file  - A file that describes the code segments within a 
  20824.    load module. For example, it indicates whether a code segment is loadable 
  20825.    before module execution begins (preload), or loadable only when referred to 
  20826.    at run time (load-on-call). 
  20827.  
  20828.  mouse  - In SAA usage, a device that a user moves on a flat surface to 
  20829.    position a pointer on the screen. It allows a user to select a choice o 
  20830.    function to be performed or to perform operations on the screen, such as 
  20831.    dragging or drawing lines from one position to another. 
  20832.  
  20833.  MOUSE$  - Character-device name reserved for a mouse. 
  20834.  
  20835.  multiple-choice selection  - In SAA Basic Common User Access architecture, a 
  20836.    type of field from which a user can select one or more choices or select 
  20837.    none. See also check box. Contrast with extended-choice selection. 
  20838.  
  20839.  multiple-line entry field  - In SAA Advanced Common User Access architecture, 
  20840.    a control into which a user types more than one line of information. See 
  20841.    also single-line entry field. 
  20842.  
  20843.  multitasking  - The concurrent processing of applications or parts of 
  20844.    applications. A running application and its data are protected from other 
  20845.    concurrently running applications. 
  20846.  
  20847.  mutex semaphore  - (Mutual exclusion semaphore). A semaphore that enables 
  20848.    threads to serialize their access to resources. Only the thread that 
  20849.    currently owns the mutex semaphore can gain access to the resource, thus 
  20850.    preventing one thread from interrupting operations being performed by 
  20851.    another. 
  20852.  
  20853.  muxwait semaphore  - (Multiple wait semaphore). A semaphore that enables a 
  20854.    thread to wait either for multiple event semaphores to be posted or for 
  20855.    multiple mutex semaphores to be released. Alternatively, a muxwait semaphore 
  20856.    can be set to enable a thread to wait for any ONE of the event or mutex 
  20857.    semaphores in the muxwait semaphore's list to be posted or released. 
  20858.  
  20859.  
  20860. ΓòÉΓòÉΓòÉ <hidden> Glossary - N ΓòÉΓòÉΓòÉ
  20861.  
  20862.  named pipe  - A named buffer that provides client-to-server, server-to-client, 
  20863.    or full duplex communication between unrelated processes. Contrast with 
  20864.    unnamed pipe. 
  20865.  
  20866.  national language support (NLS)  - The modification or conversion of a United 
  20867.    States English product to conform to the requirements of another language or 
  20868.    country. This can include the enabling or retrofitting of a product and the 
  20869.    translation of nomenclature, MRI, or documentation of a product. 
  20870.  
  20871.  nested list  - A list that is contained within another list. 
  20872.  
  20873.  NLS  - national language support. 
  20874.  
  20875.  non-8.3 file-name format  - A file-naming convention in which file names can 
  20876.    consist of up to 255 characters. See also 8.3 file-name format. 
  20877.  
  20878.  noncritical extended attribute  - An extended attribute that is not necessary 
  20879.    for the function of an application. 
  20880.  
  20881.  nondestructive read  - Reading that does not erase the data in the source 
  20882.    location. (T)
  20883.  
  20884.  noninteractive program  - A running program that cannot receive input from the 
  20885.    keyboard or other input device. Compare with active program, and contrast 
  20886.    with interactive program. 
  20887.  
  20888.  nonretained graphics  - Graphic primitives that are not remembered by the 
  20889.    Presentation Manager interface when they have been drawn. Contrast with 
  20890.    retained graphics. 
  20891.  
  20892.  null character (NUL)  - (1) Character-device name reserved for a nonexistent 
  20893.    (dummy) device. (2) (D of C) A control character that is used to accomplish 
  20894.    media-fill or time-fill and that may be inserted into or removed from a 
  20895.    sequence of characters without affecting the meaning of the sequence; 
  20896.    however, the control of equipment or the format may be affected by this 
  20897.    character. (I)  (A)
  20898.  
  20899.  null-terminated string  - A string of (n+1) characters where the (n+1)th 
  20900.    character is the 'null' character (0x00) Also known as 'zero-terminated' 
  20901.    string and 'ASCIIZ' string. 
  20902.  
  20903.  
  20904. ΓòÉΓòÉΓòÉ <hidden> Glossary - O ΓòÉΓòÉΓòÉ
  20905.  
  20906.  object  - The elements of data and function that programs create, manipulate, 
  20907.    pass as arguments, and so forth. An object is a way of associating specific 
  20908.    data values with a specific set of named functions (called methods) for a 
  20909.    period of time (referred to as the lifetime of the object). The data values 
  20910.    of an object are referred to as its state. In SOM, objects are created by 
  20911.    other objects called classes. The specification of what comprises the set of 
  20912.    functions and data elements that make up an object is referred to as the 
  20913.    definition of a class. 
  20914.  
  20915.    SOM objects offer a high degree of encapsulation. This property permits many 
  20916.    aspects of the implementation of an object to change without affecting 
  20917.    client programs that depend on the object's behavior. 
  20918.  
  20919.  object definition  - See class. 
  20920.  
  20921.  object instance  - See instance. 
  20922.  
  20923.  Object Interface Definition Language (OIDL)  - Specification language used in 
  20924.    SOM Version 1 for defining classes. Replaced by Interface Definition 
  20925.    Language (IDL). 
  20926.  
  20927.  object window  - A window that does not have a parent but which might have 
  20928.    child windows. An object window cannot be presented on a device. 
  20929.  
  20930.  OIDL  - Object Interface Definition Language. 
  20931.  
  20932.  open  - To start working with a file, directory, or other object. 
  20933.  
  20934.  ordered list  - Vertical arrangements of items, with each item in the list 
  20935.    preceded by a number or letter. 
  20936.  
  20937.  outline font  - A set of symbols, each of which is created as a series of 
  20938.    lines and curves.  Synonymous with vector font. Contrast with image font. 
  20939.  
  20940.  output area  - An area of storage reserved for output. (A)
  20941.  
  20942.  owner window  - A window into which specific events that occur in another 
  20943.    (owned) window are reported. 
  20944.  
  20945.  ownership  - The determination of how windows communicate using messages. 
  20946.  
  20947.  owning process  - The process that owns the resources that might be shared 
  20948.    with other processes. 
  20949.  
  20950.  
  20951. ΓòÉΓòÉΓòÉ <hidden> Glossary - P ΓòÉΓòÉΓòÉ
  20952.  
  20953.  page  - (1) A 4KB segment of contiguous physical memory. (2) (D of C) A 
  20954.    defined unit of space on a storage medium. 
  20955.  
  20956.  page viewport  - A boundary in device coordinates that defines the area of the 
  20957.    output device in which graphics are to be displayed. The presentation-page 
  20958.    contents are transformed automatically to the page viewport in device space. 
  20959.  
  20960.  paint  - (1) The action of drawing or redrawing the contents of a window. (2) 
  20961.    In computer graphics, to shade an area of a display image;  for example, 
  20962.    with crosshatching or color. 
  20963.  
  20964.  panel  - In SAA Basic Common User Access architecture, a particular 
  20965.    arrangement of information that is presented in a window or pop-up. If some 
  20966.    of the information is not visible, a user can scroll through the 
  20967.    information. 
  20968.  
  20969.  panel area  - An area within a panel that contains related information. The 
  20970.    three major Common User Access-defined panel areas are the action bar, the 
  20971.    function key area, and the panel body. 
  20972.  
  20973.  panel area separator  - In SAA Basic Common User Access architecture, a solid, 
  20974.    dashed, or blank line that provides a visual distinction between two 
  20975.    adjacent areas of a panel. 
  20976.  
  20977.  panel body  - The portion of a panel not occupied by the action bar, function 
  20978.    key area, title or scroll bars. The panel body can contain protected 
  20979.    information, selection fields, and entry fields. The layout and content of 
  20980.    the panel body determine the panel type. 
  20981.  
  20982.  panel body area  - See client area. 
  20983.  
  20984.  panel definition  - A description of the contents and characteristics of a 
  20985.    panel. A panel definition is the application developer's mechanism for 
  20986.    predefining the format to be presented to users in a window. 
  20987.  
  20988.  panel ID  - In SAA Basic Common User Access architecture, a panel identifier, 
  20989.    located in the upper-left corner of a panel.  A user can choose whether to 
  20990.    display the panel ID. 
  20991.  
  20992.  panel title  - In SAA Basic Common User Access architecture, a particular 
  20993.    arrangement of information that is presented in a window or pop-up. If some 
  20994.    of the information is not visible, a user can scroll through the 
  20995.    information. 
  20996.  
  20997.  paper size  - The size of paper, defined in either standard U.S. or European 
  20998.    names (for example, A, B, A4), and measured in inches or millimeters 
  20999.    respectively. 
  21000.  
  21001.  parallel dialog box  - See modeless dialog box. 
  21002.  
  21003.  parameter list  - A list of values that provides a means of associating 
  21004.    addressability of data defined in a called program with data in the calling 
  21005.    program. It contains parameter names and the order in which they are to be 
  21006.    associated in the calling and called program. 
  21007.  
  21008.  parent class  - See inheritance. 
  21009.  
  21010.  parent process  - In the OS/2 operating system, a process that creates other 
  21011.    processes. Contrast with child process. 
  21012.  
  21013.  parent window  - In the OS/2 operating system, a window that creates a child 
  21014.    window. The child window is drawn within the parent window. If the parent 
  21015.    window is moved, resized, or destroyed, the child window also will be moved, 
  21016.    resized, or destroyed. However, the child window can be moved and resized 
  21017.    independently from the parent window, within the boundaries of the parent 
  21018.    window. Contrast with child window. 
  21019.  
  21020.  partition  - (1) A fixed-size division of storage. (2) On an IBM personal 
  21021.    computer fixed disk, one of four possible storage areas of variable size; 
  21022.    one may be accessed by DOS, and each of the others may be assigned to 
  21023.    another operating system. 
  21024.  
  21025.  Paste  - A choice in the Edit pull-down that a user selects to move the 
  21026.    contents of the clipboard into a preselected location. See also Copy and 
  21027.    Cut. 
  21028.  
  21029.  path  - The route used to locate files; the storage location of a file. A 
  21030.    fully qualified path lists the drive identifier, directory name, 
  21031.    subdirectory name (if any), and file name with the associated extension. 
  21032.  
  21033.  PDD  - Physical device driver. 
  21034.  
  21035.  peeking  - An action taken by any thread in the process that owns the queue to 
  21036.    examine queue elements without removing them. 
  21037.  
  21038.  pel  - (1) The smallest area of a display screen capable of being addressed 
  21039.    and switched between visible and invisible states. Synonym for display 
  21040.    point, pixel, and picture element. (2) (D of C) Picture element. 
  21041.  
  21042.  persistent object  - An object whose instance data and state are preserved 
  21043.    between system shutdown and system startup. 
  21044.  
  21045.  physical device driver (PDD)  - A system interface that handles hardware 
  21046.    interrupts and supports a set of input and output functions. 
  21047.  
  21048.  pick  - To select part of a displayed object using the pointer. 
  21049.  
  21050.  pickup  - To add an object or set of objects to the pickup set. 
  21051.  
  21052.  pickup and drop  - A drag operation that does not require the direct 
  21053.    manipulation button to be pressed for the duration of the drag. 
  21054.  
  21055.  pickup set  - The set of objects that have been picked up as part of a pickup 
  21056.    and drop operation. 
  21057.  
  21058.  picture chain  - See segment chain. 
  21059.  
  21060.  picture element  - (1) Synonym for pel. (2) (D of C) In computer graphics, the 
  21061.    smallest element of a display surface that can be independently assigned 
  21062.    color and intensity. (T)  . (3) The area of the finest detail that can be 
  21063.    reproduced effectively on the recording medium. 
  21064.  
  21065.  PID  - Process identification. 
  21066.  
  21067.  pipe  - (1) A named or unnamed buffer used to pass data between processes. A 
  21068.    process reads from or writes to a pipe as if the pipe were a standard-input 
  21069.    or standard-output file. See also named pipe and unnamed pipe. (2) (D of C) 
  21070.    To direct data so that the output from one process becomes the input to 
  21071.    another process. The standard output of one command can be connected to the 
  21072.    standard input of another with the pipe operator (|). 
  21073.  
  21074.  pixel  - (1) Synonym for pel. (2) (D of C) Picture element. 
  21075.  
  21076.  plotter  - An output unit that directly produces a hardcopy record of data on 
  21077.    a removable medium, in the form of a two-dimensional graphic representation. (T)
  21078.  
  21079.  PM  - Presentation Manager. 
  21080.  
  21081.  pointer  - (1) The symbol displayed on the screen that is moved by a pointing 
  21082.    device, such as a mouse. The pointer is used to point at items that users 
  21083.    can select. Contrast with cursor. (2) A data element that indicates the 
  21084.    location of another data element. (T)
  21085.  
  21086.  POINTER$  - Character-device name reserved for a pointer device (mouse screen 
  21087.    support). 
  21088.  
  21089.  pointing device  - In SAA Advanced Common User Access architecture, an 
  21090.    instrument, such as a mouse, trackball, or joystick, used to move a pointer 
  21091.    on the screen. 
  21092.  
  21093.  pointings  - Pairs of x-y coordinates produced by an operator defining 
  21094.    positions on a screen with a pointing device, such as a mouse. 
  21095.  
  21096.  polyfillet  - A curve based on a sequence of lines. The curve is tangential to 
  21097.    the end points of the first and last lines, and tangential also to the 
  21098.    midpoints of all other lines. See also fillet. 
  21099.  
  21100.  polygon  - One or more closed figures that can be drawn filled, outlined, or 
  21101.    filled and outlined. 
  21102.  
  21103.  polyline  - A sequence of adjoining lines. 
  21104.  
  21105.  polymorphism  - The ability to have different implementations of the same 
  21106.    method for two or more classes of objects. 
  21107.  
  21108.  pop  - To retrieve an item from a last-in-first-out stack of items. Contrast 
  21109.    with push. 
  21110.  
  21111.  pop-up menu  - A menu that lists the actions that a user can perform on an 
  21112.    object. The contents of the pop-up menu can vary depending on the context, 
  21113.    or state, of the object. 
  21114.  
  21115.  pop-up window  - (1) A window that appears on top of another window in a 
  21116.    dialog. Each pop-up window must be completed before returning to the 
  21117.    underlying window. (2) (D of C) In SAA Advanced Common User Access 
  21118.    architecture, a movable window, fixed in size, in which a user provides 
  21119.    information required by an application so that it can continue to process a 
  21120.    user request. 
  21121.  
  21122.  presentation drivers  - Special purpose I/O routines that handle field 
  21123.    device-independent I/O requests from the PM and its applications. 
  21124.  
  21125.  Presentation Manager (PM)  - The interface of the OS/2 operating system that 
  21126.    presents, in windows a graphics-based interface to applications and files 
  21127.    installed and running under the OS/2 operating system. 
  21128.  
  21129.  presentation page  - The coordinate space in which a picture is assembled for 
  21130.    display. 
  21131.  
  21132.  presentation space (PS)  - (1) Contains the device-independent definition of a 
  21133.    picture. (2) (D of C) The display space on a display device. 
  21134.  
  21135.  primary window  - In SAA Common User Access architecture, the window in which 
  21136.    the main interaction between the user and the application takes place. In a 
  21137.    multiprogramming environment, each application starts in its own primary 
  21138.    window. The primary window remains for the duration of the application, 
  21139.    although the panel displayed will change as the user's dialog moves forward. 
  21140.    See also secondary window. 
  21141.  
  21142.  primitive  - In computer graphics, one of several simple functions for drawing 
  21143.    on the screen, including, for example, the rectangle, line, ellipse, 
  21144.    polygon, and so on. 
  21145.  
  21146.  primitive attribute  - A specifiable characteristic of a graphic primitive. 
  21147.    See graphics attributes. 
  21148.  
  21149.  print job  - The result of sending a document or picture to be printed. 
  21150.  
  21151.  Print Manager  - In the Presentation Manager, the part of the spooler that 
  21152.    manages the spooling process. It also allows users to view print queues and 
  21153.    to manipulate print jobs. 
  21154.  
  21155.  privilege level  - A protection level imposed by the hardware architecture of 
  21156.    the IBM personal computer.  There are four privilege levels (number 0 
  21157.    through 3).  Only certain types of programs are allowed to execute at each 
  21158.    privilege level.  See also IOPL code segment. 
  21159.  
  21160.  procedure call  - In programming languages, a language construct for invoking 
  21161.    execution of a procedure. 
  21162.  
  21163.  process  - An instance of an executing application and the resources it is 
  21164.    using. 
  21165.  
  21166.  program  - A sequence of instructions that a computer can interpret and 
  21167.    execute. 
  21168.  
  21169.  program details  - Information about a program that is specified in the 
  21170.    Program Manager window and is used when the program is started. 
  21171.  
  21172.  program group  - In the Presentation Manager, several programs that can be 
  21173.    acted upon as a single entity. 
  21174.  
  21175.  program name  - The full file specification of a program. Contrast with 
  21176.    program title. 
  21177.  
  21178.  program title  - The name of a program as it is listed in the Program Manager 
  21179.    window. Contrast with program name. 
  21180.  
  21181.  prompt  - A displayed symbol or message that requests input from the user or 
  21182.    gives operational information; for example, on the display screen of an IBM 
  21183.    personal computer, the DOS A> prompt. The user must respond to the prompt in 
  21184.    order to proceed. 
  21185.  
  21186.  protect mode  - A method of program operation that limits or prevents access 
  21187.    to certain instructions or areas of storage. Contrast with real mode. 
  21188.  
  21189.  protocol  - A set of semantic and syntactic rules that determines the behavior 
  21190.    of functional units in achieving communication. (I)
  21191.  
  21192.  pseudocode  - An artificial language used to describe computer program 
  21193.    algorithms without using the syntax of any particular programming language. (A)
  21194.  
  21195.  pull-down  - (1) An action bar extension that displays a list of choices 
  21196.    available for a selected action bar choice. After users select an action bar 
  21197.    choice, the pull-down appears with the list of choices. Additional pop-up 
  21198.    windows may appear from pull-down choices to further extend the actions 
  21199.    available to users. (2) (D of C) In SAA Common User Access architecture, 
  21200.    pertaining to a choice in an action bar pull-down. 
  21201.  
  21202.  push  - To add an item to a last-in-first-out stack of items. Contrast with 
  21203.    pop. 
  21204.  
  21205.  push button  - In SAA Advanced Common User Access architecture, a rectangle 
  21206.    with text inside. Push buttons are used in windows for actions that occur 
  21207.    immediately when the push button is selected. 
  21208.  
  21209.  putback  - To remove an object or set of objects from the lazy drag set. This 
  21210.    has the effect of undoing the pickup operation for those objects 
  21211.  
  21212.  putdown  - To drop the objects in the lazy drag set on the target object. 
  21213.  
  21214.  
  21215. ΓòÉΓòÉΓòÉ <hidden> Glossary - Q ΓòÉΓòÉΓòÉ
  21216.  
  21217.  queue  - (1) A linked list of elements waiting to be processed in FIFO order. 
  21218.    For example, a queue may be a list of print jobs waiting to be printed. (2) 
  21219.    (D of C) A line or list of items waiting to be processed; for example, work 
  21220.    to be performed or messages to be displayed. 
  21221.  
  21222.  queued device context  - A logical description of a data destination (for 
  21223.    example, a printer or plotter) where the output is to go through the 
  21224.    spooler. See also device context. 
  21225.  
  21226.  
  21227. ΓòÉΓòÉΓòÉ <hidden> Glossary - R ΓòÉΓòÉΓòÉ
  21228.  
  21229.  radio button  - (1) A control window, shaped like a round button on the 
  21230.    screen, that can be in a checked or unchecked state. It is used to select a 
  21231.    single item from a list. Contrast with check box. (2) In SAA Advanced Common 
  21232.    User Access architecture, a circle with text beside it. Radio buttons are 
  21233.    combined to show a user a fixed set of choices from which only one can be 
  21234.    selected. The circle is partially filled when a choice is selected. 
  21235.  
  21236.  RAS  - Reliability, availability, and serviceability. 
  21237.  
  21238.  raster  - (1) In computer graphics, a predetermined pattern of lines that 
  21239.    provides uniform coverage of a display space. (T)  (2) The coordinate grid 
  21240.    that divides the display area of a display device.  (A)
  21241.  
  21242.  read-only file  - A file that can be read from but not written to. 
  21243.  
  21244.  real mode  - A method of program operation that does not limit or prevent 
  21245.    access to any instructions or areas of storage.  The operating system loads 
  21246.    the entire program into storage and gives the program access to all system 
  21247.    resources. Contrast with protect mode. 
  21248.  
  21249.  realize  - To cause the system to ensure, wherever possible, that the physical 
  21250.    color table of a device is set to the closest possible match in the logical 
  21251.    color table. 
  21252.  
  21253.  recursive routine  - A routine that can call itself, or be called by another 
  21254.    routine that was called by the recursive routine. 
  21255.  
  21256.  reentrant  - The attribute of a program or routine that allows the same copy 
  21257.    of the program or routine to be used concurrently by two or more tasks. 
  21258.  
  21259.  reference phrase  - (1) A word or phrase that is emphasized in a 
  21260.    device-dependent manner to inform the user that additional information for 
  21261.    the word or phrase is available. (2) (D of C) In hypertext, text that is 
  21262.    highlighted and preceded by a single-character input field used to signify 
  21263.    the existence of a hypertext link. 
  21264.  
  21265.  reference phrase help  - In SAA Common User Access architecture, highlighted 
  21266.    words or phrases within help information that a user selects to get 
  21267.    additional information. 
  21268.  
  21269.  refresh  - To update a window, with changed information, to its current 
  21270.    status. 
  21271.  
  21272.  region  - A clipping boundary in device space. 
  21273.  
  21274.  register  - A part of internal storage having a specified storage capacity and 
  21275.    usually intended for a specific purpose. (T)
  21276.  
  21277.  remote file system  - A file-system driver that gains access to a remote 
  21278.    system without a block device driver. 
  21279.  
  21280.  resource  - The means of providing extra information used in the definition of 
  21281.    a window. A resource can contain definitions of fonts, templates, 
  21282.    accelerators, and mnemonics; the definitions are held in a resource file. 
  21283.  
  21284.  resource file  - A file containing information used in the definition of a 
  21285.    window. Definitions can be of fonts, templates, accelerators, and mnemonics. 
  21286.  
  21287.  restore  - To return a window to its original size or position following a 
  21288.    sizing or moving action. 
  21289.  
  21290.  retained graphics  - Graphic primitives that are remembered by the 
  21291.    Presentation Manager interface after they have been drawn. Contrast with 
  21292.    nonretained graphics. 
  21293.  
  21294.  return code  - (1) A value returned to a program to indicate the results of an 
  21295.    operation requested by that program. (2) A code used to influence the 
  21296.    execution of succeeding instructions.(A) 
  21297.  
  21298.  reverse video  - (1) A form of highlighting a character, field, or cursor by 
  21299.    reversing the color of the character, field, or cursor with its background; 
  21300.    for example, changing a red character on a black background to a black 
  21301.    character on a red background. (2) In SAA Basic Common User Access 
  21302.    architecture, a screen emphasis feature that interchanges the foreground and 
  21303.    background colors of an item. 
  21304.  
  21305.  REXX Language  - Restructured Extended Executor. A procedural language that 
  21306.    provides batch language functions along with structured programming 
  21307.    constructs such as loops; conditional testing and subroutines. 
  21308.  
  21309.  RGB  - (1) Color coding in which the brightness of the additive primary colors 
  21310.    of light, red, green, and blue, are specified as three distinct values of 
  21311.    white light. (2) Pertaining to a color display that accepts signals 
  21312.    representing red, green, and blue. 
  21313.  
  21314.  roman  - Relating to a type style with upright characters. 
  21315.  
  21316.  root segment  - In a hierarchical database, the highest segment in the tree 
  21317.    structure. 
  21318.  
  21319.  round-robin scheduling  - A process that allows each thread to run for a 
  21320.    specified amount of time. 
  21321.  
  21322.  run time  - (1) Any instant at which the execution of a particular computer 
  21323.    program takes place. (T)  (2) The amount of time needed for the execution of 
  21324.    a particular computer program. (T)  (3) The time during which an instruction 
  21325.    in an instruction register is decoded and performed. Synonym for execution 
  21326.    time. 
  21327.  
  21328.  
  21329. ΓòÉΓòÉΓòÉ <hidden> Glossary - S ΓòÉΓòÉΓòÉ
  21330.  
  21331.  SAA  - Systems Application Architecture. 
  21332.  
  21333.  SBCS  - Single-byte character set. 
  21334.  
  21335.  scheduler  - A computer program designed to perform functions such as 
  21336.    scheduling, initiation, and termination of jobs. 
  21337.  
  21338.  screen  - In SAA Basic Common User Access architecture, the physical surface 
  21339.    of a display device upon which information is shown to a user. 
  21340.  
  21341.  screen device context  - A logical description of a data destination that is a 
  21342.    particular window on the screen. See also device context. 
  21343.  
  21344.  SCREEN$  - Character-device name reserved for the display screen. 
  21345.  
  21346.  scroll bar  - In SAA Advanced Common User Access architecture, a part of a 
  21347.    window, associated with a scrollable area, that a user interacts with to see 
  21348.    information that is not currently allows visible. 
  21349.  
  21350.  scrollable entry field  - An entry field larger than the visible field. 
  21351.  
  21352.  scrollable selection field  - A selection field that contains more choices 
  21353.    than are visible. 
  21354.  
  21355.  scrolling  - Moving a display image vertically or horizontally in a manner 
  21356.    such that new data appears at one edge, as existing data disappears at the 
  21357.    opposite edge. 
  21358.  
  21359.  secondary window  - A window that contains information that is dependent on 
  21360.    information in a primary window and is used to supplement the interaction in 
  21361.    the primary window. 
  21362.  
  21363.  sector  - On disk or diskette storage, an addressable subdivision of a track 
  21364.    used to record one block of a program or data. 
  21365.  
  21366.  segment  - See graphics segment. 
  21367.  
  21368.  segment attributes  - Attributes that apply to the segment as an entity, as 
  21369.    opposed to the individual primitives within the segment. For example, the 
  21370.    visibility or detectability of a segment. 
  21371.  
  21372.  segment chain  - All segments in a graphics presentation space that are 
  21373.    defined with the 'chained' attribute. Synonym for picture chain. 
  21374.  
  21375.  segment priority  - The order in which segments are drawn. 
  21376.  
  21377.  segment store  - An area in a normal graphics presentation space where 
  21378.    retained graphics segments are stored. 
  21379.  
  21380.  select  - To mark or choose an item. Note that select means to mark or type in 
  21381.    a choice on the screen; enter means to send all selected choices to the 
  21382.    computer for processing. 
  21383.  
  21384.  select button  - The button on a pointing device, such as a mouse, that is 
  21385.    pressed to select a menu choice.  Also known as button 1. 
  21386.  
  21387.  selection cursor  - In SAA Advanced Common User Access architecture, a visual 
  21388.    indication that a user has selected a choice. It is represented by outlining 
  21389.    the choice with a dotted box. See also text cursor. 
  21390.  
  21391.  selection field  - (1) In SAA Advanced Common User Access architecture, a set 
  21392.    of related choices. See also entry field. (2) In SAA Basic Common User 
  21393.    Access architecture, an area of a panel that cannot be scrolled and contains 
  21394.    a fixed number of choices. 
  21395.  
  21396.  semantics  - The relationships between symbols and their meanings. 
  21397.  
  21398.  semaphore  - An object used by applications for signalling purposes and for 
  21399.    controlling access to serially reusable resources. 
  21400.  
  21401.  separator  - In SAA Advanced Common User Access architecture, a line or color 
  21402.    boundary that provides a visual distinction between two adjacent areas. 
  21403.  
  21404.  serial dialog box  - See modal dialog box. 
  21405.  
  21406.  serialization  - The consecutive ordering of items. 
  21407.  
  21408.  serialize  - To ensure that one or more events occur in a specified sequence. 
  21409.  
  21410.  serially reusable resource (SRR)  - A logical resource or object that can be 
  21411.    accessed by only one task at a time. 
  21412.  
  21413.  session  - (1) A routing mechanism for user interaction via the console; a 
  21414.    complete environment that determines how an application runs and how users 
  21415.    interact with the application. OS/2 can manage more than one session at a 
  21416.    time, and more than one process can run in a session. Each session has its 
  21417.    own set of environment variables that determine where OS/2 looks for 
  21418.    dynamic-link libraries and other important files. (2) (D of C) In the OS/2 
  21419.    operating system, one instance of a started program or command prompt. Each 
  21420.    session is separate from all other sessions that might be running on the 
  21421.    computer. The operating system is responsible for coordinating the resources 
  21422.    that each session uses, such as computer memory, allocation of processor 
  21423.    time, and windows on the screen. 
  21424.  
  21425.  Settings Notebook  - A control window that is used to display the settings for 
  21426.    an object and to enable the user to change them. 
  21427.  
  21428.  shadow  - An object that refers to another object. A shadow is not a copy of 
  21429.    another object, but is another representation of the object. 
  21430.  
  21431.  shadow box  - The area on the screen that follows mouse movements and shows 
  21432.    what shape the window will take if the mouse button is released. 
  21433.  
  21434.  shared data  - Data that is used by two or more programs. 
  21435.  
  21436.  shared memory  - In the OS/2 operating system, a segment that can be used by 
  21437.    more than one program. 
  21438.  
  21439.  shear  - In computer graphics, the forward or backward slant of a graphics 
  21440.    symbol or string of such symbols relative to a line perpendicular to the 
  21441.    baseline of the symbol. 
  21442.  
  21443.  shell  - (1) A software interface between a user and the operating system of a 
  21444.    computer. Shell programs interpret commands and user interactions on devices 
  21445.    such as keyboards, pointing devices, and touch-sensitive screens, and 
  21446.    communicate them to the operating system. (2) Software that allows a kernel 
  21447.    program to run under different operating-system environments. 
  21448.  
  21449.  shutdown  - The process of ending operation of a system or a subsystem, 
  21450.    following a defined procedure. 
  21451.  
  21452.  sibling processes  - Child processes that have the same parent process. 
  21453.  
  21454.  sibling windows  - Child windows that have the same parent window. 
  21455.  
  21456.  simple list  - A list of like values; for example, a list of user names. 
  21457.    Contrast with mixed list. 
  21458.  
  21459.  single-byte character set (SBCS)  - A character set in which each character is 
  21460.    represented by a one-byte code.  Contrast with double-byte character set. 
  21461.  
  21462.  slider box  - In SAA Advanced Common User Access architecture: a part of the 
  21463.    scroll bar that shows the position and size of the visible information in a 
  21464.    window relative to the total amount of information available. Also known as 
  21465.    thumb mark. 
  21466.  
  21467.  SOM  - System Object Model. 
  21468.  
  21469.  source file  - A file that contains source statements for items such as 
  21470.    high-level language programs and data description specifications. 
  21471.  
  21472.  source statement  - A statement written in a programming language. 
  21473.  
  21474.  specific dynamic-link module  - A dynamic-link module created for the 
  21475.    exclusive use of an application. 
  21476.  
  21477.  spin button  - In SAA Advanced Common User Access architecture, a type of 
  21478.    entry field that shows a scrollable ring of choices from which a user can 
  21479.    select a choice. After the last choice is displayed, the first choice is 
  21480.    displayed again.  A user can also type a choice from the scrollable ring 
  21481.    into the entry field without interacting with the spin button. 
  21482.  
  21483.  spline  - A sequence of one or more B╨Æzier curves. 
  21484.  
  21485.  spooler  - A program that intercepts the data going to printer devices and 
  21486.    writes it to disk. The data is printed or plotted when it is complete and 
  21487.    the required device is available.  The spooler prevents output from 
  21488.    different sources from being intermixed. 
  21489.  
  21490.  stack  - A list constructed and maintained so that the next data element to be 
  21491.    retrieved is the most recently stored. This method is characterized as 
  21492.    last-in-first-out (LIFO). 
  21493.  
  21494.  standard window  - A collection of window elements that form a panel. The 
  21495.    standard window can include one or more of the following window elements: 
  21496.    sizing borders, system menu icon, title bar, maximize/minimize/restore 
  21497.    icons, action bar and pull-downs, scroll bars, and client area. 
  21498.  
  21499.  static control  - The means by which the application presents descriptive 
  21500.    information (for example, headings and descriptors) to the user. The user 
  21501.    cannot change this information. 
  21502.  
  21503.  static storage  - (1) A read/write storage unit in which data is retained in 
  21504.    the absence of control signals. (A)  Static storage may use dynamic 
  21505.    addressing or sensing circuits. (2) Storage other than dynamic storage. (A)
  21506.  
  21507.  style  - See window style. 
  21508.  
  21509.  subclass  - A class that inherits from another class. See also Inheritance. 
  21510.  
  21511.  subdirectory  - In an IBM personal computer, a file referred to in a root 
  21512.    directory that contains the names of other files stored on the diskette or 
  21513.    fixed disk. 
  21514.  
  21515.  superclass  - A class from which another class inherits. See also inheritance. 
  21516.  
  21517.  swapping  - (1) A process that interchanges the contents of an area of real 
  21518.    storage with the contents of an area in auxiliary storage. (I)  (A)  (2) In 
  21519.    a system with virtual storage, a paging technique that writes the active 
  21520.    pages of a job to auxiliary storage and reads pages of another job from 
  21521.    auxiliary storage into real storage. (3) The process of temporarily removing 
  21522.    an active job from main storage, saving it on disk, and processing another 
  21523.    job in the area of main storage formerly occupied by the first job. 
  21524.  
  21525.  switch  - (1) In SAA usage, to move the cursor from one point of interest to 
  21526.    another;  for example, to move from one screen or window to another or from 
  21527.    a place within a displayed image to another place on the same displayed 
  21528.    image. (2) In a computer program, a conditional instruction and an indicator 
  21529.    to be interrogated by that instruction. (3) A device or programming 
  21530.    technique for making a selection, for example, a toggle, a conditional jump. 
  21531.  
  21532.  switch list  - See Task List. 
  21533.  
  21534.  symbolic identifier  - A text string that equates to an integer value in an 
  21535.    include file, which is used to identify a programming object. 
  21536.  
  21537.  symbols  - In Information Presentation Facility, a document element used to 
  21538.    produce characters that cannot be entered from the keyboard. 
  21539.  
  21540.  synchronous  - Pertaining to two or more processes that depend upon the 
  21541.    occurrence of specific events such as common timing signals. (T)  See also 
  21542.    asynchronous. 
  21543.  
  21544.  System Menu  - In the Presentation Manager, the pull-down in the top left 
  21545.    corner of a window that allows it to be moved and sized with the keyboard. 
  21546.  
  21547.  System Object Model (SOM)  - A mechanism for language-neutral, object-oriented 
  21548.    programming in the OS/2 environment. 
  21549.  
  21550.  system queue  - The master queue for all pointer device or keyboard events. 
  21551.  
  21552.  system-defined messages  - Messages that control the operations of 
  21553.    applications and provides input an other information for applications to 
  21554.    process. 
  21555.  
  21556.  Systems Application Architecture (SAA)  - A set of IBM software interfaces, 
  21557.    conventions, and protocols that provide a framework for designing and 
  21558.    developing applications that are consistent across systems. 
  21559.  
  21560.  
  21561. ΓòÉΓòÉΓòÉ <hidden> Glossary - T ΓòÉΓòÉΓòÉ
  21562.  
  21563.  table tags  - In Information Presentation Facility, a document element that 
  21564.    formats text in an arrangement of rows and columns. 
  21565.  
  21566.  tag  - (1) One or more characters attached to a set of data that contain 
  21567.    information about the set, including its identification. (I)  (A)  (2) In 
  21568.    Generalized Markup Language markup, a name for a type of document or 
  21569.    document element that is entered in the source document to identify it. 
  21570.  
  21571.  target object  - An object to which the user is transferring information. 
  21572.  
  21573.  Task List  - In the Presentation Manager, the list of programs that are 
  21574.    active. The list can be used to switch to a program and to stop programs. 
  21575.  
  21576.  terminate-and-stay-resident (TSR)  - Pertaining to an application that 
  21577.    modifies an operating system interrupt vector to point to its own location 
  21578.    (known as hooking an interrupt). 
  21579.  
  21580.  text  - Characters or symbols. 
  21581.  
  21582.  text cursor  - A symbol displayed in an entry field that indicates where typed 
  21583.    input will appear. 
  21584.  
  21585.  text window  - Also known as the VIO window. 
  21586.  
  21587.  text-windowed application  - The environment in which the operating system 
  21588.    performs advanced-video input and output operations. 
  21589.  
  21590.  thread  - A unit of execution within a process. It uses the resources of the 
  21591.    process. 
  21592.  
  21593.  thumb mark  - The portion of the scroll bar that describes the range and 
  21594.    properties of the data that is currently visible in a window. Also known as 
  21595.    a slider box. 
  21596.  
  21597.  thunk  - Term used to describe the process of address conversion, stack and 
  21598.    structure realignment, etc., necessary when passing control between 16-bit 
  21599.    and 32-bit modules. 
  21600.  
  21601.  tilde  - A mark used to denote the character that is to be used as a mnemonic 
  21602.    when selecting text items within a menu. 
  21603.  
  21604.  time slice  - (1) An interval of time on the processing unit allocated for use 
  21605.    in performing a task. After the interval has expired, processing-unit time 
  21606.    is allocated to another task, so a task cannot monopolize processing-unit 
  21607.    time beyond a fixed limit. (2) In systems with time sharing, a segment of 
  21608.    time allocated to a terminal job. 
  21609.  
  21610.  time-critical process  - A process that must be performed within a specified 
  21611.    time after an event has occurred. 
  21612.  
  21613.  timer  - A facility provided under the Presentation Manager, whereby 
  21614.    Presentation Manager will dispatch a message of class WM_TIMER to a 
  21615.    particular window at specified intervals. This capability may be used by an 
  21616.    application to perform a specific processing task at predetermined 
  21617.    intervals, without the necessity for the application to explicitly keep 
  21618.    track of the passage of time. 
  21619.  
  21620.  timer tick  - See clock tick. 
  21621.  
  21622.  title bar  - In SAA Advanced Common User Access architecture, the area at the 
  21623.    top of each window that contains the window title and system menu icon. When 
  21624.    appropriate, it also contains the minimize, maximize, and restore icons. 
  21625.    Contrast with panel title. 
  21626.  
  21627.  TLB  - Translation lookaside buffer. 
  21628.  
  21629.  transaction  - An exchange between a workstation and another device that 
  21630.    accomplishes a particular action or result. 
  21631.  
  21632.  transform  - (1) The action of modifying a picture by scaling, shearing, 
  21633.    reflecting, rotating, or translating. (2) The object that performs or 
  21634.    defines such a modification; also referred to as a transformation. 
  21635.  
  21636.  Translation lookaside buffer (TLB)  - A hardware-based address caching 
  21637.    mechanism for paging information. 
  21638.  
  21639.  Tree  - In the Presentation Manager, the window in the File Manager that shows 
  21640.    the organization of drives and directories. 
  21641.  
  21642.  truncate  - (1) To terminate a computational process in accordance with some 
  21643.    rule (A)  (2) To remove the beginning or ending elements of a string. (3) To 
  21644.    drop data that cannot be printed or displayed in the line width specified or 
  21645.    available. (4) To shorten a field or statement to a specified length. 
  21646.  
  21647.  TSR  - Terminate-and-stay-resident. 
  21648.  
  21649.  
  21650. ΓòÉΓòÉΓòÉ <hidden> Glossary - U ΓòÉΓòÉΓòÉ
  21651.  
  21652.  unnamed pipe  - A circular buffer, created in memory, used by related 
  21653.    processes to communicate with one another. Contrast with named pipe. 
  21654.  
  21655.  unordered list  - In Information Presentation Facility, a vertical arrangement 
  21656.    of items in a list, with each item in the list preceded by a special 
  21657.    character or bullet. 
  21658.  
  21659.  update region  - A system-provided area of dynamic storage containing one or 
  21660.    more (not necessarily contiguous) rectangular areas of a window that are 
  21661.    visually invalid or incorrect, and therefore are in need of repainting. 
  21662.  
  21663.  user interface  - Hardware, software, or both that allows a user to interact 
  21664.    with and perform operations on a system, program, or device. 
  21665.  
  21666.  User Shell  - A component of OS/2 that uses a graphics-based, windowed 
  21667.    interface to allow the user to manage applications and files installed and 
  21668.    running under OS/2. 
  21669.  
  21670.  utility program  - (1) A computer program in general support of computer 
  21671.    processes; for example, a diagnostic program, a trace program, a sort 
  21672.    program. (T)  (2) A program designed to perform an everyday task such as 
  21673.    copying data from one storage device to another. (A)
  21674.  
  21675.  
  21676. ΓòÉΓòÉΓòÉ <hidden> Glossary - V ΓòÉΓòÉΓòÉ
  21677.  
  21678.  value set control  - A visual component that enables a user to select one 
  21679.    choice from a group of mutually exclusive choices. 
  21680.  
  21681.  vector font  - A set of symbols, each of which is created as a series of lines 
  21682.    and curves. Synonymous with outline font. Contrast with image font. 
  21683.  
  21684.  VGA  - Video graphics array. 
  21685.  
  21686.  view  - A way of looking at an object's information. 
  21687.  
  21688.  viewing pipeline  - The series of transformations applied to a graphic object 
  21689.    to map the object to the device on which it is to be presented. 
  21690.  
  21691.  viewing window  - A clipping boundary that defines the visible part of model 
  21692.    space. 
  21693.  
  21694.  VIO  - Video Input/Output. 
  21695.  
  21696.  virtual memory (VM)  - Synonymous with virtual storage. 
  21697.  
  21698.  virtual storage  - (1) The storage space that may be regarded as addressable 
  21699.    main storage by the user of a computer system in which virtual addresses are 
  21700.    mapped into real addresses. The size of virtual storage is limited by the 
  21701.    addressing scheme of the computer system and by the amount of auxiliary 
  21702.    storage available, not by the actual number of main storage 
  21703.    locations. (I)  (A)  (2) Addressable space that is apparent to the user as 
  21704.    the processor storage space, from which the instructions and the data are 
  21705.    mapped into the processor storage locations. (3) Synonymous with virtual 
  21706.    memory. 
  21707.  
  21708.  visible region  - A window's presentation space, clipped to the boundary of 
  21709.    the window and the boundaries of any overlying window. 
  21710.  
  21711.  volume  - (1) A file-system driver that uses a block device driver for input 
  21712.    and output operations to a local or remote device. (I)  (2) A portion of 
  21713.    data, together with its data carrier, that can be handled conveniently as a 
  21714.    unit. 
  21715.  
  21716.  
  21717. ΓòÉΓòÉΓòÉ <hidden> Glossary - W ΓòÉΓòÉΓòÉ
  21718.  
  21719.  wildcard character  - Synonymous with global file-name character. 
  21720.  
  21721.  window  - (1) A portion of a display surface in which display images 
  21722.    pertaining to a particular application can be presented. Different 
  21723.    applications can be displayed simultaneously in different windows. (A)  (2) 
  21724.    An area of the screen with visible boundaries within which information is 
  21725.    displayed. A window can be smaller than or the same size as the screen. 
  21726.    Windows can appear to overlap on the screen. 
  21727.  
  21728.  window class  - The grouping of windows whose processing needs conform to the 
  21729.    services provided by one window procedure. 
  21730.  
  21731.  window coordinates  - A set of coordinates by which a window position or size 
  21732.    is defined; measured in device units, or pels. 
  21733.  
  21734.  window handle  - Unique identifier of a window, generated by Presentation 
  21735.    Manager when the window is created, and used by applications to direct 
  21736.    messages to the window. 
  21737.  
  21738.  window procedure  - Code that is activated in response to a message. The 
  21739.    procedure controls the appearance and behavior of its associated windows. 
  21740.  
  21741.  window rectangle  - The means by which the size and position of a window is 
  21742.    described in relation to the desktop window. 
  21743.  
  21744.  window resource  - A read-only data segment stored in the .EXE file of an 
  21745.    application o the .DLL file of a dynamic link library. 
  21746.  
  21747.  window style  - The set of properties that influence how events related to a 
  21748.    particular window will be processed. 
  21749.  
  21750.  window title  - In SAA Advanced Common User Access architecture, the area in 
  21751.    the title bar that contains the name of the application and the OS/2 
  21752.    operating system file name, if applicable. 
  21753.  
  21754.  Workplace Shell  - The OS/2 object-oriented, graphical user interface. 
  21755.  
  21756.  workstation  - (1) A display screen together with attachments such as a 
  21757.    keyboard, a local copy device, or a tablet. (2) (D of C) One or more 
  21758.    programmable or nonprogrammable devices that allow a user to do work. 
  21759.  
  21760.  world coordinates  - A device-independent Cartesian coordinate system used by 
  21761.    the application program for specifying graphical input and output. (I)  (A)
  21762.  
  21763.  world-coordinate space  - Coordinate space in which graphics are defined 
  21764.    before transformations are applied. 
  21765.  
  21766.  WYSIWYG  - What-You-See-Is-What-You-Get. A capability of a text editor to 
  21767.    continually display pages exactly as they will be printed. 
  21768.  
  21769.  
  21770. ΓòÉΓòÉΓòÉ <hidden> Glossary - X ΓòÉΓòÉΓòÉ
  21771.  
  21772. There are no glossary terms for this starting letter. 
  21773.  
  21774.  
  21775. ΓòÉΓòÉΓòÉ <hidden> Glossary - Y ΓòÉΓòÉΓòÉ
  21776.  
  21777. There are no glossary terms for this starting letter. 
  21778.  
  21779.  
  21780. ΓòÉΓòÉΓòÉ <hidden> Glossary - Z ΓòÉΓòÉΓòÉ
  21781.  
  21782.  z-order  - The order in which sibling windows are presented. The topmost 
  21783.    sibling window obscures any portion of the siblings that it overlaps; the 
  21784.    same effect occurs down through the order of lower sibling windows. 
  21785.  
  21786.  zooming  - The progressive scaling of an entire display image in order to give 
  21787.    the visual impression of movement of all or part of a display group toward 
  21788.    or away from an observer. (I)  (A)
  21789.  
  21790.  8.3 file-name format  - A file-naming convention in which file names are 
  21791.    limited to eight characters before and three characters after a single dot. 
  21792.    Usually pronounced "eight-dot-three." See also non-8.3 file-name format. 
  21793.