Compaq Fortran 77 Release Notes for OpenVMS VAX Systems
*HyperReader
|
2.7 Overview of Compaq Fortran 77 Version V6.0
Compaq Fortran 77 Version V6.0 for OpenVMS VAX
(Compaq Fortran 77) is a new, major release of the
VAX FORTRAN product. Its name has been changed
to reflect the high degree of compatibility between it and
Digital Fortran on other Digital platforms such as OpenVMS
Alpha. It is a compatible superset of both VAX FORTRAN
Version 5.9 and VAX FORTRAN High-Performance Option
(FORTRAN-HPO) Version 1.3.
This section briefly describes the new and changed features
of Compaq Fortran 77 Version 6.0. For more details, refer to
the indicated section of the Release Notes and the Compaq
Fortran 77 documentation set as listed in Chapter 3.
Compaq Fortran 77 offers the following major enhancements
and changes as compared to VAX FORTRAN-HPO Version
1.3:
* Generation of reentrant (or recursion-capable) code and
automatic (stack-based) allocation of data ( Section 2.8.9)
* The ability to read and write numeric data in non-native
formats using unformatted I/O ( Section 2.8.5)
* An option to generate specially optimized code, which can
significantly reduce the number of pagefaults and im-
prove application performance, for loops which traverse
large arrays ( Section 2.8.11)
* Improved generated code for references to dummy
arguments and variables in COMMON ( Section 2.8.13)
* Improved generated code for operations involving
COMPLEX variables ( Section 2.8.12)
* Improved generated code for intrinsic functions (
Section 2.8.14)
* Vectorization of DO loops with INTEGER *2 loop control
variables (Section 2.8.16)
* Vectorization of additional intrinsic functions (AMOD,
ATAN2, ATAND2, SIGN) and vectorization of
COMPLEX intrinsic functions ( Section 2.8.14)
* Reporting of uninitialized variables ( Section 2.8.15)
* Removal of need for /CONTINUATIONS compile com-
mand qualifier ( Section 2.8.1.2)
* Removal of need for /HPO compile command qualifier
and FORTRAN-HPO Product Authorization Key (PAK) (
Section 2.8.1.3)
* Change in default from /WARNINGS=ALIGNMENT to
/WARNINGS=NOALIGNMENT ( Section 2.8.1.1)
* Support for the definition of the logical name FORT$LIBRARY
as a search list (Section 2.8.2)
* Support for the definition of the logical name FORT$INCLUDE
to specify a default location for INCLUDE files (
Section 2.8.3)
* An increase of the limit on the number of named
COMMON blocks from 250 to 508. ( Section 2.8.20)
* The ability to provide diagnostics for language features
not supported by Digital Fortran on Alpha platforms. (
Section 2.8.22)
* Support for NTT Technical Requirement TR550001,
Multivendor Integration Architecture (MIA) Version 1.1,
Division 2, Part 3-2, Programming Language FORTRAN
(Section 2.8.21)
In addition, Compaq Fortran 77 provides the following en-
hanced features of VAX FORTRAN-HPO Version 1.3 as
compared to VAX FORTRAN Version 5.9:
* Automatic decomposition of DO loops for parallel execu-
tion on VAX multiprocessor systems ( Section 2.8.7)
* Automatic vectorization of DO loops for execution on VAX
processors that support the VAX Vector Architecture (
Section 2.8.8)
* Inline code expansion of the Basic Linear Algebra
Subroutines (BLAS) Level 1 and Level 1 Extended (
Section 2.8.10)
* The /WARNINGS=TRUNCATED_SOURCE qualifier
which enables warnings for source lines which are longer
than the statement field width ( Section 2.8.1)
* The /TERMINAL=STATISTICS qualifier which enables
informational messages about each compiled program
unit to be displayed to the terminal ( Section 2.8.1)
2.7.1 COMMON Block Alignment Compatibility
The default memory alignment for COMMON blocks is
quadword alignment; in versions of VAX FORTRAN prior to
V5.5 it was longword alignment (unless the COMMON block
contained REAL *8 or COMPLEX *16 variables). (But see
also Section 2.7.5.2.)
In most cases, the difference is not visible to a correctly-
written application. Only applications which depended on
there being no more than three bytes of unused space be-
tween consecutive COMMON blocks will behave differently.
In some cases, this is due to an error in the program, but
some applications use a specially named COMMON block
that is intended to directly follow another one in order to
determine the total size of the first block.
If the default of quadword alignment is not acceptable, there
are two methods of obtaining longword alignment. The first is
to use the CDEC$ PSECT directive to explicitly specify long-
word alignment for each COMMON block declared. This
should be done in each program unit where the COMMON
block is used. For example:
CDEC$ PSECT /MY_COMMON/ ALIGN=2
To specify blank COMMON, use "//" in the directive. See
the DEC Fortran Language Reference Manual for more
information on the CDEC$ PSECT directive.
Another method is to use a linker options file and to specify
the PSECT_ATTR statement for each COMMON block to
indicate the alignment. For example:
PSECT_ATTR=MY_COMMON,LONG
To specify blank COMMON, use the PSECT name $BLANK .
See the VMS Linker Utility Manual for more information on
linker options files.
2.7.2 Command Line Compatibility
The command line definition for Compaq Fortran 77 6.0
is a compatible superset of that for previous versions of
VAX FORTRAN and VAX FORTRAN-HPO. Note that the
/CONTINUATIONS and /HPO qualifiers, which were recog-
nized by previous versions, are now ignored. See Section 2.8.1
for more details.
2.7.3 VAX Language-Sensitive Editor Compatibility
VAX Language-Sensitive Editor Version V3.0 or later must
be installed on the compiling system if the /DESIGN=COMMENTS
compile command qualifier is used.
2.7.4 Compatibility With VAX Common Data Dictionary
Compaq Fortran 77 supports VAX Common Data Dictionary
definitions in DMU format. It supports the CDO format
available in VAX CDD/Plus V4.0 or later through a compati-
bility interface. VAX CDD/Plus audit trails are not generated
by Compaq Fortran 77. For more information, refer to the
DEC Fortran User Manual for OpenVMS VAX Systems and
the CDD/Repository documentation.
2.7.5 Compatibility With VAX DBMS
The following are known restrictions for applications using
the VAX DBMS product.
2.7.5.1 Using /DML and /PARALLEL Compile Command Qualifiers
Because of the restriction on performing I/O operations
within a parallel loop (see the chapter on Parallel Processing
in the DEC Fortran User Manual for OpenVMS VAX
Systems ), care must be taken when using parallel loops
with data base applications. Applications using the /DML
qualifier should not use the CPAR$ DO_PARALLEL direc-
tive for any loop that executes data base operations. Such use
will cause unpredictable results due to inconsistent I/O control
state among the processes executing the loop iterations.
2.7.5.2 COMMON block longword alignment
COMMON blocks declared in subroutines compiled with
/DML qualifier still have the longword alignment attribute.
That is, the base of a COMMON block is aligned on a long-
word boundary.
2.7.5.3 /CONTINUATIONS Qualifier May Be Necessary with /DML
Although the Digital Fortran compiler no longer requires the
/CONTINUATIONS qualifier to be used to raise the limit on
continuation lines above the standard 19, the Fortran DML
preprocessor, part of the VAX DBMS product and invoked
with the FORTRAN/DML command, does still require this
qualifier. If you are using /DML and have more than 19
continuation lines, specify /CONTINUATIONS=nn, where
nn is an integer value between 19 and 99, on the FORTRAN
/DML command line. This restriction may be removed in a
future version of VAX DBMS.