Microsoft KB Archive/98921

{| = Compatibility Between FoxBASE+ and FoxPro for MS-DOS =
 * width="100%"|

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 &quot;Developer's Guide.&quot;

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 &quot;define macro&quot; 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 = &quot;&quot;

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:
 * }