home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / VSCPPv1.zip / VACPP / README < prev    next >
Text File  |  1995-06-11  |  62KB  |  1,337 lines

  1.  
  2.         IBM VisualAge C++ Version 3.0 for OS/2 - READ.ME
  3.        --------------------------------------------------
  4.  
  5. Welcome to VisualAge C++ for OS/2.
  6.  
  7. This file contains information you need to install VisualAge C++,
  8. and additional information not included in the product documentation.
  9.  
  10. This README file is divided into the following categories:
  11.    -  Before You Install
  12.        -Software Requirements
  13.        -Hardware Requirements
  14.    -  Getting Help
  15.        -Documentation
  16.        -Service and Technical Support
  17.        -Defect Reporting
  18.    -  Installing VisualAge C++
  19.    -  Late-Breaking News
  20.    -  Trademarks
  21.    -  Your Satisfaction
  22.  
  23.  
  24. Before You Install
  25. -------------------
  26.    Software Requirements
  27.    ---------------------
  28.     - OS/2 V2.11 or higher (OS/2 Warp recommended)
  29.     - To use Data Access Builder, DB2/2 V1.2 or higher
  30.  
  31.    Hardware Requirements
  32.    ---------------------
  33.     - Processor : 386 minimum (486 or higher strongly recommended)
  34.                    (for 386 machines, a 387 coprocessor is highly
  35.                    recommended for floating-point operations)
  36.     - Display   : VGA minimum (SVGA recommended)
  37.     - RAM       : C development          -  8M minimum, 12M recommended
  38.                   C++ development        - 12M minimum, 16M recommended
  39.                   visual C++ development - 16M minimum, 24M recommended
  40.     - Disk Space:  91MB for compiler and tools
  41.                   102MB for samples and online information
  42.                    30MB for swap space (minimum)
  43.  
  44. Getting Help
  45. ------------
  46.    Documentation
  47.    -------------
  48.    All VisualAge C++ information is available online in the Information
  49.    folder.  With the CD-ROM package, BookManager books are also included;
  50.    read the README.ENG file on the CD-ROM for details.  To order hardcopy
  51.    books, use the Publications Ordering card included in the product
  52.    package.
  53.  
  54.    Service and Technical Support
  55.    -----------------------------
  56.   Telephone support in North America:
  57.    o  Call 1-800-237-5511 to start your free 60-day Getting Started
  58.       period (GSP) for help with installation, usage, and how-to problems.
  59.       The 60-day period starts on the date of your first call, and is
  60.       offered 9-5 (in your time zone), Monday through Friday.  If you
  61.       need service outside of these hours during the GSP, service charges
  62.       apply.  You can also get details on the wide menu of service
  63.       options we offer after your 60-day GSP.
  64.    o  For questions about CSD levels or availability, registration cards,
  65.       or beta tests, call 1-800-668-2853.  Our automated response system
  66.       contains a wealth of information, much of which you can receive by
  67.       fax.  The automated system is available 24 hours a day, 7 days a
  68.       week.
  69.  
  70.   Telephone support outside North America:
  71.    o  Call 416-448-4363 to contact the automated response system
  72.       described above.
  73.    o  Contact your IBM branch for details on local country technical
  74.       support.
  75.  
  76.   Electronic support - worldwide:
  77.    There is no charge for contacting VisualAge C++ support electronically,
  78.    other than what you normally pay for your electronic access.
  79.    o  Compuserve:  GO OS2DF1
  80.    o  INTERNET  :  va_cpp@vnet.ibm.com
  81.                    workframe@vnet.ibm.com for WorkFrame-specific questions
  82.    o  IBMLink/ServiceLink:  VA C++ forum
  83.    o  TalkLink  :  VA C++ forum
  84.    If you frequent the Internet, you can also contact other knowledgeable
  85.    VisualAge C++ users on the USENET newsgroups.  (VisualAge C++
  86.    discussions often appear in the comp.os.os2.programmer hierarchy.)
  87.  
  88.    Defect Reporting
  89.    ----------------
  90.   You can report possible VisualAge C++ code-related problems in several
  91.   different ways:
  92.  
  93.   Electronically - worldwide:
  94.    There is no charge for contacting VisualAge C++ support electronically,
  95.    other than what you normally pay for your electronic access.
  96.    o  CompuServe:  76711,611
  97.    o  IBMLink/ServiceLink:  ETR
  98.    o  TalkLink  :  ETR
  99.  
  100.   In North America:
  101.    o  FAX :  1-800-426-8602
  102.    o  MAIL:  IBM Corp
  103.              Personal Systems Support Family
  104.              11400 Burnet Road
  105.              Internal Zip 2901
  106.              AUSTIN, TX  78758
  107.  
  108.   Outside North America:
  109.    IBM in other countries also offer mail-in and fax support.  Please
  110.    contact your local IBM branch for details.
  111.  
  112.    Obtaining Fixes (CSDs)
  113.    ----------------------
  114.   Fixes will be available for VisualAge C++ defects in the form of CSDs.
  115.   CSDs are cumulative, meaning the latest CSD contains all fixes from
  116.   earlier CSDs.  You can obtain CSDs in the following ways:
  117.   o  CompuServe:   GO OS2DF1
  118.                    Look in library 4
  119.   o  Internet  :   anonymous ftp to software.watson.ibm.com
  120.                    Look in the pub/os2/cset++ directory
  121.   o  Developer's Connection for OS/2 (DevCon) CD-ROM:
  122.               VisualAge C++ CSDs will be put on the DevCon CDs that ship
  123.               after the CSDs are available.  DevCon CDs prior to Volume 8
  124.               do not contain VisualAge C++ fixes; do not use VisualAge C++
  125.               components from DevCon CDs prior to Volume 8.
  126.  
  127.  
  128. Installing VisualAge C++
  129. -------------------------
  130. You can find instructions for installing VisualAge C++ in the
  131. Read Me First! booklet.  The install command for a basic installation
  132. is install.  For a shared installation, the command is shrdinst.
  133. For more details, please read the Read Me First! booklet.
  134.  
  135. Note:  If you delete VisualAge C++ with the Installation Utility tool,
  136.    you must reboot before the deletion can be completed.  If all files
  137.    are not deleted after you reboot, call EPFIDEFI.CMD from the
  138.    bootdrive\os2\system directory.  Files that you created will not be
  139.    deleted.
  140.  
  141.  
  142. Late-Breaking News
  143. ------------------
  144. This section includes last-minute information about each component:
  145.    - WorkFrame
  146.    - Visual Builder
  147.    - Data Access Builder
  148.    - IBM Open Class Library
  149.    - Editor
  150.    - Compilers/Runtime Library
  151.    - Linker
  152.    - Browser
  153.    - Debugger
  154.    - Performance Analyzer
  155.    - Toolkit
  156.  
  157. The following items affect multiple components or the product as a whole.
  158.  
  159. 1. In general, the online information is more current than the hardcopy
  160.    information.
  161.  
  162. 2. The names of DLLs and libraries have been changed since C Set ++
  163.    Version 2.1 and the last beta of this product.  For a description of
  164.    the new naming conventions, see the Programming Guide or Frequently
  165.    Asked Questions.
  166.  
  167. 3. The invocation commands for some tools have changed.  If you invoke
  168.    tools from the WorkFrame or from the tool's icon, the changes don't
  169.    affect you.  If you prefer the command line, refer to the User's
  170.    Guide for the new invocation commands.
  171.  
  172. 4. On OS/2 2.11 and OS/2 Warp for Windows, selecting "Search all libraries"
  173.    in the VisualAge C++ online information may give unexpected results
  174.    or cause a trap.  This problem does not occur on OS/2 Warp FullPack.
  175.  
  176. 5. If you want to maintain an earlier version of C Set ++ (not a beta)
  177.    on the same machine as VisualAge C++, the VisualAge C++ directories
  178.    MUST appear before the C Set ++ directories in the following
  179.    CONFIG.SYS statements:
  180.       PATH
  181.       DPATH
  182.       LIBPATH
  183.       LIB
  184.       INCLUDE
  185.       HELP
  186.  
  187. 6. When you use C Set ++ on a machine where VisualAge C++ is installed:
  188.  
  189.    1) You can use WorkFrame/2 V1.1 and V2.1 without restrictions.  You
  190.       can also use executable files generated by C Set ++ V2.1 without
  191.       restrictions.
  192.    2) You can only use CPPFILT, DLLRNAME, and the compiler in a session
  193.       where you have put the C Set ++ compiler directories at the
  194.       beginning of the environment variables PATH, DPATH, LIB, INCLUDE,
  195.       and HELP.  You can set the variables with the SET command from an
  196.       OS/2 window, or using WorkFrame/2 V2.1.
  197.    3) The C Set ++ debugger, EXTRA, and browser have DLL and help file name
  198.       conflicts with VisualAge C++ components.  You cannot use DLLRNAME
  199.       to resolve these conflicts because the DLLs are loaded dynamically.
  200.       To resolve the conflicts, change the environment variables indicated
  201.       in point 2) above and use the Warp SET BeginLIBPATH command to put
  202.       the C Set ++ DLLs at the start of the LIBPATH.  You cannot run the
  203.       VisualAge C++ Debugger, Performance Analyzer, or Browser at the
  204.       same time as the C Set ++ debugger, EXTRA, or browser.
  205.  
  206. 7. You can use the VisualAge C++ Debugger and Performance Analyzer with
  207.    executable files generated by C Set ++ V2.1.
  208.  
  209.  
  210.  WorkFrame
  211.  =========
  212.  
  213. 1. You cannot drag and drop objects from a project container to the
  214.    desktop or to another non-project folder or object.  You can drag any
  215.    objects except folders and templates into a project container.  The
  216.    User's Guide incorrectly states that any WPS object can be placed in
  217.    a project.
  218.  
  219. 2. Double-byte character strings are not currently supported.
  220.  
  221. 3. The MakeMake utility does not generate a complete set of dependencies
  222.    for building SOM objects directly using the SOM compiler.  (The
  223.    Direct-to-SOM feature of the VisualAge compiler is supported.)  To
  224.    ensure the Build utility correctly builds SOM objects:
  225.  
  226.    1) Use MakeMake to generate a make file for the SOM Compile,
  227.       C++ Compile, and Linker actions.
  228.    2) Manually update the dependency information in the make file and
  229.       dependency file.
  230.    3) Set the build options to use the existing make file so that the
  231.       Build utility uses your customized make file instead of generating
  232.       a new one and overwriting your customized file.
  233.  
  234. 4. The settings notebook for Actions, Types, and Variables, defined in
  235.    the Tool Setup window, do not behave like standard Workplace Shell
  236.    notebooks.  If you make a change in any of the notebook pages, you
  237.    must use the OK button below the pages to save the changes.  If
  238.    you close the notebook by double-clicking on the system menu (in the
  239.    top-left corner), your changes will NOT be saved.  In a CSD, WorkFrame
  240.    will be corrected to issue a confirmation message if you try to close
  241.    the notebook with the system menu.
  242.  
  243. 5. Some WorkFrame windows do not fit on VGA displays.  Use ALT+F7 to
  244.    move the window so you can see the hidden areas.
  245.  
  246. 6. Keyboard navigation on some windows does not work correctly;
  247.    Controls may be skipped or traversed in the wrong order.
  248.  
  249. 7. Using F1 as a help key may give you general help instead of context
  250.    sensitive help, or may give you no help at all.  Help for actions
  251.    that appear on the action menu is only available on project-scoped
  252.    actions, and only from the system menu of a project.  It is not
  253.    available on pop-up menus, or on the Project or Selected menus.
  254.  
  255. 8. The "Source directory" field in the Location page of the Project
  256.    Settings notebook is only validated if you select OK or change the
  257.    focus on that page to another field.  If you close the notebook or
  258.    leave the page without pressing OK or moving to another control, the
  259.    field is not validated; if your specified source directories are
  260.    not valid, your project will appear to contain no files.
  261.  
  262. 9. In the monitor window, clicking on an error that occurred in a file
  263.    belonging to a subproject causes the editor to load the wrong file.
  264.  
  265. 10. In the Options menu, any action that is both file-scoped and
  266.    project-scoped always invokes the project-scoped options dialog.
  267.  
  268. 11. It is possible to set up circular project inheritance chains using
  269.    WorkFrame, but doing so could cause system problems.  Ensure your
  270.    inheritance chains are not circular.
  271.  
  272. 12. In an inheritance hierarchy, when a parent project is deleted, its
  273.    child projects are notified and appropriate actions are taken (for
  274.    example, actions are updated).  However, grandchildren and any
  275.    further descendant projects are not notified; if you try to execute
  276.    an action that was inherited from the deleted project, errors occur
  277.    because the action no longer exists.
  278.  
  279. 13. Currently, the targets of any action (for example, .OBJ files from
  280.    a Compile action) are stored in the directory that contains the source
  281.    files that apply to the action (for example, the source files to be
  282.    compiled).  The target objects should be stored in the Working
  283.    directory specified in the WorkFrame project.
  284.  
  285. 14. By default, the Build action regenerates the make file each time you
  286.    invoke it.  Because this takes time, you may not want to regenerate
  287.    the make file for projects where the source files, action options, and
  288.    dependencies are fairly constant.  To prevent the Build utility from
  289.    generating a new make file each time, either:
  290.    o  Use Build Smarts to specify not to generate the make file.
  291.    o  Select Build from the Options menu, and then deselect the
  292.       "Generate a make file" option in the options dialog.
  293.  
  294. 15. Project Access Methods (PAMs) written for WorkFrame Version 2.1 are
  295.    not supported for this version.  There are no plans to publicize the
  296.    PAM interface for Version 3.0.
  297.  
  298. 16. VisualAge C++ supports option DLLs written for WorkFrame Version 2.1,
  299.    but there is a problem in using them with respect to MakeMake and
  300.    Build.
  301.  
  302. 17. Inheritance of options is not the same as inheritance of actions.
  303.    Options are inherited directly from the project that originally
  304.    defines the action that the options are associated with; they are not
  305.    inherited through the inheritance chain.  To determine what project
  306.    defines the action, use the "Where defined" function for that action
  307.    in the Tools Setup view.
  308.  
  309. 18. The monitor window can display approximately 620 lines of output.
  310.    When it passes that limit, it displays new messages by overwriting
  311.    the last line in the window.
  312.  
  313. 19. When you delete parts (such as files) from a project, the project
  314.    refreshes any open views for that project.  All of the parts disappear
  315.    from the view, and then the remaining ones reappear.  Do not use the
  316.    parts until after the refresh has completed.
  317.  
  318. 20. During builds, MakeMake sometimes fails with a return code of 65320
  319.    or 90290.  Ignore the error and restart the build.
  320.  
  321. 21. When you manipulate project views, a message box sometimes appears
  322.    referring to a GPIQueryBitmapParameters error.  Dismiss the message
  323.    box and ignore the message.
  324.  
  325. 22. Any projects created with the 1995 C Set ++ beta will not work with
  326.    this release of VisualAge C++.  You must recreate the projects.  If
  327.    you have projects from C Set ++ V2.1, you can migrate them with the
  328.    Migration utility.
  329.  
  330. 23. Selecting "Create another" from the pop-up menu of an object in a
  331.    project container does nothing.
  332.  
  333. 24. Double-clicking on an error generated by the IPF compiler in the
  334.    monitor window does not invoke the editor for the source file.
  335.  
  336. 25. To delete projects, select Delete from the project pop-up menu.
  337.    Selecting projects and deleting them with the Delete key may hang your
  338.    system.
  339.  
  340. 26. The font dialogs in the project settings notebooks are not saved.
  341.    When you set them, they remain active until the project is closed.
  342.    The next time you open the project, the defaults reappear.
  343.  
  344.  
  345.  Visual Builder
  346.  ==============
  347.  
  348. 1. If your workstation beeps while you are running Visual Builder, a C++
  349.    exception has probably been thrown.  Check for the following
  350.    conditions:
  351.     - Missing resources (bitmaps or icons)
  352.     - Incorrect or incompatible part settings
  353.  
  354. 2. If you have problems running your generated application, check first for
  355.    the following situations:
  356.  
  357.    o  Be sure to correctly destroy Object Factory instances:
  358.  
  359.      - To delete a modal window, connect the Object Factory's newEvent
  360.        feature to the variable's deleteTarget action.  This connection
  361.        must occur after the connection to the showModally action.
  362.  
  363.      - To delete a modeless window, no connections are necessary.  Open
  364.        the settings editor for the Object Factory and select the
  365.        autoDelete check box on the General page.
  366.  
  367.    o  If you mix static and dynamic linking, the resulting application
  368.       may behave unpredictably.  We recommend you use DLLs and link
  369.       dynamically.  Alternatively, compile and link one executable file
  370.       statically with no DLLs.  Do not mix static and dynamic libraries.
  371.  
  372.    o  When you disable notification on collection parts, unpredictable
  373.       results occur.  For example, if you use a sequence part to manage
  374.       objects in a container and then disable notification in the sequence,
  375.       the container is not notified of the change in the sequence and
  376.       is therefore not refreshed.
  377.  
  378. 3. Avoid circular part relationships.  They result in circular #include
  379.    directives, which cause problems with the resource compiler.  For
  380.    example, suppose part A includes part B, which contains an Object
  381.    Factory part set to type A.  Visual Builder generates the correct
  382.    #ifdef directives to conditionally include A, B, and A, but the
  383.    resource compiler stops at the second #include for type A.
  384.  
  385. 4. Close all Visual Builder editor windows before unloading .VBB files.
  386.    In some cases, Visual Builder does not refresh the internal data model
  387.    to indicate that a .VBB file has been unloaded.  After loading
  388.    additional .VBB files, close and reopen editor windows.  Otherwise,
  389.    any ? icons that appear in the Composition Editor are not changed
  390.    to reflect the newly loaded .VBB data.
  391.  
  392. 5. The default attribute type in the Part Interface Editor is int, not
  393.    IStandardNotifier as stated in the documentation.
  394.  
  395. 6. Don't create attribute-to-attribute connections in which the source
  396.    attribute is not initialized before the ready event is signalled.  You
  397.    may get a system error in the resulting application.
  398.  
  399. 7. Don't make parameter-to-parameter connections.  Visual Builder doesn't
  400.    prevent you from doing this, but errors occur at generation time.
  401.  
  402. 8. If you retarget a connection to point to custom logic, Visual Builder
  403.    retains the original connection as well as drawing the new one.  You
  404.    must manually delete the original connection.
  405.  
  406. 9. If you import a nonvisual part and specify a user include file, don't
  407.    generate part source.  If you do, Visual Builder overwrites your user
  408.    include file and code file with generated header and code files.
  409.  
  410. 10. Resource file generation has been modified and is now different from
  411.    what is documented in the Visual Builder User's Guide:
  412.  
  413.    o  A .RC file is generated with the code for main().
  414.    o  A .RCI file is generated with each part's source code.
  415.  
  416. 11. The Settings editors for Visual Builder parts do not necessarily
  417.    reflect the current default values.  To ensure that initial values
  418.    are set the way you expect, always explicitly set them.  For example,
  419.    suppose the default value of a Boolean is TRUE and you want to set it
  420.    to FALSE.  When you open the settings for the part, the check box for
  421.    the Boolean attribute is not selected.  The deselected check box
  422.    indicates only that the value has never been set, not that the initial
  423.    value is false.  To set it to FALSE, select and then deselect the
  424.    check box.
  425.  
  426.    For some part instances, certain current settings appear on the Styles
  427.    page as NOT SET, even if you select a radio button to set the styles.
  428.    A NOT SET label indicates only that the style setting is not reflected
  429.    in the Composition Editor display; the correct setting appears in the
  430.    generated code for the part.  If you don't set such styles explicitly,
  431.    default values appear in the generated code.
  432.  
  433.    For settings in numeric entry fields, Visual Builder reflects only
  434.    those values entered in decimal notation.  You can enter numbers with
  435.    bases other than 10 by using the # sign (for example, #0xBF), but the
  436.    expression is not evaluated until compile time.
  437.  
  438. 12. If you select the Apply push button on any settings page, the
  439.    Help push button is disabled.  To reenable help, switch to another
  440.    settings page and then switch back again, or close and reopen the
  441.    settings editor.
  442.  
  443. 13. Although a Help push button appears on the Color page for the ITitle
  444.    part, no help information exists.
  445.  
  446. 14. The following color settings exist for the IToolBarButton part but
  447.    don't appear in the documentation:
  448.      - Default transparent
  449.      - Transparent
  450.  
  451. 15. When commandEvent is signalled in an IFrameWindow* client, duplicate
  452.    notifications can occur.  For example, for a contextual pop-up menu
  453.    in a container that is the client of a frame window, selecting an
  454.    item from the pop-up menu signals a commandEvent notification in the
  455.    container.  The frame window responds to the notification by
  456.    propagating the commandEvent (a duplicate) back to its client,
  457.    the container.
  458.  
  459.    To block the duplicate commandEvent notification without otherwise
  460.    changing the behavior of the window at run time, add an IMultiCellCanvas*
  461.    part between the container and the window part.  The IMultiCellCanvas*
  462.    part becomes the client of the window.  In this situation, the second
  463.    notification is passed to the IMultiCellCanvas* part, not to the con-
  464.    tainer.
  465.  
  466. 16. To use the ICircularSlider* part or the VBMM sample parts, you must
  467.    have MMPM/2 installed.  (OS/2 Warp installs MMPM/2 by default.)
  468.  
  469. 17. The VBSOM.VBE sample contains Direct-to-SOM parts from the SOMObjects
  470.    Toolkit that you can import into Visual Builder.  The VBCC.VBE sample
  471.    contains collection class parts for you to use.  You can find these
  472.    files in the IBMCPP\SAMPLES\VISBUILD\VBSAMPLE directory.
  473.  
  474. 18. The OASearch sample application has changed since publication of the
  475.    Visual Builder User's Guide.  For the latest updates, see the sample
  476.    files in the IBMCPP\SAMPLES\VISBUILD\OASEARCH directory.
  477.  
  478. 19. If you use a menu bar, you must add extra space into your window to
  479.    hold the menu.  Otherwise, the menu bar might overlay the control
  480.    closest to the top of the client area.
  481.  
  482. 20. You cannot use fly-over text for the following controls:
  483.       - Group box
  484.       - Outline box
  485.       - Viewport
  486.  
  487.    In addition, fly-over text is attached only to the "spinner" of
  488.    numeric and text spin buttons.
  489.  
  490. 21. Bitmaps on palette buttons must be no larger than standard icons for
  491.    the display resolution being used.  For VGA, the maximum size is 32x32.
  492.    For higher resolutions, the maximum size is 40x40.
  493.  
  494. 22. If compiled application windows appear partially off the screen, be
  495.    aware that Visual Builder calculates window position differently
  496.    depending on how the windows are added to the free-form surface:
  497.  
  498.    o  If you construct the window directly on the free-form surface,
  499.       Visual Builder calculates a position offset from the upper left
  500.       corner of the scrollable free-form surface to the upper left
  501.       corner of the window.  This doesn't usually present a problem
  502.       because most parts are built from the left top edge of the
  503.       free-form surface.
  504.  
  505.    o  If you add a previously constructed window to the free-form surface
  506.       as a subpart, Visual Builder calculates the offset from the lower
  507.       left corner of the scrollable free-form surface to the lower left
  508.       corner of the window.
  509.  
  510.       If you have added enough other parts to increase the size of the
  511.       scrollable free-form surface, the offset might become large enough to
  512.       push the compiled window subpart off the upper or right edge of the
  513.       desktop display.  To prevent this, drop the window subpart
  514.       immediately to the right of the primary window part.  Drop variable
  515.       or nonvisual parts at the extreme right of the free-form surface.
  516.  
  517. 23. In the Visual Builder User's Guide under "Creating the Help File",
  518.    the file name should be cppov33.ipf, not cppov33.ipf.ipf.
  519.  
  520. 24. In the Visual Builder Parts Reference, the Building Guidelines -
  521.    IScrollBar topic is misleading.  The list of things you can do should be
  522.    replaced with the following:
  523.  
  524.    o  Define a scroll bar for the client area of a frame window:
  525.  
  526.       1) Select an IScrollBar part from the parts palette and drop it on
  527.          the free-form surface.
  528.  
  529.       2) Assign the frame window as the owner of the scroll bar by
  530.          connecting the IFrameWindow this attribute to the IScrollBar
  531.          owner attribute.
  532.  
  533.       3) Assign the frame window as the parent of the scroll bar by
  534.          connecting the IFrameWindow this attribute to the IScrollBar
  535.          parent attribute.
  536.  
  537.       4) Connect the composite part ready event (from the free-form
  538.          surface) to the IFrameWindow addExtension action.  Then connect
  539.          the IScrollBar this attribute to the newExtension parameter of
  540.          the ready-to-addExtension connection.
  541.  
  542.          Indicate the location of the frame extension by opening settings
  543.          for the connection, pressing the Set Parameters push button, and
  544.          selecting a choice from the Location field.  For a vertical
  545.          scroll bar located to the right of the client area, select the
  546.          RIGHTOFCLIENT choice.
  547.  
  548.       5) Identify a handler for the scroll bar.  You need to derive a
  549.          handler from the IScrollHandler class to provide meaningful
  550.          processing of the client area.  To add the handler to your
  551.          scroll bar:
  552.          - Add the handler name in the Handler List field on the
  553.            IScrollBar Handlers settings page.
  554.          - Type the .HPP file name for the handler in the Class Editor
  555.            Required Include Files field.
  556.  
  557.    o  Define a scroll bar as a slider:
  558.  
  559.       1) Select an IScrollBar part from the parts palette and drop it on a
  560.          canvas.
  561.  
  562.       2) Change the scroll bar orientation to horizontal by setting the
  563.          Vertical field to ON and the Horizontal field to OFF
  564.          on the IScrollBar Styles settings page.
  565.  
  566.       3) Identify a handler for the scroll bar.  You need to derive a
  567.          handler from the IScrollHandler class to provide meaningful proc-
  568.          essing as a slider.  To add the handler to your scroll bar part:
  569.          - Add the handler name in the Handler List field on the
  570.            IScrollBar Handlers settings page.
  571.          - Type the .hpp file name for the handler in the Class Editor
  572.            Required Include Files field.
  573.  
  574. 25. In the Visual Builder Parts Reference:
  575.  
  576.     o  The anyEvent feature is missing for all visual and nonvisual
  577.        parts.  The anyEvent feature is signalled whenever any event
  578.        within the part occurs.
  579.  
  580.     o  The following Handler page settings are incorrect for all parts:
  581.  
  582.        HANDLER NAME
  583.          The name of the handler class being added to the handler list.
  584.  
  585.        HANDLER LIST
  586.          Lists the handler classes already attached to the part.
  587.  
  588.        MOVE
  589.          Reorders handler classes in the handler list.
  590.  
  591.        REMOVE
  592.          Deletes handler classes from the handler list.
  593.  
  594.     o  The selected attributes of ICheckBox and IRadioButton are missing
  595.        the event indicator.
  596.  
  597.     o  The "General Settings" topics for IProgressIndicator and ISlider
  598.        should be updated as follows:
  599.         - Remove the Tick Spacing setting
  600.         - Remove the Primary Scale setting.
  601.  
  602.     o  The "Building Guidelines" topics for IProgressIndicator and
  603.        ISlider should read as follows:
  604.  
  605.          To select the location of the scale of tick marks and text, use
  606.          custom logic.  Click mouse button 2 on the free-form surface and
  607.          connect the composite part ready event to CUSTOM LOGIC for the
  608.          IProgressIndicator or ISlider part.  Enter C++ code to select
  609.          the scale and number of ticks.
  610.  
  611.          For example, if you want to show percentage of completion using a
  612.          progress indicator with a primary scale marked at ten-percent
  613.          intervals and a secondary scale marked at five-percent intervals,
  614.          you could enter the following code.  In this example, the source
  615.          of the custom logic connection is the ready event of the
  616.          composite part, and the target is the progress indicator:
  617.  
  618.               int i;
  619.               target->setPrimaryScale(IProgressIndicator::scale1);
  620.               target->setTicks(IProgressIndicator::scale1, 101);
  621.               for (i=0; i<101; i +=10) {
  622.                 target->setTickLength(i, 10);
  623.                 target->setTickText(i, IString(i));
  624.                 }
  625.  
  626.               target->setPrimaryScale(IProgressIndicator::scale2);
  627.               target->setTicks(IProgressIndicator::scale2, 101);
  628.               for (i=0; i<101; i +=5) {
  629.                  target->setTickLength(i, 5);
  630.                  target->setTickText(i, IString(i));
  631.                  }
  632.  
  633.          For a horizontal progress indicator or slider, scale1 places the
  634.          scale above the shaft; scale2 places the scale below the shaft.
  635.  
  636.          For a vertical progress indicator or slider, scale1 places the
  637.          scale to the right of the shaft; scale2 places the scale to the
  638.          left of the shaft.
  639.  
  640. 26. You must enter part names and other C++ keywords in single-byte mode.
  641.    If you enter them in double-byte mode, Visual Builder generates the
  642.    code without errors, but the code will not compile correctly.
  643.  
  644. 27. Visual Builder does not evaluate settings that are entered as string
  645.    expressions.  User interface controls whose size depends on the
  646.    length of the setting value (for example, a button or multicell canvas)
  647.    are not displayed as they would appear in the compiled application.
  648.    However, Visual Builder passes the expression correctly into the
  649.    generated code so it compiles successfully.  For example, suppose you
  650.    enter #pbText as the text attribute of an IPushButton* part.  Because
  651.    #pbText is not a literal value, the length of the label string is
  652.    unknown and the push button appears small in the Composition Editor.
  653.    Assuming you have defined the value of #pbText elsewhere, the push
  654.    button appears with the correct size and label in the compiled
  655.    application.
  656.  
  657. 28. If you define menu accelerators in a nonprimary window subpart,
  658.    the window doesn't display at run time.  This applies to windows
  659.    added as static subparts to a composite part, as well as to windows
  660.    that are instantiated dynamically using Object Factory parts.
  661.  
  662. 29. If you use mixed-byte strings in file specifications, to add a new
  663.    part to a previously existing .VBB file, you MUST specify the
  664.    complete path with the file name, matching the case of each single-byte
  665.    character exactly.  Otherwise, Visual Builder either:
  666.  
  667.    - Overwrites previously existing data rather than appending it.
  668.    - Displays an erroneous message and cancels the request.
  669.  
  670.    To review the complete file specification for your .VBB files, select
  671.    Options->Show full file names from the menu bar on the Visual Builder
  672.    window.
  673.  
  674. 30. Before shutting down OS/2, make sure that Visual Builder is closed.
  675.    Otherwise, OS/2 does not shut down completely, requiring you to
  676.    turn the computer off.
  677.  
  678.  
  679.  Data Access Builder
  680.  ===================
  681.  
  682. 1. If your application uses the IDatastore class, you must bind the file
  683.    DAXSCL.BND to any databases accessed by your application.  This file
  684.    allows IDatastore to connect, disconnect and complete transactions
  685.    against the database.  To bind the file, enter the following command:
  686.       SQLBIND d:/ibmcpp/bnd/DAXSCL.BND database /G=PUBLIC
  687.    where database is the name of your database.
  688.  
  689. 2. From the Class Settings page of the Data Access Builder you can now:
  690.    o  Force a generated class to be read-only.  The class will throw
  691.       an exception if the add(), del(), or update() methods are called.
  692.    o  Generate a #pragma library("filename") directive in your header
  693.       file to point to Data Access generated classes in a library.
  694.    o  Generate the SOM dllname instruction in your code with a filename
  695.       that you specify.
  696.    For more details about the changes to the Class Settings page, see
  697.    the online help.
  698.  
  699. 3. When querying a catalog through DDCS or CAE, the Data Access Builder
  700.    cannot determine whether update is allowed for a view.  The default
  701.    generation for remote views is set to read-only to prevent compilation
  702.    errors.  If you know that your class can be updated, you can change
  703.    this default on the Class Settings page (see above).
  704.  
  705. 4. You can link the Database Access class libraries to your application
  706.    statically or dynamically.  In most cases, you don't need to specify
  707.    the library at link time; the required libraries are named in the .OBJ
  708.    files.  The library names are:
  709.     CPPODS3I.LIB - import library for dynamic linking of C++ applications
  710.     CPPODS3.LIB  - object library for static linking of C++ applications
  711.     CPPODI3I.LIB - import library for dynamic linking of SOM applications
  712.     CPPODI3.LIB  - object library for static linking of SOM applications
  713.  
  714. 5. If you statically link your application with the Data Access class
  715.    library, you also require UPM.LIB.  Ensure that the directory where
  716.    UPM.LIB resides, usually MUGLIB on your root drive, is specified in
  717.    your LIB environment variable in CONFIG.SYS.
  718.  
  719. 6. The sample stock applications for C++ and SOM indicate that a DLL is
  720.    generated when you build with WorkFrame.  This is no longer true;
  721.    the generated classes are linked directly to the sample applications.
  722.    You do not need to modify your LIBPATH to run these applications.
  723.  
  724. 7. In the Data Access documentation, the IBMCPP\INCLUDE directory is
  725.    occasionally referred to as IBMCPP\IBMCLASS.
  726.  
  727. 8. The SOM Compiler action does not work in project builds that use
  728.    WorkFrame.  You must run this action separately before starting a
  729.    build, and every time an IDL file is modified or regenerated.  You can
  730.    set up the SOM Compiler action and start the compile from the
  731.    pop-up menu of each IDL in the project.  The command is:
  732.       sc.exe -E SMEMIT=xc;xh;xih; %s
  733.    where %s is the source filename.
  734.  
  735. 10. When you build generated SOM programs, you must explicitly specify
  736.     SOMTK.LIB in the link action.
  737.  
  738. 11. Be cautious when reusing make files generated with the WorkFrame
  739.    Build or MakeMake actions that result in a precompile action (such as
  740.    the SQL Precompile action).  Dependencies can't be generated correctly
  741.    for source files produced as a result of these actions because the
  742.    files do not exist or may be modified during the precompile step.
  743.    Because the make file won't contain dependencies for the missing or
  744.    modified files, these files may not be recompiled when the header
  745.    files that they depend upon are modified.
  746.  
  747.    You can avoid this problem by always building your application using
  748.    an action that generates a new make file (Build or BuildAll), or
  749.    by reusing a make file that contains the correct dependencies for the
  750.    precompiled source (for example, run MakeMake after completing the
  751.    SQL Precompile step on the .SQC files).
  752.  
  753. 12. The SOM Stock Sample uses a database called BrchTwo, not BrchOne as
  754.    indicated in the documentation.  The file BrchTwo.DAX replaces
  755.    BrchOne.DAX in this sample.  Before you build this sample, generate
  756.    C++ bindings for the Database Access class library.  From the
  757.    IBMCPP\INCLUDE directory, enter:   sc -xh *.idl
  758.    You must also run the BINDINGS.MAK file before you start the build.
  759.  
  760. 13. The CSETPP stock sample is built statically.  Make sure the directory
  761.    where the UPM.LIB library file resides is specified in your LIB
  762.    environment variable (see point 5 above).
  763.  
  764. 14. You can specify nullable columns as the data identifier in mapped
  765.    classes.  (A nullable column does not require data to be specified
  766.    in the relational table.)  However, you cannot use the class member
  767.    functions to add, delete, update, or retrieve records with a NULL
  768.    value in the data identifier.  You can use the select and refresh
  769.    member functions.
  770.  
  771. 15. The Data Access Builder currently supports DB2/2 V1.2.  After DB2/2
  772.    Version 2.1 becomes available, you can obtain a CSD to enable the Data
  773.    Access Builder to access DB2/2 V2.1 databases.  For details on how to
  774.    obtain CSDs, please refer to the section on Service and Technical
  775.    Support in this file, or to the "Help! and how to get it" card in your
  776.    VisualAge C++ package.
  777.  
  778. 16. The IDL generation portion of the Data Access Builder occasionally
  779.    inserts invalid data in the generated files, causing compiler errors
  780.    when you build the generated files.  If this occurs, regenerate your
  781.    parts and rebuild the files.
  782.  
  783. 17. The Data Access Builder currently does not support the DB2/2 DBCS
  784.    GRAPHIC types, and does not map columns of these types from the table
  785.    definition into the generated class.  GRAPHIC columns are not
  786.    accessible from the generated class methods.
  787.  
  788. 18. If you are using DB2/2 DBCS, your table or column names may contain
  789.    DBCS characters.  The Data Access Builder generates code using these
  790.    names as the class name and member names.  Because DBCS characters
  791.    are not allowed in C++ identifiers, you must rename the target class
  792.    and target attributes (members).  Use the Data Access Builder class
  793.    notebook for the classes to change the names.
  794.  
  795. 19. Some additional changes to the sample program instructions in
  796.    the class library user's guide:
  797.      - The samples are in "/ibmcpp/samples/database/...", not
  798.        "/ibmcpp/samples/dax/...".
  799.      - When you generate the parts for DAXSAMP using the Data Access
  800.        Builder started with the workframe project pulldown,
  801.        ensure that the C++ Target library name checkbox has been
  802.        checked, and the libary is "carv".  You will find both fields
  803.        in the CAR settings notebook.
  804.      - When you generate the parts for the CSETPP sample using the
  805.        Data Access Builder started from the command line, ensure
  806.        ensure that the C++ Target library name checkbox has
  807.        not been checked.  You will find this field in the CAR
  808.        settings notebook.
  809.      - The CARBRWS application is found in the "Data Access
  810.        CarBrws Sample" folder.
  811.      - The CAREDIT application is found in the "Data Access
  812.        CarEdit Sample" folder.
  813.      - The DAXSAMP DLL is found in the "DAXSAMP Database DLL"
  814.        folder.
  815.  
  816.  
  817.  IBM Open Class Library
  818.  ======================
  819.  
  820. 1. The following methods are missing from the Database Access class
  821.    information in the Open Class Library Reference:
  822.  
  823.     IDatastore:
  824.  
  825.      IDatastore& enableShareModeExclusive( Boolean enable );
  826.         Enables or disables the shared mode in a datastore connection.
  827.         Enabling the option selects exclusive access to the database;
  828.         no other process will be able to to connect with exclusive access
  829.         until the original connection is reset.
  830.  
  831.      Boolean isShareModeExclusive();
  832.         Returns a value indicating whether the shared mode has been
  833.         enabled (TRUE) or disabled (FALSE) for this connection.
  834.  
  835.      IString asString()
  836.         Returns a string representing the connection.  The string
  837.         contains the name of the datastore set with the constructor
  838.         or with the setDatastoreName method.
  839.  
  840.     Generated IPersistentObjects:
  841.  
  842.      IString asString()
  843.         Returns a string representing the object.  The string contains
  844.         the data identifiers (usually the keys) as concatenated IStrings.
  845.  
  846.      IPersistentObject& initializePart()
  847.         Notifies observers that the part is ready for use.  This method
  848.         is usually called in the constructor.
  849.  
  850. 2. In the Open Class Library information, the declaration of the
  851.    IDatastore.setDatastoreName method is incorrectly documented.  The
  852.    correct definition is:
  853.       IDatastore& setDatastoreName( const IString& aDatastoreName );
  854.  
  855. 3. In the printed version of the Class Library User's Guide, two of the
  856.    library files identified in the section "Linking to the Collection
  857.    Classes" are incorrect.  The correct names are:
  858.        CPP00C3.LIB  - for static linking
  859.        CPPOOC3I.LIB - import library for dynamic linking
  860.        CPPOOB3.DLL  - for dynamic linking
  861.  
  862. 4. A new flat Collection function, position(), is available for ordered
  863.    collections to determine the position of an element in the collection.
  864.    This function is documented in the online Open Class Library Reference
  865.    but not in the hardcopy.
  866.  
  867. 5. The following do not work correctly on the GA level of OS/2 Warp:
  868.  
  869.    o  Context sensitive help does not work in spin button or combination
  870.       box controls.  APAR PJ17235 has been opened to address the problem.
  871.       The problem is scheduled to be resolved in Warp FixPak 8.
  872.  
  873.    o  Drag images may become corrupted while dragging a container object,
  874.       a tool bar button, or a menu item.  APAR PJ17913 has been opened
  875.       to address the problem.  The problem is scheduled to be resolved in
  876.       Warp FixPak 9.
  877.  
  878.    o  Notebook tab text is always aligned on the left of the tab.  As a
  879.       result, the function INotebook::setTabTextAlignment and the styles
  880.       INotebook::tabTextRight and INotebook::tabTextCenter have no
  881.       effect.  APAR PJ15921 has been opened to address the problem.  The
  882.       problem is scheduled to be resolved in the next release of OS/2
  883.       Warp.
  884.  
  885.    o  The Tab key no longer moves the cursor between controls on a
  886.       notebook page if the page window is a canvas.  APAR PJ17294 has
  887.       been opened to address the problem.  Until a fix is available,
  888.       you can use the following workaround:
  889.  
  890.       1) For each canvas page window, create an IMultiCellCanvas object.
  891.          The multi-cell canvas must be the parent and owner of the canvas,
  892.          and use the notebook as its parent and owner.
  893.       2) Add the canvas to cell 1,1 of the multi-cell canvas, for example:
  894.             multiCellCanvas.addToCell( &canvas, 1, 1 );
  895.       3) Make row 1 and column 1 of the multi-cell canvas expandable:
  896.             multiCellCanvas
  897.              .setRowHeight  ( 1, 0, true )
  898.              .setColumnWidth( 1, 0, true );
  899.       4) Add the multi-cell canvas as the page window of the notebook, in
  900.          place of the canvas.
  901.  
  902. 6. In the online Open Class Library Reference:
  903.  
  904.    o  For IProgressIndicator, the data member armChangeId is missing from
  905.       the Notification Members group, and the enableNotification member
  906.       function is missing from the Public Functions window.  You can find
  907.       both members by expanding the IProgressIndicator class name from
  908.       the Contents window.
  909.  
  910.    o  For ISlider, the data member armTrackId is missing from the Public
  911.       Data window.  You can find it by expanding the ISlider class name
  912.       from the Contents window.
  913.  
  914.    o  For ICircularSlider, the data member trackId is missing from the
  915.       Notification Members group.  You can find it by expanding the
  916.       ICircularSlider class name from the Contents window.
  917.  
  918. 6. In the printed documentation, the close member function is missing
  919.    from the IObjectWindow class.  It should be described as follows:
  920.  
  921.      Use this function to explicitly close an object window.
  922.      The User Interface Class Library considers an IObjectWindow object
  923.      to represent a primary window, unless you call IWindow::setParent.
  924.      The User Interface Class Library automatically ends the message
  925.      processing for a thread when all of the thread's primary windows
  926.      are closed.
  927.  
  928. 7. The exception information for the resetColor function of IWindow
  929.    is documented incorrectly.  It should read as follows:
  930.  
  931.      IAccessError   The windowing system is unable to reset the color.
  932.  
  933.  
  934.  Editor
  935.  ======
  936.  
  937. 1. If the Save key behavior choice (under the Key Behavior choice of
  938.    the Options menu) doesn't work correctly, ensure that PROFILE.LX
  939.    has been updated with the appropriate macro.  You can check
  940.    PROFILE.LX from the Profiles -> User preferences choice of the
  941.    Options menu.  After you save the key behavior, PROFILE.LX should
  942.    contain one of the following commands:
  943.       'MACRO LPEX'    for LPEX behavior
  944.       'MACRO EPM'     for EPM behavior
  945.       'MACRO SEU'     for SEU behavior
  946.       'MACRO XEDIT'   for XEDIT behavior
  947.       'MACRO ISPF'    for ISPF behavior
  948.       'MACRO CUSTOM'  for customized behavior
  949.  
  950.  
  951.  Compilers/Runtime Library
  952.  =========================
  953.  
  954. 1. The following locales were added, but are not listed in the
  955.    documentation:
  956.      AR_AA.IBM-864    Arabic
  957.      AR_AA.IBM-1046   Arabic
  958.      CS_CZ.IBM-852    Czechoslovakian
  959.      HU_HU.IBM-852    Hungarian
  960.      KO_KR.IBM-949    Korean
  961.      PL_PL.IBM-852    Polish
  962.      PT_BR.IBM-850    Brazilian Portuguese
  963.      RU_RU.IBM-866    Russian
  964.      TH_TH.IBM-874    Thai
  965.      ZH_CN.IBM-1381   Simplified Chinese (China)
  966.      ZH_TW.IBM-950    Traditional Chinese (Taiwan)
  967.  
  968. 2. The __unaligned type qualifier is not accepted by the C++ compiler,
  969.    contrary to the documentation.
  970.  
  971. 3. If you use the /Gb+ compiler option or #pragma SOMNoDataDirect for a
  972.    class in Direct-to-SOM mode, the compiler does not generate a copy
  973.    constructor or assignment operator for the class unless you use
  974.    #pragma SOMAttribute to make all data members DSOM attributes.  The
  975.    compiler does not generate the copy constructor because the object to
  976.    copied could be remote, and accessing its instance data directly
  977.    would not be safe.  The lack of a copy constructor may also generate
  978.    error messages (such as EDC3325).
  979.  
  980. 4. The C++ compiler now supports user-defined array new and delete
  981.    operators, as defined by ANSI.  If you have existing code that uses
  982.    user-defined operator new with placement parameters, it may no longer
  983.    compile.  For example, the following code now causes an error:
  984.       class A { };
  985.       void* operator new(size_t sz, int i);
  986.       void test() {   A* ap = new(3) A[10]; }
  987.  
  988.    To eliminate the errors, add the following definition to your headers:
  989.       inline void* operator new[](size_t sz, int i)
  990.           {  return ::operator new(sz, i); }
  991.  
  992.    For details about array new and delete, see the Language Reference.
  993.  
  994. 5. The CONST segment is now read-only.
  995.  
  996. 6. You cannot use the debug memory management compiler option (/Tm)
  997.    with SOM objects.  You can use it when you compile direct-to-SOM.
  998.  
  999. 7. In some cases, using precompiled header files may cause the compiler
  1000.    to abend.  This will be corrected in the first CSD.
  1001.  
  1002.  
  1003.  Linker
  1004.  ======
  1005.  
  1006. 1. A new VisualAge linker with improved function and performance replaces
  1007.    LINK386, which is no longer supported for use with VisualAge C++.
  1008.    If you use build scripts or make files from previous releases, replace
  1009.    "LINK386" with "ILINK /NOFREE".  The new linker supports most LINK386
  1010.    options.  See the User's Guide for more information about the linker.
  1011.  
  1012. 2. The ILIB library utility replaces the LIB utility included in previous
  1013.    releases of C Set ++.  If you use build scripts or make files from
  1014.    previous releases, replace "LIB" with "ILIB".
  1015.  
  1016.  
  1017.  Browser
  1018.  =======
  1019.  
  1020. 1. If you used the C Set ++ beta, delete any .PD* files you created with it.
  1021.  
  1022. 2. If you browse a program that contains .OBJ files created from C source
  1023.    files, the Browser Files Dialog appears and informs you that the .PDB
  1024.    files for the C files could not be found.  Ignore this message and
  1025.    select the Load button.
  1026.  
  1027. 3. On some systems, with certain video drivers and resolutions, very
  1028.    large and complex graphs may be drawn outside of the Browser window
  1029.    and over other windows.  This does not affect the contents of the
  1030.    other windows.  To redraw the other windows, give them focus, and then
  1031.    refresh or resize them.  If you copy or print the windows, the
  1032.    overdrawn lines do not appear.
  1033.  
  1034. 4. If you choose to Generate Browser information, the compiler creates
  1035.    a PDB file even if the compilation fails.  The file may then contain
  1036.    incorrect data.  The browser cannot always detect this problem.
  1037.  
  1038. 5. When you need to use the /Fb* option, the compiler generates a warning.
  1039.    When you do specify it, the compiler may still generate this warning.
  1040.    If this happens, you can ignore the warning.
  1041.  
  1042. 6. When fully-qualified file names are listed, they show the names after
  1043.    compilation, not necessarily the names on your system.  For example,
  1044.    if you List All Files in any of the VisualAge C++ libraries, they all
  1045.    appear to be located in C:\IBMCPP.  The browser searches in that
  1046.    location first; if it cannot find the file there, it searches the
  1047.    path defined in the Browser Settings notebook.
  1048.  
  1049. 7. The browser loads all the information from a program (.EXE or DLL),
  1050.    including information from any LIB files used.  If the project that
  1051.    builds the .EXE or DLL does not contain the project that builds the
  1052.    LIB file, the Refresh function in the Browser cannot determine how to
  1053.    refresh the information and the information is not displayed.
  1054.  
  1055. 8. To start the Browser from the VisualAge Editor:
  1056.     1. Select the Project menu in the Editor.
  1057.     2. Select the Browse action.
  1058.    This is described incorrectly in the VisualAge C++ User's Guide.
  1059.  
  1060. 9. If you try to run the Browser on the executable files for the
  1061.    VisualAge C++ sample projects, you may see the message "Will not
  1062.    QuickBrowse the following files after analysis of the make file."
  1063.    If you see this message, choose Cancel, exit the Browser, and then
  1064.    do one of the following:
  1065.     o  Rebuild the project.
  1066.     o  Rename the target of the project.
  1067.     o  Delete the target of the project.
  1068.    You can then browse the project.
  1069.  
  1070. 10. If you load some browser information with QuickBrowse and some with
  1071.    compiler-generated .PDB files, you may get the message "An error
  1072.    occurred while loading the file filename.pdb".  Either delete the
  1073.    .PDB files and load only QuickBrowse information, or rebuild your
  1074.    project to generate .PDB files for all of your source files.  If the
  1075.    problem persists, contact VisualAge C++ Service and Support.
  1076.  
  1077. 11. If you try to open the Graph window while using XGA-2 adapters
  1078.    running at 1280x1024x16 resolution, the browser traps.  To avoid this
  1079.    problem, change the resolution.
  1080.  
  1081. 12. QuickBrowse does not correctly identify SOM classes.
  1082.  
  1083.  
  1084.  Debugger
  1085.  ========
  1086.  
  1087. 1. If MMPM/2 is installed, the Debugger may shut down when it tries to
  1088.    make a beep sound.  (The Warp operating system installs MMPM/2 by
  1089.    default.)  To avoid this problem, use DINSTSND.CMD to remove the sound
  1090.    portion of MMPM/2, or run the Debugger in Synchronous PM Debugging mode.
  1091.  
  1092. 2. Linking with /DBGPACK can speed up both linking and Debugger startup.
  1093.  
  1094. 3. Debugging code generated with the /G5 compiler option is not supported.
  1095.    However, the only problem that has been noted is that the Debugger
  1096.    can't produce a disassembly or mixed view for some programs.
  1097.  
  1098. 4. Expression evaluation and program execution control for Direct-To-SOM
  1099.    objects behave the same way as they do for non-SOM C++ objects.
  1100.    You can set function breakpoints on Direct-To-SOM methods from the
  1101.    Breakpoint menu, but you must add the characters __DTS to the end of
  1102.    the method name.  For example, to set a breakpoint on the setFlag
  1103.    method, you must specify setFlag__DTS as the method name in the
  1104.    Function Breakpoint dialog.
  1105.  
  1106. 5. To debug SOM objects built with the SOM compiler using the IDL
  1107.    language, you must use the -sir option to tell the SOM compiler to
  1108.    create an interface repository file.  The Debugger can read and
  1109.    process interface repository data.  However, the interface repository
  1110.    file name must be specified by the SOMIR environment variable,
  1111.    for example:
  1112.       SET SOMIR=D:\SOMTESTS\CPP\TYPES.IR
  1113.    To avoid excessive search times, make sure SOMIR only specifies files
  1114.    required for your application.
  1115.  
  1116.    SOM objects built with the SOM compiler are instantiated into pointers.
  1117.    Before their instantiation, these variables do not point to valid
  1118.    SOM objects.  As a result, once they are de-referenced in the variable
  1119.    monitor window, only compiler-generated minimal debug information
  1120.    is displayed.  After instantiation, the Debugger dynamically alters
  1121.    the contents of the variable display window based on the information
  1122.    it derives from the interface repository file.
  1123.  
  1124.    To ensure that packing information is consistently represented for
  1125.    both the repository data generated by the SOM compiler and the debug
  1126.    data generated by the C/C++ compiler, use the default packing schemes.
  1127.    The Debugger cannot correct any mismatches between the packing
  1128.    information, and could display incorrect data.
  1129.  
  1130. 6. Debugging distributed SOM (DSOM) programs is currently not supported.
  1131.  
  1132. 7. There are a number of restrictions on stepping:
  1133.  
  1134.    o  Do not use Step Debug (Ctrl-D) over a DosReleaseMutexSem or a
  1135.       DosRequestMutexSem.  Use Step Over(Ctrl-O).
  1136.  
  1137.    o  If you debug a program that uses floating-point instructions on a
  1138.       machine without a math coprocessor, you cannot single-step consistently
  1139.       across floating-point instructions.
  1140.  
  1141.    o  The accuracy of the call stack cannot be guaranteed if you step into
  1142.       code that was not compiled with debug information (for example,
  1143.       operating system code).  As a result, Step Return may not return
  1144.       to the expected location.  The Call Stack corrects itself after you
  1145.       step all the way through the prolog code in the function, at
  1146.       which point Step Return will also function correctly.
  1147.  
  1148. 8. The Monitor, Register, Call Stack, and Storage windows do not support
  1149.    the pointer-to-member operator.
  1150.  
  1151. 9. To typecast a pointer in a monitor window, you must define the type
  1152.    using a typedef.  You can cast a variable only to a type that has been
  1153.    referenced in the object module.
  1154.  
  1155. 10. Only the call stack associated with the current ring is shown in the
  1156.    Call Stack window.  For example, if the application is stopped in
  1157.    ring 2, the call stack for ring 3 is not shown.
  1158.  
  1159. 11. The context-sensitive editing support in the Debugger is currently
  1160.    limited to opening the file.  The cursor is not positioned to the
  1161.    correct line number in the editor.
  1162.  
  1163. 12. Certain combinations of display drivers and fonts can result in a
  1164.    blank source window.  If this occurs, change the font size.
  1165.  
  1166. 13. When you debug a Presentation Manager application in synchronous
  1167.    mode, other multithread PM applications running in the background
  1168.    that send messages between threads may experience problems.  Avoid
  1169.    running programs like the Performance Analyzer while debugging.
  1170.  
  1171. 14. If the Desktop Automatic Lockup feature is enabled and the Debugger
  1172.    is active, the system permanently locks up when the timer expires.
  1173.    Currently, the only solution is to reboot.
  1174.  
  1175. 15. The Debugger requires fixed-pitch bitmap fonts, which are part of
  1176.    the OS/2 installation.
  1177.  
  1178. 16. If you have an active printer driver loaded under OS/2 and the
  1179.    printer can print in graphics mode, you can print the Debugger
  1180.    screen that has focus by pressing the Print Screen key.
  1181.  
  1182. 17. The Debugger uses DosStartSession to start the program being debugged.
  1183.    DosStartSession may give error messages that you don't see when you
  1184.    run the program outside of the Debugger.  Two common errors and their
  1185.    causes are:
  1186.  
  1187.    "PROGRAM NOT LOADED.  DOSSTARTSESSION FAILED (RC=2)."
  1188.      DosStartSession couldn't find one of the DLLs referenced in your
  1189.      program.
  1190.  
  1191.    "PROGRAM NOT LOADED.  DOSSTARTSESSION FAILED (RC=127)."
  1192.      DosStartSession found the DLL but couldn't find one of the exported
  1193.      entry points.  It may be that the LIB doesn't match the DLL, or
  1194.      that /IGNORECASE was used incorrectly (because the loader is case-
  1195.      sensitive, it may not find entries if you link as case-insensitive).
  1196.  
  1197.  
  1198.  Performance Analyzer
  1199.  ====================
  1200.  
  1201. 1. If you have written customized setjmp or longjmp functions, the
  1202.    Performance Analyzer will not function correctly.
  1203.  
  1204. 2. The Performance Analyzer's timing counter wraps after approximately
  1205.    one hour.  If events are collected for more than one hour, the time
  1206.    stamps will not be accurate.
  1207.  
  1208. 3. The Performance Analyzer cannot determine exactly when thread
  1209.    switches occur.  In the Execution Density and Time Line diagrams, the
  1210.    elapsed time between the thread switch and the next function call on
  1211.    the new thread is associated with the function on the top of the call
  1212.    stack in the switched-out thread.  If there are no functions on the
  1213.    call stack in the switched-out thread, the time is not associated
  1214.    with any function.  This causes gaps to appear in the diagrams.
  1215.  
  1216. 4. Calls to functions that perform file accesses can only be traced
  1217.    while the target application is running.  I/O flush operations that
  1218.    occur after the target application has terminated are not traced.
  1219.  
  1220. 5. The Performance Analyzer does not function properly when a program
  1221.    that uses WinLockInput is also running under OS/2.  WinLockInput
  1222.    doesn't allow messages to be sent between threads.
  1223.  
  1224. 6. Tracing an application while you are either debugging the application
  1225.    with the VisualAge Debugger or tracing the application in another OS/2
  1226.    session can cause unpredictable results.
  1227.  
  1228. 7. The Performance Analyzer cannot generate trace data for child
  1229.    processes in a multiprocess application.
  1230.  
  1231. 8. The Performance Analyzer cannot dynamically calculate operating
  1232.    system overhead.  So, if you run other applications at the same time
  1233.    you are generating trace data using the Performance Analyzer, the
  1234.    trace information will be unreliable.
  1235.  
  1236. 9. C++ applications often contain functions consisting of a small number
  1237.    of instructions.  On fast machines, the execution time for these
  1238.    functions is small compared to the system clock resolution of 838
  1239.    nanoseconds.  As a result, reported cumulative execution times may be
  1240.    imprecise, especially when these small functions are called thousands
  1241.    of times.
  1242.  
  1243. 10. After you specify an executable to be traced, the Performance
  1244.    Analyzer displays the Trace Generation window.  However, if the
  1245.    executable to be traced is quite large, the Trace Generation window
  1246.    may not appear immediately.
  1247.  
  1248. 11. The Save settings choice from the Options menu saves the status area
  1249.    fonts and colors, the window size and position, and the window fonts.
  1250.    Settings that are trace file specific are not saved.
  1251.  
  1252. 12. If you have trouble printing to a network printer configured as an
  1253.    OS/2 network printer, try setting up the printer as a local printer
  1254.    and attaching to the network printer by issuing a requester command.
  1255.    For example, to attach to the network printer using LAN Requester
  1256.    you could issue a command similar to the following:
  1257.         NET USE LPT1: mylanprt
  1258.  
  1259. 13. If you view a large trace file using either the Call Nesting or
  1260.    Time Line diagrams, scrolling and searching will be slow.
  1261.  
  1262. 14. The Find command searches from the highlighted area to the end of
  1263.    the diagram; it does not wrap around.  To ensure that you find all
  1264.    occurrences of the item for which you are searching, place the
  1265.    highlight at the top of the diagram before issuing the Find command.
  1266.  
  1267. 18. The Performance Analyzer uses DosStartSession to start the program
  1268.    being traced.  DosStartSession may give error messages that you don't
  1269.    see when you run the program outside of the Performance Analyzer.
  1270.    Two common errors and their causes are:
  1271.  
  1272.    "PROGRAM NOT LOADED.  DOSSTARTSESSION FAILED (RC=2)."
  1273.      DosStartSession couldn't find one of the DLLs referenced in your
  1274.      program.
  1275.  
  1276.    "PROGRAM NOT LOADED.  DOSSTARTSESSION FAILED (RC=127)."
  1277.      DosStartSession found the DLL but couldn't find one of the exported
  1278.      entry points.  It may be that the LIB doesn't match the DLL, or
  1279.      that /IGNORECASE was used incorrectly (because the loader is case-
  1280.      sensitive, it may not find entries if you link as case-insensitive).
  1281.  
  1282.  
  1283.  Toolkit
  1284.  =======
  1285.  
  1286. 1. The Warp Toolkit components of VisualAge C++ are at the DevCon 7
  1287.    level, with some changes.  Do not replace any components with DevCon 7
  1288.    components; use DevCon 8 or higher.
  1289.  
  1290. 2. In some cases, KwikINF may not be able to initialize.  Try removing
  1291.    some NDX files from the HELPNDX environment variable.
  1292.  
  1293.  
  1294.  
  1295. Trademarks
  1296. ----------
  1297. The following terms are trademarks of the International Business Machines
  1298. Corporation in the United States or other countries or both:
  1299.  
  1300.     BookManager
  1301.     C Set ++
  1302.     DB2/2
  1303.     IBM
  1304.     IBMLink
  1305.     Open Class
  1306.     OS/2
  1307.     Presentation Manager
  1308.     QuickBrowse
  1309.     VisualAge
  1310.     WorkFrame
  1311.     Workplace Shell
  1312.     XGA
  1313.  
  1314. Other terms used in this readme, which may be denoted by a double asterisk (**),
  1315. may be trademarks or service marks of other corporations.
  1316.  
  1317.  
  1318. Your Satisfaction
  1319. -----------------
  1320. Your satisfaction with IBM is important to us.  If you are not totally
  1321. satisfied with this product, please contact us at VisualAge C++ Support.
  1322.  
  1323. Tell us what is not meeting your expectations and why you are
  1324. dissatisfied.  Provide your name, your organization's name, and
  1325. your telephone number so that we can contact you.  We will work with
  1326. you to resolve your concerns.
  1327.  
  1328. To contact us, use any of these:
  1329.      o Internet:  va_cpp@vnet.ibm.com
  1330.      o Fax     :  416-448-4414
  1331.      o Mail    :  IBM Lab
  1332.                   3G/812/1150/TOR
  1333.                   C Set/VisualAge C++ Service and Support Team
  1334.                   1150 Eglinton Ave. E.
  1335.                   North York, Ontario
  1336.                   CANADA   M3C 1H7
  1337.