The define and undef directives
The preprocessor
allows you to create simple variables that are available only to the preprocessor. HCL
OneDB™ calls these variables definitions.
The preprocessor
manages these definitions with two directives:
- define
- Creates a name-flag definition. The scope of this definition is from the point where you define it to the end of the source file.
- undef
- Removes a name flag that EXEC SQL define or $define creates.
The preprocessor rather than the C preprocessor (which processes #define and #undef) processes these directives. The preprocessor creates (define) or removes (undef) these definitions in stage 1 of preprocessing.
The define directive
can create definitions with the following formats:
- The format for Boolean symbols is
define symbolname;
The following examples show the two ways to define a Boolean symbol that is called TRANS:EXEC SQL define TRANS; $define TRANS;
- The format for integer constants is
define symbolname value;
The following examples show both formats for two integer constants, MAXROWS (with a value of 25), and USETRANSACTIONS (with a value of 1):EXEC SQL define MAXROWS 25; $define MAXROWS 25; EXEC SQL define USETRANSACTIONS 1; $define USETRANSACTIONS 1;
Important: Unlike the C #define statement,
the define directive does not support string constants or macros
of statements that receive values at run time.
You can override define and undef statements in the source program with the esql command-line options, -ED and -EU. For more information about these options, see Define and undefine definitions while preprocessing.