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
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.

For additional information on upgrading from DOS to dBASE PLUS see these links:

Knowledgebase documentation and tutorials:

2012-2018 © dBase, LLC
dBase LLC Websites Status