Summary of Differences between
 dBASE DOS and dBASE Plus




All previous tables, index and memo files are compatible with the latest versions. Conversion is not necessary.

However dBase Plus now offers the newer "Level 7" tables. These tables offer a wide range of new features. For example default values can be defined for each field. New field types such as BLOB for storing binary data (eg: jpg, gif, and other image formats.) or auto increment for generating a unique number in every record.

@ say / @ get

These commands are no longer supported whereby the reason lies not in dBase but rather in the underlying technology modern gui operating systems. Windows is object oriented. Every text we see on the screen is an object with properties. No longer is there a concept of lines by columns which is the way the old say/get commands were designed to work.

Printer Output

In the days of DOS print data contained a stream of data and format escape sequences. Often the formatting codes between different printers even from the same manufacturer were entirely different.
Sometimes these sequences will still work. The basic "?" command still functions, and you will need to test your print output on an individual basis to see if they still work to your satisfaction.


The old browse command was extremely powerful with masses of formatting options and a good deal of functional capabilities.
dBase Plus still recognizes the browse command and has a browse object included in its classes but the object does not have all the capabilities of the original feature.
dBase Plus relies mainly on the "Grid" object which can be data linked to queries embedded in forms. Unfortunately you cannot data link a "Grid" to a table or resultset which was opened using the old xdml commands (use).

Report Form…

DOS Report Files in .frm format can be run via the Report Form command using a default font of Courier, 12 point.

DOS Report files can be converted to the newer .rep format using conversion tools but will have to be updated to open tables via the newer object oriented method instead of accessing tables opened via xdml command such as USE.

xdml Commands

Most xdml commands still work as they did in the DOS versions.

For example:

USE clients ORDER clientnumber ALIAS client
  IF client->postcode = "8"
    ? client->clientnumber,client->name,"lives in ",client->town
    REPLACE replace->state with "Bavaria"

This functions the way it did 15 years ago.

Dot Commands

In DOS you wrote commands following the famous dot prompt. The same applies to dBase Plus except that commands are entered in the upper area of the Command Window.
Results are displayed in the lower area (referred to as the Output Pane).  This capability of testing out and using single commands interactively is one feature which makes dBase stand out among the host of programming languages. .


Those who loved to use macros, need not change their code. We recommend though, that you always add a single dot after the macro, because the dBase Plus interpreter seems sometimes to get confused if you don't.


All the well known functions like: trim(), left(), substr().... still work as before.
Sometimes it is worth taking a look at the newer classes and methods for processing dates and Strings which provide even greater functionality.

The Navigator

The Navigator is still around. Much easier to use than in DOS.


All of the dBASE PLUS GUI Design Tools are "Two-Way-Tools".  Everything you do with a GUI tool can be viewed in source-code mode using the Source Code editor and code that you add via the Source Editor, updates the GUI when saved.  Again an outstanding dBASE feature.

Other Unsupported Commands

The following commands were no longer supported beginning with Visual dBASE version 7.0:








The following are dBASE IV (DOS) language elements that were no longer supported beginning with dBASE for Windows:


Element            If Used, dBASE…

--------------         ----------------------------------------------------------------

_pecode            Returns an empty string

_pscode            Returns an empty string

_pwait               Returns .F.

ASSIST             Returns a warning

BEGIN... END TRANSACTION    Returns a warning

CALL                 Returns a warning

CALL( )              Returns a warning

COMPLETED( ) Returns .T.

DEXPORT         Returns a warning

DGEN( )            Returns 0

DISPLAY/LIST HISTORY            Ignores this command

DISPLAY/LIST USERS   Ignores this command

EXPORT           Returns a warning

FIXED( )            Returns the value that was passed to it

ISMARKED( )    Returns .F.

LOAD                Returns a warning

PLAY MACRO   Returns a warning

RELEASE MODULES    Returns a warning

RESET Returns a warning

RESTORE MACROS     Returns a warning

ROLLBACK       Returns a warning

SAVE MACROS            Returns a warning

SET CLOCK      Returns a warning

SET COLOR ON | OFF   Returns a warning

SET DBTRAP    Returns a warning

SET DEBUG     Returns a warning

SET HELP ON | OFF     Returns a warning

SET HISTORY   Returns a warning

SET HOURS     Returns a warning

SET INSTRUCT Returns a warning

SET PAUSE      Returns a warning

SET SCOREBOARD      Returns a warning

SET SQL          Returns a warning

SET STATUS    Returns a warning

SET TRAP        Returns a warning

SET WP           Returns a warning






If your DOS application consists mainly of Dialogs (Forms/Masks) then you will probably need to change/rewrite large parts of it. Remember though that if you were to decide to use another language that the amount to learn would be far higher and you would probably have to rewrite everything.

The basics are still dBase the way it always was.

Many programs and modules which have little or no dialog functionality can be used unchanged.



Last Updated: July 8, 2010