home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #1
/
monster.zip
/
monster
/
CLIPPER
/
CLIPTIPS.ZIP
/
SUPTBULL.ZIP
/
S50011.TXT
< prev
Wrap
Text File
|
1992-05-28
|
7KB
|
160 lines
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=<offset>: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=<memory>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=<memory>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=<EMM memory>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=<fixed heap>KB/<number of fixed segments>
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().
* * *