Summary of Differences between
dBASE DOS and dBASE Plus


Tables

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.

Browse

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
GO TOP
DO WHILE NOT EOF()
  IF client->postcode = "8"
    ? client->clientnumber,client->name,"lives in ",client->town
    REPLACE replace->state with "Bavaria"
  ENDIF
  SKIP
ENDDO
USE

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

&Macros

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.

Functions

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.

Code

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:

@ SAY
@ GET
READ
ACCEPT
SET DEVICE

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 

Summary:

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.

Checkout Ken Mayer's update “The dBASE™ DOS to Windows Migration Tutorial” for the latest recommendations!

For additional information on upgrading from DOS to dBASE Plus see these links:
http://www.dbase.com/Knowledgebase/INT/xb2vdb7oodml/x2oodml.htm
http://www.dbase.com/Knowledgebase/INT/xbase_to_sql/x2sql.htm

Knowledgebase documentation and tutorials:
http://www.dbase.com/dBase_beginning.asp
http://www.dbase.com/dBase_intermediate.asp
http://www.dbase.com/dBase_advanced.asp