so what you think about a *.CH to "translate" xBase Command to OOP-Syntax
I do that in lots of places now.
I used to create and manipulate objects with *.CH commands before the DataObject() class was offered to us.
However, I refuse to overload or replace Xbase++ syntax in any way at all because this would make my code incompatible with existing Xbase++ code.
When I write a library, it must be able to integrate into any Xbase++ application without changing its behavior.
You may recall that there were some 3rd part libraries, back in the Clipper days, that replaced some Clipper functions.
That turned out to be a disaster for some developers.
Replacing SKIP with anything other than dbSkip() would confuse any programmer who had to maintain the software.
A better idea would be to create a new command syntax like I do in eXpress++. All commands start with DC* and all public functions start with DC_*.
SKIP and dbSkip() were designed to work with any work area, including ISAM and SQL cursors.
DC_DbSkip() was designed to work with additional features that I needed in a workarea that are not supported by Xbase++, like descending or ascending in a browse, or scoping with an array of record numbers.
An object-oriented based skipper would be unique to a specific class, therefore a command interface would be complex.
There is only one place that I break my rule - XDOT.EXE. For example, the dot prompt interpreter will translate SKIP to DC_DbSkip().
I needed to do this in the early days of Xbase++ before they supported advanced data management features like Scoping with indexes or arrays.
That's because it is designed as a utility program, not a library of functions and commands.