
- •Contents
- •Using This Documentation
- •Product Documentation Library
- •Feedback
- •Chapter 1 • Introduction
- •1.1 Standards Conformance
- •1.2 Features of the Fortran Compiler
- •1.3 Other Fortran Utilities
- •1.4 Debugging Utilities
- •1.5 Oracle Developer Studio Performance Library
- •1.6 Man Pages
- •1.7 Command-Line Help
- •Chapter 2 • Using Oracle Developer Studio Fortran
- •2.1 A Quick Start
- •2.2 Invoking the Compiler
- •2.2.3 Source Files
- •2.2.4 Source File Preprocessors
- •2.2.5 Separate Compiling and Linking
- •2.2.6 Consistent Compiling and Linking
- •2.2.8 Modules
- •2.3 Directives
- •2.3.1 General Directives
- •2.3.1.1 The C Directive
- •2.3.1.2 The IGNORE_TKR Directive
- •2.3.1.3 The UNROLL Directive
- •2.3.1.4 The WEAK Directive
- •2.3.1.5 The OPT Directive
- •2.3.1.7 The PREFETCH Directives
- •2.3.1.8 The ASSUME Directives
- •2.3.2 Parallelization Directives
- •2.3.2.1 OpenMP Parallelization Directives
- •2.3.2.2 Legacy Sun/Cray Parallelization Directives
- •2.3.3 IVDEP Directive
- •2.4 Library Interfaces and system.inc
- •2.5 Compiler Usage Tips
- •2.5.1 Determining Hardware Platform
- •2.5.2 Using Environment Variables
- •2.5.3 Memory Size
- •2.5.3.1 Swap Space Limits
- •2.5.3.2 Increasing Swap Space
- •2.5.3.3 Control of Virtual Memory
- •2.6 User-Supplied Default Options File
- •Chapter 3 • Fortran Compiler Options
- •3.1 Command Syntax
- •3.2 Options Syntax
- •3.3 Options Summary
- •3.3.1 Commonly Used Options
- •3.3.2 Macro Flags
- •3.3.3 Backward Compatibility and Legacy Options
- •3.3.4 Obsolete Option Flags
- •3.4 Options Reference
- •3.4.1 –aligncommon[={1|2|4|8|16}]
- •3.4.2 –ansi
- •3.4.3 –arg=local
- •3.4.4 –autopar
- •3.4.5 –B{static|dynamic}
- •3.4.8 –copyargs
- •3.4.10 –dalign
- •3.4.11 –dbl_align_all[={yes|no}]
- •3.4.12 –depend[={yes|no}]
- •3.4.13 –dryrun
- •3.4.17 –errtags[={yes|no}]
- •3.4.23 –fast
- •3.4.25 –fixed
- •3.4.26 –flags
- •3.4.27 –fma[={none|fused}]
- •3.4.28.1 See Also
- •3.4.29 –fnonstd
- •3.4.31 -fopenmp
- •3.4.32 –fpover[={yes|no}]
- •3.4.34 –fprecision={single|double|extended}
- •3.4.35 –free
- •3.4.36 –fround={nearest|tozero|negative|positive}
- •3.4.37 –fserialio
- •3.4.38 –fsimple[={1|2|0}]
- •3.4.39 –fstore
- •3.4.41 –fvisibility
- •3.4.45 -gz[=cmp-type]
- •3.4.47 –help
- •3.4.51 –iorounding[={compatible|processor-defined}]
- •3.4.52 –keepmod[={yes|no}]
- •3.4.53 –keeptmp
- •3.4.54 –Kpic
- •3.4.55 –KPIC
- •3.4.58 –libmil
- •3.4.59 -library=sunperf
- •3.4.60 –loopinfo
- •3.4.65 –native
- •3.4.66 –noautopar
- •3.4.67 –nodepend
- •3.4.68 -nofstore
- •3.4.69 –nolib
- •3.4.70 –nolibmil
- •3.4.71 –noreduction
- •3.4.72 –norunpath
- •3.4.75 –onetrip
- •3.4.76 –openmp
- •3.4.82 –preserve_argvalues[=simple|none|complete]
- •3.4.86 –r8const
- •3.4.87 –recl=a[,b]
- •3.4.88 –reduction
- •3.4.91 –shared
- •3.4.92 –silent
- •3.4.93 –stackvar
- •3.4.94 –stop_status[={yes|no}]
- •3.4.96 –time
- •3.4.101 –unroll=n
- •3.4.102 –use=list
- •3.4.105 –vax=keywords
- •3.4.106 –vpara
- •3.4.109 -Xlinker arg
- •3.4.110 –xaddr32[={yes|no}]
- •3.4.111 –xalias[=keywords]
- •3.4.112 –xannotate[={yes|no}]
- •3.4.113 –xarch=isa
- •3.4.113.1 Special Cautions for x86/x64 Platforms:
- •3.4.114 –xassume_control[=keywords]
- •3.4.115 –xautopar
- •3.4.116 –xcache=c
- •3.4.117 –xcheck[=keyword[,keyword]]
- •3.4.117.1 Defaults
- •3.4.118 –xchip=c
- •3.4.119 -xcode[=v]
- •3.4.120 –xcommonchk[={yes|no}]
- •3.4.121 -xcompress={[no%]debug}
- •3.4.122 -xcompress_format=cmp-type
- •3.4.123 –xdebugformat=dwarf
- •3.4.124 -xdebuginfo=a[,a...]
- •3.4.125 –xdepend
- •3.4.127 –xfilebyteorder=options
- •3.4.127.1 Examples:
- •3.4.127.2 Notes:
- •3.4.128 -xglobalize[={yes|no}]
- •3.4.128.1 Interactions
- •3.4.129 –xhasc[={yes|no}]
- •3.4.130 –xhelp=flags
- •3.4.131 –xhwcprof[={enable | disable}]
- •3.4.132 –xinline=list
- •3.4.133 -xinline_param=a[,a[,a]...]
- •3.4.134 -xinline_report[=n]
- •3.4.135 –xinstrument=[%no]datarace
- •3.4.136 –xipo[={0|1|2}]
- •3.4.137 –xipo_archive[={none|readonly|writeback}]
- •3.4.138 -xipo_build=[yes|no]
- •3.4.138.1 -xipo_build Examples
- •3.4.139 –xivdep[=p]
- •3.4.140 -xjobs{=n|auto}
- •3.4.140.1 -xjobs Examples
- •3.4.141 -xkeep_unref[={[no%]funcs,[no%]vars}]
- •3.4.142 –xkeepframe[=[%all,%none,name,no%name]]
- •3.4.143 –xknown_lib=library_list
- •3.4.145 –xlang=f77
- •3.4.147 –xlibmil
- •3.4.148 –xlibmopt[={%none,archive,shared}]
- •3.4.149 –xlinkopt[={1|2|0}]
- •3.4.150 –xloopinfo
- •3.4.152 –xmaxopt[=n]
- •3.4.153 –xmemalign[=<a><b>]
- •3.4.154 –xmodel=[small | kernel | medium]
- •3.4.155 –xnolib
- •3.4.156 –xnolibmil
- •3.4.157 –xnolibmopt
- •3.4.159 –xopenmp[={parallel|noopt|none}]
- •3.4.160 –xpad
- •3.4.161 –xpagesize=size
- •3.4.162 –xpagesize_heap=size
- •3.4.163 –xpagesize_stack=size
- •3.4.164 -xpatchpadding[={fix|patch|size}]
- •3.4.165 –xpec[={yes|no}]
- •3.4.168 –xprefetch[=a[,a]]
- •3.4.168.1 Defaults:
- •3.4.168.2 Interactions:
- •3.4.168.3 Warnings:
- •3.4.169 –xprefetch_auto_type=indirect_array_access
- •3.4.170 –xprefetch_level={1|2|3}
- •3.4.171 –xprofile=p
- •3.4.172 –xprofile_ircache[=path]
- •3.4.173 –xprofile_pathmap=collect_prefix:use_prefix
- •3.4.174 –xrecursive
- •3.4.175 –xreduction
- •3.4.176 –xregs=r
- •3.4.178 –xsafe=mem
- •3.4.179 –xsecure_code_analysis{=[yes|no]}
- •3.4.180 -xsegment_align=n
- •3.4.181 –xspace
- •3.4.182 –xtarget=t
- •3.4.182.1 SPARC Platforms
- •3.4.182.2 x86 Platforms
- •3.4.183 -xtemp=path
- •3.4.184 -xthroughput[={yes|no}]
- •3.4.185 –xtime
- •3.4.186 –xtypemap=spec
- •3.4.187 -xunboundsym={yes|no}
- •3.4.188 –xunroll=n
- •3.4.189 -xvector[=a]
- •3.4.190 –ztext
- •Chapter 4 • Oracle Developer Studio Fortran Features and Extensions
- •4.1 Source Language Features
- •4.1.1 Continuation Line Limits
- •4.1.3 Tab Form
- •4.1.4 Source Form Assumed
- •4.1.4.1 Mixing Forms
- •4.1.4.2 Case
- •4.1.5 Limits and Defaults
- •4.2 Data Types
- •4.2.1 Boolean Type
- •4.2.1.1 Rules Governing Boolean Type
- •4.2.1.2 Alternate Forms of Boolean Constants
- •Octal
- •Hexadecimal
- •Hollerith
- •4.2.1.3 Alternate Contexts of Boolean Constants
- •4.2.2 Abbreviated Size Notation for Numeric Data Types
- •4.2.3 Size and Alignment of Data Types
- •4.3 Cray Pointers
- •4.3.1 Syntax
- •4.3.2 Purpose of Cray Pointers
- •4.3.3 Declaring Cray Pointers and Fortran 95 Pointers
- •4.3.4 Features of Cray Pointers
- •4.3.5 Restrictions on Cray Pointers
- •4.3.6 Restrictions on Cray Pointees
- •4.3.7 Usage of Cray Pointers
- •4.4 STRUCTURE and UNION (VAX Fortran)
- •4.5 Unsigned Integers
- •4.5.1 Arithmetic Expressions
- •4.5.2 Relational Expressions
- •4.5.3 Control Constructs
- •4.5.4 Input/Output Constructs
- •4.5.5 Intrinsic Functions
- •4.6 Fortran 200x Features
- •4.6.1 Interoperability with C
- •4.6.4 PROTECTED Attribute
- •4.6.5 Fortran 2003 Asynchronous I/O
- •4.6.6 Extended ALLOCATABLE Attribute
- •4.6.7 VALUE Attribute
- •4.6.8 Fortran 2003 Stream I/O
- •4.6.9 Fortran 2003 IMPORT Statement
- •4.6.10 Fortran 2003 FLUSH I/O Statement
- •4.6.11 Fortran 2003 POINTER INTENT Feature
- •4.6.12 Fortran 2003 Enhanced Array Constructor
- •4.6.14 FINAL Subroutine Support
- •4.6.15 Procedure Pointer Support
- •4.6.16 Parameterized Derived Type
- •4.6.17 Additional Fortran 2003 and Fortran 2008 Features
- •4.7 Additional I/O Extensions
- •4.7.1 I/O Error Handling Routines
- •4.7.2 Variable Format Expressions
- •4.7.3 NAMELIST Input Format
- •4.7.4 Binary Unformatted I/O
- •4.7.5 Miscellaneous I/O Extensions
- •4.8 Directives
- •4.8.1 Form of Special f95 Directive Lines
- •4.8.2 FIXED and FREE Directives
- •4.8.2.1 Scope
- •4.8.2.2 Uses
- •4.8.2.3 Restrictions
- •4.8.3 Parallelization Directives
- •4.9 Module Files
- •4.9.1 Searching for Modules
- •4.9.3 The fdumpmod Command
- •4.10 Intrinsics
- •4.11 Forward Compatibility
- •4.12 Mixing Languages
- •Chapter 5 • FORTRAN 77 Compatibility: Migrating to Oracle Developer Studio Fortran
- •5.1 Compatible f77 Features
- •5.2 Incompatibility Issues
- •5.3 Linking With Legacy FORTRAN 77-Compiled Routines
- •5.3.1 Fortran Intrinsics
- •5.4 Additional Notes About Migrating to the f95 Compiler
- •5.5 The f77 Command
- •Appendix A • Runtime Error Messages
- •A.1 Operating System Error Messages
- •A.2 f95 Runtime I/O Error Messages
- •Appendix B • Features Release History
- •B.1 Oracle Developer Studio 12.6 Fortran Release
- •B.2 Oracle Solaris Studio 12.4 Fortran Release
- •B.3 Oracle Solaris Studio 12.3 Fortran Release
- •B.4 Oracle Solaris Studio 12.2 Fortran Release
- •B.5 Sun Studio 12 Update 1 Fortran Release
- •B.6 Sun Studio 12 Fortran Release
- •B.7 Sun Studio 11 Fortran Release
- •Appendix C • Fortran Directives Summary
- •C.1 General Fortran Directives
- •C.2 Special Fortran Directives
- •C.3 Fortran OpenMP Directives
- •Index

2.2 Invoking the Compiler
demo% cat greetings.f
PROGRAM GREETINGS
PRINT *, ’Real programmers write Fortran!’ END
demo% f95 greetings.f demo% a.out
Real programmers write Fortran! demo%
In this example, f95 compiles source file greetings.f and links the executable program onto the file, a.out, by default. To launch the program, the name of the executable file, a.out, is typed at the command prompt.
Traditionally, UNIX compilers write executable output to the default file called a.out. It can be awkward to have each compilation write to the same file. Moreover, if such a file already exists, it will be overwritten by the next run of the compiler. Instead, use the -o compiler option to explicitly specify the name of the executable output file:
demo% f95 -o greetings greetings.f demo% greetings
Real programmers write Fortran! demo%
In the preceding example, the -o option tells the compiler to write the executable code to the file greetings. (By convention, executable files usually are given the same name as the main source file, but without an extension.)
Alternatively, the default a.out file could be renamed via the mv command after each compilation. Either way, run the program by typing the name of the executable file at a shell prompt.
The next sections of this chapter discuss the conventions used by the f95 commands, compiler source line directives, and other issues concerning the use of these compiler. The next chapter describes the command-line syntax and all the options in detail.
2.2Invoking the Compiler
The syntax of a simple compiler command invoked at a shell prompt is:
f95 [options] files...
Here files… is one or more Fortran source file names ending in .f, .F, .f90, .f95, .F90, .F95, or .for; options is one or more of the compiler option flags. (Files with names ending in a
24 Oracle Developer Studio 12.6: Fortran User's Guide • July 2017

2.2 Invoking the Compiler
.f90 or .f95 extension are “free-format” Fortran 95 source files recognized only by the f95 compiler.)
In the example below, f95 is used to compile two source files to produce an executable file named growth with runtime debugging enabled:
demo% f95 -g -o growth growth.f fft.f95
Note - You can invoke the Fortran compiler with either the f95 or f90 command.
New: The compiler will also accept source files with the extension .f03 or .F03. These are treated as equivalent to .f95 and .F95 and could be used as a way to indicate that a source file contains Fortran 2003 extensions.
“2.2.2 Command-Line File Name Conventions” on page 25, describes the various source file extensions accepted by the compiler.
2.2.1Compile-Link Sequence
In the previous example, the compiler automatically generates the loader object files, growth.o and fft.o, and then invokes the system linker to create the executable program file growth.
After compilation, the object files, growth.o and fft.o, will remain. This convention permits easy relinking and recompilation of files.
If the compilation fails, you will receive a message for each error. No .o files are generated for those source files with errors, and no executable program file is written.
2.2.2Command-Line File Name Conventions
The suffix extension attached to file names appearing on the command-line determine how the compiler will process the file. File names with a suffix extension other than one of those listed below, or without an extension, are passed to the linker.
TABLE 1 |
Filename Suffixes Recognized by the Fortran Compiler |
|
|
|
|
Suffix |
Language |
Action |
|
|
|
.f |
Fortran77 or |
Compile Fortran source files, put object files in current directory; default name |
|
Fortran 95 fixed- |
of object file is that of the source but with .o suffix. |
|
format |
|
|
|
|
Chapter 2 • Using Oracle Developer Studio Fortran |
25 |

2.2 Invoking the Compiler
Suffix |
Language |
Action |
|
|
|
.f95 |
Fortran 95 free- |
Same action as .f |
.f90 |
format |
|
|
|
|
.f03 |
Fortran 2003 free- |
Same action as .f |
|
format |
|
|
|
|
.for |
Fortran 77 or |
Same action as .f. |
|
Fortran 95 fixed- |
|
|
format |
|
|
|
|
.F |
Fortran 77 or |
Apply the Fortran (or C) preprocessor to the Fortran 77 source file before |
|
Fortran 95 fixed- |
compilation. |
|
format |
|
|
|
|
.F95 |
Fortran 95 free- |
Apply the Fortran (or C) preprocessor to the Fortran 95 free-format source file |
.F90 |
format |
before Fortran compiles it. |
|
|
|
.F03 |
Fortran 2003 free- |
Same as .F95 |
|
format |
|
|
|
|
.s |
Assembler |
Assemble source files with the assembler. |
|
|
|
.S |
Assembler |
Apply the C preprocessor to the assembler source file before assembling it. |
|
|
|
.il |
Inline expansion |
Process template files for inline expansion. The compiler will use templates to |
|
|
expand inline calls to selected routines. (Template files are special assembler |
|
|
files; see the inline(1) man page.) |
|
|
|
.o |
Object files |
Pass object files through to the linker. |
|
|
|
.a, .so,. . |
Libraries |
Pass names of libraries to the linker. .a files are static libraries, .so and .so.n |
so.n |
|
files are dynamic libraries. |
|
|
|
Fortran 95 free-format is described in “4.1 Source Language Features” on page 167.
2.2.3Source Files
The Fortran compiler will accept multiple source files on the command line. A single source file, also called a compilation unit, may contain any number of procedures (main program, subroutine, function, block data, module, and so on). Applications may be configured with one source code procedure per file, or by gathering procedures that work together into single files.
2.2.4Source File Preprocessors
f95 supports two source file preprocessors, fpp and cpp. Either can be invoked by the compiler to expand source code “macros” and symbolic definitions prior to compilation. The compiler will use fpp by default; the -xpp=cpp option changes the default from fpp to cpp. (See also the discussion of the -Dname option).
26 Oracle Developer Studio 12.6: Fortran User's Guide • July 2017

2.2 Invoking the Compiler
fpp is a Fortran-specific source preprocessor. See the fpp(1) man page for details. It is invoked by default on files with a .F, .F90, F95, or .F03 extension.
The source code for fpp is available from Netlib.
See cpp(1) for information on the standard Unix C language preprocessor. Use of fpp over cpp is recommended on Fortran source files.
2.2.5Separate Compiling and Linking
You can compile and link in separate steps. The -c option compiles source files and generates
.o object files, but does not create an executable. Without the -c option the compiler will invoke the linker. By splitting the compile and link steps in this manner, a complete recompilation is not needed just to fix one file, as shown in the following example:
Compile one file and link with others in separate steps:
demo% |
f95 |
-c |
file1.f |
(Make new object file) |
demo% |
f95 |
-o |
prgrm file1.o file2.o file3.o |
(Make executable file) |
Be sure that the link step lists all the object files needed to make the complete program. If any object files are missing from this step, the link will fail with undefined external reference errors (missing routines).
2.2.6Consistent Compiling and Linking
Ensuring a consistent choice of compiling and linking options is critical whenever compilation and linking are done in separate steps. Compiling any part of a program with some options requires linking with the same options. Also, a number of options require that all source files be compiled with that option, including the link step.
The option descriptions in Chapter 3 identify such options.
Example: Compiling sbr.f with -fast, compiling a C routine, and then linking in a separate step:
demo% f95 |
-c -fast sbr.f |
|
demo% cc -c -fast simm.c |
|
|
demo% f95 |
-fast sbr.o simm.o |
link step; passes -fast to the linker |
Chapter 2 • Using Oracle Developer Studio Fortran |
27 |