11.2.6 OPTIONS Directive (Alpha only)

The OPTIONS directive controls whether the Compaq Fortran 77 compiler naturally aligns fields in records or 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
c
Is the letter or character that introduces the directive tag (see Section 11.1).
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 (consistent 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).

Rules and Behavior

The OPTIONS (and accompanying 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, Compaq Fortran 77 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 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 compiler option ALIGN) 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 OPTIONS directive supersedes the compiler option ALIGN.

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$ OPTIONS 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:


Previous Page Next Page Table of Contents