Boolean Options

There are two types of Boolean options: system options and user options. System options control the manner in which the compiler processes the source input. User options are implicitly declared by the user and are defined by their first appearance on a compiler control card.

A 48‑bit stack is allocated for each Boolean option. The top location in the stack contains the current value of the option, and the locations below it record the previous value of the option. Every Boolean option has a default initial value. An option which is initially true is assigned a 48‑bit stack with a 1 on top and 0 (zeros) in the remaining positions; an option which is initially false is assigned a 48‑bit stack filled with 0 (zeros). When an option is set, the option stack is pushed down one bit and a 1 is placed on top of the stack. When an option is reset, the contents of the stack are pushed down and a 0 (zero) is inserted on top of the stack. Since the stack only contains 48 bits, a history of at most 48 states can be recorded. If the stack is full when an option is set or reset, the oldest state is simply discarded. The POP option causes the stack for the specified option to be popped up one bit. The current state of the option is discarded and the option reverts to its previous state.

Compiler control statements assign values to Boolean options either explicitly or implicitly. The value of a Boolean option is changed explicitly when the compiler control statement begins with the option action SET, RESET, or POP. When options are assigned values explicitly, only the options listed following SET, RESET, or POP are changed. The values of all other options remain the same. Once an option is assigned a value, it retains that value until it is altered by a subsequent compiler control statement.

The following Boolean options are assigned a value implicitly when SET, RESET, or POP is not specified:

  • Boolean system options, when the compiler control statement begins with the name of a Boolean system option

  • Boolean user options, when the compiler control statement begins with the name of a Boolean user option

In either case, all 48 bits of every Boolean system option stack are reinitialized to 0 (zero). That is, every Boolean system option is reset. (Boolean user options remain unaffected.) Then, the options listed in the compiler control statement are set.

For example, the LIST MERGE compiler control statement discards the history for all Boolean system options (NEW, SEQ, and so on), causing all options to be reset. It then sets the LIST and MERGE options.