Annex D (informative) Index In this index, entries in italics denote BNF terms, entries in bold face denote language keywords, and page numbers in bold denote primary or defining text. Symbols ! 26 - 115, 130 % 98 & 26 & 229 * 114, 130 * (symbol) 62, 67, 74, 85, 171, 180, 225, 228, 252, 265 ** 114, 130 + 115, 130 . 114, 116 .AND. 116, 133 .EQ. 115, 132 .EQV. 116, 133 .FALSE. 38 .GE. 115, 132 .GT. 115, 132 .LE. 115, 132 .LT. 115, 132 .NE. 115, 132 .NEQV. 116, 133 .NOT. 116, 133 .OR. 116, 133 .TRUE. 38 / 114, 130, 211 / (symbol) 81, 84, 89, 92 // 36, 115, 131 /= 115, 132 : 72, 98, 101 :: 61 ; 26 < 115, 132 <= 115, 132 = 136, 246, 252, 268 == 115, 132 => (pointer assignment) 62, 140 => (rename) 238 > 115, 132 >= 116, 132 A abstract interface 248 abstract interface block 248 ACCESS= specifier 174, 202 accessibility attribute 70 accessibility statements 80 access-spec 70 access-stmt 80 ACTION= specifier 176, 204 actual-arg 252 ADVANCE= specifier 182 ALLOCATABLE 62, 82 allocatable array 73 ALLOCATABLE attribute 76 ALLOCATABLE statement 82 allocatable-stmt 82 ALLOCATE 104 ALLOCATE statement 104 allocate-stmt 104 alt-return-spec 252 APOSTROPHE (DELIM value) 233 argument association 253, 343 argument keyword 253 argument keywords 18, 273, 341 arithmetic IF statement 163 arithmetic-if-stmt 163 array 17, 72-75, 100-103 assumed-shape 73 assumed-size 74 automatic 73 explicit-shape 72 array constructor 57 array element 17, 101 array element order 101 array pointer 73 array section 17, 102 array-constructor 57 array-element 100 array-section 101 array-spec 72 ASCII collating sequence 37 ASSIGNMENT 246 assignment 136-150 defined 137 elemental array (FORALL) 144 intrinsic 136 masked array (WHERE) 142 pointer 140 assignment statement 136 assignment-stmt 136 association 19 argument 253, 343 host 343 name 343 pointer 346 sequence 258 storage 347 use 343 association status pointer 346 assumed type parameter 30, 53, 68 assumed-shape array 73 assumed-size array 74 asynchromous-stmt 83 ASYNCHRONOUS attribute,attributes ASYNCHRONOUS 77 ASYNCHRONOUS statement,statements ASYNCHRONOUS 83 ASYNCHRONOUS= specifier 176, 206 ASYNCHROUNOUS 62 attribute specification statements 80-95 attributes 69-76 accessibility 70 ALLOCATABLE 76 DIMENSION 72 EXTERNAL 76 INTENT 70 INTRINSIC 76 OPTIONAL 75 PARAMETER 69 POINTER 75 PRIVATE 70 PUBLIC 70 SAVE 75, 84 TARGET 75 attr-spec 62 automatic array 73 automatic data object 65 B BACKSPACE 198 BACKSPACE statement 199 backspace-stmt 198 base type 51 binary constant - see constant, boz binding 46 bit model 275 blank common 92 BLANK= specifier 175, 204 blank-interp-edit-desc 211 block 151 block 151 BLOCK DATA 240 block data program 240 block-data 240 block-data-stmt 240 block-do-construct 158 bounds-spec 140 boz-literal-constant 32 branch target statement 163 C CALL statement 252 call-stmt 252 CASE 153 CASE construct 153 case-construct 153 case-stmt 153 CHAR intrinsic 37 CHARACTER 35, 61 character 21 character context 25 character intrinsic operation 131 character literal constant 36 character sequence type 49 character set 21 character string 35 character type 35-37 CHARACTER type specifier 67 characteristics of a procedure 244 char-constant 23 char-expr 119 char-len-param-value 67 char-literal-constant 36 char-string-edit-desc 212 CLASS 61 CLOSE 178 CLOSE statement 177 close-stmt 178 collating sequence 37 comment 26, 27 COMMON 92 common association 94 common block 92, 336, 425 common block storage sequence 93 COMMON statement 92-95 common-block-name 92 common-stmt 92 compatibility FORTRAN 77 3 Fortran 90 3 COMPLEX 35, 61 complex type 34 COMPLEX type specifier 67 complex-literal-constant 35 component-def-stmt 40 components 340 computed GO TO statement 163 computed-goto-stmt 163 concatenation 36 conform 136 conformable 17 conformance 121 connected files 172 constant 16, 23, 29 binary - see constant, boz boz 32 character 36 hexadecimal - see constant, boz integer 32 logical 38 named 83 octal - see constant, boz constant 23 constant expression 123 constant subobject 17 constructor array 57 derived-type 53 structure 53 CONTAINS 237, 268 CONTAINS statement 268 contains-stmt 268 continuation 26, 27 CONTINUE 163 CONTINUE statement 163 continue-stmt 163 control edit descriptors 220 control-edit-desc 211 conversion numeric 137 current record 168 CYCLE 161 CYCLE statement 158, 161 cycle-stmt 161 D DATA 84 data edit descriptors 213-219 data object 16 data object reference 19 DATA statement 84, 350 data transfer 190 data transfer statements 178 data type 15, 29-58 see also type data type of a primary 119 data type of an expression 118 data type of an operation 120 data type concept 29 data-edit-desc 210 data-implied-do 84 data-ref 98 data-stmt 84 DEALLOCATE 109 DEALLOCATE statement 109 deallocate-stmt 109 declaration 19 declarations 61-95 declared type 69 DEFAULT 154 default character 35 default complex 35 default initialization 39, 350 default integer 32 default logical 38 default real 34 default-char-exp 119 deferred type parameter 30, 53 deferred-shape array 73 defined 19 defined assignment 249 defined assignment statement 137 defined operation 118, 133, 248 defined-binary-op 116 defined-operator 24 defined-unary-op 114 definition 19 definition of variables 349 DELIM= specifier 176, 205, 233 derived type determination 49 derived type type specifier 69 derived types 15, 38-55 derived-type-def 39 digit-string 32 DIMENSION 62, 82 DIMENSION attribute 72 DIMENSION statement 82 dimension-stmt 82 direct access 167 direct access input/output statement 181 DIRECT= specifier 203 disassociated 18 DO 159 DO construct 158 DO statement 158 DO WHILE statement 158 do-construct 158 do-stmt 159 DOUBLE PRECISION 33, 61 double precision real 34 DOUBLE PRECISION type specifier 67 dummy arguments restrictions 260 dummy procedure 243 dummy-arg 265 dynamic type 69 E edit descriptors see format descriptors element array assignment (FORALL) 144 ELEMENTAL 263 elemental intrinsic procedure 273 elemental procedure 270 ELSE 152 else-if-stmt 152 else-stmt 152 ELSEWHERE 142 elsewhere-stmt 142 END 235 END statement 14 END= specifier 182 ENDFILE 198 endfile record 166 ENDFILE statement 166, 199 endfile-stmt 198 end-of-file condition 187 end-of-record condition 187 end-program-stmt 235 entity-decl 62 ENTRY 266 entry-stmt 266 EOR= specifier 182 EQUIVALENCE 90 EQUIVALENCE statement 90-92 equivalence-stmt 90 ERR= specifier 178, 182 evaluation operations 125 optional 126 parentheses 127 executable constructs 151 executable-construct 11 execution control 151-164 EXIST= specifier 202 EXIT 161 EXIT statement 161 exit-stmt 161 explicit formatting 209-224 explicit interface 245 explicit-shape array 72 explicit-shape-spec 72 expr 116 expressions 17, 113-135 extended type 51 extensible type 50 extension type 51 extent 17 EXTERNAL 62, 250 EXTERNAL attribute 76 external file 166 external procedure 12, 243 EXTERNAL statement 250 external subprogram 11 external-stmt 250 external-subprogram 9 F file access 167 file connection 171 file inquiry 200 file position 168 file positioning statements 198 file storage unit 170 FILE= specifier 174, 202 files connected 172 external 166 internal 170 preconnected 172 fixed source form 27 FORALL 145 FORALL construct 144 forall-construc 145 FORM= specifier 175, 203 FORMAT 209 format 180 format descriptors / 221 : 222 A 218 B 214 BN 223 BZ 223 control edit descriptors 220 D 215 data edit descriptors 213-219 E 215 EN 216 ES 217 F 215 G 218, 219 I 214 L 218 O 214 P 222 S 222 scale factor 222 SP 222 SS 222 TL 221 TR 221 X 221 Z 214 format specifier 180 FORMAT statement 180, 209 format-item 210 format-specification 209 format-stmt 209 formatted data transfer 191 formatted input/output statement 180 formatted record 165 FORMATTED= specifier 203 formatting explicit 209-224 list-directed 196, 224-228 namelist 196, 228-233 FORTRAN 77 compatibility 3 Fortran 90 compatibility 3 free source form 25 FUNCTION 263 function 12 function reference 17, 262 FUNCTION statement 263 function-reference 252 function-stmt 263 function-subprogram 9, 263 G generic identifier 247 generic interface 247 generic name 247 generic procedure references 337 generic-spec 246 global entities 335 GO TO 163 GO TO statement 163 goto-stmt 163 H hexadecimal constant - see constant, boz host 12, 237 host association 343 host scoping unit 12 I ICHAR intrinsic 37 ID= specifier 205 IF 152, 153, 163 IF construct 152 IF statement 153 if-construct 152 if-stmt 153 if-then-stmt 152 imaginary part 34 IMPLICIT 86 implicit interface 251 IMPLICIT NONE 86 IMPLICIT statement 86 implicit-stmt 86 implied-DO 58, 84, 184, 190 IN 70 INCLUDE 27 INCLUDE line 27 inherited 51 initial point 168 initialization 44, 64, 66, 350 initialization 62 initialization expression 123 initialization-expr 124 INOUT 70 input/output editing 209-233 input/output list 184 input/output statements 165-207 input-item 184 INQUIRE 200 INQUIRE statement 200 inquire-stmt 200 inquiry function (intrinsic) 273 inquiry, type parameter 100 int-constant 23 INTEGER 31, 61 integer constant 32 integer editing 214 integer model 275 integer type 31-33 INTEGER type specifier 66 INTENT 62, 80, 274 INTENT attribute 39, 70 INTENT statement 80 intent-spec 70 intent-stmt 80 INTERFACE 246 interface (procedure) 244 abstract 248 explicit 245 generic 247 implicit 251 interface body 246 interface-block 245 interface-body 246 internal files 170 internal procedure 12, 243 internal subprogram 11 internal-subprogram 10 int-expr 119 int-literal-constant 32 INTRINSIC 62, 251 intrinsic 19 elemental 273 function 273 inquiry function 273 subroutine 278 transformational 273 intrinsic assignment statement 136 INTRINSIC attribute 76 intrinsic data types 31-38 intrinsic operation 117 intrinsic operations 130-133 logical 38 intrinsic procedures 285-334 see alphabetical listing, ch. 13 INTRINSIC statement 251 intrinsic type 15 intrinsic-operator 23 intrinsic-stmt 251 IOSTAT= 188, 189 IOSTAT= specifier 178, 181 io-unit 171 K keyword 18, 253 keyword 252 KIND 62, 67 KIND intrinsic 31, 33, 34, 35, 38, 274 kind type parameter 30, 31, 33, 34, 35, 37 kind-param 32 L label 342 label 24 LEN 67 length 35 line 24 list-directed formatting 196, 224-228 list-directed input/output statement 181 literal constant 16, 97 literal-constant 23 local entities 335 LOGICAL 38, 61 logical constant 38 logical intrinsic operations 38, 133 logical type 37 LOGICAL type specifier 68 logical-exp 119 logical-literal-constant 38 loop 158 M main program 12, 235 main-program 9, 235 many-one array section 103 masked array assignment (WHERE) 142 model bit 275 integer 275 real 275 MODULE 237 module 13, 237 module 9 MODULE PROCEDURE 246 module procedure 12 module reference 19, 238 module subprogram 11 module-subprogram 10 N name 18 name 22 name association 343 NAME= specifier 202 named common block 92 named constant 16, 69, 83, 97 NAMED= specifier 202 named-constant 23 NAMELIST 89 namelist formatting 196, 228-233 namelist input/output statement 181 NAMELIST statement 89 namelist-stmt 89 NEXTREC= specifier 203 NML= specifier 181 nonblock-do-construct 159 NONE see IMPLICIT NONE NONE (DELIM value) 233 nonkind type parameter 30 nonnumeric types ??-58 NULL intrinsic 41, 46, 62, 141 NULLIFY 109 NULLIFY statement 109 nullify-stmt 109 NUMBER= specifier 202 numeric conversion 137 numeric editing 213 numeric intrinsic operations 130 numeric sequence type 49 numeric storage unit 347 numeric types ??-35 numeric-expr 119 O object -- see data object object designator 18 octal constant - see constant, boz ONLY 238 OPEN 173 OPEN statement 173 OPENED= specifier 202 open-stmt 173 operations 30 character intrinsic 131 defined 133 logical intrinsic 133 numeric intrinsic 130 relational intrinsic 131 OPERATOR 246 operator precedence 134 operators 23 OPTIONAL 62, 80 OPTIONAL attribute 75 optional dummy argument 259, 274 OPTIONAL statement 80 optional-stmt 80 OUT 70 output-item 184 override 52 P PAD= specifier 176, 205 PARAMETER 16 PARAMETER 62, 83 PARAMETER attribute 69 PARAMETER statement 83 parameter-stmt 83 parent type 51 parentheses 127 partially [storage] associated 348 part-ref 98 passed-object dummy argument 41 PENDING= specifier 205 POINTER 40, 62, 82 pointer assignment 140 pointer association 346 pointer association status 346 POINTER attribute 75 POINTER statement 82 pointer-assignment-stmt 140 pointer-stmt 82 polymorphic 69 POS= specifier 204 POSITION= specifier 175, 204 positional arguments 273 position-edit-desc 211 precedence of operators 134 PRECISION intrinsic 33 preconnected files 172 prefix 263 present (dummy argument) 259 PRESENT intrinsic 75 primary 114 primary 114 PRINT 179 PRINT statement 178 printing 197 print-stmt 179 PRIVATE 39, 70 PRIVATE attribute 70 PRIVATE statement 47, 81, 238 PROCEDURE 78 procedure 12 characteristics of 244 dummy 243 elemental 270 external 243 internal 243 intrinsic 273-334 non-Fortran 268 pure 269 procedure interface 244 procedure interface block 13 procedure reference 19, 252 procedure references generic 337 resolving 338 procedure-declaration-stmt 78 procedure-stmt 246 processor 1 PROGRAM 235 program 12 program 9 program name 235 program unit 11 program-stmt 235 program-unit 9 PUBLIC 70 PUBLIC attribute 70 PUBLIC statement 81, 238 PURE 263 pure procedure 269 Q QUOTE (DELIM value) 233 R RANGE intrinsic 31, 33 rank 17, 17 READ 178 READ statement 178 READ= specifier 204 read-stmt 178 READWRITE= specifier 205 REAL 33, 61 real and complex editing 215 real model 275 real part 34 real type 33-34 REAL type specifier 67 real-literal-constant 34 REC= specifier 181 RECL= specifier 175, 203 record 165 RECURSIVE 263 relational intrinsic operations 131 rename 238 repeat specification 210 resolving procedure references 338 restricted expression 121 restricted-type-spec 61 RESULT 263, 266 result variable 12 RETURN 267 RETURN statement 267 return-stmt 267 REWIND 199 REWIND statement 200 rewind-stmt 199 S SAVE 62, 81 SAVE attribute 75, 84 SAVE statement 81 saved object 75 save-stmt 81 scalar 17, 98 scale factor 211 scope of names 335 scoping unit 11 section-subscript 101 SELECT CASE 153 SELECT CASE statement 153 select-case-stmt 153 SELECTED_INT_KIND intrinsic 31, 274 SELECTED_REAL_KIND intrinsic 33, 274 SEQUENCE 39 sequence association 258 SEQUENCE property 49 SEQUENCE statement 38, 49 sequence structure 69 sequence type 38, 49 sequential access 167 sequential access input/output statement 181 SEQUENTIAL= specifier 202 shape 17 signed-int-literal-constant 32 sign-edit-desc 211 size 17 SIZE= specifier 183, 204 specific interface 246 specification expression 121 specification function 65, 122 specification-expr 121 specifications 61-95 specification-stmt 10 standard-conforming program 2 STAT= 104 statement 24 statement function 268 statement keyword 18 statement label 24, 163 statement order 14 statements accessibility 80 ALLOCATABLE 82 ALLOCATE 104 arithemetic IF 163 assignment 136 attribute specification 80-95 BACKSPACE 199 CALL 252 CASE 153 CLOSE 177 COMMON 92-95 computed GO TO 163 CONTAINS 268 CONTINUE 163 CYCLE 161 DATA 84 data transfer 178 DEALLOCATE 109 DIMENSION 82 direct access input/output 181 DO 158 DO WHILE 158 END 14 ENDFILE 199 EQUIVALENCE 90-92 EXIT 161 EXTERNAL 250 file positioning 198 FORALL 144, 149 FORMAT 209 formatted input/output 180 FUNCTION 263 GO TO 163 IF 153 IMPLICIT 86 input/output 165-207 INQUIRE 200 INTENT 80 INTRINSIC 251 list-directed input/output 181 MODULE 237 MODULE PROCEDURE 246 NAMELIST 89 namelist input/output 181 NULLIFY 109 OPEN 173 OPTIONAL 80 PARAMETER 83 POINTER 82 PRINT 178 PRIVATE 81 PROCEDURE 246 PROGRAM 235 PUBLIC 81 READ 178 RETURN 267 REWIND 200 SAVE 81 SELECT CASE 153 sequential access input/output 181 STOP 164 SUBROUTINE 265 TARGET 82 type declaration 61-76 unformatted input/output 180 VOLATILE 83 WHERE 142 WRITE 178 STATUS= specifier 174, 178 stmt-function-stmt 268 STOP 164 STOP statement 164 stop-stmt 164 storage associated 348 storage association 90-95, 347 storage sequence 93, 347 storage unit 347 Stream access 168 STREAM= specifier 203 stride 102 string - see character string structure 15, 69 structure component 98 structure-constructor 53 subobjects 16 SUBROUTINE 265 subroutine 12 subroutine reference 263 subroutine subprogram 265 subroutine-stmt 265 subroutine-subprogram 9 subscript 101, 145 subscript triplet 102 subscript-triplet 101 substring 98 T TARGET 62, 82 target 140 TARGET attribute 75 TARGET statement 82 target-stmt 82 terminal point 168 THEN 152 totally [storage] associated 348 transfer of control 151, 163, 182 transformational functions (intrinsic) 273 TYPE 38, 39, 61 type base 51 character 35-37 complex 34 declared 69 derived types 38-55 dynamic 69 extended 51 extensible 50 extension 51 integer 31-33 intrinsic types 31-38 logical 37 nonnumeric types ??-58 numeric types ??-35 parent 51 real 33-34 type conformance 137 type declaration statements 61-76 type equality 49 type parameter 30, 31, 33 type parameter inquiry 100 type specifier 66-69 CHARACTER 67 COMPLEX 67 derived type 69 DOUBLE PRECISION 67 INTEGER 66 LOGICAL 68 REAL 67 TYPE 69 TYPE type specifier 69 type-bound procedure 46 type-declaration-stmt 61 type-spec 61 U undefined 19 undefinition of variables 349 unformatted data transfer 190 unformatted input/output statement 180 unformatted record 166 UNFORMATTED= specifier 203 unit 171 USE 238 use association 343 USE statement 238 use-stmt 238 V variable 97 variables 16 definition & undefinition 349 vector subscript 103 VOLATILE statement 83 volatile-stmt 83 W WHERE 142 WHERE construct 142 WHERE statement 142 where-construct 142 where-stmt 142 WHILE 159 WRITE 178 WRITE statement 178 WRITE= specifier 205 write-stmt 178 Z zero-size array 17, 73, 85 zero-sized arrays 190