Compaq Fortran 77 Release Notes for OpenVMS VAX Systems
*HyperReader
|
1.3 Compatibility
Compaq Fortran 77 Version V6.6 is compatible with all VAX
processors running Version V5.4 or later of the OpenVMS
operating system.
The following sections summarizes the compatibility issues,
if any, between Compaq Fortran 77 Version V6.6 and
previous versions of Compaq Fortran 77, DEC Fortran,
VAX FORTRAN and VAX FORTRAN-HPO and versions of
other DIGITAL layered products.
1.3.1 Coexistence With Earlier Versions
The VMSINSTAL version of the Compaq Fortran 77
installation procedure offers an option of preserving the
previously installed version of Compaq Fortran 77. If
this option is selected, the earlier version is renamed
to FORTRAN$MAIN-Vnn.EXE where "Vnn" is the
previous version number with the period removed. For
example, Compaq Fortran 77 V6.5 would be renamed
FORTRAN$MAIN-V65.EXE. To use the saved version of
the compiler, define the logical name FORTRAN$MAIN to
point to the desired version. For example:
$ DEFINE FORTRAN$MAIN FORTRAN$MAIN-V65
To select the currently installed version, deassign the logical
name FORTRAN$MAIN or define it as FORTRAN$MAIN.EXE
(the ".EXE" is required in this case.) It is not necessary to
save earlier versions of the compiler message files.
If earlier versions of VAX FORTRAN and/or VAX FORTRAN-
HPO were previously installed, installation of Compaq
Fortran 77 does not replace the compiler and message file
images used by the earlier versions.
To use VAX FORTRAN, define the logical name FORTRAN$MAIN
as follows:
$ DEFINE FORTRAN$MAIN FORTRAN
To use FORTRAN-HPO, use the following command instead:
$ DEFINE FORTRAN$MAIN FORTRAN-HPO
In addition to the compiler images SYS$SYSTEM:FORTRAN.EXE
and/or SYS$SYSTEM:FORTRAN-HPO.EXE, the old
message files SYS$MESSAGE:FORTERR1.EXE and
SYS$MESSAGE:FORTERR2.EXE must be present.
The earlier compilers will ignore new command qualifiers
and qualifier values.
The PCSI version of the installation procedure will
not automatically save a copy of the previous com-
piler. If you wish to preserve the older version, copy
SYS$SYSTEM:FORTRAN$MAIN.EXE before installation.
1.3.2 Source Compatibility
Compaq Fortran 77 Version V6.6 accepts all valid Fortran
language source which was accepted by earlier versions of
Compaq Fortran 77, VAX FORTRAN and VAX FORTRAN-
HPO. However, a number of new intrinsic routines have been
added which may affect programs which have user-supplied
routines with the same names. If these names conflict with
those of user-supplied functions, it may be necessary to add
an EXTERNAL statement for the user-supplied functions.
See Sections 2.3.6,2.6.4,2.6.5and 2.8.6 for more details.
Compaq Fortran 77 Version V6.6 also detects some errors
in program sources that were not reported in previous ver-
sions. This may cause some programs to generate warnings
or errors when compiled which previously compiled without
diagnostics.
Some of the more significant errors that are now detected by
the compiler are:
* The compiler now reports an INVLEXEME error if an
internal file I/O statement specifies a parenthesized vari-
able as the internal file specifier. An internal file specifier
is required to be acharacter scalar memory reference or a
character array name reference .
* The compiler now reports an UNDFUNVAL warning if
a function's return value is not defined at one or more
exit points.
* The compiler now reports an INVCONST error when it
finds that the increment expression for a DO loop eval-
uates to zero. Previously, the compiler would not always
report an error for this case. A zero loop increment would
cause an infinite loop at run-time.
* If a program specifies a USEROPEN routine in an OPEN
statement and the routine is declared explicitly as some
type other than INTEGER *4, the compiler will now
give a "Name previously used with conflicting data type"
(INVTYPUSE) error. If the routine was not explicitly
given a type, the compiler now assigns it the INTEGER 4
*
type, even if an IMPLICIT statement would specify a
different type. However, if IMPLICIT NONE is in ef-
fect, and the type was not specified explicitly, then an
IMPNONE error will be generated. Previously, the type
conflict was not detected nor was a warning generated if
IMPLICIT NONE was in effect. USEROPEN routines
must return an INTEGER *4 function value.
* The compiler now gives an INVRECUSE error when an
array or aggregate reference is passed as an expression
in an actual argument list. Previously, it could generate
incorrect code or cause the compilation to fail.
* The compiler and Run-Time Library now enforce
the documented restrictions on the ranges of fields in
FORMAT edit descriptors. Previously, incorrect results
could be generated.
1.3.3 New Math Library Considerations
Compaq Fortran 77 provides new, revised versions of the
VMS Math Library shareable images MTHRTL.EXE and
VMTHRTL.EXE. (The shareable image UVMTHRTL.EXE,
which is functionally identical to MTHRTL, is also pro-
vided.) Due to a significant number of new entry points
defined in MTHRTL, required by Compaq Fortran 77, the
global section match ident of that image was required to
be changed. While previously linked images will run with
the new MTHRTL, newly linked images will not run on
other OpenVMS VAX systems (V6.0 or earlier) which do
not have the new MTHRTL. In addition, images linked
against the new MTHRTL which are then translated by the
DECmigrate product will not run on OpenVMS Alpha sys-
tems. The following paragraphs explain how to compile and
link applications so that they may run on these other systems.
The new support was included with OpenVMS VAX Version
6.1. If you install or reinstall versions of OpenVMS VAX
prior to version 6.1, you must reinstall the Compaq Fortran
77 kit.
The installation procedure preserves the OpenVMS-supplied
shareable images under the names FORTRAN$MTHRTL-
VMS, FORTRAN$VMTHRTL-VMS and FORTRAN$UVMTHRTL-
VMS. To link an image so that it will run on OpenVMS ver-
sions that lack the enhanced RTL images use the following
method:
$ DEFINE/USER MTHRTL FORTRAN$MTHRTL-VMS
$ DEFINE/USER VMTHRTL FORTRAN$VMTHRTL-VMS
$ LINK program
%LINK-I-IDMISMCH, GSMATCH of 81,00800C in shareable image
SYS$COMMON:[SYSLIB]MTHRTL-VMS.EXE;1
differs from GSMATCH of 81,00800D in shareable image
library
SYS$COMMON:[SYSLIB]IMAGELIB.OLB;1
The LINK-I-IDMISMCH informational message can be
ignored.
In addition, any Fortran modules should be compiled with
the command qualifier /MATH_LIBRARY=V5. This causes
the compiler to not use any of the new entry points, thus al-
lowing error-free linking against the old MTHRTL, but the
associated performance enhancements will be lost. This qual-
ifier also allows Fortran object modules to be linked on other
OpenVMS VAX systems which don't have the updated math
library. See sectionSection 2.8.1.4for more details.
1.3.4 Fortran Run-Time Library Considerations
Compaq Fortran 77 provides a new version of the
OpenVMS VAX Fortran Run-Time Library share-
able image SYS$LIBRARY:FORRTL.EXE and associ-
ated object modules to support the new non-native data
in I/O feature. The VMS-supplied version is saved as
SYS$LIBRARY:FORTRAN$FORRTL-VMS.EXE.
The new support is included in OpenVMS VAX Version
V6.1. Until that version is installed, you must reinstall the
Compaq Fortran 77 kit each time you install a new version
of OpenVMS VAX.
Unlike the new version of the Math Run-Time Library
images described above, the new version of FORRTL.EXE
does not of itself prevent images linked against the new
FORRTL.EXE from running on older versions of OpenVMS
VAX as early as V5.0-1. The only situation in which an
incompatibility will arise is where the application uses the
CONVERT= keyword in an OPEN or INQUIRE state-
ment or does an OPEN in a program unit compiled with
the /CONVERT command or OPTIONS statement qualifier
specifying a value other than NATIVE. See Section 2.8.5 for
more details.
Of course, if the application also uses Math library routines,
the restrictions noted inSection 1.3.3 apply.
See also Section 1.4.4 for a description of a known problem
regarding linking against the new FORRTL.EXE.
1.3.5 Object Compatibility
When the default /NOPARALLEL command qualifier is used,
object modules from Compaq Fortran 77 can be freely mixed
with those from any previous version of Compaq Fortran
77, VAX FORTRAN, and VAX FORTRAN-HPO. There are
no known compatibility problems with mixing these object
modules with those of any other Digital compiler.
If any FORTRAN module in the application is compiled with
/PARALLEL, there are no compatibility problems as long as
all other modules in the application have also been compiled
by Compaq Fortran 77 using the /PARALLEL qualifier.
For applications which are created by mixing FORTRAN
modules compiled /PARALLEL with those from other lan-
guages, or with FORTRAN modules not compiled with
/PARALLEL (including modules compiled with versions
of VAX FORTRAN earlier than V5.0), see the chapter
on Parallel Processing in the DEC Fortran User Manual
for OpenVMS VAX Systems for detailed information and
restrictions.