|
Release Notes for DIGITAL Visual Fortran
Version 5.0 - (Intel only version)
This file contains information about the 5.0 release of
the DIGITAL Visual Fortran product. Various items of interest are
noted below.
------------------- General Release Notes -----------------------------
This product requires that you be running Windows NT Version 4.0
(released version) or Windows 95.
Users of DIGITAL Fortran on other platforms (Unix/VMS)
will no doubt be concerned about code portability with those
other platforms. Where it makes sense to do so, features that
have been added to the compiler and runtime support for this
product will also be provided on the other DIGITAL Fortran
platforms in future releases.
The V4.0 Microsoft Fortran 90 compiler is supplied on this
kit to allow users with some ABSOLUTE compatibility requirement
to continue compiling programs. This is the MS V4.0 compiler AS IS
with no bug fixes or any other enhancements. It is our goal that
no users should ever have to use this old compiler. As such we
are extremely interested in any requirements to do so.
Another goal of the Intel version of this product is to
be compatible with libraries previously compiled with the
Microsoft Powerstation compiler. Since the two implementations
of the language use different code bases for the run time
support, it will not be possible to mix object modules that
utilize Fortran IO and various other core functionality of
the language. It is our intention that compute-only subroutines
and functions compiled by the Powerstation compiler should be
able to be linked together with objects from the DIGITAL
Visual Fortran product and produce correct results.
---------------- Installation Release Notes -----------------------------
o Do not install Visual Fortran 5.0 in the same directory as Microsoft
Fortran PowerStation 4.0. Installing Visual Fortran 5.0 on top of
Microsoft Fortran PowerStation 4.0 will render the 4.0 tools unusable.
Install Visual Fortran 5.0 into a directory separate from your
Microsoft Fortran PowerStation 4.0 installation. Visual Fortran 5.0
can co-exist with a 4.0 installation, as long as both versions reside
in different directories.
o Run X86\SETUP.EXE if root directory SETUP.EXE fails. If you attempt to
install Visual Fortran 5.0 using any of the methods described in
"Getting Started - Using Setup to Install Visual Fortran",
and the root directory SETUP.EXE fails to run, then try running
X86\SETUP.EXE. This runs the same installation procedure as the
root directory SETUP.EXE.
o The Visual Fortran 5.0 kit contains Microsoft Internet Explorer 3.0.1.
This version of Internet Explorer does not contain the recent security
patches. You can download those from:
http://www.microsoft.com/ie/security/update.htm
(or install Internet Explorer 3.02)
o Visual Fortran 5.0 and other Developer Studio products (for example,
Microsoft Visual C++ or Microsoft Visual J++) are engineered to
co-exist in Microsoft Developer Studio. However, the versions of
all products MUST match or you will receive version mismatch errors
when starting Developer Studio. An example of the error message you
would receive is:
"Cannot load package 'xxxxxx' because its internal version number,
or the internal version number of one of it components, does not
match the version of the Developer Studio shell."
o If you install Microsoft Visual C++ Professional or Standard Edition,
or Microsoft Visual J++, after installing Visual Fortran 5.0, you must
run the icon named "Repair #1 (VC++ or VJ++ Installation)".
This program fixes a registry entry that is incorrectly modified by the
VC++ or VJ++ installation. If you do not run this program, Fortran
debugging will not work properly.
o If you perform a Custom installation and ONLY install the
"Fortran Compiler, Tools and Libraries" component, all of the files
needed for compiling and linking Fortran program are not installed.
An additional 6 files must be copied to your installation's
...\DevStudio\SharedIDE\Bin directory. There is a program on the
installation CD-ROM that will copy these files. Run
z:\X86\SUPPORT\MISC\FORTONLY.EXE
(where "z" is the drive letter of your CD-ROM drive) to install the files.
o If you install multiple Developer Studio products and later uninstall
one or more of them, you may need to re-install the others.
o To install Microsoft Internet Explorer 3.0.1 after Visual Fortran 5.0,
you can either:
1. Re-run the Visual Fortran 5.0 SETUP.EXE and answer "Yes" when
SETUP asks if you want to install Internet Explorer.
2. Run \X86\SUPPORT\MISC\MSIE301.EXE from the Visual Fortran 5.0 CD.
---------------- Late breaking news -----------------------------------------
The following items of interest were discovered in the last phases
of testing:
o Minimal field width editing in FORMAT descriptors is not yet
correctly implemented. This will be corrected in a future release.
o If a user creates a custom make file that includes WIN32.MAK they
must set or define the "CPU" envirnoment variable. This should be
set to "i386" on Intel machines and "ALPHA" on Alpha machines.
Note that DFVARS.BAT correctly sets this environment variable.
The CPU environment variable is not required for normal compilations
within the IDE.
o When using the /link switch on the command line, the text after
the /link switch must be less than 512 characters in length. Longer
lengths will cause failure of the driver. This problem may be
worked around by using indirect command files to the linker or
restructuring the command line.
o For programs that use UNION declaration within the derived type
references to map fields may produce incorrect results. A workaround
is to declare a STRUCTURE instead. For example, the following
derived type:
type dtest
sequence
type (test) component
union
map
real r
end map
map
integer(1) i
end map
end union
end type
can be recoded to:
structure /dtest/
type (test) component
union
map
real r
end map
map
integer(1) i
end map
end union
end structure
o QuickWin applications may see incorrect behavior during printing or
saving of graphics if the screen is using more than 256 colors.
The following known problems remain:
o Commons with a single letter name may produce CVPACK errors of
the form: CVPACK: warning CK4002: duplicate public symbol in module xxx
This message may be ignored.
o ALL old .pdb files should be deleted.
ALL target .pdb files MUST be deleted or the linker may report
incompatible pdb file formats
o If your TEMP (or TMP) environment variable points to a directory
that does not exist FPP will loop forever if invoked.
----------- DIGITAL Visual Fortran RTL Release Notes -------------
Known Problems, Notes and Restrictions
o Entering control-C in a QuickWin application during I/O may leave
a process hung and/or running in an unknown state.
o PEEKCHARQQ doesn't work in a Qwin application.
o GETCHARQQ waits for an enter key before accepting input. It
should not wait.
o An array section in namelist input generates a runtime error
but should not.
o An exception handler established with the SIGNALQQ routine
does not override the default runtime exception handler.
o The default RTL fpe setting is /FPE:3 on Intel.
On Alpha, the default is /FPE:0.
o A file called FULLAPI.F90 is included on the kit. If the /winapp
switch does not eliminate undefined globals from compiling a
native windows application, try adding this file to your project
or command line. FULLAPI.F90 contains library search directives
for almost all needed libraries.
o Files forreent{.for + .h} have been added to the kit. These,
along with iosdef, fordef, and fpeflags{.for,.h} contain
constant definitions useful in some cases for testing IO
status values, calling miscellaneous rtl routines, etc.
o A formatted I/O rtl bug exists with zero iteration implied DO
in iolist. The rtl erroneously reverts the format when it sees a
STOP_FORMAT with only a zero-length element remaining in the io-list.
o Attempting to reopen a connected file with no FILE= specifier
incorrectly opens a temp file instead of the previously
open'ed file.
o Open of an existing file with position='append' and
action='write' does not work properly.
o The Visual Fortran RTL does not support MBCS characters.
o The Visual Fortran RTL supports only a variable of the
character data type as a format data specifier (ie.;
write(unit,FMT=character_data_type_variable)). Therefore
Integer and Real expressions cannot be used as the format
specifier in an I/O statement.
o The Visual Fortran RTL supports only the character data type
for Internal files.
o The Visual Fortran RTL does not support the Fortran
Powerstation I/O status (IOSTAT) values. Thus, the Visual
Fortran RTL returns its own unique I/O status values.
o The Visual Fortran RTL does not support the Fortran
Powerstation I/O messages. Thus, the Visual Fortran RTL
returns its own unique I/O error message values.
o For the INQUIRE statement BLANK= keyword, the Visual Fortran
RTL will return a value of "UNDEFINED" for a file which was
not opened as formatted. This complies with the F90
standard. This behavior is different from Fortran
Powerstation which returned a value of "NULL" or "ZERO".
o For the INQUIRE statement PAD= keyword, the Visual Fortran
RTL will return a value of "YES" for a file which was not
opened or connected. This complies with the F90 standard.
This behavior is different from Fortran Powerstation which
returned a value of "UNDEFINED".
o The Visual Fortran RTL will return an error if the PAD= or
DELIM= specifier is present on the open statement and the
file was not opened as formatted. This complies with the F90
standard.
o The Visual Fortran RTL will return an error if the POSITION=
specifier is present on the open statement and the file was
not opened with sequential access. This complies with the
F90 standard. This behavior is different from Fortran
Powerstation which failed to return an error.
o The Visual Fortran RTL recognizes files opened as CONOUT$ and
CONIN$ as the terminal. This behavior is different from
Fortran Powerstation which didn't recognize these special
devices names as the terminal.
o The Visual Fortran RTL does not support the use of negative
unit numbers. This complies with the F90 standard.
o The Visual Fortran RTL does not support the use of the '*'
operator as the unit number on an INQUIRE statement.
o The Visual Fortran RTL supports only the record type of
'STREAM' for the "RECORDTYPE" value when dealing with Fortran
Powerstation Unformatted files.
o The Visual Fortran RTL supports only the record type of
'FIXED' for the "RECORDTYPE" value when dealing with files
opened for Direct access.
o The Visual Fortran RTL does not support the reading and
writing of direct access records using Sequential I/O
statements.
o The Visual Fortran RTL does not support the writing of direct
access formatted records with a carriage control value of
'FORTRAN'.
o The Visual Fortran RTL has an additional carriage control
attribute value called 'NONE'. Thus, the default carriage
control attribute is different from that of Fortran
Powerstation when dealing with different file types. For
unformatted and binary files the default carriage control
attribute is 'NONE' as opposed to the value of 'LIST' which
is given by Fortran Powerstation.
o The Visual Fortran RTL does not support the Fortran
Powerstation semantics for the Binary(B), Octal(O) and
Hexidecimal(Z) edit descriptors.
o The Visual Fortran RTL output text when printing namelist
elements is different, but should be equivalent to that of
Fortran Powerstation.
o The Visual Fortran RTL when outputting real numbers will
always print a leading zero(0)(ie.; 0.567) if there is room.
This is different than Fortran Powerstation which does not
always print the leading zero(0)(ie.; .567) if there is room.
o The Visual Fortran RTL applies the rules for Iw format
editing when G format output editing is specified for an
integer data type. This complies with the F90 standard.
Fortran Powerstation applies the rules for Iw.m format in
this case.
o The Visual Fortran RTL does not interpret the backslash(\)
edit descriptor on input, it has no effect. This is unlike
Fortran Powerstation which does interpret the backslash(\)
edit descriptor on input. This is in contradiction with the
Fortran Powerstation documentation which states it has effect
only on output.
o The Visual Fortran RTL does not support what appears to be an
inconsistency with the F90 standard and Fortran Powerstation
list-directed output. Fortran Powerstation properly places a
separator between most data types (ie.; int-int, int-real,
real-int, logical-int, etc). However it fails to place a
separator between an undelimited character string and any
other adjacent data type. For delimited characters they
properly add the separator. The former behavior appears to
be a violation of section 10.8.2 of the F90 standard which
states the following: "The form of the values produced is
the same as that required for input, except as noted
otherwise. With the exception of adjacent nondelimited
character constants, the values are separated by ONE or MORE
BLANKS...." Thus, there should be no separator between two
nondelimited character constants, but there should be a
separator between a nondelimited character constant and any
other adjacent data type.
---------------- Developer Studio Release Notes -----------------------------
o Fortran editor syntax coloring has limitations. The syntax coloring
in the Developer Studio editor cannot correctly color all valid Fortran
source programs. In particular, white space is required around keywords
in order for the editor to correctly recognize them.
o Accessing online help brings up Dial-up Dialog Box. When accessing
online help you may get a dialog box asking about your dial-up connection
for your online service provider. This occurs because Internet Explorer,
which has an option to automatically connect to the online service, is
used to display the online documentation. The best way around this is to
choose Cancel when asked to connect. You can disable automatic dialup.
To turn off the automatic dialup:
1.Right click on the IE shortcut to get the Context menu and
select "Properties".
2.In the dialog, choose the Connection tab.
3.In the Dialing group, uncheck the "Connect to the Internet as needed".
This will turn off the Auto dialup.
4.Click on Apply and OK to close the dialog.
o Certain types of links in the online documentation may not appear to work.
They look like links, but if you click on them, nothing happens.
Such inactive links may be due to a setting in your Internet Explorer 3.0
that prevents running ActiveX scripts.
To enable the links, do the following:
1.Open Internet Explorer 3.0.
2.From the View menu, select Options.
3.In the Options dialog box, select the Security tab.
4.Under Active content, check the Run ActiveX scripts checkbox.
5.Click Apply.
6.Click Okay.
o The Developer Studio user interface does not respond to mouse clicks or
keystrokes until a macro finishes. This design prevents indiscriminate
interference between macros. However, processing a lengthy macro gives the
appearance that the user interface has hung.
o When you select "Build browse info file" in the Browse Info option page,
Developer Studio may display the following message:
"The Browser Information file will not be created unless
'Generate browse info' is checked on the C/C++ settings page for
the target or at least one file"
For Fortran-only Developer Studio projects, check
'Generate Source Browser Information' on the Fortran page, General
category. You do not need to set any C/C++ settings.
o If Developer Studio repeatedly aborts while attempting the same action
with the same project, try moving the project.opt file out of the
project directory. The project.opt file contains local cosmetic
settings, which include information about the local organization and
appearance of the project workspace using your hardware and
configuration. A new project.opt file is created automatically when
the workspace is opened and no project.opt file is found.
o If the screen flashes during builds or the wrong code page is used when
debugging a console application, and you are using Windows 95, delete any
of the following files from your computer:
- _DEFAULT.PIF, DEFAULT.PIF, CONAGENT.PIF
These files were used by Windows 3.x, and are not needed by Windows 95.
If they are used while you are debugging a console application, the
country settings associated with the PIF files will be used, and could
result in the wrong code page being loaded. A result of their use on
Windows 95 may be screen flashing during a build, if you have specified
console windows to be full screen.
o Several project system and debugger methods are disabled when the
BuildFinish event is fired. Consider the following VBScript event
handler:
Sub Application_BuildFinish(nNumErrors, nNumWarnings)
if nNumErrors+nNumWarnings = 0 then
ExecuteCommand "ToggleOutputWindow"
ExecuteConfiguration
end if
End Sub
ExecuteConfiguration fails because the BuildFinish event is fired before
several project system and debugger commands have been re-enabled. The
methods that invoke these commands, like ExecuteConfiguration, will
remain disabled between the time that the event is fired and the time
the event handler returns. After the Application_BuildFinish event
handler returns, these methods will be re-enabled.
Workaround:
1. Create a new macro, for example, MyBuild, with the following code:
Sub MyBuild
Build
' Add other method calls here that can't appear in the BuildFinish
' event handler, such as "ExecuteConfiguration"
End Sub
2. Always invoke a build by using this new macro instead of using the
default Build menu command or toolbar. Note that you can create a
custom menu command or toolbar button for your new MyBuild macro by
going to the Tools menu, choosing Customize, and using the Commands
tab of the dialog.
The Application_BuildFinish VBScript event handler now becomes:
Sub Application_BuildFinish(nNumErrors, nNumWarnings)
if nNumErrors+nNumWarnings = 0 then
ExecuteCommand "ToggleOutputWindow"
end if
End Sub
In this case Build will fire the BuildFinish event and return control
to the MyBuild subroutine at which time the ExecuteConfiguration will
be enabled. You can see what other methods are disabled simply by
looking at the disabled menu items when a build is in progress.
---------------- Fortran Format Editor Release Notes --------------------
o The Format Editor does not support "Variable Format Expressions".
o Repeatable edit descriptors can be specified without a field width
value. Since the Format Editor does not know the attributes of the
Fortran data that will be associated with the edit descriptor at
run-time, it uses a default field width based upon the type of the
edit descriptor. The following table lists the repeatable edit
descriptors and the default field width used by the Format Editor
for displaying the sample field data.
Edit Descriptor Default Width
A 10
I 7
L 2
B 8
O 7
Z 8
F 15
D 15
E 15
G 15
EN 15
ES 15
---------------- Debugging Related Release Notes ------------------------
Known problems with V5.0 support:
o Assumed-shape arrays with alternate lower bounds do not display
properly, e.g. in the example below:
subroutine foo(bar)
integer bar(5:,10:)
.
.
.
bar will not display properly since alternate lower bounds (5 and 10
for dimensions one and two, respectively) have been specified.
o When an explicit array is declared with non-constant bounds, a
temporary is created for each non-constant bound, and this temporary
is displayed in the locals window in the debugger. For example,
if the following code was being executed in the debugger:
subroutine foo(a,n)
integer a(n), b(n*2)
.
.
.
there would be at least two temporaries displayed (one for 'n' in
a(n) and one for 'n*2' in b(n*2)) along with locals a, b, and n.
These temporaries take the form "VAR$xxxx" where "xxxx" is an
integer. This is more of a nuisance than anything, since it tends
to clutter up the 'locals' window with temp names and values.
o When in a module routine, a module variable cannot be seen without
entering the decorated name. For example, with the following code:
module foo
integer first
subroutine bar()
.
.
.
end subroutine bar
end module foo
If the debugger is stopped within the subroutine bar, the variable
"first" is only visible in a watch window if "foo_mp_first"
is entered. The name decoration takes the form:
{module_name}_mp_{variable_name}
o Host associated variables are not visible in the debugger when with the
internal subroutine. For example
program foo
integer i,j
call bar
contains
subroutine bar
integer k,l
print *, i,j,k,l
end subroutine
end
When at the print statement within bar, k and l can be seen in
the debugger, but i and j cannot.
---------------- MS Powerstation features not supported ------------
o The following features from MicroSoft Fortran PowerStation are not
supported by DIGITAL Visual Fortran:
- $DEBUG, $NODEBUG-additional runtime checking
- DATA statement style initialization in attribute style declaration
statements
- Debug lines (other than D)
- $OPTIMIZE-change optimization options
- Integer array can contain FORMAT
- Internal files can be any type
- Listing metacommands - $page, $pagesize, $linesize, $[no]list, $include
---------------- DIGITAL Visual Fortran Product Description -----------------
A summary of the DIGITAL Fortran compiler as it has been extended for
this product is provided below.
DIGITAL Visual Fortran is an implementation of the Fortran programming
language that supports the FORTRAN 66, FORTRAN 77 and Fortran 90 standards.
DIGITAL Visual Fortran runs on Intel systems under Windows NT and Windows 95.
DIGITAL Visual Fortran fully supports the following language standards:
o FORTRAN 66 (ANSI X3.9-1966)
o FORTRAN 77 (ANSI X3.9-1978)
o ISO 1539-1980(E)
o MIL-STD-1753
o FIPS-69-1 (DIGITAL Visual Fortran meets the requirements of this
standard by conforming to the ANSI Standard and by including a
flagger. The flagger optionally produces diagnostic messages for
compile-time elements that do not conform to the Full-Level ANSI
Fortran Standard.)
o Fortran 90 (ANSI X3.198-1992)
o ISO 1539-1991(E)
DIGITAL Visual Fortran supports extensions to the ISO and ANSI standards,
including a number of extensions defined by Microsoft[R] Fortran
PowerStation 4.0. DIGITAL Visual Fortran also includes a number of
extensions defined by DIGITAL Fortran for the various DIGITAL Fortran
platforms (operating system/architecture pairs). In addition to DIGITAL
Visual Fortran systems, DIGITAL Fortran platforms include:
o DIGITAL Fortran 90 and DIGITAL Fortran 77 on DIGITAL UNIX[R]
(formerly DEC OSF/1[R]) Alpha systems
o DIGITAL Fortran 90 and DIGITAL Fortran 77 on OpenVMS[TM] Alpha
systems
o DIGITAL Fortran 77 on OpenVMS VAX[TM] systems
Major additions to the FORTRAN 77 standard introduced by the Fortran
90 standard include:
o Array operations
o Improved facilities for numeric computation
o Parameterized intrinsic data types
o User-defined data types
o Facilities for modular data and procedure definitions
o Pointers
o The concept of language evolution
o DATE_AND_TIME intrinsic that returns a 4-digit year
In addition, the Fortran 90 standard includes the following
industry-accepted extensions to the FORTRAN77 standard:
o Support for recursive subprograms
o IMPLICIT NONE statements
o INCLUDE statement
o NAMELIST-directed I/O
o DO WHILE and ENDDO statements
o Use of exclamation point (!) for end of line comments
o Support for automatic arrays
o Support for the following SELECT CASE - CASE - CASE DEFAULT - END
SELECT statements.
o Support for the EXIT and CYCLE statements and for construct names
on DO - END DO statements
DIGITAL Visual Fortran includes the following features and enhancements
found in Microsoft PowerStation Fortran v4.0:
o .f, .for, .f90 source file types
o Tab Continuation Lines
o # Constants-constants using other than base 10
o C Strings-NULL terminated strings
o MBCS Characters in Comments
o MBCS Characters in String Literals
o Conditional Compilation And Metacommand Expressions
($define, $undefine, $if, $elseif, $else, $endif)
o !MS$metacommand Form
o $FREEFORM, $NOFREEFORM, $FIXEDFORM-source file format
o $OBJCOMMENT-place library-search record in object file
o $INTEGER, $REAL-selects size
o $FIXEDFORMLINESIZE-line length for fixed form source
o $STRICT, $NOSTRICT-F90 conformance
o $ATTRIBUTES-identifier attributes
(c, stdcall, reference, value, dllimport, dllexport,
extern, alias, varying)
o $PACK-structure packing
o Kind Numbers Match Bytes-Kind parameters
o AUTOMATIC Attribute-automatic storage class
o Integer Pointers-AKA Cray Pointers
o VAX Structures == F90 sequence Derived Types
o Mixing Logicals and Numerics-logicals used with arithmetic
operators and variables
o Argument Matching For Procedure Calls
o Mixing Integer Kinds to Intrinsics
o Byte Data Type == INTEGER*1
o $ATTRIBUTES [ ] Form
o $ATTRIBUTES ALIAS-external name for a subprogram or common block
o $ATTRIBUTES C, STDCALL-calling and naming conventions
o $ATTRIBUTES VALUE, REFERENCE-calling conventions
o $ATTRIBUTES DLLIMPORT, DLLEXPORT-import/export from DLL
o Character and Non-character equivalence
o Double Complex Data Type
o .XOR.-exclusive disjunction
o Integer Arguments In Logical Expressions
o Option - CARRIAGECONTROL=-controls the output of formatted files
o Option - MODE=-controls access to file on networked systems
o Option - TITLE=, IOFOCUS=-controls QuickWin child windows
o Option - SHARE=-controls simultaneous access to file on networked
systems
o Default Carriage Control
o Implicit Open-prompt user for filenames
o Special Device Names For FILE= In OPEN statements
o FORM=BINARY in INQUIRE/OPEN statements
o Unformatted Sequential File Form
o Q Edit Descriptor-number of characters remaining in the input
record
o \ Descriptor-prevents writing an end-of-record mark
o $ Edit Descriptor-suppresses the carriage return at the end of
a record
o X Edit Descriptor Default-1
o Ew.dDe and Gw.dDe Edit Descriptors-similar to Ew.dEe and Gw.dEe
o Variable Format Expressions-integer expression in FORMAT statement
o Expanded missing ,'s In FORMAT statements-optional commas
o Expanded Namelist Start/End Sequences
o All Path Names: including Driver, Compiler, and INCLUDE Statement
MBCS Enabled [not W95]
o Universal Naming Convention (UNC) Pathnames
o Long Filenames
o 7200 Character Statement Length
o Free form infinite line length
o Debug Lines (D in column 1)
o $DECLARE and $NODECLARE == IMPLICIT NONE
o Logical Truth: 0 = .false.; non-0 = .true.
o $ATTRIBUTES EXTERN-variable allocated in another source file
o $ATTRIBUTES VARYING-variable number of arguments
o Alternate PARAMETER syntax-no parenthesis
o $ in identifiers
o INTERFACE TO-subroutine/function prototype
[global scoping not supported]
o Option - BLOCKSIZE=-internal buffer size used in I/O
o Argument Passing Modifiers-%VAL, %REF
o Argument Passing Modifiers-%DESCR (treated as %REF)
o CRAY pointer support for procedure names (for COM/OLE support)
o $ATTRIBUTES ALLOCATABLE-allocatable array
o Mixing Subroutines/Functions in Generic Interfaces
o $MESSAGE-output message during compilation
o $LINE == C's #line
o Listing Metacommands - $TITLE, $SUBTITLE
o STATIC Attribute-static storage class
o EOF checks for end of file
o LOC equivalent to %LOC
o HFIX converts to short integer
o INT1 converts to one byte integer by truncating
o INT2 converts to two byte integer by truncating
o INT4 converts to four byte integer by truncating
o JFIX same as INT4
o MALLOC allocates a memory block of size bytes and returns an
integer pointer to the block
o FREE frees the memory block specified by the integer pointer
o COTAN returns cotangent
o DCOTAN returns double precision cotangent
o IMAG returns the imaginary part of complex number
o IBCHNG reverses value of bit
o ISHA shifts arithmetically left or right
o ISHC performs a circular shift
o ISHL shifts logically left or right
DIGITAL Visual Fortran includes the following features and enhancements
also found on other DIGITAL Fortran platforms:
o Support for linking against static libraries
o Support for linking against dynamically linked libraries (DLL)
o Support for creating code to be put into a dynamically linked
library (DLL)
o Support for stack-based storage
o Support for dynamic memory allocation
o Support for reading and writing binary data files in nonnative
formats, including IEEE[R] (little-endian and big-endian), VAX, IBM[R]
System\360, and CRAY[R] integer and floating point formats
o User control over IEEE floating point exception handling, reporting,
and resulting values.
o Control for memory boundary alignment of items in COMMON and fields
in structures and warnings for misaligned data
o Directives to control listing page titles and subtitles, object file
identification field, COMMON and record field alignment, and some
attributes of COMMON blocks
o Composite data declarations using STRUCTURE, END STRUCTURE, and RECORD
statements, and access to record components through field references
o Explicit specification of storage allocation units for data types
such as:
INTEGER*4
LOGICAL*4
REAL*4
REAL*8
COMPLEX*8
o A set of data types:
- BYTE
- LOGICAL*1, LOGICAL*2, LOGICAL*4
- INTEGER*1, INTEGER*2, INTEGER*4
- REAL*4, REAL*8
- COMPLEX*8, COMPLEX*16, DOUBLE COMPLEX
- POINTER (CRAY style)
o Data statement style initialization in type declaration statements
o AUTOMATIC and STATIC statements
o Bit constants to initialize LOGICAL, REAL, and INTEGER values and
participate in arithmetic and logical expressions
o Built-in functions %LOC, %REF, and %VAL
o VOLATILE statement
o Bit manipulation functions
o Binary, hexadecimal, and octal constants and Z and O format edit
descriptors applicable to all data types
o I/O unit numbers that can be any nonnegative INTEGER*4 value
o Variable amounts of data can be read from and written to "STREAM"
files, which contain no record delimiters
o ENCODE and DECODE statements
o ACCEPT, TYPE, and REWRITE input/output statements
o DEFINE FILE, UNLOCK, and DELETE statements
o USEROPEN subroutine invocation at file OPEN time
o Debug statements in source
o Generation of a source listing file with optional machine code
representation of the executable source
o Variable format expressions in a FORMAT statement
o Optional run-time bounds checking of array subscripts and
character substrings
o 31-character identifiers that can include dollar sign ($) and
underscore (_)
o Language elements that support the various extended range and
extended precision floating point architectural features:
- 32-bit IEEE S_floating data type, with an 8-bit exponent and
24-bit mantissa, which provides a range of 1.17549435E-38
(normalized) to 3.40282347E38 (the IEEE denormalized limit is
1.40129846E45) and a precision of typically 7 decimal digits
- 64-bit IEEE T_floating data type, with an 11-bit exponent and
53-bit mantissa, which provides a range of
2.2250738585072013D-308 (normalized) to 1.7976931348623158D308
(the IEEE denormalized limit is 4.94065645841246544D-324) and
a precision of typically 15 decimal digits
o Command line control for:
- The size of default INTEGER, REAL, and DOUBLE PRECISION data items
- The levels and types of optimization to be applied to the program
- The directories to search for INCLUDE files
- Inclusion or suppression of various compile-time warnings
- Inclusion or suppression of run-time checking for various I/O
and computational errors
- Control over whether compilation terminates after a specific
number of errors has been found
- Choosing whether executing code will be thread-reentrant
o Kind types for all of the hardware-supported data types:
- For 1-, 2-, and 4-byte LOGICAL data:
LOGICAL (KIND=1)
LOGICAL (KIND=2)
LOGICAL (KIND=4)
- For 1-, 2-, and 4-byte INTEGER data:
INTEGER (KIND=1)
INTEGER (KIND=2)
INTEGER (KIND=4)
- For 4- and 8-byte REAL data:
REAL (KIND=4)
REAL (KIND=8)
- For single precision and double precision COMPLEX data:
COMPLEX (KIND=4)
COMPLEX (KIND=8)
o The following features of the proposed Fortran 95 standard:
- FORALL statement and construct
- Automatic deallocation of ALLOCATABLE arrays
- Dim argument to MAXLOC and MINLOC
- PURE user-defined subprograms
- ELEMENTAL user-defined subprograms (a restricted form of a pure
procedure)
- Pointer initialization (initial value)
- The NULL intrinsic to nullify a pointer
- Derived-type structure initialization
- CPU_TIME intrinsic subroutine
- Kind argument to CEILING and FLOOR intrinsics
- Nested WHERE constructs, masked ELSEWHERE statement, and named
WHERE constructs
- Comments allowed in namelist input
- Generic identifier in END INTERFACE statements
- Detection of Obsolescent and/or Deleted features listed in the
proposed Fortran 95 standard. DIGITAL Fortran flags these deleted
and obsolescent features, but fully supports them.
DIGITAL Visual Fortran provides a multiphase optimizer that is capable of
performing optimizations across entire programs. Specific optimizations
performed include:
o Constant folding
o Optimizations of arithmetic IF, logical IF, and block IF-THEN-ELSE
o Global common subexpression elimination
o Removal of invariant expressions from loops
o Global allocation of general registers across program units
o In-line expansion of statement functions and routines
o Optimization of array addressing in loops
o Value propagation
o Deletion of redundant and unreachable code
o Loop unrolling
o Thorough dependence analysis
o Optimized interface to intrinsic functions
o Loop transformation optimizations that apply to array references
within loops, including:
- Loop blocking
- Loop distribution
- Loop fusion
- Loop interchange
- Loop scalar replacement
- Outer loop unrolling
o Array temporary elimination
********************************************************************************
[R] CRAY is a registered trademark of Cray Research, Inc.
[R] IBM is a registered trademark of International Business Machines
Corporation.
[R] IEEE is a registered trademark of the Institute of Electrical
and Electronics Engineers, Inc.
[R] OSF and OSF/1 are registered trademarks of Open Software
Foundation, Inc.
[R] UNIX is a registered trademark in the United States and other
countries licensed exclusively through X/Open Company Ltd.
[R] Microsoft is a registered trademark of Microsoft Corporation.
[TM] The DIGITAL Logo, DEC, DEC Fortran, Digital, OpenVMS,
ULTRIX, and VAX are trademarks of Digital Equipment Corporation
[TM] Windows NT, NT, and Windows are trademarks of Microsoft
Corporation.
(c) 1997 Digital Equipment Corporation. All rights reserved.
|