Upgrading from DOS

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


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:

ElementIf Used, dBASE…
_pecodeReturns an empty string
_pscodeReturns an empty string
_pwaitReturns .F.
ASSISTReturns a warning
END TRANSACTIONReturns a warning
CALLReturns a warning
CALL( )Returns a warning
COMPLETED( )Returns .T.
DEXPORTReturns a warning
DGEN( )Returns 0
DISPLAY/LIST HISTORYIgnores this command
DISPLAY/LIST USERSIgnores this command
EXPORTReturns a warning
FIXED( )Returns the value that was passed to it
ISMARKED( )Returns .F.
LOADReturns a warning
PLAY MACROReturns a warning
RELEASE MODULESReturns a warning
RESETReturns a warning
RESTORE MACROSReturns a warning
ROLLBACKReturns a warning
SAVE MACROSReturns a warning
SET CLOCKReturns a warning
SET COLOR ON | OFFReturns a warning
SET DBTRAPReturns a warning
SET DEBUGReturns a warning
SET HELP ON | OFFReturns a warning
SET HISTORYReturns a warning
SET HOURSReturns a warning
SET INSTRUCTReturns a warning
SET PAUSEReturns a warning
SET SCOREBOARDReturns a warning
SET SQLReturns a warning
SET STATUSReturns a warning
SET TRAPReturns a warning
SET WPReturns 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: