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:
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.