Skip to main content

msdyn365bc Preprocessor Directives - Conditional Directives.

Hi Readers,

In the Introduction article of series we understand different types of Preprocessor  directives available in Business Central.

Preprocessor Directives are available starting Business Central 2020 Release Wave 2. 

You can read other articles in this series using this link.

In this article we will understand how to use Conditional Directives.

As name suggest with conditional directives this allows you to compile your code conditionally.

What is conditional directives?

  • A conditional resembles in some ways an if statement, but it is important to understand the difference between them. 
  • The condition in an if statement is tested during the execution of your program. Its purpose is to allow your program to behave differently from run to run, depending on the data it is operating on. 
  • The condition in a preprocessing conditional directive is tested when your program is compiled. Its purpose is to allow different code to be included in the program depending on the situation at the time of compilation.

The following conditional preprocessor directives are supported in AL.
  • #if - Specifies the beginning of a conditional clause.
  • #else - Specifies a compound conditional clause.
  • #elif - Combines else and if.
  • #endif - Specifies the end of a conditional clause that begins with #if.
Conditional Directives, works with Symbols.  And Symbol works like - 
  • A Symbol return true/false.
  • Symbol can be defined  beginning of a source file.
  • Scope of the specific symbol is the file that it is defined within.
  • Symbol can be global for the extension.
How to Define a Symbol?
  • To Define a Symbol (set to True) use #define.
  • To Undefine a Symbol (set to False) use #undef.
  • To use a Global Symbol for extension use - preprocessorSymbols in app.json.
  • preprocessorSymbols - Can be used to define one or multiple symbols.
Defining a Symbol?

A symbol can either be local or global as shown below.



How To use Symbols?



In Next article in this series, we will discuss about another preprocessor directives with examples. 

If you have any questions, add as comments to this article.

Regards,
Saurav Dhyani

Comments

Popular posts from this blog

VIEW SERVER STATE permission on SQL Server?

Hi all, Sometime While trying to Login into a database we face an error message as shown below. --------------------------- Microsoft Dynamics NAV Classic --------------------------- You cannot start Microsoft Dynamics NAV Classic because you do not have the VIEW SERVER STATE permission on SQL Server. Contact your system administrator. --------------------------- OK    ---------------------------

RTC Report It is not possible to instantiate the Visual Studio bridge.

Hi all, As a Navision developers I have Multiple Versions of Navision running in single Machine. As discussed Earlier in the post how to run multiple Version of RTC in single machine. So my machine have following details for RTC Versions - NAV 2009 R2    - is installed. NAV 2009 SP1  - is copied at C:\Program Files (x86)\Microsoft Dynamics NAV\60\NAV 6.0 SP1 IN\ NAV 2009         - is copied at C:\Program Files (x86)\Microsoft Dynamics NAV\60\NAV 6.0 IN\ This approach has been working great for execution of Classic and RTC Clients. However, after installing Dynamics NAV 2009 R2, if i tried to view the Layout for an NAV 2009 SP1 Report i was getting the following error: ---------------------------  Microsoft Dynamics NAV Classic  ---------------------------  It is not possible to instantiate  the Visual Studio bridge.  ---------------------------  OK    --------------------------- After searchi...

NAV 2013 R2 - Cumulative update 12 Released.

Hi all, Please find below the details of  Cumulative Update 12 released for Microsoft Dynamics NAV 2013 R2. Title - Cumulative Update 12 for Microsoft Dynamics NAV 2013 R2 Build No. - 38053 Release Date - October, 2014 Local Version Included - AU, AT, BE, CH, DE, DK, ES, FI, FR, IS, IT, NA, NL, NO, NZ, SE, UK, RU Download Link Note: Implementing this cumulative update will require a database conversion unless you have already implemented update rollup 5.