Option Descriptions

The remainder of this section describes the individual compiler control options.

ASCII Option

──┬─────────────────┬─ ASCII ──────────────────────────────────────────┤
  └─ STRINGS ─┬─────┤
              └─ = ─┘

(Type: Boolean, Default value: FALSE)

STRINGS = ASCII is a synonym that can be used for the ASCII option. When TRUE, the ASCII option sets the default character type to ASCII. For more information, refer to Default Character Type.

AUTOBIND Option

── AUTOBIND ───────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

If TRUE, the AUTOBIND option causes the processes of compilation and program binding to be combined into one job. During compilation, the compiler produces a set of instructions to be passed to the Binder program. In most cases, these Binder instructions are sufficient. If additional Binder instructions are required, the ALGOL <binder command> syntax can be used.

The AUTOBIND option can be assigned a value at any time during compilation. However, for the following reasons, it should be assigned a value only once, at the beginning of compilation:

  • The value of the AUTOBIND option is significant only at the end of compilation. For example, if four procedures are being compiled, the first three with the AUTOBIND option FALSE and the last with the AUTOBIND option TRUE, the Binder attempts to bind all four procedures to the specified host.

  • When the AUTOBIND option is FALSE, compile-and-go on a separate procedure is not executed. If the AUTOBIND option is TRUE throughout compilation, execution of the resulting program takes place after binding.

In ALGOL, an outer block or a separate procedure compiled at lexical (lex) level two can serve as a host for binding. Separate ALGOL procedures compiled at lex level three (the default level) or higher can be bound into a host. Any number of separate procedures, but only one host, can be compiled in one job. The host must be the last program unit compiled. If an appropriate host file is compiled with the AUTOBIND option equal to TRUE, it is assumed to be the host for binding. This assumption cannot be overridden by file equation or by use of the HOST option. If no eligible host is being compiled, a host must be specified, either by file equation of the compiler file HOST or by use of the HOST option.

The object code file of any procedure compiled at lex level three or higher with the AUTOBIND option equal to TRUE is marked as nonexecutable. To be executed, the procedure must be bound into a host file by the Binder program or invoked by a PROCESS or CALL statement.

Object code files of any procedures compiled at lex level three or higher are purged after being bound into a host by the AUTOBIND option. To be retained, such a code file must be referenced specifically in either a BIND option or an EXTERNAL option.

If the TADS option is TRUE when the AUTOBIND option is assigned the value TRUE, then the AUTOBIND option is left equal to FALSE and a warning message is given.

The process of binding might be permitted by the compiler, even if there are syntax errors in the compilation. This can occur, for example, when the host file is compiled successfully, even though none of the separate procedures succeeded. In another example, there is no host file in the compilation, but at least one of the separate procedures compiles.

Note that Binder uses a default code file title to search for external procedures if no title is provided in a BIND option. The following is an example of searching for external procedures:

BEGIN
  PROCEDURE P1; EXTERNAL;
  PROCEDURE P2; EXTERNAL;
  REAL R;
  PROCEDURE P3;
  BEGIN
  ...
  END;

...
  P1;
  P2;
  P3;
END.

This program can be compiled successfully if separate code files have been generated for the external procedures P1 and P2, and the titles match the default titles that Binder expects.

A <bind option>, for example $BIND P1, P2 FROM <codefile name>, needs to be added to this program if the external procedures P1 and P2 are compiled into one multiprocedure code file, or if they do not use Binder's default naming convention.

The default or set value of the LIBRARY option affects the separately compiled external procedures. Refer to the LIBRARY option later in this section for further information.

BEGINSEGMENT Option

── BEGINSEGMENT ───────────────────────────────────────────────────────┤

(Type: immediate)

The BEGINSEGMENT option and the ENDSEGMENT option allow the programmer to control code file segmentation. Procedures encountered between a BEGINSEGMENT option and an ENDSEGMENT option are placed in the same code segment, which is called a user segment because it is user-controlled instead of compiler-controlled.

The BEGINSEGMENT option must appear before the declaration of the first procedure to be included in the user segment. The ENDSEGMENT option must appear after the last source record of the last procedure to be included in the user segment. If the BEGINSEGMENT option is used within a procedure declaration, then it must be specified after at least one declaration in the <declaration list> within that procedure.

A procedure cannot be split across user segments. The first procedure in the user segment must be one for which the compiler would normally generate a segment; that is, it must have local declarations. External procedures cannot be declared in a user segment.

Declarations of global items other than procedures within a user segment can result in those items not being initialized. This could cause the program to get a fault at run time. Declarations of global items other than procedures should be placed outside user segments.

User segments can be nested; that is, a BEGINSEGMENT option can appear in a user segment. In this case, an ENDSEGMENT option applies to the user segment currently being compiled.

If a BEGINSEGMENT option appears before the beginning of a separately compiled procedure, an ENDSEGMENT option is assumed at the end of the procedure, even if none appears. The driver procedure created for procedures compiled at lexical level three is always in a different code segment.

The segment information in the printer listing is modified for user segments. User segments are numbered consecutively in a program, beginning with 1; that is, the first user segment is USERSEGMENT1, the second user segment is USERSEGMENT2, and so forth. The code segment number of each user segment is printed at its beginning; the length of each user segment is printed at its end. Procedures or blocks whose segmentation is overridden by user segmentation are printed out as being in that user segment.

Forward procedure declarations are not affected by user segmentation.

If more than one BEGINSEGMENT option appears before a procedure, the warning message EXTRA BEGINSEGMENT IGNORED is printed. If an ENDSEGMENT option appears and there has been no BEGINSEGMENT option, the warning message EXTRA ENDSEGMENT IGNORED is printed.

The BEGINSEGMENT option and ENDSEGMENT option allow the programmer to reduce presence-bit overhead by grouping frequently called procedures and infrequently called procedures in separate segments.

BIND Option

── BIND ──<text>───────────────────────────────────────────────────────┤

(Type: Binder command)

Note: The Binder program is case-sensitive and Binder-reserved words must be entered in upper-case letters.

During autobinding, the BIND option is passed directly to the Binder program for analysis. The format and function of this option are the same as those of the Binder BIND statement and are described in the Binder Programming Reference Manual.

BINDER Option

── BINDER ──<text>─────────────────────────────────────────────────────┤

(Type: Binder command)

Note: The Binder program is case-sensitive and Binder control options must be entered in upper-case letters.

During autobinding, the text in the BINDER option is passed directly to the Binder program for analysis. The format and function of <text> are the same as those of the Binder control options and are described in the Binder Programming Reference Manual.

BINDER_MATCH Option

<binder_match option>

── BINDER_MATCH ─┬─────┬─ ( ──<string>── , ──<string>── ) ─────────────┤
                 └─ = ─┘

(Type: Immediate)

Setting the BINDER_MATCH option adds the two strings to the object file. When two BINDER_MATCH options have identical first strings, Binder verifies that the second strings are also identical. If they are not, Binder prints an error message and the bind is aborted. Applications can use this option to verify that different object files were compiled with the same set of options. Strings must match exactly, including the use of upper- and lowercase letters.

Do not start the first string with a star (*), as this is reserved for system use only.

Multiple BINDER_MATCH options can be specified. Each is stored separately and Binder tests each separately. Having two BINDER_MATCH options in the same file with the same first string but different second strings causes a compile-time error.

BINDRPC Option

── BINDRPC ────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the BINDRPC option allows the resulting code file to be passed to the PRINTBINDXML utility to generate XML for libraries and exports. If BINDRPC is not set or is reset, then PRINTBINDXML does not generate XML. The option must be set before the first line of ALGOL source.

Customers should carefully weigh the decision before setting BINDRPC. Setting it allows .NET methods to be generated to remotely call the exports. However, the .NET code may not obey any restrictions on which exports to call, the order to call exports, or values passed. Setting the option to TRUE requires using a BINDER of level 17.1 (58.1) or later. It also increases the code file size a small amount.

CHECK Option

── CHECK ──────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the CHECK option causes an error to be given if the sequence number on a record of the SOURCE or NEWSOURCE file is not strictly greater than the sequence number of the preceding record. If a sequence error occurs in the SOURCE file, the word SEQERR, followed by the sequence number of the previous source record, is printed at the right side of the source record on the printer listing. If a sequence error occurs in the NEWTAPE file, the message NEWTAPE SEQ ERROR, followed by the sequence number of the previous source record, is printed on the listing and the message NEWTAPE SEQ ERR is displayed on the Operator Display Terminal (ODT). In the ERRORS file, the sequence number of the record that caused the sequence error and the sequence number of the previous source record appear on the line following the source record.

If the NEW option is FALSE and resequencing is occurring, the old sequence number is the sequence number that is checked.

CODE Option

── CODE ───────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

If both the LIST option and the CODE option are TRUE, the printer listing includes the compiler-generated object code. If the LIST option is TRUE but the CODE option is FALSE, the printer listing does not include the object code. The value of the CODE option is ignored if the LIST option is FALSE.

CODE_SUFFIX Option

── CODE_SUFFIX ─┬─────┬─<EBCDIC string>────────────────────────────────┤
                └─ = ─┘

(Type: Value, Default value: none or procedure name)

The CODE_SUFFIX option is used to replace the last node of a code file name with the <EBCDIC string>. The size of the string literal cannot exceed 36 characters. The result of this option must be a valid code file title or a compile-time attribute error occurs. The CODE_SUFFIX option must appear before the procedure name to take effect. If multiple CODE_SUFFIX options appear, the last valid use of the option before the procedure name is the one used by the compiler.

The CODE_SUFFIX option is most useful when the LIBRARY option is FALSE and the source file contains multiple separate procedures. If there are multiple separate procedures in a source file, the CODE_SUFFIX option must be specified for each separate procedure for which it is to be used. The option value does not persist from one procedure to the next.

CORISOL Option

── CORISOL ────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE*)

When TRUE, the CORISOL option enables the compiler to produce supplementary files with one of the following names:

  • CORISOLREPORT/SUSCEPTIBLE/<object code file name>

    If the compiler identifies potential corruption in the code file and issues the warning message POTENTIAL FOR CODE GENERATION CORRUPTION — RECOMPILATION SHOULD BE CONSIDERED AS HAVING BEEN NECESSARY., then the compiler generates a report file with this name.

  • CORISOLREPORT/CLEARED/<object code file name>

    If the compiler does not find any issues with the code file, then the compiler generates a report file with this name.

*The default value is set to TRUE only in the initial release of the following Interim Corrections (ICs):

  • ALGOL-058.1A.17

  • ALGOL-059.1A.11

  • ALGOL-060.0A.7

In all subsequent releases, the default value is set to FALSE. To acquire a list of potentially vulnerable code files in these subsequent releases, $CORISOL must be set to TRUE.

DINTEGER Option

── DINTEGER ───────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: TRUE)

When TRUE, the DINTEGER option causes number constants that are bigger than the range of type INTEGER but within the range of type DINTEGER to be considered as type DINTEGER. If FALSE, the prior behavior of considering it a real type (with rounding) is done. The rounding of the constant results in loss of precision.

A warning is issued if such a constant is found and the DINTEGER option has never been set or reset.

DONTBIND Option

── DONTBIND ──<text>───────────────────────────────────────────────────┤

During autobinding, the DONTBIND option is passed directly to the Binder program for analysis. The DONTBIND option directs the Binder not to bind a specified subprogram (procedure). In addition, the DONTBIND option can be used to suppress the binding of all external references declared by a program. The format and function of the DONTBIND option are the same as those of the Binder DONTBIND statement. For information about the DONTBIND statement, refer to the Binder Programming Reference Manual.

DUMPINFO Option

── DUMPINFO ─┬──────────────────────┬──────────────────────────────────┤
             └─<file specification>─┘

<file specification>

──┬─<title>──────────────┬─────────────────────────────────────────────┤
  ├─<internal file name>─┤
  └─<name and title>─────┘

<title>

──┬─<title>──────────────┬─────────────────────────────────────────────┤
  ├─<internal file name>─┤
  └─<name and title>─────┘

A quoted string containing a file title.

<internal file name>

──<identifier>─────────────────────────────────────────────────────────┤

<name and title>

──<internal file name>── = ──<title>───────────────────────────────────┤

(Type: special)

The DUMPINFO option is described with the LOADINFO option in this section.

ENDSEGMENT Option

── ENDSEGMENT ─────────────────────────────────────────────────────────┤

(Type: immediate)

The ENDSEGMENT option is described with the BEGINSEGMENT option in this section.

ERRLIST Option

──┬─ ERRLIST ───┬──────────────────────────────────────────────────────┤
  └─ ERRORLIST ─┘

(Type: Boolean, Default value: TRUE for CANDE-originated compiles, FALSE otherwise)

ERRORLIST is a synonym that can be used for the ERRLIST option. The ERRORLIST synonym should not be used if code is to be run through SYSTEM/PATCH.

When TRUE, the ERRLIST option causes syntax error information to be written to the ERRORS file. When a syntax error is detected in the source input, the source record that contains the error, an error message, and the syntactical item where the error occurred are written on two lines in the ERRORS file. This option is provided primarily for use when the compiler is invoked at a terminal by CANDE, but it can be used regardless of the manner in which the compiler is invoked. When the compiler is invoked from CANDE, the default value of the ERRLIST option is TRUE, and the ERRORS file is automatically equated to the remote device from which the compiler was invoked.

EXTERNAL Option

── EXTERNAL ──<text>───────────────────────────────────────────────────┤

(Type: Binder command)

During autobinding, the EXTERNAL option is passed directly to the Binder program for analysis. The format and function of this option are the same as those of the Binder EXTERNAL statement and are described in the Binder Programming Reference Manual.

FORMAT Option

── FORMAT ─────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

If both the LIST option and the FORMAT option are TRUE, then to aid readability of the printer listing, several blank lines are inserted after each procedure. If the LIST option is TRUE but the FORMAT option is FALSE, no blank lines are inserted after procedures. If the LIST option is FALSE, the value of the FORMAT option is ignored.

GO TO Option

── GO ─┬──────┬─<sequence number>──────────────────────────────────────┤
       └─ TO ─┘

<sequence number>

  ┌◄────────────┐
──┴─/8\─<digit>─┴──────────────────────────────────────────────────────┤

(Type: immediate)

The GO TO option is used to reposition the secondary source input file TAPE. This option is intended for use with disk files and does not work on tape files.

The <sequence number> construct specifies a sequence number appearing on a record in the TAPE file. The GO TO option causes the TAPE file to be repositioned so that the next record from this file used by the compiler is the first record with a sequence number greater than or equal to the specified sequence number. The TAPE file must be properly sequenced in ascending order; that is, the sequence number on each record in the file must be strictly greater than the sequence number on the preceding record. The specified sequence number can be greater than or less than the sequence number of the record on which the option appears.

This option cannot appear within a DEFINE declaration or in included source input.

HOST Option

── HOST ──<text>───────────────────────────────────────────────────────┤

(Type: Binder command)

During autobinding, the HOST option is passed directly to the Binder program for analysis. The format and function of this option are the same as those of the Binder HOST statement and are described in the Binder Programming Reference Manual.

INCLNEW Option

── INCLNEW ────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

If both the NEW option and the INCLNEW option are TRUE, included source input is written to the NEWTAPE file. If the NEW option is TRUE but the INCLNEW option is FALSE, included source input is not written to the NEWTAPE file. If the NEW option is FALSE, the value of the INCLNEW option is ignored.

INCLSEQ Option

── INCLSEQ ────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

If both the SEQ option and the INCLSEQ option are TRUE, included source input is resequenced. If the SEQ option is TRUE but the INCLSEQ option is FALSE, included source input is not resequenced. If the SEQ option is FALSE, the value of the INCLSEQ option is ignored.

INCLUDE Option

── INCLUDE ─┬──────────────────────┬─┬───────────────────────┬─────────►
            └─<file specification>─┘ └─<start specification>─┘
►─┬──────────────────────┬─────────────────────────────────────────────┤
  └─<stop specification>─┘

<start specification>

──┬─ * ───────────────┬────────────────────────────────────────────────┤
  └─<sequence number>─┘

<stop specification>

──┬─ - ──┬─<sequence number>───────────────────────────────────────────┤
  └─ TO ─┘

(Type: special)

The INCLUDE option causes the compiler to accept source language input from files other than the CARD and TAPE files. The included records are compiled in place of the record on which the INCLUDE option appears. The included records can themselves contain INCLUDE options; in this way, included source input can be nested up to five levels deep.

The <file specification> construct specifies the file from which source input is to be included. If the <title> form is used, the quoted string specifies the TITLE attribute of the file. The <title> cannot include embedded quotation marks (“). The <internal filename> form provides an internal file name that can be associated with an actual file through file equation. The <name and title> form provides both an internal file name available for file equation and a title to be used if the internal file name is not file-equated.

If the <file specification> construct is not used, the same file as that specified in the previous INCLUDE option at the same level of nesting is used. Therefore, the first INCLUDE option at any of the five possible levels of nesting must contain the <file specification> construct.

The <start specification> construct specifies the record of the included file at which inclusion is to start. If the <sequence number> form is specified, inclusion begins with the first record with a sequence number greater than or equal to the specified sequence number. If the asterisk (*) form of <start specification> is used, inclusion begins at the point where it left off the last time inclusion took place from this file at the same level of nesting. If the <start specification> construct is not used, inclusion begins with the first record of the file.

The <stop specification> construct specifies the record after which inclusion is to stop. If the <stop specification> construct is not used, inclusion ends after the last record of the file.

Source files suitable for use by the INCLUDE option can be produced by the compiler by using the NEW option.

Files declared globally in Work Flow Language (WFL) jobs should not be used as INCLUDE files.

The INCLUDE option must be the last option appearing on a compiler control record.

An include file is available that enables you to access the POSIX (Portable Operating System Interface) functionality implemented in the MCP support library. For more information on this include file and POSIX functions, see the ALGOL and MCP Interfaces to POSIX Features Programming Reference Manual.

Examples

The following example instructs the compiler to accept as input all records from the file indicated by the internal name FILE8, with a sequence number greater than or equal to 00001000 and less than or equal to 09000000.

$ INCLUDE FILE8 00001000 - 09000000

The following example instructs the compiler to accept as input a portion of the file accessed by the last INCLUDE option at this level of nesting. The records to be included are all records that follow the last record included by that preceding INCLUDE option. If, for example, the preceding INCLUDE option was the one in the first example above, the file that is accessed is FILE8, and the records that are included are all the records with a sequence number greater than 09000000.

$ INCLUDE *

The following example instructs the compiler to accept as input a portion of the file with the title SOURCE/XYZ. The included records are all records of the file with a sequence number less than or equal to 00000900.

$ INCLUDE "SOURCE/XYZ." - 900

The following example instructs the compiler to accept as input all records of either the file to which the internal name INCL was file-equatedor, if the INCL file was not file-equated, the file SYMBOL/ALGOL/INCLUDE1:

$ INCLUDE INCL = "SYMBOL/ALGOL/INCLUDE1."

INITIALIZE Option

── INITIALIZE ──<text>─────────────────────────────────────────────────┤

(Type: Binder command)

During autobinding, the INITIALIZE option is passed directly to the Binder program for analysis. The format and function of this option are the same as those of the Binder INITIALIZE statement and are described in the Binder Programming Reference Manual.

INSTALLATION Option

── INSTALLATION ─┬────────────────────────────┬────────────────────────┤
                 └─<installation number list>─┘

<installation number list>

  ┌◄──────────────────────┬──────┬───────────────────────┐
  │                       └◄─ , ─┘                       │
──┴─<installation number>─┬────────────────────────────┬─┴─────────────┤
                          └─ - ──<installation number>─┘

<installation number>

──<unsigned integer>───────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the INSTALLATION option causes the compiler to recognize one or more groups of installation intrinsics so that they can be referenced in an ALGOL program. This option must be assigned a value before the first syntactic item in a program. Assigning a value to this option at any other time has no effect.

An installation number must be an unsigned integer between 1 and 2047, inclusive. Each installation number in an installation number list must be strictly greater than the preceding installation number in that list. Installation numbers larger than 2047 are treated as if they were equal to 2047.

An INSTALLATION option with no installation number list is equivalent to one with an installation number list of 100 through 2047.

INTRINSICS Option

── INTRINSICS ─────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the INTRINSICS option causes separately compiled procedures to be compiled at lexical (lex) level two and allows a <global part> construct to appear before the procedures. These procedures can then be used as installation intrinsics. A <global part> is not normally allowed when compiling separate procedures at lex level two.

The title of the object code file generated for a procedure when the INTRINSICS option is TRUE is the same as if the procedure were compiled at lex level three. Thus, the separate procedures being compiled can be bound into the intrinsics. When the Binder program is used to bind procedures into the intrinsics, the INTRINSICS option must be assigned the value TRUE before the first source statement.

The default or set value of the LIBRARY option affects the code generation of the separately compiled procedures. Refer to the LIBRARY option later in this section for further information.

LEVEL Option

── LEVEL ──<outer level>───────────────────────────────────────────────┤

<outer level>

──<unsigned integer>───────────────────────────────────────────────────┤

(Type: Value, Default value: 2 for programs, 3 for separately compiled procedures)

The LEVEL option allows the programmer to override the lexical (lex) levels assigned by the compiler. This feature is needed when compiling separate procedures for binding to a host program. The <outer level> construct specifies the lex level at which compilation is to begin.

The LEVEL option must appear before the first syntactic item in a program.

LIBRARY Option

── LIBRARY ────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: TRUE for CANDE-originated compiles, FALSE otherwise)

When compiling multiple separate procedures (such as intrinsics), assigning TRUE to the LIBRARY option improves the efficiency of the binding. When TRUE, this option causes all object code from this compilation to be put in one file, which is marked as a multiprocedure code file. If the LIBRARY option is FALSE, each separate procedure produces its own object code file.

The LIBRARY option must appear before the first syntactic item in a program.

The LIBRARY option is unrelated to the library facility described in Library Facility.

LIMIT Option or ERRORLIMIT Option

──┬─ LIMIT ──────┬─┬─────┬─<error limit>───────────────────────────────┤
  └─ ERRORLIMIT ─┘ └─ = ─┘

<error limit>

──<unsigned integer>───────────────────────────────────────────────────┤

(Type: value, Default value: 10 for CANDE-originated compiles, 150 otherwise)

The LIMIT option allows the programmer to specify the number of compile-time errors that can occur before the compilation is terminated because of excessive errors.

A limit of 0 indicates that the program is not to be terminated for excessive errors. If, when the LIMIT option is assigned a value, the number of syntax errors already equals or exceeds that value, then the program is immediately terminated.

LINEINFO Option

── LINEINFO ───────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: TRUE for CANDE-originated compiles, FALSE otherwise)

When TRUE, the LINEINFO option causes the compiler to associate sequence number information with the object code. This information is then displayed in the event of a run-time error. A larger code file is generated if the LINEINFO option is TRUE than if it is FALSE.

LIST Option

── LIST ───────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE for CANDE-originated compiles, TRUE otherwise)

When TRUE, the LIST option causes source input from the CARD and TAPE files and other information to be printed on the compiler LINE file.

When a value is assigned to the LIST option, the same value is assigned to the SEGS option.

LISTDELETED Option

── LISTDELETED ────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When both the LIST option and the LISTDELETED option are TRUE, the printer listing includes records from the secondary input file TAPE that are replaced, voided, or deleted during the compilation. The word REPLACED appears to the right of the source records replaced by a record from the primary input file, CARD; the word VOIDT appears if the record is voided from the TAPE file by the VOIDT option; and the word DELETED appears if the record is deleted by a compiler control record that consists of a dollar sign ($) followed by all blanks.

If the LIST option is TRUE but the LISTDELETED option is FALSE, records from the TAPE file that are replaced, voided, or deleted are not written to the printer listing. If the LIST option is FALSE, the value of the LISTDELETED option is ignored.

LISTDOLLAR Option

── LISTDOLLAR ─────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

If both the LIST and the LISTDOLLAR option are TRUE, the printer listing includes all compiler control records. If the LIST option is TRUE but the LISTDOLLAR option is FALSE, only compiler records with a double dollar sign ($$) appear in the printer listing. If the LIST option is FALSE, the value of the LISTDOLLAR option is ignored.

LISTINCL Option

── LISTINCL ───────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When both the LIST option and the LISTINCL option are TRUE, source records included by using the INCLUDE option are written to the printer listing. If the LIST option is TRUE but the LISTINCL option is FALSE, the included records are not written to the printer listing. If the LIST option is FALSE, the value of the LISTINCL option is ignored.

LISTOMITTED Option

── LISTOMITTED ────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: TRUE)

When both the LIST option and the LISTOMITTED option are TRUE, source records omitted by the OMIT option are written to the printer listing. In the listing, the word OMIT appears next to the sequence number of each omitted record. If the LIST option is TRUE but the LISTOMITTED option is FALSE, omitted records are not written to the printer listing. If the LIST option is FALSE, the value of the LISTOMITTED option is ignored.

LISTP Option

── LISTP ──────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the LISTP option causes records from the primary source input file, CARD, to be written to the printer listing. Because these records are also written when the LIST option is TRUE, the LISTP option is effective only when the LIST option is FALSE.

LI_SUFFIX Option

── LI_SUFFIX ─┬─────┬─┬─<EBCDIC string>─┬──────────────────────────────┤
              └─ = ─┘ └─ PROCEDURE ─────┘

(Type: Value, Default value: none)

The LI_SUFFIX option appends the EBCDIC string to the sequence number in the lineinfo information. The size of the string literal cannot exceed 36 characters. This option is meaningful only when the LINEINFO option is TRUE.

PROCEDURE appends an underscore and the procedure name to the sequence number in the LINEINFO information. It takes effect with the next procedure that occurs. The procedure name is truncated if it is longer than 35 characters.

The value of the LI_SUFFIX option is applied to all sequence numbers until the option is RESET or the option is given a different value. If the option is RESET, no string is associated with the remaining sequence numbers.

If a program failure occurs and the LINEINFO compiler option was set when the program was compiled, a series of sequence numbers are displayed identifying the sequence number at which the program failed. If the LI_SUFFIX compiler option was used, the string associated with the program is displayed after that sequence number. This action permits easy identification of the source file or files associated with the displayed sequence numbers.

LOADINFO Option

── LOADINFO ─┬──────────────────────┬──────────────────────────────────┤
             └─<file specification>─┘

(Type: special)

The DUMPINFO option and the LOADINFO option make it possible for the contents of certain simple variables and arrays of the compiler to be saved in a disk file and subsequently reloaded for separate compilation.

The <file specification> construct specifies the file to be created by the DUMPINFO option or loaded by the LOADINFO option. If the <title> form is used, the quoted string specifies the TITLE attribute of the file. The title cannot include embedded quotation marks (“). The <internal file name> form provides an internal file name that can be associated with an actual file by file equation. The <name and title> form provides both an internal file name available for file equation and a title to be used if the internal file name is not file-equated. If the <file specification> construct is not used, the default INFO file or the file that is file-equated to the INFO file is used.

These options are used in conjunction with separate compilation of procedures. Typically, all global declarations are compiled, and then the DUMPINFO option is used to dump information about the global declarations from the compiler to the file INFO. When the separate procedures are to be compiled, the file INFO, containing information about all of the global declarations, is read in by the LOADINFO option before the procedures are compiled. When the XREF option or XREFFILES option is set, the cross-reference information available at the time of a DUMPINFO is saved. If the option is set when a LOADINFO is done, that cross-reference information will be loaded and available for use with any new cross-reference information created in the separate compilation of procedures. For example, consider the following programs:

Program 1

BEGIN
   <global declarations>
 $ DUMPINFO
END.

Program 2

%%% LOAD THE GLOBALS
[
 $ LOADINFO
   <additional global declarations>
]
<separate PROCEDURE declarations>

Each time a loadinfo operation is done, the old information in the affected variables and tables of the compiler is discarded. Thus, compiling different portions of the same program, even if they are in different environments, can be done in the same compilation.

The loadinfo operation changes all items in the INFO file to globals and all procedures already compiled to forward PROCEDURE declarations. Thus, an INFO file created by a DUMPINFO operation that is done immediately before a PROCEDURE declaration in a normal compilation is suitable for loading global declarations when that procedure is to be compiled separately.

When two or more items with the same identifier are declared at different lexical (lex) levels, a separate compilation can access only the last declaration seen before the loadinfo operation occurred.

If the release level of the compiler that performs the dumpinfo operation to create an INFO file and the release level of the compiler that performs the loadinfo operation on that file are not the same, a syntax error is given, and the compilation is discontinued. If a loadinfo operation is attempted and the file specified as the INFO file is not in fact an INFO file, or the INFO file was created by a compiler for a different language, a syntax error is given and the compilation is discontinued.

The DUMPINFO option and LOADINFO option must be the last options appearing on a compiler control record.

MCP Option

── MCP ────────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the MCP option causes all value arrays, translate tables, truth sets, and constant pools to be allocated at lexical (lex) level two.

The MCP option cannot be assigned a value after the appearance of the first syntactical item in a program.

MERGE Option

── MERGE ──────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the MERGE option causes the primary source input file, CARD, to be merged with a secondary source input file, TAPE, to form the input to the compiler. If matching sequence numbers occur, the record from CARD overrides the record from TAPE. If the MERGE option is FALSE, only primary source input is used, and the TAPE file is ignored.

The total input to the compiler when the MERGE option is TRUE consists of all records from the CARD file, all records from the TAPE file that do not have sequence numbers identical to those on records in the CARD file, and all records inserted by INCLUDE options. Records in the CARD file also override INCLUDE options in the TAPE file if matching sequence numbers are encountered.

NEW Option

── NEW ────────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When the NEW option is TRUE, the source input to the compiler from the CARD file is written to the updated source output file NEWTAPE. If the MERGE option is also TRUE, then the merged source input from the CARD and TAPE files is written to NEWTAPE. The format of the file written to NEWTAPE is such that it can later be used as input to the compiler.

Records included in the source input by the INCLUDE option are written to the NEWTAPE file only if the INCLNEW option is also TRUE. Compiler control records are written to the NEWTAPE file only if the initial dollar sign ($) does not appear in column 1.

The NEWTAPE file is created whether or not syntax errors occur in the source input.

NEWSEQERR Option

── NEWSEQERR ──────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the NEWSEQERR option causes an error to be given if the sequence number on a record of the NEWTAPE file is not strictly greater than the sequence number of the preceding record. If sequence errors occur and the NEWSEQERR option is TRUE, the NEWTAPE file is not locked, the message NEWTAPE NOT LOCKED is displayed on the Operator Display Terminal (ODT), and the message NEWTAPE NOT LOCKED <number of errors> NEWTAPE SEQUENCE ERRORS is printed on the printer listing. The NEWSEQERR option is effective even if the CHECK option is FALSE.

NOBINDINFO Option

── NOBINDINFO ─────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the NOBINDINFO option prevents information needed by the Binder program from being written to the object code file. The resulting object code file can be executed, but it cannot be used as an input file to the Binder program. Object code files that do not contain binding information (bindinfo) are smaller than object code files that contain bindinfo.

The Binder program cannot bind object code files that contain the timing code necessary for statistics; therefore, if the NOBINDINFO option is FALSE when the STATISTICS option is assigned the value TRUE, the NOBINDINFO option is assigned the value TRUE and a warning message is given. If the STATISTICS option is TRUE when the NOBINDINFO option is assigned the value FALSE, a syntax error is given.

NOSTACKARRAYS Option

── NOSTACKARRAYS ──────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the NOSTACKARRAYS option prevents arrays from being allocated within the stack.

When the NOSTACKARRAYS option is FALSE, the data from certain arrays is allocated within the stack. Such arrays are referred to as in-stack arrays, and can be accessed slightly faster than an array whose data area is allocated in memory.

NOXREFLIST Option

── NOXREFLIST ─────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the NOXREFLIST option prevents the SYSTEM/XREFANALYZER program from being initiated by the compiler when cross-reference information is being saved (that is, when either the XREF option or the XREFFILES option is TRUE). Instead, the file XREF/<code file name>, where <code file name> is the name of the object code file generated by the compiler, remains on disk. SYSTEM/XREFANALYZER can be run later using the file XREF/<code file name> as input. The NOXREFLIST option has no effect if both the XREF option and the XREFFILES option are FALSE.

For more information on cross-referencing, refer to the description of the XREF option later in this section.

OMIT Option

── OMIT ───────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the OMIT option causes records from the CARD file (and, if the MERGE option is TRUE, from the TAPE file) to be ignored (not compiled). If both the LIST option and the LISTOMITTED option are TRUE, then in the printer listing, the word OMIT appears next to the sequence number of each omitted record. When the OMIT option is TRUE, compiler control records with the initial dollar sign ($) in either column 1 or column 2 are recognized, but compiler control records with the $ in columns 3 through 72, inclusive, are ignored.

Example

In the following example, neither NOLIBRARY nor LINKBYTITLE is set. The OMIT option is FALSE until $SET OMIT=NOT LINKBYTITLE is encountered, which is when it is set to TRUE. As a result, the compiler control record $POP OMIT % NOT LINKBYTITLE is ignored, causing the line containing a semi-colon (;) to be omitted.

BEGIN
 $SET OMIT=NOLIBRARY
LIBRARY
  $SET OMIT=LINKBYTITLE
   LIBA (LIBACCESS=BYFUNCTION, FUNCTIONNAME="MYLIB.")
  $POP OMIT % LINKBYTITLE
  $SET OMIT=NOTLINKBYTITLE
   LIBA (LIBACCESS=BYTITLE, TITLE="SYSTEM/MYLIB.")
  $POP OMIT % NOT LINKBYTITLE
 ;
 $POP OMIT % NOLIBRARY
DISPLAY ("Example of OMIT option.");
END.

OPTIMIZE Option

── OPTIMIZE ───────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the OPTIMIZE option causes additional analysis of Boolean expressions to be performed, and object code is generated to permit early termination of the expression evaluation. Any portion of the Boolean expression that could cause side effects is always evaluated.

PAGE Option

── PAGE ───────────────────────────────────────────────────────────────┤

(Type: immediate)

When the LIST option is TRUE and the PAGE option appears, the printer listing is spaced to the top of the next page.

PARAMCHECK Option

── PARAMCHECK ─────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the PARAMCHECK option causes the compiler to report, as a syntax error, the redeclaration of a formal parameter of a procedure, within the outer block of the procedure. This permits the user to see where a formal parameter has been rendered inaccessible to the procedure.

PURGE Option

── PURGE ──<text>──────────────────────────────────────────────────────┤

(Type: Binder command)

During autobinding, the PURGE option is passed directly to the Binder program for analysis. The format and function of this option are the same as those of the Binder PURGE statement and are described in the Binder Programming Reference Manual.

SEGDESCABOVE Option

── SEGDESCABOVE ─┬────────────────────┬────────────────────────────────┤
                 └─<unsigned integer>─┘

(Type: value, Default value: none)

The SEGDESCABOVE option is used when compiling large programs that may have difficulty in addressing the segment dictionary.

When a host program is compiled, this option causes all code segment descriptors to be allocated starting at the word in the D1 stack specified by the unsigned integer. The unsigned integer must be in the range 4 to 4095, inclusive. If the option is used after the first syntactic item has been compiled, the given value is added to the current size of the D1 stack. The Binder program preserves the segdescabove specification. Care should be taken when using this option, because unused D1 stack locations below the code segment descriptors occupy save memory when the program is running.

This option is intended to be used when compiling host files and is ignored when separate procedures are compiled.

SEGS Option

── SEGS ───────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE for CANDE-originated compiles, TRUE otherwise)

If both the LIST option and the SEGS option are TRUE, the printer listing will contain beginning and ending segment messages. Assigning a value to the LIST option assigns the same value to the SEGS option. However, to suppress the segment messages, the SEGS option can be assigned the value FALSE even though the LIST option is TRUE. When the value of the LIST option is FALSE, the value of the SEGS option is ignored.

SEQ Option

──┬─ SEQ ──────┬─┬─────────────────┬─┬───────────────────────────┬─────┤
  └─ SEQUENCE ─┘ ├─<sequence base>─┤ └─ + ──<sequence increment>─┘
                 └─ LINENUMBER ────┘

<sequence base> <sequence increment>

  ┌◄────────────┐
──┴─/8\─<digit>─┴──────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

SEQUENCE is a synonym that can be used for the SEQ option. The SEQUENCE synonym should not be used if the code is to be run through SYSTEM/PATCH.

When TRUE, the SEQ option causes the printer listing and the updated source file, NEWSOURCE, to contain new sequence numbers. These new sequence numbers are determined by the current values of the sequence increment and the sequence base or LINENUMBER.

The SEQ option is effective only when the LIST option or NEW option is TRUE. The sequence numbers that appear on the records in these files when the SEQ option is FALSE are identical to the sequence numbers on the corresponding records in the input files.

The sequence base specifies the sequence number that is to be assigned to the next record. LINENUMBER assigns the corresponding record sequence number from the input file to the next record. LINENUMBER is especially useful when creating xreffiles for a NEWSOURCE file, which contains INCLUDE files with INCLNEW set to TRUE.

The value of the sequence increment is used to increment the value of the sequence base or LINENUMBER after each record is resequenced.

SEQERR Option

── SEQERR ─────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the SEQERR option causes an error to be given if the sequence number on a record of the TAPE file is not strictly greater than the sequence number of the preceding record. If sequence errors occur and the SEQERR option is TRUE, the object code file is not locked, the message CODE FILE NOT LOCKED is displayed on the Operator Display Terminal (ODT), and the message CODE FILE NOT LOCKED <number of errors> TAPE SEQUENCE ERRORS is printed on the printer listing. The SEQERR option is effective even when the CHECK option is FALSE.

SHARING Option

── SHARING ── = ─┬─ DONTCARE ────────┬─────────────────────────────────┤
                 ├─ PRIVATE ─────────┤
                 ├─ SHAREDBYALL ─────┤
                 └─ SHAREDBYRUNUNIT ─┘

(Type: value, Default value: DONTCARE)

The SHAREDBYRUNUNIT value supports a feature of standard COBOL, and outside of a run unit as defined by the COBOL standard, its use is discouraged. In most instances, a SHARING option value of SHAREDBYALL or PRIVATE is preferable.

The SHARING option is used in a library program to specify how other programs are to share the library.

DONTCARE

If the SHARING option has the value DONTCARE, the operating system determines the sharing, and it is unknown to all users invoking the library. DONTCARE is the default value of the SHARING option.

PRIVATE

If the SHARING option has the value PRIVATE, a separate instance of the library is started for each invocation of the library. Any changes made to global items in the library by a block that invoked the library apply only to that user of the library.

SHAREDBYALL

If the SHARING option has the value SHAREDBYALL, all invocations of the library share the same instance of the library. Any changes made to global items in the library by a block that has invoked the library apply to all users of that library.

SHAREDBYRUNUNIT

A run unit consists of a program, all SHAREDBYRUNUNIT libraries it initiates directly, and any SHAREDBYRUNUNIT libraries initiated when code from another frozen library runs on the stack of the program.

Note that a library is its own run unit until it freezes. For example, program P initiates library A and, before library A freezes, it in turn initiates library B. Now library B is in library A's run unit, not in program P's run unit. Had library A initiated library B after freezing, both library A and library B would be in program P's run unit.

The SHARING option must appear before the first syntactic item in the program.

SINGLE Option

── SINGLE ─────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: TRUE if the compiler was compiled with the DOUBLESPACE compiler-generation option equal to FALSE, FALSE otherwise)

When TRUE, the SINGLE option causes the printer listing to be single-spaced. When FALSE, the SINGLE option causes the printer listing to be double-spaced.

STACK Option

──┬─ STACK ─┬──────────────────────────────────────────────────────────┤
  └─ MAP ───┘

(Type: Boolean, Default value: FALSE)

MAP is a synonym that can be used for the STACK option.

If both the LIST option and the STACK option are TRUE, the printer listing includes the relative stack addresses, in the form of address couples, for all program variables. If the LIST option is TRUE but the STACK option is FALSE, the printer listing does not contain these address couples. The value of the STACK option is ignored if the LIST option is FALSE.

STATISTICS Option

── STATISTICS ─┬──────────────────────────────────────┬────────────────┤
               │     ┌◄─────────── , ───────────┐     │
               └─ ( ─┴─┬─────────┬─┬─ LABELS ─┬─┴─ ) ─┘
                       ├─ SET ───┤ └─ PBITS ──┘
                       └─ RESET ─┘

(Type: Boolean, Default value: FALSE)

When TRUE, the STATISTICS option causes timing statistics to be gathered. The option is examined at the beginning of each procedure or block and, if it is TRUE at that time, timing statistics are gathered for that procedure or block. Although the value of the option can be altered at any time, only its value at the beginning of procedures and blocks is significant in determining whether timings are made.

The Binder program cannot bind object code files that contain the timing code necessary for statistics; therefore, if the NOBINDINFO option is FALSE when the STATISTICS option is assigned the value TRUE, the NOBINDINFO option is assigned the value TRUE and a warning message is given. If the STATISTICS option is TRUE when the NOBINDINFO option is assigned the value FALSE, a syntax error is given.

If statistics are taken for a procedure or block, the frequency of execution of that procedure or block is measured, along with the length of time spent in that procedure or block. When the program is completed for any reason, including both normal and abnormal termination, the statistics of the executing task are printed out to the TASKFILE.

On the statistics output listing, an asterisk (*) indicates that doubt exists about the timing for the specific procedure whose name precedes the asterisk. In addition, timings are invalid for any procedure or block that is resumed by a bad GO TO.

Statistics on presence bit actions can be accumulated by specifying SET PBITS as the statistics option. The PBITS option can be SET and RESET in various places in the program.

For each block, the statistics report contains the first 25 characters of the identifiers, the processor time accumulated for the block, the number of times the block is executed, and the average time spent per entry. If PBITS is invoked, the report also contains the number of initial and other presence bit operations.

Using the STATISTICS option, especially when PBITS is specified, can significantly increase the amount of code generated for each specified block. This, in turn, can cause a SEGMENT TOO LARGE error. To avoid this error, reduce the amount of code enclosed by each BEGINSEGMENT/ENDSEGMENT pair. Or, if the program segmentation is not user-controlled, force part of the block into a new segment by enclosing that part of the code in a block. For more information on program segmentation, refer to the BEGINSEGMENT option earlier in this section.

For any procedure or block that has statistics gathered, the timings can be broken down to the label level within that procedure or block by using the LABELS syntax. The word LABELS can be preceded by SET or RESET; if both are omitted, SET is assumed. For example, the following begins timing of label breakpoints:

$ SET STATISTICS (LABELS)

The following ends timing of label breakpoints:

$ SET STATISTICS (RESET LABELS)

The words SET or RESET inside the parentheses affect only the LABELS specification.

STOP Option

── STOP ──<text>───────────────────────────────────────────────────────┤

(Type: Binder command)

During autobinding, the STOP option is passed directly to the Binder program for analysis. The format and function of this option are the same as those of the Binder STOP statement and are described in the Binder Programming Reference Manual.

TADS Option

── TADS ─┬─────────────────────────────────────────────────┬───────────┤
         │     ┌◄───────────────── , ────────────────┐     │
         └─ ( ─┴─┬─/1\─ FREQUENCY ─────────────────┬─┴─ ) ─┘
                 └─/1\─ REMOTE ──<file identifier>─┘

(Type: Boolean, Default value: FALSE)

When the TADS option is TRUE, special debugging code and tables are generated as part of the object code file. The tables are generated to support the symbolic debugging environment of the ALGOL Test and Debug System (TADS). For more information on ALGOL TADS, refer to the ALGOL Test and Debug System (TADS) Programming Guide.

The FREQUENCY option causes additional code and tables to be generated for coverage and frequency analysis. This option must be specified if either the TADS FREQUENCY command or the TADS COVERAGE command is to be used to determine the number of times individual statements have been executed or which statements have not been executed. If the TADS FREQUENCY option is set at the point of the first syntactical element, then the TADS option cannot be used anywhere within the program. This restriction explicitly prohibits the use of $SET/RESET TADS.

The REMOTE option allows TADS to share a remote file with the program being tested. Sharing a file might be necessary, because only one remote input file can be open for each station. A remote file shared with TADS cannot be explicitly opened by the program or an OPEN ERROR results and a FILE NOT CLOSED error message is displayed. If specified, the <file identifier> must correspond to a file identifier declared in a FILE declaration occurring later in the outer block of the program. The file must have the attributes KIND equal to REMOTE, UNITS equal to CHARACTERS, and FILEUSE equal to IO. The MAXRECSIZE attribute must not be less than 72. The file must not be declared to be a direct file.

If the AUTOBIND option is TRUE when the TADS option is assigned the value TRUE, then the TADS option is assigned the value FALSE and a warning message is given. Programs compiled with the TADS option equal to TRUE cannot assign TRUE to the AUTOBIND option, and they cannot be used as input files to the Binder program.

The interaction between the outer lexicographical level and the TADS option is as follows:

  • If the LEVEL option has not been encountered when the TADS option is set to TRUE, the outer lexicographical level of the program is set to 2 and the code file produced contains TADS code.

  • If the LEVEL option is not equal to 2 when the TADS option is set to TRUE, the TADS option is assigned the value FALSE and the warning message TADS CANNOT BE SET WITH A LEVEL > 2 is given. The code file produced does not contain TADS code.

  • If the TADS option is TRUE when the LEVEL option is assigned a value not equal to 2, the warning message A LEVEL > 2 IS INVALID WHEN TADS IS SET is given, the LEVEL option is ignored, and the code file produced contains TADS code.

The TADS compiler control option must appear before the first syntactic item in a program. When the TADS compiler control option is enabled before the first source statement, TADS can be set or reset throughout a program, with the following exceptions:

  • Within procedure declarations

  • Within DEFINE statements

  • Within declaration lists

  • Within assignment statements

Note: It is a best practice to avoid placing the TADS compiler control option in the middle of a statement with multiple lines.

Excluding portions of a program from TADS analysis provides flexibility, and can allow programs that are otherwise too large to use TADS to be used in a test and debug session. When TADS is set at the beginning of the program, but is reset throughout the rest of the program, there is no TADS session. The two options, FREQUENCY and REMOTE, are only available within the first TADS statement.

TARGET Option

The TARGET option generates code suited for a specific computer system or group of systems and should be used to specify all machines on which the code file needs to run. The generated code file can be used on all the machines specified in the TARGET option.

── TARGET ── = ──<primary identifier>──────────────────────────────────►
  ┌◄───────────────── , ─────────────────┐
►─┴─┬──────────────────────────────────┬─┴─────────────────────────────┤
    └─ ( ──<secondary identifier>── ) ─┘

<primary identifier>

──<target identifier>──────────────────────────────────────────────────┤

<secondary identifier>

──<target identifier>──────────────────────────────────────────────────┤

(Type: Value, Default value: installation-defined)

See the COMPILERTARGET system command in the System Commands Reference for a complete list of target identifier values that are allowed.

The code file generated is optimized for the machine or group of machines identified by the primary identifier, subject to the compatibility constraints of the machine or group of machines identified by the secondary identifier. That is, the code file is optimized for the machine or machines listed as the primary identifier, but no operator is generated that is not supported by all the machines listed as secondary identifiers.

The TARGET option must appear before the first record that is not a compiler control record in the source program.

The default TARGET option is installation defined. For information on the way an installation defines the default target computer family, refer to the System Commands Reference.

TIME Option

── TIME ───────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the TIME option causes trailer information, such as the number of errors, the number of code segments, and the compilation time, to be printed on the printer listing. Because this trailer information is also printed when the LIST option is TRUE, the value of the TIME option is effective only when the LIST option is FALSE.

TIME6CHECK Option

── TIME6CHECK ──┬───────────────────────────────┬───────────────────────┤
                └─ ( ─┬─────────┬─ T206 ──── ) ─┘
                      ├─ SET ───┤
                      └─ RESET ─┘ 

(Type: Boolean, Default value: FALSE)

When FALSE, the compiler issues the following warning message:

CALL TO TIME(6), TIME(16), TIME(36), TIME(56), TIME(60), 
TIME(106), TIME(116), TIME(136), TIME(156):
USE OF THIS TIME PARAMETER NEEDS TO BE CONSIDERED FOR REVISION.
FOR MORE INFORMATION SEE PLE 19208613.

The TIME intrinsic parameter values identified above result in MCP warnings 202 or 203 when passed and executed. For more information on this warning, refer to PLE 19208613.

When TRUE, the TIME6CHECK option issues the same text for warnings 202 or 203 but is treated as an error message as opposed to a warning message.

When both the TIME6CHECK option and the T206 sub-option are TRUE, the compiler issues the following error message:

CALL TO TIME(206):
USE OF THIS TIME PARAMETER NEEDS TO BE CONSIDERED FOR
REVISION. FOR MORE INFORMATION SEE PLE 19208613.

If the T206 sub-option is TRUE and the TIME6CHECK option is FALSE, the compiler issues the same message, but as a warning rather than an error. This warning message occurs for each instance identified.

The default values of the TIME6CHECK option and T206 sub-option might change in a future release.

USE Option

── USE ──<text>────────────────────────────────────────────────────────┤

(Type: Binder command)

During autobinding, the USE option is passed directly to the Binder program for analysis. The format and function of this option are the same as those of the Binder USE statement and are described in the Binder Programming Reference Manual.

USER Option

──<identifier>─────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

If an identifier on a compiler control record is not recognized as one of the predefined options, it is considered to be a user option. A user option can be manipulated exactly like any other Boolean option; that is, it can be assigned values by using the SET, RESET, and POP keywords. In addition, it can be used in option expressions to assign values to standard Boolean options or to other user options.

VERSION Option

──┬─<replace version>─┬────────────────────────────────────────────────┤
  └─<append version>──┘

<replace version>

── VERSION ──────<version increment>── . ───────<cycle increment>─────►
►─┬─────────────────────┬──────────────────────────────────────────────┤
  └─ . ──<patch number>─┘

<version increment>

  ┌◄──/1\───┐
──┴─<digit>─┴──────────────────────────────────────────────────────────┤

<cycle increment>

  ┌◄──/2\───┐
──┴─<digit>─┴──────────────────────────────────────────────────────────┤

<patch number>

  ┌◄──/3\───┐
──┴─<digit>─┴──────────────────────────────────────────────────────────┤

<append version>

── VERSION ── + ──<version increment>── . ── + ──<cycle increment>─────►
►─┬─────────────────────┬──────────────────────────────────────────────┤
  └─ . ──<patch number>─┘

(Type: value, Default value: 00.000.0000)

The VERSION option allows the user to specify an initial version number for a program, replace an existing version number, or append to an existing version number. A VERSION option seen in an INCLUDE file is not replaced in the NEWTAPE file, but otherwise it is treated as a part of the TAPE file.

If the NEW option is TRUE, a VERSION option appears in the TAPE file, and the CARD file contains a <replace version> or <append version>, then the VERSION option record in the NEWTAPE file is updated with the version, cycle, and patch number in the last VERSION option record in the CARD file. The sequence number of the VERSION option in the CARD file must be less than the sequence number of the VERSION option in the TAPE file. If the NEW option is TRUE, a VERSION option appears in the TAPE file, and the CARD file does not contain a VERSION option, then the VERSION option record in the NEWTAPE file is updated with the version, cycle, and patch number in the first VERSION option record in the TAPE file.

The functions COMPILETIME(20), COMPILETIME(21), and COMPILETIME(22) allow a programmer to access the current version, cycle, and patch numbers, respectively. For more information, see COMPILETIME Function.

Examples

The following example sets the current version to 25.010.0010.

$ VERSION 25.010.0010

The following example increments the current version by 01 in the version increment, by 001 in the cycle increment, and assigns 0010 to the patch number. For example, if the existing version is 25.010.0005 and this VERSION option is compiled, the resulting version is 26.011.0010.

$ VERSION +01.+001.010

VOID Option

── VOID ───────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the VOID option causes all source input other than compiler control records from both the TAPE and CARD files to be ignored by the compiler until the VOID option is assigned the value FALSE. The ignored source input is neither listed nor included in the updated source file, regardless of the values of the LIST option and the NEW option. Once the VOID option is assigned TRUE, it can be assigned FALSE only by a compiler control record in the CARD file.

VOIDT Option

──┬─ VOIDT ──┬─────────────────────────────────────────────────────────┤
  └─ DELETE ─┘

(Type: Boolean, Default value: FALSE)

DELETE is a synonym that can be used for the VOIDT option.

If the MERGE option is TRUE and the VOIDT option is TRUE, all source input from the TAPE file is ignored by the compiler until the VOIDT option is assigned the value FALSE. Therefore, while the VOIDT option is TRUE, only primary source input from the file CARD is compiled. The ignored input is neither listed nor included in the updated source file, regardless of the values of the LIST option and the NEW option. Once the VOIDT option is assigned TRUE, it can be assigned FALSE only by a compiler control record in the CARD file. If the MERGE option is FALSE, the value of the VOIDT option is ignored.

WAITIMPORT Option

── WAITIMPORT ─────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, an IMPORTED EVENT that is declared in a CONNECTION BLOCK can be used as an event designator in an event list for a WAIT or WAITANDRESET statement. A value cannot be assigned to the WAITIMPORT option after the first syntactical item in a program.

WARNSUPR Option

── WARNSUPR ───────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the WARNSUPR option prevents warning messages from being given.

WRITEAFTER Option

── WRITEAFTER ─────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

The WRITEAFTER option provides the ability to designate whether carriage control is performed before or after a write operation. The option can be assigned values repeatedly in order to select before-write or after-write carriage control for individual files and I/O statements.

Normally in ALGOL, carriage control is performed following a write operation.

Carriage control is done before a particular write operation if the WRITEAFTER option is TRUE when the I/O statement is compiled or if the I/O statement explicitly references a file whose declaration was compiled when the WRITEAFTER was TRUE.

For disk files, notwithstanding any value of the WRITEAFTER option, the carriage control action is always taken before a nonbinary write operation.

The WRITEAFTER option does not apply to direct files or direct I/O statements.

XDECS Option

── XDECS ──────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: TRUE if either the XREF option or the XREFFILES option is TRUE, FALSE otherwise)

When the compiler is saving cross-reference information because the XREF option or the XREFFILES option is TRUE, only identifiers declared while the XDECS option is TRUE are included in the cross-reference information. This option is assigned TRUE when the XREF option or the XREFFILES option is assigned TRUE and can be assigned a value as many times as desired. If the XDECS option is assigned the value TRUE and both the XREF option and the XREFFILES option are FALSE, the XDECS option is assigned FALSE and a syntax error is given.

For more information on cross-referencing, refer to “XREF Option” later in this section.

XREF Option

── XREF ─┬─────────────┬───────────────────────────────────────────────┤
         └─<linewidth>─┘

<linewidth>

An integer between 72 and 160.

(Type: Boolean, Default value: FALSE)

Depending on the values of several related compiler control options, the compiler optionally generates cross-reference information containing an alphabetized list of identifiers that appear in the program and, for each identifier, the type of the item named by that identifier, the sequence number of the source input record on which the identifier is declared, the sequence numbers of the input records on which the identifier is referenced, and other relevant information. The following factors can be controlled through the use of compiler control options:

  • Whether or not the compiler saves cross-reference information as it is processing the source input

  • Which identifiers and which references to these identifiers are cross-referenced

  • Whether or not the SYSTEM/XREFANALYZER program is initiated automatically by the compiler

  • If SYSTEM/XREFANALYZER is automatically initiated, whether it is to produce printed output, disk files suitable for input to SYSTEM/INTERACTIVEXREF and the Editor, or both.

The compiler saves cross-reference information if either the XREF option or the XREFFILES option or both options are TRUE. This information is discarded if any syntax errors occur during compilation. If used, these options should be assigned TRUE before any source input has been processed. Once assigned TRUE, these options cannot be assigned FALSE.

The identifiers and their references to be cross-referenced can be selected by the XDECS option and the XREFS option, respectively. Neither of these options can be used if cross-reference information is not being saved by the compiler (that is, if both the XREF option and the XREFFILES option are FALSE).

When the compiler is saving cross-reference information, this information is written to a disk file in raw form. Before this information can be printed or read by SYSTEM/INTERACTIVEXREF and the Editor, it must be analyzed by SYSTEM/XREFANALYZER. If the NOXREFLIST option is FALSE, the compiler automatically initiates SYSTEM/XREFANALYZER to process the raw cross-reference file. If the NOXREFLIST option is TRUE, SYSTEM/XREFANALYZER is not initiated, and the compiler's raw file is left on disk with the title "XREF/<code file name>", where <code file name> is the name of the object code file produced by the compiler; this file can be analyzed at a later time by running SYSTEM/XREFANALYZER directly.

If the compiler initiates SYSTEM/XREFANALYZER (that is, if the NOXREFLIST option is FALSE), the program produces either a printed listing or a pair of disk files suitable for the Editor and SYSTEM/INTERACTIVEXREF. If the XREF option is TRUE, a listing is produced. If the XREFFILES option is TRUE, the pair of disk files is produced; these files are titled XREFFILES/<code file name>/XREFS and XREFFILES/<code file name>/XDECS. If both the XREF option and the XREFFILES option are TRUE, both a listing and the disk files are produced.

If USERBACKUPNAME is set for the compiler's LINE file and the compiler calls XREFANALYZER to generate a crossreference listing, the file name of the LINE file used by XREFANALYZER is the file name of the compiler's LINE file with the node /XREFLIST appended.

The line width, in characters, of the listing produced by SYSTEM/XREFANALYZER can be specified by the <linewidth> construct. If not specified, the line width is 132.

User options are included in the cross-reference information.

XREFFILES Option

── XREFFILES ──────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the XREFFILES option causes cross-reference information to be saved by the compiler and causes the SYSTEM/XREFANALYZER program, if the NOXREFLIST option is FALSE, to produce files that can be used by the Editor and SYSTEM/INTERACTIVEXREF. These files have the titles XREFFILES/<code file name>/DECS and XREFFILES/<code file name>/REFS, where <code file name> is the name of the object code file that the compiler is generating.

For more information on cross-referencing, refer to “XREF Option” earlier in this section.

XREFS Option

── XREFS ──────────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: TRUE if either the XREF option or the XREFFILES option is TRUE, FALSE otherwise)

When the compiler is saving cross-reference information because the XREF option or the XREFFILES option is TRUE, only identifier references that are encountered while the XREFS option is TRUE are included in the cross-reference information. This option is assigned TRUE when the XREF option or the XREFFILES option is assigned TRUE, and it can be assigned a value as many times as desired. If the XREFS option is assigned the value TRUE when both the XREF option and the XREFFILES option are FALSE, then the XREFS option is assigned FALSE and a syntax error is given.

For more information on cross-referencing, refer to “XREF Option” earlier in this section.

XREFWAIT Option

── XREFWAIT ───────────────────────────────────────────────────────────┤

(Type: Boolean, Default value: FALSE)

When TRUE, the XREFWAIT option causes the compiler to wait for the SYSTEM/XREFANALYZER external program to complete before the compiler terminates.