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
These release notes describe Compaq Visual Fortran Version 6.6
and previous releases back to Version 6.0:
- VF v6.6 updates VF v6.5A (which replaced v6.5).
There are no released versions of VF numbered 6.2, 6.3, or 6.4.
- VF v6.6 contains Array Visualizer v1.6, which replaces
Array Visualizer v1.5A (which replaced v1.5). 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 Windows NT 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.6 is an
enhancement of VF v6.5, the current shipping product for Intel/Win32
(x86 systems), and includes patches for problems fixed since
VF v6.5A shipped.
VF v6.6 updates the Compaq Fortran 95/90 compiler, run-time
library, certain Microsoft Developer Studio IDE pieces, certain updates
to applicable parts of Microsoft Developer Studio, the Compaq Extended
Math Library (CXML), the Array Visualizer, and VF documentation.
VF 6.6 does not provide complete service updates for Microsoft
Developer Studio. As of v6.6, the Compaq Fortran Companion Products
CD-ROM will no longer be available, but VF 6.6 does provide
f90SQL-Lite from Canaima Software (optionally installed). VF
6.6 updates the IMSL libraries that ship with the Professional
Edition.
Compaq Visual Fortran v6.6 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) 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 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 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++ v5.0.
VF v6.6 can co-exist on the same system with Developer Studio V5
products.
VF v6.6 contains bug fixes, performance improvements,
extensions to improve compatibility with Microsoft Fortran
PowerStation, and additional minor features.
One important new feature 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
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:
- If you attempt to install Visual Fortran v6.* using any of the
methods described in "Installing and Getting Started -
Using Setup to Install Visual Fortran", and SETUP.EXE in
the root directory fails to run, on x86 systems, run:
\X86\SETUPX86.EXE
This runs the same installation procedure as SETUP.EXE in the root
directory.
- Visual Fortran v6.* and Microsoft Visual C++ v6.0 are engineered to
co-exist in Microsoft Developer Studio. However, the
versions of all products MUST match or you will receive version
mismatch errors when starting Developer Studio. An example of the error
message you would receive is:
Cannot load package 'xxxxxx' because its internal version number,
or the internal version number of one of it components, does not
match the version of the Developer Studio shell.
|
- If you install Visual C++ V6.0 after VF v6.*, the
Visual C++ installation does not update the Include and Library paths
used by Developer Studio to include the MFC and ATL paths. You may add
these yourself with the following method:
- Select the Options... entry from the Developer Studio Tools menu.
- Select the Directories tab.
- In the "Show directories for:" combo box, select the type
of path you wish to modify (that is, "Include files").
- Double-click on the last (empty) entry, and use the "..."
button to browse for the "MFC\INCLUDE" and
"ATL\INCLUDE" directories and add them to the list.
- Use a similar procedure to add the "MFC\LIB" directory to
the "Library Files" list.
- The CVF and CAV installation procedures register a number of
DLLs and OCXs. CVF registers DFDLG100.DLL, COMCAT.DLL,
SHLWAPI.DLL, WININET.DLL, HHCTRL.OCX, ITIRCL.DLL, and ITSS.DLL in the
windows\system directory. CAV registers ATL.DLL, HHCTRL.OCX,
ITIRCL.DLL, and ITSS.DLL in the windows\system directory. CAV registers
AVIS2D.OCX and AVISGRID.OCX in the ArrayVisualizer\Bin directory.
Occasionally, these files are not properly registered by the
installation or become unregistered. To re-register any of these files,
use the Microsoft Register Server utility (regsvr32.exe) that can be
found in your windows\system directory. The syntax for using
Regsvr32.exe is as follows:
Regsvr32 [/u] [/s] file-name
where:
/u - Unregisters the file based on the <File Name> argument
/s - Registers the file in silent mode, suppressing all messages
file-name- The complete path and file to be registered or
unregistered
Regsvr32 displays a message box that indicates whether the
registration was successful, unless you specify the /s option.
- If you receive a message box on running Developer Studio or the
Array Viewer that says:
"The ordinal nnnn could not be located in the dynamic link library xxxx"
Search for the file "xxxx" on your system; most often it
will be in your Windows system directory. If the file has the
"Read-only" attribute set, remove the attribute and reinstall
VF and/or the Array Viewer.
- When uninstalling v5.0 or v6.*, you may see a message box with the
title "Remove Shared File?". We recommend
that you select the "No to all" button unless you are certain
that you will not need the file(s). Some of these files are needed to
run VF applications and they take up only a small amount of disk space.
- If you uninstall v5.0 after installing v6.*, you
need to reinstall v6.* with the same options as the current
installation in order to reset registry entries that are removed by the
v5.0 uninstall.
- If you install multiple Developer Studio products
and later uninstall one or more of them, you may need to re-install the
others.
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.6 News
The following are new and changed features for v6.6:
- INTEGER (KIND=8) and LOGICAL (KIND=8) are now recognized to support
64-bit signed integers.
- When the /fast command line option is present, if any of the forms
of /stand are present, /fast will not set /align=dcommons and
/align=sequence.
- The command line option /stand now defaults to F95 not F90.
- New compiler option keyword /fpscomp:[no]ldio_spacing
The
Fortran 95 Standard requires that there be a blank after a numeric
value before a character value in list-directed output. Microsoft
PowerStation did not do this; nor did VF v6.5A. As of v6.6, VF will
obey the F95 Standard by default {/FPSCOMP:NOLDIO_SPACING}. If
/FPSCOMP:LDIO_SPACING is specified, VF will produce the old,
non-standard output. /FPSCOMP:GENERAL will set /FPSCOMP:LDIO_SPACING.
- New compiler option /annotations:keyword adds information
about the optimizations performed when you request a listing file.
- New compiler option /integer_size now supports a value of 64 to
allow INTEGER and LOGICAL (default kind) declarations to be treated as
8 bytes long (KIND=8).
- The compiler option /ccdefault:default now allows other options,
such as /vms, to set the default carriage control.
- 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 (see
Section 5.1).
- A new version of the Compaq Extended Math Library (CXML) is
included with Visual Fortran Version 6.6, CXML Version 5.0. For
detailed information, see Chapter 9.
- The types of Visual Fortran run-time libraries displayed in the
visual development environment Fortran tab (Project menu, Settings
dialog box) more closely match the run-time libraries available in
Visual C++ (C/C++ tab). Also, the types of run-time libraries linked
against while linking against debug versions of DLL libraries have
changed, as described in online Programmer's Guide, Mixed-Language
Programming chapter section Visual Fortran/Visual C++ Mixed-Language
Programs.
- The following new graphics functions let you draw Bezier curves
(based on fitting a cubic curve to four points): POLYBEZIER and
POLYBEZIER_W, POLYBEZIERTO and POLYBEZIERTO_W
- The intrinsics COUNT and ZEXT have been extended to accept an
optional KIND argument to specify the kind type parameter of the result.
- The /arch:xxx and /tune:xxx command line options now accept the
following new keywords for "xxx":
- PN1 is the same as the old P5 keyword
- PN2 is the same as the old P6 keyword
- PN3 is the same as the old P6P keyword
- PN4 is the same as the new P7 keyword
VF still accepts the old spellings of the keywords for
"xxx".
- A derived-type variable which is data initialized via default
initialization of any of its components will no longer be saved by
default. A RECORD variable which is data initialized via default
initialization specified in its STRUCTURE declaration will no longer be
saved by default.
- fpp supports the macros __DATE__ and __FILE__. When fpp is told to
expand macros using "-fpp:-m", these expand into character
literals that give the name of the source file being processed and the
current date/time respectively.
character*20 file
character*20 date
file = __FILE__
date = __DATE__
type *, file, date
end
|
Do not put __DATE__ or __FILE__ inside quotes in the source.
3.2 Version 6.6 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.
- asm files generated by the compiler may not assemble properly. This
will be corrected in a future release.
- 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.5A:
3.3.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 Pentium III, AMD
K6, and AMD Athlon {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
ActiveX 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.3.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.3.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.4 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
"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). 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.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 VAX 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.2 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.3 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.4 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.5 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.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.2 Restrictions and Known Problems
The following restrictions exist in the current VF RTL:
- One of the new routine interfaces added to update the VF header
files to the Visual C++ v6 level has caused a conflict:
LOADIMAGE
appears in both DFLIB (as a QuickWin routine) and in DFWIN (as a WIN32
API). The solution to this problem is simply to rename the LOADIMAGE
you don't want to something else. For example:
USE DFLIB
USE DFWIN, API$LOADIMAGE=>LOADIMAGE ! give WIN32 API a new
! name which won't
! conflict with the
! QuickWin routine
|
LOADIMAGE will now refer to the QuickWin routine. If the API is
also needed, use the name API$LOADIMAGE to get it.
The following problems still exist in the VF v6.5 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.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 IEEE 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.4 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.5 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.6 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.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.2 Known Problems, Troubleshooting, and Limitations
Known Problems with using Developer Studio with the current version of
Visual Fortran include:
- The /WARN:ERRORS Fortran compiler option is not always correctly
carried forward when converting a project from V5 to V6.*. If you have
set /WARN:ERRORS on a V5 project, you should check the setting after
Developer Studio has converted the project to the V6 format and verify
that /WARN:ERRORS remains set.
- When a Standard Graphics project is opened, the Fortran Libraries
category does not correctly map the /libs:qwins from the Project
Settings edit box to:
Use Fortran Run-Time Libraries: Standard Graphics
|
This is an appearance problem only - /libs:qwins is used when the
project is built. Changing the setting of "Use Fortran Run-Time
Libraries:" to Standard Graphics results in an additional
/libs:qwins appearing in the Project Settings edit box.
- The Fortran editor does not handle tab indents properly. This
problem occurs when editing a fixed format source file and using tabs
at the beginning of the line. When you have multiple tabs at the
beginning of a line and press ENTER, the cursor is positioned to the
same indent level as the previous line. However, when you type the
first character on the new line, all but the first tab are deleted.
Here are two workarounds:
- Press Tab as the first character on the new line and then Backspace
to delete it.
- Select the Tools menu, Options item, Tabs tab. Select "Insert
spaces" and set "Auto Indent" to None.
- Under Developer Studio, selecting AutoIndent with Tabs replaced by
Spaces for editing Fortran sources (under the
Tools->Options->Tabs page) does not work as expected. Using this
combination will result with tabs randomly being inserted and incorrect
indentation.
- If you install both Visual Fortran v6.* and Visual Fortran v5.0.A,
5.0.B, 5.0.C, or 5.0.D, when you select the "About..." entry
in the Help menu, both versions will display that they are the Visual
Fortran v6.* version. This is a bug in the v5.0 version. Other
information in the About box will identify the version as Developer
Studio 97 (which is v5).
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.5A
The following changes have been made to Developer Studio 6.5A since VF
v6.5 shipped:
- Developer Studio enhancements:
- Support has been added for new compiler options:
/warn:[no]ignore_loc
/assume:[no]protect_constants
/check:arg_temp_created
- Fortran COM Server Wizard enhancements:
- You can create out of process (.EXE) COM servers.
- You can specify that an array argument is assumed shape.
- You can specify that an intent:in argument is passed by reference.
- You can add the ISupportErrorInfo interface to your server.
See the updated "Creating a COM Server" chapter in the
online Visual Fortran Programmer's Guide.
- Fortran Module Wizard enhancements:
- The Module Wizard can now be run from the command line. This allows
you to run the wizard as part of a project build. For a list of MODWIZ
command options type the following command in a Fortran Command Prompt:
6.4 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.5 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.6 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:
- Enhancements:
- When you create a new project with a Visual Fortran v6 project
wizard, the Debug configuration contains additional default compiler
switch settings which aid in debugging. These are: /check:bounds and
/warn:argument_checking You may modify your project settings to remove
these entries if desired.
- The new DFDEV command allows you to build a Visual Fortran project
from the command line without first exporting a makefile (projname.mak)
and running the NMAKE utility. See "Building a Project from the
Command Line" in the Visual C++ User's Guide. Note that you must
use "DFDEV" rather than "MSDEV" as documented in
the Visual C++ User's Guide.
- QuickWin and Standard Graphics projects can now be copied from the
Intel platform to the Alpha platform and vice-versa. This did not work
with v5.0.A.
- When using files with the .fpp file extension, you no longer need
to edit the makefile and add the line:
as was necessary with v5.0.A.
- Visual Fortran now supports the "Attach To Process" menu
item on the Debug menu as described in the Visual C++ User's Guide.
This did not work with v5.0.A.
Chapter 7
Visual Fortran Documentation Release Notes for Version 6
This section describes documentation changes for Visual Fortran:
7.1 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.4). 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.4).
7.2 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.3 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.4 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).
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.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.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 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.4 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:
- Attempting to view a host associated array whose bounds are based
on parameters, e.g. variable 'problem' in the following code:
subroutine foo(i1,i2)
integer i1(:), i2(:)
integer problem(size(i1),size(i2))
.
.
contains
subroutine bar()
.
i3 = problem+1 ! break set here, request 'problem' in
! watch window
.
.
.
|
previously caused Developer Studio to crash. This crash no longer
occurs. Note that the following restriction does currently exist: such
a variable ('problem' in the above example) cannot be viewed from
within an internal subroutine (e.g. 'bar' above).
- The debugger would previously not display host associated variables
that were also dummy arguments in the containing routine. This has been
fixed.
- In previous versions of the product, format specifiers had no
effect on character variables in watch windows. For example, trying to
see a character variable 'ch' in octal by typing "ch,o" in a
watch window, had no effect. Support has been added in this release for
using 'o', and 'd'/'i' format specifiers to watch character variables.
- There was a bug in previous versions that made it impossible to
watch an array section where the array is a member of a derived type,
such as:
type str
integer, pointer :: f(:,:)
end type str
type (str), pointer :: a(:)
allocate (a(3))
allocate (a(1)%f(10,1))
a(1)%f(:,1) = (/1,2,3,4,5,6,7,8,9,10/)
write(*,*)a(1)%f ! Previously not possible to watch
! a(1)%f(:,:)
|
This bug has been fixed.
- If the cursor was placed over a multi-byte character in a debugging
session with previous versions of CVF, Developer's Studio would hang.
This has been fixed.
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:
- To install CXML, you must specify the "custom"
installation option when installing Compaq Visual Fortran. The
"standard" installation option will not install CXML.
Note: After you have finished installing Compaq Visual Fortran, you
must run the Per-User Setup application in the Visual Fortran program
folder.
- CXML is available both as a static library and as a DLL,
which uses multi-threaded dynamic link libraries,
e.g., DFORMD.LIB and MSVCRT.LIB.
- Source files to build CXML module files are located in the INCLUDE
directory.
- To automatically link a program with the CXML library and obtain
access to the CXML interface blocks, you should insert the following
statement as the first line of the program unit:
INCLUDE 'CXML_INCLUDE.F90'
|
This allows the proper CXML library (either CXML.LIB or
CXMLDLL.LIB) to be linked.
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:
10.1 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 OpenGL 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.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 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.7 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.4 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.5 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:
- Compaq Array Viewer
The Array Viewer (AViewer) is an
executable program that can load and display .agl or .hdf files. Array
Viewer displays the array data in two adjustable panes:
- The top pane shows a scrollable spreadsheet-style view of the array
data.
- The bottom pane displays a graphical view of the array data.
There are four viewing modes in which the graph can be displayed:
- Height Plot displays the array data as a 3D surface where the X and
Y dimensions correspond to the array indexes and the array elements are
mapped as a displacement in Z. This option is only available for arrays
of rank 2 or higher.
- Image Map displays the array data as a 2D image where the X and Y
dimensions correspond to the array indexes and the array elements are
mapped to a color range. This option is only available for arrays of
rank 2 or higher.
- Vector Graph displays the array data as a series of 2, 3, or 4
component vectors. In this mode an array is viewed as a list of
vectors. For example an array declared as M(3, 500) would consist of
500 vectors of the form (x, y, z). The first three components are
mapped to the x, y, and z axis. The fourth component (if present), is
mapped to a color using the color palette. This option is only
available for arrays of rank 2 or higher.
- 2D View displays the array data as a conventional 2D graph where
the X dimension corresponds to the array index and the array elements
are mapped as a displacement in Z. This option is available for arrays
of rank 1 or arrays of higher rank but with 10 or fewer rows.
- Aview Library
The Aview library (aview.lib) is a small set of
subroutines that enables any Fortran application to display array data
with Array Viewer. The Aview library can also be used to directly save
array data to an .agl file for later viewing with the Array Viewer. The
AVDef module defines the Fortran interface for the Aview library. There
is also a C language interface defined in avdef.h. The \Program
Files\ArrayVisualizer\Samples directory includes example programs that
use the Aview library.
- Avis2D ActiveX Control
The Avis2D ActiveX (ocx) control, can
be used by any development environment that supports ActiveX controls.
For example Visual C++/MFC or Visual Basic, and now with the 6.1
release, Visual Fortran. The Avis2D control enables the application to
display array data, as a height field or image view, within one of its
applications windows. The Avis2D control provides more than 100
properties and methods that the application can use to customize its
behavior.
- AvisGrid ActiveX Control
Like the Avis2D control, the AvisGrid
control can be used by any development environment that supports
ActiveX controls. The AvisGrid control can be used to display array
data numerically in a scrollable window. AvisGrid shares many of
Avis2D's properties and methods.
- Developer Studio Enhancements
The Developer Studio debugger
now supports the ability to select an array in the watch window and use
the Array Viewer to inspect it. The view can be updated to observe
changes in the array data as the program executes.
10.6 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.7 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 Tru64 Unix and OpenVMS) 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.
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
|