Compaq Visual Fortran Release Notes
December 2001
This document contains information about
Compaqtm Visual Fortran from Versions 6.0 through 6.6A.
Software Version: Compaq Visual
Fortran
Version 6.6A
Compaq Computer Corporation
Houston, Texas
© 2001 Compaq Computer Corporation
Compaq, the COMPAQ logo, DEC Fortran, OpenVMS, Tru64,
and VAX are trademarks of Compaq Information Technologies Group, L.P. in
the United States and/or other countries.
Microsoft, NT, Visual Basic, Visual C++, and Windows are
either trademarks or registered trademarks of Microsoft Corporation in
the United States and/or other countries.
Intel and Pentium are trademarks of Intel Corporation in the United States
and/or other countries.
AMD and Athlon are trademarks of Advanced Micro Devices, Inc. in the United
States and/or other countries.
Adobe and Acrobat are trademarks of Adobe Systems Incorporated in the United
States and/or other countries.
GLOBEtrotter and FlexLM are trademarks of GLOBEtrotter Software,
Inc. in the United States and/or other countries.
IEEE is a trademark of the Institute of Electrical and Electronics Engineers,
Inc.
IMSL and Visual Numerics are trademarks of Visual Numerics, Inc. in the
United States and/or other countries.
OpenGL is a registered trademark of Silicon Graphics, Inc. in the United
States and/or other countries.
UNIX is a trademark of The Open Group in the United States and/or other
countries.
All other product names mentioned herein may be trademarks
of their respective companies.
Confidential computer software. Valid license from Compaq
required for possession, use or copying. Consistent with FAR 12.211 and
12.212, Commercial Computer Software, Computer Software Documentation,
and Technical Data for Commercial Items are licensed to the U.S. Government
under vendor's standard commercial license.
Compaq shall not be liable for technical or editorial
errors or omissions contained herein. The information in this document
is provided "as is" without warranty of any kind and is subject
to change without notice. The warranties for Compaq products are set forth
in the express limited warranty statements accompanying such products.
Nothing herein should be construed as constituting an additional warranty.
Major changes since Version 6.6 are indicated in blue
color in HTML output and by change bars in
the margin in the plain ASCII TXT output.
Chapter 1
Introduction
Thank you for choosing Compaq Visual Fortran. This document provides
release notes for Compaq Visual Fortran Version 6.6A. It also provides
key information for earlier releases since Version 6.0.
Compaq Visual Fortran conforms to the Fortran 95 Standard, Fortran 90
Standard, and previous Fortran standards. Compaq Visual Fortran uses the
same robust compiler system provided with Compaq Fortran on other platforms
for Alpha systems.
Please visit the Compaq Fortran Web page for a wealth of information
about Compaq Visual Fortran and Compaq Fortran, including product descriptions,
product updates, frequently asked questions, knowledge base articles, example
programs, and other information:
http://www.compaq.com/fortran
It is important that you register your purchase of Compaq Visual Fortran
(Visual Fortran) and also keep your registration information (such as your
e-mail address) up-to-date. Registration entitles you to exclusive benefits,
such as the Visual Fortran Newsletter, and provides a record of your serial
number should you misplace it. Concurrent license users need to perform
a separate registration to obtain the license key, but concurrent license
users (like other users) should also register their Visual Fortran purchase.
Use the following Internet URL:
http://www.compaq.com/fortran/register
1.1 Conventions
In these release notes:
- Compaq Visual Fortran is often abbreviated as "VF"
or "CVF".
- Compaq Array Visualizer is often abbreviated as "AV"
or "CAV".
1.2 Overview
These release notes describe Compaq Visual Fortran Version 6.6A and
previous releases back to Version 6.0:
- VF v6.6A updates VF v6.6 (which replaced v6.5).
There are no released versions of VF numbered 6.2, 6.3, or 6.4.
- VF v6.6A and 6.6 contains Array Visualizer v1.6,
which replaces Array Visualizer v1.5A. There are no released versions of
Array Visualizer numbered 1.2, 1.3, or 1.4.
- VF now uses a third-party license management
product called FlexLM to manage concurrent-use licenses. If you are licensed
as a single-use user, this has no effect on your license and you will see
no changes. Concurrent use license users should refer to the separate,
additional instructions on how to use FlexLM in the appropriate chapter
of the Compaq Visual Fortran Installing and Getting Started guide.
- Alpha users should be aware that support for Windowstm NTtm
Alpha systems ended as of December 31, 2000. Releases of Visual Fortran
after Version 6.5A will no longer support Windows NT Alpha systems.
1.3 General Information
Compaq Visual Fortran Version 6.6A is an enhancement
of VF v6.6, the current shipping product for Inteltm Win32tm
(x86) systems, and includes patches for problems fixed since VF
v6.6 shipped.
VF v6.6A updates the Compaq Fortran 95/90 compiler
and run-time library. It does not update other software components (such
as Microsofttm Developer Studiotm IDE pieces, certain
updates to applicable parts of Microsoft Developer Studio, the Compaq Extended
Math Library (CXML), IMSL, the Array Visualizer, and VF documentation).
VF 6.6A does not provide complete service updates
for Microsoft Developer Studio. Starting with v6.6, the Compaq Fortran
Companion Products CD-ROM will no longer be available, but VF 6.6A does
provide f90SQL-Lite from Canaima Software (optionally installed).
Compaq Visual Fortran v6.6A is available in two separate products:
- Compaq Visual Fortran Standard Edition
The VF Standard Edition contains the following components to support Intel
processors running Windows NT (including Windows 2000 and Windows XP) or
Windows 9*:
- VF compiler
- Libraries
- Compaq Extended Math Library (CXML---a set of mathematical subprograms
covering, for example, Basic Linear Algebra, Linear System and Eigenproblem
Solvers, and Sparse Linear System Solvers)
- Developer Studio
- Compaq Visual Fortran Professional Edition
The VF Professional Edition contains all the Standard Edition features
(VF compiler, libraries, CXML, and Developer Studio)
plus the following:
- IMSL mathematics and statistical libraries
- Compaq Array Visualizer Version 1.6
- Fortran COM Server Wizard
This product requires that you be running Windows
XP, Windows 2000, Windows NT Version 4.0 with Service Pack 3, Windows
Me, Windows 98, or Windows 95.
On Windows NT systems, Service Pack 3 will be installed by the Visual
Fortran installation if required. VF online documentation also requires
Microsoft Internet Explorer V4, which will be installed by the Visual Fortran
installation if required (see Section
2.3).
VF v6.6 (and v6.6A) contains Microsoft Developer
Studio 98 (Developer Studio v6.0) and is not compatible with the Developer
Studio on VF v5.0A (Standard and Professional) and Microsoft Visual C++tm
v5.0. VF v6.6 can co-exist on the same system with Developer Studio V5
products.
VF v6.6A contains bug fixes, performance improvements, extensions to
improve compatibility with Microsoft Fortran PowerStation, and additional
minor features.
One important new feature added in v6.6 is support
for 64-bit integer data {INTEGER (KIND=8) and LOGICAL (KIND=8)} (new features
are described in Chapter 3).
Chapter 2
Installation Notes
This chapter presents important points to consider and actions to take
to ensure a successful installation of Compaq Visual Fortran:
2.1 Version 6.6 Installation Notes
Visual Fortran 6.6A is installed using a downloadable
patch kit, so there is no 6.6A installation procedure.
The v6.6 installation procedure is the same as
for v6.5. Please refer to the Compaq Fortran Installing and Getting
Started guide for installation instructions (see the printed book or
online file Cvf_gs.pdf).
The following installation notes apply to the current version of Visual
Fortran:
2.2 Installation Changes for Version 6.5 to Typical
Installation
The following installation change occurred in Version 6.5:
- The typical installation of Compaq Visual Fortran (CVF) now includes
the Microsoft SDK documentation. This adds 110MB to the disk usage
for the typical installation.
2.3 Installation Notes Related to Online Documentation
The following installation notes apply to installing the HTML Help online
documentation:
- Internet Explorer is required to read HTML Help Viewer online documentation.
When you install Visual Fortran, the setup installation procedure checks
to determine whether a certain version of Internet Explorer is installed.
If it detects that Internet Explorer is not installed or an older version
is installed, it asks that you install Internet Explorer. If you do not
install Internet Explorer at this time, you will not be able to view Visual
Fortran online documentation in HTML Help Viewer, and selecting many of
the entries in the Developer Studio Help menu will result in an error message
dialog box being displayed.
If the installation program does not ask and you want to install Microsoft
Internet Explorer 4.0 SP1:
- On x86 systems, from the Visual Fortran 6.6 CD-ROM, run: \X86\SUPPORT\IE4\{WINNT
| WIN95\IE4SETUP.EXE
If you install Internet Explorer later, you will also need to reinstall
Visual Fortran to view the HTML Help Viewer online documentation.
Visual Fortran online documentation requires the minimal set of Internet
Explorer components; for example, it does not require the Active Desktop.
Testing with Internet Explorer Version 5 shows that it can be used with
Visual Fortran HTML Help Viewer online documentation.
For information about Internet Explorer installation issues, please:
- In a Web browser, open the URL:
http://support.microsoft.com/support
- Click Products (select Internet Explorer)
- Either click the displayed links or click Search Support to locate
the desired information.
- Initial index use and disk space requirements for HTML Help Viewer
After you install Visual Fortran, you can run the HTML Help Viewer to view
the online documentation. If you install Visual Fortran using the "Run
From CD-ROM" option, the first time you access the index (such as
clicking the index tab, pressing F1, or if you start HTML Help Viewer by
clicking Index in the Help menu), a "building index for first use"
message box appears. There will be a delay of 10-20 minutes while HTML
Help Viewer creates a df60.chw index file in the folder ...\Microsoft Visual
Studio\df98\doc. The df60.chw file is approximately 20 MB.
In addition to disk space requirements for installing Visual Fortran in
"Run From CD-ROM" mode, the disk where Visual Fortran is installed
must have enough room after installation for building the df60.chw file,
if you intend to use the documentation index.
There also needs to be at least 30MB free on the disk where the windows
temp directory resides while the df60.chw file is being built.
- If you also install the MSDN (or Visual Studio) documentation
If you also install the MSDN documentation from CD-ROM, be aware that you
must switch between displaying the MSDN documentation collection and the
Visual Fortran documentation collection in HTML Help Viewer. With Windows
2000 systems, be aware that your account needs at least Power User privilege
to change collections. To change the collection of titles displayed in
HTML Help:
- Start the visual development environment (Start-> Compaq Visual
Fortran->Developer Studio)
- In the Tools menu, click Options.
- Scroll to the Help System tab
- In the Preferred Collection box, select either the Visual Fortran or
the MSDN Library as your current collection.
- Click OK. The collection you just selected is now your current collection.
Regardless of the collection currently selected, you can display the Visual
Fortran HTML Help by selecting "Online documentation" in the
Visual Fortran program folder.
Chapter 3
Version 6 News
This chapter describes Version 6.6 news, notes, and known problems.
It also provides news for previous releases and supplemental notes.
3.1 Version 6.6A News
The following are new and changed features for
v6.6A:
- Version 6.6A of the VF compiler requires the
version of the RTL that ships with the 6.6A kit.
- This version contains the initial work to support
allocatable components of derived types, ie, components of derived types
may have the ALLOCATABLE attribute, may be the argument to ALLOCATE and
DEALLOCATE, and will be dealloacted automatically on routine exit in local
data.
- Uninitialized COMMON can only be aligned with
the PSECT directive to 6 {64 bytes}. Initialized COMMON can be aligned
up to the maximum of 13 {8192 bytes}. The PAGE keyword gets 12 {4096 bytes}.
- READ and WRITE take INTEGER*8 recnum and reclen.
- FIND and DELETE take INTEGER*8 recnum.
- /arch:p7 is the undocumented way to say /arch:pn4
for Pentium 4.
3.2 Version 6.6A Known Problems
The following known problems remain in VF:
- Control C handlers
Problems have been reported with implementing console event handlers (e.g.,
control C handlers) in programs built with Visual Fortran. The symptom
is usually that the handler is seemingly never invoked. This is due to
the implementation of console event handling on Win32 platforms. In response
to a Control-C event, the operating system will create a new thread to
execute the handler in. In order for the new thread to execute, it must
obtain priority. If the currently executing thread does not relinquish
its priority, it is possible that program execution will terminate before
the console event handler ever executes. For example, a READ statement
directed at the console which is interrupted by a control-C can cause an
end-of-file error to be processed, resulting in program termination, before
an event handler can execute. This is a Win32 restriction, not a bug in
VF, and developers need to be defensive when implementing console event
handlers. For example, the READ statement above could supply an END=label
where at label, a call to Sleep(0) causes the current thread to give up
its priority and might allow a handler to execute.
- There is a known interaction problem with window
sizing when using the program TOPDESK (from the Microsoft resource kit)
and Developer Studio. The problem can be somewhat avoided by not maximizing
the Developer Studio Window.
- Programs that use the ARRAY_VISUALIZER attribute
must be linked and run on systems that have the Array Visualizer installed.
If the array visualizer is not installed and a link of a program using
the ARRAY_VISUALIZER attribute is attempted, an unresolved reference will
be reported. If a program using the ARRAY_VISUALIZER attribute is run on
a system on which the array visualizer is not installed, the program will
crash at run time.
3.3 Version 6 News
This section describes news and notes for previous releases, from Versions
6.0 through 6.6:
3.4 Version 6.6 News
The following are new and changed features for v6.6:
3.4.1 Version 6.5 and 6.5A News
Version 6.5A news:
- The "unused" variable message is informational, not a warning,
as of 6.5A.
- The Fortran COM Server Wizard now allows you to select an out-of-process
(.EXE) COM server. Users now have a choice of the type of server: either
a DLL (in-process) COM server or an EXE (out-of-process) COM server.
- New compiler options and their descriptions:
- /assume:[no]protect_constants
This option specifies whether constant actual arguments can be changed.
By default, actual arguments that are constants are read-only (/assume:protect_constants).
To allow changes to actual arguments that are constants, specify /assume:noprotect_constants.
- /check:[no]arg_temp_created
Requests that a run-time informational message appear if actual arguments
are copied into temporary storage before routine calls. Specifying /check:noarg_temp_created
(the default) does not generate the extra code needed to display a message
run-time when this condition occurs.
- /warn:[no]ignore_loc
Requests that the compiler issues warnings when %LOC is stripped from an
argument. The default is /warn:noignore_loc (does not issue a warning for
this condition).
- The hardware selected by the /ARCH command line option is the basis
for the /TUNE option, i.e., you cannot use /TUNE to tune generated code
for an architecture older than the one selected by /ARCH.
- New data ATTRIBUTES directive keywords are now available:
ALLOW_NULL, DECORATE, IGNORE_LOC, and NOMIXED_STR_LEN_ARG
- VF Reporter running on the Windows Me operating system will display
errors but will run. The initial error message displayed is:
The file named "C:\Program Files\Microsoft
Visual Studio\DF98\VFRPORTR\DFWHAT.TXT"
THAT SHOULD HAVE BEEN CREATED BY:
|
The second error displayed is:
The file named "C:\Program Files\Microsoft Visual
Studio\DF98\VFRPORTR\GLINFO.TXT" THAT SHOULD HAVE BEEN
CREATED BY "C:\Program Files\Microsoft
Visual Studio\DF98\BIN\df.exe /what > dfwhat.txt" was not found
|
The error occurs because Windows Me doesn't support Autoexec.bat where
VF traditionally sets the environment variables for that family of Windows
operating systems.
A version of VF Reporter that fixes this problem will be available from
the VF web page:
http://www.compaq.com/fortran
- For details about changes for Version 6.5A, see the following sections.
For example:
Version 6.5 news:
- Compiling using .MOD files is now much faster. We have made the .MOD
files smaller and faster to search.
Note
All .MOD files created by CVF T6.2 Beta 1
or Beta 2 must be recompiled with CVF v6.5 or later in order to work properly.
|
- VF v6.5 introduces the Fortran COM Server Wizard.
The Fortran COM Server Wizard generates the Fortran code necessary to implement
a COM server, and allows you to concentrate on the code that is specific
to the component you are creating. The v6.5 wizard creates in-process servers
(or EXE servers starting with v6.5A) and custom or dual interfaces (not
Automation - only interfaces). See the new "Creating a COM Server"
chapter in the online Compaq Visual Fortran Programmer's Guide.
- %VAL and %REF applied to actual arguments now override any mechanism
attributes specified for the matching dummies in an explicit interface.
- In order to conform with clarified wording in the Fortran standard,
the compiler has been changed so that when a READ statement encounters
an end-of-file condition, and there is no END= specifier but there is an
ERR= specifier, the ERR= branch is NOT taken. Similarly, if an end-of-record
condition occurs but there is no EOR= specifier, an ERR= branch is not
taken.
A further behavior change, to conform with the standard, has been implemented.
If an EOF (or EOR) condition occurs and there is not an IOSTAT= or END=
(or EOR= in the case of EOR) specifier, the program is terminated with
an error message.
- VF can now generate optimized code for the Intel Pentiumtm
III, AMDtm K6, and AMD Athlontm {K7} architectures.
- VF v6.5 now supports concurrent-use licenses. Use of a concurrent-use
license uses a third-party license management product called FlexLM to
manage the concurrent-use license use. If you are licensed as a single-use
user, this has no effect on your license and you will see no changes. Concurrent
use license users should refer to the separate, additional instructions
on how to use FlexLM in the appropriate chapter of the Compaq Visual
Fortran Installing and Getting Started guide.
- New COM routines provided are COMStringFromGUID and COMIsEqualGUID.
- New intrinsic procedures include:
INT_PTR_KIND() - returns the INTEGER KIND that holds an address
POPCNT, POPPAR, LEADZ and TRAILZ intrinsics on X86 processors
Optional KIND argument for LEN, SHAPE, SIZE, LBOUND and UBOUND
DFOR$PREFETCH, DFOR$PREFETCH_MODIFY, DFOR$PREFETCH_EVICT_NEXT on Alpha
processors
- DLLEXPORT and DLLIMPORT of Variables
In previous versions of Visual Fortran, the only objects which could have
the DLLEXPORT or DLLIMPORT attribute were procedures and COMMON blocks.
VF can now export/import module variables and arrays.
- Support for reading nondelimited character strings as input for character
NAMELIST items has been added.
- New environment variable FORT_CONVERT_ext acts like environment
variable FORT_CONVERT.ext.
- New exception handling routines are CLEARSTATUSFPQQ and GETEXCEPTIONPTRSQQ.
- New Visual Fortran Samples (described in Roadmap to the Visual Fortran
Samples) are provided, including:
- COM sample: Adder
- DIALOG sample: Celsicon
- ExceptionHandling samples: ClearFP, Cslexp2, Cslexp4, GetEptrs, Vbvf1,
and Winexcp1
- Isovar sample (ISO varying strings)
- Mixed-language samples, new samples for MASM and Delphi
- QuickWin samples: Conapp, Dirkeys4, PostMini, and Resize
- Configuring Concurrent License Wait Time
If you are using Visual Fortran under a Concurrent Use (network) license,
and all available licenses are in use when you begin a compilation, the
compiler will wait for the next available license. If the wait time expires
before a license becomes available, compilation terminates with an error
message. The default wait time is five minutes (300 seconds), but you can
change this on a per-user basis through a registry entry if desired.
To establish a new wait time, create a text file using NOTEPAD or WordPad
and call it LWAIT.REG. The file should contain the following four lines
(the second line is blank):
REGEDIT4
[HKEY_CURRENT_USER\Software\DigitalEquipmentCorporation\VisualFortran\6.5]
"LicenseWaitTime"="nnn"
|
In this file, replace nnn with the number of seconds you want the
compiler to wait for a license to become available. A value of 0 (zero)
means that the compiler will not wait and will give an error immediately
if a license is not available when compilation starts. Negative values
are ignored. For example, if you wanted to change the wait time to ten
minutes, specify 600 seconds as follows:
REGEDIT4
[HKEY_CURRENT_USER\Software\DigitalEquipmentCorporation\VisualFortran\6.5]
"LicenseWaitTime"="600"
|
Save the LWAIT.REG file and then double-click on it to merge it in to the
registry. This setting affects you only---other users of the system may
establish their own values for the wait time, or take the default if it
is undefined.
- Visual Studio 6.0 Service Pack 4
After installing Service Pack 4 of Visual Studio 6.0, linking DLL libraries
may report: error LNK2001: unresolved external symbol
__imp___fpieee_flt
For a resolution to this problem, see the following Knowledge Base article
on the Visual Fortran web site:
http://www.compaq.com/fortran/kb/q1036.html
- The directories \X86\USUPPORT and \AXP\USUPPORT on the CD-ROM contain
the \RUNTIME subdirectory that contains the redistributable files for CVF
v6.5 and CAV 1.5:
...\RUNTIME\VFRUN650I.EXE and
...\RUNTIME\VFRUN650A.EXE
|
This self-installing executable kit installs the run-time components needed
to run Visual Fortran applications on x86 and AXP (Alpha) systems
respectively which do not have Visual Fortran installed.
...\RUNTIME\DAV-X86-150.EXE and
...\RUNTIME\DAV-AXP-150.EXE
|
This demonstration package includes the Array Viewer, Avis2D ActiveXtm
control, and a sample file. The Array Viewer Demo can display AGL (Array
Visualizer's native format) files written by an Array Visualizer user;
it can also display HDF files. The package, including the ActiveX controls,
is also used when distributing applications which make use of the Avis2D
control to users who do not have the full Array Visualizer kit installed.
3.4.2 Version 6.1A and 6.1 News
The following Version 6.1A and 6.1 news should also be noted:
- New in v6.1A are the command line options /ccdefault, /cxml, /imsl,
and /align:sequence; array constructors may have scalar CHARACTER source
elements of varying size. See the online documentation for more information.
- VF v6.1 Professional CD contains v6.0 IMSL libraries
The VF v6.1 Professional kit contains the IMSL libraries from the VF v6.0
Professional kit. The VF v6.1 Getting Started and Programmers Guide document
new v6.1 IMSL libraries that will be made available via a web-downloadable
patch kit soon after VF v6.1 ships.
- NO_ARG_CHECK attribute
The NO_ARG_CHECK attribute specifies that type and shape matching rules
related to explicit interfaces are to be ignored. This permits the construction
of an INTERFACE block for an external procedure or a module procedure that
accepts an argument of any type or shape. See the online documentation
for more information.
Compaq recommends that arguments declared as type CHARACTER not be given
the NO_ARG_CHECK attribute, as argument passing inconsistencies may otherwise
result.
- Predefined symbols to VF and FPP
The VF driver executes FPP and the VF compiler with a number of predefined
symbols:
Switch/Symbol |
Why? |
-D_WIN32=1 (both compiler and FPP) |
Because this is Win32 |
-D_MT=1 |
If compiling threaded |
-D_X86_=1 (both compiler and FPP) |
If Intel |
-D_WIN95=1 |
If Windows 95 |
-D_WIN98=1 |
If Windows 98 |
-D_ALPHA_=1 (both compiler and FPP) |
If Alpha |
-D_MSFORTRAN_=401 |
If /fpscomp:all or /fpscomp:symbols |
-D_DLL=1 |
If linking against a DLL |
/D__LANGUAGE_FORTRAN__ |
To FPP only |
The user may define additional symbols, such as -D_BUILDING_DLL=1 to mean
that the compilation is building a DLL.
- A new item has been added to the Developer Studio File menu, "Print
Colorized Fortran...". This item prints a Fortran source file in color.
It uses the FSC utility, described elsewhere in the release notes, to create
an HTML file with the coloring information. It then instructs the application
on your system that handles HTML files to print the file. This has been
tested with the Internet Explorer and Netscape browsers. If you encounter
a problem using the "Print Colorized Fortran..." item, please
use the FSC utility directly. Note that "Print Colorized Fortran..."
creates the HTML file in your TEMP directory, and does not delete the file
since it does not know when the printing has completed. You may delete
these files to free up disk space.
- FSC.EXE has been added to the kit. This program takes an .F90 or .FOR
source and produces a HTML version that is colorized per the current Developer
Studio Color settings in the registry. It has default colors that are used
if the current registry settings are not available. The resultant HTML
file may be printed or viewed with your favorite browser. This utility
may be invoked from a command prompt (use FSC -? or FSC /h for help) or
from within the IDE.
- VFRUN provides a self-extracting executable file that installs Visual
Fortran run-time components on the target system. These run-time components
include DLLs and other files, as described in Compaq Visual Fortran
Installing and Getting Started in "Redistributing Visual Fortran
Files".
VFRUN files are provided for different Visual Fortran releases and for
x86 and Alpha systems. For example, for Visual Fortran v6.1, VFRUN61i.exe
is provided for x86 systems and VFRUN61a.exe is provided for Alpha
systems.
- The Fortran compiler now sets "/arch:host /tune:host" when
the user specifies "/fast". This generates optimal code for the
computer architecture on which the compiler is running. However that code
may run slowly or not at all on another version of the computer architecture.
- Two new Fortran source directives for controlling optimizations are
now available: cDEC$ IVDEP and cDEC$ UNROLL. See the online Compaq Visual
Fortran Programmer's Guide for a complete description.
- New functionality has been added to the Dialog Procedures:
- You may use ActiveX Controls in your dialog boxes. See "Using
ActiveX Controls" in the "Using Dialogs" section of the
online Compaq Visual Fortran Programmer's Guide.
- Edit Box control enhancements:
- You may now use multiline edit controls.
- The maximum size restriction of 256 characters has been removed.
- The Edit Box control supports two additional integer indexes:
DLG_TEXTLENGTH - Sets or Gets the current length of the text in the
edit box.
DLG_POSITION - Sets or Gets the current text cursor position in the edit
box.
- New Routines:
- DlgSetTitle - Sets the title of the dialog box.
- DlgFlush - Updates the display of the dialog box. Useful when changing
the dialog box outside of a dialog callback.
- DlgModalWithParent - Allows you to specify the parent window of a modal
dialog box. Useful in an SDI or MDI Windows application that uses modal
dialog boxes.
- DlgIsDlgMessageWithDlg - Allows you to specify which dialog box to
check. Useful when the dialog box was created in a DLL.
- The dialog box supports a new callback index, DLG_SIZECHANGE. This
callback is invoked when the size of the dialog box changes.
There is one known problem: An event method which passes a DOUBLE parameter
by value does not work. This is because of a problem in a system DLL.
- New SPORT_xxx (Serial Port) routines have been added
The SPORT_xxx collection of routines is designed to help the Fortran programmer
do basic input and output to serial ports. The programming model is much
the same as a normal file except the user does a connect/release instead
of an open/close. Two types of read and write operations are provided.
One set reads and writes arbitrary data from/to the port while the other
set reads and writes line terminated data. Calls are provided to set basic
port parameters such as baud rate, stop bits, timeouts, etc. Additionally,
a call is provided to return the Win32 handle to the port so that raw Win32
APIs may be used to implement additional needs of the programmer.
The documentation overview can be found in Programmers Guide-> Files,
Devices, and I/O Hardware->I/O Hardware->Using the Serial I/O Port
Routines. The detail description of the routines can be found in Language
Reference->A to Z Reference->S.
- The new subroutine TRACEBACKQQ() allows you to initiate a stack trace
in your program whenever you like. The input arguments allow you to specify
your own message text to head the output and other options as well. See
the online documentation for more info. (Programmer's Guide->Handling
Run-Time Errors->Using Traceback information, and the Language Reference
Manual A to Z Reference->T to Z->TRACEBACKQQ.)
- Greater Access to Windows APIs
DFWINTY.F90 has 980 new derived types and 4070 new Fortran parameter constants
added. These new items represent the difference between Microsoft Visual
C++ 4 header files and Visual C++ 6 header files.
USER32.F90 has 72 new interfaces to routines in USER32.LIB. These new routine
interfaces again represent the difference between Microsoft Visual C++
4 header files and Microsoft Visual C++ 6 header files.
KERNEL32.f90 has 50 new interfaces to routines in KERNEL32.LIB.
GDI32.F90 has 25 new interfaces to routines in GDI32.LIB.
ADVAPI32.F90 has 50 new interfaces to routines in ADVAPI32.LIB.
In all these files, the new material is under conditional compilation so
that defining "__DO_NOT_INCLUDE_VC6_ITEMS" will remove the new
items. Search for the string above to locate the new items which will be
found towards the end of the file.
The files are shipped without the string being defined, and the module
files will contain the new items.
- VF puts literals into read-only memory so storing into a dummy argument
that has a constant as its associated actual argument will result in an
access violation and program termination:
call f(0)
...
subroutine f(i)
i=1 ! this will die
|
- v6.1 for Intel contains all of the applicable updated files from the
Microsoft Visual Studio 6.0 Service Pack 3. Therefore, V6.1 Intel users
do not need to install Visual Studio 6.0 Service Pack 3 unless you have
other Visual Studio products. v6.1 for Alpha contains all of the applicable
updated files from the Microsoft Visual Studio 6.0 Service Pack 2.
3.4.3 Version 6.0 News
The following v6.0 news should be noted:
- With the addition of minimal width format field editing in this release,
VF now fully supports the Fortran 95 standard ISO IEC 1539-1:1997.
- Effective with this release, the v4.0 Microsoft Fortran 90 compiler
for Intel is no longer supplied on the Visual Fortran kit.
- Support for traceback is included with this VF kit.
When an application aborts with a severe error, the Fortran runtime will
now, by default, display its usual error message plus a hex dump of the
call stack at the time of the error. If the executable image includes traceback
information, the runtime will also provide correlation of program counter
values to the source file, routine name and line number. The inclusion
of traceback info is under the control of a new compiler option, /traceback.
The /traceback option is on by default in IDE Debug configurations and
off by default in IDE Release configurations.
If you do not want to see traceback output, you can disable it with a new
environment variable, FOR_DISABLE_STACK_TRACE. Set the environment variable
to true to turn off the output. You will still get the standard runtime
error message telling you what happened if you disable stack trace output.
Since the expected correlation information can only be generated by the
Fortran compiler, mixed language applications will only see correlation
for that part of the application written in Fortran. You'll still get hex
PCs for anything else but you can manually correlate that information by
use of a map file.
The online Compaq Visual Fortran Programmer's Guide contains more
information on generating and using traceback information to debug your
application.
Correlation of program counter values to the source lines does not work
with incremental linking. If you enable traceback and incrementally link
your image, the RTL will disable PC correlation.
- The call stack display in the IDE and traceback information displayed
for errors from math intrinsics on Intel platforms used to be incorrect
due to limitations of the Win32 StackWalk() api. For debug images or images
built with the /traceback option, the compiler will now use a calling sequence
which the StackWalk() api is capable of interpreting correctly.
- Visual Fortran now provides Fortran project wizards which make it easier
for you to create a new Fortran project. In some cases, "template"
code can be generated as a starting point for your application. See the
"Types of Projects" section in the online Compaq Visual Fortran
Programmer's Guide for details.
- Visual Fortran now provides a facility to save and re-use the Project
settings for multiple projects of the same project type. For example, you
can save your Project settings environment for a QuickWin project type
and use those saved settings as defaults when you create a new QuickWin
project type. See the "Saving and Using the Project Setting Environment
for Different Projects" section in the online Compaq Visual Fortran
Programmer's Guide for details.
- There is a new icon in the Fortran toolbar. It is named "Manage
Saved Fortran Environment" and it displays your saved Fortran environments.
It allows for selective deletion of saved environments and duplicate scanning.
It also allows you to rename the environment or change the comment.
- The RTL has a new feature for helping to debug unhandled IO programming
errors in the IDE. When a severe unhandled IO programming error occurs
(such as an End-of-File condition), and the program is executing in the
debugger, the RTL will raise a debug event automatically so execution will
stop and the Call Stack Display (Alt+7) can be viewed.
When the debug event happens, the user will see an information box containing:
User breakpoint called from code at 0xnnnnnnn
along with disassembly information from NTDLL. Click on OK to dismiss the
information box. Scanning down the Call Stack Display, there will be a
few frames from NTDLL and the Fortran RTL displayed, and then the actual
Fortran routine with the IO call will show up. In the Context menu, select
the Fortran routine to get the Fortran code displayed with the green arrow
pointing at the IO statement in error.
This action all occurs after the error message and traceback information
has been gathered and output. That information is available in the hidden
program output window if you iconize the IDE. You should not need the stack
dump because you have the Call Stack Display in the IDE, but the error
message with the file name might be useful to see.
In VF v5.0, this behavior is only supported on Windows NT: to break on
an unhandled IO error on Windows 9*, the user had to use the environment
variable FOR_GENERATE_DEBUG_EXCEPTION. In VF v6.*, it is no longer necessary
to use FOR_GENERATE_DEBUG_EXCEPTION.
- The /optimize:5 and /[no]transform_loops options are now supported
on the Intel platform. They have always been there on the Alpha platform.
- The ...\DF\SAMPLES directory now contains a SAMPLES.HTM file that is
a roadmap to the samples. It explains the functionality that each sample
demonstrates.
- The behavior of the REFERENCE attribute has changed, but only in a
very specific, limited way.
The change occurred in how character strings are passed when the STDCALL
and REFERENCE attributes are both given to an entire function or subroutine.
Character strings can be passed with or without a "hidden length".
In general, they are passed with a hidden length included either immediately
after the character argument, or at the end of the argument list. However,
when certain attributes are applied to the argument or function, only the
address of the character argument is passed with no hidden length argument.
This was previously defined as:
Argument Given to ATTRIBUTE |
ATTRIBUTES Given to Function or Subroutine |
|
default |
C |
STDCALL |
C+REFERENCE |
STDCALL+REFERENCE |
default |
w/len |
arg(1:1) |
arg(1:1) |
w/len |
no len |
reference |
no len |
no len |
no len |
no len |
no len |
This was how Microsoft PowerStation originally specified this behavior,
so VF specified it too. However, there was no ability to pass a character
argument with the hidden length *and* using the STDCALL attribute for the
function. This was a major problem that did not occur with the C attribute
because specifying C+REFERENCE did pass the length. Also, this was the
only case where the C+REFERENCE behavior varied from the STDCALL+REFERENCE
behavior.
As a result, the STDCALL+REFERENCE behavior has been modified (when no
attribute is given to the argument) to match the C+REFERENCE behavior,
i.e. pass both the address and the hidden length in this case. This allows
the use of STDCALL while still being able to pass the address of character
arguments with or without the hidden length.
To pass the address only, i.e., to get the old behavior, add the REFERENCE
attribute to character arguments while keeping both the REFERENCE and STDCALL
attributes on the routines.
- The run-time support was modified to not require a record terminator
<CR> or <LF> on the last record of a formatted data file. Prior
to this change, an end of file during read was generated when this condition
was encountered. Also, prior to this change, the switch /fpscomp=general
would allow the last record to not contain a record terminator.
- The BUFFERED= keyword has been added to the OPEN and INQUIRE statements.
The default is BUFFERED='NO' for all I/O, in which case, the RTL empties
its internal buffer for each WRITE. If BUFFERED='YES' is specified and
the device is a disk, the internal buffer will be filled, possibly by many
WRITEs, before it is emptied.
If the OPEN has BUFFERCOUNT and BLOCKSIZE arguments, their product is the
size in bytes of the internal buffer. If these are not specified, the default
size is 1024 bytes for /fpscomp=general and 8192 bytes otherwise. This
internal buffer will grow to hold the largest single record but will never
shrink.
- The command line option "/assume=buffered_io" turns on buffered
I/O for all Fortran logical units opened for sequential writing. The default
is "/assume=nobuffered_io".
- New functionality has been added to the Dialog Procedures:
- Support for modeless dialog boxes (DlgModeless)
- Support for Picture, Progress, Spin, Slider and Tab controls
- Support for the DLG_ADDSTRING control index for List and Combo Boxes
- Support for initial data for Combo Boxes
See the "Using Dialogs" section of the online Compaq Visual
Fortran Programmer's Guide for details. There is a new DIALOG samples
directory which demonstrates the use of the new functionality.
If you used any of the non-public procedures or structures in DFLOGM.F90,
you must recompile your code before relinking.
- New functionality has been added to the Fortran Module Wizard:
- The wizard now processes the Enumerations in the type information.
It generates PARAMETER declarations for the Enumerations that you select.
- The wizard now generates PARAMETER declarations for the CLSIDs of the
CoClass'es in the type information.
- The list box in the "Type Library" dialog box now preceeds
the name of the component with the type of component (for example, "Interface",
"Enum", "Dispinterface", "Module".
3.5 Version 6 Notes and Supplemental Information
- The directories \x86\USUPPORT and \AXP\USUPPORT
on the CD-ROM contain some unsupported but nevertheless useful tools. For
example:
...\Support Directory |
Description |
\Misc\CTEST.EXE |
This program may be renamed to "WHICH.EXE" and placed somewhere
on a users PATH to perform the function of the UNIX tm "which"
command. |
\Misc\WHAT.EXE |
This program will scan a binary file for UNIX style "what"
strings and display any that are found. The DECFOR90.EXE may be used as
an example of a file that contains these "what strings". |
\Misc\STRSUB.EXE |
This program will process a text file and replace all occurrences of
a given string with another string. |
\Misc\FIXMSTAB.EXE |
This program converts Fortran source code that uses Microsoft style
tab rules to follow Compaq Fortran standard TAB rules. |
\Misc\CBANLC.EXE |
This program analyzes object and library files for inconsistencies
in Fortran COMMON blocks that can lead to LINK errors and program failures.
For instance, this tool will tell you if you have declared two COMMON blocks
of the same name that have different sizes. Note that because of performance
considerations, a COMMON block whose size is less than 8 bytes is reported
to have a size of 8 bytes. This may cause inconsistencies in small COMMON
blocks to not be reported. |
\Misc\CBANLW.EXE |
A Windows version of the above CBANLC tool. |
\Misc\LOADTEST.EXE |
This program can be used to try a test load on a DLL that might be
loaded later by some program using the LoadLibrary API (such as used by
Microsoft Visual Basic tm). It will try to load the DLL and
report all other DLLs that are used in the process. Optionally it will
lookup entry points in the loaded DLL using names passed in on the command
line. All errors are reported. |
\Win95\EC.EXE |
This program may be used on a Windows 95 system to capture stderr output.
It executes a command line after parsing and removing Windows NT compatible
redirection symbols. |
- Conditional compilation with various letters in column 1 of fixed form
source is a Microsoft Fortran PowerStation feature that is not supported
by VF. VF provides a sample program called DLINES (under Samples\Advanced\COM)
which will automatically convert PowerStation conditional compilation letter
lines to the !DEC$ IF DEFINED form. This program is also an interesting
example of using the COM interface to drive Developer Studio, which is
used to actually do the editing.
- To allow you to read the Compaq Visual Fortran Installing and Getting
Started guide before (or during) installation, the Installing and Getting
Started document is provided in Adobe Acrobat Reader (PDF) format in the
root directory of the Visual Fortran CD-ROM with a file name of CVF_GS.PDF.
This file requires Acrobat Reader Version 4.0, which can be downloaded
from:
http://www.adobe.com
After you install Visual Fortran, you can view the Visual Fortran Language
Reference, Programmers Guide, Error Messages, Array Visualizer, and other
online documentation with HTML Help Viewer.
- The fpp preprocessor by default does not do macro substitution. There
is an option to enable it: c:\users\test> df /fpp:"/m"
tst.fpp
The default is /fpp:"/nom".
- Regarding how many files can be simultaneously open in a VF program,
the following experiments were performed:
- On Windows NT, a Visual Fortran program was able to open successfully
5000 files simultaneously.
- On Windows 9*, a Visual Fortran program was able to open successfully
250 files simultaneously before it got an OPEN error.
- Using NT v4.0 SP3 {service pack 3}, a VF program can compile and execute
with a COMMON block up to 1.75GB in size.
- VF allocates array temporaries and automatic arrays on the stack at
run-time. The default size of the Win32 stack is not very large so you
may need to increase the stack size.
It is possible to increase the stack size either when you link the executable,
or by using EDITBIN on the executable later.
On the LINK command line, you can use the /stack qualifier, as: link
/stack:4000000
Or, as part of the DF or F90 command: df foo.f /link
/stack:4000000
You also have the option to modify the stack size in the executable itself
using EDITBIN, such as: editbin /stack:4000000 foo.exe
By default, the stack size is 0x100000, or (1,048,576 decimal).
- The FULLAPI.F90 file. 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.
- It is now possible to PRINT and SAVE your QuickWin screen images when
your display settings are set to Hi Color (16 bits per pixel), True Color
(24 bits per pixel), and True Color (32 bits per pixel). Only support for
256 colors (8 bits per pixel) or less was previously provided. This extended
support also applies to the routines GETIMAGE, IMAGESIZE, LOADIMAGE, PUTIMAGE,
and SAVEIMAGE, and to the _W versions of these routines such as SAVEIMAGE_W.
To SAVE or PRINT a screen image, click on the window you want to use, click
on the menu item EDIT, and Select All, then click on the menu item FILE,
and click either PRINT or SAVE. You may display the resulting .BMP from
SAVE in the PAINT accessory or you may use a call to the LOADIMAGE routine
in a QuickWin program to bring the image back to the screen.
- In the linker, the order that libraries are searched is the order in
which the libraries are specified EXCEPT that the linker looks in the "current"
library first. So, if your program references something in B.LIB and then
it references F which is in both A and B, the linker will find the F in
B.LIB even if A.LIB is specified on the link line first. If you specify
/VERBOSE on the link command line, the linker will show you what it is
doing.
- On Windows 95 and Windows 98 systems, /fpe:0 does not work correctly
on underflow. The hardware signals the underflow but the operating system
reports a floating invalid. Instead of making the result value 0.0, the
program aborts.
Chapter 4
Visual Fortran Compiler Release Notes
This chapter provides the following details about changes to the Compaq
Fortran compiler:
4.1 New Features and Changes for Version 6.6A
The following changes have been made to the Compaq
Fortran compiler for VF v6.6A since VF v6.6 shipped:
- The following changes have been made to the compiler
{from V6.6-1684-47B6E to V6.6-1877-47BAQ}:
- 1687 - Improve diagnostics for ONLY symbols not
found.
- 1707 - Correct a problem when, in a given program
unit a reference is made to a field whose type is private when imported
from one module, but public when imported from another, the visible field
is not recognized.
- 1708 - When a typeless constant is passed as
an actual argument, always treat it as INTEGER(8), not "default integer".
- 1712 - Eliminate internal compiler error for
nested initialized pointer type.
- 1713 - Eliminate invalid warnings when :: used
with initialization in STRUCTURE field declarations.
- 1714 - Eliminate internal compiler error for
invalid use of array member in scalar structure constructor.
- 1720 - Correct problems when omitted OPTIONAL
arguments passed to MAX and MIN.
- 1723 - ASSOCIATED of POINTER and TARGET components
sometimes returns wrong result.
- 1724 - Significantly improve compilation time
for certain large (and usually machine-generated) programs when unitialized
variable detection is not selected and optimization level is 0.
- 1739 - Disallow OPTIONAL argument in character
length specification expression.
- 1743 - Correctly recognize accessibility of defined
assignment procedures imported from multiple modules.
- 1757 - Correct parsing error when field name
matches operator name and dot separators used.
- 1758 - Diagnose ambiguous generic involving OPTIONAL
arguments.
- 1774 - Give diagnostic rather than internal compiler
error for use of list-directed ENCODE/DECODE (not supported).
- 1778 - Eliminate internal compiler error when
/check:bounds used and a non-contiguous array copy is passed.
- 1779 - Eliminate internal compiler error for
nested WHERE and outer WHERE array is INTEGER(2).
- 1785 - Correct offsets of UNIONs when compiled
/noalign.
- 1786 - Warning about unused statement functions
is now informational.
- 1789 - Correct generated code for complex case
of user specification function used to declare size of character function
result.
- 1794 - Eliminate internal compiler error for
non-standard program that uses intrinsics in array constructors for initialization
of character parameters.
- 1796 - When dummy argument of procedure in an
interface block is an undetermined procedure (subroutine or function) -
issue diagnostic if the procedure is referenced with an actual array argument.
- 1797 - Diagnose conflict between POINTER and
COMMON.
- 1802 - Diagnose invalid reference to component
of another function's result variable.
- 1806 - Recognize use of renamed intrinsic in
initialization expression.
- 1812 - Eliminate internal compiler error for
CHARACTER function whose result length is based on an argument subcomponent.
- 1813 - Diagnose a duplicate name for interfaces
from different modules if at least one, but not all, are generic.
- 1823 - Eliminate incorrect alignment warnings
for case involving COMMON and EQUIVALENCE.
- 1827 - Properly ignore END MODULE if it occurs
within a conditional compilation section that is not being compiled.
- 1828 - Properly handle a structure constructor
with variables in an argument list.
- 1836 - Eliminate excessive virtual memory consumption
when compiling sources with very deeply nested USE references.
- 1837 - Allow INQUIRE(IOLENGTH=) for POINTER and
ALLOCATABLE array references.
- 1841 - Eliminate internal compiler error for
use of certain expressions in array constructor in initialization expression.
- 1843 - Establish that STRUCTUREs with field initialization
imply SAVE semantics (compatible with past Compaq/DEC implementations)
but Fortran 90 derived types with component initialization do NOT imply
SAVE (per F95 standard).
- 1846 - Properly assign default integer type to
an array constructor whose elements are all typeless constants.
- 1847 - Properly handle renaming of user-extended
intrinsics.
- 1848 - Properly establish type of #nnnn constants
in CASE expressions.
- 1858 - Eliminate erroneous overflow warning (and
bad generated code) for use of 64-bit integer constant as argument to character
function which uses the argument to determine the result length.
- 1865 - Disallow subcomponents of pointers as
the pointer argument to ASSOCIATED.
- 1872 - Correct parsing error for expression involving
record fields with dot separator.
4.2 New Features and Changes for Version 6.6
The following changes have been made to the Compaq Fortran compiler
for VF v6.6 since VF v6.5A shipped:
- The following changes have been made to the compiler {from V6.6-1657-47B5I
to V6.6-1684-47B6E}:
- Do NOT evaluate the argument to any numeric inquiry function (like
HUGE). The evaluation may kill the stack (for a large array argument, even
without a function call). CVF14579.
- Make actual argument which is a function returning a scalar pointer
work correctly. CVF14525.
- BOZ constants are allowed for integer initialization.
- Fix access to module from path specified on command line.
- Array passing optimization was not working correctly for assumed-shape
arrays being passed as explicit arrays.
- The following changes have been made to the compiler {from T6.6-1567-47B4D
to V6.6-1657-47B5I}:
- Improve the algorithm for ILEN to get better code.
- Treat use of undefined compile time variable in expression as integer
with value 0. Do not diagnose.
- Propagate 'only' and 'rename' info of module to contained procedure.
- Get debugging information put out at all (appropriate) ENTRY points.
In particular, put out prolog code for dynamic array bounds for array dummy
arguments and for f90 automatic arrays.
- Handle generic defined operator, merging specifics from multiple modules;
honoring 'only' defined operator.
- Handle VAXtm structures like F90 defined types.
- Output a warning if a case selection element is too big to fit in the
maximum integer.
- Fix /fast vs /align and /assume used together.
- Fix bug in WHERE in FORALL where WHERE mask contains a call to an elemental
function.
- Initialized records need to be re-initialized at every entry point.
- Fix generated code for optional arguments to SELECTED_REAL_KIND.
- Allow '.' as well as '%' as field separator.
- Recognize match between actual 'procedure' argument with pointer attribute
and dummy 'procedure' argument with pointer attribute.
- Accept VAX scalar field name reference (x.y) where x currently known
as parameter object of structure type.
- Accept allocatable components as arguments of ALLOCATED intrinsic.
- When accepting/rejecting common data, do not forget to handle data
equivalenced to common.
- Recognize renamed generic in 'use' where there also is an 'only' clause.
- Handle use of a contained function in bounds expression of following
procedure.
- Fix bug in the NT driver where it would accvio if a MS-style qualifier
that required a value was put at the end of a line, and did not have its
required value.
- Update intrinsic functions COUNT and ZEXT to allow optional 'KIND'
argument.
- Get the debug locator correct for all ENTRY SYMBOLs.
- Inhibit release of warning: 'Symbol in block data program unit is not
in a COMMON block' if the symbol has a 'use'. To allow use in implied do
of data initialization. If other use , earlier diagnostic would have been
issued.
- For CVF 6.6 and later, always look for a FLEXlm license.
- The following changes have been made to the compiler {from T6.6-1495-47B38
to T6.6-1567-47B4D}:
- Make sure that type associated with function result gets added to list
for export.
- Fix problem with importing generic symbol.
- Fix problem with importing common symbol which is renamed.
- Implement correct ALIGN=xx values; support ALIGN=PAGE on all platforms
(which is new) and set the alignment to whatever a "page" means
on that platform.
- Generate better debug information for dummy arguments which are subroutines
or functions.
- Do the right thing on Intel if number_of_processors is being stored
to an integer*8.
- If /integer_size:64 is set, the conditional compilation code would
generate errors saying "invalid conditional compilation expression".
- Collect ALL generic entries for a name from the set generated during
import. Multiple modules may validly contain generic specifications for
a single symbol.
- Process /fpscomp options general and ldio_spacing in a left-to-right
order. CVF13939
- Fix SIZE(A,DIM) where DIM is an optional argument. CVF11111
- Exclude test for subroutines when issuing implicit declaration warnings
in response to !DEC$ declare directive
- Correctly report when an incorrect number of arguments has been detected
in a structure constructor.
- Allow MAX and MIN to have optional arguments. CVF11111
- Optimize module importing when 'use' occurs within interface blocks.
- In the NT driver, pass along -annotations:keyword to the compiler.
Also, if the debug C libraries are specified (either with /dbglibs or /MxD)
link against the corresponding debug Fortran libraries.
- Repair handling of old form of DEC alias directive.
- Fix problem with calling KISHFTC on Intel.
- After verifying legality of octal constant as argument, attach type
to argument and to underlying constant.
- Inhibit diagnostic for implicitly typed forward reference of a variable
which is subsequently explicitly typed: character*(n+1)
function s(n) !forward ref of n integer,
intent(in) :: n
- In the NT driver, recognize if we're running on Windows ME and set
-D_WINME if so.
- Fix /assume:dummy_aliases to the conflicts with other parameters, variables
in COMMON and in MODULES, and pointers/allocatables in COMMON/MODULES.
- On Intel, limit the size of the array bounds at declaration time to
'fit' within a 32-bit integer. Output an error if either the upper or lower
bound exceeds that size.
- Mark the array descriptor for an explicitly shaped array function result
as quadword aligned.
- The following changes have been made to the compiler {from V6.5-1332-44ACE
to T6.6-1495-47B38}:
- Make /STANDARD (-stand) mean F95, not F90.
- When merging specific procedure lists from different modules, allow
multiple definitions for generics.
- Recognize /fpscomp:libs in compiler for *_WNT environments.
- Diagnose missing intent attributes on pure (explicitly or implicitly
if elemental) subroutine arguments which are neither pointers nor procedures.
- Support INTEGER(KIND=8) and LOGICAL(KIND=8) as 64-bit signed integers.
- Diagnose mask expressions with incompatible shapes in where constructs
and contained where/elsewheres.
- Impose standard restriction that defined-operator names consist only
of letters.
- Allow /fpscomp:[no]ldio_spacing.
- When /fpscomp:general is specified. set /fpscomp:ldio_spacing. (CVF13066)
- /warn:trucated_source must be set even if /stand:f95 is to get "truncated
source" message.
- Do not loose place in source stream when see zero-padded-integer.
- Repair another field-dot problem in defined operators.
- For COMPLEX*16 results, special case CCOS, CEXP, CLOG, CSIN, CSQRT
to be type of arg; similarly for REAL*8 and ALOG, ALOG10.
- Fix inquire with IOLENGTH=FIELD%NAME or array element.
- Repair several module errors with ONLY, RENAMEs, and deep nesting.
- Do not diagnose fields of private types as inaccessible within the
defining module, just outside the module.
4.3 New Features and Changes for Version 6.5A
The following changes have been made to the Compaq Fortran compiler
for VF v6.5A since VF v6.5 shipped:
- The following changes have been made to the compiler {from V6.5-1096-44A6D
to V6.5-1332-44ACE}:
- Prevent incorrect collapsing of implied-DO loop in an I/O statement
where there are nested loops and the implied-DO variable of one loop is
used as a bound of an inner loop.
- When the error limit has been exceeded (default 30), simply suppress
further messages rather than exiting the compiler. This means that the
object file will get deleted appropriately, the listing and diagnostic
(VMS) files created, and subsequent source files on the command line will
be processed.
- Re-allow complex constants to be passed by value. The real and imaginary
parts are passed as separate arguments.
- Allow character array valued function as a format specifier.
- Allow debugging of a character function whose length is computed based
on the length of a passed-length character argument.
- Eliminate internal compiler error for character function whose length
expression includes LEN_TRIM of a dummy argument.
- Eliminate internal compiler error for SIZE of a derived type component
pointer array.
- Eliminate more unnecessary copies of contiguous array arguments.
- Speed up processing of EQUIVALENCE groups in COMMON blocks.
- Properly handle SIZE(A(:)(I:J))
- Implement INT8 intrinsic (already documented) - UNIX)
- Allow omitted OPTIONAL arguments to be passed as optional arguments
to intrinsics.
- If "too many errors", suppress informational/warning messages
as well.
- Allow keyword specification of arguments A10, A20, etc. to MAX/MIN.
- Eliminate internal compiler error for case of ADJUSTL with array argument.
- Where DATA initializations initialize the same array element (not allowed
according to the standard, but supported by Compaq Fortran), preserve the
order in which initializations were specified, so that the last one takes
precedence.
- Support the full range of format width specifiers as documented.
- Improve detection of contiguous array slices.
- Correct support for SIZE with argument being array with vector subscripts.
- Eliminate internal compiler error for initialization expression which
contains a constant expression in a structure constructor.
- Allow EXTERNAL :: FOO
- Correct parsing error for certain record component references using
dots.
- Eliminate internal compiler error for particular use of RESHAPE.
- Do not give an unused variable warning where the only reference to
a variable is as the argument to LOC.
- Eliminate internal compiler error for particular use of nested STRUCTURE.
- Disallow illegal ALLOCATED(A(:))
- Allow, as an extension for compatibility with our Fortran 77 compilers,
a LOGICAL value as an argument to intrinsics which accept INTEGER, such
as ABS.
- Diagnose ambiguous generic routine reference.
- When an integer constant is assigned to a variable whose KIND is smaller,
don't change the KIND of the constant for future references.
- Allow IMPLICIT REAL with $.
- Eliminate internal compiler error for RESHAPE of array constructor
- Fix parsing error for typed function declaration with MS-style argument
passing specification in argument list.
- Resolve incorrect generic resolution between subroutine with no arguments
(but () specified as argument list) and routine with one required argument.
- Allow named constant to be used in specification expression later in
same statement where it was defined.
- Give error instead of compiler abort for IF (expr) SELECT CASE
- For F90 standards checking, warn about I0, etc. in FORMAT.
- Warn about variables in BLOCK DATA subprogram that are not in a COMMON.
- Eliminate internal compiler failure for incorrect ". AND."
in free-form source.
- Improve handling of continued C-string escape sequences
- Preserve order of data initializations where the same location is initialized
multiple times. While this is not allowed by the standard, we do support
it.
- Correct problem with module visibility and ONLY.
- Eliminate internal compiler error for certain use of POINTER and nested
structures.
- Eliminate inappropriate error about multiple matching procedures when
generic operators are used.
- Correct parsing error of certain variable names in an assignment following
a logical IF.
- Eliminate inappropriate shape mismatch for certain use of RESHAPE in
a PARAMETER initialization expression.
- Add /ASSUME:[NO]PROTECT_CONSTANTS
- Add support for DECORATE attribute.
- Use result field when verifying that results for functions/entry points
agree.
- Remove standard error of argument mismatch when arguments do match.
- Implementation of new attributes: MIXED_STR_LEN_ARG
- Fix INQUIRE(IOLENGTH=L)A(3:15) to NOT copy the array.
- Fix problem with handling of data records with initial data.
- Fix a problem optimizing nested implied DO loops.
- Fix a problem with FORALL when lhs/rhs overlap detected and type is
CHARACTER.
- No copy back for INTENT(IN) dummy arguments. When an INTENT(IN) dummy
argument, or a slice thereof, is passed as an actual argument, we should
NEVER do a copy back. The actual array may be read-only, and the INTENT(IN)
says that we promise to not write to the dummy argument. The copy back
would be a write.
- Add support for [NO]MIXED_STR_LEN_ARG attribute in !DEC$ ATTRIBUTES.
- Eliminate spurious error for declaration of RECORD array in a COMMON
block in a MODULE.
- Correct handling of generics where several routines have an optional
argument at the same position.
- In C strings, allow octals of the form \ooo to have 1, 2 or 3 octal
digits and hex objects of the form \Xxx to have 1 or 2 hexadecimal chars.
- Add support for /check:arg_temp_created
- Annotations now are displayed on a per-routine basis.
- Put out type information to the debugger for module functions
- Add diagnostic message:"The NOSEQUENCE directive may not be specified
for a component of a derived type which has the SEQUENCE attribute."
- Use new RTL routine, for_check_mult_overflow(), to calculate the size
of an array to be allocated, passing flag returned to for_allocate(). Also
create me_emit_by_val_arg() and use it where appropriate.
- Fix obscure bug with OPTIONAL mask for intrinsics MAXLOC et al. The
mask has an expression for the dimension bound(s). 22-Nov-00 mrb - ffe_cl.c
- allow, without assertion violation -
- When a psect becomes too big, give a better error message: ME_STOREQEXC
"Psect !AD is too large. Reduce array sizes or make arrays AUTOMATIC
or ALLOCATABLE."
- Allow character substring assignment in forall.
- Fix a MODULE problem with named or blank common.
- Make -fast set the "align dcommons" bit. The effect is ONLY
on the listing.
- Fix an arg copy problem for array references like a(:,:).
- Improve debug location for programs with adjustably dimensioned arrays.
- Make fields of PRIVATE records PRIVATe too.
- Fix another problem with COMMON in MODULEs.
- Fix a problem with generic names in USE ONLY.
- Fix a problem with USE ONLY and renamed symbols.
- another problem with targets of pointer assignment.
- Generate better code when ISHC has integer*4 or integer*8 arguments.
- Fix problem with USEd routines that use derived types or parameters
in their definitions.
- Diagnose 'Arrays in reduction clauses are not supported.'
- Fix INT_PTR_KIND to return 4 on Alpha NT.
- call foo(NINT) should pass JNINT instead of ININT.
- Passing IDINT should use integer*4 instead of integer*2 routine names.
- Issue diagnostic for character string as arg to RECL= in OPEN statement.
- Fix a problem where a substring index in a FORALL assignment stmt uses
one of the indexing variables.
- Fix a problem with USEd routines that have local variables in bounds.
- Fix /arch:k7 to generate prefetch instructions.
4.4 New Features and Changes for Version 6.5
The following changes have been made to the Compaq Fortran compiler
for VF T6.2.T Beta 1 (6.5 beta 1) since VF v6.1A shipped:
- The following changes have been made to the compiler {from -970-42A1L
to -1011-44A33}:
- Correct problem with NULL initialization of POINTER/ALLOCATABLE variables.
- Correct problem with PACK intrinsic where array is array of structures
with an array field with constant subscript/substring values.
- Improve generated code for SPREAD intrinsic.
- Improve generated code for array reductions.
- Improve generated code for UBOUND, LBOUND, SELECTED_INT_KIND, SELECTED_REAL_KIND
when the argument(s) are constants.
- Improve generated code for SIZEOF when bounds are constants.
- Eliminate internal compiler error for certain cases of integer (not
F90) POINTER as a module variable.
- Reduce severity of "variable has not been used" diagnostic
to "informational".
- Improve generated code for MINVAL/MAXVAL.
- Improve generated code for SIZE(A(:)).
- Improve generated code for SIZE with array argument that has vector
subscripts.
- Add new INT_PTR_KIND() intrinsic which returns the kind of an integer
pointer (either 4 or 8).
- Eliminate internal compiler error for use of allocatable array reference
in a variable format expression.
- Improve generated code for ILEN.
- Don't do "flawed Pentium check" when /arch specifies Pentium
Pro or "higher".
- An end-of-file condition on READ no longer triggers an ERR= branch
- this is to conform with clearer wording in the recent standard. If an
EOF condition occurs and there is no END= or IOSTAT=, an error is signaled.
- Add a NULL to the end of non-C character literals. This will not be
reflected in the "length" of the constant.
- %VAL/%REF now overrides any mechanism specified in an explicit interface.
- DFOR$PREFETCH, DFOR$PREFETCH_MODIFY, DFOR$PREFETCH_EVICT_NEXT intrinsics
now supported for Alpha processors.
- Generate correct values for a PARAMETER array whose element values
are computed in an implied DO loop involving indexing into another PARAMETER
array.
- Correct bad parse of .NE. as record field name.
- Allow a dummy argument that has an INTENT attribute specified to be
specified in a NAMELIST list.
- Give standards warning for kind mismatch between source and pad arguments
in RESHAPE.
- Long source lines are now correctly compiled when standards checking
is requested (warning is still given.)
- Correct problem with incorrect error given for a particular complex
module renaming case.
- Allow as an extension a LOGICAL argument to an intrinsic which expects
INTEGER.
- Correctly parse format which contains ">" characters and
a variable format expression.
The following changes have been made to VF T6.2.U Beta 2 since VF T6.2.T
Beta 1 shipped:
- The following changes have been made to the compiler {from -1011-44A33
to -1055-44A4S}:
- Generate much better code for certain array constructors (such as (/0,I=1,500000/)
and allow lowerbound, upperbound, and stride to have different KINDs.
- Eliminate many unnecessary copies of assumed-shape arrays when passed
as arguments to explicit shape arrays by keeping track of whether or not
the array is known to be contiguous.
- Automatically force the alignment of a COMMON block to be at least
as large as that required by the widest variable in the COMMON block.
- Fix a number of problems with WHERE inside of FORALL.
- Make defined assignment in FORALL work properly.
- Generate correct code for CSHIFT of a non-contiguous array slice.
- Eliminate internal compiler error for a particularly complex and deeply
nested structure reference in an IF.
- Don't give error for passing a section of an assumed size array to
a deferred shape array.
- Improve compilation speed for certain large DATA statements.
- Eliminate internal compiler error for a certain complicated FORALL.
- Correct problem with PUBLIC/PRIVATE attributes of a COMMON block in
a MODULE.
- Allow (A .EQ. .NOT. B) (an extension).
- Eliminate spurious unused variable diagnostic for variable used in
pointer assignment.
- Correct problem where asking for standards checking disabled /define
(-D)
- The use of an INTENT(OUT) argument with LOC is now considered a "definition"
for the purpose of uninitialized variable checking. Also, the use of LOC(ARRAY(N))
is now considered a "use" of ARRAY for unused variable checking.
- Eliminate internal compiler error for structure with %FILL component
in module procedure.
- When standards checking is requested, do not give a warning for fixed-form
source line exactly 72 columns long.
- Eliminate internal compiler error for assignment statement with variable
whose name starts with an underscore. (Such names are not allowed, but
a reasonable error should have been given.)
- Correct the problem where if a program unit contains two internal subroutines
which both use host-association to access the same variable, the second
one gets an inappropriate error.
- Eliminate internal compiler error for declaration of a derived type
array with an initializer that is an implied-DO array constructor.
- Eliminate inappropriate error message for initialization expression
of an implied-DO array constructor of length zero.
- When standards checking is enabled, give one warning, not three, for
a !DEC$ ATTRIBUTES directive.
- Generate correct code for certain cases involving overloading of the
.AND. and .OR. operators.
- Fix a case where two NaNs sometimes compared as equal.
- Eliminate GEM assertion for program unit that declares a COMMON block,
DLLIMPORTs it, but never uses it.
The following changes have been made to VF T6.2.U Beta 2 plus since
VF T6.2.U Beta 2 shipped:
- The following changes have been made to the compiler {from -1055-44A4S
to -1088-44A5I}:
- Allow user-defined types to be named BYTE and DOUBLECOMPLEX.
- Improve generated code for mixed COMPLEX-REAL multiplication and division.
- Disallow the unsupported declaration COMPLEX*32 or COMPLEX(16).
- Make sure that underflows go to zero with /fpe:0 and /fpe:1 in certain
situations where they did not before.
- In array constructors with only one implied-DO, and nothing else, avoid
creating an unnecessary temp.
- Allow SIZEOF(allocatable-array)
- Allow Variable Format Expression in a character literal when the I/O
list has a subscripted array element.
- Eliminate compiler abort with incorrect program that names the enclosing
program unit in an ONLY clause.
- Allow the extension syntax '101'B for a binary literal.
- Fix problem where $INTEGER directive was not being properly handled.
- Add support for KIND= keyword in MINLOC/MAXLOC
- Add support for KIND= keyword in various string intrinsics.
- Prevent compiler abort for incorrect attempt to pass unsupported data
types by value.
- Properly report invalid declaration EXTERNAL,INTEGER and recover so
that remainder of program is properly parsed.
- Give standards warning for non-standard placement of NAMELIST.
The following changes have been made to VF v6.5 since VF T6.2.U Beta
2 plus shipped:
- The following changes have been made to the compiler {from T6.2-1088-44A5I
to V6.5-1096-44A6D}:
- Improve generated code for SIZEOF(array)
- Eliminate internal compiler error for particular type of concatenation
of substrings when Fortran 95 standards checking is requested.
- When converting a negative REAL value to COMPLEX, use +0.0 as the imaginary
part rather than -0.0.
- Allow PARAMETER constant in ALIGN= specification of !DEC$ PSECT.
- If DLLIMPORT is specified for an identifier not otherwise used or declared,
treat it as if it named a routine and not a variable.
- Do not give shape mismatch for correct-shape RESHAPE in initialization
expression.
- Do not give inappropriate alignment warnings for certain convoluted
EQUIVALENCE/COMMON combinations.
- Change the version number to 6.5; there are no releases numbered 6.2,
6.3, or 6.4.
4.5 New Features and Changes for Version 6.1A
The following changes have been made to the Compaq Fortran compiler
for VF v6.1A since VF v6.1 shipped:
- The following changes have been made to the compiler {from -845-4297N
to -970-42A1L}:
- Add /ALIGN:SEQUENCE which specifies that SEQUENCE types may be padded
for alignment.
- Make the default for BLANK= in OPEN match the documentation when the
-f66 (/NOF77) switch is specified, which is to default to BLANK='ZERO'.
Previously, BLANK='NULL' was used regardless.
- Allow array constructors to have scalar CHARACTER source elements of
varying size.
- Correct problem where a call to a routine with the C and VARYING attributes
generates incorrect code.
- Allocate all PARAMETER constants in a read-only PSECT.
- Ensure that locally-allocated derived-type arrays are naturally aligned.
- Generate correct code for pointer assignment of an array generated
from a section of a derived type.
- Eliminate internal compiler error in certain cases with dummy argument
that has OPTIONAL and INTENT(OUT) attributes.
- Eliminate access violation on some platforms for ALLOCATE of pointer
in derived type.
- Correct problem where compiler could omit putting out declaration for
a routine symbol.
- Handle non-present, optional dummy arguments as third argument to INDEX,
SPAN and VERIFY.
- Generate correct code when passing character array slices as arguments.
- Fix case of contiguous array slice as first argument to TRANSFER.
- Fix INQUIRE by IOLIST of ALLOCATABLE arrays
- Correct problem involving pointer assignment with sections of a derived
type.
- If an ALLOCATABLE array has the ARRAY_VISUALIZER attribute, make sure
that automatic deallocation at end of routine is done correctly.
- Improve compile time performance when USEing a module which contains
a large COMMON block with many (thousands) of EQUIVALENCEd variables.
- Allow general CHARACTER expressions for the MOLD argument of the TRANSFER
intrinsic.
- Correct problem that prevented scalar numeric variables and array elements
which appeared in the iolist of an output statement (WRITE, etc.) from
participating in uninitialized variable analysis.
- Add support for /ccdefault option.
- In OPEN statement, if STATUS is not specified, default to UNKNOWN unless
/f66 is specified, in which case default to NEW.
- Eliminate internal compiler error for case involving EQUIVALENCEd POINTER
variables not in COMMON.
- Fix problem which could cause incorrect code to be generated for certain
uses of PACK, RESHAPE and UNPACK, primarily with CHARACTER arguments.
- Speed up compilation of initialized nested structures.
- Fix problem with incorrect code generated for use of nested SPREAD
intrinsic.
- Eliminate internal compiler errors for use of defined assignment in
FORALL.
- Speed up compilation where very large MODULEs are repeatedly used.
Further work in this area remains.
- Do not disable type checking for %LOC.
- Properly parse generic INTERFACE whose name begins with TO.
- When /align:dcommons is used, make sure that POINTER objects in COMMON
are aligned on quadword boundaries.
- Correctly parse program with IF construct whose name begins with IF.
- Flag square-bracket array constructor syntax as an extension.
- Eliminate internal compiler error for certain uses of TRANSFER.
- Properly detect ambiguous generic reference when all distinguishing
arguments are OPTIONAL.
- Eliminate internal compiler error for a case involving a PRIVATE POINTER
in a module.
- Eliminate spurious "this name has already been used as an external
procedure" error for recursive function which returns a derived type.
- "Directive not supported on this platform" diagnostic is
now informational, not warning.
- Allow array sections in DATA statement variable list.
- Eliminate inappropriate error messages when overloading SIGN intrinsic.
- Eliminate internal compiler error when "-" defined as both
unary and binary operators in separate modules.
- Eliminate spurious unused warning for pointer target.
- Eliminate spurious standards diagnostic for !DEC$ UNROLL.
- Correct problem with accessibility of NAMELIST names from module.
- Correct evaluation of FLOAT intrinsic with -real_size 64.
- Correct problem with array constructors in format expressions.
- Missing !DEC$ ENDIF no longer causes compiler abort.
- Correct rules for when SAVE in a PURE procedure is allowed or not.
- Correct parse of assignment to field of RECORD whose name begins with
TYPE.
- Eliminate E-level error when a BLOCK DATA subprogram name is the same
as that of a COMMON block. A future revision will cause an appropriate
diagnostic to appear.
- Issue clearer error message when a module name is repeated in a USE
statement.
- Eliminate problem where UBOUND gave wrong value in certain cases.
- Allow substrings in left hand side of FORALL.
- Give proper error when a PARAMETER constant is CALLed.
- Give proper error when a variable is CALLed.
- In assignment statements, make sure that real constants are evaluated
using the precision appropriate for their syntax (single/double/quad).
- Allow module ALLOCATABLE variables to be DLLIMPORTed.
- If -warn declarations is specified, do not issue diagnostic for use
of IMPLICIT NONE.
- Eliminate internal compiler error for EOSHIFT with constant array argument.
- Eliminate internal compiler error for DLLEXPORT of ALLOCATABLE array.
- Report error for kind mismatch where an ac-value in an array constructor
is an expression of a different kind than the other literal ac-values.
- Report error for assumed-size array passed as actual to deferred-shape
array.
- Eliminate internal compiler error for format in a PRINT statement being
an expression with concatenation.
- Eliminate GEM assertion for program unit that declares a COMMON block,
DLLIMPORTs it, but never uses it.
4.6 Features of Microsoft Fortran PowerStation
Not Supported
The following features from Microsoft Fortran PowerStation are not supported
by Visual Fortran:
- Tab continuation lines that start with other than the digits 1 through
9 {see the FIXMSTAB utility above for a work-around}
- $DEBUG, $NODEBUG-additional runtime checking
- DATA statement style initialization in attribute style declaration
statements
- Debug lines (other than D) {see the DLINES sample above for a work-around}
- $OPTIMIZE-change optimization options
- Internal files can be any type
- Listing metacommands - $page, $pagesize, $linesize, $[no]list, $include,
$line
Chapter 5
Visual Fortran RTL Release Notes
This chapter provides the details about the following changes to the
Compaq Fortran run-time library (RTL) system:
5.1 New Features and Changes for Version 6.6A
The following changes have been made to the Compaq
Fortran run-time library (RTL) system for VF v6.6A since VF v6.6 shipped:
- The following v6.6A changes have been made to
the RTL {-896}:
- EOF() was returning an incorrect FALSE when it
was issued on a zero byte stream file, or on a stream file when the previous
I/O was a WRITE. (cvf15520)
- Problems related to EOF() not always working
for files opened with access=append, nor when the only I/O after an OPEN
was a WRITE = have been fixed. (cvf15520)
- A problem with Binary files when the only I/O
after an OPEN was a WRITE followed by a backspace was fixed. (cvf15697)
- Support has been added to handle Integer*8 (64-bit)
record numbers for direct access files.
- The RTL now handles the maximum file size supported
by the File System for all file types and options. Previously, certain
file types such as variable sequential, and file options such as append
did do not work for files greater than 2**32 bytes.
- The following changes related to header interfaces
have been made to the 6.6A RTL:
5.2 Restrictions and Known Problems
The following restrictions exist in the current VF RTL:
The following problems still exist in the VF RTL:
- In certain cases with the number of colors greater than 256, SAVE has
been observed to cause an internal error. If this occurs, please file a
problem report.
- When doing mixed language programming with Fortran and C, one important
point to get right is that you want to link your application against one
and only one copy of the C library.
The preferred method to do this is to get your project settings for both
Fortran and C to agree on the default C library to link against.
Fortran picks default libraries depending on your Project->Settings,
Fortran tab selections. Using options from:
"category:Libraries->Use Run-time Libraries"
For information on the default libraries you will see selected, see the
online Programmer's Guide, in the Programming with Mixed Languages chapter,
the section on Visual Fortran/Visual C++ Mixed-Language Programs.
5.3 New Features and Changes for Version 6.6
The following changes have been made to the Compaq Fortran run-time
library (RTL) system for VF v6.6 since VF v6.5A shipped:
- The following v6.6 changes have been made to the RTL {-867}:
- Modifications were made to advapi32.{f90|mod} to correct some problems
that were identified.
- Modification to dfwinty.{f90|mod} to change the definition of wchar
from 1 to 2. This change potentially propagates through all the other header
files, including those used in dfcom, dfauto, dialogm.
- Comctl32 related changes/fixes done to dfwinty.{f90|mod}
- The following v6.6 changes have been made to the RTL {-864}:
- The syntax supported for NAMELIST input of derived-type structure components
has been extended. A period (.) is allowed as a component selector, along
with the percent sign (%). The same component selector must be used to
separate all components within any given structure.
- A problem with the run-time processing that supports buffering I/O
when using sequential write formatting was fixed. (dfb3588)
- INTEGER*8 intrinsics were added.
- Interface definition for CryptAcquireContext added to ADVAPI32.F90
and ADVAPI32.MOD files.
- libots: Bug in __OtsShift64 - failure to negate the shift count (when
negative) before executing a right shift.
- The following v6.6 changes have been made to the RTL {-855}:
- A problem where the use of subroutines contained within the DFport.lib
and DFnls.lib libraries from within a DLL were generating an access violation
has been fixed. (cvf13898)
- PRESENT and DEALLOCATE will now both work on an optional, allocated,
0-length object.
- The support for the ENDFILE statement was extended to allow it to be
specified on a direct access file. The behavior is to truncate the direct
access file at the end of the last record that had been accessed.
- The files dforrtd.dll, dfordlld.lib, dformdd.dll and dformdd.lib are
provided as part of the Fortran Run-time support. These DLL files (and
their associated import libraries) are linked against the C debug DLL msvcrtd.
This will eliminate the problem where there are multiply defined entry
points when building a mixed language image that is linked against the
C debug DLL msvcrtd.
- The following v6.6 changes have been made to the RTL {-843}:
- Under /fpe:0, the Fortran rtl default exception handler would sometimes
cause an access violation while attempting to flush an underflow result
to zero. (cvf13016)
- The Fortran RTL was not properly processing the input for a sequential
or internal list directed read when the data contained a complex value
with a repeat count before it. Additionally, the number of digits in the
real part of the complex had to be less than the number of digits in the
imaginary part, i.e., 10*(-1,1). This problem has been fixed. (cvf13179)
- An error with list directed input dealing with an asterisk, "*",
that ended a non-delimited character string that was immediately followed
by a terminating comma was fixed. (cvf13556)
- There are new versions of the module header files DFWINTY.F90 and DFWIN.F90
(and its component files). These new module headers are designed to work
in both the 32-bit and 64-bit environments. Besides some additional content,
the new data type definitions and procedure interfaces to the Microsoft
WIN32 APIs have been parameterized based on pointer size, and coded in
a way that makes it easy to see what the C definition is.
For example: integer(LPVOID) Sacl ! pointers PACL
shows that Sacl is a pointer in two ways. LPVOID in C indicates a pointer
to any object, and the Fortran comment indicates that PACL was identified
from a list of known pointers. Most of the common C data types have their
own Fortran equivalent, and in most cases there is a comment showing the
C definition.
These new header files require the following changes to the current set
of sample programs:
...\SAMPLES\ADVANCED\WIN32\CHECK_SD\CHEK_SSD.F90
...\SAMPLES\ADVANCED\WIN32\TAKEOWN\TAKEOWN1.F90
|
The data type of luidPrivilegeLUID must be changed from T_LARGE_INTEGER
to T_LUID. This is required because the C++ code base used for the new
module headers (VC++ 7) uses T_LUID.
...\SAMPLES\MISC\FORPRINT\FORTRAN_WINPRINT.F90
|
The data type T_DEVMODE along with a number of others now uses STRUCTURE
to nest unions directly in a data type definition. In MS C, you can have
anonymous elements in a union, but in CVF, each field in a union must have
a name. In the FORPRINT sample, the line: DEVMODE_struct%dmOrientation
= Orientation
had to be changed to the following DEVMODE_struct%field1%dmOrientation
= Orientation
Similar changes must be made for the other data types that use STRUCTURE.
The code for data types is in DFWINTY.F90 which is in the CVF INCLUDE library.
...\SAMPLES\ADVANCED\WIN32\TAKEOWN\TAKEOWN.F90)
|
Security descriptors come in two types, absolute and relative. In the 32-bit
versions of these data types, they have the same layout, byte for byte,
in memory. Unfortunately, in the 64-bit versions, the absolute version
is much bigger than the relative version. APIs such as SetSecurityDescriptorOwner
take a pointer to either type of security descriptor in the C interface.
Previously, this parameter was defined as type T_SECURITY_DESCRIPTOR by
reference so that type checking could be done. Because of the fact that
the parameter can now point to two quite different objects, the parameter's
interface definition has been changed to INTEGER(LPVOID). This change was
made to all CVF interfaces to APIs that contain a pointer to a security
descriptor in their C interface.
To comply with the new interface definitions, all security descriptor parameters
must now take the LOC of the parameter.
For example:
bret = SetSecurityDescriptorOwner ( &
LOC(SecurityDescriptor) &
AliasAdminsSid, &
.FALSE. &
)
|
The code for these interfaces is in ADVAPI32.F90 which is in the CVF INCLUDE
library.
Please let us know if you have to make any changes to your native Windows
applications to make them work with the new module header files, or if
you find any errors in the new definitions.
- The following v6.6 changes have been made to QuickWin:
- Palette(0) was incorrectly being used as the background color when
filling objects such as rectangles and ellipses. This has been corrected.
The color set by SETBKCOLOR or SETBKCOLORRGB is now used as the background
when filling an object. This background color is used when a bitmap (as
set by SETFILLMASK) controls the filling. (cvf11466)
- The graphics routines POLYBEZIER, POLYBEZIER_W, POLYBEZIERTO, and POLYBEZIERTO_W
have been added to QuickWin. For specific information, please refer to
the on-line documentation. An example program may be found following the
entry for POLYBEZIERTO and POLYBEZIERTO_W. (cvf12920)
- It is now possible to configure a QuickWin window so that it will always
show the last line written and the text cursor (if it is on) by scrolling
the screen. This is done by calling SETWINDOWNCONFIG.
To enable this feature, do the following (where wc is of the derived type
windowconfig): wc%mode = QWIN$SCROLLDOWN
You should also fill in the other fields as suggested in the online documentation
for SETWINDOWCONFIG. (cvf11495, cvf13153)
5.4 New Features and Changes for Version 6.5A
The following changes have been made to the Compaq Fortran run-time
library (RTL) system for VF v6.5A since VF v6.5 shipped:
- The following changes have been made to the RTL {-824}:
- When the DATE, TIME, or ZONE arguments to the DATE_AND_TIME intrinsic
routine are not large enough to hold the required information, a fatal
run-time error will now be generated. (dfb3475)
- The run-time support was enhanced to allow a REWIND operation to be
performed on a direct access file. This is allowed without having to specify
any command line options.
- The run-time support was improperly positioning before the last character
in a file opened with form='binary' and position='append' if the character
happened to be a control-z character, an achar(26). The run-time support
was fixed to not skip the control-z under these conditions. (cvf11664)
- The run-time library default exception handler could under some circumstances
encounter an access violation during processing of an exception. This was
most likely to occur in a Quickwin application if an exception occurred
before the program stack was significantly decremented. The problem only
occurs on Windows operating systems prior to Windows 2000. (cvf11454)
- The run-time library was not adding a trailing terminator to the last
record of an input file when it was being redirected or piped to the standard
input unit, * and 5. The trailing terminator was being added if the input
file was being accessed through any other input unit. This problem has
been fixed. (cvf10339)
- A problem where printing an IEEEtm floating point denormal
value in F format was incorrectly be displayed in E format was fixed.
- The run-time support was fixed to generate the correct output (12345*)
for writes similar to the following: WRITE (*,'(A,SP,I1)')
'12345', +7
- An incorrect interface for fglColorPointer in DFOPNGL.F90 has been
fixed. (cvf12077)
- The run-time support was failing with an internal consistency check
when a unit is opened with file='con' and later the application attempts
to open the same unit. This problem has been fixed. (cvf12249)
- When a file has been explicitly opened with an OPEN statement and an
INQUIRE which specifies the file name with different upper or lower case
used for the file name, the run-time support was returning .FALSE. for
an INQUIRE OPENED specifier. The run-time support was modified to properly
return .TRUE. for this case. (cvf12278)
- Namelist input was not handling slices and strides of arrays, array
segments with zero and negative positions, and character substrings of
arrays. Note: this implementation adheres to the F90 Standard, so nested
array slices are illegal. For example, struct(1:2)%array(1:2)
= 1,2,3,4 ! - is not legal.
You have to specify either: struct(1)%array(1:2) = 1,2
struct(2)%array(1:2) = 3,4
or: struct(1:2)%array(1) = 1,3 struct(1:2)%array(2)
= 2,4
- Support for the environment variable FORT_BUFFERED was added. When
it is set to TRUE, the run-time library will assume that buffered I/O will
be used for output to all I/O units, except those whose output is to the
terminal. This provides a run-time mechanism to support the behavior enabled
by the /assume:buffered_io compilation option.
- The serial port support encountered a bug in the underlying Windows
thread support that caused a memory leak in SPORT_CANCEL_IO(). This release
of the SPORT routines contains a workaround for that bug, as well as a
minor performance improvement.
- QuickWin related changes:
- In certain cases, the QuickWin functions GETWRITEMODE would return
a bad value for the current write mode. This has been corrected. (cvf11465)
- The list of windows in QuickWin programs was not being updated. This
list is produced by clicking a menu item provided by SETWINDOWMENUQQ. This
problem first appeared in version 6.1A, and also appears in version 6.5.
The proper behavior has been restored, and the list is now updated when
a window is deleted. (cvf11652)
- MODIFYMENUROUTINEQQ was failing with an error return if it was the
first menu handling routine called. This problem was caused by the pointer
table for menu routines having not been allocated yet. This problem has
been fixed by having MODIFYMENUROUTINEQQ allocate the pointer table if
it is not there, just as APPENDMENUQQ and INSERTMENUQQ do. (cvf10276)
5.5 New Features and Changes for Version 6.5
The following changes have been made to the Compaq Fortran run-time
library (RTL) system for VF T6.2.T Beta 1 since VF v6.1A shipped:
- The following changes have been made to the RTL {-745}:
- An incorrect end-of-file error occurs when list directed input is used
to read from character*1 arrays. Elements of character*1 and arrays of
character*[2-max] work okay. (dvf3408 and cvf10469)
- A new routine CLEARSTATUSFPQQ() has been added for V6.5. This routine
allows the user to clear the Intel floating point status register flag
bits. It is useful when polling is used to determine if a floating point
exception has occurred. An example is included in the on-line samples.
This routine is only available on Intel platforms.
- A new routine GETEXCEPTIONPTRSQQ() has been added for V6.5. This routine
allows users who have established signal handlers through SIGNALQQ() or
the C rtl signal() routine to gain access to exception context information.
It can be used in such handlers as an argument to TRACEBACKQQ() to generate
a stack trace at the time of an exception. An example is included in the
on-line samples.
- Support for reading nondelimited character strings as input for character
NAMELIST items has been added.
A character string does not need delimiting apostrophes or quotation marks
if the corresponding NAMELIST item is of type default character, and the
following is true:
- The character string does not contain a blank, comma, slash, exclamation
(!), ampersand (&), dollar sign ($), left parenthesis, equal sign (=),
percent sign (%), or period (.).
- The character string is not continued across a record boundary.
- The first nonblank character in the string is not an apostrophe or
a quotation mark.
- The leading character is not a string of digits followed by an asterisk.
A nondelimited character string is terminated by the first blank, comma,
slash, end-of-record, exclamation, ampersand, or dollar sign encountered.
Apostrophes and quotation marks within nondelimited character strings are
transferred as is.
Should an equal sign, percent sign, or period be encountered while scanning
for a nondelimited character string, the string will be treated as a variable
name (or part thereof) and not as a nondelimited character string.
Be forewarned, that nondelimited character strings that are written out
by using a NAMELIST write may not be read in as expected by a corresponding
NAMELIST read.
Given the following example code:
NAMELIST/TEST/ CHARR
CHARACTER*3 CHARR(4)
DATA CHARR/'AAA', 'BBB', 'CCC', 'DDD'/
OPEN (UNIT=1, FILE='NMLTEST.DAT')
WRITE (1, NML=TEST)
END
|
The output file NMLTEST.DAT will contain:
&TEST
CHARR = AAABBBCCCDDD
/
|
Should an attempt be made to read the data in NMLTEST.DAT back in with
a NAMELIST read using nondelimited character strings:
NAMELIST/TEST/ CHARR
CHARACTER*3 CHARR(4)
DATA CHARR/4*' '/
OPEN (UNIT=1, FILE='NMLTEST.DAT')
READ (1, NML=TEST)
PRINT *, 'CHARR read in >', CHARR(1),'< >',CHARR(2),'< >',
1 CHARR(3), '< >', CHARR(4), '<'
END
|
will result in:
CHARR read in >AAA< > < > < > <
|
- An end-of-file or end-of-record status is no longer treated as an error
status. This change was done to adhere to the Fortran 90 language standard.
Prior to this change, if there was an ERR= specified and no END=|EOR= for
a READ operation and the READ encountered an end-of-file or end-of-record
situation, the ERR= path would be followed. With this change, this situation
will now result in a fatal message being generated.
- The runtime library now contains support for a new environment variable,
FORT_CONVERT_ext that allows a user to associate a foreign data
conversion option with files of a particular file extension. See the documentation
for more details.
- QuickWin related changes:
- A QuickWin child window normally has its system menu close item removed,
and the X button on the upper right corner is disabled. When such a window
is closed with the disposition equal to "KEEP", the close menu
item is enabled so the user can remove the window when ready. A bug in
releasing the resources of such windows made it impossible to ever open
more than 40 windows, even if the old ones were removed from the screen
by using the system menu close or X button. This problem has now been fixed.
(cvf2485)
- In a callback routine a window in input wait was not being moved by
SETWSIZEQQ because the data structures needed to access it were locked.
This problem has been fixed. (cvf8684)
The following changes have been made to VF T6.2.U Beta 2 since VF T6.2.T
Beta 1 shipped:
- The following changes have been made to the RTL {-753}:
- The runtime library has been changed to perform more thorough edit
checking on list directed input. Previously, the RTL was liberal in what
it accepted for input to integer and real values. In accordance with the
F95 Standard, the RTL no longer accepts "+", "-", ".",
"D", "E", or "Q" without expressing at least
1 digit. For example, the RTL used to allow a single "+" to convert
to a 0, but now the RTL will return a FOR$IOS_LISIO_SYN error. In addition,
ambiguous expressions such as "+-" and "--" will be
rejected. (dfb3350 & dvf9422)
- An objcomment has been added to dfwinty.f90: !DEC$OBJCOMMENT
LIB:"DFWIN.LIB"
This will place a reference to dfwin.lib into dfwinty.mod. The reference
to dfwin.lib will propagate into any object files (as a defaultlib linker
directive) that are built from a source with a "use dfwinty"
in them. There are 21 data items referenced within dfwinty.mod that are
defined within dfwinty.obj. dfwinty.obj is contained within dfwin.lib and
thus it is appropriate for the dfwin.lib library to be referenced in dfwinty.mod.
- QuickWin related changes:
- Support was added for the new graphics function SETTEXTCURSOR. This
function sets the height and width of the text cursor (the caret) for the
window in focus. For more information on this function, please refer to
the documentation.
The following changes have been made to VF T6.2.U Beta 2 plus since
VF T6.2.U Beta 2 shipped:
- The following changes have been made to the RTL {-760}:
- All of the .MOD files shipped with VF were recompiled with the VF T6.2.U
Beta 2 plus compiler.
The following changes have been made to VF v6.5 since VF T6.2.U Beta
2 plus shipped:
- The following changes have been made to the RTL {-764}:
- A problem related to formatted direct access reading when more bytes
are required in the I/O list than specified by the record length and the
I/O list item is of type character which is padded out with blanks was
fixed. (cvf11036)
- The T_POINTS data type in dfwinty.f90 has been corrected so that the
X and Y elements now have an INTEGER(2) data type. (cvf11170)
- On x86 platforms, with options /fpe:0 and /math_library:check
selected, an interaction between the Fortran rtl default exception handler
and the math library prevented execution of a user defined MATHERRORQQ
routine. This problem has been fixed. (dvf8807)
- In some cases, console typeahead input to an application would be corrupted.
The underlying cause is a WIN32 bug with reading input from a console.
If a user doing typeahead inputs a few characters before the call to ReadFile()
(or ReadConsole()) is executed, and then types the rest of his input after
(i.e., during) the call, the OS will clobber the input in the receive buffer
by the number of bytes requested in the ReadFile() call. This is true for
number of bytes requested less than or equal to 40. It works as expected
if you ask for at least 41 bytes.
The Fortran rtl was changed at one time to specifically only request 1
byte at a time when reading from stdin. This was done to solve another
problem, multiple units sharing a redirected stdin. The solution to the
current typeahead problem is to change the Fortran rtl so that 1 byte at
a time reads are only done for nonconsole io. The rtl will continue to
read 1 byte at a time if stdin is a file or pipe, but not if stdin is specifically
the console device. (cvf11307)
- QuickWin related changes:
- A program termination problem in CVF6.1A has been fixed. In rare instances,
a QuickWin program with open child windows would cause the operating system
to freeze when in the STOP routine. (cvf1084)
- On Windows 95/98 systems, if a QuickWin program was exited by Ctrl+C
or a close menu item while the sound produced by BEEPQQ was on, the sound
would continue long after the program was terminated. This has been corrected.
(cvf11024)
5.6 New Features and Changes for Version 6.1A
The following changes have been made to the Visual Fortran Run-Time
Library (RTL) system v6.1A since VF v6.1 shipped:
- The following changes have been made to the RTL {-731}:
- The RTL was fixed to properly support a run-time format that contained
a repeated slash edit descriptor. (bug2288)
- The global name _proc appeared in both dfport.lib and dfnls.lib causing
an error during linking. This has been corrected. (df2369)
- In list directed READ's, transfers of complex input with repeat counts
to non-complex I/O list items would repeat the input value one too many
times. (dfb3285)
- In list directed READ's, transfers of complex input with repeat counts
to complex I/O list items would cause an access violation. (dvf3286)
- An INDEX backwards returns the wrong value when the search substring
is matching characters (e.g., "AA") and the string being searched
contains at least the same number of matching characters - even though
the strings may not equate. (dfb3332)
- Fixed bug that was not properly positioning a form='binary' file that
had a BACKSPACE operation performed on it. Allow BACKSPACE on form='binary'
file without having to specify /FPSCOMP:GENERAL. (df2221)
- A SCAN or VERIFY backwards results is an access violation when passed
a string that contains a character greater than X'7f'. (dfb3342 & dvf9403)
- The Fortran RTL has been changed so that it now processes the [.m]
(the minimum number of digits) portion of the edit descriptor when w (the
width field) is Zero for I, B, O, and Z editing. (dfb3351 & cvf9587)
- Support for the new carriage control command line option was added
to the FORTRAN Run-time library.
- QuickWin related changes:
- The following new values can now be used with SETWINDOWCONFIG extended
fonts. Using QWIN$EXTENDFONT_OEM_CHARSET with the font name 'MS LineDraw'C
will get the old DOS style character set with symbols which can be used
to draw lines and boxes. The pitch and font family items can be specified
to help guide the font matching algorithms used by CreateFont, the WIN32
API used by SETWINDOWCONFIG. (dvf8571)
Pitch: |
|
|
QWIN$EXTENDFONT_FIXED_PITCH |
QuickWin default. Equal character widths. |
|
QWIN$EXTENDFONT_VARIABLE_PITCH |
Variable character widths. |
Font Families: |
|
|
QWIN$EXTENDFONT_FF_ROMAN |
Variable stroke width, serifed. Times Roman, Century Schoolbook, etc.
|
|
QWIN$EXTENDFONT_FF_SWISS |
Variable stroke width, sans-serifed. Helvetica, Swiss, etc. |
|
QWIN$EXTENDFONT_FF_MODERN |
QuickWin default. Constant stroke width, serifedor sans-serifed. Pica,
Elite, Courier, etc. |
|
QWIN$EXTENDFONT_FF_SCRIPT |
Cursive, etc. |
|
QWIN$EXTENDFONT_FF_DECORATIVE |
Old English, etc. |
Character Sets: |
|
|
QWIN$EXTENDFONT_ANSI_CHARSET |
QuickWin default. |
|
QWIN$EXTENDFONT_OEM_CHARSET |
Use this to get Microsoft LineDraw |
- GEFILEINFOQQ now detects invalid file specifications and returns FILE$ERROR.
Prior to this fix, an invalid file specification would not be detected,
and FILE$FIRST would be returned.
A memory leak in FULLPATHQQ has been fixed. A temporary allocated block
is now freed on exit from the routine. (dvf8689)
- In DFOPNGL.F90, the "coords" argument in the fgluTessVertex
interface has been properly defined.
Missing arguments and argument definitions have been added to fgluVertex3i.
A return value data type has been provided for fgluBuild1DMipmaps. (dvf8799)
- SETTEXTCOLOR now allows a color index to be between 0 and 255. This
fix was a correction to code which took the index modulo 16, thus forcing
the index to be in the range [0,15]. (dvf8960)
- A memory leak in the QuickWin function DISPLAYCURSOR has been fixed.
(cvf9136)
- Two memory leaks in SETWINDOCONFIG have been fixed. (dvf8715)
- The priority of the Windows message handling thread has been increased
to PRIORITY_ABOVE_NORMAL. Without this change, dialogs called from QuickWin
callback routines were slow to come up, and some multithreaded applications
such as the PEEKAPP3 sample would run slowly. (cvf9446, cvf9459)
- PASSDIRKEYSQQ has been enhanced so that it can be used with either
a logical argument as documented, or with an integer argument. The following
choices are available as arguments for the integer version.
PASS_DIR_FALSE |
Turns off any special handling of direction keys. They are not passed
to the program by GETCHARQQ. |
PASS_DIR_TRUE |
Turn on special handling of direction keys, i.e. they passed to the
program by GETCHARQQ. |
PASS_DIR_INSDEL |
INSERT and DELETE are also passed to the program by GETCHARQQ. |
PASS_DIR_CNTRLC |
Only needed for a QuickWin application but harmless if used with a
Standard Graphics application which already passes Control+C. This value
allows Control+C to be passed to a QuickWin program by GETCHARQQ if the
following is true. The program must have removed the File menu EXIT item
by using DELETEMENUQQ. This value also passes direction keys and INSERT
and DELETE. |
The older logical version of PASSDIRKEYSQQ is still available and still
operates as currently documented. (cvf9446)
- In Standard Graphics mode, a backspace would sometimes delete only
half a character. This has been fixed by using the correct character size
in the full screen window when deleting. (cvf8933)
- A problem with the screen size in pixels being too small with a totally
defaulted call to SETWINDOWCONFIG has been fixed. (cvf9664)
- A memory leak caused by repeated opening and closing of QuickWin windows
has been fixed. (cvf8720)
- A memory leak caused by repeated use of DISPLAYCURSOR in a QuickWin
program has been fixed. (cvf9424)
- A problem with CLEARSCREEN($GWINDOW) causing access violations has
been fixed. (dvf7932, dvf8762, dvf9243)
- If a user sets up his own menu in INITIALSETTINGS using only INSERTMENUQQ
rather than APPENDMENUQQ, then SETWSIZEQQ will not work with child windows
later in the program. This problem has been fixed by ensuring that an initialization
flag is always turned off whether the user or the system sets up the initial
menu. (dvf9780)
- On the Windows 2000 OS, QuickWin child windows were being incorrectly
created with a variable pitch or proportional default font. This has been
fixed, and child windows now have the old default fixed pitch font which
was Courier New. (dvf9804)
- A bad range check in DELETEMENUQQ which caused an internal error in
QWGUMENU.C under certain complex conditions has been fixed. Also, a bad
index into the user-menu-callback-routine array which caused a memory access
error has been fixed. (dvf8165)
5.7 Run-Time Differences Between Visual Fortran
and Microsoft Fortran PowerStation
The following differences in run-time behavior between Visual Fortran
and Microsoft Fortran PowerStation should be noted:
- The Visual Fortran RTL does not support MBCS characters.
- The Visual Fortran RTL supports only a variable of the character data
type as a format data specifier (i.e., write(unit,FMT=character_data_type_variable)).
Therefore Integer and Real expressions cannot be used as the format specifier
in an I/O statement.
- The Visual Fortran RTL supports only the character data type for Internal
files.
- 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.
- 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.
- 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".
- 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".
- 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.
- 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.
- 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.
- The Visual Fortran RTL does not support the use of negative unit numbers.
This complies with the F90 standard.
- The Visual Fortran RTL does not support the use of the '*' operator
as the unit number on an INQUIRE statement.
- The Visual Fortran RTL supports only the record type of 'STREAM' for
the "RECORDTYPE" value when dealing with Fortran PowerStation
Unformatted files.
- The Visual Fortran RTL supports only the record type of 'FIXED' for
the "RECORDTYPE" value when dealing with files opened for Direct
access.
- The Visual Fortran RTL does not support the reading and writing of
direct access records using Sequential I/O statements.
- The Visual Fortran RTL does not support the writing of direct access
formatted records with a carriage control value of 'FORTRAN'.
- 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.
- The Visual Fortran RTL does not support the Fortran PowerStation semantics
for the Binary(B), Octal(O) and Hexadecimal(Z) edit descriptors.
- The Visual Fortran RTL output text when printing namelist elements
is different, but should be equivalent to that of Fortran PowerStation.
- The Visual Fortran RTL when outputting real numbers will always print
a leading zero(0) (i.e., 0.567) if there is room. This is different than
Fortran PowerStation which does not always print the leading zero(0)(i.e.,
.567) if there is room.
- The Visual Fortran RTL does not support the MATHERRQQ, GETCONTROLFPQQ,
SETCONTROLFPQQ, and GETSTATUSFPQQ routines on non-Intel Platforms (i.e.,
Alpha)
- 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.
- 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.
- 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 (i.e.,
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 the F90 standard. See section
10.8.2 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.
Chapter 6
Developer Studio Release Notes
This section contains the following information:
6.1 New Features and Changes for Version 6.6A
No changes have been made to Developer Studio
6.6A since VF v6.6 shipped.
6.2 Known Problems, Troubleshooting, and Limitations
Known Problems with using Developer Studio with
the current version of Visual Fortran include:
Troubleshooting Developer Studio problems:
- If you install both Visual Fortran v6.* and the Visual C++ 6.0 with
the MSDN Library Visual Studio 6.0, selecting Contents, Search, and Index
from the Developer Studio Help menu may display the MSDN documentation.
In order to view the VF documentation:
- Use the "Online Documentation" icon in the "Visual Fortran
6" folder.
- Change the "Preferred collection" in Developer Studio; see
the Tools menu, Options item, Help System tab.
- To use the Visual Studio 98 documentation, you need to have the version
of HTML Help shipped with Visual Fortran v6.* installed on your computer.
If you don't have a compatible version of HTML Help on your computer, and
you open the Help system, you may get one of these messages:
"Cannot open the file DF60.COL"
"You need a newer version of HHCTRL.OCX to be able to
read this file."
|
To fix the problem, copy the file, HHCTRL.OCX, from the ...\SUPPORT\HH\SYSTEM
directory on the CD-ROM to your hard drive as follows:
If your system is: |
Copy the file to this directory: |
Windows 9* |
Windows directory\system |
Windows NT 4 |
Windows directory\system32 |
Windows 2000 |
Do not copy the file |
- 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 Browse
Information' on the Fortran page, General category. You do not need to
set any C/C++ settings.
- When using the Source Browser in Developer Studio for browsing Fortran
code, be sure to uncheck the "Case Sensitive" check box at the
bottom of the "Browse" dialog box. This allows the Source Browser
to find occurrences of Fortran symbols regardless of the case used in the
sources.
- If you receive "Unexpected error returned by Array Visualizer"
when attempting to view an array from the debugger, please try the following.
From a command window, run:
REGSVR32 Windows directory\System32\ATL.DLL
|
- If the files created during a build appear to be out of date, and you
are running Visual Fortran on Windows 95 or Windows 98 operating systems,
there is a possibility that the timestamps on the files created during
a build can be off by up to 2 seconds. With faster machines and performance
improvements in the linker, this can cause the .OBJ files to have a later
timestamp than the result of the linker. This makes some projects appear
out-of-date after a build and thus Visual Fortran may incorrectly indicate
that another link is needed. If you encounter this problem, you can work
around it by adding a pre-link build rule to your project that takes 2
seconds or longer. Executing a console application that does a "CALL
SLEEP(2)" will work fine.
- If you install Visual Fortran v6.* on a system with Visual C++ v5 please
note the following concerning mixed-language programming with Fortran and
C/C++. You will not be able to perform mixed Fortran v6 and C/C++ v5 programming
in either environment. Note that if you also have Visual Fortran 5.0 installed
on the system, then you can continue to perform mixed Fortran v5 and C/C++
v5 programming in the Visual Studio 97 environment. To perform mixed Fortran
v6 and C/C++ v5 programming, you will need compile your C/C++ code using
Visual C++ v5, and then add the object files to your Visual Fortran v6.*
project. This is done using the normal method of adding files to a project.
The object files generated using Visual C++ v5 will be linked with your
Fortran code. You will be able to debug your mixed language application
from the Visual Fortran v6.* environment.
- 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.
NOTE: this problem is frequently encountered when you are using a project
which was created on a system with both Visual C++ and VF installed and
have copied the project (including the project.opt file) to a system with
only VF. The abort typically occurs when you start the debugger. This can
also occur if your system has Visual C++ V5 and VF V5, and you upgrade
to VF V6.*, but do not upgrade to Visual C++ V6 at the same time.
- 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.
Limitations of Developer Studio:
- The following limitations exist in Fortran make files exported from
Developer Studio:
- The "CLEAN" target in the make file does not delete .PDB
files created by the Fortran compiler.
- NMAKE sometimes compiles the same file twice when the source contains
a MODULE definition which is USEd by other source files in the project.
- Fortran editor does not support the following Edit menu commands: List
members, Type info, Parameter info, Complete word.
- 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. Also, keywords may
be highlighted even when they are not being used as keywords in the source
program.
6.3 New Features and Changes for Version 6.6
The following changes have been made to Developer Studio 6.6 since VF
v6.5A shipped:
- Developer Studio enhancements:
- Extended Project menu, Project Settings item, Fortran tab as follows:
- In the Fortran Data category, added support for "Default Integer
Kind" of 2, 4, or 8
- In the Library category page, the Use run-time libraries list more
closely resembles the same category in the C/C++ tab and includes debug
versions.
- In the Listing category, added support for the Annotations list box
and /annotations keywords.
- In the Compatibility category under Microsoft Fortran PowerStation,
added support for List Directed I/O Spacing (/fpscomp:ldio_spacing).
- Fixed Developer Studio (DevStudio) hang after Managed Saved Environment
"Modify" of a saved environment.
- Added certain updates to applicable parts of Microsoft Developer Studio
from Visual Studio SP5.
6.4 New Features and Changes for Version 6.5A
The following changes have been made to Developer Studio 6.5A since
VF v6.5 shipped:
6.5 New Features and Changes for Version 6.5
The following changes have been made to Developer Studio 6.5 since VF
v6.1A shipped:
- Developer Studio enhancements:
- The "Generate Code For" and "Processor to Optimize For"
options now contain entries for:
Pentium III
AMD K6
AMD K6-2 and K6-III
AMD Athlon
- Developer Studio fixes:
- Fixed a Module Wizard problem concerning a memory leak of input strings.
- DFCOM module enhancements:
- Two new routines have been added to the DFCOM module:
- COMIsEqualGUID - tests two GUIDs for equality
- COMStringFromGUID - returns the string representation of a GUID
- DFCOM module fixes:
- Fixed the COMGetActiveObjectByGUID routine to act as intended. The
routine now calls the routine GetActiveObject rather than CoGetClassObject.
The interface has change to remove the "clsctx" argument which
is not necessary. If you were calling COMGetActiveObjectByGUID, please
call the CoGetClassObject API directly instead.
- DFAUTO module enhancements:
- The interface to the AUTOAddArg subroutine has changed. The interface
was:
CALL AUTOAddArg (invoke_args, name, value [, output_arg] [, type])
|
where: "output_arg" was defined as:
Indicates whether the argument's value is set by the called method.
Must be of type LOGICAL.
The new interface is:
CALL AUTOAddArg (invoke_args, name, value [, intent_arg] [, type])
|
where: "intent_arg" is an integer value that indicates the intended
use of the argument (AUTO_ARG_IN, AUTO_ARG_OUT, AUTO_ARG_INOUT).
The change was made to fix some memory management problems that could occur
when using this routine. The previous interface continues to exist and
behaves as it did in the past. Only the new interface is documented. New
code should use the new interface. The Fortran Module Wizard now generates
code using the new interface.
- DFAUTO module fixes:
6.6 New Features and Changes for Version 6.1A
The following changes have been made to Developer Studio 6.1A since
VF v6.1 shipped:
- Developer Studio enhancements:
- New options in Fortran Options pages:
- Default Output Carriage Control (/ccdefault)
- For documentation purposes, adds any CXML libraries needed to link
(/cxml)
- Add IMSL libraries to link (/imsl)
- Allow SEQUENCE types to be padded for alignment (/align:sequence)
- Developer Studio fixes:
- Improved Fortran build dependency information.
- Minor fixes in Fortran Options pages.
- Fixed Module Wizard problem regarding COM servers create by Visual
Basic.
6.7 New Features and Changes for Version 6.1
and 6.0
The following changes have been made to Developer Studio 6.1 since VF
v6.0B shipped:
- Developer Studio enhancements:
- Fixed Module Wizard problem regarding the code generated for an Automation
Property Put with multiple arguments.
- Compilation ordering (builds) has been improved to reduce the number
of rebuilds necessary to successfully build complex projects.
- Renaming a generated listing file is restricted to when only the file
is selected (property sheet).
The following changes have been made to Developer Studio 6.0B since
VF v6.0A shipped:
- Developer Studio fixes:
- Corrected the include search path used during IDE builds and makefile
generation to include the Module Path (/module:).
- Improved Fortran build dependency information in exported makefiles.
- Corrected temporary file specification when directory contains blank
characters.
- DFAUTO module fixes:
- Fixed crash handling an empty BSTR.
- Fixed problem with using DFAUTO in a program that linked against the
Fortran run-time library DLL.
- An updated REGUSER.EXE is included that sets the "Always export
dependencies" registry entry.
The following changes have been made to Developer Studio 6.0A since
VF v6.0 shipped:
- Enhancements:
- You can associate a comment with a Fortran Environment when saving
it.
- There is a new icon in the Fortran toolbar. It is named "Manage
Saved Fortran Environment" and it displays your saved Fortran environments.
It allows for selective deletion of saved environments and duplicate scanning.
It also allows you to rename the environment or change the comment.
- When you create a new project with a Visual Fortran v6.* project wizard,
the Debug configuration contains an additional default compiler switch
setting which aids in debugging. This is /traceback. You may modify your
project settings to remove this entry if desired.
- Bugs with setting the /transform_loops and /pipeline options from Developer
Studio have been fixed.
The following changes have been made to Developer Studio 6.0 since VF
v5.0.A shipped:
Chapter 7
Visual Fortran Documentation Release Notes for Version 6
This section describes documentation changes for Visual Fortran:
7.1 Version 6.6A Documentation Changes
Because of the small number of software changes
and the major increase in size of the patch kit when the large documentation
files are included, the online HTML Help documentation was not updated
for Version 6.6A.
Minor changes were made to the context-sensitive
help for the Fortran tab of the project settings dialog box.
7.2 Version 6.6 Documentation Changes
The online documentation has been updated for Version 6.6.
New features as well as links to the new sections in the online documentation
are provided in New Features for Compaq Visual Fortran Version 6.6, which
is available in HTML Help (online documentation) from the Visual Fortran
Home Page.
Information about support for Windows NT Alpha systems has been removed
and some preliminary information about IA-64 support has been added. The
following platform labels have been added to identify platform differences
in text and headings:
- IA-32 or ia32 only
- IA-64 or ia64 only
HTML versions of the revised Visual Fortran 6.6 and Array Visualizer
1.6 online HTML Help documentation, the Compaq Fortran Language Reference
Manual, and the Compaq Visual Fortran Installing and Getting Started
are now provided on the Visual Fortran CD-ROM (see Section
7.5). To view these files, open the appropriate local disk files in
a Web browser.
PDF versions of the revised Visual Fortran and Array Visualizer online
HTML Help documentation and the Compaq Visual Fortran Installing and
Getting Started are also provided (see Section
7.5).
7.3 Version 6.5 and 6.5A Documentation Changes
The following summarizes online documentation changes for Compaq Visual
Fortran Version 6.5 and 6.5A:
- New features as well as links to the new sections in the online documentation
are provided in New Features for Compaq Visual Fortran Version 6.5 and
6.5A, which is available in HTML Help (online documentation) from the Visual
Fortran Home Page.
- New sections and chapters have been added to the online Compaq Visual
Fortran Programmer's Guide. For example, the new chapters added for
Version 6.5 are:
- Creating a COM Server
- Advanced Exception and Termination Handling Considerations
- New intrinsic procedures and other language elements have been added
to the Language Reference.
- Access to the latest MSDN information are now available as items in
the HTML Help viewer's Help menu. For example, click the Help menu item
MSDN Library Help to view the latest MSDN information from Microsoft.
- Starting with Version 6.5, the Visual Fortran Getting Started is now
called the Compaq Visual Fortran Installing and Getting Started.
For the location of the online PDF file for Compaq Visual Fortran Installing
and Getting Started, see PDF
Files, HTML Files, and Samples.
7.4 Version 6.1 Documentation Changes
The following summarizes using HTML Help changes for Version 6.1 and
6.1A:
- You can now define subsets within HTML Help.
For example, you can define a subset of just Visual Fortran documentation.
This can be used to minimize index or full-text search tasks. To define
a subset, use the Define Subset item in the View menu (see the Installing
and Getting Started online PDF file or printed guide). To choose a subset,
click the drop-down list in the left pane.
- HTML Help now remembers its window size and screen location from its
previous use. HTML Help stores its window geometry, so its window size
and location are remembered the next time you start HTML Help.
- The home pages now have a link to a section that lists new features.
The Visual Fortran and Array Visualizer home pages now have a link to a
section that describes new and changed features. The sections contain links
to the sections where the new features are discussed in detail.
- HTML Help Viewer is the online documentation viewer
HTML Help Viewer does not appear automatically when you start Developer
Studio. For more information about the HTML Help viewer, see Chapter 9
of Compaq Visual Fortran Installing and Getting Started.
- In HTML Help Viewer, under the title Visual Fortran, are these titles:
- Compaq Visual Fortran: contains the Visual Fortran Home Page, Language
Reference, Programmer's Guide, and Error Messages.
The Language Reference describes language topics and includes a section
"A to Z Reference", containing an alphabetic list of all Visual
Fortran intrinsics and routines. The Compaq Visual Fortran Programmer's
Guide contains information about building Fortran applications, compiler
options, debugging, coding for various project types, and other information.
Error Messages includes not only Fortran run-time messages, but also Linker
messages, NMAKE messages, and messages for related tools.
- Compaq Array Visualizer: contains the Array Visualizer Home Page and
documentation (the full Array Visualizer is provided in the Professional
Edition). An .HLP file for the Array Viewer part of the Array Visualizer
is also provided.
- The title Developer Studio 98 contains the Visual C++ User's Guide
(for Visual Fortran).
7.5 PDF Files, HTML Files, and Samples
- A revised HTML version of the Compaq Fortran Language Reference
Manual is provided on the Visual Fortran CD-ROM in the folder Info\Df\Doc\Lrm
(open the file Readme.htm or Dflrm.htm in a browser or view the file Readme.txt
from Info\Df\Doc\Lrm). This document and the online Language Reference
now show Compaq extensions (blue-green color) to the Fortran 95 standard.
- HTML versions of the following HTML Help titles are provided on the
Visual Fortran CD-ROM in the folder (and subfolders of) Info\Df\Doc\CVF_Html
(open the file Readme.htm in a browser or view the file Readme.txt from
Info\Df\Doc\CVF_Html):
- Language Reference
- Programmer's Guide
- Error Messages
- Array Visualizer
- A revised HTML version of the Compaq Visual Fortran Installing and
Getting Started is provided on the Visual Fortran CD-ROM in the folder
Info\Df\Doc\CVF_HTML (open the file Readme.htm in a browser or view the
file Readme.txt from Info\Df\Doc\CVF_Html).
- Visual Fortran, CXML, and IMSL documentation are provided as PDF files.
The Compaq Visual Fortran Installing and Getting Started is available
in Acrobat PDF format. Open the file Cvf_gs.pdf on the Visual Fortran CD-ROM
root directory in Adobe Acrobat Reader. This file is also installed by
default in the directory Program Files\Microsoft Visual Studio\Df98.
Most of the Visual Fortran HTML Help documentation is also available as
PDF files in the Info\Df\Doc\CVF_PDF directory on the Visual Fortran CD-ROM
(see the Readme.htm or Readme.txt file in that directory).
The online Compaq Extended Mathematical Library (CXML) Acrobat PDF file
Cxmlref.pdf is located in the directory x86\df\cxml\doc on the Visual Fortran
CD-ROM. If requested, the Cxmlref.pdf file is installed in the ...\Df98\CXML\Doc
directory.
The online IMSL Acrobat PDF files are provided in the folder x86\df\imsl\help
on the Visual Fortran CD-ROM. Open the file imsl.pdf to access all the
IMSL PDF files. If requested, the IMSL PDF files are installed in the ...\Df98\IMSL\Help
directory.
You can download the Visual Fortran online documentation in Acrobat PDF
format or view the HTML version of the Compaq Fortran Language Reference
Manual and Compaq Visual Fortran Installing and Getting Started
by clicking the Online Documentation area at our Web page:
http://www.compaq.com/fortran
|
Viewing these PDF files requires Adobe Acrobat Reader Version 4.0 (or later).
The Acrobat Reader can be downloaded from the Adobe Web site:
http://www.adobe.com
If you do not have Internet access, you can install Acrobat Reader 4.0
by double-clicking the exe file in the following directory on the Visual
Fortran CD-ROM:
Before you install a new version of Acrobat Reader, remove the previous
version of Acrobat Reader by using the Add/Remove Programs icon in the
Control Panel.
- Road Map to the Samples and Samples Folders
Visual Fortran samples are provided in directories below:
On the VF CD-ROM: |
info\Df\Samples |
On your disk after installation: |
...\Microsoft Visual Studio\Df98\Samples |
The Road Map to the Samples, file Samples.htm, can be viewed in an HTML
browser. It describes the Visual Fortran Samples and is available:
On the VF CD-ROM: |
info\Df\Samples\Samples.htm |
On your disk after installation: |
...\Microsoft Visual Studio\Df98\Samples\Samples.htm |
Array Visualizer samples are provided in directories below:
On the VF CD-ROM: |
x86\Samples |
On your disk after installation: |
Program Files\ArrayVisualizer\Samples |
There is a separate Roadmap to the Array Visualizer Samples, samples.htm,
provided in:
On the Array Visualizer CD-ROM: |
x86\Samples\Samples.htm |
On your disk after installation: |
Program Files\ArrayVisualizer\Samples\Samples.htm |
Chapter 8
Debugging Related Release Notes
This chapter provides the details about the following changes to the
Compaq Fortran debugger support:
8.1 Changes Made to Version 6.6A
No changes have been made to the debug support
for 6.6A since VF v6.6 shipped.
8.2 Restrictions and Known Problems
Known problems with the current debug support:
- The return value for complex-valued functions does not display properly
if the function has alternate entry points.
- If a user defined type is declared in a module and contains a pointer
to an entity of the same user defined type (as in a linked list), the pointer
cannot currently be seen from within the debugger.
8.3 Changes Made to Version 6.6
The following changes have been made to the debug support for 6.6 since
V6.5A shipped:
- Support was added to allow displaying and debugging of INTEGER*8 variables.
- In previous versions, attempting to display an array module variable
in the array visualizer from the debugger resulted in an error message.
This has been fixed.
8.4 New Features and Changes Made to Version
6.5 and 6.5A
No changes have been made to the debug support for 6.5A (since Version
6.5).
The following changes have been made to the debug support for T6.2 beta
1 since V6.1A shipped:
- A minor bug which sometimes caused incorrect display of a character
variable with the 'o' (octal) format specifier has been fixed.
- Attempting to invoke the Array Visualizer from within the debugger
specifying a non-contiguous array is now correctly diagnosed as an error.
The following change has been made to the debug support for Version
6.5 since T6.2 beta 2 shipped:
- Non-floating-point variables may be viewed as floating-point values
in a watch window using the 'f', 'g', or 'e' format specifiers.
8.5 New Features and Changes Made to Version
6.1A
The following changes have been made to the debug support for V6.1A
since V6.1 shipped:
Chapter 9
Compaq Extended Math Library (CXML) Release Notes
Please read this section before installing or using the Compaq Extended
Math Library (CXML).
Visual Fortran Version 6.6 includes a new version of the Compaq Extended
Math Library (CXML), CXML Version 5.0 (see Section
9.2).
This chapter contains important installation information and release
notes about using CXML with Compaq Visual Fortran. The information in this
document is more up-to-date than the CXML Reference Guide or other
associated documentation.
When installing or using CXML, please note the following:
9.1 Installing and Using CXML
Refer to the following documentation for information about installing
and using CXML:
For Information About: |
See: |
Installation |
"Using Setup to Install Visual Fortran and Related Software"
in the Compaq Visual Fortran Installing and Getting Started |
Introductory material and features |
"CXML Libraries" in the Compaq Visual Fortran Installing
and Getting Started |
Usage |
"Using the CXML Math Libraries" in the online Compaq Visual
Fortran Programmer's Guide |
Routine reference |
CXML Reference Guide, in the CXML\Doc directory, file Cxmlref.pdf
|
Latest CXML release information |
The CXML website at:
http://www.compaq.com/math |
9.2 CXML New Features
The following changes have been made to CXML v5.0 for this Visual Fortran
6.6 release:
- The performance of a number of CXML routines has been improved relative
to the previous release of CXML.
- CXML now includes a new set of routines for solving sparse matrix problems
using direct methods. Documentation for the new sparse solver routines
is included in the CXML Reference Guide.
- The skyline solver routines are no longer supported. They have been
removed from this version of CXML. If you are currently using skyline solvers,
we recommend that you switch to the new direct solver routines.
- Sample files which show how to invoke the direct sparse solver routines
from Fortran 95/90, and C are available in the CXML Samples folder:
- The interface to the following sparse iterative solvers functions has
been changed:
DMATVEC_SDIA DMATVEC_GENR
DAPPLY_POLY_SDIA DAPPLY_POLY_GENR
|
- The mechanism for printing messages in the iterative solvers has been
changed. Users now have an option to either supply their own print routine
(which is invoked by the iterative solvers to print messages) or have the
messages printed out to the standard output device. A detailed description
of the new functionality is provided in the "Using Iterative Solvers"
section of the CXML Reference Guide.
- In the iterative solvers, the argument iounit no longer determines
the kind of information to be printed. Now the argument iolevel determines
the level of information to be printed. In case of a negative value for
iolevel, no information is printed. Refer to the CXML Reference Guide
for more details - examples are also provided that reflect the modifications
required in the user's code for the correct use of iterative solvers.
- The auxiliary LAPACK routine XLAENV is no longer supplied, or used,
by CXML. The LAPACK routines DLAMCH and SLAMCH have been modified to return
compile time constants instead of computing values on each call.
Chapter 10
Compaq Array Visualizer Release Notes
This section provides release notes for Compaq Array Visualizer:
- Section 10.1, New Features and
Changes
- Section 10.2, Array Visualizer
Known Problems and Limitations
- Section 10.3, New Features and Changes
for Version 1.6
- Section 10.4, New Features and Changes
for Versions 1.5A and 1.5
- Section 10.5, New Features and Changes
for Versions 1.1A, 1.1, and 1.0
- Section 10.6, Compaq Array Visualizer
Overview and Description of Features
- Section 10.7, Using the Fortran Array
Visualizer from the Debugger
- Section 10.8, The Fortran Array Visualizer
Uses HDF Libraries
10.1 New Features and Changes
No changes have been made to the Compaq Array
Visualizer since v1.6 shipped.
10.2 Array Visualizer Known Problems and Limitations
The following are known problems and limitations:
- Array Viewer:
- In 256-color mode, the data tip window sometimes reports an incorrect
value.
- HDF:
- The Array Viewer cannot save files in the HDF format.
- AView Library
- Reading an .agl file is not supported.
10.3 New Features and Changes for Version 1.6
The following changes have been made to the Compaq Array Visualizer
for v1.6 since VF v1.5A shipped:
- A problem in the Array Viewer has been fixed where a program exception
might occur when viewing an HDF file if a dimension scale of a dataset
has the same name as the dataset.
- 8-byte integer types are now supported.
- A workaround for a Microsoft OpenGLtm bug that effects Windows
2000 systems (cf: MS KB Q272222) has been implemented.
- The following C++ methods have been added to the Aview library: CAViewer::GetModifiedFlag,
CAViewer::SetModifiedFlag, and CAViewer::IsVisible; see Array Visualizer
online documentation for details.
- The following Fortran routines have been added to the Aview library:
favGetModifiedFlag, fagSetModifiedFlag, and favIsVisible; see the Array
Visualizer online documentation for details.
10.4 New Features and Changes for Versions 1.5A
and 1.5
The following changes have been made to the Compaq Array Visualizer
for v1.5 and 1.5A since Array Visualizer v1.1 shipped:
- Version 1.5A release:
- Array Visualizer v1.5A updates Array Visualizer v1.5.
- A problem in the 1.5 release has been fixed where a program exception
might occur if special ASCII characters were used in axis labels.
- Version 1.5 release:
- A problem with negative length values in the ROI settings dialog for
large arrays has been fixed.
- Array Visualizer v1.5 replaces Array Visualizer v1.1A. There are no
released versions of Array Visualizer numbered 1.2, 1.3, or 1.4.
- Alpha users should be aware that support for Windows NT Alpha systems
ended as of December 31, 2000. Releases of Visual Fortran after Version
6.5 and Compaq Array Visualizer 1.5 will no longer support Windows NT Alpha
systems.
- Version 1.2 (beta 2) release:
- The Array Viewer now has a file menu option to load a data file from
an Internet URL.
- The Array Viewer Options dialog now has a check box to enable editing
properties through the Data and Graph View's property pages. This allows
setting some options (such as line width) that aren't accessible through
the Settings menu entries. However, changes made in this manner won't be
retained if the array is saved as an AGL file.
- Changes have been made to the Avis2D and AvisGrid controls to enable
them to be used inside html pages.
- A resource leak in Array Viewer that occurred on Windows 95 and 98
systems has been fixed.
- The Array Viewer (and Avis2D control) now use software based OpenGL
rendering as the default. We've found that many graphics adapters don't
support OpenGL correctly, resulting in rendering artifacts or crashes.
If your adapter does support OpenGL acceleration and is reliable, you can
enable it by checking the Checkbox in the Array Viewer Options dialog and
restarting Array Viewer.
- Version 1.2 (beta1) release:
- Printing from Array Viewer has been improved.
- Axis tickmark labels now always have fixed increments.
- HDF release 4.1r3 is now used by Array Viewer to display HDF files
(see Section 10.8 for information on HDF).
- A resource leak in the AnimWin32 sample has been fixed.
- The graph view in Array Viewer (and the Avis2D control) now changes
the cursor to indicate when the view is being change.
- Axis settings dialog now displays correct axis/dim name.
- The Array Viewer Options dialog, now has a checkbox that can be used
to turn off OpenGL hardware acceleration and use the generic GDI OpenGL
drivers instead.
- COMINITIALIZE is no longer required for QuickWin programs that use
the AView library.
- The Palette Editor now allows spline curves to be used when editing
palette colors.
- Height Plot graphs now use 1D textures by default.
- Barchart style for Height Plot graphs has been enhanced and a problem
with printing has been fixed.
- Logical and Complex arrays can now be viewed with Array Viewer from
the Visual Fortran debugger and can also used as arguments to faglStartWatch,
faglShow, etc.
- The HDF libraries are no longer provided on the Array Visualizer CD-ROM.
The latest version of the HDF libraries can be downloaded from:
http://hdf.ncsa.uiuc.edu.
10.5 New Features and Changes for Versions 1.1A,
1.1, and 1.0
The following changes have been made to the Compaq Array Visualizer
for Versions 1.1A, 1.1, and 1.0:
- Version 1.1A release:
- A problem in the 1.1 release prevented Vector Graphs from being displayed
as a series of connected line segments. This has been fixed in 1.1A. Use
the Vector Graph Settings dialog in Array Viewer to switch between point
style and line style.
- Version 1.1 release:
- The AvisGrid control was added.
- The ArrayViewer Data View window is no longer is limited to 500x500
cells, and now supports editing cell values.
- Array Viewer now allows the axis legends to be customized
- The Array Viewer has a Palette Editor that can be used to create custom
palettes.
- The Array Viewer has two new toolbars that can be used to change the
Region Of Interest (ROI).
- The Array Viewer has improved support for displaying small (10^-10
or less) floating point values.
- The Aview library routines favUpdate and CAViewer::Update now have
an option that forces the ArrayViewer to update before returning.
- The Aview library has two new subroutines: faglGetShareName (Fortran)
and aglGetShareName (C) that can be used in conjunction with the AvisGrid
and Avis2D controls to display array data.
- The Aview library supports new fav and CAViewer routines to allow programmatic
access to new Array Viewer features (such as Axis labeling).
- The Avis2D control has two new methods designed for Visual Basic users
CopyAxisScaleData and CopyPaletteData. These methods can be used to pass
a Visual Basic array to the control as axis scale data and custom palette
data respectively.
- The Avis2D control event, RndrPass, has a parameter to inform the container
of whether this is the final repaint for the last Update call.
- The Avis2D control transparently supports printing.
- There are many new sample programs.
- Version 1.0B release:
- There is a new Avis2D method designed for Visual Basic users: CopyArrayData.
This method takes a Visual Basic array as an argument and plots the array
data.
- A problem has been fixed where a file created via faglSaveAsFile (aglSaveAsFile)
would be unreadable until the process that called the routine had exited.
- Version 1.0A release::
- In the 1.0 release, some users experienced long load times and excessive
memory usage when starting the Array Viewer (this only occurred when the
display was set to true color mode). This problem has been fixed for this
release.
- The Array Viewer about box now displays more system information. When
reporting a problem, please copy and paste the contents of the about box
into your problem report.
- In Array Viewer you can now copy a bitmap of the Graph View to the
Windows clipboard. See the Array Viewer online help for more information.
- There's a new command line utility, agltohdf that can be used to convert
agl files to the hdf format.
- The Array Visualizer documentation now covers the fav routines (Fortran)
and CAViewer class (C++). These functions can be used when you want more
control over how the Array Viewer displays the array data. For example,
you can set the graph type programatically.
10.6 Compaq Array Visualizer Overview and Description
of Features
The Array Visualizer is a set of software components that enables you
to visualize array data interactively. Any integer or real type array of
rank 1-7 can be viewed using the array visualizer software. The Array Visualizer
also defines a binary file format (.agl) that can be used to save array
data for later analysis. Visual Fortran Standard Edition contains only
the Compaq Array Viewer.
The Array Visualizer consists of:
10.7 Using the Fortran Array Visualizer from
the Debugger
The Visual Fortran Professional Edition Debugger supports new functionality
which allows the programmer to view arrays using the Visual Fortran (Developer
Studio) Array Visualizer. This functionality is made available through
a new Visual Studio docking window named the Fortran Arrays window.
The Fortran Arrays window is available when the program is at a breakpoint
in a Fortran source file. The Fortran Arrays window can be displayed using
1 of 3 methods:
- Place your cursor on, or select, the name of a Fortran array in the
source window and select the Array Visualizer icon in the Fortran toolbar.
- Place your cursor on, or select, the name of a Fortran array in the
source window and select the Fortran Array Visualizer item from the Debug
item.
- Select Debug Windows -> Fortran Arrays from the view menu.
The Fortran Arrays window consists of 2 panes. The left pane contains
the names of Fortran arrays. The right pane contains the current viewing
status of each array. Each row in the Fortran Arrays window is associated
with an instance of the Array Visualizer application.
Methods 1 and 2 above add a new row to the Fortran Arrays window and
attempt to launch an Array Visualizer to view the array. While the Array
Visualizer is starting, the status pane displays "Working...".
Once the Array Visualizer has displayed the array, the status changes to
"Viewing...". If the array cannot be viewed, for example because
the name entered is not the name of a Fortran array of intrinsic numeric
data, an error message is displayed in the status pane.
Unlike the data displayed in other Debug windows, arrays listed in the
Fortran Arrays window are not automatically updated at each breakpoint.
This is because viewing an array can be a time consuming operation.
You may use the following mouse and keyboard actions in the Fortran
Arrays window to manipulate the arrays in the Fortran Arrays window.
- Left mouse button click on an array name selects the array.
- Left mouse button double click sends updated array data to the Array
Visualizer.
- After selecting one or more arrays, pressing the Delete key closes
the Array Visualizers associated with the selected arrays, and removes
the names from the Fortran Arrays window.
- After selecting one or more arrays, pressing the Escape key detaches
the Array Visualizers associated with the selected arrays, and removes
the names from the Fortran Arrays window. Detached Array Visualizers remain
displayed but are no longer under the control of the visual Debugger.
- Left mouse button click on a selected array, or pressing the Enter
key after selecting an array, places the array name into edit mode. Editing
is completed when the Enter key is pressed or the mouse is clicked outside
of the editing window. If you delete the array name, then the Array Visualizer
associated with the array is closed and the name is remove from the Fortran
Arrays window. If you change the name to a different name, then the Array
Visualizer associated with the array is used to view the data of the array
with the new name.
When the Fortran Array window is closed, either by explicit user action,
or when the debugging session ends, all Array Visualizer windows are closed
(except for Array Visualizers which have been previously detached).
The following limitations exist in the Fortran Arrays window:
- When viewing Fortran assumed-size arrays, the last dimension of the
array is not viewable.
- When viewing Fortran assumed-shape arrays, the lower bounds are always
represented at 1 by default. To change the lower bound used by the Visualizer,
open the ROI Settings dialog (Settings->ROI in the Visualizer menu),
and modify the value(s) displayed in the LowerBound Column.
10.8 The Fortran Array Visualizer Uses HDF Libraries
HDF (Hierarchical Data Format) is a library and platform independent
data format for the storage and exchange of scientific data. HDF was developed
by the NCSA which provides information, updates, and library support for
many different platforms (including Compaq Tru64tm UNIX and
OpenVMStm) at their web site:
http://hdf.ncsa.uiuc.edu .
Use of these binary libraries in the Fortran Array Visualizer requires
the following notice:
Copyright Notice and Statement for NCSA Hierarchical Data Format
(HDF) Software Library and Utilities
Copyright 1988-1999 The Board of Trustees of the University of Illinois
All rights reserved.
Contributors: National Center for Supercomputing Applications (NCSA)
at the University of Illinois, Fortner Software, Unidata Program Center
(netCDF), The Independent JPEG Group (JPEG), Jean-loup Gailly and Mark
Adler (gzip), and Digital Equipment Corporation (DEC).
Redistribution and use in source and binary forms, with or without
modification, are permitted for any purpose (including commercial
purposes) provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions, and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions, and the following disclaimer in
the documentation and/or materials provided with the distribution.
3. In addition, redistributions of modified forms of the source or
binary code must carry prominent notices stating that the original
code was changed and the date of the change.
4. All publications or advertising materials mentioning features or
use of this software must acknowledge that it was developed by the
National Center for Supercomputing Applications at the University
of Illinois, and credit the Contributors.
5. Neither the name of the University nor the names of the Contributors
may be used to endorse or promote products derived from this
software without specific prior written permission from the
University or the Contributors.
DISCLAIMER
THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY AND THE CONTRIBUTORS
"AS IS" WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED.
In no event shall the University or the Contributors be liable for
any damages suffered by the users arising out of the use of this
software, even if advised of the possibility of such damage.
|
Chapter 11
Fortran Format Editor Release Notes
There are no changes to the Format Editor for
Version 6.6 or 6.6A.
The following are limitations and supplemental notes about the Fortran
Editor:
- The Format Editor does not support "Variable Format Expressions".
- The Format Editor does not support "Repeat Specifications"
greater than 99.
- 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 |
|