IDENT

 CDEC$ IDENT string

The IDENT directive lets you specify a string that can be used to identify an object module. The compiler places the string in the identification field of an object module when it generates the module for each source program unit. The string that you specify can consist of a group of up to 31 printable characters delimited by apostrophes.

Only the first IDENT directive is effective -- the compiler ignores any additional IDENT directives in a program unit.

OPTIONS

 CDEC$ OPTIONS

The OPTIONS directive controls whether the DEC Fortran compiler naturally aligns fields in records and data items in common blocks for performance reasons, or whether the compiler packs those fields and data items together on arbitrary byte boundaries. The OPTIONS directive takes the following form:

CDEC$ OPTIONS /[NO]ALIGN[=p] . . . CDEC$ END OPTIONS

p Is a specifier with one of the following forms:

[class =] rule (class = rule,...) ALL NONE

class Is one of the following keywords:

COMMONS (for common blocks) RECORDS (for records) STRUCTURES (a synonym for RECORDS)

rule Is one of the following keywords:

PACKED - Packs fields in records or data items in common blocks on arbitrary byte boundaries.

NATURAL - Naturally aligns fields in records and data items in common blocks on up to 64-bit boundaries (inconsistent with the FORTRAN-77 standard).

If you specify NATURAL, the compiler will naturally align all data in a common block, including INTEGER*8, REAL*8, and all COMPLEX data.

STANDARD - Naturally aligns data items in common blocks on up to 32-bit boundaries (con- sistent with the FORTRAN-77 standard).

Note that this keyword only applies to common blocks; therefore, you can specify /ALIGN=COMMONS=STANDARD, but you cannot specify /ALIGN=STANDARD.

ALL Is the same as /ALIGN, /ALIGN=NATURAL, and /ALIGN=(RECORDS=NATURAL,COMMONS=NATURAL).

NONE Is the same as /NOALIGN, /ALIGN=PACKED, and /ALIGN=(RECORDS=PACKED,COMMONS=PACKED)

CDEC$ OPTIONS (and accompanying CDEC$ END OPTIONS) directives must come after OPTIONS, SUBROUTINE, FUNCTION, and BLOCK DATA statements (if any) in the program unit, and before statement functions or the executable part of the program unit.

For performance reasons, DEC Fortran always aligns local data items on natural boundaries. However, EQUIVALENCE, COMMON, RECORD, and STRUCTURE data declaration statements can force misaligned data. You can use the CDEC$ OPTIONS directive to control the alignment of fields associated with COMMON and RECORD statements. By default, you receive compiler messages when misaligned data is encountered.

To request packed, unaligned data in a record structure, specify /ALIGN=RECORDS=PACKED, or consider placing source data declarations for the record so that the data is naturally aligned.

NOTE

Misaligned data significantly increases the time it takes to execute a program. As the number of misaligned fields encountered increases, so does the time needed to complete program execution. Specifying CDEC$ OPTIONS/ALIGN (or the /ALIGN compiler option) minimizes misaligned data.

To request aligned, data in common blocks, specify /ALIGN=COMMONS=STANDARD (for data items up to 32 bits in length) or /ALIGN=COMMONS=NATURAL (for data items up to 64 bits in length), or place source data declarations within the common block in descending size order, so that each data field is naturally aligned.

The CDEC$ OPTIONS directive supersedes the -align "keyword" compiler option.

CDEC$ OPTIONS directives must be balanced and can be nested up to 100 levels, for example:

CDEC$ OPTIONS /ALIGN=PACKED ! Group A declarations CDEC$ OPTIONS /ALIGN=RECO=NATU ! Group B more declarations CDEC$ END OPTIONS ! End of Group B still more declarations CDEC$ END OPTIONS ! End of Group A

Note that common blocks within Group B will be PACKED. The CDEC$ OPTION specification for Group B only applies to RECORDS, so COMMONS retains the previous setting (in this case, from the Group A specification).

For more information on alignment and data sizes, see your user manual.

PSECT

 CDEC$ PSECT /common-name/ attr [,attr,...]

The PSECT directive lets you modify several attributes of a common block.

Specify the name of a common block, preceded and followed by a slash, and one of the following attributes: LCL (VMS only) Local scope. GBL (VMS only) Global scope. [NO]WRT (VMS only) Writability or no-writability. [NO]SHR (VMS only) Shareability or no-shareability. ALIGN=val Alignment for the common block. The "val" must be a constant (0 through 9).

TITLE_and_SUBTITLE

 CDEC$ TITLE string
 CDEC$ SUBTITLE string

The TITLE directive lets you specify a string and place it in the title field of a listing header. Similarly, SUBTITLE lets you place a specified string in the subtitle field of a listing header.

The string that you specify can consist of up to 31 printable characters and must be delimited by apostrophes.

In addition to the compiler-directive syntax rules, the TITLE and SUBTITLE directives have the following specific rules:

- To enable TITLE and SUBTITLE directives, you must specify the -V compiler option.

- When TITLE or SUBTITLE appears on a page of a listing file, the specified string appears in the listing header of the following page.

- If two or more of either directive appear on a page, the last directive is the one in effect for the following page.

- If either directive does not specify a string, no change occurs in the listing file header.