Clipper Support Bulletin #11 //INFO runtime configuration setting Copyright (c) 1992 Nantucket Corporation. All rights reserved. Version: Clipper 5.0, version 5.01 Date: 23rd April, 1992 Revised: 22nd May, 1992 Status: Active ================================================================================ This Support Bulletin covers the following topics: 1. Overview of //INFO 2. The DS Address Indicator 3. The DS Available Indicator 4. The OS Available Indicator 5. The EMM Available Indicator 6. The Fixed Heap Available Indicator =============================================================================== 1. Overview of //INFO Clipper 5.0, version 5.01 supports a runtime configuration setting that gives information about the state of an application program when you load it. This configuration setting is //INFO. You can specify this setting in the CLIPPER environment variable or on the application command line. When you invoke the application with the //INFO runtime configuration setting specified, the following information displays on the screen before your application code begins execution: Clipper (R) 5.01 Rev. 1.29 ASCII DS=829E:0000 DS avail=37KB OS avail=53KB EMM avail=1024KB This is a typical //INFO line (actually, it is displayed when invoking DBU). The first line describes the general product version, revision, and international version. For example, "ASCII" means you created the program using the US version of Clipper 5.0 and therefore all nation-dependent operations such as sorting are oriented around ASCII definition or characters. The second line contains information about the memory environment the application program will be operating under. Some of this information is useful, some is not. The descriptions below define the meaning and usefulness of each indicator. ================================================================================ 2. The DS Address Indicator The DS address indicator has the following form: DS=:0000 This is address of the program's data segment or DGROUP. This value is essentially useless to anyone outside of Nantucket. ================================================================================ 3. The DS Available Indicator The DS available indicator has the following form: DS avail=KB This indicator shows the amount of DGROUP available for the current program's usage when the program starts. Clipper 5.0 makes very heavy use of the default DGROUP. The internal evaluation stack, along with all local and static variables, is allocated in this area. In addition, the processor stack is also allocated there, as with all Microsoft C programs. If your system defines large amounts of static near data, you may be substantially reducing the amount of memory available for local and static variables at the Clipper level, and also reducing the amount of recursion that the Clipper program can perform. To determine how much DGROUP your program uses: 1.Invoke the program using //INFO 2.Note the DS avail value To determine how much DGROUP a particular library uses: 1.Link the application without the third-party library (ignoring all of the linker warnings about unresolved externals) 2.Invoke the program, and note the DS avail number (the machine may hang at this point due to the missing functions). 3.Link the program again with the library 4.Invoke the program again and note the new DS avail value. The difference between the first and second values shows how much DGROUP the library is using. If you are having problems with "Eval stack fault," unrecoverable errors, and linking multiple third-party libraries, you should perform this analysis with each library individually to find the DGROUP hog. You should then contact the vendor to informing them of the problem. ================================================================================ 4. The OS Available Indicator The OS available indicator has the following form: OS avail=KB This indicator shows the amount of conventional memory available for VMM swap space. If the reported OS avail value is too low, there is strong possibility the program will terminate with a "Conventional Memory Exhausted" unrecoverable error. Because of the dynamic nature of the Clipper 5.0 memory system, the precise amount of memory needed to effectively run an application is not known. However, the minimum effective value should exceed 100KB. (For more information on Clipper's virtual memory management, please see Clipper Support Bulletin #3, located in library 16 of NANFORUM on CompuServe.) ================================================================================ 5. The EMM Available Indicator The EMM available indicator has the following form: EMM avail=KB This indicator shows the amount of EMM (expanded memory) allocated to the current application. This value reflects the lesser of the total EMM available and the //E configuration setting. A "(P)" following the EMM avail value appears when the application has been loaded with the //BADCACHE configuration setting. //BADCACHE causes the VMM to preserve and restore the state of the EMM page frame before and after every EMM access (the EMM page frame is an area in real address space through which EMM data is accessed). This setting can be used to correct problems when there are conflicts with other programs that use EMM. ================================================================================ 6. The Fixed Heap Available Indicator The fixed heap available indicator has the following form: Fixed heap=KB/ This indicator appears when the application terminates. It shows the size of the fixed heap in kilobyte increments in addition to the number of fixed segments. These numbers are not very useful. They indicate trouble if the values are too high. Importantly, they increase if the fixed heap becomes fragmented through use of _xalloc()/_xfree(). * * *