Category : Dbase (Clipper, FoxBase, etc) Languages Source Code
Archive   : BULLETIN.ZIP
Filename : PRTSTC50.018

 
Output of file : PRTSTC50.018 contained in archive : BULLETIN.ZIP

2/17/92 Blink Inc.

Linking for Development and Production for Clipper 5.01


Generally speaking, the optimal computer environment for application
development differs from that for application production. This is
reflected in the differing approaches to linking when creating a test
version as opposed to the final production version of an application.
The following suggestions should help in optimizing link scripts used
for development and for the final production link when using Clipper
version 5.01.

The development link scripts are based on the following assumptions:

1. The top priority during development is a short test cycle turn-around
time, where the test cycle is comprised of editing, compiling, linking,
and testing.

2. Memory and application execution speed are less of a concern, and
only become critical when using debugging tools or incremental linking,
since the developer generally has more memory and a faster PC than the
production site.
_________________________________________________________________________

For development in Clipper 5.01:

For the fastest link speed, use Blinker's incremental linking (the
default). A higher ratio of incremental links can be attained by
increasing the BLINKER INCREMENTAL PAD above its default of 128 bytes
per procedure.

Note that while using incremental linking, Blinker manages all the
overlays and Clipper's Dynamic Paging System is not active.

Since an incrementally-linked application uses more memory, the
following suggestions are presented to help in reducing a Clipper
application's use of memory, short of turning off incremental linking.
As the application grows in size, these suggestions will prolong your
use of incremental linking, usually at the expense of application
execution speed.

1. Overlay as much as possible.
Place all Clipper .OBJ files and libraries in the BEGIN/ENDAREA. Then
overlay EXTEND.LIB and any overlayable third party products being
careful to follow each product's dynamic overlay instructions, since
there are many overlay methods.

2. Use BLINKER OVERLAY PAGEFRAME ON.
This allows the Blinker to place the overlay pool in the EMS Page Frame
at application runtime.

3. Decrease the BLINKER OVERLAY OPSIZE.
If the overlay pool is not placed in EMS or XMS, this command can be
used to allocate the minimum amount of conventional memory for the
overlay pool. The minimum possible is displayed by Blinker at link
time.

4. Overlay portions of CLIPPER.LIB.
The nested link script files CL501MID.LNK and CL501MAX.LNK have been
provided to overlay a medium and maximum portion of CLIPPER.LIB. These
.LNK files will probably result in a slower execution speed and may need
to be tailored for each application. Systematically comment out a
number of overlaid CLIPPER.LIB modules to find the few modules that,
when commented out, result in an acceptable execution speed.

5. Combine Clipper-compiled .OBJ files into as few files as possible.
This is a manual technique to compress Clipper's symbol table until
Blinker automatically compresses it in response to turning off
incremental linking. Either combine the .PRG files or use Clipper .CLP
files. For the fastest compile turnaround, keep the few, most
frequently modified programs as separate .OBJ files.

6. Utilize the BLINKER INCREMENTAL PAD command.
When necessary, the padding used for incremental linking can be reduced
from the default of 128 bytes. This will result in a lower ratio of
incremental links, but may save enough memory to permit incremental
linking to continue.


Sample for Development in Clipper 5.01

BLINKER INCREMENTAL ON # the default
BLINKER INCREMENTAL PAD 128 # the default
BLINKER PROCEDURE DEPTH 50
BLINKER OVERLAY PAGEFRAME ON
BLINKER CACHE EMS 50%, 50% # Blinker version 2.0 only
BLINKER CACHE XMS 50%, 50% # Blinker version 2.0 only
#
BEGINAREA
FILE test.obj # individual prg being modified
FILE clpfile1 # a number of combined prgs
FILE clpfile2 # a number of combined prgs
ALLOC TPOVL # a 3rd-party overlayable lib
ENDAREA
FILE TPROOT # non-overlayable portion
FILE CLD.LIB # Clipper 5.01's debugger
@CL501MAX.LNK # tailored




The production link scripts are based on the following assumptions:

1. The top priority is for the application to execute within the amount
of memory that is available at all production sites.

2. Execution speed is the next highest priority.

__________________________________________________________________

For Production in Clipper 5.01:

1. Turn off incremental linking.
Use the command BLINKER INCREMENTAL OFF to save memory and pass all the
Clipper-compiled procedures onto Nantucket's overlay manager, the
Dynamic Paging System. Once the DPS is enabled, the question becomes
whether to overlay non-Clipper code and have two active overlay managers
during application execution.

2. Put Blinker's overlay pool in EMS.
If a number of your users have the EMS Page Frame available, you
probably will want to continue using the Page Frame with the command
BLINKER OVERLAY PAGEFRAME ON.

3. Memory savings suggestions.
If some production sites are running out of memory, see the current
memory-saving suggestions in the Blinker manual chapter 5 or in the
technical support bulletin on Blinker's BBS and Fast Fax systems.

4. Cache overlays.
The overlaid, non-Clipper-compiled modules can be cached in expanded or
extended memory for faster application execution speed by using the
commands, BLINKER CACHE EMS & BLINKER CACHE XMS. This feature is
available only with Blinker versions 2.0 and above.

5. Increase BLINKER OVERLAY OPSIZE.
Finally, if you have any memory left over, add some of it to the overlay
pool to increase the execution speed of the non-Clipper-compiled
overlays.




Sample production script for Clipper 5.01
with only Clipper-compiled overlays (no Blinker overlay manager).

BLINKER INCREMENTAL OFF
BLINKER PROCEDURE DEPTH 50
#
FILE prg1 # first prg of the application
FILE .... # individual programs
FILE prgn #
LIB ESCAPE # library of mostly Clipper code
FILE rootfile # small non-Clipper prg
#
#LIB EXTEND.LIB # default libraries
#LIB CLIPPER.LIB # " "


Sample production script for Clipper 5.01
with non-Clipper-compiled overlays (two overlay managers).

BLINKER INCREMENTAL OFF
BLINKER PROCEDURE DEPTH 50
BLINKER OVERLAY OPSIZE 64
BLINKER CACHE EMS 30%, 70% # Blinker version 2.0 only
BLINKER CACHE XMS 30%, 70% # Blinker version 2.0 only
#
BEGINAREA
FILE prg1 # first prg of the application
FILE .... # individual programs
FILE prgn #
FILE DGEVGAD # graphics driver
LIB ESCAPE # overlaid library
LIB DGE # overlaid library
ENDAREA
#
FILE rootfile # small non-Clipper prg
@CL501MIN.LNK # overlay EXTEND.LIB

----------------------
Copyright Blink, Inc.
----------------------