Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

D=/SHOW=(NODICTIONARY,NOINCLUDE,MAP,NOPREPROCESSOR,SINGLE)

D=/WARNINGS=(GENERAL,NODECLARATIONS,NOULTRIX)

Parameters

Qualifiers

Release Notes

/ANALYSIS_DATA

/CHECK

/CONTINUATIONS

/CROSS_REFERENCE

/DEBUG

/DIAGNOSTICS

/D_LINES

/DML

/EXTEND_SOURCE

/F77

/G_FLOATING

/I4

/LIBRARY

/LIST

/MACHINE_CODE

/OBJECT

/OPTIMIZE

/SHOW

/STANDARD

/WARNINGS

V3 to V4

V4 to V4.1

V4.1 to V4.2

V4.2 to V4.3

V4.3 to V4.4

V4.4 to V4.5

V4.5 to V4.6

RMS Changes

FORTRAN RTL Changes

Doc Errors

Usage Recommendations

Error Message Notes

Bug Fixes

Assigned GOTO

Enhancements and Extensions

FORSYSDEF Changes

Runtime Behavior

Flow Boolean Order

Subtle Bounds Errors

DMOD Accuracy

VAXVMS Realtime Features

INTEGER2 PARM Constants

HELP

Prog Manual

User Guide

Instal Guide

Language Summary

forhelps FORTRAN — VMS FORTRAN_4.6

 Invokes the VAX FORTRAN compiler to compile one or more source
 programs.  This command is described in detail in "Programming in
 VAX FORTRAN."

 Format of FORTRAN command line:

    FORTRAN file-spec-list

 Any command qualifier that can accept options can also accept
 either ALL (which includes all required and optional components) or
 NONE (which includes none of the optional components).

 If you specify more than one option, separate them by commas and
 enclose the list in parentheses.

Additional information available:

D=/SHOW=(NODICTIONARY,NOINCLUDE,MAP,NOPREPROCESSOR,SINGLE)
D=/WARNINGS=(GENERAL,NODECLARATIONS,NOULTRIX)

ParametersQualifiersRelease Notes

/ANALYSIS_DATA/CHECK/CONTINUATIONS/CROSS_REFERENCE
/DEBUG/DIAGNOSTICS/D_LINES/DML/EXTEND_SOURCE
/F77/G_FLOATING/I4/LIBRARY/LIST/MACHINE_CODE
/OBJECT/OPTIMIZE/SHOW/STANDARD/WARNINGS

Parameters

 File-spec-list

 Specifies one or more VAX FORTRAN source programs to be compiled.
 If you do not specify a file type, the compiler uses the default
 file type of FOR.

 You can specify more than one input file.  If you separate the file
 specifications with commas (,), each file is compiled separately
 and an object module is produced for each file.  If you separate
 the file specifications with plus signs (+), the files are
 concatenated and compiled as a single input file, producing one
 object module and, if /LIST is specified, one listing.

Qualifiers

 Indicate either special actions to be performed by the compiler or
 special input file properties.  Compiler qualifiers can apply to
 either the FORTRAN command or the specification of the file being
 compiled.  When a qualifier follows the FORTRAN command, it applies
 to all of the files listed.  When a qualifier follows the file
 specification, it applies only to the file immediately preceding
 it.

/ANALYSIS_DATA[=file-spec] D=/NOANALYSIS_DATA

 /[NO]ANALYSIS_DATA

 Controls whether the compiler generates a file containing analysis
 information about the source code being compiled.  The default file
 name is the file name of the primary source file; the default file
 type is ANA (that is, filename.ANA).

 Source code analysis files are reserved for use with DIGITAL
 products such as, but not limited to, the VAX Source Code Analyzer.

/CHECK[=(option[,...])] D=/CHECK=(NOBOUNDS,OVERFLOW,NOUNDERFLOW)

 /[NO]CHECK

 Controls whether the compiler produces extra code to check for
 certain error conditions at run time.

 By default, if you omit the /CHECK qualifier entirely, the compiler
 produces code to check only for integer overflow (equivalent to
 /CHECK=(NOBOUNDS,OVERFLOW,NOUNDERFLOW)).  However, if you specify
 /CHECK without options, you obtain BOUNDS, OVERFLOW, and UNDERFLOW
 checking (equivalent to /CHECK=ALL).

 Note that /NOCHECK is equivalent to /CHECK=NONE.

 [NO]BOUNDS    Controls the production of code that checks whether
               all array references and substring references are to
               addresses within the address boundaries specified in
               the array declaration or character variable
               declaration.  The BOUNDS option produces this code.

 [NO]OVERFLOW  Enables or disables integer overflow traps.
               Fixed-point calculations involving BYTE, INTEGER*2,
               and INTEGER*4 data types are checked for arithmetic
               overflow when you specify the OVERFLOW option.

 [NO]UNDERFLOW Enables or disables floating underflow exceptions.
               If /CHECK=UNDERFLOW, error messages are issued for
               the first two floating underflows.  Regardless of the
               setting of the UNDERFLOW qualifier, zero is stored as
               the result which underflowed and the program
               continues.

/CONTINUATIONS=n D=/CONTINUATIONS=19

 /CONTINUATIONS

 Specifies the maximum number of continuation lines to be permitted.

 The number of lines, n, is a decimal number from 0 through 99.  By
 default, the compiler accepts 19 continuation lines.

/CROSS_REFERENCE D=/NOCROSS_REFERENCE

 /[NO]CROSS_REFERENCE

 Controls whether the compiler generates a cross-reference as part
 of the symbol table map.

 The default is /NOCROSS_REFERENCE which omits the cross-reference
 from the symbol map.  The /CROSS_REFERENCE qualifier is ignored
 unless /LIST is specified, either explicitly or by default.

/DEBUG[=(option[,...])] D=/DEBUG=(NOSYMBOLS,TRACEBACK)

 /[NO]DEBUG

 Controls whether the compiler makes local symbol table and
 traceback information available to the debugger and the run-time
 error reporting mechanism.

 By default, if you omit the /DEBUG qualifier entirely, the compiler
 produces only an address correlation table (equivalent to
 /DEBUG=(NOSYMBOLS,TRACEBACK)).  However, if you specify /DEBUG
 without any options, the default is both SYMBOLS and TRACEBACK
 (equivalent to /DEBUG=ALL).

 DIGITAL recommends that /NOOPTIMIZE also be used when debugging
 FORTRAN programs.

 For details on how to debug a VAX FORTRAN program with the VAX
 Symbolic Debugger, see "Programming in VAX FORTRAN."

 Note that /NODEBUG is equivalent to /DEBUG=NONE.

 [NO]SYMBOLS   Controls whether the debugger receives local symbol
               definitions for user-defined variables, arrays, and
               labels on executable statements, and whether the
               debugger receives source line correlation records.
               The SYMBOLS option provides this information.

 [NO]TRACEBACK Controls the production of compiler-generated line
               numbers so that the debugger and the run-time error
               traceback routine can translate virtual addresses
               into source program subroutine names and line
               numbers.  The TRACEBACK option produces the line
               numbers.

/DIAGNOSTICS[=file-spec] D=/NODIAGNOSTICS

 /[NO]DIAGNOSTICS

 Controls whether the compiler produces a file containing compiler
 messages and diagnostic information.

 The extension .DIA is the default file extension for a diagnostics
 file.  The diagnostics file is reserved for use with Digital
 layered products such as the VAX Language Sensitive Editor.

/D_LINES D=/NOD_LINES

 /[NO]D_LINES

 Indicates whether the compiler reads and compiles lines that have a
 D in column 1 of the source program.  If you specify /D_LINES,
 lines that have a D in column 1 are compiled.

 The default is /NOD_LINES, which means the compiler assumes that
 lines beginning with a D are comments and does not compile them.

/DML

 Controls whether the FORTRAN Data Manipulation Language
 preprocessor is invoked before the compiler.  The preprocessor
 produces an intermediate file which is compiled.  The /SHOW
 qualifier controls whether the expanded source generated by the
 preprocessor appears in the listing file.

 The default is not to invoke the DML preprocessor.

/EXTEND_SOURCE D=/NOEXTEND_SOURCE

 /[NO]EXTEND_SOURCE

 Indicates whether the compiler will treat columns 1 through 72 or 1
 through 132 as the statement field in FORTRAN source code lines.

/F77 D=/F77

 /[NO]F77

 Controls whether FORTRAN-77 interpretation rules are used for those
 statements that have a meaning that is incompatible with
 FORTRAN-66.

 The default is /F77.  If you specify /NOF77, the compiler selects
 FORTRAN-66 interpretations in cases of incompatibility.

 For an explanation of the incompatibilities, see the "VAX FORTRAN
 User's Guide."

/G_FLOATING D=/NOG_FLOATING

 /[NO]G_FLOATING

 Controls the interpretation of REAL*8, COMPLEX*16, DOUBLE
 PRECISION, and DOUBLE COMPLEX declarations and constants.

 The default is /NOG_FLOATING, which causes the compiler to
 interpret the above declarations as the VAX D_floating data type.
 If you specify /G_FLOATING, the compiler interprets them as the VAX
 G_floating data type.  See the "VAX FORTRAN User's Guide" for more
 details.

/I4 D=/I4

 /[NO]I4

 Controls how the compiler interprets INTEGER and LOGICAL
 declarations that do not specify a length.  If you specify /NOI4,
 the compiler interprets them as INTEGER*2 and LOGICAL*2,
 respectively.

 The default is /I4, which means the compiler interprets these
 declarations as INTEGER*4 and LOGICAL*4.

/LIBRARY

 Indicates that an input file is a text library.  The default file
 type for a text library is .TLB.  The INCLUDE statement in a
 FORTRAN program allows you to extract modules from text libraries.

 The /LIBRARY qualifier can appear on one or more of the files in a
 list of files separated by plus signs.  At least one of the files
 in the list must be a non-library file.

/LIST[=file-spec] D=/NOLIST

 /[NO]LIST

 Controls whether a listing file is produced.

 If the FORTRAN command is executed from interactive mode, the
 compiler, by default, does not create a listing file.  If the
 FORTRAN command is executed from batch mode, /LIST is the default.
 The compiler gives a listing file the same file name as the first
 input source file and a file type of LIS.

/MACHINE_CODE D=/NOMACHINE_CODE

 /[NO]MACHINE_CODE

 Controls whether the listing produced by the compiler includes a
 symbolic representation of the object code generated by the
 compiler.

 The default is /NOMACHINE_CODE, which omits machine language code
 in the listing.  The /MACHINE_CODE qualifier is ignored if /LIST is
 not specified, either explicitly or by default.

/OBJECT[=file-spec] D=/OBJECT

 /[NO]OBJECT

 Controls whether the compiler produces an output object file.

 By default, the compiler produces an object file that has the same
 file name as the first input source file and a file type of OBJ.

/OPTIMIZE D=/OPTIMIZE

 /[NO]OPTIMIZE

 Controls whether the compiler optimizes the compiled program to
 generate more efficient code.

 Use /NOOPTIMIZE in conjunction with the /DEBUG qualifier to link a
 VAX FORTRAN program with the debugger so that variables always
 contain their updated values.

/SHOW[=(option[,...])]

 /[NO]SHOW

 Controls listing file options.

 The /SHOW qualifier is ignored if /LIST is not specified, either
 explicitly or by default.  The /SHOW=NOMAP qualifier is ignored if
 /CROSS_REFERENCE is specified.

 Note that /SHOW is equivalent to /SHOW=ALL and /NOSHOW is
 equivalent to /SHOW=NONE.

 [NO]DICTIONARY
   Enable or disable inclusion in the listing file of source lines
   from included Common Data Dictionary records.
 [NO]INCLUDE
   Enable or disable inclusion in the listing file of source lines
   from files specified in INCLUDE statements.  The [NO]LIST option
   on the INCLUDE statement overrides the qualifier
   /SHOW=[NO]INCLUDE on the FORTRAN command line.
 [NO]MAP
   Enable or disable inclusion of the symbol map in the listing
   file.
 [NO]PREPROCESSOR
   Enable or disable inclusion of preprocessor-generated source
   lines in the listing file.
 [NO]SINGLE
   Enable or disable the suppression of printing, in cross-reference
   listings, the names of singly-used parameter constants (that is,
   those that are not used outside their declarations).  Suppression
   can be beneficial when a small program specifies INCLUDE
   declarations but uses only a small number of the parameter
   constant names that are declared.

 The default for the /SHOW qualifier is as follows:
    /SHOW=(NODICTIONARY,NOINCLUDE,MAP,NOPREPROCESSOR,SINGLE)

D=/SHOW=(NODICTIONARY,NOINCLUDE,MAP,NOPREPROCESSOR,SINGLE)

/STANDARD[=(option[,...])] D=/NOSTANDARD

 /[NO]STANDARD

 Controls whether the compiler produces informational diagnostics
 for some extensions to ANSI X3.9-1978 (FORTRAN-77).

 If you specify /STANDARD with no arguments, it is equivalent to
 /STANDARD=(SYNTAX, NOSOURCE_FORM).  The /STANDARD qualifier has
 effect only if you specify /WARNINGS, either explicitly or by
 default.

 Note the difference between the /STANDARD and /F77 qualifiers.  The
 /STANDARD qualifier causes diagnostics to be produced for
 non-standard features.  The /F77 qualifier causes the FORTRAN 77
 interpretation to be chosen for constructs which mean different
 things in FORTRAN-77 and previous versions of VAX FORTRAN.

 The FORTRAN compiler does not flag semantic extensions.

 /NOSTANDARD is equivalent to /STANDARD=NONE.

 [NO]SYNTAX
   Produce informational diagnostics for syntax extensions.
 [NO]SOURCE_FORM
   Produce informational diagnostics for lowercase source and
   leading tab characters.

/WARNINGS[=(option[,...])]

 /[NO]WARNINGS
   Specifying /WARNINGS without arguments has the same effect as
   omitting the qualifier and taking the default.

 [NO]GENERAL
   Controls whether the compiler produces diagnostic messages for
   W-level (warning) and I-level (informational) conditions.
 [NO]DECLARATIONS
   Acts as an external IMPLICIT NONE switch.  If DECLARATIONS is
   set, the compiler will print warnings for any undeclared data
   items used in the program.
 [NO]ULTRIX
   Causes the compiler to issue diagnostics for language features
   not supported by VAX FORTRAN on ULTRIX systems.  Through the use
   of this option, you can develop VAX FORTRAN programs on a VMS
   system and use those programs - without modification - on both
   ULTRIX and VMS systems.

   The source program diagnostic messages associated with the use of
   the ULTRIX option are documented in the online release notes
   under the "V4.4_to_V4.5" category.
 ALL
   Causes the compiler to print all informational and warning
   messages, including warning messages for any undeclared data
   items.
 NONE
   Suppresses all informational and warning messages.

D=/WARNINGS=(GENERAL,NODECLARATIONS,NOULTRIX)

Release Notes

 These release notes pertain to VAX FORTRAN Version 4 and its
 updates.

Additional information available:

V3 to V4V4 to V4.1V4.1 to V4.2V4.2 to V4.3V4.3 to V4.4V4.4 to V4.5V4.5 to V4.6
RMS ChangesFORTRAN RTL ChangesDoc ErrorsUsage Recommendations
Error Message NotesBug Fixes

V3 to V4

 Except for the material concerning the use of Assigned GOTOs, the
 material provided under the following subtopic headings is taken
 from the latest version of "VAX FORTRAN Installation Guide/Release
 Notes."

Additional information available:

Assigned GOTOEnhancements and ExtensionsFORSYSDEF Changes
Runtime Behavior

Assigned GOTO

 In VAX FORTRAN V3, it was possible, but not documented or
 supported, to pass, as an actual argument to a subprogram, a
 variable whose value had been assigned a label value in an ASSIGN
 statement.  For instance, the statements

    ASSIGN 10 TO IVAR
      ...
    CALL SUB(IVAR)

 show this usage.  It was then possible for the subprogram to use
 this value in an assigned GOTO statement, for example:

   GOTO IARG

 This accomplished a "global" control transfer back to the calling
 program without executing a RETURN statement.

 This method does not work in V4.  In V4, because the calling
 program has no transfers to the label, the label and all associated
 code are deleted.  This means that the assigned GOTO will fail
 because the target code will not be available.

 To modify your program to allow the use of VAX FORTRAN V4, you must
 perform the assigned GOTO in the calling program itself.  This can
 be done by returning a status value from the subprogram and
 performing a conditional branch based on its value.  Another
 possible solution is to use a condition handler in the calling
 program to signal the status value instead of directly returning
 it.

Enhancements and Extensions

 Several language extensions have been implemented in the VAX
 FORTRAN V4.0 compiler.  Of these, by far the most important is a
 record handling capability (item 1, below).  The extensions and
 their appearance in "Programming in VAX FORTRAN" are as follows:

 o  Records --- New data item that can be composed of multiple
    fields containing aggregate and scalar data items with any mix
    of the VAX FORTRAN data types.  Records are defined by means of
    structure declaration blocks (delimited by STRUCTURE and END
    STRUCTURE statements) and assigned to a memory location by means
    of the RECORD statement.

    Included in the structure declaration block, along with normal
    variables and arrays; are mapped common areas (union/map
    declarations) and substructure declarations (nested structure
    declarations and RECORD statements).  (See Chapter 14 and
    Sections 6.2.5, 8.13, and 8.15.)

 o  FORTRAN command /EXTEND_SOURCE qualifier and new switches for
    /SHOW and /WARNINGS qualifiers:

    -  /EXTEND_SOURCE --- Extends the range of FORTRAN source text
       from columns 1 through 72 to columns 1 through 132.
    -  /SHOW=SINGLE --- Controls whether unused FORSYSDEF symbols
       appear in the cross-reference listing.
    -  /SHOW=DICTIONARY --- Controls whether the FORTRAN source
       representation of CDD records referenced by DICTIONARY
       statements are included in the listing file.
    -  /WARNINGS=DECLARATION --- Controls whether warning messages
       are issued when undeclared data items are used in a program
       (similar to adding an IMPLICIT NONE statement to the program
       units).
    -  /WARNINGS=GENERAL --- Controls whether messages in the I
       (informational) and W (warning) categories are displayed.

 o  CDD (Common Data Dictionary) support and the DICTIONARY
    statement --- General description of usage and implications (see
    Sections 3.4 and 3.5.3).

 o  Compiler output --- storage map section revised to show
    structured data items.

 o  VOLATILE statement --- Controls whether optimization operations
    can affect specified variables, arrays, or common blocks (see
    Section 8.16).

 o  Stream recordtype file support --- Record Management Services
    (RMS) now supports Stream, Stream-CR, and Stream-LF recordtypes
    for the OPEN statement (see Chapter 13).

 o  FAB and NAM blocks --- allocated in heap storage so that they
    are accessible the entire time that a file is open.

 o  Zero-valued VFEs in format field descriptors --- permits formats
    to be used with zero-width character expressions.

 o  List-directed internal file I/O --- permitted for internal file
    READ and WRITE operations (see Chapter 11).

 o  Interactive display of NAMELIST group and values --- displays
    the current namelist group name and the name of the variables in
    response to a question mark (?) or (=?) (see Chapter 11).

 o  End-of-line comments --- permitted in NAMELIST input data.
    Comments beginning with an exclamation point (!) may be placed
    anywhere in the input data where an end-of-line can occur,
    except within a character value.  Comment delimiters are
    equivalent to an end-of-line (see Section 5.4.3.1).

 o  ERRTST and ERR= improved --- ERRTST is now aware of errors
    trapped by ERR=, END=, and IOSTAT= (see Chapter 11).

 o  BACKSPACE performance improved --- performance on disk files has
    been improved, especially for fixed-length records.

 o  Internal files and "recursion" --- permits internal READ, WRITE,
    ENCODE, and DECODE statements to be performed while another
    internal file operation is already in progress.  This is
    permitted when internal file I/O is performed in an AST routine,
    exception handler, or a routine specified in an I/O list or
    variable format expression.

 o  Improved messages --- additional informational messages are
    displayed for errors in certain I/O operations.

 o  FOR$RAB provided --- returns the address of the RMS Record
    Access Block (RAB) for a given open FORTRAN unit (see the "VAX
    FORTRAN User's Guide," Chapter 4).

FORSYSDEF Changes

 The FORSYSDEF.TLB library has undergone some changes since the V3
 FORSYSDEF.  Many new modules have been added (see Appendix C of the
 "VAX FORTRAN User's Guide" for a list of available modules).  Some
 of these modules now contain structure declaration blocks.  These
 new structure declarations have caused a number of modules in the
 old V3 FORSYSDEF.TLB to undergo some incompatible changes.

 The modified modules now include structure declarations instead of
 EQUIVALENCE declarations, which were not documented and were used
 infrequently.  These modules include ACCDEF, CRDEF, DEVDEV, DMTDEF,
 IODEF, LADEF, LCKDEF, MNTDEF, MTDEF, OPCDEF, PRVDEF, PSLDEF,
 RMSDEF, SECDEF, STSDEF, TTDEF, XFDEF, and XMDEF.  If a program
 references any of these names declared in the V3 FORSYSDEF module's
 EQUIVALENCE statements, it will be necessary to modify the program
 to use the structure and field names instead.  You should notify
 your FORTRAN users of this change.

 If users need to continue accessing the old FORSYSDEF.TLB, the
 system managers should make a copy of this library and inform their
 users to use the logical FORT$LIBRARY to access it until all
 programs are converted to use the new version of FORSYSDEF.  In the
 examples that follow, the old FORSYSDEF.TLB was copied to
 SYS$LIBRARY:V3FORSYS.TLB.  To access this library from your
 programs, define the FORT$LIBRARY logical name so that the compiler
 will look for the V3FORSYS.TLB library first:

   $ DEFINE FORT$LIBRARY SYS$LIBRARY:V3FORSYS.TLB)

 After defining the logical name FORT$LIBRARY, your VAX FORTRAN
 compiler will first search for the library V3FORSYS.TLB in
 SYS$LIBRARY:  to obtain the required modules.  If this library is
 not found, it will look for the library FORSYSDEF.TLB in
 SYS$LIBRARY.

 Remember to delete this old version after programs depending on it
 have been converted.  The installation procedure will not purge
 FORSYSDEF.TLB automatically.

 Note:  The modules $PSMMSG and $SMBMSG in the new FORSYSDEF.TLB are
 not documented in Appendix C of the "VAX FORTRAN User's Guide."
 Both modules contain symbiont messages and can be included by users
 writing their own symbionts.

Runtime Behavior

 The new optimizations implemented for VAX FORTRAN V4.0 introduce
 the small chance that the run-time behavior of some FORTRAN
 programs may change.  The development group has devoted
 considerable time in designing and testing these new optimizations
 to ensure that this does not happen.  During the testing, however,
 some subtle dependencies and incorrect usages of the language did
 cause such behavior changes.  These are described under the
 following subtopic headings.

Additional information available:

Flow Boolean OrderSubtle Bounds ErrorsDMOD AccuracyVAXVMS Realtime Features
INTEGER2 PARM Constants

Flow Boolean Order
 The VAX FORTRAN language does not allow programs to depend on the
 order of evaluation of expressions.  In particular, the order of
 evaluation of logical expressions in IF statements may change from
 release to release, so that programs with such dependencies may
 work in V3 and not in V4.0.  For example, the statement
      IF (RAN(X) .GT. 0.5 .AND. CONDFLAG) GO TO 100

 will cause the V3 compiler emit code to call the RAN function
 first, and if the result is larger than 0.5, the CONDFLAG will be
 tested.  The V4.0 compiler will emit code in the reverse order, to
 avoid the routine call overhead if the value of CONDFLAG is .FALSE.
 Thus, programs with this kind of construct will execute according
 to the language definition, but they will generate different random
 numbers.  If this change causes a problem, you can resolve it by
 making the test independent of the order of evaluation.  For
 example, the preceding statement may be changed as follows:
      Y = RAN(X)
      IF (Y .GT. 0.5 .AND. CONDFLAG) GO TO 100
 Thus, the RAN function is always called and the program works the
 same in both V3 and V4.0 cases.
Subtle Bounds Errors
 Programs that address beyond array or string bounds in an
 uncontrolled way (for example, an undetected logic error) may work
 differently for V3 and V4.0.  These programs are incorrect and
 should be run with /CHECK=BOUNDS specified in order to find the out
 of bounds references.  They may appear to work properly when
 compiled with FORTRAN V3 because of the particular layout of memory
 generated by the V3 compiler.  The V4.0 compiler attempts to
 optimize memory usage by keeping variables in registers whenever
 possible.  This feature causes the order and number of variables
 kept in memory locations to change.  This change in memory layout
 may cause such incorrect programs to fail at run time in several
 different ways.
DMOD Accuracy
 The accuracy of the DMOD function was improved in the VAX/VMS V4
 Run-Time Library.  In particular, in some cases where 0.0D0 was
 returned in VAX/VMS V3, a number very close to the first argument
 is now returned.
VAXVMS Realtime Features
 Some programs that use features of the VAX/VMS operating system
 intended for real-time programming, such as Asynchronous System
 Traps (ASTs), may work differently between FORTRAN V3 and V4.0.  In
 particular, it is possible to use FORTRAN variables and arrays to
 communicate between the FORTRAN program and the relevant AST
 service routines.  This may cause these variables or arrays to
 change in the middle of the execution of a FORTRAN program unit.
 The V4.0 compiler assumes that no such asynchronous change is
 possible unless the variables or arrays involved have been declared
 VOLATILE.

 This problem will be manifested by the program using the previous
 value of the variable (perhaps because it is now being held in a
 register) rather than the new value assigned by the AST service
 routine.  Thus, you should examine any program that uses AST
 service routines written in FORTRAN for such asynchronous updating,
 and you should declare any variables or arrays used in this way
 with the VOLATILE statement.
INTEGER2 PARM Constants
 The following error in the behavior of unformatted WRITE statements
 has been corrected.  If an INTEGER*2 PARAMETER constant was used in
 an unformatted WRITE statement in a routine compiled with the /I4
 qualifier, FORTRAN V3 incorrectly wrote a longword (4 bytes).  The
 FORTRAN V4 behavior was changed to correctly write a word (2
 bytes).  For example, when the following routine was compiled with
 the /I4 qualifier,
      INTEGER*2 INTWRITE, INTREAD, INTERR
      PARAMETER (INTWRITE = 12)

      OPEN(UNIT=3, FORM='UNFORMATTED',STATUS='NEW')
      WRITE(3) INTWRITE,INTWRITE
      CLOSE(3)
      OPEN(UNIT=3, FORM='UNFORMATTED',STATUS='OLD',DISPOSE='DELETE')

      READ(3)  INTREAD, INTERR
      PRINT *, INTREAD, INTERR
      END
 FORTRAN V3 generated the incorrect results:
      12      0
 Under FORTRAN V4, the results are:
      12     12

V4 to V4.1

 o  Language-Sensitive Editor support -- The VAX FORTRAN V4.1 kit
    contains full FORTRAN language support for using the VAX
    Language-Sensitive Editor.  Specific support for the Editor
    consists of support for the /DIAGNOSTICS qualifier and the long
    HELP file.

    -  /DIAGNOSTICS qualifier -- The /DIAGNOSTICS qualifier
       specifies that the compiler should produce a diagnostics
       (.DIA) file describing all errors discovered during
       compilation.  The Language-Sensitive Editor uses this file
       when the REVIEW command is issued to highlight each error for
       easy editing.

    -  Language HELP text accessible during editing -- The new
       language HELP available on the VAX FORTRAN V4 kit has been
       specifically designed to be accessible during editing in
       FORTRAN mode in the Language-Sensitive Editor.

 o  Release Notes added to HELP -- The VAX FORTRAN V4.0 kit did not
    contain release notes in the HELP file.  Release notes in the
    HELP file will be updated for each maintenance release of VAX
    FORTRAN.

 o  %FILL now uses LOGICAL*1 arrays instead of CHARACTER strings --
    When processing the DICTIONARY statement, the compiler generates
    source code based on the data structure content specified in the
    CDD.  During this process, it is possible that a data type will
    be used that is not supported by the FORTRAN language.  In this
    case, the compiler generates a substructure with one unnamed
    field (%FILL).  In V4.0, this field was declared as having a
    data type of CHARACTER*n, where n was the length of the unnamed
    field.  In V4.1, the LOGICAL*1 data type is used, and the
    unnamed field is given a dimension of n instead.  This allows
    for unnamed fields of lengths greater than the longest allowed
    CHARACTER variable.

V4.1 to V4.2

 o  FORSYSDEF Installation Changes -- The installation of
    FORSYSDEF.TLB has been changed to correct a problem that existed
    when installing FORTRAN in a directory that had version number
    limits imposed.  Because the installation procedure used
    workfiles of the same name for each module in FORSYSDEF (that
    is, the only variation was an increasing version number), the
    version number limit was frequently exceeded.  As a result,
    FORSYSDEF would contain only the version limit number of modules
    upon completion of the installation.  This problem has been
    corrected in the installation procedure for FORTRAN V4.2.

 o  Two new error messages -- The following error messages were
    added to VAX FORTRAN V4.2:

      CDDINIVAL       CDD description contains Initial Value attribute
                      (ignored).  Informational.

    The CDD description being expanded contains a field that
    specifies an initial value.  The initial value has been ignored.

      CDDALNARY       CDD description specifies an aligned array
                      (unsupported).  Informational.

    The CDD description being expanded contains an array field whose
    elements have an individual alignment specified that VAX FORTRAN
    cannot accommodate.  The array has been replaced by a structure
    of the appropriate size.

V4.2 to V4.3

 The procedure for installing VAX FORTRAN was modified.  As a
 result, the "VAX FORTRAN Installation Guide/Release Notes" was
 revised and reissued.

V4.3 to V4.4

 Version 4.4 of VAX FORTRAN is a maintenance release and contains
 only bug fixes.

V4.4 to V4.5

 A new option, /WARNINGS=ULTRIX, has been added to the FORTRAN
 command's /WARNINGS qualifier (see Section 3.2.3.18 in "Programming
 in VAX FORTRAN").  Specifying the ULTRIX option causes the compiler
 to issue diagnostics for language features not supported by VAX
 FORTRAN on ULTRIX systems.  Through the use of this option, you can
 develop VAX FORTRAN programs on a VMS system and use those programs
 - without modification - on both ULTRIX and VMS systems.

 The following source program diagnostic messages are associated
 with the use of the ULTRIX option:

            Error
 Mnemonic   Code   Test/Meaning
 --------   -----  ------------

 VFUFEANEX    W   This feature is unsupported and non-executable on ULTRIX

                  The program attempted to use a VAX FORTRAN I/O
                  feature that is not available on ULTRIX.  If the
                  resulting program is run on an ULTRIX system, a
                  run-time error will be issued if this statement is
                  executed.  Major VAX FORTRAN features not
                  available on ULTRIX include the following:

                   o  OPEN/INQUIRE options:

                       -  ORGANIZATION= `RELATIVE' or `INDEXED'

                       -  ACCESS=`KEYED'

                       -  RECORDTYPE= `STREAM' or `STREAM_CR'

                       -  KEY

                       -  DEFAULTFILE

                       -  USEROPEN


                   o  I/O statements DELETE, REWRITE, and UNLOCK

                   o  Read statement keyword attributes:  KEY,
                      KEYEQ, KEYGE, KEYGT, KEYID


 VFUFEAUNS    W   This feature is unsupported on ULTRIX-32

                  The program attempted to use a VAX FORTRAN I/O
                  feature that is not available on ULTRIX.  If the
                  resulting program is run on an ULTRIX system, this
                  construct will be ignored.  Major VAX FORTRAN
                  features not available on ULTRIX include the
                  following:

                   o  The following OPEN statement keywords and
                      attributes:

                       -  DISP/DISPOSE= `PRINT', `PRINT/DELETE',
                          `SUBMIT', `SUBMIT/DELETE'

                       -  BUFFERCOUNT

                       -  EXTENDSIZE

                       -  INITIALSIZE

                       -  NOSPANBLOCKS

                       -  SHARED


                   o  The `PRINT', `PRINT/DELETE', `SUBMIT', and
                      `SUBMIT/DELETE' attributes to the DISP/DISPOSE
                      or STATUS keyword (CLOSE statement).


 VFUSRCUNA    W   Requested source is not available on ULTRIX

                  The program attempted to use one of the following
                  VAX FORTRAN I/O features that are not available on
                  ULTRIX.

                   o  The DICTIONARY statement.

                   o  The INCLUDE statement for a text module from a
                      library file.

V4.5 to V4.6

 A new FORTRAN command qualifier, /ANALYSIS_DATA[=filename], has
 been added.  This qualifier generates a file of analysis
 information about the source code being compiled.  The default file
 name is the file name of the primary source file; the default file
 type is ANA (that is, filename.ANA).

 Source code analysis files are reserved for use with DIGITAL
 products such as, but not limited to, the VAX Source Code Analyzer.

RMS Changes

 As of VMS V4.4, RMS provided full record interlocking for shared
 sequential organization files.  This has introduced a change in
 behavior for FORTRAN programs that are using SHARED sequential
 files.  As of VMS V4.4, multiple read requests cannot be made
 against a record that is in the process of being written.

 Prior to VMS V4.4, the VAX Run-Time Library would set the FAB$B_SHR
 option bit FAB$V_UPI if the user wished to share a sequential file.
 In order to take advantage of full RMS record interlocking for
 shared sequential files, the RTL no longer sets that bit.

 To achieve the earlier behavior, a USEROPEN routine can be used to
 set the RRL bit in the RAB.  This will allow multiple read requests
 against a record while it is open for write access.

 The following is a USEROPEN routine you could use to achieve the
 earlier behavior:

         INTEGER FUNCTION IGNORE_LOCKS( FAB, RAB, LUN )
         IMPLICIT NONE
         INTEGER LUN
         INTEGER SYS$OPEN, SYS$CONNECT
         EXTERNAL SYS$OPEN, SYS$CONNECT
         INCLUDE '($FABDEF)'
         INCLUDE '($RABDEF)'
         RECORD /FABDEF/ FAB
         RECORD /RABDEF/ RAB

         RAB.RAB$L_ROP = (RAB.RAB$L_ROP) .OR. RAB$M_RRL

         IGNORE_LOCKS = SYS$OPEN( FAB )
         IF ( .NOT. IGNORE_LOCKS ) RETURN

         IGNORE_LOCKS = SYS$CONNECT( RAB )
         RETURN
         END

 To use a USEROPEN routine, add the USEROPEN keyword to the OPEN
 statement.  The USEROPEN keyword specifies a user-written external
 procedure that controls the opening of a file.  Using the example
 above, the program opening the file would have the following
 additions:

         EXTERNAL IGNORE_LOCKS
         ...
         OPEN(USEROPEN=IGNORE_LOCKS,...)

 For more information on USEROPEN routines, refer to Section 4.2 of
 the "VAX FORTRAN User Guide".

FORTRAN RTL Changes

 FORTRAN RTL is bundled with VMS and is therefore independent of VAX
 FORTRAN releases.  The version numbers noted here are for VMS, not
 VAX FORTRAN.

 VMS V4.0 behavior changes

  o The equation used to determine the RMS bucket size (used for RMS
    multi-block transfers) has been modified.  The equation used
    during Version 3 of VMS was:
         MIN(((MAX(RECL+24, BLOCKSIZE)+511)/512, 32)
    For Version 4 of VMS, the equation was modified to be:
         (BLOCKSIZE+511)/512
    Routines that use BLOCKSIZE and worked properly under VMS V3 may
    generate an RMS error, block size not large enough, in VMS V4.

  o The RECL specifier in an INQUIRE statement returns the maximum
    record length for a file created using the EDT editor with VMS
    V4.0 or later -- regardless of whether or not the file is open.
    Previously, if the file was not opened, RECL returned the length
    of the longest record in the file.  This change in the value
    returned for RECL is due to a change in the behavior of the EDT
    editor.

 RTL V4.1 fix descriptions

  o Change BACKSPACE operations in order to position segmented files
    properly when the files contain records larger than 2044 bytes.
    Before the change, some routines that used BACKSPACE operations
    were failing at runtime.

  o Change the behavior of I/O routines used for transmitting an
    entire implied-DO list when the upper bound is less than the
    lower bound.  Before the change, an incorrect number of values
    were being transmitted.

  o Change the OPEN processing routine to properly check for invalid
    KEY specifications when opening an existing file.  Before the
    change, no error was generated if the KEY positions specified
    were inconsistent with the key used when the file was created.

 RTL V4.2 fix and restriction descriptions

    The following change to the VAX FORTRAN RTL is implemented in
    VAX/VMS V4.2:

  o A spurious CLOSE error, file not found, may be encountered when
    a FORTRAN routine specifying DISPOSE=DELETE opens a file.  This
    problem resides in the Files-11 XQP and will be corrected by VMS
    V4.2.

    The following restriction is effective with VAX/VMS V4.2:

  o Using a WORD key to access an indexed file on a remote node is
    not supported.

 RTL V4.4 behavior changes

    A change made to RTL V4.4 will necessitate modifications to some
    USEROPEN routines.

    Previously, to enable a sequential file for shared access, you
    had to set only the FOP bit in the FAB$V_UFO options field.
    Now, you must also set the UPI bit in the FAB$B_SHR options
    field.  (The latter operation was previously done for you by the
    RTL.)

    Adding the following instruction to your USEROPEN routine will
    set the UPI bit:

      INSV  1, FAB$V_UPI,  1, FAB$B_SHR(R2)

    This instruction must be placed somewhere before the call to
    SYS$OPEN.  R2 must contain the address of the FAB.

Doc Errors

 Note that an asterisk (*) is placed in the front of the page number
 references for those documentation errors discovered since the V4.5
 release of VAX FORTRAN.  All of the other errors were documented
 previously in the on-line release notes issued with V4.0 - V4.5.

Additional information available:

HELP

Prog ManualUser GuideInstal GuideLanguage Summary

HELP

 Descriptions of BTEST, IBCLR, IBITS, and IBSET intrinsic functions
     The low-order bit position for these functions is bit position
     0, not 1.  The HELP file has been modified accordingly.

 *MAP and UNION statement descriptions
     No information about these statements was provided under the
     categories "MAP" and "UNION" in HELP prior to V4.6.  The V4.6
     HELP now has pointers (under "MAP" and "UNION") to information
     about these statements.

Prog Manual

 General
     All discussions concerning relative organization files,
     occurring principally in Chapters 11 and 13, should appear in
     blue ink.  Relative organization is an extension to the ANSI
     standard.

 Page 1-35
     The sixth line in the example at the top of the page should
     appear as two lines:
       $ FORTRAN/DEBUG 'FILENAME'
       $ !

 Page 2-9
     The EDT operations associated with the keys in the VT200 keypad
     are the same as those for the VT100 keypad.  The rightmost
     block of keys in Figure 2-3 should be the same as the lower
     block of keys (starting with PF1/GOLD) in Figure 2-2.

 Page 2-22
     In the paragraph following the example in the section labeled
     "WRITE Command," the words SUBROUTINE and END should be in
     regular uppercase type, not italic uppercase type.

 Pages 2-24 and 2-25
     Same problem as on page 2-22.  The word CHARACTER should be in
     regular uppercase type, not italic uppercase type.

 *Page 3-5
     The heading for the third column in Table 3-1 should be
     "Default," not "Qualifier."

     "/LIST (batch)" should appear in column 3 under "/NOLIST
     (interactive)" instead of in column 1 under "/LIST[=file-spec".

 Page 3-13
     The description of the SINGLE option should read as follows:

     "[SINGLE] specifies that symbolic names of parameter constants
     are to be included in cross-reference listings -- even if they
     are not referenced outside the PARAMETER statements in which
     they are declared.  The negative form, NOSINGLE, specifies that
     names of parameter constants only referenced in their
     declarations are to be suppressed.  This is useful for
     cross-reference listings of small programs that specify INCLUDE
     declarations but use only a small number of the parameter
     constant names declared."

 Page 3-26
     The form of the OPTIONS statement shown on this page is
     incorrect.  Qualifiers specified in an OPTIONS statement are
     not separated by commas.

 Page 3-27
     In the first paragraph in Section 3.5.3, the slash (/) in
     "STRUCTURE/END STRUCTURE" should be an ellipsis (...), not a
     slash.  The ellipsis in this case is a symbolic representation
     of any necessary statements in the body of a structure
     declaration.

 *Page 4-9
     In Table 4-2, the statement about the "effect" of the /DEBUG
     qualifier should read as follows:

       The FORTRAN compiler creates symbolic data needed by the
       debugger.

 *Page 5-4
     The reference to Table 5-2 in the first paragraph of Section
     5.2.3 is incorrect; it should refer to Table 5-1.

 *Page 6-13
     The double quotation marks in the second example at the bottom
     of the page should be a pair of single quotation marks (in both
     instances).

 Page 6-23
     In Section 6.2.5.1, the second sentence in the second sublist
     entry contains a typographical error; the word "that" should be
     "than".

 Page 6-24
     The fourth item in the bulleted list ("Unnamed fields") should
     include the following statement:

     "Unnamed fields cannot be initialized.  For example:
       INTEGER*4 %FILL /1980/
     is invalid and will generate an error message."

 Page 6-31

     1.  The first example at the top of the page should be as
         follows:

           NEXT_APP.APP_MEMO(1)(1:1)

     2.  In Section 6.2.6, the clause "which of these items can used
         in them" is missing the word "be".

     3.  In Section 6.2.6, the definition of "scalar reference"
         should be as follows:

           Scalar Reference -- resolves itself to a reference to a
           single, typed data item (a variable, scalar record field,
           array element, constant, or character substring) or an
           expression.


 Page 6-32
     In the "array name references" category in the list of example
     references, "RECARY" should be in blue ink.

 Page 8-4
     In the description of the "nlist" symbolic abbreviation, the
     words "character substring names" should be in blue ink; it is
     nonstandard to use a character substring as a "nlist" item.

 Page 8-5
     In the description of the "dlist" symbolic abbreviation, the
     words "character substring names" should be in blue ink; it is
     nonstandard to use a character substring as a "dlist" item.

 Page 8-10
     The description of the "nlist" symbolic abbreviation should
     state that a dummy argument cannot be specified in an
     EQUIVALENCE statement.

 Page 8-25
     In Section 8.15, the description of the STRUCTURE statement
     (item 1 in the bulleted list) should read as follows:  "This
     statement indicates the beginning of a structure declaration
     and defines the name of the structure."

 Page 8-26
     The first item in the bulleted list at the top of the page
     should include the following statement:

     "Unnamed fields cannot be initialized.  For example:
       INTEGER*4 %FILL /1980/
     is invalid and will generate an error message."

 Page 9-15
     In the first line in the format illustration at the top of the
     page, the word "block" should be on a separate line, serving
     the same purpose as the other "block" designations in the same
     illustration.

 Page 9-21
     In the list of commands at the end of Section 9.8, the DEBUG
     command should appear in blue ink.

 Page 10-19
     The reference to Table D-1 in the second sentence in Section
     10.3.1 is incorrect; it should refer to Table D-3.

 *Page 10-22
     The REAL*8 type declaration at the start of the example (Figure
     10-2) contains a spurious character (lowercase "z").

 Page 10-25
     The example of the LEN function at the bottom of the page
     contains a spurious character; the "n" should not appear in the
     line preceding the CONTINUE statement.

 Page 11-2
     At the end of Section 11.1.1, the section reference is in
     error.  It should refer to Section 11.2.2.1, not 13.3.1.1.

 Page 11-4
     The first column in Table 11-1 should be labeled "Type of
     Access," not "Statement Category."

 Page 11-32
     In the paragraph under the heading "Prompting for Current
     Values," the last sentence should read as follows:

     "If you precede the question mark with an equal sign (that is,
     =?), the group name and current values of the namelist entities
     for that group will be displayed as in namelist output (see
     Section 11.5.1.3)."

 Page 11-43
     The first line in the "input" example in the middle of the page
     is in error.  The pound sign (#) should be a delta (or
     pyramid), which denotes a space.  (Note:  The first character
     in the same line is a delta.)

 Page 12-3
     The fourth paragraph in Section 12.2 should refer to 12.2.3,
     not 12.2.1.

 Page 12-21
     The third line in Table 12-2 should be as follows:

       I,O,Z             INTEGER*4,LOGICAL*4       12

 Page 13-1
     In Section 13-1, the keyword specification should be enclosed
     in braces, indicating that one of the two forms must be
     selected:

       {keywd      }
       {keywd=value}

 Page 13-2
     The fourth line item within the first element of the bullet
     list should read as follows:  "STATUS or TYPE -- file existence
     status at OPEN." Also, "or TYPE" should appear in blue ink, and
     the phrase "file existence status at OPEN" should appear in
     black ink, not blue.

 Page 13-3
     In table 13-1, the value 'PRINT/DELETE' associated with the
     keywords DISPOSE and DISP should not have an interior
     apostrophe as shown in the manual.

 Page 13-7
     The last paragraph in Section 13.1.4 should state that the
     maximum size of RMS multiblock transfers is 63 512-byte blocks,
     not 32.

 Page 13-19
     A comma is missing from the "file" form of the INQUIRE
     statement format.  The comma belongs after the first square
     bracket (that is, before the DEFAULTFILE keyword).

 Page 13-21

     The following sentence should be appended to the last paragraph
     in Section 13.3.6:

     "Ex is also assigned the value .FALSE. if the file exists but
     cannot be opened."

 Page 13-25
     In section 13.3.17, the first sentence after the description of
     the rcl variable should read as follows:

     "If the file (or unit) is opened, rcl is the maximum record
     length allowed.  If the file (or unit) is not opened, rcl is
     either the maximum record length allowed or the longest record
     in the file -- the latter case occurring only when inquiring
     about a file for which a maximum record length was not
     specified (see Section 13.1.21)."

 Page 13-30
     In the illustration of the format of the UNLOCK statement,
     "unit" is a keyword and should be capitalized:

       UNLOCK ([UNIT=]u[,ERR=s][,IOSTAT=ios])

 Page 17-19
     The two arguments shown in the example in Section 17.5.1.3
     should be preceded by %REF, that is, the DBG command line
     should appear as follows:

       DBG> CALL INC_DUMP %XREF(PERSONS_HOUSE, ADULTS_HOUSE)

 Page 17-21
     The first sentence on this page should refer to SET BREAK and
     SET TRACE, not SET BREAK and SET WATCH.

 Page 17-25
     In Section 17.5.4, the format display for the FOR construct
     should be on a separate line, not run in with the descriptive
     text preceding it.  Also, the text introducing the format (that
     is, "The format of a FOR construct is:") is omitted.

 Page 17-38
     At the top of the page, the format and example illustrations
     showing how to deposit the imaginary part of a complex number
     are incorrect.

     The second command in the format illustration should appear as
     follows:

       DEPOSIT/FLOAT x+4 = imaginary part

     The second line in the example illustration should appear as
     follows:

       DBG> DEPOSIT/FLOAT CPLX+4=-4.7

 Page 17-39
     In the sentence introducing the example display, the order of
     the commands is reversed; that is, the SET MODE SCREEN command
     is executed before the STEP command.

 Page 17-43
     In Section 17.8.3.3, the last line of text for the second item
     in the bulleted list should read "your displays," not "you
     displays."

 Pages 18-3, 18-4, and 18-5
     The second column in Table 18-1 should be labeled "IOSTAT
     Number", not "Error Number", and the following note should be
     added to the notes that follow the table:

     "The IOSTAT error numbers in the second column are the values
     returned as IOSTAT values.  See Section 11.3.1.8 and 18.3 for
     information about the use of IOSTAT values."

 Page A-6
     In the table of valid and invalid octal integer constants in
     Section A.5, the third item in the "valid" column ("17777")
     should appear in the "invalid" column.

 Page A-7
     In the example of a main program, all periods shown in the
     example statements should be commas.  This error also occurs in
     the first line of the subprogram example.  In addition, the
     subprogram example contains the following errors:

      o  Spurious right parenthesis in line 2.

      o  Typographical error in second FUNCTION statement.

      o  SINDEG assignment statement should appear as follows:
         SINDEG = SIN(X*3.1459/180)


 Page B-2
     In Table B-1, the equal sign (=) in row 2, column 2 should be a
     double quotation mark (") and the pyramid in row 3, column 2
     should be a pound sign (#).

 Page E-5
     The mnemonic of the error message second from the bottom should
     be BADRECREF, not BADRECFREF.

 Page E-8
     The descriptions of the error messages EXTMIXCOM and EXTMIXEQV
     are interchanged.  Also, the message that belongs with
     EXTMIXEQV should be amended to read as follows:  "A numeric
     variable or numeric array element cannot be equivalenced to a
     character variable or character array element."

 Page E-22
     The description of the MULDECNAM error message should be as
     follows:

       A name appears in two or more inconsistent declaration
       statements or a dummy argument is specified in an EQUIVALENCE
       statement.

 Page E-26
     In the description of the UNSUPPTYPE error message, "CHARACTER
     %FILL of the appropriate length" should say "LOGICAL*1 %FILL of
     the appropriate dimension".  For additional information, see
     HELP information provided by RELEASE_NOTES/V4_to_V4.1.

 INDEX

     Underscores are omitted from references to D_floating,
     F_floating, G_floating, and H_floating data and from references
     to various FORTRAN command qualifiers (/D_LINES, G_FLOATING,
     and others).  Also, throughout the index, indention for second
     and third level entries is applied inconsistently and may cause
     some confusion.

 INDEX-14

     The first index entry under "H" should be as follows:

       H field descriptor, 12-20

User Guide

 General
     References to the RTL manual are incorrect; the correct name of
     the manual is "VAX/VMS Run-Time Library Routines Reference
     Manual."

 Page 1-16
     The examples shown under the first bulleted item are
     incorrectly aligned.  They should appear as follows:
          Unoptimized Code          Optimized Code
          ----------------          --------------
          I = 100                   I = 100
          ...                       ...
          IF (I .LT. 1) GO TO 100   A(100) = 3.0*Q
          A(I) = 3.0*Q

 Page 1-38
     Bullet 8 should say "X(I-1,J)".

 Page 2-2
     Table 2-1 is misaligned.  It should appear as follows:
          PSECT
          Name      Use                     Attributes
          ----      ---                     ----------
          $CODE     Executable code         PIC,CON,REL,LCL,SHR,EXE,
                                            RD,NOWRT,LONG

          $PDATA    Read-only data:         PIC,CON,REL,LCL,SHR,NOEXE,
                    literals, read-only     RD,NOWRT,LONG
                    FORMAT statements

          $LOCAL    Read/write data local   PIC,CON,REL,LCL,NOSHR,
                    to the program unit:    NOEXE,RD,WRT,LONG
                    user local variables,
                    compiler temporary
                    variables, argument
                    lists, and descriptors

          $BLANK    Blank common block      PIC,OVR,REL,GBL,SHR,NOEXE,
                                            RD,WRT,LONG

          name(s)   Named common block(s)   PIC,OVR,REL,GBL,SHR,NOEXE,
                                            RD,WRT,LONG

 Page 3-12
     In Figure 3-2, the line of code

       INTEGER*4 TT_CHAN,SYS$QIOW

     should appear as follows:

       INTEGER*4 TT_CHAN

 Page 4-14 and 4-15
     The name of several FORSYSDEF modules are incorrect:  $XAB
     should be $XABDEF; $XABDAT should be $XABDATDEF; and $XABPRO
     should be $XABPRODEF.

 Page 4-15
     The RECORD statement in the example immediately preceding
     Section 4.1.2 should refer to XABDEF, not XABDATDEF.

 Page 4-23
     Spurious dollar signs are contained in the two RECORD
     statements shown in the example of a USEROPEN procedure.

 Page 4-25
     In Table 4-1, the equation used to calculate the RMS bucket
     size (FAB$B_BKS) is no longer correct as shown and should be
     changed to:
          (BLOCKSIZE+511)/512

 Page 5-3 and 5-4
     The example text in item 3 should be as follows:

       $ INSTALL
       INSTALL> DISK$USER:[INCOME.DEV]INC_COMMON/WRITEABLE/SHARED/CREATE
       INSTALL> <CTRL/Z>

     The second sentence in the next paragraph should read as
     follows:

     "To delete an installed image, invoke the Install utility and
     type the complete file specification of the image followed by
     /DELETE."

     A new step 4 should be added and the existing step 4 should be
     renumbered to step 5.  The new step 4 is as follows:

       4. Define the logical name INC_COMMON:

          $ DEFINE INC_COMMON DISK$USER:[INCOME.DEV]INC_COMMON

 Page 6-1
     The book references in the last paragraph in the introduction
     to Chapter 6 are incorrect for Version 4.2 of the VAX/VMS
     documentation set.  In the V4.2 doc set, refer to Chapter 2 of
     the "Introduction to VAX/VMS System Routines" and Chapter 7 of
     the "VAX/VMS Run-Time Library Routines Reference Manual" for
     additional information about the Condition Handling Facility.

 Page 6-6
     In the list of notes on Page 6-6, the last element in the list
     should refer to SIGARGS(n+1), not SIGARGS(+1).

 Page B-8
     The description of the effects of specifying a logical value of
     .FALSE.  for the type argument in a call to the ERRSET
     subroutine is incorrect.  The description should be as follows:

     "Produce the error message INVARGFOR and terminate execution of
     the program."

 Page C-4 and C-5
     Two modules in the new FORSYSDEF.TLB are not listed.  The
     modules omitted are $PSMMSG and $SMBMSG.  Both modules contain
     symbiont messages and can be included by users writing their
     own symbionts.

 Page D-7 through D-8
     Not all footnote flags in the example text correctly correspond
     to the footnotes themselves.  Also, some footnote flags are
     missing.  This will be corrected in the next update or
     revision.

 Page D-8
     The options file used to link the two programs and the
     illustration of the sample use of the two source programs was
     omitted.  The following material should precede "Notes" on page
     D-8:

     The options file PAGEFIL.OPT contains the following line of
     source text:

     PSECT_ATTR=MYCOM,PAGE                            (1)


     ***Sample Use***

     $ FORTRAN PAGEFIL1
     $ FORTRAN PAGEFIL2
     $ LINK PAGEFIL1,PAGEFIL/OPTIONS                  (1)
     $ LINK PAGEFIL2,PAGEFIL/OPTIONS                  (1)

     $ RUN PAGEFIL1                            ****Process 1****
     Waiting for PAGEFIL2 to update section
     Modified data in the global section:
         2    4    6    8   10   12   14   16   18   20
        22   24   26   28   30   32   34   36   38   40
        42   44   46   48   50   52   54   56   58   60
        62   64   66   68   70   72   74   76   78   80
        82   84   86   88   90   92   94   96   98  100
     $

     $ RUN PAGEFIL2                            ****Process 2****
     Original data in the global section:
         1    2    3    4    5    6    7    8    9   10
        11   12   13   14   15   16   17   18   19   20
        21   22   23   24   25   26   27   28   29   30
        31   32   33   34   35   36   37   38   39   40
        41   42   43   44   45   46   47   48   49   50
     $

 Page D-12
     The second comment in the example source program on this page
     should refer to "row 2, column 15," not "row 5, column 15."

Instal Guide

 VAX FORTRAN Installation Guide/Release Notes:

 Page 1-3
     The directory specification in the BACKUP command line should
     be [0,0], not [0.0].

 Page 2-4
     In Section 2-5, a reference is made to Sections 2.4.1 through
     2.4.4.  The reference should be made to Sections 2.5.1 through
     2.5.4.

Language Summary

 Page 1
     In the description of the order in which text libraries are
     searched, the second item should refer to FORT$LIBRARY (not
     FOR$LIBRARY) in both instances and the third item should refer
     to SYS$LIBRARY (not FOR$LIBRARY).

Usage Recommendations

 o  Use of %LOC -- Many programs obtain the values for system
    symbols by declaring the symbols as EXTERNAL and referencing the
    value as %LOC(symbol).  This in now unnecessary in most cases.
    Instead, you should INCLUDE the relevant module from
    FORSYSDEF.TLB (see "VAX FORTRAN User's Guide" Appendix C for a
    list of modules) and refer to the symbol without the %LOC.

 o  See HELP information under V3_to_V4 for a discussion on the use
    of the COMMON and EQUIVALENCE declarations found in some V3
    FORSYSDEF modules.

 o  When (1) using shared variables and arrays in handlers and (2)
    capturing the address of subprogram arguments, you should use
    VOLATILE; see "VAX FORTRAN User's Guide," Section 1.3.2.2.

 o  Use of USEROPEN routines -- Using the new RECORD manipulation
    capability of VAX FORTRAN V4, it is now possible to write
    USEROPEN routines in FORTRAN instead of VAX MACRO.  See Chapter
    4 of the "VAX FORTRAN User's Guide" for a general discussion of
    using RMS from FORTRAN.  Section 4.2.1 contains examples of
    FORTRAN USEROPEN routines.

Error Message Notes

 Three error messages not documented in manuals:

   CDDINIVAL       CDD description contains Initial Value attribute
                   (ignored).  Informational.
   The CDD description being expanded contains a field which
   specifies an initial value.  The initial value has been ignored.

   CDDALNARY       CDD description specifies an aligned array
                   (unsupported).  Informational.
   The CDD description being expanded contains an array field whose
   elements have an individual alignment specified which FORTRAN
   cannot accommodate.  The array has been replaced by a structure
   of the appropriate size.

   INVDEVSPE       Invalid device specified, analysis data file
                   not produced.  Severity level E.
   The file specified by the /ANALYSIS_DATA qualifier could not be
   written because it is not a random access file.

 Misleading error message:

   INCMODNAM       Module name not found in library

   When an INCLUDE statement of the form "INCLUDE '(module)'" is
   used, several text libraries are searched for the specified
   module name.  These are, in order:
    1. Libraries specified in the FORTRAN command with the /LIBRARY
        qualifier
    2. Libraries specified using the logical name FORT$LIBRARY
    3. The FORTRAN system text library, SYS$LIBRARY:FORSYSDEF.
   The INCMODNAM message is issued when the specified module name
   cannot be found in any of them.  Note that one of the causes of
   this search failure may be an open failure on one of the
   libraries.  If a "$LIBRARY/LIST" command shows the module to be
   present in the library, try checking that the library itself is
   readable by the compiler.

Bug Fixes

 A list of bugs and fixes is contained in the file
 SYS$UPDATE:VAXFORUPD.MEM, shipped with each VAX FORTRAN kit.  This
 file can be loaded and printed by the installer as part of the
 automated installation procedure.  If you have any programs that
 have been modified or compiled with nonstandard options because of
 a compiler bug, return them to their original form and recompile
 normally when you receive a new update.  If the bug persists,
 please submit an SPR describing the problem so that it can be
 corrected before the next update.

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026