Compiler control statements control how the DASDL compiler processes source input, handles output errors, and generates output. Compiler control statements are input on compiler control card images. Each control card image is identified by a dollar sign ($) in column 1 or a blank in column 1 and a dollar sign in column 2. (If the dollar sign of a compiler control option appears in column 2, the card is unconditionally included in the source listing unless $LIST is reset.)
An 8‑digit sequence number can appear optionally in columns 73 through 80. Compiler control statements appear between the dollar sign and column 72. Input is free format; however, control statements cannot be continued from one card image to another.
Compiler control card images are input along with source language card images. Control card images can appear anywhere in the input CARD or TAPE files. They are merged exactly like other input. A control card image in the CARD file that contains only a dollar sign and a sequence number replaces the record in the TAPE file which has the same sequence number.
Compiler control statements are used to assign values to compiler control options. Most compiler control options are simple Boolean options that have a value of either TRUE or FALSE. Some Boolean options also have one or more parameters associated with them. The remaining options are parameter options that have no Boolean values.
The following diagrams illustrate the syntax of the compiler control statements:
Compiler Control Statements
── $ ─┬─────────┬─┬──────────────────────────────────────────┬─────────┤ ├─ SET ───┤ │ ┌◄────────────────────┐ │ ├─ RESET ─┤ └─┴─┬─<system option>─┬─┴──────────────────┤ ├─ POP ───┘ └─<user option>───┘ │ ├─ SET ─┬─<system option>─┬─ = <option expression> ────┤ │ └─<user option>───┘ │ ├─ PAGE ───────────────────────────────────────────────┤ ├─ INCLUDE <file name> ─┬──────────────────────────────┤ │ ├─<base>── - ──<limit>─────────┤ │ └─<base>── TO ──<limit>────────┤ ├─ SYMBOLIC <file name> ───────────────────────────────┤ ├─ VERSION ─┬─ <version>.<cycle> ──────┬─┬─────────────┤ │ └─ + <version>. + <cycle> ─┘ └─ . <patch> ─┤ └─ ZIPFILE = "<file name> ─┬────────────────────┬─ " ──┘ └─ ON <family name> ─┘
<option expression>
──┬───────┬─<option primary>───────────────────────────────────────────► ├─ NOT ─┤ └─ ^ ─┘ ►─┬──────────────────────────────────────────┬─────────────────────────┤ │ ┌◄─────────────────────────────────────┐ │ └─┴─┬─ AND ─┬─┬───────┬─<option primary>─┴─┘ ├─ OR ──┤ ├─ NOT ─┤ ├─ IMP ─┤ └─ ^ ─┘ └─ EQV ─┘
<option primary>
──┬─<user option>─────────────┬────────────────────────────────────────┤ ├─<system option>───────────┤ ├─ FALSE ───────────────────┤ ├─ TRUE ────────────────────┤ └─ ( <option expression> ) ─┘
<user option>
──<letter>─┬───────────────────────┬───────────────────────────────────┤ │ ┌◄──────────────────┐ │ └─┴─/16\─┬─<letter>─┬─┴─┘ └─<digit>──┘
<system option>
──┬─ $ ─────────────────────────────────────┬──────────────────────────┤ ├─ ALIGNMENT ─────────────────────────────┤ ├─ ALLINFO ───────────────────────────────┤ ├─ ALWAYSBUMPLEVEL ───────────────────────┤ ├─ AUTOREORG ─────────────────────────────┤ ├─ COBOL74 ───────────────────────────────┤ ├─ DATASETLIMIT1500 ──────────────────────┤ ├─ DEBUG ─────────────────────────────────┤ ├─ DECKLIST ──────────────────────────────┤ ├─ DELETE ────────────────────────────────┤ ├─ DMCONTROL ─────────────────────────────┤ ├─ ERROR LIMIT <unsigned integer> ────────┤ ├─ ERRORLIMIT <unsigned integer> ─────────┤ ├─ FILE ──────────────────────────────────┤ ├─ HEADER ────────────────────────────────┤ ├─ INCLNEW ───────────────────────────────┤ ├─ INITIALIZENEW ─────────────────────────┤ ├─ LAYOUT ────────────────────────────────┤ ├─ LIST ──────────────────────────────────┤ ├─ LISTDOLLAR ────────────────────────────┤ ├─ LISTP ─────────────────────────────────┤ ├─ MERGE ─────────────────────────────────┤ ├─ NEW ───────────────────────────────────┤ ├─ OMIT ──────────────────────────────────┤ ├─ PAGE ──────────────────────────────────┤ ├─ RPG ───────────────────────────────────┤ ├─ SEQUENCE ─┬────────┬─┬─────────────────┤ │ └─<base>─┘ └─ + <increment> ─┤ ├─ SEQERR ────────────────────────────────┤ ├─ SINGLE ────────────────────────────────┤ ├─ STORE ─────────────────────────────────┤ ├─ STRUCTURE ─────────────────────────────┤ ├─ SYMBOLIC ──────────────────────────────┤ ├─ TEST ──────────────────────────────────┤ ├─ TEXT ──────────────────────────────────┤ ├─ UDMLOAD ───────────────────────────────┤ ├─ UDMREPORT ─────────────────────────────┤ ├─ UDMSAVEFILE ───────────────────────────┤ ├─ UDMUPDATE ─────────────────────────────┤ ├─ UDMZIP ────────────────────────────────┤ ├─ VERSION ───────────────────────────────┤ ├─ VOIDT ─────────────────────────────────┤ ├─ WARNING ───────────────────────────────┤ └─ ZIP ───────────────────────────────────┘
Example
The following DASDL description illustrates the use of compiler control options:
$ SET MYOPT LIST D DATA SET ( A ALPHA (2); B BOOLEAN; N NUMBER (3); R REAL; ); $ SET OMIT = MYOPT S1 SET OF D KEY (A,N); $ POP OMIT $ SET OMIT = NOT MYOPT
The elements of the syntax diagrams are explained in the following text.