BS ISO/IEC 1539-1:2018:2021 Edition
$215.11
Information technology. Programming languages. Fortran – Base language
Published By | Publication Date | Number of Pages |
BSI | 2021 | 650 |
PDF Catalog
PDF Pages | PDF Title |
---|---|
2 | undefined |
3 | 72320.pdf |
5 | Contents |
14 | Foreword |
15 | Introduction |
19 | 1 Scope |
20 | 2 Normative references |
21 | 3 Terms and definitions |
42 | 4 Notation, conformance, and compatibility 4.1 Notation, symbols and abbreviated terms 4.1.1 Syntax rules |
43 | 4.1.2 Constraints 4.1.3 Assumed syntax rules 4.1.4 Syntax conventions and characteristics |
44 | 4.1.5 Text conventions 4.2 Conformance |
45 | 4.3 Compatibility 4.3.1 Previous Fortran standards 4.3.2 New intrinsic procedures 4.3.3 Fortran 2008 compatibility |
46 | 4.3.4 Fortran 2003 compatibility 4.3.5 Fortran 95 compatibility |
47 | 4.3.6 Fortran 90 compatibility 4.3.7 FORTRAN 77 compatibility |
48 | 4.4 Deleted and obsolescent features 4.4.1 General 4.4.2 Nature of deleted features 4.4.3 Nature of obsolescent features |
49 | 5 Fortran concepts 5.1 High level syntax |
52 | 5.2 Program unit concepts 5.2.1 Program units and scoping units 5.2.2 Program 5.2.3 Procedure 5.2.4 Module |
53 | 5.2.5 Submodule 5.3 Execution concepts 5.3.1 Statement classification 5.3.2 Statement order |
54 | 5.3.3 The END statement 5.3.4 Program execution |
55 | 5.3.5 Execution sequence 5.3.6 Image execution states |
56 | 5.3.7 Termination of execution 5.4 Data concepts 5.4.1 Type |
57 | 5.4.2 Data value 5.4.3 Data entity |
58 | 5.4.4 Definition of objects and pointers |
59 | 5.4.5 Reference 5.4.6 Array 5.4.7 Coarray |
60 | 5.4.8 Established coarrays 5.4.9 Pointer 5.4.10 Allocatable variables 5.4.11 Storage |
61 | 5.5 Fundamental concepts 5.5.1 Names and designators 5.5.2 Statement keyword 5.5.3 Other keywords 5.5.4 Association 5.5.5 Intrinsic 5.5.6 Operator 5.5.7 Companion processors |
63 | 6 Lexical tokens and source form 6.1 Processor character set 6.1.1 Characters 6.1.2 Letters 6.1.3 Digits 6.1.4 Underscore 6.1.5 Special characters |
64 | 6.1.6 Other characters 6.2 Low-level syntax 6.2.1 Tokens 6.2.2 Names |
65 | 6.2.3 Constants 6.2.4 Operators |
66 | 6.2.5 Statement labels 6.2.6 Delimiters 6.3 Source form |
67 | 6.3.1 Program units, statements, and lines 6.3.2 Free source form |
68 | 6.3.3 Fixed source form |
69 | 6.4 Including source text |
71 | 7 Types 7.1 Characteristics of types 7.1.1 The concept of type 7.1.2 Type classification 7.1.3 Set of values 7.1.4 Constants 7.1.5 Operations 7.2 Type parameters |
72 | 7.3 Types, type specifiers, and values 7.3.1 Relationship of types and values to objects |
73 | 7.3.2 Type specifiers and type compatibility |
75 | 7.4 Intrinsic types 7.4.1 Classification and specification 7.4.2 Intrinsic operations on intrinsic types 7.4.3 Numeric intrinsic types |
79 | 7.4.4 Character type |
82 | 7.4.5 Logical type 7.5 Derived types 7.5.1 Derived type concepts |
83 | 7.5.2 Derived-type definition |
86 | 7.5.3 Derived-type parameters |
88 | 7.5.4 Components |
95 | 7.5.5 Type-bound procedures |
97 | 7.5.6 Final subroutines |
99 | 7.5.7 Type extension |
101 | 7.5.8 Derived-type values 7.5.9 Derived-type specifier |
102 | 7.5.10 Construction of derived-type values |
104 | 7.5.11 Derived-type operations and assignment 7.6 Enumerations and enumerators |
105 | 7.7 Binary, octal, and hexadecimal literal constants |
106 | 7.8 Construction of array values |
109 | 8 Attribute declarations and specifications 8.1 Attributes of procedures and data objects 8.2 Type declaration statement |
111 | 8.3 Automatic data objects 8.4 Initialization 8.5 Attributes 8.5.1 Attribute specification |
112 | 8.5.2 Accessibility attribute 8.5.3 ALLOCATABLE attribute 8.5.4 ASYNCHRONOUS attribute |
113 | 8.5.5 BIND attribute for data entities 8.5.6 CODIMENSION attribute |
115 | 8.5.7 CONTIGUOUS attribute |
116 | 8.5.8 DIMENSION attribute |
119 | 8.5.9 EXTERNAL attribute 8.5.10 INTENT attribute |
121 | 8.5.11 INTRINSIC attribute 8.5.12 OPTIONAL attribute |
122 | 8.5.13 PARAMETER attribute 8.5.14 POINTER attribute 8.5.15 PROTECTED attribute |
123 | 8.5.16 SAVE attribute |
124 | 8.5.17 TARGET attribute 8.5.18 VALUE attribute 8.5.19 VOLATILE attribute |
125 | 8.6 Attribute specification statements 8.6.1 Accessibility statement |
126 | 8.6.2 ALLOCATABLE statement 8.6.3 ASYNCHRONOUS statement 8.6.4 BIND statement 8.6.5 CODIMENSION statement |
127 | 8.6.6 CONTIGUOUS statement 8.6.7 DATA statement |
129 | 8.6.8 DIMENSION statement 8.6.9 INTENT statement |
130 | 8.6.10 OPTIONAL statement 8.6.11 PARAMETER statement 8.6.12 POINTER statement |
131 | 8.6.13 PROTECTED statement 8.6.14 SAVE statement 8.6.15 TARGET statement 8.6.16 VALUE statement 8.6.17 VOLATILE statement |
132 | 8.7 IMPLICIT statement |
134 | 8.8 IMPORT statement |
136 | 8.9 NAMELIST statement |
137 | 8.10 Storage association of data objects 8.10.1 EQUIVALENCE statement |
139 | 8.10.2 COMMON statement |
140 | 8.10.3 Restrictions on common and equivalence |
141 | 9 Use of data objects 9.1 Designator 9.2 Variable |
142 | 9.3 Constants 9.4 Scalars 9.4.1 Substrings 9.4.2 Structure components |
144 | 9.4.3 Coindexed named objects 9.4.4 Complex parts 9.4.5 Type parameter inquiry |
145 | 9.5 Arrays 9.5.1 Order of reference 9.5.2 Whole arrays 9.5.3 Array elements and array sections |
148 | 9.5.4 Simply contiguous array designators |
149 | 9.6 Image selectors |
150 | 9.7 Dynamic association 9.7.1 ALLOCATE statement |
154 | 9.7.2 NULLIFY statement 9.7.3 DEALLOCATE statement |
156 | 9.7.4 STAT= specifier |
157 | 9.7.5 ERRMSG= specifier |
158 | 10 Expressions and assignment 10.1 Expressions 10.1.1 Expression semantics 10.1.2 Form of an expression |
161 | 10.1.3 Precedence of operators |
163 | 10.1.4 Evaluation of operations |
164 | 10.1.5 Intrinsic operations |
171 | 10.1.6 Defined operations |
172 | 10.1.7 Evaluation of operands 10.1.8 Integrity of parentheses |
173 | 10.1.9 Type, type parameters, and shape of an expression |
174 | 10.1.10 Conformability rules for elemental operations 10.1.11 Specification expression |
176 | 10.1.12 Constant expression |
177 | 10.2 Assignment 10.2.1 Assignment statement |
182 | 10.2.2 Pointer assignment |
186 | 10.2.3 Masked array assignment ā WHERE |
188 | 10.2.4 FORALL |
191 | 11 Execution control 11.1 Executable constructs containing blocks 11.1.1 Blocks 11.1.2 Rules governing blocks |
192 | 11.1.3 ASSOCIATE construct |
193 | 11.1.4 BLOCK construct |
195 | 11.1.5 CHANGE TEAM construct |
197 | 11.1.6 CRITICAL construct |
198 | 11.1.7 DO construct |
205 | 11.1.8 IF construct and statement |
206 | 11.1.9 SELECT CASE construct |
209 | 11.1.10 SELECT RANK construct |
211 | 11.1.11 SELECT TYPE construct |
214 | 11.1.12 EXIT statement 11.2 Branching 11.2.1 Branch concepts 11.2.2 GO TO statement |
215 | 11.2.3 Computed GO TO statement 11.3 CONTINUE statement 11.4 STOP and ERROR STOP statements |
216 | 11.5 FAIL IMAGE statement 11.6 Image execution control 11.6.1 Image control statements |
217 | 11.6.2 Segments |
218 | 11.6.3 SYNC ALL statement |
219 | 11.6.4 SYNC IMAGES statement |
220 | 11.6.5 SYNC MEMORY statement |
221 | 11.6.6 SYNC TEAM statement |
222 | 11.6.7 EVENT POST statement 11.6.8 EVENT WAIT statement 11.6.9 FORM TEAM statement |
223 | 11.6.10 LOCK and UNLOCK statements |
225 | 11.6.11 STAT= and ERRMSG= specifiers in image control statements |
228 | 12 Input/output statements 12.1 Input/output concepts 12.2 Records 12.2.1 Definition of a record 12.2.2 Formatted record 12.2.3 Unformatted record |
229 | 12.2.4 Endfile record 12.3 External files 12.3.1 External file concepts 12.3.2 File existence |
230 | 12.3.3 File access |
232 | 12.3.4 File position |
233 | 12.3.5 File storage units |
234 | 12.4 Internal files 12.5 File connection 12.5.1 Referring to a file |
235 | 12.5.2 Connection modes |
236 | 12.5.3 Unit existence 12.5.4 Connection of a file to a unit |
237 | 12.5.5 Preconnection 12.5.6 OPEN statement |
241 | 12.5.7 CLOSE statement |
242 | 12.6 Data transfer statements 12.6.1 Form of input and output statements |
243 | 12.6.2 Control information list |
247 | 12.6.3 Data transfer input/output list |
249 | 12.6.4 Execution of a data transfer input/output statement |
260 | 12.6.5 Termination of data transfer statements 12.7 Waiting on pending data transfer 12.7.1 Wait operation |
261 | 12.7.2 WAIT statement 12.8 File positioning statements 12.8.1 Syntax |
262 | 12.8.2 BACKSPACE statement 12.8.3 ENDFILE statement |
263 | 12.8.4 REWIND statement 12.9 FLUSH statement |
264 | 12.10 File inquiry statement 12.10.1 Forms of the INQUIRE statement 12.10.2 Inquiry specifiers |
270 | 12.10.3 Inquire by output list |
271 | 12.11 Error, end-of-record, and end-of-file conditions 12.11.1 Occurrence of input/output conditions 12.11.2 Error conditions and the ERR= specifier 12.11.3 End-of-file condition and the END= specifier |
272 | 12.11.4 End-of-record condition and the EOR= specifier 12.11.5 IOSTAT= specifier |
273 | 12.11.6 IOMSG= specifier 12.12 Restrictions on input/output statements |
274 | 13 Input/output editing 13.1 Format specifications 13.2 Explicit format specification methods 13.2.1 FORMAT statement 13.2.2 Character format specification |
275 | 13.3 Form of a format item list 13.3.1 Syntax 13.3.2 Edit descriptors |
277 | 13.3.3 Fields 13.4 Interaction between input/output list and format |
278 | 13.5 Positioning by format control |
279 | 13.6 Decimal symbol 13.7 Data edit descriptors 13.7.1 Purpose of data edit descriptors 13.7.2 Numeric editing |
287 | 13.7.3 Logical editing 13.7.4 Character editing 13.7.5 Generalized editing |
289 | 13.7.6 User-defined derived-type editing 13.8 Control edit descriptors 13.8.1 Position edit descriptors |
290 | 13.8.2 Slash editing 13.8.3 Colon editing 13.8.4 SS, SP, and S editing |
291 | 13.8.5 P editing 13.8.6 BN and BZ editing 13.8.7 RU, RD, RZ, RN, RC, and RP editing |
292 | 13.8.8 DC and DP editing 13.9 Character string edit descriptors 13.10 List-directed formatting 13.10.1 Purpose of list-directed formatting 13.10.2 Values and value separators |
293 | 13.10.3 List-directed input |
295 | 13.10.4 List-directed output |
296 | 13.11 Namelist formatting 13.11.1 Purpose of namelist formatting 13.11.2 Name-value subsequences 13.11.3 Namelist input |
300 | 13.11.4 Namelist output |
301 | 14 Program units 14.1 Main program 14.2 Modules 14.2.1 Module syntax and semantics |
302 | 14.2.2 The USE statement and use association |
305 | 14.2.3 Submodules 14.3 Block data program units |
307 | 15 Procedures 15.1 Concepts 15.2 Procedure classifications 15.2.1 Procedure classification by reference 15.2.2 Procedure classification by means of definition |
308 | 15.3 Characteristics 15.3.1 Characteristics of procedures 15.3.2 Characteristics of dummy arguments 15.3.3 Characteristics of function results |
309 | 15.4 Procedure interface 15.4.1 Interface and abstract interface 15.4.2 Implicit and explicit interfaces 15.4.3 Specification of the procedure interface |
318 | 15.5 Procedure reference 15.5.1 Syntax of a procedure reference |
321 | 15.5.2 Actual arguments, dummy arguments, and argument association |
332 | 15.5.3 Function reference 15.5.4 Subroutine reference 15.5.5 Resolving named procedure references |
334 | 15.5.6 Resolving type-bound procedure references 15.6 Procedure definition |
335 | 15.6.1 Intrinsic procedure definition 15.6.2 Procedures defined by subprograms |
340 | 15.6.3 Definition and invocation of procedures by means other than Fortran |
341 | 15.6.4 Statement function 15.7 Pure procedures |
343 | 15.8 Elemental procedures 15.8.1 Elemental procedure declaration and interface |
344 | 15.8.2 Elemental function actual arguments and results 15.8.3 Elemental subroutine actual arguments |
345 | 16 Intrinsic procedures and modules 16.1 Classes of intrinsic procedures 16.2 Arguments to intrinsic procedures 16.2.1 General rules |
346 | 16.2.2 The shape of array arguments 16.2.3 Mask arguments 16.2.4 DIM arguments and reduction functions 16.3 Bit model 16.3.1 General |
347 | 16.3.2 Bit sequence comparisons 16.3.3 Bit sequences as arguments to INT and REAL 16.4 Numeric models |
348 | 16.5 Atomic subroutines |
349 | 16.6 Collective subroutines |
350 | 16.7 Standard generic intrinsic procedures |
356 | 16.8 Specific names for standard intrinsic functions |
357 | 16.9 Specifications of the standard intrinsic procedures 16.9.1 General |
444 | 16.10 Standard intrinsic modules 16.10.1 General 16.10.2 The ISO_FORTRAN_ENV intrinsic module |
451 | 17 Exceptions and IEEE arithmetic 17.1 Overview of IEEE arithmetic support |
452 | 17.2 Derived types, constants, and operators defined in the modules 17.3 The exceptions |
454 | 17.4 The rounding modes |
455 | 17.5 Underflow mode 17.6 Halting |
456 | 17.7 The floating-point modes and status 17.8 Exceptional values 17.9 IEEE arithmetic |
457 | 17.10 Summary of the procedures |
459 | 17.11 Specifications of the procedures 17.11.1 General |
484 | 17.12 Examples |
486 | 18 Interoperability with C 18.1 General 18.2 The ISO_C_BINDING intrinsic module 18.2.1 Summary of contents 18.2.2 Named constants and derived types in the module |
487 | 18.2.3 Procedures in the module |
492 | 18.3 Interoperability between Fortran and C entities 18.3.1 Interoperability of intrinsic types |
493 | 18.3.2 Interoperability with C pointer types 18.3.3 Interoperability of derived types and C structure types |
494 | 18.3.4 Interoperability of scalar variables |
495 | 18.3.5 Interoperability of array variables 18.3.6 Interoperability of procedures and procedure interfaces |
498 | 18.4 C descriptors 18.5 The source file ISO_Fortran_binding.h 18.5.1 Summary of contents 18.5.2 The CFI_dim_t structure type |
499 | 18.5.3 The CFI_cdesc_t structure type |
500 | 18.5.4 Macros and typedefs in ISO_Fortran_binding.h |
502 | 18.5.5 Functions declared in ISO_Fortran_binding.h |
510 | 18.6 Restrictions on C descriptors 18.7 Restrictions on formal parameters 18.8 Restrictions on lifetimes |
511 | 18.9 Interoperation with C global variables 18.9.1 General |
512 | 18.9.2 Binding labels for common blocks and variables 18.10 Interoperation with C functions 18.10.1 Definition and reference of interoperable procedures |
513 | 18.10.2 Binding labels for procedures 18.10.3 Exceptions and IEEE arithmetic procedures |
514 | 18.10.4 Asynchronous communication |
515 | 19 Scope, association, and definition 19.1 Scopes, identifiers, and entities 19.2 Global identifiers |
516 | 19.3 Local identifiers 19.3.1 Classes of local identifiers |
517 | 19.3.2 Local identifiers that are the same as common block names 19.3.3 Function results 19.3.4 Components, type parameters, and bindings 19.3.5 Argument keywords |
518 | 19.4 Statement and construct entities |
519 | 19.5 Association 19.5.1 Name association |
523 | 19.5.2 Pointer association |
526 | 19.5.3 Storage association |
528 | 19.5.4 Inheritance association 19.5.5 Establishing associations 19.6 Definition and undefinition of variables |
529 | 19.6.1 Definition of objects and subobjects 19.6.2 Variables that are always defined 19.6.3 Variables that are initially defined |
530 | 19.6.4 Variables that are initially undefined 19.6.5 Events that cause variables to become defined |
531 | 19.6.6 Events that cause variables to become undefined |
534 | 19.6.7 Variable definition context 19.6.8 Pointer association context |
536 | Annex A (informative) Processor dependencies A.1 Unspecified items A.2 Processor dependencies |
542 | Annex B (informative) Deleted and obsolescent features B.1 Deleted features from Fortran 90 B.2 Deleted features from Fortran 2008 |
543 | B.3 Obsolescent features B.3.1 General B.3.2 Alternate return |
544 | B.3.3 Computed GO TO statement B.3.4 Statement functions B.3.5 DATA statements among executables B.3.6 Assumed character length functions B.3.7 Fixed form source |
545 | B.3.8 CHARACTER* form of CHARACTER declaration B.3.9 ENTRY statements B.3.10 Label DO statement B.3.11 COMMON and EQUIVALENCE statements and the block data program unit B.3.12 Specific names for intrinsic functions B.3.13 FORALL construct and statement |
546 | Annex C (informative) Extended notes C.1 Fortran 2008 features not mentioned in its Introduction C.2 Clause 7 notes C.2.1 Selection of the approximation methods (7.4.3.2) |
547 | C.2.2 Type extension and component accessibility (7.5.2.2, 7.5.4) |
548 | C.2.3 Generic type-bound procedures (7.5.5) |
549 | C.2.4 Abstract types (7.5.7.1) C.2.5 Structure constructors and generic names (7.5.10) |
551 | C.2.6 Final subroutines (7.5.6, 7.5.6.2, 7.5.6.3, 7.5.6.4) |
553 | C.3 Clause 8 notes: The VOLATILE attribute (8.5.19) |
554 | C.4 Clause 9 notes C.4.1 Structure components (9.4.2) |
555 | C.4.2 Allocation with dynamic type (9.7.1) |
556 | C.5 Clause 10 notes C.5.1 Evaluation of function references (10.1.7) C.5.2 Pointers in expressions (10.1.9.2) C.5.3 Pointers in variable definition contexts (10.2.1.3, 19.6.7) C.6 Clause 11 notes C.6.1 The SELECT CASE construct (11.1.9) C.6.2 Loop control (11.1.7) C.6.3 Examples of DO constructs (11.1.7) |
558 | C.6.4 Examples of invalid DO constructs (11.1.7) |
559 | C.6.5 Simple example using events C.6.6 Example using three teams |
560 | C.6.7 Accessing coarrays in sibling teams |
561 | C.6.8 Example involving failed images |
563 | C.6.9 EVENT_QUERY example that tolerates image failure |
565 | C.7 Clause 12 notes C.7.1 External files (12.3) |
566 | C.7.2 Nonadvancing input/output (12.3.4.2) |
568 | C.7.3 OPEN statement (12.5.6) |
569 | C.7.4 Connection properties (12.5.4) |
570 | C.7.5 Asynchronous input/output (12.6.2.5) |
571 | C.8 Clause 13 notes C.8.1 Number of records (13.4, 13.5, 13.8.2) C.8.2 List-directed input (13.10.3) |
572 | C.9 Clause 14 notes C.9.1 Main program and block data program unit (14.1, 14.3) C.9.2 Dependent compilation (14.2) |
574 | C.9.3 Examples of the use of modules (14.2.1) |
580 | C.9.4 Modules with submodules (14.2.3) |
584 | C.10 Clause 15 notes C.10.1 Portability problems with external procedures (15.4.3.5) |
585 | C.10.2 Procedures defined by means other than Fortran (15.6.3) C.10.3 Abstract interfaces and procedure pointer components (15.4, 7.5) |
587 | C.10.4 Pointers and targets as arguments (15.5.2.4, 15.5.2.6, 15.5.2.7) |
588 | C.10.5 Polymorphic Argument Association (15.5.2.9) |
590 | C.10.6 Rules ensuring unambiguous generics (15.4.3.4.5) |
594 | C.11 Clause 16 notes C.11.1 Atomic memory consistency |
596 | C.11.2 EVENT_QUERY example |
598 | C.11.3 Collective subroutine examples C.12 Clause 18 notes |
599 | C.12.1 Runtime environments (18.1) C.12.2 Example of Fortran calling C (18.3) |
600 | C.12.3 Example of C calling Fortran (18.3) |
601 | C.12.4 Example of calling C functions with noninteroperable data (18.10) |
602 | C.12.5 Example of opaque communication between C and Fortran (18.3) |
603 | C.12.6 Using assumed type to interoperate with C |
606 | C.12.7 Using assumed-type variables in Fortran |
607 | C.12.8 Simplifying interfaces for arbitrary rank procedures C.12.9 Processing assumed-shape arrays in C |
609 | C.12.10 Creating a contiguous copy of an array |
610 | C.12.11 Changing the attributes of an array |
611 | C.12.12 Creating an array section in C using CFI_section |
613 | C.12.13 Use of CFI_setpointer |
614 | C.12.14 Mapping of MPI interfaces to Fortran |
616 | C.13 Clause 19 notes : Examples of host association (19.5.1.4) |
618 | Index |