CUSTOM
SOLUTIONS
 
globe
 
BACK
PRICES
ORDER
HOME

Compaq Visual Fortran Release Notes


August 2001

This document contains information about Compaq Visual Fortran from Versions 6.0 through 6.6

Software Version: Compaq Visual Fortran
Version 6.6

Compaq Computer Corporation
Houston, Texas



© 2001 Compaq Computer Corporation

COMPAQ and the Compaq Logo are registered in the U.S. Patent and Trademark Office.

AlphaGeneration, AlphaServer, DEC Fortran, OpenVMS, and Tru64 UNIX are trademarks of Compaq Information Technologies, L.P.

Microsoft, NT, Visual Basic, Visual C++, and Windows are either trademarks or registered trademarks of Microsoft Corporation in the United States and other countries.
Intel and Pentium are trademarks of Intel Corporation.
AMD and Athlon are trademarks of Advanced Micro Devices, Inc.
Adobe and Acrobat are trademarks of Adobe Systems Incorporated.
GLOBEtrotter and FlexLM are trademarks of GLOBEtrotter Software, Inc.
ISML and Visual Numerics are trademarks of Visual Numerics, Inc.

All other product names mentioned herein may be trademarks of their respective companies.

Confidential computer software. Valid license from Compaq required for possession, use or copying. Consistent with FAR 12.211 and 12.212, Commercial Computer Software, Computer Software Documentation, and Technical Data for Commercial Items are licensed to the U.S. Government under vendor's standard commercial license.

Compaq shall not be liable for technical or editorial errors or omissions contained herein. The information in this document is provided "as is" without warranty of any kind and is subject to change without notice. The warranties for Compaq products are set forth in the express limited warranty statements accompanying such products. Nothing herein should be construed as constituting an additional warranty.


Major changes since Version 6.5A are indicated in blue color in HTML output and by change bars in the margin in the plain ASCII TXT output.

Contents


Chapter 1
Introduction

Thank you for choosing Compaq Visual Fortran. This document provides release notes for Compaq Visual Fortran Version 6.6. It also provides key information for earlier releases since Version 6.0.

Compaq Visual Fortran conforms to the Fortran 95 Standard, Fortran 90 Standard, and previous Fortran standards. Compaq Visual Fortran uses the same robust compiler system provided with Compaq Fortran on other platforms for Alpha systems.

Please visit the Compaq Fortran Web page for a wealth of information about Compaq Visual Fortran and Compaq Fortran, including product descriptions, product updates, frequently asked questions, knowledge base articles, example programs, and other information: http://www.compaq.com/fortran

It is important that you register your purchase of Compaq Visual Fortran (Visual Fortran) and also keep your registration information (such as your e-mail address) up-to-date. Registration entitles you to exclusive benefits, such as the Visual Fortran Newsletter, and provides a record of your serial number should you misplace it. Concurrent license users need to perform a separate registration to obtain the license key, but concurrent license users (like other users) should also register their Visual Fortran purchase. Use the following Internet URL: http://www.compaq.com/fortran/register

1.1 Conventions

In these release notes:
  • Compaq Visual Fortran is often abbreviated as "VF" or "CVF".
  • Compaq Array Visualizer is often abbreviated as "AV" or "CAV".

1.2 Overview

These release notes describe Compaq Visual Fortran Version 6.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:
    1. Select the Options... entry from the Developer Studio Tools menu.
    2. Select the Directories tab.
    3. In the "Show directories for:" combo box, select the type of path you wish to modify (that is, "Include files").
    4. 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.
    5. 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:
    1. 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:
    1. In a Web browser, open the URL: http://support.microsoft.com/support
    2. Click Products (select Internet Explorer)
    3. 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:
    1. Start the visual development environment (Start-> Compaq Visual Fortran->Developer Studio)
    2. In the Tools menu, click Options.
    3. Scroll to the Help System tab
    4. In the Preferred Collection box, select either the Visual Fortran or the MSDN Library as your current collection.
    5. 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:
    1. Press Tab as the first character on the new line and then Backspace to delete it.
    2. 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:
    1. The "CLEAN" target in the make file does not delete .PDB files created by the Fortran compiler.
    2. 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:


      MODWIZ /?

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:
    • Fixed some memory leaks.

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


      .SUFFIXES: .fpp


      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).
  • Visual Fortran, CXML, and IMSL documentation are provided as PDF files.
    The Compaq Visual Fortran Installing and Getting Started is available in Acrobat PDF format. Open the file Cvf_gs.pdf on the Visual Fortran CD-ROM root directory in Adobe Acrobat Reader. This file is also installed by default in the directory Program Files\Microsoft Visual Studio\Df98.
    Most of the Visual Fortran HTML Help documentation is also available as PDF files in the Info\Df\Doc\CVF_PDF directory on the Visual Fortran CD-ROM (see the Readme.htm or Readme.txt file in that directory).
    The online Compaq Extended Mathematical Library (CXML) Acrobat PDF file Cxmlref.pdf is located in the directory x86\df\cxml\doc on the Visual Fortran CD-ROM. If requested, the Cxmlref.pdf file is installed in the ...\Df98\CXML\Doc directory.
    The online IMSL Acrobat PDF files are provided in the folder x86\df\imsl\help on the Visual Fortran CD-ROM. Open the file imsl.pdf to access all the IMSL PDF files. If requested, the IMSL PDF files are installed in the ...\Df98\IMSL\Help directory.
    You can download the Visual Fortran online documentation in Acrobat PDF format or view the HTML version of the Compaq Fortran Language Reference Manual and Compaq Visual Fortran Installing and Getting Started by clicking the Online Documentation area at our Web page:


    http://www.compaq.com/fortran


    Viewing these PDF files requires Adobe Acrobat Reader Version 4.0 (or later). The Acrobat Reader can be downloaded from the Adobe Web site: http://www.adobe.com
    If you do not have Internet access, you can install Acrobat Reader 4.0 by double-clicking the exe file in the following directory on the Visual Fortran CD-ROM:


    x86\Tools\AcroRead


    Before you install a new version of Acrobat Reader, remove the previous version of Acrobat Reader by using the Add/Remove Programs icon in the Control Panel.
  • Road Map to the Samples and Samples Folders
    Visual Fortran samples are provided in directories below:

    On the VF CD-ROM: info\Df\Samples
    On your disk after installation: ...\Microsoft Visual Studio\Df98\Samples

    The Road Map to the Samples, file Samples.htm, can be viewed in an HTML browser. It describes the Visual Fortran Samples and is available:

    On the VF CD-ROM: info\Df\Samples\Samples.htm
    On your disk after installation: ...\Microsoft Visual Studio\Df98\Samples\Samples.htm

    Array Visualizer samples are provided in directories below:

    On the VF CD-ROM: x86\Samples
    On your disk after installation: Program Files\ArrayVisualizer\Samples

    There is a separate Roadmap to the Array Visualizer Samples, samples.htm, provided in:

    On the Array Visualizer CD-ROM: x86\Samples\Samples.htm
    On your disk after installation: Program Files\ArrayVisualizer\Samples\Samples.htm


Chapter 8
Debugging Related Release Notes

This chapter provides the details about the following changes to the Compaq Fortran debugger support:

8.1 Changes Made to Version 6.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:


    \Df98\CXML\Samples

  • 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:
  1. 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.
  2. 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.
  3. 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
Contents

home | back | comment | sales

CustomSolutionsPageDate: 05 October 2021
Copyright © 1997 - 2021 Custom Solutions