Compaq Fortran 77 Release Notes for OpenVMS VAX Systems
 *HyperReader
  Next     Previous     Contents     Examples     Tables     Close     Help  
  2.8  New and Changed Features

  This section provides highlights of new and changed features
  in Compaq Fortran 77

  2.8.1  New Command Qualifiers and Qualifier Parameters

  Several new qualifiers and qualifier parameters to the
  FORTRAN command have been implemented to invoke
  and control the new features mentioned in the previous
  section.  In addition, the /CONTINUATIONS and /HPO qual-
  ifiers are now ignored; see Sections  2.8.1.2and  2.8.1.3for
  more details.

  The new qualifiers and qualifier parameters are listed be-
  low.  See theDEC Fortran User Manual for OpenVMS VAX
  Systems  for complete details on qualifier syntax and mean-
  ings.

  *   /ASSUME=(ACCURACY_SENSITIVE,DUMMY_ALIASES)

      Specifies assumptions the compiler is allowed to make
      when considering potential optimizations.

  *   /BLAS=(INLINE,MAPPED)

      Controls recognition of and code generation for routines
      from the Basic Linear Algebra Subroutines Level 1 group.

  *   /CHECK=(ALIGNMENT,ASSERTIONS)

      Controls compiler generated code for recovery from vec-
      tor alignment faults and checking of ASSERT conditions.

  *   /DIRECTIVES=(DEPENDENCE)

      Controls recognition of dependence directives.

  *   /ERROR_LIMIT=n

      Controls whether compilation terminates after a specified
      number of errors has been found.

  *   /MATH_LIBRARY=(ACCURATE | FAST,V5)

      Controls selection of vector math library routines and
      whether or not the compiler restricts use of math library
      routines to those supplied by OpenVMS V5.x.  (See section
      Section 2.8.1.4for more information on the V5 keyword.)

  *   /OPTIMIZE=LEVEL=n

      Specifies the optimization level.

  *   /PARALLEL=(AUTOMATIC,MANUAL)

      Controls whether the compiler peforms automatic de-
      composition of DO loops for parallel processing and
      /or enables recognition of the manual decomposition
      directives from VAX FORTRAN V5.

  *   /RECURSIVE

      Controls generation of reentrant (recursive) code and
      data.

  *   /SHOW=(DATA_DEPENDENCES,LOOPS)

      Controls presentation of data dependences in the listing
      and diagnostics file and loop structure in the listing.

  *   /STANDARD=MIA

      Controls whether the compiler performs standards com-
      pliance against the NTT MIA standard.

  *   /SYNCHRONOUS_EXCEPTIONS

      Controls when vector arithmetic exceptions are reported.

  *   /TERMINAL=STATISTICS

      Specifies display of the module name and combined code
      and data bytes as each module is compiled.

  *   /VECTOR

      Controls generation of VAX vector processor code.

  *   /WARNINGS=(ALIGNMENT,Alpha,INLINE,TRUNCATED_SOURCE)
      Specifies whether the compiler provides warnings of:

      unaligned variables in COMMON or EQUIVALENCE
      statements, uses of language features not supported by
      Digital Fortran on Alpha platforms, references to BLAS
      routines which were not expanded inline, source lines
      longer than the statement field width.

  2.8.1.1  /WARNINGS=[NO]ALIGNMENT Default Changed

  The default for /WARNINGS=[NO]ALIGNMENT has been
  changed to NOALIGNMENT so as to reduce unneces-
  sary messages when vector processing is not being used.

  /WARNINGS=ALIGNMENT is recommended for com-
  pilations which declare data which is to be used by vector
  instructions, for applications which are to be ported to the

  Alpha environment, and for users who wish to eliminate
  unaligned data for maximum scalar performance on VAX
  systems.

  2.8.1.2  /CONTINUATIONS Qualifier Obsolete

  In previous versions of VAX FORTRAN, the /CONTINUATIONS
  compile command qualifier was used to specify the minimum
  number of continuation lines which the compiler would ac-
  cept.  The default was 19 and the maximum was 99.  This
  qualifier is now obsolete and is ignored if specified; the com-
  piler will always accept a minimum of 99 continuation lines
  of 132 characters each.  The number of continuation lines ac-
  cepted may be greater if some of the lines are shorter than
  132 characters.  The compiler will still issue a diagnostic if
  more than 19 continuation lines (of any length) are found
  and the /STANDARD=SOURCE_FORM compile command
  qualifier is specified.

  If the FDML preprocessor, a component of the VAX DBMS
  product and invoked with the FORTRAN/DML command, is
  used, the /CONTINUATIONS qualifier may still be necessary.
  See Section 2.7.5.3for more information.

  2.8.1.3  /HPO Qualifier and FORTRAN-HPO PAK Obsolete
  The /HPO compile command qualifier, which was used to
  select between the VAX FORTRAN and VAX FORTRAN-

  HPO compilers, is now obsolete and is ignored if specified.
  Also, the FORTRAN-HPO Product Authorization Key (PAK)
  is no longer necessary in order to use the automatic vector-
  ization or decomposition features.

  2.8.1.4  New /MATH_LIBRARY=V5 Qualifier Keyword
  The /MATH_LIBRARY qualifier accepts a new [NO]V5 key-
  word which is not currently documented in the      DEC Fortran
  User Manual for OpenVMS VAX Systems          .  This keyword
  controls whether or not the compiler restricts itself to us-
  ing only those Math Library routines which were used by
  VAX FORTRAN V5.x and supplied by OpenVMS VAX V5.0-
  V6.0 (V5.4 for vector routines.)  The default is NOV5 which
  allows the compiler to use the new routines for intrinsic
  function references as described in  Section 2.8.14. If V5 is
  specified, the compiler does not use the new routines so that
  the object module may be linked against an OpenVMS VAX

  V5.x math library; the result will be performance comparable
  to that obtained with VAX FORTRAN-HPO.

  2.8.2  FORT$LIBRARY Logical Name as Search List

  The FORT$LIBRARY logical name is used to define an ad-
  ditional default library for INCLUDEs from text libraries.

  In previous releases, if FORT$LIBRARY were defined with
  multiple translations (a search list), only the first trans-
  lation would be used.  As of Version 6.0, the compiler will
  recognize the multiple translations and will search each li-
  brary specified before searching the system default library
  FORSYSDEF.TLB. Within the list of translations, file name
  defaulting occurs as it would for a plus-list of input files
  specified on the command line with the /LIBRARY qualifier.
  For example, given the following definition:

      $  DEFINE  FORT$LIBRARY  MYDISK:[MYDIR]LIB1,[MYDIR2]LIB2,LIB3

  The compiler would search the following libraries in order:

      MYDISK:[MYDIR]LIB1.TLB
      MYDISK:[MYDIR2]LIB2.TLB
      MYDISK:[MYDIR2]LIB3.TLB

  If any of the specified libraries do not exist or are not valid
  text libraries, a warning diagnostic will be displayed.  See the
  DEC Fortran User Manual for OpenVMS VAX Systems             for
  more information on using text libraries.

  2.8.3  FORT$INCLUDE Logical Name
  Compaq Fortran 77 Version 6.0 provides the ability to
  specify a default location for INCLUDE files.  If the logi-
  cal name FORT$INCLUDE is defined, the compiler uses
  'FORT$INCLUDE:.FOR' as the default file specification
  for non-library files and 'FORT$INCLUDE:.TLB' for li-
  brary files specified in an INCLUDE statement.  Definition of
  FORT$INCLUDE does not affect default library files spec-
  ified by the logical name FORT$LIBRARY nor the system
  default library FORSYSDEF.TLB. FORT$INCLUDE may be
  defined as a search list.

                                Note

      If the current default disk and directory is to be
      searched, 'SYS$DISK:[ ]' must be explicitly included in
      the search list definition of FORT$INCLUDE.

  For example, given the existence of the following files:

      MYDISK:[DIR1]INC1.FOR
      MYDISK:[DIR2]INC2.FOR,LIB1.TLB
      MYDISK:[DIR3]INC2.FOR
  and the logical name definition:

      $  DEFINE  FORT$INCLUDE  MYDISK:[DIR1],[DIR2],[DIR3]

  the following INCLUDE statements would access the indi-
  cated files:

      INCLUDE  'INC1'        !  MYDISK:[DIR1]INC1.FOR
      INCLUDE  'INC2'        !  MYDISK:[DIR2]INC2.FOR
      INCLUDE  'LIB1(MOD1)'  !  MYDISK:[DIR2]LIB1.TLB

  2.8.4  Language Syntax

  Several new language statements, directives and syntax ex-
  tensions have been implemented; a summary is provided
  below.  Some of the syntax extensions have been provided for
  greater compatibility with Digital Fortran on other platforms;
  others were introduced in VAX FORTRAN-HPO. See the
  DEC Fortran Language Reference Manual        for more details.

  *   ASSERT statement and directive

  *   AUTOMATIC statement

  *   INIT_DEP_FWD directive

  *   INTEGER     1 type declaration (synonym for BYTE)
                 *

  *   NOVECTOR directive

  *   POINTER statement

  *   STATIC statement

  *   '1010'B syntax for binary typeless constants, '10AB'Z as
      alternative to '10AB'X for hexadecimal typeless constants

  *   B'1010', O'2377', X'10AB', Z'10AB' forms of typeless
      constants

  2.8.5  Non-native Data in I/O Feature
  Compaq Fortran 77 Version 6.0 includes the ability to read
  and write numeric data which is in non-native formats us-
  ing unformatted I/O. The formats available, in addition to the
  native VAX floating and little-endian integer types are:  IEEE
  little-endian floating and integers (compatible with Alpha and
  RISC DECstation systems), IEEE big-endian floating and in-
  tegers (Sun, IBM RS-6000, etc.), CRAY big-endian floating
  and integers and IBM System\370 big-endian floating and
  integers.

  To enable this feature for individual logical units opened
  for unformatted I/O use the new CONVERT= keyword in
  an OPEN statement.  The INQUIRE statement also allows
  a CONVERT= keyword to inquire of the current conver-
  sion type.  The /CONVERT compile command or OPTIONS
  statement qualifier provides a default conversion type for all
  units opened in the program unit.  It is also possible to define
  a logical name at run-time to specify the convert type for
  individual program units.

  If an application uses the CONVERT= OPEN or INQUIRE
  keyword, or uses /CONVERT and OPEN, the program will
  fail with an "Invalid argument to FORTRAN Run-Time

  Library" error if it is run on an OpenVMS VAX system
  which does not include the enhanced Fortran Run-Time
  Library support provided with Compaq Fortran 77.  If

  /CONVERT is used but a unit is implicitly opened, or if the
  logical name method is used, no error will occur but neither
  will the feature be enabled if the program is run on a sys-
  tem without the new support.  To test in a program whether
  or not the non-native data in I/O support is available, execute
  an INQUIRE statement with a CONVERT= keyword for
  any unit.  If no error occurs (IOSTAT=0 or no ERR= branch),
  then the support is present.

  For more information on OPEN and INQUIRE, see the           DEC
  Fortran Language Reference Manual      .  For more informa-
  tion on the /CONVERT qualifier and use of logical names to
  access this feature, see the DEC Fortran User Manual for
  OpenVMS VAX Systems      .

                               Caution

      Applications which use this feature cannot currently
      be translated by DECmigrate to run on OpenVMS

      Alpha systems.

  2.8.6  New Intrinsic Routines

  A number of new intrinsic routines are recognized by the
  Compaq Fortran 77 compiler.  If your application has user-
  supplied routines with the same names as intrinsic routines,
  you should add EXTERNAL declarations for those routines
  in modules which use them, otherwise the compiler will at-
  tempt to recognize them as intrinsics.  The names of the
  new intrinsic routines are shown in   Table 2-3   and are de-
  scribed in more detail in the DEC Fortran Language Reference
  Manual  .

  2.8.7  Automatic Decomposition for Parallel Processing
  The Compaq Fortran 77 compiler has the ability to auto-
  matically determine where it is effective and safe to execute
  DO-loops in parallel on VAX multiprocessor systems.  This
  feature, previously introduced in VAX FORTRAN-HPO,
  is selected by specifying the compile command qualifier
  /PARALLEL=AUTOMATIC. The directed (manual) decom-
  position feature which was provided by VAX FORTRAN V5
  is selected by the /PARALLEL=MANUAL qualifier.  Both
  automatic and manual decomposition may be selected for
  a given compilation.  See the  DEC Fortran User Manual
  for OpenVMS VAX Systems       and  DEC Fortran Performance

  Guide for OpenVMS VAX Systems        for more details.

  2.8.8  Generation of VAX Vector Processor Code

  The /VECTOR compile command qualifier causes the com-
  piler to generate vectorized code for DO-loops when it is
  effective and safe to do so; this feature was previously in-
  troduced in VAX FORTRAN-HPO. The vector code can
  execute on VAX processors that support the VAX Vector
  Architecture (the VAX 6000-400 series, VAX 6000-500 se-
  ries and VAX 9000 series with optional VAX vector processor
  boards), or on any VAX system running OpenVMS VAX V5.4
  or later with the VAX Vector Instruction Emulator Facility
  (VVIEF)  enabled.  For more information on vectorization, see
  the DEC Fortran User Manual for OpenVMS VAX Systems
  and the  DEC Fortran Performance Guide for OpenVMS VAX
  Systems  .  For more information on VVIEF, see the    VMS V5.4

  New Features Manual    .

  2.8.9  Recursion and Automatic Storage
  The /RECURSIVE compile command or OPTIONS statement
  qualifier causes the compiler to generate recursion-capable
  or reentrant code and data, which permits a given routine
  to be reentered while a call to it is currently active.  When
  the /RECURSIVE qualifier is in effect, the compiler's default
  memory allocation is changed from     static, in which local
  variables and compiler-generated data structures such as
  descriptors and argument lists are allocated at fixed locations,
  toautomatic  , in which these items are allocated on the stack
  each time the routine is entered.  Automatic allocation pre-
  vents conflicts between multiple calls to the same routine at
  the same time; a situation which might occur if, for example,
  multitasking software such as DEC Ada or DECthreads was
  in use.

  The /RECURSIVE qualifier also allows a call to a subroutine
  or a function from within that subroutine or function; such
  use is invalid if /NORECURSIVE, the default, is in effect.

  Automatic allocation can also be selected for individual vari-
  ables even if /NORECURSIVE is in effect by means of the
  AUTOMATIC specification statement.  Similarly, static allo-
  cation can be forced for individual variables by means of the

  STATIC statement.  See the   DEC Fortran Language Reference
  Manual   for more details on AUTOMATIC and STATIC.

  Automatic allocation is not permitted for variables named in
  EQUIVALENCE, SAVE or STATIC statements, which are
  data-initialized, or are named as the  pointee in a POINTER
  statement.

  /RECURSIVE is not permitted if /PARALLEL is in effect.  See
  the DEC Fortran User Manual for OpenVMS VAX Systems
  for more information on the /RECURSIVE qualifier.

  2.8.9.1  Automatic Allocation and Vectorization

  The requirement that double-precision data used by VAX
  vector instructions be quadword aligned poses a problem
  when such data is to be allocated on the stack, either im-
  plicitly due to the /RECURSIVE qualifier being specified or
  due to an AUTOMATIC declaration.  As the VAX archi-
  tecture guarantees only longword alignment for the stack
  upon entry to a subroutine, the compiled code must force the
  stack to be quadword aligned.  This is accomplished by a spe-
  cial instruction sequence which is generated when one or
  more double-precision or double-complex variables is to be
  stack-allocated and the /VECTOR qualifier is specified.  The
  instruction sequence appears in the machine code listing as
  follows:

      0000   SUB::
      0000         .WORD         ^M<IV,R2,R3,R4,R5,R6,R11>    1
      0002         BITL          #^X7,  SP 2
      0005         BEQL          L$1

      0007         CALLG         (AP),  L$0  3
      000B         RET
      000C         NOP   4
      000D         NOP
      000E   L$0:
      000E         .WORD         ^M<IV>
      0010   L$1:  5
      0010         MOVAL         $LOCAL,  R11
      0017         SUBL2         #20,  SP
      001A         MOVC3         #12,  $LOCAL(R11),  -20(FP)

   1  This is the entry mask of the routine or main program
      entry point, as seen by an external caller.  It specifies all of
      the registers to be saved before the routine is entered.

   2  The stack pointer register is tested to see if it is quad-
      word aligned; that is, a multiple of 8.  If it is, the routine's
      regular prologue code is branched to at label L$1.
   3  If the stack is not quadword aligned, a call is made to a
      special entry mask at L$0 which specifies no registers to
      be saved.  As the fixed part of the stack frame is an odd
      number of longwords (5), the stack will now be quadword
      aligned.
   4  Two non-executed NOP instructions are inserted to force
      the L$1 branch target to quadword alignment, which im-
      proves performance when the branch to it is taken.  The
      compiler specifies quadword alignment for the $CODE

      PSECT.

   5  The normal routine prologue code begins here.  After the
      base register for statically-allocated storage is loaded, the
      next two instructions allocate the required space on the
      stack and initialized with any link-time constant data
      (descriptors, argument lists, etc.)  if needed.

  In order to reduce the overall performance impact of this ad-
  ditional code, the compiler tries to ensure that the alignment
  call is performed as few times as possible during the life of
  the application.  It does this by forcing the stack to be non-
  quadword aligned (but longword aligned) after the stack area
  is allocated and ensuring that the register save mask causes
  an even number of registers to be saved.  This will tend to
  keep the stack quadword aligned for nested calls, assuming
  that the called routines also use automatic storage and are
  compiled with /VECTOR.

  There are some important considerations to be aware of
  when using automatic storage and vectorization:

  *   If recursion or automatic storage is used in any of the
      program units, all program units should be compiled with
      the /VECTOR qualifier to ensure proper stack alignment
      (and to reduce the need for alignment to take place.)

  *   Exception handlers which count call frames may need to
      be aware of the possibility of the presence of an extra call
      frame.

  2.8.10  Basic Linear Algebra Subroutines
  The Compaq Fortran 77 compiler recognizes as intrinsics the
  routines comprising the Basic Linear Algebra Subroutines li-
  brary, Level 1 and Level 1 Extended; this feature was first
  introduced in VAX FORTRAN-HPO. In most cases, the
  compiler generates inline code for references to the BLAS
  routines; this code can be further vectorized and/or de-
  composed for improved performance if the /VECTOR or
  /PARALLEL qualifiers are in effect.  For more information,
  see the DEC Fortran Language Reference Manual        and the
  DEC Fortran Performance Guide for OpenVMS VAX Systems
  for more details.

  2.8.11  Performance Optimization for Large Array
          Operations
  In many applications which perform operations on large ar-
  rays, performance is often limited by the behavior resulting
  from the typical pattern of memory access which causes nu-
  merous page faults.  The Compaq Fortran 77 compiler can
  analyze program units and, when it determines that it is safe
  and effective to do so, can rearrange DO-loops and insert
  "chunking" loops so as to significantly reduce the number of
  memory pages being accessed in close succession and hence
  improve performance by reducing page faults.  This opti-
  mization is done automatically when /VECTOR is specified,
  and it is now also available for scalar processors.  The new

  /OPTIMIZE=LEVEL=4 compile command qualifier enables
  this optimization.

  When using /OPTIMIZE=LEVEL=4, it is recommended that
  you also specify /DIAGNOSTICS and /SHOW=(LOOPS,DATA_
  DEPENDENCE) so that the compiler can report on inhibitors
  to this additional level of optimization.  Not all applications
  will benefit from this optimization, but those which do can see
  significant elapsed time improvements.  See the   DEC Fortran
  Performance Guide for OpenVMS VAX Systems          for more
  information.

  2.8.12  Optimizations of Operations on COMPLEX
          Variables

  In previous versions of VAX FORTRAN, most operations
  on complex-typed variables were performed by calls to the
  OpenVMS Run-Time Library.  Compaq Fortran 77 Version
  V6.0 now does many of these operations, such as complex
  multiply, inline, and separates the real and imaginary parts
  of complex variables for further optimization.

  2.8.13  Optimizations on References to Dummy Arguments

          and COMMON
  The Compaq Fortran 77 compiler can now make local copies
  of dummy arguments and/or variables in COMMON blocks
  for improved performance.  Previously, the generated code
  would always reference such variables through the argument
  list or COMMON block.  The compiler is careful to always
  copy values back or fetch new values when the language se-
  mantics require it, but some applications may have taken
  advantage of the previous implementation's limitation in this
  area and may produce incorrect results.

  For dummy arguments,  it is important to specify
  /ASSUME=DUMMY_ALIASES or to declare the variable
  as VOLATILE if a dummy argument can be addressed
  through some path other than the argument name; for ex-
  ample, if a dummy argument is also a COMMON variable,
  or if the routine can be called with some arguments omitted.

  By default, Compaq Fortran 77 assumes that the application
  conforms to the FORTRAN-77 standard in that it does not
  alias dummy arguments and that all actual arguments agree
  in order, number and data type (or structure, for record ar-
  guments), with their corresponding dummy arguments.  See
  the DEC Fortran User Manual for OpenVMS VAX Systems

  for more information on the /ASSUME=DUMMY_ALIASES
  option.

  For variables in COMMON, it is important to name in a

  VOLATILE statement any variables or COMMON blocks
  that can be referenced (either read or written) other than by
  direct reference or during a routine call.  For example, if a
  variable in COMMON is referenced in an OpenVMS AST
  routine, condition handler or exit handler, or is in a shared
  global section, you must declare as volatile that variable,
  or the COMMON block to which it belongs.  See the       DEC

  Fortran Language Reference Manual       for more information
  on the VOLATILE statement.

  2.8.14  Optimizations on Intrinsic Functions

  Compaq Fortran 77 performs additional optimizations for
  references to many intrinsic functions.  A side-effect of
  these optimizations is that more statement functions which
  reference these intrinsics can be expanded inline.

  *   Inline and/or vectorized code can be generated for refer-
      ences to the SIGN intrinsic with integer operands.

  *   New higher-performance      JSB  Mathematics Library en-
      try points are used for references to the AMOD, ATAN,
      ATAN2, CABS, CCOS, CEXP, CLOG, COSH, CSIN,
      CSQRT, SINH and TANH intrinsics, as well as for the

      SIGN intrinsic when real operands are specified.  This
      optimization is disabled if the compile command qualifier
      /MATH_LIBRARY=V5 is specified.

  *   The compiler can now vectorize references to the ATAN2,
      CCOS, CEXP, CLOG, COSH, CSIN, CSQRT, MOD
      (integer and real), SINH and TANH intrinsics.  This opti-
      mization is disabled if the /MATH_LIBRARY=V5 compile
      command qualifier is specified.

                                Note

      The values returned by the CEXP intrinsic may dif-
      fer in the least significant bit from those returned
      by earlier versions of VAX FORTRAN, but the new
      values are more accurate.

  2.8.15  Detection of Uninitialized Variables
  The Compaq Fortran 77 compiler will now issue a FORT-

  W-USEUNIVAR warning when it detects a use of a local
  scalar variable for which it has determined that the vari-
  able is uninitialized at the point of use.  The compiler cannot
  detect all cases of uninitialized variables, and does not pro-
  duce a warning for variables which are named in a SAVE
  or VOLATILE statement, data-initialized, or equivalenced
  to a variable which is data-initialized, nor in a program
  unit for which /DESIGN=PLACEHOLDERS was in effect
  and placeholders were seen.  The warnings are not issued if
  /NOOPTIMIZE or /WARNINGS=NOUNINITIALIZED is in
  effect.  (/NOOPTIMIZE prevents the compiler from collect-
  ing the information it needs in order to properly determine a
  variable's initialization status.)

  A warning is given only once for a given variable in a
  program unit.  The warning message includes the line
  number on which the uninitialized use occurred; if the

  /DIAGNOSTICS qualifier was also specified and the diag-
  nostics are reviewed in the Language-Sensitive Editor, the
  GOTO SOURCE (CTRL/G) command will position the editor
  at the offending use.

  It is particularly important to find and correct uses of unini-
  tialized variables when automatic storage is used, as the
  initial values of automatic variables are unpredictable, in
  contrast to that of static variables which are initialized to
  zero.

  2.8.16  Vectorization of DO-Loops with INTEGER        2 Control
                                                       *
          Variables
  The Compaq Fortran 77 Version V6.0 compiler can now vec-
  torize DO-loops which have INTEGER        2 control variables.
                                           *
  Previously in VAX FORTRAN-HPO, such loops were not
  eligible for vectorization.

  2.8.17  Design Processing Features

  Compaq Fortran 77 supports the design processing features
  of VAX Language-Sensitive Editor/Source Code Analyzer.

  These features allow you to embed design information
  in Fortran source, compile program units which contain
  pseudocode and other LSE placeholders, and generate doc-
  umentation, help text and LSE syntax templates from your
  application source.  See the description of the /DESIGN qual-
  ifier in theDEC Fortran User Manual for OpenVMS VAX
  Systems  for more details.

  2.8.18  VOLATILE Allowed for RECORD Variables
  The VOLATILE declaration is now allowed for variables
  declared in RECORD statements; previously, this was not
  allowed.  It is important to declare as volatile any variable
  which can be modified by means other than an assignment
  statement or being passed as an actual argument.  Variables
  in COMMON blocks should also be declared volatile if they
  can change at times other than during routine calls.

  2.8.19  Formal Arguments Allowed in NAMELIST Groups

  Routine formal arguments may now appear in NAMELIST
  groups; previously, this was not allowed.

  2.8.20  Limit on Number of COMMON Blocks Increased
  In previous versions, the compiler allowed a maximum of 250
  named COMMON blocks.  This limit has been raised to 508;
  if blank COMMON is also used, a total of 509 COMMON
  blocks are allowed.

  2.8.21  Support for NTT MIA Standard

  Compaq Fortran 77 Version 6.0 provides the necessary
  support to comply with Nippon Telephone and Telegraph
  (NTT) Technical Requirement TR550001, Multivendor
  Integration Architecture (MIA) Version 1.1, Division 2, Part
  3-2, Programming Language FORTRAN. The primary
  change needed to provide this support was the addition of
  the /STANDARD=MIA qualifier to enable standards check-
  ing against the MIA requirements.  The HFIX and IMAG
  intrinsic function names were also added.  See the    DEC

  Fortran User Manual for OpenVMS VAX Systems           for more
  information on /STANDARD=MIA.

  2.8.22  Warnings for Features Not Supported on Alpha

  The new /WARNINGS=Alpha qualifier causes the com-
  piler to issue warnings whenever a language feature which
  is not supported by Digital Fortran on Alpha platforms is
  used.  These features are:  RAD50 constants and the PDP-11
  compatibility routines ASSIGN, CLOSE, ERRSET, ERRTST,
  FDBSET, IRAD50, RAD50, R50ASC, USEREX.

  2.8.23  DECwindows Compiler Interface Removed
  The DECwindows Compiler Interface, a method of selecting
  compile options through a graphical interface activated by
  the DECwindows FileView application, is no longer provided.
  Digital will investigate alternate methods of providing similar
  functionality in the future.

  Next     Previous     Contents     Examples     Tables     Close     Help     ~Off