|
|
1 | (8) |
|
|
1 | (1) |
|
1.2 Fortran's early history |
|
|
2 | (1) |
|
1.3 The drive for the Fortran 90 standard |
|
|
2 | (1) |
|
|
3 | (1) |
|
|
4 | (1) |
|
1.6 Extensions to Fortran 95 |
|
|
5 | (1) |
|
|
5 | (1) |
|
1.8 Extensions to Fortran 2003 |
|
|
6 | (1) |
|
|
6 | (1) |
|
1.10 Extensions to Fortran 2008 |
|
|
7 | (1) |
|
|
7 | (1) |
|
|
7 | (2) |
|
|
9 | (24) |
|
|
9 | (1) |
|
2.2 Fortran character set |
|
|
9 | (1) |
|
|
10 | (1) |
|
|
11 | (2) |
|
|
13 | (1) |
|
2.6 Literal constants of intrinsic type |
|
|
13 | (6) |
|
2.6.1 Integer literal constants |
|
|
14 | (1) |
|
2.6.2 Real literal constants |
|
|
15 | (1) |
|
2.6.3 Complex literal constants |
|
|
16 | (1) |
|
2.6.4 Character literal constants |
|
|
16 | (2) |
|
2.6.5 Logical literal constants |
|
|
18 | (1) |
|
2.6.6 Binary, octal, and hexadecimal constants |
|
|
19 | (1) |
|
|
19 | (1) |
|
2.8 Scalar variables of intrinsic type |
|
|
20 | (1) |
|
|
20 | (2) |
|
2.10 Arrays of intrinsic type |
|
|
22 | (4) |
|
2.10.1 Declaring entities of differing shapes |
|
|
25 | (1) |
|
2.10.2 Allocatable objects |
|
|
25 | (1) |
|
2.11 Character substrings |
|
|
26 | (1) |
|
|
27 | (1) |
|
2.13 Objects and subobjects |
|
|
28 | (1) |
|
|
29 | (4) |
|
3 Expressions and assignments |
|
|
33 | (22) |
|
|
33 | (1) |
|
3.2 Scalar numeric expressions |
|
|
34 | (3) |
|
3.3 Denned and undefined variables |
|
|
37 | (1) |
|
3.4 Scalar numeric assignment |
|
|
37 | (1) |
|
3.5 Scalar relational operators |
|
|
38 | (1) |
|
3.6 Scalar logical expressions and assignments |
|
|
39 | (1) |
|
3.7 Scalar character expressions and assignments |
|
|
40 | (2) |
|
3.7.1 ASCII character set |
|
|
41 | (1) |
|
3.7.2 ISO 10646 character set |
|
|
42 | (1) |
|
3.8 Structure constructors |
|
|
42 | (1) |
|
3.9 Scalar defined operators |
|
|
43 | (2) |
|
3.10 Scalar denned assignments |
|
|
45 | (2) |
|
|
47 | (1) |
|
|
48 | (1) |
|
3.13 Pointers in expressions and assignments |
|
|
49 | (2) |
|
3.14 The nullify statement |
|
|
51 | (1) |
|
|
51 | (4) |
|
|
55 | (14) |
|
|
55 | (1) |
|
4.2 The if construct and statement |
|
|
55 | (2) |
|
|
57 | (2) |
|
|
59 | (3) |
|
4.5 Exit from nearly any construct |
|
|
62 | (1) |
|
|
63 | (1) |
|
|
64 | (5) |
|
5 Program units and procedures |
|
|
69 | (36) |
|
|
69 | (1) |
|
|
70 | (1) |
|
|
71 | (1) |
|
|
72 | (1) |
|
|
73 | (2) |
|
|
75 | (1) |
|
5.7 Arguments of procedures |
|
|
76 | (4) |
|
5.7.1 Assumed-shape arrays |
|
|
78 | (1) |
|
|
78 | (1) |
|
5.7.3 Restrictions on actual arguments |
|
|
79 | (1) |
|
5.7.4 Arguments with the target attribute |
|
|
80 | (1) |
|
|
80 | (1) |
|
|
81 | (1) |
|
|
82 | (1) |
|
5.10.1 Prohibited side-effects |
|
|
83 | (1) |
|
5.11 Explicit and implicit interfaces |
|
|
83 | (3) |
|
5.11.1 The import statement |
|
|
85 | (1) |
|
5.12 Procedures as arguments |
|
|
86 | (2) |
|
5.13 Key word and optional arguments |
|
|
88 | (2) |
|
|
90 | (1) |
|
|
90 | (2) |
|
|
92 | (2) |
|
|
94 | (1) |
|
5.18 Overloading and generic interfaces |
|
|
94 | (5) |
|
5.19 Assumed character length |
|
|
99 | (1) |
|
5.20 The subroutine and function statements |
|
|
99 | (2) |
|
|
101 | (4) |
|
|
105 | (14) |
|
|
105 | (1) |
|
6.2 The allocatable attribute |
|
|
105 | (1) |
|
6.3 Deferred type parameters |
|
|
106 | (1) |
|
|
106 | (1) |
|
6.5 The allocate statement |
|
|
107 | (1) |
|
6.6 The deallocate statement |
|
|
108 | (1) |
|
6.7 Automatic reallocation |
|
|
109 | (1) |
|
6.8 Transferring an allocation |
|
|
110 | (1) |
|
6.9 Allocatable dummy arguments |
|
|
111 | (1) |
|
6.10 Allocatable functions |
|
|
111 | (1) |
|
6.11 Allocatable components |
|
|
112 | (4) |
|
6.11.1 Allocatable components of recursive type |
|
|
115 | (1) |
|
6.12 Allocatable arrays vs. pointers |
|
|
116 | (1) |
|
|
117 | (2) |
|
|
119 | (30) |
|
|
119 | (1) |
|
|
119 | (1) |
|
|
120 | (1) |
|
7.4 Elemental operations and assignments |
|
|
121 | (1) |
|
7.5 Array-valued functions |
|
|
122 | (1) |
|
7.6 The where statement and construct |
|
|
123 | (3) |
|
|
126 | (1) |
|
|
126 | (1) |
|
|
127 | (1) |
|
7.10 Impure elemental procedures |
|
|
128 | (1) |
|
|
129 | (1) |
|
|
130 | (3) |
|
|
133 | (1) |
|
|
134 | (1) |
|
|
135 | (1) |
|
|
135 | (2) |
|
7.17 The do concurrent construct |
|
|
137 | (2) |
|
7.18 Performance-oriented features |
|
|
139 | (6) |
|
7.18.1 The contiguous attribute |
|
|
139 | (3) |
|
7.18.2 Simply contiguous array designators |
|
|
142 | (2) |
|
7.18.3 Automatic pointer targetting |
|
|
144 | (1) |
|
|
145 | (4) |
|
8 Specification statements |
|
|
149 | (38) |
|
|
149 | (1) |
|
|
149 | (1) |
|
|
150 | (2) |
|
|
152 | (1) |
|
8.5 Initial values for variables |
|
|
153 | (6) |
|
8.5.1 Initialization in type declaration statements |
|
|
153 | (1) |
|
|
154 | (2) |
|
8.5.3 Pointer initialization as disassociated |
|
|
156 | (1) |
|
8.5.4 Pointer initialization as associated |
|
|
157 | (1) |
|
8.5.5 Default initialization of components |
|
|
158 | (1) |
|
|
159 | (2) |
|
8.6.1 The public and private attributes |
|
|
159 | (2) |
|
8.6.2 More control of access from a module |
|
|
161 | (1) |
|
8.7 Pointer functions denoting variables |
|
|
161 | (2) |
|
8.8 The pointer, target, and allocatable statements |
|
|
163 | (1) |
|
8.9 The intent and optional statements |
|
|
163 | (1) |
|
|
164 | (1) |
|
|
165 | (3) |
|
8.11.1 The volatile attribute |
|
|
165 | (2) |
|
|
167 | (1) |
|
8.11.3 Volatile arguments |
|
|
167 | (1) |
|
8.12 The asynchronous attribute |
|
|
168 | (1) |
|
|
168 | (2) |
|
|
170 | (3) |
|
8.15 Derived-type definitions |
|
|
173 | (3) |
|
8.16 The type declaration statement |
|
|
176 | (1) |
|
8.17 Type and type parameter specification |
|
|
177 | (1) |
|
8.18 Specification expressions |
|
|
178 | (3) |
|
8.19 Structure constructors |
|
|
181 | (1) |
|
8.20 The namelist statement |
|
|
181 | (2) |
|
|
183 | (4) |
|
9 Intrinsic procedures and modules |
|
|
187 | (38) |
|
|
187 | (1) |
|
|
187 | (1) |
|
9.1.2 Categories of intrinsic procedures |
|
|
188 | (1) |
|
9.1.3 The intrinsic statement |
|
|
188 | (1) |
|
|
188 | (1) |
|
9.2 Inquiry functions for any type |
|
|
188 | (1) |
|
9.3 Elemental numeric functions |
|
|
189 | (2) |
|
9.3.1 Elemental functions that may convert |
|
|
189 | (2) |
|
9.3.2 Elemental functions that do not convert |
|
|
191 | (1) |
|
9.4 Elemental mathematical functions |
|
|
191 | (3) |
|
9.5 Transformational functions for Bessel functions |
|
|
194 | (1) |
|
9.6 Elemental character and logical functions |
|
|
194 | (2) |
|
9.6.1 Character-integer conversions |
|
|
194 | (1) |
|
9.6.2 Lexical comparison functions |
|
|
195 | (1) |
|
9.6.3 String-handling elemental functions |
|
|
195 | (1) |
|
|
196 | (1) |
|
9.7 Non-elemental string-handling functions |
|
|
196 | (1) |
|
9.7.1 String-handling inquiry function |
|
|
196 | (1) |
|
9.7.2 String-handling transformational functions |
|
|
196 | (1) |
|
9.8 Character inquiry function |
|
|
197 | (1) |
|
9.9 Numeric inquiry and manipulation functions |
|
|
197 | (3) |
|
9.9.1 Models for integer and real data |
|
|
197 | (1) |
|
9.9.2 Numeric inquiry functions |
|
|
198 | (1) |
|
9.9.3 Elemental functions to manipulate reals |
|
|
199 | (1) |
|
9.9.4 Transformational functions for kind values |
|
|
199 | (1) |
|
9.10 Bit manipulation procedures |
|
|
200 | (5) |
|
9.10.1 Model for bit data |
|
|
200 | (1) |
|
|
200 | (1) |
|
9.10.3 Basic elemental functions |
|
|
201 | (1) |
|
|
202 | (1) |
|
9.10.5 Elemental subroutine |
|
|
202 | (1) |
|
9.10.6 Bitwise (unsigned) comparison |
|
|
203 | (1) |
|
9.10.7 Double-width shifting |
|
|
203 | (1) |
|
9.10.8 Bitwise reductions |
|
|
204 | (1) |
|
|
204 | (1) |
|
9.10.10 Producing bitmasks |
|
|
204 | (1) |
|
|
204 | (1) |
|
|
205 | (1) |
|
9.12 Vector and matrix multiplication functions |
|
|
205 | (1) |
|
9.13 Transformational functions that reduce arrays |
|
|
206 | (2) |
|
9.13.1 Single argument case |
|
|
206 | (1) |
|
9.13.2 Additional argument dim |
|
|
207 | (1) |
|
9.13.3 Optional argument mask |
|
|
207 | (1) |
|
9.14 Array inquiry functions |
|
|
208 | (1) |
|
|
208 | (1) |
|
9.14.2 Bounds, shape, and size |
|
|
208 | (1) |
|
9.15 Array construction and manipulation functions |
|
|
209 | (2) |
|
9.15.1 The merge elemental function |
|
|
209 | (1) |
|
9.15.2 Packing and unpacking arrays |
|
|
209 | (1) |
|
9.15.3 Reshaping an array |
|
|
210 | (1) |
|
9.15.4 Transformational function for replication |
|
|
210 | (1) |
|
9.15.5 Array shifting functions |
|
|
210 | (1) |
|
|
211 | (1) |
|
9.16 Transformational functions for geometric location |
|
|
211 | (1) |
|
9.17 Transformational function for disassociated or unallocated |
|
|
212 | (1) |
|
9.18 Non-elemental intrinsic subroutines |
|
|
212 | (3) |
|
|
212 | (1) |
|
|
213 | (1) |
|
|
214 | (1) |
|
9.18.4 Executing another program |
|
|
214 | (1) |
|
9.19 Access to the computing environment |
|
|
215 | (2) |
|
9.19.1 Environment variables |
|
|
215 | (1) |
|
9.19.2 Information about the program invocation |
|
|
216 | (1) |
|
9.20 Elemental functions for I/O status testing |
|
|
217 | (1) |
|
9.21 Size of an object in memory |
|
|
217 | (1) |
|
9.22 Miscellaneous procedures |
|
|
218 | (1) |
|
|
218 | (1) |
|
|
219 | (3) |
|
|
219 | (1) |
|
9.24.2 Compilation information |
|
|
220 | (1) |
|
9.24.3 Names for common kinds |
|
|
220 | (1) |
|
|
221 | (1) |
|
|
222 | (1) |
|
|
222 | (3) |
|
|
225 | (24) |
|
|
225 | (1) |
|
|
225 | (1) |
|
|
226 | (2) |
|
|
228 | (2) |
|
|
230 | (1) |
|
|
231 | (2) |
|
|
233 | (1) |
|
|
234 | (2) |
|
|
236 | (2) |
|
|
238 | (1) |
|
|
239 | (1) |
|
|
240 | (1) |
|
10.13 Direct-access files |
|
|
241 | (1) |
|
|
242 | (1) |
|
10.15 Asynchronous input/output |
|
|
243 | (3) |
|
10.15.1 Asynchronous execution |
|
|
243 | (2) |
|
10.15.2 The asynchronous attribute |
|
|
245 | (1) |
|
10.16 Stream access files |
|
|
246 | (1) |
|
10.17 Execution of a data transfer statement |
|
|
247 | (1) |
|
|
248 | (1) |
|
|
249 | (18) |
|
|
249 | (1) |
|
11.2 Character string edit descriptor |
|
|
249 | (1) |
|
11.3 Data edit descriptors |
|
|
249 | (6) |
|
|
250 | (1) |
|
11.3.2 Integer formatting |
|
|
251 | (1) |
|
|
251 | (2) |
|
11.3.4 Complex formatting |
|
|
253 | (1) |
|
11.3.5 Logical formatting |
|
|
253 | (1) |
|
11.3.6 Character formatting |
|
|
253 | (1) |
|
11.3.7 General formatting |
|
|
254 | (1) |
|
11.3.8 Derived type formatting |
|
|
255 | (1) |
|
11.4 Control edit descriptors |
|
|
255 | (3) |
|
|
255 | (1) |
|
11.4.2 Tabulation and spacing |
|
|
256 | (1) |
|
11.4.3 New records (slash editing) |
|
|
257 | (1) |
|
|
257 | (1) |
|
11.5 Changeable file connection modes |
|
|
258 | (2) |
|
11.5.1 Embedded blank interpretation |
|
|
258 | (1) |
|
11.5.2 Input/output rounding mode |
|
|
259 | (1) |
|
11.5.3 Signs on positive values |
|
|
259 | (1) |
|
11.5.4 Decimal comma for input/output |
|
|
260 | (1) |
|
11.6 Defined derived-type input/output |
|
|
260 | (4) |
|
11.7 Recursive input/output |
|
|
264 | (1) |
|
|
265 | (2) |
|
12 Operations on external files |
|
|
267 | (12) |
|
|
267 | (1) |
|
12.2 Positioning statements for sequential files |
|
|
268 | (1) |
|
12.2.1 The backspace statement |
|
|
268 | (1) |
|
12.2.2 The rewind statement |
|
|
268 | (1) |
|
12.2.3 The endfile statement |
|
|
269 | (1) |
|
12.2.4 Data transfer statements |
|
|
269 | (1) |
|
|
269 | (1) |
|
|
270 | (3) |
|
|
273 | (1) |
|
12.6 The inquire statement |
|
|
274 | (4) |
|
|
278 | (1) |
|
13 Advanced type parameter features |
|
|
279 | (6) |
|
13.1 Type parameter inquiry |
|
|
279 | (1) |
|
13.2 Parameterized derived types |
|
|
279 | (6) |
|
13.2.1 Defining a parameterized derived type |
|
|
280 | (1) |
|
13.2.2 Assumed and deferred type parameters |
|
|
281 | (1) |
|
13.2.3 Default type parameter values |
|
|
281 | (1) |
|
13.2.4 Derived type parameter inquiry |
|
|
282 | (1) |
|
13.2.5 Structure constructor |
|
|
282 | (3) |
|
|
285 | (6) |
|
|
285 | (2) |
|
|
287 | (4) |
|
14.2.1 Named procedure pointers |
|
|
287 | (1) |
|
14.2.2 Procedure pointer components |
|
|
287 | (1) |
|
14.2.3 The pass attribute |
|
|
288 | (1) |
|
14.2.4 Internal procedures as targets of a procedure pointer |
|
|
289 | (2) |
|
15 Object-oriented programming |
|
|
291 | (30) |
|
|
291 | (1) |
|
|
291 | (2) |
|
15.2.1 Type extension and type parameters |
|
|
293 | (1) |
|
15.3 Polymorphic entities |
|
|
293 | (4) |
|
15.3.1 Introduction to polymorphic entities |
|
|
293 | (1) |
|
15.3.2 Establishing the dynamic type |
|
|
294 | (1) |
|
15.3.3 Limitations on the use of a polymorphic variable |
|
|
295 | (1) |
|
15.3.4 Polymorphic arrays and scalars |
|
|
295 | (1) |
|
15.3.5 Unlimited polymorphic entities |
|
|
295 | (1) |
|
15.3.6 Polymorphic entities and generic resolution |
|
|
296 | (1) |
|
15.4 Typed and sourced allocation |
|
|
297 | (3) |
|
|
297 | (1) |
|
15.4.2 Typed allocation and deferred type parameters |
|
|
297 | (1) |
|
15.4.3 Polymorphic variables and typed allocation |
|
|
298 | (1) |
|
15.4.4 Sourced allocation |
|
|
298 | (2) |
|
15.5 Assignment for allocatable polymorphic variables |
|
|
300 | (1) |
|
15.6 The associate construct |
|
|
300 | (2) |
|
15.7 The select type construct |
|
|
302 | (1) |
|
15.8 Type-bound procedures |
|
|
303 | (7) |
|
15.8.1 Specific type-bound procedures |
|
|
305 | (1) |
|
15.8.2 Generic type-bound procedures |
|
|
306 | (2) |
|
15.8.3 Type extension and type-bound procedures |
|
|
308 | (2) |
|
15.9 Design for overriding |
|
|
310 | (2) |
|
15.10 Deferred bindings and abstract types |
|
|
312 | (1) |
|
|
313 | (2) |
|
15.11.1 Type extension and final subroutines |
|
|
315 | (1) |
|
15.12 Procedure encapsulation example |
|
|
315 | (4) |
|
15.13 Type inquiry functions |
|
|
319 | (2) |
|
|
321 | (4) |
|
|
321 | (1) |
|
16.2 Separate module procedures |
|
|
321 | (2) |
|
16.3 Submodules of submodules |
|
|
323 | (1) |
|
|
323 | (1) |
|
16.5 Submodules and use association |
|
|
323 | (1) |
|
16.6 The advantages of submodules |
|
|
324 | (1) |
|
|
325 | (22) |
|
|
325 | (1) |
|
|
326 | (1) |
|
17.3 The properties of coarrays |
|
|
327 | (1) |
|
|
328 | (1) |
|
17.5 The sync all statement |
|
|
329 | (1) |
|
17.6 Allocatable coarrays |
|
|
330 | (1) |
|
17.7 Coarrays with allocatable or pointer components |
|
|
331 | (2) |
|
|
332 | (1) |
|
17.7.2 Procedure pointer components |
|
|
333 | (1) |
|
|
333 | (1) |
|
17.9 Coarrays in procedures |
|
|
333 | (2) |
|
17.10 References to polymorphic subobjects |
|
|
335 | (1) |
|
17.11 Volatile and asynchronous attributes |
|
|
336 | (1) |
|
|
336 | (1) |
|
|
336 | (6) |
|
17.13.1 Execution segments |
|
|
336 | (1) |
|
17.13.2 The sync images statement |
|
|
337 | (1) |
|
17.13.3 The lock and unlock statements |
|
|
338 | (2) |
|
17.13.4 Critical sections |
|
|
340 | (1) |
|
17.13.5 Atomic subroutines and the sync memory statement |
|
|
341 | (1) |
|
17.13.6 The stat= and errmsg= specifiers in synchronization statements |
|
|
341 | (1) |
|
17.13.7 The image control statements |
|
|
342 | (1) |
|
17.14 Program termination |
|
|
342 | (2) |
|
|
344 | (1) |
|
17.16 Intrinsic procedures |
|
|
344 | (1) |
|
17.16.1 Inquiry functions |
|
|
344 | (1) |
|
17.16.2 Transformational functions |
|
|
345 | (1) |
|
17.17 Arrays of different sizes on different images |
|
|
345 | (2) |
|
18 Floating-point exception handling |
|
|
347 | (20) |
|
|
347 | (1) |
|
|
347 | (2) |
|
18.3 Access to the features |
|
|
349 | (2) |
|
|
351 | (1) |
|
|
352 | (1) |
|
|
352 | (1) |
|
|
353 | (1) |
|
18.8 The module ieee_exceptions |
|
|
353 | (3) |
|
|
353 | (1) |
|
18.8.2 Inquiring about IEEE exceptions |
|
|
354 | (1) |
|
18.8.3 Subroutines for the flags and halting modes |
|
|
354 | (1) |
|
18.8.4 Subroutines for the whole of the floating-point status |
|
|
355 | (1) |
|
18.9 The module ieee_arithmetic |
|
|
356 | (5) |
|
|
356 | (1) |
|
18.9.2 Inquiring about IEEE arithmetic |
|
|
356 | (2) |
|
18.9.3 Elemental functions |
|
|
358 | (2) |
|
18.9.4 Non-elemental subroutines |
|
|
360 | (1) |
|
18.9.5 Transformational function for kind value |
|
|
361 | (1) |
|
|
361 | (6) |
|
|
361 | (1) |
|
18.10.2 Calling alternative procedures |
|
|
362 | (1) |
|
18.10.3 Calling alternative in-line code |
|
|
363 | (1) |
|
18.10.4 Reliable hypotenuse function |
|
|
363 | (2) |
|
18.10.5 Access to IEEE arithmetic values |
|
|
365 | (2) |
|
19 Interoperability with C |
|
|
367 | (16) |
|
|
367 | (1) |
|
19.2 Interoperability of intrinsic types |
|
|
367 | (1) |
|
19.3 Interoperability with C pointer types |
|
|
368 | (2) |
|
19.4 Interoperability of derived types |
|
|
370 | (1) |
|
19.5 Shape and character length disagreement |
|
|
371 | (2) |
|
19.6 Interoperability of variables |
|
|
373 | (1) |
|
|
373 | (1) |
|
|
374 | (1) |
|
19.9 Interoperability of procedures |
|
|
375 | (2) |
|
19.10 Interoperability of global data |
|
|
377 | (1) |
|
19.11 Invoking a C function from Fortran |
|
|
377 | (1) |
|
19.12 Invoking Fortran from C |
|
|
378 | (3) |
|
|
381 | (2) |
|
20 Fortran 2018 coarray enhancements |
|
|
383 | (14) |
|
|
383 | (1) |
|
|
384 | (1) |
|
|
385 | (1) |
|
20.4 Change team construct |
|
|
385 | (1) |
|
20.5 Coarrays allocated in teams |
|
|
386 | (1) |
|
20.6 Critical construct and image failure |
|
|
386 | (1) |
|
20.7 Lock and unlock statements and image failure |
|
|
386 | (1) |
|
|
387 | (1) |
|
|
387 | (1) |
|
20.10 Procedure calls and teams |
|
|
388 | (1) |
|
20.11 Intrinsic functions get_team and team_number |
|
|
388 | (1) |
|
20.12 Intrinsic function image_index |
|
|
388 | (1) |
|
20.13 Intrinsic function num_images |
|
|
389 | (1) |
|
20.14 Intrinsic function this_image |
|
|
390 | (1) |
|
20.15 Intrinsic function coshape |
|
|
390 | (1) |
|
20.16 Intrinsic function move_alloc |
|
|
390 | (1) |
|
20.17 Fail image statement |
|
|
391 | (1) |
|
20.18 Detecting failed and stopped images |
|
|
391 | (1) |
|
20.19 Collective subroutines |
|
|
392 | (1) |
|
20.20 New atomic subroutines |
|
|
393 | (2) |
|
20.21 Failed images and stat= specifiers |
|
|
395 | (1) |
|
|
395 | (2) |
|
21 Fortran 2018 enhancements to interoperability with C |
|
|
397 | (26) |
|
|
397 | (1) |
|
|
397 | (2) |
|
21.3 Low-level C interoperability |
|
|
399 | (1) |
|
21.4 Assumed character length |
|
|
400 | (1) |
|
|
401 | (3) |
|
|
401 | (1) |
|
|
401 | (1) |
|
21.5.3 Argument classification (attribute codes) |
|
|
402 | (1) |
|
21.5.4 Argument data type |
|
|
402 | (1) |
|
21.5.5 Array layout information |
|
|
403 | (1) |
|
21.6 Accessing Fortran objects |
|
|
404 | (10) |
|
21.6.1 Traversing contiguous Fortran arrays |
|
|
404 | (1) |
|
21.6.2 Generic programming with assumed type |
|
|
405 | (1) |
|
21.6.3 Traversing discontiguous Fortran arrays |
|
|
405 | (2) |
|
21.6.4 Fortran pointer operations |
|
|
407 | (2) |
|
21.6.5 Allocatable objects |
|
|
409 | (1) |
|
21.6.6 Handling arrays of any rank |
|
|
410 | (1) |
|
21.6.7 Accessing individual array elements via a C descriptor |
|
|
411 | (3) |
|
21.6.8 Handling errors from CFI functions |
|
|
414 | (1) |
|
21.7 Calling Fortran with C descriptors |
|
|
414 | (6) |
|
21.7.1 Allocating storage for a C descriptor |
|
|
414 | (1) |
|
21.7.2 Establishing a C descriptor |
|
|
415 | (1) |
|
21.7.3 Constructing an array section |
|
|
416 | (3) |
|
21.7.4 Accessing components |
|
|
419 | (1) |
|
|
420 | (1) |
|
21.8.1 Other limitations on C descriptors |
|
|
420 | (1) |
|
21.8.2 Lifetimes of C descriptors |
|
|
420 | (1) |
|
21.9 Miscellaneous C interoperability changes |
|
|
420 | (3) |
|
21.9.1 Interoperability with the C type ptrdiff_t |
|
|
420 | (1) |
|
21.9.2 Relaxation of interoperability requirements |
|
|
420 | (3) |
|
22 Fortran 2018 conformance with ISO/IEC/IEEE 60559:2011 |
|
|
423 | (6) |
|
|
423 | (1) |
|
|
423 | (1) |
|
22.3 Type for floating-point modes |
|
|
423 | (1) |
|
|
424 | (1) |
|
|
424 | (1) |
|
|
425 | (1) |
|
|
425 | (1) |
|
22.8 Conversion to integer type |
|
|
425 | (1) |
|
|
425 | (1) |
|
22.10 Maximum and minimum values |
|
|
425 | (1) |
|
22.11 Adjacent machine numbers |
|
|
426 | (1) |
|
|
426 | (1) |
|
22.13 Hexadecimal significand input/output |
|
|
427 | (2) |
|
23 Minor Fortran 2018 features |
|
|
429 | (16) |
|
23.1 Default accessibility for entities accessed from a module |
|
|
429 | (1) |
|
23.2 Requiring explicit procedure declarations |
|
|
429 | (1) |
|
23.3 Using the properties of an object in its initialization |
|
|
430 | (1) |
|
|
430 | (1) |
|
23.4.1 More concise generic specification |
|
|
430 | (1) |
|
23.4.2 Rules for disambiguation |
|
|
431 | (1) |
|
23.5 Enhancements to stop and error stop |
|
|
431 | (1) |
|
23.6 New intrinsic procedures |
|
|
431 | (2) |
|
23.6.1 Checking for unsafe conversions |
|
|
431 | (1) |
|
23.6.2 Generalized array reduction |
|
|
432 | (1) |
|
23.6.3 Controlling the random number generator |
|
|
432 | (1) |
|
23.7 Existing intrinsic procedures |
|
|
433 | (2) |
|
23.7.1 Intrinsic function sign |
|
|
433 | (1) |
|
23.7.2 Intrinsic functions extends_type_of and same_type_as |
|
|
433 | (1) |
|
23.7.3 Simplification of calls of the intrinsic function cmplx |
|
|
433 | (1) |
|
23.7.4 Remove many argument dim restrictions |
|
|
434 | (1) |
|
23.7.5 Kinds of arguments of intrinsic and IEEE procedures |
|
|
434 | (1) |
|
23.7.6 Intrinsic subroutines that access the computing environment |
|
|
435 | (1) |
|
23.8 Use of non-standard features |
|
|
435 | (1) |
|
23.9 Kind of the do variable in implied-do loops |
|
|
435 | (1) |
|
23.10 Improving do concurrent performance |
|
|
436 | (1) |
|
23.11 Control of host association |
|
|
437 | (1) |
|
23.12 Intent in requirements and the value attribute |
|
|
438 | (1) |
|
|
438 | (1) |
|
23.14 Recursive and non-recursive procedures |
|
|
438 | (1) |
|
|
439 | (1) |
|
23.15.1 More minimal field width editing |
|
|
439 | (1) |
|
23.15.2 Recovering from input format errors |
|
|
439 | (1) |
|
23.15.3 Advancing input with size= |
|
|
439 | (1) |
|
23.15.4 Precision of stat= variables |
|
|
439 | (1) |
|
23.15.5 Connect a file to more than one unit |
|
|
439 | (1) |
|
23.15.6 Enhancements to inquire |
|
|
440 | (1) |
|
23.15.7 Asynchronous communication |
|
|
440 | (1) |
|
|
440 | (5) |
|
23.16.1 Assumed-rank objects |
|
|
440 | (2) |
|
23.16.2 The select rank construct |
|
|
442 | (3) |
|
|
445 | (12) |
|
|
445 | (1) |
|
|
445 | (1) |
|
3 Alternative form of relational operator |
|
|
446 | (1) |
|
|
447 | (1) |
|
|
447 | (1) |
|
|
448 | (1) |
|
7 The dimension, codimension, and parameter statements |
|
|
448 | (1) |
|
8 Non-default mapping for implicit typing |
|
|
449 | (1) |
|
9 Fortran 2008 deprecated features |
|
|
450 | (7) |
|
9.1 The sync memory statement, and atomic_define and atomic_ref |
|
|
450 | (3) |
|
9.2 Components of type c_ptr or c_funptr |
|
|
453 | (1) |
|
|
453 | (1) |
|
9.4 Denoting absent arguments |
|
|
454 | (1) |
|
9.5 Alternative form of complex constant |
|
|
455 | (2) |
|
B Obsolescent and deleted features |
|
|
457 | (20) |
|
1 Features obsolescent in Fortran 95 |
|
|
457 | (5) |
|
|
457 | (1) |
|
|
458 | (1) |
|
1.3 Character length specification with character* |
|
|
458 | (1) |
|
1.4 Data statements among executables |
|
|
458 | (1) |
|
|
459 | (1) |
|
1.6 Assumed character length of function results |
|
|
460 | (1) |
|
|
460 | (2) |
|
2 Feature obsolescent in Fortran 2008: Entry statement |
|
|
462 | (1) |
|
3 Features obsolescent in Fortran 2018 |
|
|
463 | (11) |
|
3.1 The forall statement and construct |
|
|
463 | (3) |
|
3.2 The equivalence statement |
|
|
466 | (2) |
|
|
468 | (2) |
|
3.4 The block data program unit |
|
|
470 | (1) |
|
3.5 The labelled do construct |
|
|
471 | (1) |
|
3.6 Specific names of intrinsic procedures |
|
|
472 | (2) |
|
4 Features deleted in Fortran 95 |
|
|
474 | (1) |
|
5 Feature deleted in Fortran 2003: Carriage control |
|
|
475 | (1) |
|
6 Features deleted in Fortran 2018 |
|
|
475 | (2) |
|
C Object-oriented list example |
|
|
477 | (8) |
|
|
485 | (22) |
Index |
|
507 | |