This file contains context-sensitive help topics for the Fortran Package in the Microsoft visual development environment.


This list allows you to select the categories of compiler options to be viewed:

General: the most commonly used compiler options. Other categories contain more specific options.

Code Generation: recursive routine creation, generating chip-specific instructions, certain code-related optimizations, insert string into object files

Compatibility: with Microsoft® Fortran PowerStation, OpenVMS systems, and certain FORTRAN 77 features.

Compiler Diagnostics: types and severity of compile-time messages, standards checking messages, diagnostic message limit.

Debug: debugging level, create PDB file, and use of lines in fixed-format files with a D or d in column 1.

External Procedures: external name changes and argument passing conventions (default and string).

Floating-Point: floating-point exceptions (exceptional values), accuracy/rounding, and display minus zero.

Fortran Data: default declaration size, alignment, static or stack data storage, single-precision constant use, RECL units, dummy arguments memory use.

Fortran Language: compiler language and source file assumptions, case of symbols and external names.

Libraries: type of libraries used for linking, create single- or multi-threaded program, and insertion of linker search path directives.

Listing Files: create source listing file, create assembly listing file, and additional contents of each.

Optimizations: optimization level, loop unrolling, procedure inlining, reorder floating-point calculations, chip-specific optimizations for instructions, static or stack data storage, math library, dummy arguments memory use, and optimizations for IA-64 systems.

Preprocessor: specify preprocessor names, the directory where module files are placed, directories for module and include file search, use of FPP.

Run Time: generate run-time traceback information, checking and message reporting at run-time.


Shows the options Fortran will use to compile. If a project root node is selected in the settings tree, you can type into this field to add or remove compiler options.


Specifies the level of debug information generated by the compiler:

None produces no debug information needed for debugging or profiling. Only symbol information needed for linking (global symbols) is produced.

Minimal produces minimal debug information, which allows global symbol table information needed for linking, but not local symbol table information needed for debugging.

Partial produces partial debug information, which allows program counter to source file line correlation, global symbol table information needed for linking, but not local symbol table information needed for debugging.

Full produces symbol table information needed for full symbolic debugging of unoptimized code, and global symbol information needed for linking.


Specifies the level of warning for which the compiler generates messages. Certain (normal) compile-time warning messages occur by default, but you can request that these warning messages not be generated (ignore warnings) or that the messages severity be error not warning (Warnings Treated as Errors).

Individual types of compiler diagnostic messages can be specified using the Compiler Diagnostics category.


Specifies the level of optimization of code generated by the compiler:

Local optimizations occur within the source program unit and include recognition of common subexpressions, and expansion of integer multiplication and division (using shifts).

Global optimizations include data-flow analysis, code motion, strength reduction and test replacement, split-lifetime analysis, and instruction scheduling.

Optimize for speed enables optimizations that improve speed (at the cost of extra code size) loop unrolling, code replication to eliminate branches, and padding the size of certain power-of-two arrays to allow more efficient cache use.

Full optimization enables interprocedure analysis and automatic inlining of small procedures (with heuristics limiting the amount of extra code).

Maximum optimization enables the loop transformation optimizations and the software pipelining optimizations (IA-64 systems only).  To specify additional optimizations, use the Optimization category.


Specifies the name(s) of one or more preprocessor macros to create. Separate multiple entries with a comma.


Requests execution of the Fortran preprocessor, FPP.


Requests that all symbols specified by the as predefined preprocessor symbols apply only to the Fortran preprocessor, FPP, and are not available to conditional compilation directives (such as the IF Directive Construct).


Select this option to generate intermediary browse files (.sbr) when you compile your program. To create the .bsc file required for browsing, select the Build Browse Info File checkbox on the Browse Info tab.


Select this option to request fast program execution:

   Omit argument checking of math routines on IA-32 systems

        (Optimizations or Code Generation category)

   Allow the compiler to reorder floating-point calculations

        (Optimizations category)

   Natural alignment of common blocks and records

       (Fortran Data category)

   Components of derived types with the SEQUENCE property

        obey alignment rules currently in use

        (Fortran Data category)

   Generate code for the type of chip on the system in use

        (Code Generation category)

   Optimizes code for the type of chip on the system in use

        (Optimizations category)

Note:  This option overrides the settings for the options listed above, but these changes are not displayed in the Project Settings, Fortran tab.


 Select this option to compile all procedures (functions and subroutines) for possible recursive execution.


Specifies a text string to be placed into the object file (.OBJ) being generated by the compiler.


Specifies whether argument checking of math routines is done on IA-32 systems (or omitted for faster speed).


Specifies the type of code instructions generated for this program:

Blend (default) generates code appropriate for all processor generations. Programs compiled with the blend keyword will run on all (486, Pentium, Pentium 2, Pentium 3, Pentium 4,  AMD) implementations of the IA-32 processor chips when used on an IA-32 systems.

Host generates code for the specific processor generation in use on the system being used for compilation. Depending on the host system, the program may or may not run on other processor generations (see the description of the /architecture option in the on-disk Programmer’s Guide).

For IA-64 systems, select either Blend or Host.

For IA-32 (x86) systems, select the keyword for the types of systems that will execute the application. For example, if you select Pentium 4, you can execute the application on Pentium 4 processor systems, but not on Pentium III, AMD Athlon, and older processors. For more information, see the description of the /architecture option in the on-disk Programmer’s Guide.


This list allows you to select the Microsoft Fortran PowerStation options:

Filenames from Command Line requests that the program use command-line arguments or prompt for additional file names, such as when an OPEN statement has no filename specified. If this option is not set, it allows the application of default directory, file name, and extensions like Compaq Fortran, such as the FORTn environment variable and the FORT.n file name (where n is the unit number).

I/O Format controls whether Microsoft PowerStation or Visual Fortran run-time behavior is used for the semantic format for list-directed formatted I/O and unformatted I/O

Libraries controls whether dfport.lib (Portability library) is passed to the compiler and linker

List Directed I/O Spacing, for list-directed output, controls whether at run-time a blank is inserted after a numeric value before a character value (undelimited character string). If set, the blank is not inserted at run-time for compatibility with Microsoft Fortran PowerStation (does not conform to the Fortran 95 standard)

Logical Values control the value used for logical true (non-zero is true if set, -1 is true if not set)

Other Run-time Behavior controls which run-time behavior is used when a difference exists between Visual Fortran and Microsoft Fortran PowerStation and either semantic must remain available for compatibility reasons. If set, this option also sets the List Directed I/O Spacing option

Predefined Preprocessor Symbols adds one or more symbols related to Microsoft Fortran PowerStation to preprocessor and compiler invocations.


Specifies the maximum number of error-level or fatal-level compiler errors allowed for a given file before compilation aborts.


This list allows you to select the compilation diagnostic options:

Argument Mismatch enables warnings about argument mismatches between callers and callees, when compiled together.

Data Alignment enables warning messages for data that is not naturally aligned.

Inform when Compiling Files Separately enables an informational-level diagnostic message when compiling multiple files separately, which can prevent interprocedure optimizations.

Inform when removing %LOC from an argument requests that the compiler issues warnings when %LOC is stripped from an argument.

Truncated Source enables a warning diagnostic message when the compiler reads a source line with a statement field that exceeds the maximum column width in fixed-format source files.

Uncalled Routines enables a compiler warning diagnostic message when a statement function is never called

Undeclared Variables enables an error message for any undeclared symbols, making the default type of a variable undefined (IMPLICIT NONE) rather than using the default Fortran rules

Uninitialized Variables enables warning messages for a variable that is used before a value was assigned to it

Unused Variables requests warning messages for a variable that is declared but never used.

Usage enables warning messages about questionable programming practices and the use of intrinsic functions that use a two-digit year (year 2000).


Either does not perform standards checking or issues compile-time messages for language elements that are not standard either in the Fortran 90 or Fortran 95 language that can be identified at compile-time.


Select this option to allow standards checking with error-level compilation messages instead of warning-level messages.


Specifies the format of unformatted files containing numeric data.

Big endian (IEEE big endian), IBM (proprietary), and Cray (proprietary) use big endian byte arrangement:

Native and Little endian use little endian integers and IEEE little endian S_float and T_float formats.

VAXD and VAXG use little endian integers and either D_float or G_float double-precision little endian proprietary formats.


Select this option to cause the run-time system to provide functions like Compaq Fortran 77 for OpenVMS  VAX Systems


Select this option to use the Compaq Fortran 77 run-time behavior instead of the Visual Fortran (Compaq Fortran) run-time behavior.


Select this option to use Fortran 77 semantics (type determined by the value) to determine the kind of integer constants instead of Fortran 95/90 default INTEGER type.


Select this option to request that any debug information generated by the compiler should be to a program database file, filename.PDB.


Specifies the path and file name of the PDF file (default file name is DF60.PDB).


Select this option to request that the compiler generate extra information in the object file that allows the display of source file traceback information (source file, routine name, and line number correlation) at run time when a severe Fortran error occurs. When you select this option, do not select incremental linking (see Linker tab, General category).


Select this option to request that lines in fixed-format files that contain a D in column 1 should be treated as source code. Otherwise, they are treated as comments.


Specifies the calling convention:

Default calling: arguments are passed by reference, an @n is appended to names on IA-32 systems, the callee cleans up the stack, and variable arguments are not supported.

C, by reference calling: arguments are passed by reference, an @n is not appended to names, the caller cleans up the stack, and variable arguments are supported.


Specifies the convention for passing the hidden-length character arguments, either using after each character argument or after all arguments. Microsoft® Fortran PowerStation used the convention of passing hidden lengths immediately after their corresponding character argument in the argument list, whereas Compaq Fortran on Compaq Tru64 UNIX and Linux Alpha systems uses the convention to pass all hidden lengths in sequential order at the end of the argument list.


Specifies how source code identifiers and external names are interpreted and the case convention used for external names:

Upper case and Lower case does not distinguish between uppercase and lowercase letters in source code identifiers and forces all letters to uppercase or lowercase in external names.

As is distinguishes between uppercase and lowercase letters in source code identifiers (treat uppercase and lowercase letters as different) and distinguishes between uppercase and lowercase letters in external names.


Select this option to append an underscore character to external user-defined names, including the main program name, named COMMON, BLOCK DATA, and names implicitly or explicitly declared EXTERNAL.


Specifies on IA-64systems how rounding occurs during floating-point calculations:

Nearest is the normal rounding mode, where results are rounded to the nearest representable value.

Chopped rounds results toward zero.

Minus_infinity rounds results toward the next smallest representative value.

Dynamic lets you set the rounding mode at run-time. You can modify your program to call the appropriate Windows routine to obtain or set the current rounding mode.


Specifies the floating-point exception level at run-time:

Level 3: leaves denormalized numbers as is  (default on IA-32 systems). The program continues (with a NaN or Infinity) when a divide by zero, overflow, and invalid data operation occurs.

Level 0: sets denormalized numbers to zero  (default on IA-64 systems). The program terminates when a divide by zero, overflow, and invalid data operation occurs.


Select this option on IA-32 systems to enable improved floating-point consistency. Floating-point operations are not reordered and the result of each floating-point operation is stored into the target variable rather than being kept in the floating-point processor for use in a subsequent calculation. This option is ignored on IA-64 systems.


Select this option to request that a single-precision constant assigned to a double-precision variable be evaluated in double precision Otherwise, a single-precision constant assigned to a double-precision variable is evaluated in single precision.


Select this option to request Fortran 95 standard semantics for the IEEE floating-point value of -0.0 (minus zero) in the SIGN intrinsic. Otherwise, the compiler uses Fortran 90 and FORTRAN 77 semantics where the value -0.0 or +0.0 in the SIGN function is treated as 0.0.


Specifies that data items of all COMMON data blocks be aligned (with padding) on boundaries of up to four bytes or eight bytes, or left as is (one byte) with no padding. Unaligned data can slow application performance.


Specifies that all components of derived types and fields of records be aligned on natural boundaries (with padding), or padded on boundaries of two, four, or eight bytes, or left as is (one byte) with no padding. Unaligned data can slow application performance.


Specifies the size (in bytes) of INTEGER and LOGICAL declarations, constants, functions, and intrinsics.


Specifies the size (in bytes) of REAL and COMPLEX declarations, constants, functions, and intrinsics. Four-byte declarations use single-precision and eight-byte declarations use double-precision.


This list allows you to select the data options:

Allow SEQUENCE types to be padded for alignment makes components of derived types with the SEQUENCE property obey whatever alignment rules are currently in use (by default, components are aligned on natural boundaries). If  you omit this option, components of derived types with the SEQUENCE attribute will be packed, regardless of whatever alignment rules are currently in use.

Append Underscore to External Names controls the appending of an underscore character to external user-defined names: the main program name, named COMMON, BLOCK DATA, and names implicitly or explicitly declared EXTERNAL.

Constant actual arguments are Read-Only requests that the compiler allow changes to actual arguments that are constants.

Enabling Dummy Arguments Sharing Memory Locations requires that the compiler assume that dummy (formal) arguments to procedures share memory locations with other dummy arguments or with variables shared through use association, host association, or common block use.

Extend Precision of Single-Precision Constants requests that a single-precision constant assigned to a double-precision variable be evaluated in double precision.

Use Bytes as RECL= Units for Unformatted Files indicates that the units for an explicit OPEN statement RECL specifier value are in bytes and forces the record length value returned by an INQUIRE by output list to be in byte units.

Variables Default to Automatic requests that local variables be put on the run-time stack.


Specifies that the compiler generate reentrant code that supports a multithreaded application.


This list allows you to select the optimization options:

Variables Default to Automatic requests that local variables be put on the run-time stack.

Enable Dummy Arguments to Share Memory Locations requires that the compiler assume that dummy (formal) arguments to procedures share memory locations with other dummy arguments or with variables shared through use association, host association, or common block use.

Allow Reordering of Floating-Point Operations allows the compiler to reorder code based on algebraic identities (inverses, associativity, and distribution) to improve performance. The numeric results can be slightly different because of the way intermediate results are rounded when this option is not selected.

Enable I/O Buffering requests that output records be accumulated in the buffer, instead of being written (flushed) to disk as each record is written (default). Using buffered writes usually makes disk I/O more efficient by writing larger blocks of data to the disk less often. However, records in the output buffer that have not yet written to disk may be lost in the event of a system failure.

Transform Loops activates a group of loop transformation optimizations that apply to array references within loops. These optimizations can improve the performance of the memory system and usually apply to multiple nested loops. The loops chosen for loop transformation optimizations are always counted loops. To request Transform Loops, specify the

Software pipelining (IA-64 only) activates the software pipelining optimization. This optimization applies instruction scheduling to certain innermost loops, allowing instructions within a loop to "wrap around" and execute in a different iteration of the loop. This can reduce the impact of long-latency operations, resulting in faster loop execution. To request Software pipelining, specify the Optimization level as Global optimizations or higher. Optimization level as Global optimizations or higher.


Select this option to specify that the units for RECL values in an OPEN or INQUIRE statement with unformatted files are in one-byte units (instead of four-byte or longword units). Microsoft® Fortran PowerStation uses one-byte units, whereas Compaq Fortran on other platforms use four-byte units for RECL specifier values.


Select this option to request that the compiler select FORTRAN-66 interpretations in cases of incompatibility. One of these differences is that DO loops are executed at least once.


Select this option to specify how the compiler will treat the alternate syntax for PARAMETER statement, which does not have parentheses around the assignment of the constant to the parameter name.


Specifies whether the file extension will determine whether the compiler assumes whether the file uses free (.f90 or .F90) or fixed (.for, .FOR, .f, or .i) form, or whether it should assume source files are in free form or fixed form regardless of the file extension.


Specifies the column used to end the statement field in fixed-format source files. Any columns after that will be treated as comments.


Select this option to request that source records shorter than the statement field width are to be padded with spaces on the right out to the end of the statement field. This affects the interpretation of character and Hollerith literals that are continued across source records.


Specifies the type of run-time libraries your application is linked with, one of:

   Single-threaded static libraries

   Single-threaded DLL libraries

   Multi-threaded static libraries

   Multi-threaded DLL libraries

   Debug Single-threaded static libraries

   Debug Single-threaded DLL libraries

   Debug Multi-threaded static libraries

   Debug Multi-threaded DLL  libraries

   QuickWin (multi-doc) libraries

   Standard Graphics (also called QuickWin single doc) libraries

   Debug QuickWin (multi-doc) libraries

   Debug Standard Graphics (also called QuickWin single doc) libraries

Notes:

Debug libraries request use of the debug C run-time libraries (for Visual Fortran/Visual C++ mixed-language applications).

Multi-threaded libraries request linking with multi-threaded libraries to create a multi-threaded application. QuickWin or Standard Graphics applications use multi-threaded libraries.

DLL libraries indicate that the linker searches for unresolved references in dynamic link reference libraries (DLLs) instead of static libraries. If the unresolved reference is found in the DLL, it gets resolved when the program is executed (during program loading), reducing executable program size, but requires redistribution of related DLLs with the application on other systems.

When creating a static library, specify QuickWin or Standard graphic if your application will call QuickWin or Standard graphic routines.


This list allows you to select the library options:

Disable Default Library Search Paths prevents the insertion of linker search path directives for libraries automatically determined by the compiler driver (default libraries).

Disable OBJCOMMENT LIB directives prevent the insertion of linker search path directives for any libraries specified by the cDEC$ OBJCOMMENT LIB source directives.

Use Common Windows Libraries requests the creation of a graphics or windows application and links against the most commonly used libraries.

Use Compaq’s Extended Math Library (CXML) ensures that the CXML library will be passed to the linker (your program still needs the INCLUDE 'CXML_INCLUDE.F90' statement, as described in the Programmer’s Guide).

This option is for documentation purposes only.

Use IMSL Math Library ensures that the IMSL libraries will be passed to the linker (your program still needs the appropriate USE statements(s) and set IMSL environment variables, as described in the Programmer’s Guide).


Select this option to create a listing of the source file with compile-time information appended.


Specifies the name of the listing file being created.


Select this option to request that a machine language representation be included in the listing file.


Select this option to list any text file included in the source file.


Select this option to include a symbol map in the listing file.


Select this option to create an assembly listing file.


Specifies the name of the assembly listing file being created.


Select this option to list the hex machine instructions at the beginning of each line of assembly code.


Select this option to intersperse the source code as comments in the assembly listing file.


Specify the type of annotations included in the listing file to indicate which optimizations the compiler applied to particular parts of the source file:

Code: descriptions of special instructions used for prefetching, alignment, and so on

Detail: provides, where available, an additional level of annotation detail

Feedback: provides information about any feedback optimizations

Inlining: indicates where code for a called procedure was expanded inline

Loop Transformations: indicates where advanced loop nest optimizations have been applied to improve cache performance

Loop Unrolling: indicates where a loop was unrolled (contents expanded multiple times)

Prefetch: indicates where special instructions were used to reduce memory latency

Shrink Wrapping: indicates removal of code establishing routine context when it is not needed

Software pipelining: (IA-64 only) indicates where instructions have been rearranged to make optimal use of the processor's functional units

Tail Calls: indicates an optimization where a call from one routine to another can be replaced with a jump

Tail Recursion: indicates an optimization that eliminates unnecessary routine context for a recursive call


Specifies where the path where module files (extension MOD) are placed. Otherwise, module files are placed in the same directory as the source file. Within the development environment, this option may be disabled to prevent problems with project build dependencies.


Specifies the types of processor-specific instruction tuning:

Blend (default) generates and schedules code that will execute well for all generations of the IA-32 processor chips when used on an IA-32 systems. This provides generally efficient code for those cases where all processor generations are likely to be used.

Host generates and schedules code optimized for the processor generation in use on the system being used for compilation.

For IA-64 systems, use either Host or Blend. For IA-32 systems, select the keyword for the types of systems on which the application will be run:

Pentium generates and schedules code optimized for the 586 (Pentium) implementations of the IA-32 chip.

PentiumPro or AMD K6 generates and schedules code optimized for the 686 (Pentium Pro and Pentium II) implementations of the IA-32 chip and AMD K6 processors (PentiumPro and AMD K6 are the same).

Pentium III generates and schedules code for 786 (Pentium III) and AMD K6_2 and AMD K6_III processors.

Pentium 4 generates and schedules code for 886 (Pentium 4) processors only.

AMD K6_2 and K6_III generates and schedules code for AMD K6_2 and AMD K6_III processors.

AMD Athlon generates and schedules code for AMD Athlon processors only.


Specifies how many times loops are unrolled. If not specified, the compiler determines how many times loops are unrolled (4 times for most loops or 2 times for certain loops with large code size or branches outside the loop). To request Loop Unrolling, specify the Optimization level as Global optimizations or higher.


Select this option to control the inlining of procedures:

Manual prevents the inlining of procedures, except for statement functions.

Size inlines procedures that will improve run-time performance without significantly increasing program size.

Speed inlines procedures that will improve run-time performance with a significant increase in program size.

All inlines absolutely every call that it is possible to inline while still getting correct code

To specify Inlining values of Size, Speed, or All , you must specify an Optimization Level of Local Optimizations or higher.


Specifies whether the compiler should search for module or include files in the directory where the source file being compiled resides or in the current directory.


Specifies one or more additional directories (path) to be searched for module files (USE statement) and include files (INCLUDE statement).


Specifies the default carriage control when a file is displayed on a terminal screen:

Default allows other options, such as Compatibility option /vms , to affect this default setting.

Fortran uses normal Fortran interpretation of the first character, such as the character "0" resulting in a blank line before output.

List adds one line-feed between records.

None uses no carriage control processing.


This list allows you to select the run-time error options:

Actual Arguments use Temporary Storage requests a run-time informational message if actual arguments are copied into temporary storage before routine calls.

Array and String bounds requests a run-time error message if a reference to an array subscript or character substring is outside of the declared bounds.

Edit Descriptor Data Type requests a run-time error message when the data type for an item being formatted for output does not match the FORMAT descriptor.

Edit Descriptor Data Size requests a run-time message when a data item is too large to fit in a designated FORMAT descriptor field.

Flawed Pentium Processor, for a Pentium (586 series) system, requests a run-time error message if a flawed Pentium® processor is detected. To allow program execution to continue when this condition occurs, set the environment variable FOR_RUN_FLAWED_PENTIUM to true and rerun the program (see the Programmer’s Guide).

Floating-Point Underflow requests an informational run-time message when floating-point underflow occurs.

Integer Overflow requests a continuable run-time message when integer overflow occurs.

Power Operations requests a run-time error message for 0.0 ** 0.0 and negative-value ** integer-value-of-type-real, so 0.0 ** 0 .0 is 1.0 and (-3.0) ** 3.0 is -27.0.


For the current Fortran environment,  the tool tab in the Project Settings dialog box, either Fortran or Linker. Verify the project settings for the selected tool tab.


List of available Fortran environments for the specified Fortran project type.


For the saved Fortran environment,  the tool tab in the Project Settings dialog box, either Fortran or Linker.


Type the name of the Fortran environment to be saved when you click the Save Environment button. Verify the project settings for the selected Fortran environment.


Displays command-line options for the current Fortran environment, Release configuration.


Displays command-line options for the current Fortran environment, Debug configuration.


Displays command-line options for the saved Fortran environment, Release configuration.


Displays command-line options for the saved Fortran environment, Debug configuration.