DEFINE and UNDEFINE

General Compiler Directives: DEFINE creates a symbolic variable whose existence or value can be tested during conditional compilation. UNDEFINE removes a defined symbol.

Syntax

cDEC$ DEFINE name [ = val]

cDEC$ UNDEFINE name

c
Is one of the following: C (or c), !, or *. (See Syntax Rules for General Directives.)


name
Is the name of the variable.


val
(Input) INTEGER(4). The value assigned to name.

Rules and Behavior

DEFINE and UNDEFINE create and remove symbols for use with the IF (or IF DEFINED) compiler directive. Symbols defined with DEFINE directive are local to the directive. They cannot be declared in the Fortran program.

Because Fortran programs cannot access the named variables, the names can duplicate Fortran keywords, intrinsic functions, or user-defined names without conflict.

To test whether a symbol has been defined, use the IF DEFINED (name) directive. You can assign an integer value to a defined symbol. To test the assigned value of name, use the IF directive. IF test expressions can contain most logical and arithmetic operators.

Attempting to undefine a symbol that has not been defined produces a compiler warning.

The DEFINE and UNDEFINE directives can appear anywhere in a program, enabling and disabling symbol definitions.

The following forms are also allowed: !MS$DEFINE name[=val] and !MS$UNDEFINE name

Compatibility

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

See Also: IF Directive Construct, General Compiler Directives, /define compiler option

Example

!DEC$ DEFINE testflag
!DEC$ IF DEFINED (testflag)
   write (*,*) 'Compiling first line'
!DEC$ ELSE
   write (*,*) 'Compiling second line'
!DEC$ ENDIF
!DEC$ UNDEFINE testflag