鲜花( 0) 鸡蛋( 0)
|
Fortran 90 Handbook
Complete ANSI / ISO Reference
Jeanne C. Adams
Walter S. Brainerd
Jeanne T. Martin
Brian T. Smith
Jerrold L. Wagener
Intertext Publications
McGraw-Hill Book Company
希望对FORTRAN钟情者有用。
Table of Contents
Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii
Sneak Preview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2 Why a New Standard? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3 Why Not Use Another Language? . . . . . . . . . . . . . . . . . . . 17
1.4 Development of Fortran 90 . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.5 Fortran 77 Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.6 Extensibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.7 Intrinsic and Standard Modules . . . . . . . . . . . . . . . . . . . . . 20
1.8 The Fortran 90 Language Standard . . . . . . . . . . . . . . . . . . 21
1.9 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2. Fortran Concepts and Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.1 Scope and Association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2 Program Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3 Data Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.4 Program Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.5 Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.6 Summary of Forms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.7 Ordering Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.8 Example Fortran 90 Program . . . . . . . . . . . . . . . . . . . . . . . 59
2.9 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3. Language Elements
and Source Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.1 The Processor Character Set . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2 Lexical Tokens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.3 Source Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.4 Rules for Fixed/Free Source Form . . . . . . . . . . . . . . . . . . . 82
3.5 The INCLUDE Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.6 Low-Level Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4. Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.1 Building the Data Environment for a Problem Solution . 91
4.2 What Is Meant by “Type” in Fortran? . . . . . . . . . . . . . . . . 96
4.3 Intrinsic Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.4 Derived Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4.5 Structure Constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
4.6 Array Constructors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5. Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
5.1 Type Declaration Statements. . . . . . . . . . . . . . . . . . . . . . . . 134
5.2 Implicit Typing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
5.3 Array Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
5.4 Pointer Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
5.5 Value Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
5.6 Object Accessibility and Use . . . . . . . . . . . . . . . . . . . . . . . . 161
5.7 Procedure Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
5.8 Automatic Data Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
5.9 NAMELIST Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
5.10 Storage Association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
5.11 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
6. Using Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
6.1 Constants and Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
6.2 Substrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
6.3 Structure Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
6.4 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
6.5 Pointers and Allocatable Arrays. . . . . . . . . . . . . . . . . . . . . 215
6.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
7. Expressions and Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
7.1 Introduction to Fortran 90 Expressions . . . . . . . . . . . . . . . 228
7.2 Formation of Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . 234
7.3 Interpretation of Expressions . . . . . . . . . . . . . . . . . . . . . . . 276
7.4 Evaluation of Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . 284
7.5 Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
7.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
8. Controlling Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
8.1 The Execution Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
8.2 Blocks and Executable Constructs . . . . . . . . . . . . . . . . . . . 310
8.3 IF Construct and IF Statement . . . . . . . . . . . . . . . . . . . . . . 312
8.4 The CASE Construct. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
8.5 The DO Construct. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
8.6 Branching. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
8.7 Obsolescent Control Statements . . . . . . . . . . . . . . . . . . . . . 337
8.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
9. Input and Output Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
9.1 Records, Files, Access Methods, and Units . . . . . . . . . . . . 346
9.2 Data Transfer Statements. . . . . . . . . . . . . . . . . . . . . . . . . . . 359
9.3 Execution Model for Data Transfer Statements . . . . . . . . 389
9.4 Error and Other Conditions in Input/Output Statements 392
9.5 The OPEN Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
9.6 The CLOSE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
9.7 Inquiring about Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
9.8 File Positioning Statements . . . . . . . . . . . . . . . . . . . . . . . . . 417
9.9 Restrictions: I/O Specifiers, List Items, and Statements . 422
9.10 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
10. Input and Output Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
10.1 Explicit Formatting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
10.2 Format Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
10.3 Character String Edit Descriptor Form . . . . . . . . . . . . . . . 435
10.4 Formatted Data Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
10.5 File Positioning by Format Control . . . . . . . . . . . . . . . . . . 441
10.6 Numeric Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
10.7 Logical Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
10.8 Character Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
10.9 Control Edit Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
10.10 List-Directed Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
10.11 Namelist Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
10.12 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
11. Program Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
11.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
11.2 Main Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
11.3 Internal Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
11.4 Host Association. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
11.5 External Subprograms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
11.6 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
11.7 Block Data Program Units . . . . . . . . . . . . . . . . . . . . . . . . . . 515
11.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
12. Using Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
12.1 Procedure Terms and Concepts . . . . . . . . . . . . . . . . . . . . . 522
12.2 Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
12.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
12.4 Procedure-Related Statements . . . . . . . . . . . . . . . . . . . . . . 543
12.5 Argument Association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
12.6 Procedure Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
12.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
13. Intrinsic Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
13.1 Intrinsic Procedure Terms and Concepts. . . . . . . . . . . . . . 594
13.2 Representation Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
13.3 Inquiry and Numeric Manipulation Functions . . . . . . . . 598
13.4 Transfer and Conversion Functions . . . . . . . . . . . . . . . . . . 601
13.5 Computation Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
13.6 Array Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
13.7 Intrinsic Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
13.8 Alphabetical List of All Intrinsic Procedures . . . . . . . . . . 606
13.9 Specific Names for Generic Intrinsic Procedures . . . . . . . 612
13.10 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
14. Scope, Association, and Definition . . . . . . . . . . . . . . . . . . . . . . 617
14.1 The Use of Names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
14.2 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
14.3 Association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
14.4 Definition Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
A. Intrinsic Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
B. Fortran 90 Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
B.1 The Form of the Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
B.2 Syntax Rules and Constraints . . . . . . . . . . . . . . . . . . . . . . . 731
B.3 Cross References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
C. Decremental Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
C.1 Deleted Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
C.2 Obsolescent Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
Index of Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789 |
|