Compaq Fortran 77 Release Notes for OpenVMS VAX Systems
*HyperReader
|
1.4 Known Problems and Issues
This section describes known problems and restrictions in
this version of Compaq Fortran 77 and provides additional
information on important issues.
1.4.1 Required Post-Installation Tasks on VMScluster
If Compaq Fortran 77 is installed on a VMScluster system,
it is critically important that the post-installation tasks de-
scribed in Digital Fortran Installation Guide for OpenVMS
VAX Systems be performed. In particular, the command
procedure SYS$UPDATE:FORTRAN$POST_INSTALL must
be executed on all nodes of the cluster immediately after in-
stallation; this command file ensures that the latest installed
versions of Run-Time Library images are used on all clus-
ter nodes. Failure to follow this step can result in programs
getting the error SHRIDMISMAT, "ident mismatch with
shareable image" or other run-time errors. The installation
procedure also warns the installer to perform this step.
1.4.2 Routines Called With Omitted Arguments
The new optimization for dummy arguments (see
Section 2.8.13) may cause problems for applications which
contain Fortran routines that can be called with some ar-
guments omitted. Though omission of arguments is not
supported by Digital Fortran, many applications have been
written which took advantage of knowledge that the compiled
code did not access the argument list for dummy arguments,
other than those of type CHARACTER or used in adjustable
array bounds expressions, until the argument was actually
used during execution of the routine. This assumption is no
longer valid, and these applications may now fail, typically
with an access violation.
To disable the optimization on dummy arguments, specify the
/ASSUME=DUMMY_ALIASES command line or OPTIONS
statement qualifier. An alternative is to declare the spe-
cific dummy arguments to be VOLATILE or to use them
as arguments to the %LOC built-in function. (Most exist-
ing subroutines which can be called with omitted arguments
use %LOC to test for a zero address; these will not require
changes. However, if the test for omission is made solely
on the basis of argument count or some other value, one of
the above changes is necessary.) For the language require-
ments regarding Actual Argument and Dummy Argument
Association, see theDEC Fortran Language Reference Manual .
1.4.3 Compiler Bugchecks with /VECTOR
There remain several known cases where the compiler fails
with a bugcheck during the SCHED or BLOCK_SCHED
phases for programs compiled with the /VECTOR command
qualifier. If you encounter such a case, workarounds include
compiling just the failing routine /NOVECTOR and inserting
NOVECTOR directives before individual loops in the failing
routine. It is not necessary to compile the entire application
/NOVECTOR to work around this problem.
1.4.4 Linker OUTSIMG Error When COLLECT Linker
Option Used
The updated FORRTL.EXE image provided with Digital
Fortran includes message section definitions so that the new
messages relating to the non-native data in I/O feature can
be displayed if errors occur; these messages are not yet in-
cluded in the standard message file provided by OpenVMS
VAX.
There is one known case where these message sections cre-
ate a problem during linking. If the user application includes
object modules created by the OpenVMS MESSAGE compiler
and uses the linker COLLECT options file statement to collect
the message section PSECTs into an image cluster, the linker
may report an error of the form:
%LINK-E-OUTSIMG, attempted store location %X0000B800 is outside
image binary (%X00000000 to %X00000000)
in psect MSG$AAAAAAAAAAA
-LINK-E-NOIMGFIL, image file not created
This error is caused by the linker attempting to collect both
the user message PSECTs and the PSECTS in FORRTL into
the same image cluster, which is invalid.
To avoid this problem, link explicitly against FORTRAN$FORRTL-
VMS.EXE. The application will still run properly, even
against the Digital Fortran supplied FORRTL, but the linker
will not complain.
This problem is resolved in OpenVMS VAX V6.1.
1.4.5 Recursive Character Functions Not Supported
The compiler does not currently allow character functions to
be referenced recursively.
1.4.6 Restrictions on Use of BLAS Routines
In some cases certain uses of the BLAS intrinsic routines can
cause the compiler to fail with a bugcheck. The situations
where this has been observed are:
* Combining use of an inlined BLAS routine with a non-
inlined intrinsic or external routine in an expression, for
example:
T = FUNC(X) + DDOT(NT2,Z(J, J), I1,D( J),I1)
* Use of an inlined BLAS routine in an implied DO loop in
an I/O statement, for example:
write( 12,3000) ((sdot(3,x(1,i),1,f(1,ia ),1),i=1,3),
* ia=iaanf,iaend)
A workaround for both cases is to compile with /BLAS=NOINLNE.
In the first case another workaround is to separate the
expression into two separate assignments as follows:
T1 = FUNC(X)
T = T1 + DDOT(NT2,Z(J, J), I1,D( J),I1))