Compaq Fortran 77 Release Notes for OpenVMS VAX Systems
*HyperReader
|
Table A-1: Compaq Fortran Maintenance Changes
Version Description
V6.0-1 DEC Fortran V6.0 Release; contains all corrections to VAX FORTRAN through version
V5.9-175 and to VAX FORTRAN-HPO through version V1.3-252
V6.0-2 The compiler now detects as an extension to FORTRAN-77 the use of a non-integer
expression as a logical unit number in an I/O statement.
V6.0-3 A number of problems related to the "non-native data in I/O" feature were corrected,
including:
* The FOR$CONVERTnnn logical names were not properly recognized.
* Big-endian IEEE and all big-endian integer conversion did not work correctly.
* Conversion in I/O statements with implied DO-loops did not always work correctly.
* Conversion of COMPLEX variables did not work.
* Applications which executed an ENDFILE or FIND statement on a unit which was
not open could get an INVARGFOR error at run-time.
V6.0-4 The compiler no longer goes into a loop if a statement function has two or more formals
which are declared as RECORDs using the same STRUCTURE.
V6.0-5 The compiler now issues the new diagnostic EQVSAVCOM if EQUIVALENCE is used to
attempt to put a SAVE variable into COMMON.
V6.0-6 The DEC Fortran kit now provides an updated copy of the VMSRTL.EXE shareable im-
age, which is required by images linked againstAX/VMS versions earlier than V4.0.
Without the updated VMSRTL.EXE, images which use it may fail unpredictably due to
registers not being properly saved across calls to Fortran or Math Run-Time Library
routines. The new VMSRTL.EXE specifies that all registers are to be saved so that
changes to register usage in routines now in the BASRTL, COBRTL, FORRTL, LIBRTL
and MTHRTL shareable images will not break images linked against VMSRTL. Images
linked on VAX/VMS V4.0 or later do not use VMSRTL and are not affected.
The updated VMSRTL.EXE is not provided on OpenVMS VAX Version V6.0 or later as it
is not needed there.
V6.0-7 A problem in which the compiler would fail with a bugcheck in the PACK phase was
corrected.
Version Description
V6.0-8 The Digital-provided INCLUDE files SYS$LIBRARY:FORDEF.FOR,
SYS$LIBRARY:FORIOSDEF.FOR and the $FORMSG module of
SYS$LIBRARY:FORSYSDEF.TLB have been updated to include the new
FOR$_FLOCONFAI status value and associated IOSTAT number definitions.
V6.0-9 The compiler no longer issues the CRX error message BADRGTJUST for a CDD non-
text field that specifies right-justification. The justification attribute is ignored by DEC
Fortran.
V6.0-10 The correct line number is now displayed for the EXTCHASOU and TOOMANCON
compiler diagnostics.
V6.0-11 The compiler no longer gives spurious USEUNIVAR warnings for references to
COMPLEX variables which were data-initialized using character constants, and now
only gives one warning per COMPLEX variable instead of separate warnings for the real
and imaginary parts.
V6.0-12 The compiler now properly displays the attempted file specification when it gives an
INCOPEFAI error on failing to open an INCLUDE library.
V6.0-13 The compiler now allows record variables to appear in AUTOMATIC, SAVE and STATIC
statements.
V6.0-14 The compiler was changed to emit the quadword stack alignment routine entry code
sequence (see Section 2.8.only when the /VECTOR compile command qualifier is
specified.
V6.0-15 The compiler no longer generates bad code when a LOGICAL 2 or LOGICAL 4 array
* *
element is used in an arithmetic-IF statement.
V6.0-16 A nested STRUCTURE with a data-initialized field in in a program unit compiled with
/RECURSIVE no longer causes the linker to issue an UDEFPSC error. In addition, the
compiler now issues the warnings AUTDATINI and AUTSAVALL if a variable declared
AUTOMATIC was data-initialized or appears in a program unit which specifies that all
variables are to be SAVEd.
V6.0-17 The compiler no longer generates incorrect code when the only store to a formal argu-
ment occurs by its reference in an IOSTAT specification. In some cases, the modified
value was not written back through the argument list.
V6.0-18 The compiler no longer causes the linker to issue a UDEFPSC error for program units
which reference a local variable in a READ or ACCEPT statement but don't pass that
variable as an actual argument.
Version Description
V6.0-19 The compiler now properly passes a copy of an actual argument when that argument is
an expression consisting of a reference to an intrinsic function that returns its argument
unchanged, such as INT of an INTEGER argument.
V6.0-20 The Run-Time Library no longer reports an INVARGFOR error when the PDP-11
compatibility routines ERRSET, ERRSNS or ERRTST are used for error number 95,
FLOCONFAI.
V6.0-21 The compiler no longer fails with a bugcheck in the CSE phase when /VECTOR is
specified and the program contains certain uses of COMPLEX intrinsics.
V6.0-22 The compiler now allows recursive function references as well as recursive references
to ENTRY points which are defined after the function reference or CALL statement.
The new error message ROUREFREC, "Routine referenced recursively; /RECURSIVE
required" is given if the compiler detects a recursive reference and /RECURSIVE was not
specified. The compiler now produces correct cross-reference and SCA information for
recursive function references.
V6.0-23 The compiler no longer generates incorrect code in a situation whose symptom was that
register R0 was believed to still hold a value that had been loaded prior to a subroutine
call which modified R0.
V6.0-24 The compiler no longer issues the EXCCHASOU, "Extra characters in source" warning,
enabled by /WARNINGS=TRUNCATED_SOURCE, for source lines containing whole-line
comments or only blank characters, even if those lines exceed the statement field width.
The compiler issues the new warning message FUNVALUND, "Function value unde-
fined at end of routine" if a function return value is not defined at one or more exit points
of the function. The standards extension diagnostic EXT_UNDFUNC is no longer issued,
being replaced by FUNVALUND. The compiler now more accurately displays statement
line numbers associated with error messages and the /SHOW=LOOP_STRUCTURE
display.
V6.0-25 The compiler no longer generates incorrect code for certain unusual cases involving a
routine with a character formal argument whose address was taken with %LOC and an-
other argument was used as a KEY value in an indexed READ statement. The symptom
was that one argument's address was loaded into register R0 or R1 for later use, but the
copy of the character argument's descriptor overwrote those registers.
V6.0-26 The compiler's limit for the amount of internal representation allowed per statement
has been doubled, making it much less likely than the STATOOCOM, "Statement too
complex" error will be generated.
V6.0-27 The compiler no longer fails with a bugcheck during LEXSYN when a type declaration
statement has an end-of line comment, is followed by a blank line, and /ANALYSIS_
DATA is specified.
Version Description
V6.0-28 The compiler now generates correct code for the case where a subprogram has one or
more ENTRY statements, a non-CHARACTER dummy argument appears in two or
more of the dummy argument lists, and that argument is passed as an actual argument
to another routine using %DESCR.
V6.0-29 The compiler no longer fails with a bugcheck during PACK in certain cases where the
double-precision MOD intrinsic is used in conjunction with array references.
V6.0-30 Superseded by edit V6.0-51.
V6.0-31 The compiler no longer fails with a bugcheck during LOCAL when the %LOC operator is
used on an external procedure which has been typed as COMPLEX or COMPLEX *16.
V6.0-32 The compiler no longer fails with a bugcheck during PACK when a record field that is
longer than 65535 bytes is assigned to another record field.
V6.0-33 The compiler now generates correct Debug Symbol Table information for program units
which contain Variable Format Expressions. The incorrect information only affected
the DEC Performance and Coverage Analyzer's COVERAGE BY LINE feature, where it
might cause the program to fail in unpredictable ways while run under PCA.
V6.0-34 The compiler no longer fails with a bugcheck during LIFE in certain cases involving the
ISIGN intrinsic called with expression arguments.
V6.0-35 The compiler now properly handles multiple translations of the FORT$LIBRARY logical
name in all cases.
V6.0-36 When FORTRAN/DML is used, the compiler no longer improperly ignores DICTIONARY
statements which are followed by an INCLUDE statement or an FDML preprocessor
statement.
V6.0-37 The compiler no longer fails with a bugcheck during LOCAL for certain cases involving
mixed complex-real arithmetic operations.
V6.0-38 The compiler no longer fails with a bugcheck during FINAL nor generates an incorrect
object module if a program unit defines FOR$_ASSERTFAIL as a PARAMETER constant
(for example, by including module $FORDEF from FORSYSDEF.TLB) and contains an
ASSERT statement.
V6.0-39 The math library routine which implements the D_floating version of the ATAN2D in-
trinsic no longer causes unexpected program behavior (such as a program exiting with a
status of 43B4) when the first argument is positive and the second argument is zero. This
problem would only be seen by programs which were compiled using DEC Fortran V6.
Version Description
V6.0-40 The compiler now issues warnings about CDEC$ and CPAR$ directives being exten-
sions to Fortran-77 only if /STANDARD=SOURCE_FORM is in effect. Previously, the
compiler would diagnose these directives, which are special forms of comments, if
/STANDARD=SYNTAX was in effect.
V6.0-41 The compiler no longer generates incorrect code for certain program units which contain
uses of the character concatenation operator.
V6.0-42 The compiler no longer generates incorrect code which does not account for a COMMON
variable changing across a routine call when the /ASSUME=DUMMY_ALIASES compile
command qualifier is in effect.
V6.0-43 The compiler no longer issues the FUNVALUND warning for a CHARACTER function
whose only definition of the function return value is by means of passing the return value
variable as an actual argument in a routine call.
V6.0-44 The compiler no longer gives unexpected warnings about features not implemented on
ULTRIX when /WARNINGS=Alpha_AXP is specified.
V6.0-45 The compiler no longer generates incorrect code for the following combination of occur-
rences:
* A triply-nested DO-loop
* The end expression for the innermost loop is of the form A(I)-1 where I is the loop
control variable of the outermost loop.
* There are no other uses of A(I) inside the loops.
V6.0-46 The compiler no longer generates incorrect code involving improper reuse of registers
following a character operation.
V6.0-47 The compiler no longer generates incorrect code which substitutes a multiply **312
with an arithmetic shift.
V6.0-48 For cases where a reference to a BLAS1 extended routine was inlined, the compiler now
produces a correct object module that does not cause the linker to issue an informational
diagnostic about an undefined symbol.
V6.0-49 The compiler no longer takes an excessive amount of time to compile a program unit
containing one or more large arrays which are DATA-initialized.
V6.0-50 The compiler no longer applies the split-lifetime optimization to formal arguments and
variables in COMMON if a direct-access I/O statement is seen, due to the possibility of
their having been named as an ASSOCIATEVARIABLE in another program unit.
Version Description
V6.0-51 The compiler no longer consumes excessive memory and CPU resources when compiling
a program unit which contains complicated expressions of COMPLEX values.
V6.0-52 The compiler no longer issues the FUNVALUND warning if a function contains ENTRY
statements and at least one of the function return variables was defined at all exit points.
V6.0-53 The compiler no longer allows a parenthesized variable as an internal file unit specifier,
as it does not qualify as a "character scalar memory reference".
V6.0-54 The compiler no longer fails with a bugcheck during CODE for certain large program
units which use the character concatenation operator.
V6.0-55 The compiler no longer bugchecks when a statement function formal argument has the
same name as a PARAMETER constant declared with CHARACTER type. According
to the Fortran-77 standard, a statement function formal may not share a name with an
entity other than a variable or a COMMON block. See also V6.0-62.
V6.0-56 The compiler no longer generates incorrect code for routines which contain direct I/O
statements and for which an associated variable was passed as an argument to that
routine.
V6.0-57 The compiler no longer generates invalid code for certain program units which have
a series of redundant assignments to a variable and a conditional assignment to that
variable before the final redundant assignment.
V6.0-58 The compiler no longer fails with a bugcheck during LIFE for certain program units
which contain redundant assignments of expressions to a variable and where that
expression is also used later in the program unit.
V6.0-59 The compiler no longer generates incorrect code whose effect was to overwrite the imagi-
nary part of a COMPLEX value with the real part, typically before use as an argument to
an intrinsic function.
V6.0-60 The compiler no longer generates incorrect descriptor initialization code for COMPLEX
array arguments to routines with multiple entry points.
V6.0-61 The compiler will issue an INTACTARG warning if an identifier which has been used
as an intrinsic routine, without having been named in an INTRINSIC statement, is
passed as an actual argument. This usually indicates a programming error; if it is
intended that an intrinsic routine be passed, name it in an INTRINSIC statement. Also,
the compiler will now issue a standards extension diagnostic EXT_INVINTARG if one
of the following classes of intrinsic functions is passed as an actual argument: type
conversion, lexical relationship and minimum or maximum.
Version Description
V6.0-62 The compiler will now issue the standards extension diagnostic EXT_ASFARGNAM if
the name of a statement function dummy argument is the same as an entity other than
a variable or a common block, such as a PARAMETER constant. If the name is shared
with a FORTRAN-77 style (typed) PARAMETER constant, the declared type is used,
otherwise the argument type is implicit based on the first character of the name.
V6.0-63 The compiler no longer generates incorrect code for certain calls to the ATAN2,
ATAN2D, SIGN (real) and MOD (real) functions when the second argument is an
array reference.
V6.0-64 The compiler no longer produces an invalid SCA analysis data file which causes SCA to
report that the module has an "old ANA format" if a program unit contains the CDEC$
IDENT directive and the /DESIGN=COMMENTS qualifier is in effect.
V6.0-65 The compiler no longer generates incorrect register usage code for programs which
use the SIGN intrinsic with REAL *4 or REAL*8 operands. The problem was most
apparent with REAL *8 in that the generated code could use registers R4-R6, but the
compiler might not cause those registers to be saved in the routine entry mask or might
mistakenly allocate other values to those registers.
V6.0-66 In a case where a vectorized loop contained a call to a mathematical intrinsic function,
such as LOG, using a scalar argument that was an induction variable, and where the
call to the intrinsic conditional, the compiler now correctly merges in "safe values", those
for which the intrinsic will not report an error, for the appropriate elements in the vector
register argument where the conditional test would, in the scalar case, have prevented
the intrinsic function from being called.
V6.0-67 The compiler no longer fails with a bugcheck in the LEXSYN phase if a BLOCK DATA
subprogram contains a variable which is named in an EQUIVALENCE statement but not
in a COMMON statement and the /ANALYSIS_DATA qualifier is used. Since such vari-
ables are of no use, BLOCK DATA subprograms should contain only COMMON variables,
the compiler now also issues an "unused variable" diagnostic if it finds non-COMMON
variables in a BLOCK DATA subprogram.
V6.1-68 The compiler no longer creates an incorrect layout for CDD structure arrays which have
an alignment attribute. In this case, the compiler now declares a fill field of the proper
total array size and issues the CDDALNARY diagnostic.
V6.1-69 The compiler no longer fails with a bugcheck during LEXSYN if an attempt is made to
declare an array with 10 or more dimensions. The maximum number of dimensions
allowed for an array is 7.
V6.1-70 The compiler no longer generates incorrect code for certain cases where a COMPLEX
variable was named in an I/O statement or passed as an actual argument and subse-
quently only the imaginary part was used.
Version Description
V6.1-71 The compiler no longer generates incorrect vector code for certain DO loops which have
non-constant increment expressions. Previously, the compiler could incorrectly calculate
the necessary number of iterations.
V6.1-72 The compiler now diagnoses as an extension to the FORTRAN-77 standard the omission
of a delimiter in a FORMAT between a scale factor and a repeated edit descriptor, for
example: 1P3E12.6. The status of this usage has been uncertain in the past, but X3J3,
the ANSI FORTRAN Standards Committee, has approved as a draft interpretation Defect
Item 50, stating that omission of the comma is indeed nonstandard for FORTRAN-77.
V6.1-73 The compiler no longer generates incorrect code for certain programs that have array
references in loops. The symptom was that a register was used for an array index that
was loaded earlier in the program, but the compiler was not taking into account the fact
that the register was modified by an operation later in the loop.
V6.1-74 The compiler was enhanced to detect character, Hollerith or RAD50 constants which
were continued across source lines; a potentially non-portable usage.
V6.1-75 The compiler no longer issues a FUNVALUND diagnostic for function return values
which become defined by their appearance in an input statement.
V6.1-76 The compiler now issues the warning ASSDOVAR if a function return value is used as
a DO-loop control variable and is assigned to inside the loop. Previously, the compiler
issued this warning for other types of variables but not function return values.
V6.1-77 The compiler no longer reports that a variable is unused if its only use is in a NAMELIST
group.
V6.1-78 The compiler's detection of uninitialized variables was improved and expanded to include
a new informational diagnostic USEBEFDEF if a variable is used before it is defined in
a subroutine or function, suggesting a reliance on implicit SAVE semantics but also
possibly indicating a programming error.
V6.1-79 The compiler now writes correct information to the debug symbol table about the start of a
routine and the routine's prolog code. This corrects a problem where if a SET MODULE
was not done in the debugger that EXAMINE/SOURCE of the routine name did not work.
Also, if the module is SET, a routine breakpoint will now stop after all of the routine
initialization prolog code instead of at the first instruction, thus allowing arguments to be
examined without having to step through the prolog code.
V6.1-80 The /WARNINGS=TRUNCATED_SOURCE feature was restored after being inadvertently
disabled for V6.1.
Version Description
V6.1-81 The compiler no longer issues an inappropriate VARUNUSED diagnostic for a vari-
able whose only use is as the loop control variable in an implied-DO loop in a DATA
statement (or data-initialization clause).
V6.1-82 The compiler no longer fails with a bugcheck during the LOCAL phase for certain
programs which declare a structure field which is a record array.
V6.1-83 The compiler now generates correct code when a pointee array is passed as an actual
argument.
V6.1-84 The compiler no longer fails with a bugcheck during the LEXSYN phase if a structure
field array is declared using an invalid dimension expression (eg. a CHARACTER or
STRUCTURE name) and the field array is subsequently referenced.
V6.1-85 The compiler no longer fails with a bugcheck during the CODE phase if a REAL16 or
*
COMPLEX *16 function is called recursively.
V6.1-86 The compiler no longer fails with a bugcheck during the CODE phase if a pointee array
is accessed in a program unit compiled with /CHECK=BOUNDS enabled.
V6.1-87 The compiler now silently ignores the CDEC$ OPTIONS and CDEC$ END OPTIONS
directives which are recognized by DEC Fortran on other platforms.
V6.1-88 The compiler no longer fails with a bugcheck during the SPLIT phase for certain pro-
grams compiled with /OPTIMIZE=LEVEL=4.
V6.1-89 The compiler no longer issues erroneous VARUNUSED warnings when structure
declarations appear in a BLOCK DATA subprogram.
V6.1-90 The compiler now suppresses VARUNUSED diagnostics for variables generated by the
FORTRAN/DML preprocessor when an INVOKE statement is used.
V6.1-91 The compiler no longer generates incorrect code for certain unusual programs which
contain nested loops performing an array copy operation in row-major order, a leftmost
array bound of 1 and a particular combination of datatype and loop length.
V6.1-92 The compiler no longer fails with a bugcheck during SELECT for programs which erro-
neously contain an IMPLICIT NONE statement after a statement which appears to be an
array declaration with 8 or more dimensions.
V6.1-93 The compiler now allows any 8-bit character other than codes X'00' through X'04' to
appear in a source line. Previously, any non-printing character would result in an
INVCHASOU warning and the offending character would be replaced by a blank. This
brings the behavior of the VAX compiler more in line with that of other DEC Fortran
implementations.
Version Description
V6.1-94 The compiler now treats a reference to an external routine in a USEROPEN specification
as a call reference for the purposes of the SCA analysis data file. This allows SCA to
find the routine as being (implicitly) called from the OPEN statement. Previously the
reference was treated as an address reference.
V6.1-95 The compiler no longer improperly processes a statement label when a source line has a
redundant continuation mark.
V6.1-96 Error messages relating to problems with source lines, for example REDCONMAR
or INVSTALAB are now displayed in the listing file after the appropriate source line
rather than before, have the correct line number indicated, and have more accurate LSE
diagnostics emitted.
V6.1-97 The compiler's use of virtual memory for large compilations was reduced somewhat.
V6.1-98 The compiler no longer issues a spurious VARUNUSED diagnostic for a variable used as
the loop control variable in an implied-DO-in-DATA in a BLOCK DATA subprogram.
V6.1-99 The compiler now emits correct SCA analysis data information for the use of a BLAS1-
Extended routine which was not named in a type declaration statement.
V6.1-100 The compiler now accepts the '#' character in column 1 as a whole-line comment de-
limiter. This is intended to allow the use of C preprocessors with Fortran source and use
of '#' as a general comment delimiter is not recommended.
V6.1-101 The compiler no longer generates incorrect code for certain pointee structure field
references.
V6.1-102 The compiler no longer generates incorrect code for certain COMPLEX statement func-
tions whose function value real part contains a dual negation.
V6.1-103 The compiler now correctly recognizes the IARGCOUNT, IARGPTR and LOC intrinsics
when /MATH_LIBRARY=V5 is specified.
V6.1-104 The compiler no longer fails with a bugcheck during CREATE_FLOW for certain pro-
grams when compiled with /VECTOR.
V6.1-105 FORSYSDEF.TLB, when rebuilt with this version or later of DEC Fortran, defines con-
stants (other than masks) which have negative values using decimal notation rather than
hexadecimal. This allows such values to be assigned to INTEG*2 variables and record
fields without causing the compiler to issue an EXCDIGTRU diagnostic.
V6.1-106 The compiler no longer generates incorrect code which causes a register to be overwritten
before its last use in certain uses of array elements in complex arithmetic.
V6.1-107 The compiler no longer generates incorrect code for certain cases involving the loading of
arguments to complex intrinsics.
Version Description
V6.2-108 A problem introduced in V6.1-97, which could cause the compiler to bugcheck or loop,
was corrected.
V6.2-109 The compiler no longer issues spurious VARUNUSED diagnostics for a POINTER
variable which is an actual argument or in COMMON if one of its pointees is used.
V6.2-110 The compiler's checking for uninitialized variables has been improved to include vari-
ables which have not been selected for full analysis (a maximum of 128 variables are
selected) but which have no stores in the program unit.
V6.2-111 The compiler no longer allocates an unnecessary longword of storage when a record
array declaration is seen.
V6.2-112 The compiler no longer improperly processes constants of the form B'xxx', O'xxx',
X'xxx' and Z'xxx' when the constant string includes embedded blanks or tabs (for exam-
ple: X'123 45'). Also, the compiler no longer issues a CHACONCONTD diagnostic if a
constant of the form 'xxx'X, etc. is continued across multiple source lines.
V6.2-113 The compiler no longer fails with a bugcheck during the LEXSYN phase when a logical-
IF contains a statement which would, if it appeared on its own, cause an "unrecognized
statement" error.
V6.2-114 The compiler no longer fails with a bugcheck during the PACK phase when the following
combination occurs: 1) Use of the SIN, COS, TAN, ATAN, LOG, LOG10, EXP or SQRT
intrinsics, 2) The argument to the intrinsic is of a COMPLEX type, 3) The compile com-
mand qualifiers /VECTOR and /MATH_LIBRARY=FAST were both specified. Note that
the /MATH_LIBRARY=FAST qualifier is documented to have an effect for real datatypes
only.
V6.2-115 The compiler no longer generates incorrect SCA analysis data information for a main
program which begins with a DATA, DEFINE FILE, FORMAT or NAMELIST statement.
In addition, the compiler now generates correct SCA typing information for variables
whose first appearance is in a NAMELIST statement which occurs in the executable part
of a program.
V6.2-116 The compiler no longer fails with a bugcheck during the LEXSYN phase under extremely
rare and unpredictable circumstances while processing an actual argument list.
V6.2-117 The compiler no longer fails with a bugcheck during the LIFE phase for certain pro-
grams which have an array reference as a DO-loop bound.
V6.2-118 The compiler no longer emits bounds checking code for expanded BLAS routines, even
if /CHECK=BOUNDS is in effect. The bounds checking code interfered with the common
use of passing multiple-dimension arrays to certain BLAS routines (for example, DSET).
Version Description
V6.2-119 The compiler no longer generates incorrect code for loading the argument to certain
COMPLEX *16 intrinsic functions such that the address of the argument was overwritten
by the real part of the argument.
V6.2-120 The compiler now correctly flags as an extension the use of the INTE*1, LOGICAL *2
and REAL *16 types in an INTRINSIC statement when /STANDARD=MIA is in effect.
V6.2-121 The compiler no longer fails with a bugcheck during the FINAL phase when a %LOC
function or LOC intrinsic makes a recursive reference to the enclosing subroutine or
function when the generated instruction for that reference is more than 128 bytes away
from the routine entry point. Also the compiler now correctly issues the ROUREFREC
diagnostic if such recursive reference occurs but the /RECURSIVE qualifier was not
specified.
V6.2-122 The compiler no longer issues a USEUNIVAR for the use of a character variable which
was partially defined by having had a substring passed as an actual argument.
V6.2-123 The compiler no longer disallows the lowercase letters 'a' through 'f' in prefix-style
hexadecimal constants (eg. X'123abc').
V6.2-124 The compiler now gives the ASSDOVAR warning if a DO-loop control variable appears
as an IOSTAT specifier in an I/O statement inside a DO loop.
V6.2-125 The compiler now properly sign-extends bit constants when used in contexts where they
are treated as INTEGER *2 or BYTE types. For further details, Section 2.3.5.
V6.2-126 The compiler no longer gives an INVLEXEME error when a record field array is used as
the buffer in an ENCODE or DECODE statement.
V6.2-127 The compiler no longer fails with a bugcheck during the CODE phase for certain pro-
grams which use inlined BLAS intrinsics and are compiled /CHECK=BOUNDS.
V6.2-128 The compiler now emits the correct DEBUG symbol table information for untyped (non-
Fortran-77) PARAMETER constants whose value is a bit constant longer than 32 bits so
that these values may be evaluated during a DEBUG session.
V6.2-129 The compiler now supports /DEBUG=PARAMETERS=NONE. If this is speci-
fied, no PARAMETER constants are written to the debug symbol table. Note that
/DEBUG=NOSYMBOLS prevents any debug symbol information, including PARAMETER
constants, from being written.
V6.2-130 The compiler now supports the command
line keywords /WARNINGS=[NO]INFORMATIONAL and /ASSUME=[NO]SOURCE_
INCLUDE.
Version Description
V6.2-131 The compiler no longer fails with a bugcheck during the CODE phase when a pointee
non-adjustable array is passed by descriptor.
V6.2-132 The compiler no longer issues a VARUNUSED diagnostic for pointees.
V6.2-133 The compiler no longer corrupts its internal memory structures for certain programs
which contain COMPLEX variables. While in most cases this corruption seemed to be
harmless, it has been known to cause the compiler to fail with an access violation during
the SPLIT phase. Other symptoms are possible.
V6.2-134 The compiler no longer generates incorrect code which would return an improper result
for %LOC of a pointee array.
V6.2-135 The compiler no longer fails with a bugcheck during the SELECT phase if a program
contains more than 252 COMMON blocks and EQUIVALENCEs variables in some of
those COMMON blocks.
V6.2-136 The compiler no longer generates incorrect code in some cases when an actual argument
is used as an argument to a two-operand intrinsic routine such as SIGN.
V6.2-137 The compiler no longer gives a spurious FMTINVCHA error when a FORMAT state-
ment has interspersed comment lines and the /DESIGN=COMMENTS compile command
qualifier is in effect.
V6.2-138 The compiler no longer fails with a bugcheck during the LOCAL phase when an ex-
pression involving a mixture of a call to an external function declared REAL and a
COMPLEX expression is the argument to certain intrinsic functions.
V6.2-139 The compiler no longer fails with a bugcheck during ALLOCATE when a RECORD state-
ment declares a pointee as a record with a structure which contains data initialization.
The new behavior is to ignore the data initialization for that record variable as is already
done if the variable is a formal argument.
V6.2-140 The compiler no longer fails with a bugcheck during the PACK phase when an expres-
sion compares two pointee character record fields which are not at the base of the record
structure.
V6.3-141 The compiler no longer fails with a bugcheck during the LIFE phase when an ENTRY
statement includes in its formal argument list a name which has been previously de-
clared as a pointee. This usage is invalid; the compiler will now issue a MULDECNAM
error.
V6.3-142 The compiler no longer fails with a bugcheck during the PACK phase for certain pro-
grams with expressions containing character concatenation, substrings and the use of
the ISHFT intrinsic function.
Version Description
V6.3-143 The compiler no longer fails with a bugcheck during the LIFE phase when the argument
to SIZEOF is a function reference.
V6.3-144 The compiler now checks local variables for misalignment due to EQUIVALENCE when
/WARNINGS=ALIGNMENT is specified.
V6.3-145 The compiler no longer fails with a bugcheck during the SELECT phase for certain main
programs containing an adjustable array declaration which is followed by an IMPLICIT
NONE statement.
V6.3-146 The compiler no longer generates bad code for certain programs which pass pointee
record fields as actual arguments.
V6.3-147 The compiler no longer fails with a bugcheck during the SYNC phase when
/OPTIMIZE=LEVEL=4 is specified for certain programs containing a comparison be-
tween a type conversion from a non-integer or logical type (eg. ICHAR) and .TRUE. or
.FALSE..
V6.3-148 The compiler no longer generates incorrect DEC Source Code Analyzer information for
certain references to BLAS intrinsics when the /ANALYSIS_DATA qualifier is specified.
V6.3-149 The compiler no longer fails with a bugcheck during the LEXSYN phase in rare cir-
cumstances for certain programs using the DICTIONARY statement. (This problem
was reported against DEC Fortran for OpenVMS Alpha; the VAX compiler shares the
problem even though it has never been reported on a VAX.)
V6.3-150 The compiler now correctly disallows in all cases the use of the %REF, %VAL and
%DESCR built-in functions outside the context of an actual argument.
V6.3-151 The compiler no longer generates incorrect DEC Source Code Analyzer infor-
mation for certain programs containing placeholders in declarations when the
/DESIGN=PLACEHOLDERS and /ANALYSIS_DATA qualifiers are specified.
V6.3-152 The compiler no longer generates bad code or spurious USEUNIVAR warnings in
unusual circumstances for certain programs in which a variable becomes defined by
its appearance in the I/O list of a READ statement and where just prior to the read a
subroutine was called with a record field as an actual argument.
V6.3-153 The compiler no longer generates bad code, where an array index register would get
overwritten, for certain programs containing a use of the MAX or MIN intrinsic func-
tions with array element arguments as an actual argument.
V6.3-154 The compiler's listing of PSECT attributes now uses the keywords OCTA and PAGE for
alignments of 2 4 and 2 9.
** **
V6.3-155 The compiler now emits Debug Symbol Table information for pointees.
Version Description
V6.3-156 The compiler no longer emits incorrect code for certain cases of a COMP*16 intrinsic
function reference.
V6.3-157 The compiler now permits a RECORD variable whose corresponding STRUCTURE
is DATA-initialized to be used as a pointee in a POINTER statement. The data-
initialization attribute is ignored, as it is already if a DATA-initialized RECORD is
used as a dummy argument. This allows the same STRUCTURE to be used for a pointee
and a local variable.
V6.3-158 The compiler no longer emits initialization code to load the vector alignment fixup
handler when /CHECK=ALIGN is specified for a BLOCK DATA subprogram.
V6.3-159 The compiler no longer fails with a bugcheck in the LOCAL phase for certain programs
containing a reference to a COMPLEX array where the array index expression contains
a function call and /CHECK=BOUNDS is specified.
V6.3-160 The compiler no longer fails with a bugcheck in the SPLIT phase for certain programs
which use pointee arrays.
V6.3-161 If a the first executable statement is followed by a blank line or comment, the compiler
now correctly emits DEBUG information indicating that the executable code begins at the
first executable statement rather than the second.
V6.3-162 The compiler no longer passes the wrong address for an integer variable passed by de-
scriptor to a subroutine when that variable is incremented in a loop in the called routine
and /OPTIMIZE=LEVEL=4 is specified.
V6.3-163 The compiler now emits the informational diagnostic STREMPTY if a STRUCTURE is
declared with no fields.
V6.3-164 The compiler now assumes the VOLATILE attribute for all formal arguments for a sub-
program in which IARGCOUNT or IARGPTR is used. See Section 1.4.for additional
details.
V6.4-165 The DPROD intrinsic is now generic and accepts REAL *8 arguments, giving a REAL*16
result. SeeSection 2.2.for additional information.
V6.4-166 The compiler now produces more compact object modules and machine code listings
when a variable is data initialized using a repeated character or Hollerith constant.
V6.4-168 The compiler now correctly implements the BLAS routines CSROT and ZDROT as having
a real argument S.
V6.4-169 The listing file now more correctly reflects the effects of CDEC$ ALIAS.
V6.4-170 If an untyped bit or Hollerith constant is used in an aritmetic-IF, its type is assumed to
be INTEGER *4.
Version Description
V6.4-171 The compiler no longer gives a MULDECNAM error if, in a recursive subroutine, there
is a call to a contained entry point passing an alternate return label.
V6.4-172 The compiler now correctly parses the CDEC$ OPTIONS /ALIGN=RECORD directive,
and properly accounts for UNIONs when aligning.
V6.4-173 The compiler no longer fails with a bugcheck during CSE for certain programs using an
array reference with a constant subscript as the upper bound of a DO loop.
V6.4-174 The compiler now disallows dummy arguments of ENTRYs in data initialization.
V6.4-176 The compiler now produces better diagnostics for invalid bit constants.
V6.4-177 The compiler now forces STRUCTUREs derived from DICTIONARY statements to
be packed, even if /ALIGN=RECORDS=NATURAL is in effect. Use CDD/Repository
alignment attributes to align DICTIONARY fields.
V6.4-178 The compiler no longer allows the recursive use of a subroutine's entry name as a
function.
V6.4-179 The compiler now issues the YEAR2000 informational message if the IDATE or DATE
intrinsics are used. This can be controlled with /WARNINGS=NOUSAGE.
V6.4-180 The compiler no longer generates incorrect code when passing a pointee to a non-
adjustable character array as an actual argument.
V6.4-181 The compiler now issues at most one CHACONCONTD diagnostic while processing a
character constant format.
V6.4-182 The compiler no longer fails with a bugcheck during CODE for certain programs using
DCMPLX of a variable EQUIVALENCEd into COMMON when /NOOPT is in effect.
V6.4-183 The compiler no longer fails with a bugcheck during LOCAL when compiling certain
functions that have both COMPLEX and REAL entry points.
V6.4-184 The compiler no longer fails with a bugcheck for when compiling certain functions that
assign a pointee value to the function return value.
V6.4-185 If an INTEGER *4 constant value is converted to INTEGE2, overflow is detected in all
appropriate cases.
V6.4-187 If an untyped binary, octal or hexadecimal constant is used in an arithmetic operation
with an integer constant, the untyped constant assumes the INTEGE*4 type, even if the
integer constant's value implies that its type be INTE2.R
*
V6.5-188 The DATE_AND_TIME intrinsic routine is now supported.
Version Description
V6.5-189 Use of the LOC intrinsic on an untyped EXTERNAL name where IMPLICIT NONE is in
effect no longer results in an INTFUNARG error.
V6.5-190 Implement /WARN=[NO]UNREACHABLE.
V6.5-191 The use of %DESCR, %REF or %VAL in an I/O list is now properly diagnosed with an
INVPERUSE error.
V6.5-192 The compiler no longer bugchecks if OPTIONS /BLAS=keyword is used.
V6.5-193 The compiler no longer outputs invalid debug symbol table information for record struc-
tures when /ALIGN is in effect.
V6.5-194 An unformatted I/O statement with *as the unit specification now gives an INVIOSPEC
error.
V6.5-195 The compiler no longer bugchecks during GRAPH when /OPT=LEVEL=4 is in effect for
certain programs which repeatedly evaluate character substrings.
V6.5-196 The optimizer now considers COMMON variables to be possibly accessed during an OPEN
statement (a USEROPEN may access COMMON). Also, the compiler now considers the
number of routine calls in a program unit when deciding whether or not to keep a copy
of a COMMON variable in a register, as it has to save and restore the variable around
each call.
V6.5-197 A new informational diagnostic COMNAMCONF is issued if a COMMON name is found
to be the same as some other global entity in the same program unit. This is a violation
of the Fortran 77 standard and causes errors on other platforms. This message can be
disabled with /WARNINGS=NOUSAGE.
V6.5-198 The compiler now accepts the syntax CHARACTER *(expr) FUNCTION where "expr" is
an integer constant expression. This is Fortran 77 standard syntax which previously was
not accepted.
V6.5-199 Correct a problem created by edit V6.5-198 that could cause routines with more than six
arguments to fail to compile.
V6.6-201 Name change to Compaq Fortran 77, version 6.6.