Compaq Fortran 77 Release Notes for OpenVMS VAX Systems
 *HyperReader
  Next     Previous     Contents     Examples     Tables     Close     Help  
  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.

  Next     Previous     Contents     Examples     Tables     Close     Help     ~Off