Navigation:
Previous
Up
Next
12 Detailed Contents
1 Introduction
1.1 Introduction to the Compiler
1.1.1 Other Fortran-related Activities at NAG
1.1.2 This Manual
2 Using the Compiler
2.1 Usage
2.2 Description
2.3 File Types
2.4 Compiler Options
2.5 Files
2.6 Compilation Messages
2.7 Compiler Limits
2.8 Input/Output Information
2.9 OpenMP Support
2.10 Automatic File Preconnection
2.11 IEEE 754 Arithmetic Support
2.12 Random Number Algorithm
2.13 Automatic Garbage Collection
2.14 Memory Tracing
2.15 Undefined Variable Detection
2.16 Data Types
2.17 Modules
2.18 Runtime Environment Variables
2.19 Debugging
2.20 Producing a Call Graph
2.21 Dependency Analysis
2.22 Generating Interfaces
2.23 Source File Polishing
2.24 Enhanced Source File Polishing
2.25 Unifying Precision
3 Debugging with dbx90
3.1
dbx90
command line
3.2 Description of
dbx90
3.3
dbx90
options
3.4
dbx90
Commands
3.5
dbx90
Expressions
3.5.1 Scalar expressions
3.5.2 Array sections
3.5.3 Derived type component specification
3.6
dbx90
Command aliases
3.7
dbx90
limitations
3.8 Example of
dbx90
3.9 Troubleshooting
dbx90
4 Preprocessing with fpp
4.1 Overview of
fpp
4.2
fpp
command line
4.3 Description of
fpp
4.4
fpp
options
4.5 Using fpp
4.5.1 Source files
4.5.2 Output
4.5.3 Directives
4.5.4 Macro definition
4.5.5 Including external files
4.5.6 Line number control
4.5.7 Conditional selection of source text
4.6 Preprocessing details
4.6.1 Scope of macro or variable definitions
4.6.2 End of macro definition
4.6.3 Function-like macro definition
4.6.4 Cancelling macro definitions
4.6.5 Conditional source code selection
4.6.6 Including external files
4.6.7 Comments
4.6.8 Macro functions
4.6.9 Macro expression
4.7
fpp
diagnostics
5 Extensions
5.1 Non-standard Extensions
5.1.1 BOZ literal constants outside DATA statements
5.1.2 Longer Names
5.1.3 Dollar Sign in Names
5.1.4 Input/output endian/format conversion
5.1.5 Elemental
BIND(C)
procedures
5.1.6 Maximum array rank is 31
5.2 Obsolete Extensions
5.2.1 Byte Sizes
5.2.2 TAB Format
5.2.3 Hollerith Constants
5.2.4 D (debug) lines in Fixed Source Form
5.2.5 Increased Line Length in Fixed Source Form
5.2.6 Increased Maximum Number of Continuation Lines
5.2.7 Intrinsic functions with mixed-kind arguments
5.2.8 Legacy Application Support
5.2.9 Mismatched Argument Lists
5.2.10 Double Precision Complex Extensions
6 Intrinsic Modules
6.1 Intrinsic Module Overview
6.2 f90_gc
6.3 f90_iostat
6.4 f90_kind
6.5 f90_preconn_io
6.5.1 Procedures
6.5.2 Example
6.6 f90_stat
6.6.1 Parameters
6.6.2 Example
6.7 f90_unix_*
6.8 ieee_*, iso_c_binding, iso_fortran_env
7 Modern Fortran API to Posix
7.1 Posix Module Overview
7.2 f90_unix_dir
7.2.1 Parameters
7.2.2 Procedures
7.3 f90_unix_dirent
7.3.1 Procedures
7.4 f90_unix_env
7.4.1 Parameters
7.4.2 Types
7.4.3 Procedures
7.5 f90_unix_errno
7.5.1 Error Handling
7.5.2 Parameters
7.6 f90_unix_file
7.6.1 Parameters
7.6.2 Types
7.6.3 Procedures
7.7 f90_unix_io
7.7.1 Procedures
7.8 f90_unix_proc
7.8.1 Parameters
7.8.2 Procedures
8 Standard Fortran 95
8.1 Fortran 95 Program Structure
8.2 Fortran 95 Expressions
8.3 Fortran 95 Statements
8.4 Fortran 95 Intrinsic Procedures
9 Fortran 2003 Extensions
9.1 Fortran 2003 Overview
9.2 Object-oriented programming
9.2.1 Type Extension
9.2.1.1 Extending Types [5.0]
9.2.1.2 Polymorphic Variables [5.0]
9.2.1.3 Type Selection [5.0]
9.2.1.4 Unlimited polymorphism [5.2]
9.2.1.5 Ad hoc type comparison [5.3]
9.2.2 Typed allocation [5.1]
9.2.3 Sourced allocation (cloning) [5.1]
9.2.4 Type-bound procedures [5.1]
9.2.4.1 The type-bound procedure part
9.2.4.2 Specific type-bound procedures
9.2.4.3 Generic type-bound procedures
9.2.5 Abstract derived types [5.1]
9.2.6 Object-bound procedures [5.2]
9.3 ALLOCATABLE extensions
9.3.1 Allocatable Dummy Arrays [4.x]
9.3.2 Allocatable Function Results [4.x]
9.3.3 Allocatable Structure Components [4.x]
9.3.4 Allocatable Component Example
9.3.5 The MOVE_ALLOC intrinsic subroutine [5.2]
9.3.6 Allocatable scalars [5.2]
9.3.7 Automatic reallocation [5.2]
9.4 Other data-oriented enhancements
9.4.1 Parameterised derived types [6.0 for kind type parameters, 6.1 for length]
9.4.1.1 Basic Syntax and Semantics
9.4.1.2 More Semantics
9.4.1.3 Assumed type parameters
9.4.1.4 Deferred type parameters
9.4.2 Finalisation [5.3]
9.4.3 The PROTECTED attribute [5.0]
9.4.3.1 Syntax
9.4.3.2 Semantics
9.4.3.3 Example
9.4.4 Pointer enhancements
9.4.4.1 INTENT for pointers [5.1]
9.4.4.2 Pointer bounds specification [5.2]
9.4.4.3 Rank-remapping Pointer Assignment [5.0]
9.4.5 Individual component accessibility [5.1]
9.4.6 Public entities of private type [5.1]
9.5 C interoperability [mostly 5.1]
9.5.1 The ISO_C_BINDING module
9.5.1.1 The kind parameters
9.5.1.2 Using
C_PTR
and
C_FUNPTR
9.5.2 BIND(C) types
9.5.3 BIND(C) variables
9.5.4 BIND(C) procedures
9.5.5 Enumerations
9.6 IEEE arithmetic support [4.x except as otherwise noted]
9.6.1 Introduction
9.6.2 Exception flags, modes and information flow
9.6.3 Procedures in the modules
9.6.4 The IEEE_FEATURES module
9.6.5 IEEE_EXCEPTIONS
9.6.5.1 Types and constants
9.6.5.2 Procedures
9.6.6 IEEE_ARITHMETIC module
9.6.6.1 IEEE datatype selection
9.6.6.2 Enquiry functions
9.6.6.3 Rounding mode
9.6.6.4 Underflow mode
9.6.6.5 Number Classification
9.6.6.6 Test functions
9.6.6.7 Arithmetic functions
9.7 Input/output Features
9.7.1 Stream input/output [5.1]
9.7.2 The BLANK= and PAD= specifiers [5.1]
9.7.3 Decimal Comma [5.1]
9.7.4 The DELIM= specifier [5.1]
9.7.5 The ENCODING= specifier [5.1]
9.7.6 The IOMSG= specifier [5.1]
9.7.7 The IOSTAT= specifier [5.1]
9.7.8 The SIGN= specifier [5.1]
9.7.9 Intrinsic functions for testing IOSTAT= values [5.1]
9.7.10 Input/output of IEEE infinities and NaNs [5.1]
9.7.11 Output of floating-point zero [5.1]
9.7.12 NAMELIST and internal files [5.1]
9.7.13 Variables permitted in NAMELIST
9.7.14 Recursive input/output [5.2]
9.7.15 Asynchronous input/output
9.7.15.1 Basic syntax [5.1]
9.7.15.2 Basic Example
9.7.15.3 The
ASYNCHRONOUS
attribute [5.2]
9.7.15.4 The
WAIT
statement [5.2]
9.7.15.5 Execution Semantics
9.7.16 Scale factor followed by repeat count [5.1]
9.7.17 FLUSH statement [5.2]
9.7.18 Defined input/output [6.2]
9.8 Miscellaneous Fortran 2003 Features
9.8.1 Abstract interfaces and the PROCEDURE statement [5.1]
9.8.2 Named procedure pointers [5.2]
9.8.3 Intrinsic modules [4.x]
9.8.4 Renaming user-defined operators on the USE statement [5.2]
9.8.5 The ISO_FORTRAN_ENV module [5.1]
9.8.6 The IMPORT statement [5.1]
9.8.7 Length of names and statements
9.8.8 Array constructor syntax enhancements
9.8.9 Structure constructor syntax enhancements [5.3]
9.8.10 Deferred character length [5.2]
9.8.11 The ERRMSG= specifier [5.1]
9.8.12 Intrinsic functions in constant expressions [5.2 partial; 5.3 complete]
9.8.13 Specification functions can be recursive [6.2]
9.8.14 Access to the command line [5.1]
9.8.15 Access to environment variables [5.1]
9.8.16 Character kind selection [5.1]
9.8.17 Argument passing relaxation [5.1]
9.8.18 The MAXLOC and MINLOC intrinsic functions [5.1]
9.8.19 The VALUE attribute [4.x]
9.8.19.1 Syntax
9.8.19.2 Semantics
9.8.19.3 Example
9.8.20 The VOLATILE attribute [5.0]
9.8.21 Enhanced complex constants [5.2]
9.8.22 The
ASSOCIATE
construct [5.2]
9.8.23 Binary, octal and hexadecimal constants [5.2]
9.8.24 Character sets [5.1; 5.3]
9.8.25 Intrinsic function changes for 64-bit machines [5.2]
9.8.26 Miscellaneous intrinsic procedure changes [5.2]
10 Fortran 2008 Extensions
10.1 Fortran 2008 Overview
10.2 SPMD programming with coarrays [6.2]
10.2.1 Overview
10.2.2 Images
10.2.3 Coarrays
10.2.4 Declaring coarrays
10.2.5 Accessing coarrays on other images
10.2.6 Segments and synchronisation
10.2.7 Allocating and deallocating coarrays
10.2.8 Critical constructs
10.2.9 Lock variables
10.2.10 Atomic coarray accessing
10.2.11 Normal termination of execution
10.2.12 Error termination
10.2.13 Fault tolerance
10.2.14 Detailed syntax of coarray features
10.2.15 Intrinsic procedures and coarrays
10.3 Data declaration [mostly 6.0]
10.4 Data usage and computation [mostly 5.3]
10.5 Execution control [mostly 6.0]
10.6 Intrinsic procedures and modules
10.6.1 Additional mathematical intrinsic functions [mostly 5.3.1]
10.6.2 Additional intrinsic functions for bit manipulation [mostly 5.3]
10.6.3 Other new intrinsic procedures [mostly 5.3.1]
10.6.4 Changes to existing intrinsic procedures [mostly 5.3.1]
10.6.5
ISO_C_BINDING
additions [6.2]
10.6.6
ISO_FORTRAN_ENV
additions
10.7 Input/output extensions [mostly 5.3]
10.8 Programs and procedures [mostly 5.3]
11 Appendices
11.1 Mixing Fortran and C
11.1.1 Naming Conventions
11.1.2 Initialisation and Termination
11.1.3 Calling Conventions
11.1.4 Data Types
11.1.4.1 Pointers
11.1.4.2 Derived types
11.1.4.3 Supporting types
11.1.5 SUBROUTINE return types
11.1.5.1 SUBROUTINEs with label arguments
11.1.5.2 SUBROUTINEs with no label arguments
11.1.6 FUNCTION return types
11.1.6.1 Scalar
11.1.6.2 Scalar
POINTER
functions
11.1.6.3 Array non-
POINTER
functions
11.1.6.4 Array
POINTER
functions
11.1.7 Argument types
11.1.7.1
CHARACTER
type
11.1.7.2 non-
POINTER
non-
ALLOCATABLE
Scalar
11.1.7.3
POINTER
and
ALLOCATABLE
Scalar
11.1.7.4 non-
POINTER
Array
11.1.7.5
POINTER
Array
11.1.7.6 Procedures
11.1.7.7
OPTIONAL
arguments
11.2 ASCII Collating Sequence
11.2.1 Printing Characters
11.2.2 Non-printing Characters
12 Detailed Contents