Compatibility Between FoxBASE+ and FoxPro for MS-DOS

Last reviewed: April 17, 1995
Article ID: Q98921
The information in this article applies to:
  • Microsoft FoxPro for MS-DOS, version 2.0, 2.5, 2.5a, and 2.60

SUMMARY

FoxPro will run most FoxBASE+ programs without change. FoxPro is also compatible with dBASE 4, which is not completely compatible with FoxBASE+. Therefore, FoxPro must be informed which type of compatibility is desired by the developer. The information below describes how to ensure nearly complete FoxBASE+ compatibility.

MORE INFORMATION

The following command (the default) will allow FoxPro to run most programs written in FoxBASE+ and dBASE 3 without change:

   SET COMPATIBLE TO FOXPLUS

Aside from issuing this command, you must make a few other changes to ensure nearly complete FoxBASE+ compatibility. These changes are described below and in Chapter 17 of the "Developer's Guide."

Changing the Configuration of FoxPro

In the GOODIES\MISC directory is a special configuration file called CONFIG.FOX. This file configures FoxPro to be almost completely FoxBASE+ compatible. To use this file, rename it CONFIG.FP, or incorporate its contents into a new or currently active CONFIG.FP file.

Emulating FoxBASE+ Keystroke Assignments

FoxPro's built-in keystroke shortcuts are very similar to those of FoxBASE+/Mac and are also similar to those found in IBM's System Application Architecture (SAA) specification. However, the shortcuts are very different from those in FoxBASE+ for MS-DOS.

Fortunately, FoxPro's keystroke macro facility makes it easy to completely emulate FoxBASE+'s keystroke shortcuts. A set of keyboard macros that emulate FoxBASE+'s behavior is provided. These macros are in file called FOXPLUS.FKY, which is located in the GOODIES\MISC directory.

If programs rely on the exact keystrokes used to operate FoxBASE+ [and the READKEY() codes they generate], FOXPLUS.FKY should be used.

To activate these macros, use the following command:

   RESTORE MACROS FROM FOXPLUS.FKY

To automatically load these macros on startup, rename FOXPLUS.FKY to DEFAULT.FKY and place it in the same directory as FOXPRO.EXE.

SET Options Required for FoxBASE+ Emulation

   SET NOTIFY OFF     && Turns off FoxPro system messages.
   SET STATUS ON      && Turns on old-style status bar.
   SET SCOREBOARD ON  && Turns on old-style scoreboard.
   SET BRSTATUS ON    && Status bar will appear with BROWSE.
   SET MACKEY TO      && Disables "define macro" key, usually F10.

Some of the above settings, while required for complete compatibility, are not really desirable for use in FoxPro. A good example is SET STATUS ON, which activates the old-style status bar. Although this is not really useful in native FoxPro mode, it is included for backward compatibility.

Unavoidable Incompatibilities

FoxPro is as perfectly compatible with FoxBASE+ as possible, given that it is an entirely different product. However, some of FoxPro's extensions have introduced a few minor areas where incompatibilities are inescapable.

  1. FoxPro detects a few error conditions that are ignored by FoxBASE+. In these conditions, programs written in FoxBASE+ will not operate as before but will generate error messages. (For example, FoxBASE+ permits arrays to have names that later became functions in FoxPro, such as an array named POPUP.)

  2. FoxPro has many new functions. If the name of one of these built-in FoxPro functions has been used in an existing FoxBASE+ application as the name of a user-defined function (UDF), FoxPro will naturally interpret the name as that of the built-in function and will not execute the UDF [a common example is the LOOKUP() function].

  3. There have been reports of instances where an existing FoxBASE+ application used the following technique to initialize a string to the null string (that is, a string containing no characters):

          mystring = CHR(0)
    

    In FoxBASE+, this code is equivalent to the normal technique:

          mystring = ""
    

    However, in FoxPro, which permits the null character to be stored in strings, the first approach actually results in a string containing one character, CHR(0), the null character. In short, if applications have been written to rely on the fact that it is impossible to insert the NULL character in a string in FoxBASE+, the application will not work properly under FoxPro.

        NOTE: In FoxPro 2.6, it is possible to put null values into logical and
        numeric fields (not memory variables).
    

  4. Since FoxPro's interface and interactive facilities (such as BROWSE and EDIT/CHANGE) are entirely different from those of FoxBASE+, programs that rely on the precise physical appearance of these facilities in FoxBASE+ will not operate identically in FoxPro.


Additional reference words: FoxDos 2.00 2.50 2.50a 2.60
KBCategory: kbprg
KBSubcategory:


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: April 17, 1995
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.