Navigation:
Previous
Up
Next
13 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 Half precision floating-point
2.13 Random Number Algorithm
2.14 Automatic Garbage Collection
2.15 Memory Tracing
2.16 Undefined Variable Detection
2.17 Data Types
2.18 Modules
2.19 Runtime Environment Variables
2.20 Debugging
2.21 Producing a Call Graph
2.22 Dependency Analysis
2.23 Generating Interfaces
2.24 Source File Polishing
2.25 Enhanced Source File Polishing
2.26 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
ACCESS='APPEND'
specifier on
OPEN
statement
5.2.9 VAX FORTRAN
TYPE
statement
5.2.10 Auto-skipping
NAMELIST
input
5.2.11 Legacy Application Support
5.2.12 Mismatched Argument Lists
5.2.13 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, 7.0]
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 Fortran 2018 Extensions
11.1 Fortran 2018 Overview
11.2 Data declaration
11.3 Data usage and computation
11.4 Input/output
11.5 Execution control
11.6 Intrinsic procedures and modules
11.7 Program units and procedures
11.8 Advanced C interoperability
11.9 Updated IEEE arithmetic capabilities
11.10 Advanced coarray programming
12 Appendices
12.1 Mixing Fortran and C
12.1.1 Naming Conventions
12.1.2 Initialisation and Termination
12.1.3 Calling Conventions
12.1.4 Data Types
12.1.4.1 Pointers
12.1.4.2 Derived types
12.1.4.3 Supporting types
12.1.5 SUBROUTINE return types
12.1.5.1 SUBROUTINEs with label arguments
12.1.5.2 SUBROUTINEs with no label arguments
12.1.6 FUNCTION return types
12.1.6.1 Scalar
12.1.6.2 Scalar
POINTER
functions
12.1.6.3 Array non-
POINTER
functions
12.1.6.4 Array
POINTER
functions
12.1.7 Argument types
12.1.7.1
CHARACTER
type
12.1.7.2 non-
POINTER
non-
ALLOCATABLE
Scalar
12.1.7.3
POINTER
and
ALLOCATABLE
Scalar
12.1.7.4 non-
POINTER
Array
12.1.7.5
POINTER
Array
12.1.7.6 Procedures
12.1.7.7
OPTIONAL
arguments
12.2 ASCII Collating Sequence
12.2.1 Printing Characters
12.2.2 Non-printing Characters
13 Detailed Contents