1 -
AS/NZS 1486:1993 INFORMATION TECHNOLOGY - PROGRAMMING LANGUAGES - FORTRAN 90 4 -
PREFACE 5 -
CONTENTS 15 -
Introduction 15 -
Overview 20 -
Section 1 : Overview 20 -
1.1 Scope 20 -
1.2 Processor 20 -
1.3 Inclusions and exclusions 20 -
1.3.1 Inclusions 20 -
1.3.2 Exclusions 21 -
1.4 Conformance 22 -
1.4.1 FORTRAN 77 compatibility 22 -
1.5 Notation used in this International Standard 22 -
1.5.1 Syntax rules 23 -
1.5.2 Assumed syntax rules 24 -
1.5.3 Syntax conventions and characteristics 24 -
1.5.4 Text conventions 24 -
1.6 Deleted and obsolescent features 24 -
1.6.1 Nature of deleted features 24 -
1.6.2 Nature of obsolescent features 25 -
1.7 Modules 25 -
1.8 Normative references 26 -
Section 2 : Fortran terms and concepts 26 -
2.1 High level syntax 28 -
2.2 Program unit concepts 29 -
2.2.1 Executable program 29 -
2.2.2 Main program 29 -
2.2.3 Procedure 29 -
2.2.4 Module 30 -
2.3 Execution concepts 30 -
2.3.1 Executable/nonexecutable statements 30 -
2.3.2 Statement order 31 -
2.3.3 The END statement 31 -
2.3.4 Execution sequence 32 -
2.4 Data concepts 32 -
2.4.1 Data type 32 -
2.4.2 Data value 32 -
2.4.3 Data entity 33 -
2.4.4 Scalar 34 -
2.4.5 Array 34 -
2.4.6 Pointer 34 -
2.4.7 Storage 34 -
2.5 Fundamental terms 34 -
2.5.1 Name and designator 35 -
2.5.2 Keyword 35 -
2.5.3 Declaration 35 -
2.5.4 Definition 35 -
2.5.5 Reference 35 -
2.5.6 Association 35 -
2.5.7 Intrinsic 35 -
2.5.8 Operator 36 -
2.5.9 Sequence 37 -
Section 3 : Characters, lexical tokens, and source form 37 -
3.1 Processor character set 37 -
3.1.1 Letters 37 -
3.1.2 Digits 37 -
3.1.3 Underscore 38 -
3.1.4 Special characters 38 -
3.1.5 Other characters 38 -
3.2 Low-level syntax 38 -
3.2.1 Keywords 38 -
3.2.2 Names 39 -
3.2.3 Constants 39 -
3.2.4 Operators 40 -
3.2.5 Statement labels 40 -
3.2.6 Delimiters 40 -
3.3 Source form 41 -
3.3.1 Free source form 42 -
3.3.2 Fixed source form 43 -
3.4 Including source text 44 -
Section 4 : Intrinsic and derived data types 44 -
4.1 The concept of data type 44 -
4.1.1 Set of values 44 -
4.1.2 Constants 45 -
4.1.3 Operations 45 -
4.2 Relationship of types and values to objects 45 -
4.3 Intrinsic data types 45 -
4.3.1 Numeric types 49 -
4.3.2 Nonnumeric types 51 -
4.4 Derived types 51 -
4.4.1 Derived-type definition 54 -
4.4.2 Determination of derived types 55 -
4.4.3 Derived-type values 56 -
4.4.4 Construction of derived-type values 56 -
4.4.5 Derived-type operations and assignment 56 -
4.5 Construction of array values 58 -
Section 5 : Data object declarations and specifications 58 -
5.1 Type declaration statements 60 -
5.1.1 Type specifiers 62 -
5.1.2 Attributes 67 -
5.2 Attribute specification statements 67 -
5.2.1 INTENT statement 68 -
5.2.2 OPTIONAL statement 68 -
5.2.3 Accessibility statements 69 -
5.2.4 SAVE statement 69 -
5.2.5 DIMENSION statement 69 -
5.2.6 ALLOCATABLE statement 70 -
5.2.7 POINTER statement 70 -
5.2.8 TARGET statement 70 -
5.2.9 DATA statement 72 -
5.2.10 PARAMETER statement 73 -
5.3 IMPLICIT statement 75 -
5.4 NAMELIST statement 75 -
5.5 Storage association of data objects 75 -
5.5.1 EQUIVALENCE statement 77 -
5.5.2 COMMON statement 80 -
Section 6 : Use of data objects 81 -
6.1 Scalars 81 -
6.1.1 Substrings 81 -
6.1.2 Structure components 82 -
6.2 Arrays 82 -
6.2.1 Whole arrays 82 -
6.2.2 Array elements and array sections 86 -
6.3 Dynamic association 86 -
6.3.1 ALLOCATE statement 87 -
6.3.2 NULLIFY statement 87 -
6.3.3 DEALLOCATE statement 89 -
Section 7 : Expressions and assignment 89 -
7.1 Expressions 89 -
7.1.1 Form of an expression 93 -
7.1.2 Intrinsic operations 94 -
7.1.3 Defined operations 94 -
7.1.4 Data type, type parameters, and shape of an expression 96 -
7.1.5 Conformability rules for intrinsic operations 96 -
7.1.6 Scalar and array expressions 98 -
7.1.7 Evaluation of operations 102 -
7.2 Interpretation of intrinsic operations 102 -
7.2.1 Numeric intrinsic operations 103 -
7.2.2 Character intrinsic operation 104 -
7.2.3 Relational intrinsic operations 105 -
7.2.4 Logical intrinsic operations 105 -
7.3 Interpretation of defined operations 105 -
7.3.1 Unary defined operation 106 -
7.3.2 Binary defined operation 106 -
7.4 Precedence of operators 108 -
7.5 Assignment 108 -
7.5.1 Assignment statement 111 -
7.5.2 Pointer assignment 111 -
7.5.3 Masked array assignment-WHERE 114 -
Section 8 : Execution control 114 -
8.1 Executable constructs containing blocks 114 -
8.1.1 Rules governing blocks 115 -
8.1.2 IF construct 116 -
8.1.3 CASE construct 119 -
8.1.4 DO construct 126 -
8.2 Branching 126 -
8.2.1 Statement labels 126 -
8.2.2 GO TO statement 126 -
8.2.3 Computed GO TO statement 126 -
8.2.4 ASSIGN and assigned GO TO statement 127 -
8.2.5 Arithmetic IF statement 127 -
8.3 CONTINUE statement 127 -
8.4 STOP statement 127 -
8.5 PAUSE statement 128 -
Section 9 : Input/output statements 128 -
9.1 Records 128 -
9.1.1 Formatted record 128 -
9.1.2 Unformatted record 129 -
9.1.3 Endfile record 129 -
9.2 Files 129 -
9.2.1 External files 131 -
9.2.2 Internal files 132 -
9.3 File connection 133 -
9.3.1 Unit existence 133 -
9.3.2 Connection of a file to a unit 134 -
9.3.3 Preconnection 134 -
9.3.4 The OPEN statement 137 -
9.3.5 The CLOSE statement 138 -
9.4 Data transfer statements 138 -
9.4.1 Control information list 142 -
9.4.2 Data transfer input/output list 143 -
9.4.3 Error, end-of-record, and end-of-file conditions 144 -
9.4.4 Execution of a data transfer input/output statement 147 -
9.4.5 Printing of formatted records 147 -
9.4.6 Termination of data transfer statements 147 -
9.5 File positioning statements 148 -
9.5.1 BACKSPACE statement 148 -
9.5.2 ENDFlLE statement 148 -
9.5.3 REWIND statement 149 -
9.6 File inquiry 149 -
9.6.1 Inquiry specifiers 153 -
9.6.2 Restrictions on inquiry specifiers 153 -
9.6.3 Inquire by output list 153 -
9.7 Restrictions on function references and list items 153 -
9.8 Restriction on input/output statements 154 -
Section 10 : Input/output editing 154 -
10.1 Explicit format specification methods 154 -
10.1.1 FORMAT statement 154 -
10.1.2 Character format specification 155 -
10.2 Form of a format item list 155 -
10.2.1 Edit descriptors 156 -
10.2.2 Fields 156 -
10.3 Interaction between input/output list and format 157 -
10.4 Positioning by format control 158 -
10.5 Data edit descriptors 158 -
10.5.1 Numeric editing 162 -
10.5.2 Logical editing 163 -
10.5.3 Character editing 163 -
10.5.4 Generalized editing 164 -
10.6 Control edit descriptors 164 -
10.6.1 Position editing 165 -
10.6.2 Slash editing 165 -
10.6.3 Colon editing 165 -
10.6.4 S, SP, and SS editing 166 -
10.6.5 P editing 166 -
10.6.6 BN and BZ editing 166 -
10.7 Character string edit descriptors 166 -
10.7.1 Character constant edit descriptor 167 -
10.7.2 H editing 167 -
10.8 List-directed formatting 167 -
10.8.1 List-directed input 169 -
10.8.2 List-directed output 170 -
10.9 Namelist formatting 170 -
10.9.1 Namelist input 173 -
10.9.2 Namelist output 175 -
Section 11 : Program units 175 -
11.1 Mainprogram 175 -
11.1.1 Main program specifications 175 -
11.1.2 Main program executable part 176 -
11.1.3 Main program internal procedures 176 -
11.2 External subprograms 176 -
11.3 Modules 176 -
11.3.1 Module reference 177 -
11.3.2 The USE statement and use association 178 -
11.3.3 Examples of the use of modules 180 -
11.4 Block data program units 182 -
Section 12 : Procedures 182 -
12.1 Procedure classifications 182 -
12.1.1 Procedure classification by reference 182 -
12.1.2 Procedure classification by means of definition 184 -
12.2 Characteristics of procedures 184 -
12.2.1 Characteristics of dummy arguments 185 -
12.2.2 Characteristics of function results 185 -
12.3 Procedure interface 185 -
12.3.1 Implicit and explicit interfaces 186 -
12.3.2 Specification of the procedure interface 190 -
12.4 Procedure reference 190 -
12.4.1 Actual argument list 193 -
12.4.2 Function reference 193 -
12.4.3 Elemental intrinsic function reference 193 -
12.4.4 Subroutine reference 194 -
12.4.5 Elemental intrinsic subroutine reference 194 -
12.5 Procedure definition 194 -
12.5.1 Intrinsic procedure definition 194 -
12.5.2 Procedures defined by subprograms 200 -
12.5.3 Definition of procedures by means other than Fortran 201 -
12.5.4 Statement function 202 -
Section 13 : Intrinsic procedures 202 -
13.1 Intrinsic functions 202 -
13.2 Elemental intrinsic procedures 202 -
13.3 Positional arguments or argument keywords 203 -
13.4 Argument presence inquiry function 203 -
13.5 Numeric, mathematical, character, kind, logical, and bit procedures 203 -
13.5.1 Numeric functions 203 -
13.5.2 Mathematical functions 203 -
13.5.3 Character functions 203 -
13.5.4 Character inquiry function 203 -
13.5.5 Kind functions 203 -
13.5.6 Logical function 203 -
13.5.7 Bit manipulation and inquiry procedures 204 -
13.6 Transfer function 204 -
13.7 Numeric manipulation and inquiry functions 204 -
13.7.1 Models for integer and real data 205 -
13.7.2 Numeric inquiry functions 205 -
13.7.3 Floating point manipulation functions 205 -
13.8 Array intrinsic functions 205 -
13.8.1 The shape of array arguments 205 -
13.8.2 Mask arguments 205 -
13.8.3 Vector and matrix multiplication functions 206 -
13.8.4 Array reduction functions 206 -
13.8.5 Array inquiry functions 206 -
13.8.6 Array construction functions 206 -
13.8.7 Array reshape function 206 -
13.8.8 Array manipulation functions 206 -
13.8.9 Array location functions 206 -
13.8.10 Pointer association status inquiry functions 206 -
13.9 Intrinsic subroutines 207 -
13.9.1 Date and time subroutines 207 -
13.9.2 Pseudorandom numbers 207 -
13.9.3 Bit copy subroutine 207 -
13.10 Generic intrinsic functions 207 -
13.10.1 Argument presence inquiry function 207 -
13.10.2 Numeric functions 208 -
13.10.3 Mathematical functions 208 -
13.10.4 Character functions 208 -
13.10.5 Character inquiry function 209 -
13.10.6 Kind functions 209 -
13.10.7 Logical function 209 -
13.10.8 Numeric inquiry functions 209 -
13.10.9 Bit inquiry function 209 -
13.10.10 Bit manipulation functions 209 -
13.10.11 Transfer function 209 -
13.10.12 Floating.point manipulation functions 210 -
13.10.13 Vector and matrix multiply functions 210 -
13.10.14 Array reduction functions 210 -
13.10.15 Array inquiry functions 210 -
13.10.16 Array construction functions 210 -
13.10.17 Array reshape function 211 -
13.10.18 Array manipulation functions 211 -
13.10.19 Array location functions 211 -
13.10.20 Pointer association status inquiry function 211 -
13.11 Intrinsic subroutines 211 -
13.12 Specific names for intrinsic functions 213 -
13.13 Specifications of the intrinsic procedures 213 -
13.13.1 ABS (A) 214 -
13.13.2 ACHAR (I) 214 -
13.13.3 ACOS (X) 214 -
13.13.4 ADJUSTL (STRING) 214 -
13.13.5 ADJUSTR (STRING) 215 -
13.13.6 AIMAG (Z) 215 -
13.13.7 AINT (A, KIND) 215 -
13.13.8 ALL (MASK, DIM) 216 -
13.13.9 ALLOCATED (ARRAY) 216 -
13.13.10 ANINT (A, KIND) 216 -
13.13.11 ANY (MASK, DIM) 217 -
13.13.12 ASIN (X) 217 -
13.13.13 ASSOCIATED (POINTER, TARGET) 218 -
13.13.14 ATAN (X) 218 -
13.13.15 ATAN2 (Y, X) 219 -
13.13.16 BIT_SIZE (I) 219 -
13.13.17 BTEST (I, POS) 219 -
13.13.18 CEILING (A) 219 -
13.13.19 CHAR (I, KIND) 220 -
13.13.20 CMPLX (X, Y, KIND) 220 -
13.13.21 CONJG (Z) 220 -
13.13.22 COS (X) 221 -
13.13.23 COSH (X) 221 -
13.13.24 COUNT (MASK, DIM) 222 -
13.13.25 CSHIFT (ARRAY, SHIFT, DIM) 222 -
13.13.26 DATE_AND_TIME (DATE, TIME, ZONE, VALUES) 224 -
13.13.27 DBLE (A) 224 -
13.13.28 DIGITS (X) 224 -
13.13.29 DIM (X, Y) 224 -
13.13.30 DOT_PRODUCT (VECTOR_A, VECTOR_B) 225 -
13.13.31 DPROD (X, Y) 225 -
13.13.32 EOSHIFT (ARRAY, SHIFT, BOUNDARY, DIM) 226 -
13.13.33 EPSILON (X) 227 -
13.13.34 EXP (X) 227 -
13.13.35 EXPONENT (X) 227 -
13.13.36 FLOOR (A) 227 -
13.13.37 FRACTlON (X) 228 -
13.13.38 HUGE (X) 228 -
13.13.39 IACHAR (C) 228 -
13.13.40 IAND (I, J) 229 -
13.13.41 IBCLR (I, POS) 229 -
13.13.42 IBITS (1, POS, LEN) 229 -
13.13.43 IBSET (I, POS) 230 -
13.13.44 ICHAR (C) 230 -
13.13.45 IEOR (I, J) 230 -
13.13.46 INDEX (STRING, SUBSTRING, BACK) 231 -
13.13.47 INT (A, KIND) 231 -
13.13.48 IOR (I, J) 232 -
13.13.49 ISHFT (I, SHIFT) 232 -
13.13.50 ISHFTC (I, SHIFT, SIZE) 233 -
13.13.51 KIND (X) 233 -
13.13.52 LBOUND (ARRAY, DIM) 233 -
13.13.53 LEN (STRING) 234 -
13.13.54 LEN_TRIM (STRING) 234 -
13.13.55 LGE (STRING_A, STRlNG_B) 234 -
13.13.56 LGT (STRING_A STRING_B) 235 -
13.13.57 LLE (STRING_A, STRING_B) 235 -
13.13.58 LLT (STRING_A, STRlNG_B) 235 -
13.13.59 LOG (X) 236 -
13.13.60 LOG10 (X) 236 -
13.13.61 LOGICAL (L, KIND) 236 -
13.13.62 MATMUL (MATRlX_A, MATRlX_B) 237 -
13.13.63 MAX (A1, A2, A3, ...) 237 -
13.13.64 MAXEXPONENT (X) 238 -
13.13.65 MAXLOC (ARRAY, MASK) 238 -
13.13.66 MAXVAL (ARRAY, DIM, MASK) 239 -
13.13.67 MERGE (TSOURCE, FSOURCE, MASK) 240 -
13.13.68 MIN (A1, A2, A3, ...) 240 -
13.13.69 MINEXPONENT (X) 240 -
13.13.70 MINLOC (ARRAY, MASK) 241 -
13.13.71 MINVAL (ARRAY, DIM, MASK) 242 -
13.13.72 MOD (A, P) 242 -
13.13.73 MODULO (A, P) 243 -
13.13.74 MVBITS (FROM, FROMPOS, LEN, TO, TOPOS) 243 -
13.13.75 NEAREST (X, S) 243 -
13.13.76 NINT (A, KIND) 244 -
13.13.77 NOT (I) 244 -
13.13.78 PACK (ARRAY, MASK, VECTOR) 245 -
13.13.79 PRECISION (X) 245 -
13.13.80 PRESENT (A) 245 -
13.13.81 PRODUCT (ARRAY, DIM, MASK) 246 -
13.13.82 RADIX (X) 246 -
13.13.83 RANDOM_NUMBER (HARVEST) 246 -
13.13.84 RANDOM_SEED (SIZE, PUT, GET) 247 -
13.13.85 RANGE (X) 247 -
13.13.86 REAL (A, KIND) 248 -
13.13.87 REPEAT (STRING, NCOPIES) 248 -
13.13.88 RESHAPE (SOURCE, SHAPE, PAD, ORDER) 249 -
13.13.89 RRSPACING (X) 249 -
13.13.90 SCALE (X, I) 249 -
13.13.91 SCAN (STRING, SET, BACK) 250 -
13.13.92 SELECTED_INT_KIND (R) 250 -
13.13.93 SELECTED_REAL_KIND (P, R) 251 -
13.13.94 SET_EXPONENT (X, I) 251 -
13.13.95 SHAPE (SOURCE) 251 -
13.13.96 SIGN (A, B) 252 -
13.13.97 SIN (X) 252 -
13.13.98 SINH (X) 252 -
13.13.99 SIZE (ARRAY, DIM) 253 -
13.13.100 SPACING (X) 253 -
13.13.101 SPREAD (SOURCE, DIM, NCOPIES) 253 -
13.13.102 SQRT (X) 254 -
13.13.103 SUM (ARRAY, DIM, MASK) 254 -
13.13.104 SYSTEM_CLOCK (COUNT, COUNT_RATE, COUNT_MAX) 255 -
13.13.105 TAN (X) 255 -
13.13.106 TANH (X) 255 -
13.13.107 TINY(X) 256 -
13.13.108 TRANSFER (SOURCE, MOLD, SIZE) 257 -
13.13.109 TRANSPOSE (MATRIX) 257 -
13.13.110 TRIM (STRING) 257 -
13.13.111 UBOUND (ARRAY, DIM) 258 -
13.13.112 UNPACK (VECTOR, MASK, FIELD) 258 -
13.13.113 VERIFY (STRING, SET, BACK) 260 -
Section 14 : Scope, association, and definition 260 -
14.1 Scope of names 260 -
14.1.1 Global entities 260 -
14.1.2 Local entities 264 -
14.1.3 Statement entities 264 -
14.2 Scope of labels 264 -
14.3 Scope of external input/output units 264 -
14.4 Scope of operators 264 -
14.5 Scope of the assignment symbol 264 -
14.6 Association 265 -
14.6.1 Name association 265 -
14.6.2 Pointer association 266 -
14.6.3 Storage association 268 -
14.7 Definition and undefinition of variables 268 -
14.7.1 Definition of objects and subobjects 268 -
14.7.2 Variables that are always defined 268 -
14.7.3 Variables that are initially defined 269 -
14.7.4 Variables that are initially undefined 269 -
14.7.5 Events that cause variables to become defined 270 -
14.7.6 Events that cause variables to become undefined 271 -
14.8 Allocation status 273 -
Annex A - Glossary of technical terms 281 -
Annex B - Decremental features 281 -
B.1 Deleted features 281 -
B.2 Obsolescent features 281 -
B.2.1 Alternate return 282 -
B.2.2 PAUSE statement 282 -
B.2.3 ASSIGN and assigned GO TO statements 282 -
B.2.4 Assigned FORMAT specifiers 282 -
B.2.5 H editing 283 -
Annex C - Section notes 283 -
C.1 Section 1 notes 283 -
C.1.1 Conformance (1.4) 283 -
C.2 Section 2 notes 283 -
C.2.1 Keywords 283 -
C.3 Section 3 notes 283 -
C.3.1 Representable characters (3.1.5) 283 -
C.3.2 Comment lines (3.3.1.1, 3.3.2.1) 284 -
C.3.3 Statement labels (3.2.5) 284 -
C.3.4 Source form (3.3) 284 -
C.4 Section 4 notes 284 -
C.4.1 Zero (4.3.1) 284 -
C.4.2 Characters (4.2) 285 -
C.4.3 Intrinsic and derived data types (4.3, 4.4) 285 -
C.4.4 Selection of the approximation methods 286 -
C.4.5 Storage of derived types (4.4.1) 286 -
C.4.6 Pointers 287 -
C.5 Section 5 notes 287 -
C.5.1 Type declaration statements (5.1) 287 -
C.5.2 The POINTER attribute (5.1.2.7) 288 -
C.5.3 The TARGET attribute (5.1.2.8) 289 -
C.5.4 PARAMETER statements and IMPLICIT NONE (5.2.10, 5.3) 289 -
C.5.5 EQUIVALENCE statement extensions (5.5.1) 289 -
C.5.6 COMMON statement extensions (5.5.2) 289 -
C.6 Section 6 notes 289 -
C.6.1 Substrings (6.1.1) 289 -
C.6.2 Array element references (6.2.2) 289 -
C.6.3 Structure components (6.1.2) 290 -
C.6.4 Pointer allocation and association 291 -
C.7 Section 7 notes 291 -
C.7.1 Character assignment 291 -
C.7.2 Evaluation of function references 291 -
C.7.3 Pointers in expressions 292 -
C.7.4 Pointers on the left side of an assignment 292 -
C.8 Section 8 notes 292 -
C.8.1 Loop control 293 -
C.8.2 The CASE construct 293 -
C.8.3 Examples of invalid DO constructs 293 -
C.9 Section 9 notes 293 -
C.9.1 Input/output records (9.1) 294 -
C.9.2 Files (9.2) 294 -
C.9.2.1 File connection (9.3) 294 -
C.9.2.2 File existence (9.2.1.1) 294 -
C.9.2.3 File names (9.3.4.1) 294 -
C.9.2.4 File access (9.2.1.2) 295 -
C.9.2.5 Nonadvancing input/output (9.2.1.3.1) 295 -
C.9.3 OPEN statement (9.3.4) 297 -
C.9.4 Connection properties (9.3.2) 298 -
C.9.5 CLOSE statement (9.3.5) 299 -
C.9.6 INQUIRE statement (9.6) 299 -
C.9.7 Keyword specifiers 299 -
C.9.8 Format specifications (9.4.1.1) 299 -
C.9.9 Unformatted in put/output (9.4.4.4.1) 299 -
C.9.10 Input/output restrictions 299 -
C.9.11 Pointers in an input/output list 299 -
C.9.12 Derived type objects in an input/output list (9.4.2) 300 -
C.10 Section 10 notes 300 -
C.10.1 Character constant format specification (10.1.2, 10.7.1) 300 -
C.10.2 T edit descriptor (10.6.1.1) 300 -
C.10.3 Length of formatted records 300 -
C.10.4 Number of records (10.3, 10.4, 10.6.2) 301 -
C.10.5 List-directed input/output (10.8) 301 -
C.10.6 List-directed input (10.8.1) 301 -
C.10.7 Namelist list items for character input (10.9.1.3) 301 -
C.10.8 Namelist output records (10.9.2.2) 302 -
C.11 Section 11 notes 302 -
C.11.1 Main program and block data program unit (11.1, 11.4) 302 -
C.11.2 Dependent compilation (11.3) 304 -
C.11.3 Pointers in modules 304 -
C.11.4 Example of a module (11.3) 307 -
C.12 Section 12 notes 307 -
C.12.1 Examples of host association (12.1.2.2.1) 308 -
C.12.2 External procedures (12.3.2.2) 308 -
C.12.3 Procedures defined by means other than Fortran (12.5.3) 309 -
C.12.4 Procedure interfaces (12.3) 309 -
C.12.5 Argument association and evaluation (12.4.1) 310 -
C.12.6 Argument intent specification (12.4.1.1) 310 -
C.12.7 Dummy argument restrictions (12.5.2.9) 310 -
C.12.8 Pointers and targets as arguments 311 -
C.12.9 The ASSOCIATED function (13.13.13) 311 -
C.12.10 Internal procedure restrictions 312 -
C.12.11 The result variable (12.5.2.2) 312 -
C.13 Section 13 notes 312 -
C.13.1 Summary of features 314 -
C.13.2 Examples 318 -
C.13.3 FORmula TRANslation and array processing 319 -
C.13.4 Sum of squared residuals 319 -
C.13.5 Vector norms: infinity-norm and one-norm 319 -
C.13.6 Matrix norms: infinity-norm and one-norm 319 -
C.13.7 Logical queries 320 -
C.13.8 Parallel computations 320 -
C.13.9 Example of element-by-element computation 321 -
C.13.10 Bit manipulation and inquiry procedures 321 -
C.14 Section 14 notes 321 -
C.14.1 Storage association of zero-sized objects 322 -
Annex D - Syntax rules 322 -
D.1 Syntax rules and constraints 322 -
D.1.1 Overview 322 -
D.1.2 Fortran terms and concepts 325 -
D.1.3 Characters, lexical tokens, and source form 326 -
D.1.4 Intrinsic and derived data types 329 -
D.1.5 Data object declarations and specifications 334 -
D.1.6 Use of data objects 336 -
D.1.7 Expressions and assignment 339 -
D.1.8 Execution control 342 -
D.1.9 Input/output statements 345 -
D.1.10 Input/output editing 347 -
D.1.11 Program units 348 -
D.1.12 Procedures 350 -
D.1.13 Intrinsic procedures 351 -
D.1.14 Scope, association, and definition 351 -
D.2 Cross references 351 -
D.2.1 Nonterminal symbols that are defined 357 -
D.2.2 Nonterminal symbols that are not defined 358 -
D.2.3 Terminal symbols 363 -
Annex E - Permuted index for headings 382 -
Annex F - Index
Abstract
Specifies the form and establishes the interpretation of programs in the Fortran language and consists of the specification of the language. This Standard is identical with, and has been reproduced from, ISO/IEC 1539:1991.
RECONFIRMATION NOTICE Technical Committee IT-015 has reviewed the content of this publication and in accordance with Standards Australia procedures for reconfirmation, it has been determined that the publication is still valid and does not require change. Certain documents referenced in the publication may have been amended since the original date of publication. Users are advised to ensure that they are using the latest versions of such documents as appropriate, unless advised otherwise in this Reconfirmation Notice. Approved for reconfirmation in accordance with Standards Australia procedures for reconfirmation on 17 March 2014. The following are represented on Technical Committee IT-015: Australian Computer Society Australian Society for Technical Communication (NSW) Charles Sturt University Department of Defence (Australia) Griffith University La Trobe University National Association of Testing Authorities Australia National ICT Australia NSW Business Chamber Quantitative Enterprise Software Performance Systems Engineering Society of Australia University of Technology, Sydney
Scope
This International Standard specifies the form and establishes the interpretation of programs expressed in the Fortran language. The purpose of this International Standard is to promote portability, reliability, maintainability, and efficient execution of Fortran programs for use on a variety of computing systems.