Saturday, February 14, 2009

About CA-Clipper 5.3b [21 May 1997]

Clipper 5.3 introduces the native Clipper mouse & GUI programming with the use of
Lightlib as a alternative terminal driver. Unfortunately, 5.3 was found to be buggy and with 
inadequate documentation as to the usage of the mouse & GUI programming. 

While CA-Clipper 5.3a has mainly been created as a maintenance release, there are a few 
enhancements in the product that we hope you will find useful.
These enhancements include new macros in the source code editor (please see the 
"CA-Clipper Workbench Source Code Editor Macros" chapter of this document)
and a new sample application named GDBU. GDBU is a graphics version of CA-Clipper's 
DBU.  This sample application has been written entirely in CA-Clipper 5.3 and demonstrates
the many uses of graphics mode.  The source code to this sample application has been
included in the CLIP53\SOURCE\SAMPLE\GDBU directory.  Feel free to change this source
code as you wish so that you can experiment with the many features that graphics mode has
to offer in CA-Clipper. 

Depending on your system's memory configuration, GDBU may require some extra memory to run properly. If you are experiencing any problems such as the application terminating, please run the OPTEDIT utility on the GDBU.EXE file as follows:

This will allow the executable to use sufficient memory throughout the duration of the application.

CA-Clipper Release Notes
Version 5.3b Intl
May 1997

1.  Installation Instructions
2.  What's Fixed in CA-Clipper 5.3b
3.  Other CA-Clipper 5.3 Patches
4.  CA-Clipper File Descriptions
5.  Supported Operating Systems
6.  MISSING STD.CH and SET.CH Documentation
7.  Miscellaneous

There are several important pieces of information that you must be aware of
before installing CA-Clipper 5.3b.

* Please backup your existing CA-Clipper 5.3a files and directory structure
before running this installation.

* You must install on top of CA-Clipper version 5.3a.  This installation will
not work properly if you attempt to install over any CA-Clipper version other
than 5.3a.

* CA-Clipper 5.3b can be installed only from DOS.

* You must have 8MB free on the hard disk where CA-Clipper 5.3a is installed.

You must place the files 53A_BI.RTP and PATCH.EXE in the root of the directory
where CA-Clipper 5.3a is installed.

From the DOS prompt, execute the following:


After the patch process has completed, please examine the PATCH.LOG file in
the root of your CA-Clipper 5.3b directory to view the results of the patch.

Below is a list of fixes for CA-Clipper version 5.3b.

Category      Description of Fixed Problem
--------      ----------------------------
Append        APPEND FROM...DELIMITED. If text file record(s) are offset
           by one or more spaces at their beginning, the first FIELD
           in the target database will no longer contain displaced data.

Blob          No longer receive an unresolved external or multiple definition
           error using DBFBLOB.LIB.

DOS Debugger  Protected Mode Debugger LOCAL variable values are no longer
           affected by the presence of a file-wide STATIC.

Error System  DOS error 5 no longer occurs before NETERR() when the opening
           of a exclusive database fails.

Get System    Any Class Object is now permitted to be used with the
           GET system.

           The saved color settings are no longer restored too late
           when using delimiters.

           Using a long GET caption will no longer GPF under Exospace.

           Changed HitTest() to a PUBLIC Function for access from
           MenuSys.Prg to allow mouse recognition on a Get Object while in
           a MenuModal().

           Changed Accelerator() to a PUBLIC Function for access from
           MenuSys.Prg to allow accelerator key recognition on a Get Object
           while in a MenuModal().

           Added GetSystem Array Element to access Menu Item ID Number
           which was not available.

           Added GetSystem Array Element to save and restore CURSOR shape
           and display because it wasn't being properly restored.

           Added code to properly save and restore the CURSOR.

           Added code to properly save and restore the Menu ID Number.

           Following 2 items were changed/added to prevent both Pre and
           Post GET VALIDation from executing twice.
           This was done by:

             Added code to test IIF() a Mouse Hit or Accelerator key
             was pressed:

               1) in GetReader().

               2) in GUIReader().

               3) in TBReader().

             Added code to test EXITing a GET or the READ:

               1) in GetReader().

               2) in GUIReader().

               3) in TBReader().

           All instances of the MenuModal() call are saved to a Menu ID
           Number element in the GetSystem Array because previously it was
           not accessable.

           nHotItem was used to replace the second parameter in each call to
           MenuModal() because the Menu ID Number retrieved was not updated.

           Added missing assignments for GetSystem Array Elements for the
           READVAR() and GETACTIVE() values because they were not reset
           and were not previously available from application code from

             1) ClearGetSysVars()

             2) RestoreGetSysVars()

           Added ROW(), COL(), and SETPOS() to EraseMsg() because CURSOR
           position was previously not handled as accurately.

IDE           Corrected the status bar messages.

           When in the Source Code Editor, the Menu Editor is no longer
           grayed out.

           The Source Code Editor can now support international keyboards
           (international bug).

           If the DEL key is the hot-key for delete module according to
           the file menu, it no longer deletes entities from within module
           specific entity borwser.

           After iconizing the module browser, the module browser is now
           able to be restored.

           Application browser: the DELETE dialog box is now modal.

           Window Editor: 'Next' menu command and hot-key now work properly.

           Rename a application and then do Export.  When the Export dialog
           box is displayed it now has the new application name.

           Menu editor: the "External PRG already exist..." message box
           is now modal.

           When import and build an application in a blank application
           browser, the module browser is no longer shown the first time
           with unknown text.

           Form Editor: Resizing a combo box no longer changes the text.

           Using the default color from the form editor, it is no longer
           difficult to see the blank cursor, (this happens after you choose
           an item from the toolbox on a blue background).

           In source code editor, the menu Editor menu item in the tools
           menu is no longer active.

           When building with editors open, if work has been saved, no
           longer receive the following message box: "Warning! Unsaved work
           will not be included".

           Form Editor properties window is now saved.

Math          MSC 8.0 math error text will no longer be displayed, (e.g.,
           'sqrt: _DOMAIN error' resulting from a call to SQRT(-1)).

Memory        Memory loss no longer occurs when opening and closing databases.

           Memory loss no longer occurs when opening and closing databases
           with CDX indexes.

Menu System   Added calls to the GetSys.Prg PUBLIC Function HitTest() because
           a Mouse Hit on a GET was not detected from a Menu Object.

           Added calls to GetSys.Prg PUBLIC Function Accelerator() because
           GET shortcut keys were not detected while in a Menu Object.

           Added Menu System Array Element to access CURSOR ROW()
           because it was not globally available to the application.

           Added Menu System Array Element to access CURSOR COL().
           because it was not globally available to the application.

           Added Menu System Array Element to access CURSOR position.
           because it was not globally available to the application.

           Added GetList as a new last parameter for MenuModal() because
           access to Get Objects from Menu Objects is required when both
           are used.

           Added code to save and restore the CURSOR Position and shape
           because it was not previously restored properly by assigning the:

             1) Row.

             2) Column.

             3) Shape.

             4) and calling SETPOS().

           Changed Menu System HitTest() Function to MHitTest() to avoid
           conflict with the PUBLIC Function HitTest() in GetSys.Prg.

           Added code to save and restore CURSOR position and shape before
           and after each call to EVAL() for a Menu Object because it wasn't
           properly restored.

           Added missing PARENTHESES in commented out source code because it
           was not previously compilable without syntax errors if it was
           uncommented for usage.

Tools         Linking in the new __WAIT_4.OBJ (located in the OBJ directory)
           before CA-Clipper Tools will eliminate the R6003 and/or GPF
           at startup using AMD or Cyrix processors.

ScrollBar     If the end of a displayed ScrollBar Object ends at MAXROW() and
           MAXCOL() it will no longer cause the screen to scroll.

           Using the Update() method with multiple ScrollBar objects will
           no longer cause erroneous screen painting.

Version       Version() will now display the build number.

Since the release of CA-Clipper 5.3, several patches for CA-Clipper and
Comix/FlexFile have been released.  All of those patches have been
incorporated into CA-Clipper 5.3b.

These patches are the following:

* OPT_53.EXE - Includes OPTEDIT.EXE which provides a fix for Internal Error

* CLFLEX1E.ZIP - Contains fixes for Comix and FlexFile libraries.

* CL53UP.ZIP - Contains indexing fix by using SORTOF.OBJ.

* C53AI1.ZIP & C53AI2.ZIP - Contains Revision A Update.

Please note that the use of SORTOF.OBJ is not necessary in version 5.3b.  This
fix has been incorporated into CLIPPER.LIB.

The following is a list of the important files that are supplied with
CA-Clipper 5.3b.

BIN Directory
CA-Clipper's real mode linker.  For a dual-mode or protected mode
version of Blinker, you can obtain an upgrade from Blink, Inc.

A utility that will extract bitmaps and fonts out of a bitmap library.

A utility that will list all resource files that exist in a bitmap library.

Used by the Workbench to launch CA-Clipper applications.

A batch file designed to compile and link one .Prg into an .EXE.

Help file used with the CA-Clipper debugger.

CA-Clipper's real mode debugger.

The CA-Clipper compiler.

A utility to make your Summer '87 memo fields compatibly with CA-Clipper 5.3.

A database Utility that allows you to create, modify, and browse DBF files.

Help file for DBU.EXE

The icon used for DBU in Windows.

CA-Clipper's protected mode linker, splicer, and loader.

Options editor for CA-Clipper/Exospace .EXEcutable files. See the OPTEDIT.TXT
information on how to fix Internal Error 8002 and remove the Startup BANNER.

A simple text editor written in CA-Clipper.

Utility to report a machine's protected mode memory configuration. Useful for
runtime information affecting your CA-Clipper/Exospace created applications.

A utility to create a bitmap library from font and bitmap files.

CA-Clipper's .FRM Report Form and .LBL Label Form file editor utility.

Utility used to create CA-Clipper .EXEcutable files. Reads a set of compile
and link rules contained in an .RMK file. May also be used to execute other
utilities, including LIB.EXE, to create other files.

Utility to report your machine's real mode memory configuration. Useful for
runtime information affecting your CA-Clipper/Exospace created applications.

Toggles ReadOnly attribute of a file, (e.g., RO <.EXE>, permits file Sharing).

A Windows utility which translates Windows true-type fonts into .FNT fonts
which are readable by CA-Clipper.

Utility for use with older video cards which are not VESA compatible. Only
useful when working in graphics mode. (Not all video cards are compatible.)

CACI Directory
The CA-Clipper Workbench.

The CA-Clipper Windows help file.

CA-Clipper Workbench support files.

A utility used to reindex your repository.  If you receive a message that your
repository has become corrupted, you can use this utility to reindex the

The default linker template that is used when building from the Workbench.

A Blinker template file that can be used for Blinker dual mode applications.
This template only applies if an upgraded version of Blinker has been
purchased from Blink, Inc.

A Blinker template file that can be used for Blinker extended mode
applications.  This template only applies if an upgraded version of Blinker has been
purchased from Blink, Inc.

A Blinker template file that can be used for real mode applications.  This
template only applies if an upgraded version of Blinker has been purchased
from Blink, Inc.

A template file that can be used to create library files.  In order to create
libraries, the executable file LIB.EXE is required.

CACI/DATA Directory
CA-Clipper Workbench Repository files.

CA-Clipper Workbench sample files.

INCLUDE Directory
All files in this directory with an extension of .CH are CA-Clipper header
files which you can #include in your CA-Clipper applications.

All other files in this directory (.H, .API, and .MAC) are header files which
can be used with C or Assembler code.

LIB Directory
Both .LIBraries are known as the FoxPro 2.6 for DOS Replaceable Data Driver.
Both are required to support .DBF, .CDX, and .FPT or .DBV Child Memo files.
The Parent _DBFCDX Database and INDEXing RDD may be used without the Child
DBFCDX Memo/BLOB RDD. Only linking _DBFCDX is required when no .FPT or .DBV
Memo files are used within the application and in order to use .CDX indexes.
Also, if using the Child DBFCDX RDD, linking DBFMEMO.LIB is not necessary,
as that .LIBrary's functionality is included in DBFCDX.LIB. Single TAG .CDX
and .IDX files are not supported. Default MEMOBLOCK or MBLOCKSIZE SETting is
64 Bytes.

BIOS and device driver files used by CA-Clipper.

Maximum and medium overlay scripts to be used with Blinker.

Library for CA-Clipper's protected mode Debugger. Remember to link this into
the root of the .EXEcutable in a FILE statement after compiled .OBJs. (There is
no CLD.EXE equivalent of CLDR.EXE, so Restart and .EXEcutable command line
Debugger Options are not available. SET Options with CLIPPERDEBUG=/D /S.)

Library for CA-Clipper's real mode Debugger. Remember to link this into the
root of the .EXEcutable in a FILE statement after compiled .OBJs. Use together
with the CLRD.EXE.

Bitmap library consisting of numerous fonts as well as bitmaps used by
CA-Clipper to display checkboxes, radiobuttons, scrollbars, etc.  To view the
contents of this file, run BMLDIR.COM.

The main library which contains most of the functionality for CA-Clipper.

A FlexFile library which provides support for Binary Large OBject files to be
stored in memo fields. Default MEMOBLOCK or MBLOCKSIZE SETting is 64 Bytes.

The dBase IV 1.1 through 2.0 Replaceable Data Driver which may be used to
create .MDX multi-TAG index files.

A FlexFile library which provides support for large memo fields.  Default

dBaseIII Plus Replaceable Data Driver which you can use to create .NDX index

CA-Clipper's Replaceable Data Driver which can be used to create .NTX index
files. The Child DBFMEMO Memo/BLOB RDD may be used with it to support Child
.FPT (or .DBV) files.

Library used by CA-Clipper's protected mode linker.

Miscellaneous CA-Clipper functionality is included in this library.

The Light Lib Graphics library which can be used to create graphics mode
applications.  See the SET VIDEOMODE command for details.

A library which was created from many of the samples provided in the samples

CA-Clipper's library which handles output to the screen.  When you use
LLIBG.LIB or any other terminal driver, this library is replaced.

NG Directory
The Norton Guide engine.  Norton Guides are a DOS help tool which, when used
in conjunction with .NG files, provide online help.

C53G01C.NG, C53G02C.NG, C53G03C.NG, C53G04C.NG
The help files for CA-Clipper 5.3

OBJ Directory
Include this object file to set the MDX driver as the default driver for your
application.  Be sure to include DBFMDX.LIB as a library in your link script.

Use the CDXLOCK.OBJ driver in order to use your CA-Clipper database
concurrently with FoxPro databases.  The CDXLOCK.OBJ driver is necessary to
maintain compatible locking schemes between CA-Clipper and FoxPro.

Part of the CA-Clipper General Terminal driver.  This driver provides similar
functionality to TERMINAL.LIB.  TERMINAL.LIB should be used instead of GT.OBJ
except if you are using a 3rd party library which replaces TERMINAL.LIB.

If your application does not require any RDDs (including the default DBFNTX
driver), you can include NULSYS.OBJ into your link script as an object file to
avoid having to include the DBFNTX.LIB.  This will increase the speed of your
link as well decreasing the size of your application.

This driver will change the locking scheme for your databases so that you can
have more records in a database file.  By default, CA-Clipper will lock
records at 1 billion + the record number.  When databases get large enough it
can bump into this locking area and cause problems.  With NTXLOCK2.OBJ, the
locking offset is moved to 4 billion.  Please note, though, that using
NTXLOCK2.OBJ will create indexes that are not compatible with older versions
of CA-Clipper.

Linking in __WAIT_4.OBJ before CA-Clipper Tools will eliminate the R6003
and/or GPF at program startup using AMD or Cyrix processors.

MDX*.OBJ, MSG*.OBJ, NTX*.OBJ (except NTXLOCK2.OBJ, see above)
These files provide runtime national language support.  Please read NATION.DOC
for more information.

SOURCE Directory
You can modify the source code in these directories as you wish, but please
keep a copy of CA-Clipper's original files.

DBU Files
The files in this directory contain all of the source code for CA-Clipper's
Database Utility.

PE Files
The files in this directory contain all of the source code for CA-Clipper's
text editor.

RL Files
Source code for CA-Clipper's Report and Label Utility.

Miscellaneous samples.

GDBU Files
A new set of sample files for CA-Clipper 5.3a.  This directory contains the
source code for a completely re-written DBU in graphic mode using CA-Clipper
5.3.  All of the source code is provided, including the RMake file, link
script, and bitmap libraries.  Feel free to play with this source code as you
wish as it can help you learn how to use the new Light Lib Graphics library.

SYS Files
Included in this directory are system files which are used by CA-Clipper.
These include the Get System, Browse System, Menu System, Memo System, Error
System, and RDD System.

Some functions that are generated by CA-Clipper's form and menu editors call
functions in these files.  Feel free to examine and modify these files as you
wish, but please keep a copy of the original files.

CA-Clipper is supported under all MS-DOS versions later than and including
MS-DOS 3.3.

The CA-Clipper Workbench is supported under Windows 3.1, Windows 3.11, Windows
for Workgroups, and Windows 95.  Please note that Windows 95 was NOT
supported in the initial release of CA-Clipper 5.3, but is supported in
CA-Clipper 5.3a and above.  OS/2 (any version) and Windows NT are NOT fully
supported at this time.

DBI Manifest Constants in Reference Guide NG:

DBI_GETSCOPE       34  /* Locate codeblock */

Missing SET COMMANDS in Reference Guide NG:

SET MFILEEXT TO              => Set( _SET_MFILEEXT,  )
SET STRICTREAD ()            => Set( _SET_STRICTREAD,  )
SET AUTOPEN         => Set( _SET_AUTOPEN, <(x)> )
SET AUTOPEN ()               => Set( _SET_AUTOPEN,  )
SET AUTORDER TO              => Set( _SET_AUTORDER,  )
SET AUTOSHARE TO             => Set( _SET_AUTOSHARE,  )
SET MFILEEXT TO              => Set( _SET_MFILEEXT,  )

SET Manifest Constants in Reference Guide NG:

14   _SET_TYPEAHEAD      Numeric        SET TYPEAHEAD TO
21   _SET_EXTRA          Logical        None
39   _SET_EVENTMASK      Number         SET EVENTMASK TO
40   _SET_VIDEOMODE      Number         SET VIDEOMODE TO
41   _SET_MBLOCKSIZE     Number         SET MEMOBLOCK TO
42   _SET_MFILEEXT       Character      SET MFILEEXT  TO
43   _SET_STRICTREAD     Logical        SET STRICTREAD
44   _SET_OPTIMIZE       Logical        SET OPTIMIZE
45   _SET_AUTOPEN        Logical        SET AUTOPEN
46   _SET_AUTORDER       Logical        SET AUTORDER  TO
47   _SET_AUTOSHARE      Logical        SET AUTOSHARE TO

NATIONMSG Manifest Constants - from several files:

_DIR_TITLE        1 // "Database Files    # Records    Last Update     Size"
_LF_SAMPLES       2 // "Do you want more samples?"
_RF_PAGENO        3 // "Page No."
_RF_SUBTOTAL      4 // "** Subtotal **"
_RF_SUBSUBTOTAL   5 // "* Subsubtotal *"
_RF_TOTAL         6 // "*** Total ***"
_GET_INSERT_ON    7 // "Ins"
_GET_INSERT_OFF   8 // "   "
_GET_INVD_DATE    9 // "Invalid Date"
_GET_RANGE_FROM  10 // "Range: "
_GET_RANGE_TO    11 // " - "
_LF_YN           12 // "Y/N"

Production or Structural Indices (same prefix name as the Parent .DBF), are
opened automatically with the database. Specify #include "Ord.Ch" with these.

Specify #include "Ord.Ch" at the top of each .Prg which perform operations
related to the following activities:


.CDX files default to auto-opening and order 0 ( Natural ). These defaults
can be changed by SETting AUTOPEN and AUTORDER commands.

SET ORDER TO TAG  or (SET ORDER TO to nullify) with Multi-TAG RDDs.

Corrections to Error Messages and Appendices Guide, Page I-2:
Maximum length of a CHARACTER string:              65,516 bytes
Maximun size string, or CHARACTER or MEMO FIELD    65,516 bytes
Maximum key expression length: .cdx (_DBFCDX RDD)  240 bytes

No comments:

Post a Comment

Welcome to Clipper... Clipper... Clipper

In 1997, then using Delphi 3, I had already created 32-bits Windows applications for HRIS, ERP and CRM. In 2007, using Ruby on Rails, an AJAX powered CRM site running on Apache & MySQL was created and I am now using Visual Studio .Net 2008 to create web-based projects and Delphi 7 for Win32 applications using SQL2005 & DBFCDX.

So, why then am I reviving the Original Clipper... Clipper... Clipper via a Blog as CA-Clipper is a programming language for the DOS world ? Believe it or not, there are still some clients using my mission-critical CA-Clipper applications for DOS installed in the late 80's and up to the mid 90's. This is testimony to CA-Clipper's robustness as a language :-)

With the widespread introduction of Windows 7 64-bits as the standard O/S for new Windows based PCs & Notebooks, CA-Clipper EXE simply will not work and it has become imperative for Clipper programmers to migrate immediately to Harbour to build 32/64 bits EXEs

Since 28th January 2009, this blog has been read by 134,389 (10/3/11 - 39,277) unique visitors (of which 45,151 (10/3/11 - 13,929) are returning visitors) from 103 countries and 1,574 cities & towns in Europe (37; 764 cities), North America (3; 373 cities) , Central America & Caribeans (6; 13 cities), South America(10; 226 cities), Africa & Middle-East (12; 44 cities) , Asia-Pacific (21; 175 cities). So, obviously Clipper is Alive & Well : -)

TIA & Enjoy ! (10th October 2012, 11:05; 13th November 2015)

Original Welcome Page for Clipper... Clipper... Clipper

This is the original Welcome Page for Clipper... Clipper... Clipper, which I am republishing for historical and sentimental reasons. The only changes that I have made was to fix all the broken links. BTW, the counter from is still working :-)

Welcome to Chee Chong Hwa's Malaysian WWW web site which is dedicated to Clipperheads throughout the world.

This site started out as a teeny-weeny section of Who the heck is Chee Chong Hwa ? and has graduated into a full blown web site of more than 140 pages (actually hundreds of A4 size pages) ! This is due to its growing popularity and tremendous encouragements from visiting Clipperheads from 100 countries worldwide, from North America, Central America, Caribbean, South America, Europe, Middle-East, Africa and Asia-Pacific. Thanx Clipperheads, you all made this happen !

What is Clipper ?

You may ask, what is this Clipper stuff ? Could Clipper be something to do with sailing as it is the name of a very fast sailing American ship in the 19th century ?

Well, Clipper or to be precise, CA-Clipper is the premier PC-Software development tool for DOS. It was first developed by Nantucket Corporation initially as a compiler for dBase3+ programs. Since then, CA-Clipper has evolved away from its x-base roots with the introduction of lexical scoping & pre-defined objects like TBrowse. As at today, the most stable version ofClipper is 5.2e while the latest version, 5.3a was introduced on 21 May 1996.

As at 11th November, 1996, an unofficial 5.3a fixes file was made available by Jo French. See the About CA-Clipper 5.3a section for more details. BTW, Jo French uploaded the revised 5.3a fixes file on 20th November, 1996.

Latest News

The latest news is that CA has finally released the long-awaited 5.3b patch on 21 May, 1997.

For 5.3b users, you must a take a look at Jo French's comments on unfixed bugs in 5.3b.

BTW, have you used Click ? If you're a serious Clipperprogrammer and need an excellent code formatter, Click is a natural choice. How to get it ? Simple, access Phil Barnett's site via my Cool Clipper Sites.

32-bits Clipper for Windows ?

Have you tried Xbase ++ ? Well, I have and compared to Delphi (my current Windows programming tool of choice), I'm still sticking to Delphi.

Anyway, you should visit the Alaska Home Page. Give it a chance and then draw your own conclusions !.

The Harbour Project

Is this the future of Xbase ? Take a look at at the Harbour Project

You are Visitor # ...

According to, you are visitor since 3 June 1996.

If you like or dislike what you see on this website, please drop me a line by clicking the email button at the bottom of this page or better still, by filling out the form in my guest book. If you are not sure what to write,click here to take a look at what other Clipperheads have to say.