#IF ... #ENDIF Returns Different Results in FPD and FPW

Last reviewed: June 27, 1995
Article ID: Q108668
The information in this article applies to:
  • Microsoft FoxPro for MS-DOS, versions 2.5, 2.5a, 2.5b
  • Microsoft FoxPro for Windows, version 2.5, 2.5a, 2.5b

SYMPTOMS

In FoxPro for MS-DOS, if a system memory variable such as _STARTUP is stored with a value prior to compilation, _STARTUP can be evaluated with the #IF ... #ENDIF statements at compile time.

In FoxPro for Windows, the #IF ... #ENDIF statements will not evaluate the system memory variable _STARTUP at compile time even though the system memory variable _STARTUP contains a value prior to compilation.

RESOLUTION

To obtain the same results in FoxPro for Windows, add a #DEFINE preprocessor directive when you are assigning a value to the system memory variable _STARTUP. For an example, see "Workaround" in the "More Information" section below.

MORE INFORMATION

This behavior is documented in the Help files for FoxPro for MS-DOS and FoxPro for Windows. For more information, see the "#IF ... #ENDIF Preprocessor Directive" online Help topic.

Steps to Reproduce Behavior

Load FoxPro for MS-DOS, and then follow the steps below:

  1. In the Command window, type:

          MODIFY COMMAND TEST
    

  2. Type the following code into the edit window, and then press CTRL+W to save the program and close the window:

           #IF "TEST" $ _startup
    
               ? "TEST mode"
           #ELSE
               ? "PRODUCTION mode"
           #ENDIF
    
    

  3. In the Command window, issue the following commands:

           _STARTUP = "TEST by <your name>"
           COMPILE test.prg
           DO test.prg
    

    The #IF ... #ENDIF statements will return "TEST mode."

  4. Load FoxPro for Windows and repeat steps 1-3. The #IF ... #ENDIF statements will return "PRODUCTION mode."

Workaround

To obtain the same results ("TEST mode") in FoxPro for Windows, add a #DEFINE preprocessor directive when you are assigning a value to the system memory variable _STARTUP in the TEST.PRG program. For example:

     #DEFINE _STARTUP "TEST by <your name>"
     #IF "TEST" $ _startup
           ? "TEST mode"
     #ELSE
           ? "PRODUCTION mode"
     #ENDIF

If you recompile and run the TEST.PRG file, it should now return "TEST mode" in FoxPro for Windows.


Additional reference words: FoxDos FoxWin 2.50 2.50a 2.50b compiler run
time
runtime
KBCategory: kbenv kbprg
KBSubcategory: FxenvMemory


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: June 27, 1995
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.