Dec 102017
 
Document summary of changes in CA Clipper Version 5.2.
File 52CHGS.ZIP from The Programmer’s Corner in
Category Dbase Source Code
Document summary of changes in CA Clipper Version 5.2.
File Name File Size Zip Size Zip Type
52CHGS.TXT 19125 6254 deflated

Download File 52CHGS.ZIP Here

Contents of the 52CHGS.TXT file


Changes from CA-Clipper 5.01 to CA-Clipper 5.2

This document contains a summary of changes made to CA-Clipper 5.2. A
more detailed description of all items will be available in the
Norton Guide file that comes with your CA-Clipper 5.2. If you have
further questions please post a message on the Clipper forum on
CompuServe -- we'll be happy to answer your questions.

By Luiz Quintela
Product Manager
CA-Clipper, CA-Visual Objects for Clipper, CA-C++, CA-CommonView


NEW: Memory Management

CA-Clipper 5.2 improves the handling of expanded memory. Version
5.01 applications would hang in certain circumstances on a machine
using a LIM 4.0 compatible EMS driver with the page frame disabled.
CA-Clipper 5.2 requires that you enable the EMS page frame. If the
EMS page frame is not detected, EMS will not be used.

NEW: LIM 4.0 support

Support for LIM 4.0 has been added. If CA-Clipper detects a LIM 4.0
compatible driver, up to 32MB of EMS will be used.

NEW: RSIS support

CA-Clipper is now RSIS (Relocatable Screen Interface Specification)
compliant. This produces faster screen updates when a RSIS compliant
driver is loaded.

CHANGED: Database error handling

In CA-Clipper 5.01, using database commands without an open work area
would not cause an error. With the following exceptions, CA-Clipper
5.2 now produces a "Work area not in use" error.


EIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII"
o Function Return value o
CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP
o o
o EOF() --> .T. o
o BOF() --> .T. o
o FOUND() --> .F. o
o DELETED() --> .F. o
o RECNO() --> 0 (zero) o
o LASTREC() --> 0 (zero) o
o FIELDNAME(1) --> "" o
o FCOUNT() --> 0 (zero) o
o INDEXORD() --> 0 (zero) o
o INDEXKEY() --> "" o
o DBSTRUCT() --> {} (empty array) o
o HEADER() --> 0 (zero) o
o RECSIZE() --> 0 (zero) o
o LUPDATE() --> / / (empty date) o
o o
EIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

CHANGED: Miscellaneous error handling

Improved error handling in many CA-Clipper commands and functions
traps and reports missing arguments or invalid arguments passed to
them.

CHANGED: Aliases

CA-Clipper now detects illegal characters in the alias and produces
an EG_BADALIAS error.

CA-Clipper now generates an EG_DUPALIAS error if you attempt to
create an alias identifier that is already in use.

CHANGED: Reserved Word

AADD has been added to the Reserved Word list.

NEW: Unrecoverable error messages

Unrecoverable errors are runtime errors that for some reason cannot
make use of the error system. The following runtime unrecoverable
error messages are now documented:

24 Write error
331 String/array memory overflow
332 String/array memory overflow
415 Cannot open overlay file
5302 Conventional memory exhausted
5304 Conventional memory exhausted
5306 Conventional memory exhausted
5312 VM swap file overallocated

CHANGED: Miscellaneous Fixes

LABEL FORM now uses the SET DEFAULT setting to locate files when the
.LBL file is not in the default directory and an absolute path name
is not specified. DBEDIT() now accepts memory variables and
expressions as arguments in the array.

When specified, DBEDIT() now properly displays field aliases in
column headings. This is consistent with the Summer '87 version of
CA-Clipper.

WAIT now accepts characters in the range 32 through 255 (ASCII).

MENU TO no longer repaints the screen with the last prompt when you
press to exit the menu.

CHANGED: COPY FILE

The COPY FILE command now allows control characters to be copied to a
device (printer, serial port, etc.).

CHANGED: CREATE FROM

The following clauses have been added.

NEW is an optional clause that designates that the newly created
database should be opened in a new workarea.

ALIAS is the alias name to use when opening the database in
a new work area.

VIA is the name of the database driver to use to create the
database.

CHANGED: INDEX ON

FOR specifies the conditional set of records on which to
index.

WHILE specifies another condition that each record
processed must meet

EVAL specifies a condition that is evaluated either for
each record processed or at the interval specified by the EVERY
clause

EVERY specifies a numeric expression that modifies how
often EVAL is evaluated.

ASCENDING specifies that the index keys be sorted in increasing order
of value.

DESCENDING specifies that the index keys be sorted in decreasing
order of value.

CHANGED: REINDEX

EVAL specifies a condition that is evaluated either for
each record processed or at the interval specified by the EVERY
clause.

CHANGED: RESTORE FROM

Various bugs have been fixed.

CHANGED: SET ORDER*

SET ORDER* is now classified as a compatibility command. It is
recommended that you use the new SET TAG command instead.

CHANGED: BROWSE()*

BROWSE()* is now classified as a compatibility function. It is
recommended that you use the TBROWSE class instead.

NEW: COLORSELECT()

COLORSELECT() activates the specified color pair, it does not alter
the current SET COLOR setting.

CHANGED: DBCREATE()

DBCREATE() now accepts an optional additional parameter .
is the name of the database driver to use to create the
database.

CHANGED: DISPCOUNT()

DISPCOUNT() determines the current display context.

CHANGED: DISPBEGIN()/DISPEND()

Each call to DISPBEGIN() defines a new display context. Output to the
display context is suppressed until a matching DISPEND() statement is
executed.

CHANGED: MEMOEDIT()

In the previous release of CA-Clipper MEMOEDIT() failed to append a
NULL character to the end of its return string.

CHANGED: SCROLL()

You can now scroll columns horizontally.

NEW: #STDOUT

The new directive #STDOUT causes the compiler to output a literal
text to the standard output device (stdout) during compilation.

NEW: ANNOUNCE

ANNOUNCE is a declaration statement that defines a module identifier.

NEW: EXIT PROCEDURE

The EXIT PROCEDURE statement declares a procedure that will be
executed on program termination.

CHANGED: EXTERNAL*

EXTERNAL* is now classified as a compatibility statement. It is
recommended that you use the new REQUEST statement instead.

NEW: INIT PROCEDURE

The INIT PROCEDURE statement declares a procedure that will be
executed at program startup.

NEW: REQUEST

REQUEST is a declaration statement that defines a list of module
identifiers to the linker.

NEW: Getsys.prg functions

Some of the functions in Getsys.prg have been made public so that you
can use them when implementing customized Get readers.

CHANGED: Getsys.prg

Getsys.prg now respects SET BELL ON when SET CONFIRM ON is used.

NEW: READFORMAT()

READFORMAT() is a function that accesses the current format file in
its internal code block representation.

NEW: READKILL()

READKILL() is a function that lets you control whether or not to
terminate the current READ.

NEW: READUPDATED()

READUPDATED() is intended primarily for creating new READ Layers.

CHANGED: GET:subscript

Get:subscript is now an assignable exported instance variable.

CHANGED: GET:display()

The Get:display() exported method now handles delimiters.

CHANGED: ERROR.CH

The following generic error codes have been added to ERROR.CH:
EG_DUPALIAS, EG_BADALIAS, EG_CYCLICAL.

NEW: ERRORNEW()

The ErrorNew() creates a new error object.

NEW: ERRORINHANDLER()

ERRORINHANDLER() is a new function that assures a clean and prompt
exit from within an application.

NEW: TBrowse:forceStable()

The new method forceStable() performs a full stabilization of the
TBrowse.

CHANGED: TBrowse error handling

Assigning invalid data to TBrowse and TBColumn instance variables
would not generate an error in version 5.01. Type checking during
instance variable assignment has been added in CA-Clipper 5.2 to trap
invalid values and produce a recoverable runtime error.

CHANGED: Compiler

The compiler now requires a minimum of 25 file handles. This can be
accomplished by adding the files statement "FILES=25" to the
CONFIG.SYS.

CA-Clipper now required DOS 3.3 or greater.

Include files (.ch) may be nested up to a maximum of 15 levels. This
limitation was present in previous releases but was not documented.

NEW: COMMAND.CH

Common.ch has been added to the CA-Clipper 5.2 release. Common.ch
incorporates many common/useful psuedo-functions and commands.
Std.ch is now reserved for CA-Clipper language implementation ONLY.

NEW: Compiler options

The following compiler options have been added to CA-Clipper 5.2:

/ES Exit Severity level 0
Default exit severity level.

/ES0 Exit Severity level 0
Same as /ES.

/ES1 Exit Severity level 1
Specifies an exit severity level of 1.

/ES2 Exit Severity level 2
Specifies an exit severity level of 2.

NEW: /DEBUG option in Linker

The /DEBUG option is now supported in the POSITIONAL syntax.

CHANGED: BASE50.???

All the base PLL related files have been changed to reflect the new
CA-Clipper version 5.2.

NEW: Error Messages

The following .RTLink error messages are now documented: ert0166,
eut0032.

CHANGED: DOS 5.0 PLL problem fixed

The fix for the DOS 5.0 PLL problem ("Illegal format in loadable
file") is included in the version of RTLINK for CA-Clipper.

NEW: General Debugger

Instance variable and method names are now displayed when inspecting
objects instantiated from CA-Clipper's predefined classes (GET,
TBROWSE, TBCOLUMN, and ERROR).

NEW: Run menu option

A "run to next routine" option has been added.

NEW: Monitor menu option

"All" has been added to the Monitor menu.

CHANGED: Watchpoint window

The delete key can now be used to delete the currently
highlighted watch point.

CHANGED: View|Workarea screen

The default database driver of the selected workarea is now
displayed. Workarea and Index key are hilighted rather than
designated by "->". Multiple relations are now displayed in the work
area outline.

CHANGED: Online Help

Online help now appears in a separate file (CLD.HLP).

CHANGED: CLD.LIB

CLD.LIB must be linked as an OBJ file and not as a LIB file.

CHANGED: Command line parameters

You must place a space between the CA-Clipper application name and
the first CA-Clipper parameter when calling your routine from the
CLD.EXE command line.

CHANGED: BP command

An additional parameter, has been added to the BP command.

CHANGED: Open mode in DBU

DBU now opens all databases SHARED by default

NEW: /e switch

The new optional command line parameter (/e) will cause DBU to open
file EXCLUSIVE to provide backward compatibility.

CHANGED: RL (Report Label) Utility

.FRM file changes

RL no longer lets you embed semicolons in report headings. This is
consistent with dBASE III+.

RL no longer allows the right margin setting to exceed the width of the report.

NEW: DBMCMD Error messages

DBCMD error messages occur in the database command set and are
unrelated to a particular driver. They occur as a result of command
usage rather than from a failure of the driver itself.

CHANGED: NTX

The NTX driver now allows you to create conditional indexes by
specifying a FOR condition. Create indexes using a record scope or
WHILE condition, allowing you to INDEX based on the order of another
index. Create both ascending and descending order indexes. Specify an
expression that is evaluated periodically during indexing in order to
display an index progress indicator.

NEW: MDX

The MDX replaceable database drivers is used to access dBASE IV
compatible index and multiple index (.mdx) file formats.

NEW: CDX

The CDX driver replaceable database provides access to FoxPro
compatible database index file formats (.cdx).

NEW: PDX

The PDX replaceable database driver provides access to Paradox tables
(.pdx).

NEW: NOVTERM

The NOVTERM driver provides faster execution when run on some
non-dedicated network server software.

NEW: PCBIOS

The PCBIOS driver provides direct BIOS calls rather than direct
screen writes for systems requiring this form of I/O.

NEW: ANSITERM

The ANSITERM driver provides ANSI terminal support for systems that require it.

NEW: Drivers Reference

CA-Clipper 5.2 provides many new and enhanced (changed) commands and
functions that can be used to access and manipulate databases and get
specific information about the replaceable database driver (RDD) in
use.

CHANGED: APPEND FROM command

The APPEND FROM command syntax has been changed to include the VIA
clause.

CHANGED: COPY TO command

The COPY TO command syntax has been changed to include the VIA
clause.

CHANGED: DBAPPEND() function

DBAPPEND() has been changed to accept the parameter, lReleaseRecLocks
which allows you to maintain multiple records locks during an append.

CHANGED: DBGOTO() function

DBGOTO() has been modified to accept a parameter other than record
number.

NEW: DBRLOCK() function

DBRLOCK() is a database function that locks the record identified by
the specified value . In Xbase, is the record
number.

NEW: DBRLOCKLIST() function

DBRLOCKLIST() is a database function that returns a one-dimensional
array that contains the identities of record locks active in the
selected work area.

NEW: DBRUNLOCK() function

DBRUNLOCK() is a database function that releases the lock on
and removes it from the Lock List. If is not
specified, all record locks are released.

CHANGED: DBSETINDEX()* function

DBSETINDEX() is a database function that adds the contents of an
Order Bag into the Order List of the current work area. DBSETINDEX()
is a compatibility command and therefore not recommended. It is
superseded by the ORDLISTADD() function.

NEW: DELETE TAG command

This command removes an Order from an Order Bag in the current or
specified work area.

CHANGED: GO command

The GO command has been enhanced to also work with data format other
than (.dbf). In a (.dbf), the parameter, identity, is the record
number. In other data formats, identity is the unique primary key
value.

CHANGED: INDEX command

The index on syntax has modified to include new clauses.

NEW: ORDBAGEXT() function

ORDBAGEXT() supersedes the INDEXEXT() and is not recommended.

NEW: ORDBAGNAME() function

ORDBAGNAME() is an Order management function that lets you access the
name of the Order Bag in which resides.

NEW: ORDCREATE() function

ORDCREATE() is an Order management function that creates an Order in
the current work area.

NEW: ORDDESTROY() function

ORDDESTROY() is an Order management function that removes a specified
Order from multiple-Order Bags.

NEW: ORDFOR() function

ORDFOR() is an Order management function that returns the character
string, cForExp, that represents the logical FOR condition of the
Order.

NEW: ORDKEY() function

ORDKEY() is an Order management function that returns a character
expression that represents the key expression of the specified Order.

You may specify the Order by name or with a number that represents
its position in the Order List. Using the Order name is the
preferred method.

NEW: ORDLISTADD() function

ORDLISTADD() is an Order management function that adds the contents
of an Order Bag , or a single Order in an Order Bag, to the Order
List.

NEW: ORDLISTCLEAR() function

ORDLISTCLEAR() is an Order management function that removes all
Orders from the Order List for the current or aliased work area.
When you are done, the Order List is empty. This function supersedes
the function DBCLEARINDEX().

NEW: ORDLISTREBUILD() function

ORDLISTREBUILD() is an Order management function that rebuilds all
the orders in the current or aliased Order List.

NEW: ORDNAME() function

ORDNAME() is an Order management function that returns the name of
the specified Order in the current Order List.

NEW: ORDNUMBER() function

ORDNUMBER() is an Order management function that lets you determine
the position in the current Order List of the specified Order.

NEW: ORDSETFOCUS() function

ORDSETFOCUS() is an Order management function that returns the Order
Name of the previous controlling Order and optionally sets the focus
to an new Order.

NEW: RDDLIST() function

RDDLIST() is an RDD function that returns a one-dimensional array
that lists the available RDDs.

NEW: RDDNAME() function

RDDNAME() is an RDD function that returns a character string,
cRDDName, the name of the active RDD in the current or specified work
area.

NEW: RDDSETDEFAULT() function

RDDSETDEFAULT() is an RDD function that sets or returns the name of
the previous default RDD driver and, optionally, sets the current
driver to the new RDD driver specified by cNewDefaultRDD.

CHANGED: RECNO() function

The RECNO() function has been changed to work with other data
formats.

CHANGED: SEEK command

The SEEK command syntax has been changed to include the new clause,
SOFTSEEK.

CHANGED: SET INDEX command

The SET INDEX command syntax has been modified to work with other
data formats and includes the new clause, ADDITIVE.

CHANGED: SET ORDER command

The SET ORDER command has been changed to also work with data formats
other than the traditional Xbase().

CHANGED: Extend System API

The Extend System is now identified as the Extend API.

NEW: GT (General Terminal) API

The GT API is the level of system protocols that implements
CA-Clipper screen and keyboard commands and functions.

NEW: VM API

The VM API is a set of functions callable from extend functions that
allow direct communication with the VMM system.

NEW: RDD API

The database driver programming interface (RDD API) can be used by
third party developers to create new drivers, allowing CA-Clipper
applications compatibility with any database engine for which a
driver is created.




 December 10, 2017  Add comments

Leave a Reply