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, 129 % 98 & 26 & 230 * 114, 129 * (symbol) 66, 69, 76, 85, 172, 181, 225, 229, 255, 268 ** 114, 129 + 115, 129 . 114, 116 .AND. 116, 132 .EQ. 115, 131 .EQV. 116, 132 .FALSE. 38 .GE. 115, 131 .GT. 115, 131 .LE. 115, 131 .LT. 115, 131 .NE. 115, 131 .NEQV. 116, 132 .NOT. 116, 132 .OR. 116, 132 .TRUE. 38 / 114, 129, 211 / (symbol) 82, 85, 89, 93 // 36, 115, 130 /= 115, 131 : 74, 98, 101 :: 65 ; 26 < 115, 131 <= 115, 131 = 135, 246, 255, 274 == 115, 131 => (pointer assignment) 66, 139 => (rename) 237 > 115, 131 >= 116, 131 A abstract interface 247 abstract interface block 247 ACCESS= specifier 176, 201 accessibility attribute 72 accessibility statements 82 access-spec 72 access-stmt 82 ACTION= specifier 177, 203 actual-arg 255 ADVANCE= specifier 182 affector 183 ALLOCATABLE 65, 83 allocatable array 75 ALLOCATABLE attribute 78 ALLOCATABLE statement 83 allocatable-stmt 83 ALLOCATE 104 ALLOCATE statement 104 allocate-stmt 104 alt-return-spec 255 APOSTROPHE (DELIM value) 234 argument association 256, 353 argument keyword 256 argument keywords 18, 279, 351 arithmetic IF statement 163 arithmetic-if-stmt 163 array 17, 74-77, 100-103 assumed-shape 75 assumed-size 76 automatic 75 explicit-shape 74 array constructor 63 array element 17, 101 array element order 101 array pointer 75 array section 17, 102 array-constructor 63 array-element 100 array-section 100 array-spec 74 ASCII 333 ASCII collating sequence 37 ASSIGNMENT 246 assignment 135-148 defined 136 elemental array (FORALL) 143 intrinsic 135 masked array (WHERE) 140 pointer 139 assignment statement 135 assignment-stmt 135 association 19 argument 256, 353 host 354 name 353 pointer 356 sequence 260 storage 358 use 353 association status pointer 356 assumed type parameter 31 assumed-shape array 75 assumed-size array 76 asynchromous-stmt 84 ASYNCHRONOUS attribute 79 ASYNCHRONOUS statement 84 ASYNCHRONOUS= specifier 178, 204 ASYNCHROUNOUS 65 attribute specification statements 81-95 attributes 71-79 accessibility 72 ALLOCATABLE 78 ASYNCHRONOUS 79 DIMENSION 74 EXTERNAL 78 INTENT 72 INTRINSIC 78 OPTIONAL 77 PARAMETER 71 POINTER 77 PRIVATE 72 PUBLIC 72 SAVE 77, 85 TARGET 77 attr-spec 65 automatic array 75 automatic data object 68 B BACKSPACE 197 BACKSPACE statement 198 backspace-stmt 197 base object 99 base type 53 BIND 81 BIND statement 84 BIND(C) 38, 61, 244, 245, 271, 272, 395, 397, 398 binding 47 binding label 271 BINDNAME= specifier 81, 272 bind-spec 81 bind-stmt 84 bit model 281 blank common 93 BLANK= specifier 176, 203 blank-interp-edit-desc 211 block 149 block 149 BLOCK DATA 240 block data program 240 block-data 240 block-data-stmt 240 block-do-construct 158 bounds-spec 139 boz-literal-constant 32 branch target statement 162 C C_(C type) 391-399 C_LOC function 395 CALL statement 254 call-stmt 255 CASE 152 CASE construct 151 case-construct 151 case-stmt 152 CHAR intrinsic 37 CHARACTER 35, 65 character 21 character context 25 character intrinsic operation 130 character literal constant 36 character sequence type 50 character set 21 character string 35 character type 35-37 CHARACTER type specifier 69 characteristics of a procedure 244 char-constant 23 char-expr 118 char-literal-constant 36 char-string-edit-desc 212 child data transfer statement 191-195, 207 CLASS 65 CLOSE 179 CLOSE statement 178 close-stmt 179 collating sequence 37 comment 26, 27 COMMON 93 common association 94 common block 92, 346, 447 common block storage sequence 93 COMMON statement 92-95 common-block-name 93 common-stmt 93 companion processor 20 compatibility FORTRAN 77 3 Fortran 90 3 COMPLEX 35, 65 complex type 34 COMPLEX type specifier 69 complex-literal-constant 35 component-def-stmt 40 components 351 computed GO TO statement 163 computed-goto-stmt 163 concatenation 36 conform 135 conformable 18 conformance 121 connected files 173 constant 17, 23, 29 character 36 integer 32 logical 38 named 84 constant 23 constant subobject 17 Construct association 355 constructor array 63 derived-type 56 structure 56 CONTAINS 236, 271 CONTAINS statement 271 contains-stmt 271 continuation 26, 27 CONTINUE 163 CONTINUE statement 163 continue-stmt 163 control edit descriptors 221 control-edit-desc 211 conversion numeric 136 current record 169 CYCLE 161 CYCLE statement 158, 161 cycle-stmt 161 D DATA 85 data edit descriptors 213-220 data object 16 data object reference 19 DATA statement 85, 361 data transfer 189 data transfer statements 179 data type 15, 29-64 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 85 data-ref 98 data-stmt 85 DEALLOCATE 108 DEALLOCATE statement 108 deallocate-stmt 108 decimal symbol 213 DECIMAL= specifier 180, 184 declaration 19 declarations 65-95 declaration-type-spec 65 declared type 71 DEFAULT 152 default character 36 default complex 35 default initialization 361 default integer 31 default logical 38 default real 34 default-char-exp 119 deferred type parameter 30 deferred-shape array 75 defined 19 defined assignment 250 defined assignment statement 136 defined operation 118, 132, 249 defined-binary-op 116 defined-operator 24 defined-unary-op 114 definition 19 definition of variables 360 DELIM= specifier 177, 204, 234 derived type determination 52 derived type type specifier 70 derived types 16, 38-58 derived-type-def 39 digit-string 32 DIMENSION 65, 83 DIMENSION attribute 74 DIMENSION statement 83 dimension-stmt 83 direct access 167 direct access input/output statement 182 direct component 38 DIRECT= specifier 201 disassociated 18 DO 158 DO construct 158 DO statement 158 DO WHILE statement 158 do-construct 158 do-stmt 158 DOUBLE PRECISION 33, 65 double precision real 34 DOUBLE PRECISION type specifier 69 dummy arguments restrictions 261 dummy procedure 243 dummy-arg 268 dynamic type 71 E edit descriptors see format descriptors effective item 185 element array assignment (FORALL) 143 ELEMENTAL 266 elemental intrinsic procedure 279 elemental procedure 276 ELSE 150 else-if-stmt 150 else-stmt 150 ELSEWHERE 141 elsewhere-stmt 141 END 235 END statement 14 END= specifier 206 ENDFILE 197 endfile record 166 ENDFILE statement 166, 198 endfile-stmt 197 end-of-file condition 186 end-of-record condition 186 end-program-stmt 235 entity-decl 66 ENTRY 269 entry-stmt 269 ENUM 61 enum-alias-def 61 enum-def-stmt 61 enumeration 61 ENUMERATOR 61 enumerator 61 enumerator-def-stmt 61 EOR= specifier 207 EQUIVALENCE 90 EQUIVALENCE statement 90-92 equivalence-stmt 90 ERR= specifier 206 ERRMSG= specifier 108 ERRMSG= specifier 104 ERROR_UNIT 173, 342 evaluation operations 124 optional 125 parentheses 126 executable constructs 149 executable-construct 11 execution control 149-163 EXIST= specifier 200 EXIT 161 EXIT statement 161 exit-stmt 161 explicit formatting 209-225 explicit initialization 68, 85 explicit interface 245 explicit-shape array 74 explicit-shape-spec 74 expr 116 expressions 17, 113-134 extended type 53 EXTENDS attribute 39, 53 EXTENSIBLE attribute 39, 53 extensible type 53 extension operation 118, 133 extension operator 118 extension type 53 extent 17 EXTERNAL 65, 252 EXTERNAL attribute 78 external file 166 external procedure 12, 243 EXTERNAL statement 252 external subprogram 11 external-stmt 252 external-subprogram 9 F file access 167 file connection 172 file inquiry 199 file position 169 file positioning statements 197 file storage unit 171 FILE= specifier 175, 200 files connected 173 external 166 internal 171 preconnected 174 final subroutines 51 finalization 59 fixed source form 27 flattened form 57 FORALL 143 FORALL construct 143 forall-construc 143 FORM= specifier 176, 202 FORMAT 209 format 181 format descriptors / 222 : 222 A 218 B 214 BN 223 BZ 223 control edit descriptors 221 D 216 data edit descriptors 213-220 E 216 EN 216 ES 217 F 215 G 218, 219 I 214 L 218 O 214 P 223 S 223 scale factor 223 SP 223 SS 223 TL 221 TR 221 X 222 Z 214 FORMAT statement 181, 209 format-item 210 format-specification 209 format-stmt 209 formatted data transfer 190 formatted input/output statement 181 formatted record 165 FORMATTED= specifier 202 formatting explicit 209-225 list-directed 195, 225-229 namelist 196, 229-234 FORTRAN 77 compatibility 3 Fortran 90 compatibility 3 free source form 25 FUNCTION 265 function 12 function reference 17, 264 FUNCTION statement 265 function-reference 254 function-stmt 265 function-subprogram 9, 265 G generic identifier 248 generic interface 248 generic interface block 247 generic name 249 generic procedure references 347 generic-spec 246 global entities 345 GO TO 163 GO TO statement 163 goto-stmt 163 H host 13, 236 host association 354 host scoping unit 12 I ICHAR intrinsic 37 ID= specifier 204 IEEE_ 291, 367-389 IF 150, 151, 163 IF construct 150 IF statement 151 if-construct 150 if-stmt 151 if-then-stmt 150 imaginary part 34 IMPLICIT 87 implicit interface 254 IMPLICIT NONE 87 IMPLICIT statement 87 implicit-stmt 87 implied-DO 63, 85, 184 IN 72 INCLUDE 28 INCLUDE line 28 inheritance association 54, 360 inherited 53 initial point 169 initialization 45, 66, 68, 361 initialization 66 initialization expression 122 initialization-expr 123 INOUT 72 input/output editing 209-234 input/output list 184 input/output statements 165-207 INPUT_UNIT 173, 342 input-item 184 INQUIRE 199 INQUIRE statement 199 inquire-stmt 199 inquiry function 279 inquiry, type parameter 100 int-constant 23 INTEGER 31, 65 integer constant 32 integer editing 214 integer model 282 integer type 31-33 INTEGER type specifier 69 INTENT 65, 81, 280 INTENT attribute 72 INTENT statement 81 intent-spec 72 intent-stmt 81 INTERFACE 246 interface (procedure) 244 abstract 247 explicit 245 generic 248 implicit 254 interface-block 246 interface-body 246 internal files 171 internal procedure 13, 243 internal subprogram 11 internal-subprogram 10 interoperable 392-399 int-expr 119 int-literal-constant 32 INTRINSIC 65, 237, 254 intrinsic 19 elemental 279 function 279 inquiry function 279 subroutine 284 transformational 279 intrinsic assignment statement 135 INTRINSIC attribute 78 intrinsic data types 31-38 intrinsic operation 117 intrinsic operations 129-132 logical 38 intrinsic procedures 291-342 see alphabetical listing, ch. 13 INTRINSIC statement 254 intrinsic type 15 intrinsic-operator 23 intrinsic-stmt 254 IOSTAT= specifier 205 io-unit 172 ISO 10646 333 ISO_C_BINDING module 391 ISO_FORTRAN_ENV module 172, 173, 206, 342 K keyword 18, 256 keyword 255 KIND 66, 69 KIND attribute 39 KIND intrinsic 31, 33, 34, 35, 37, 280 kind type parameter 30, 31, 33, 34, 35, 37 kind-param 32 L label 353 label 24 language-binding-spec 81 LEN 69 length 35 line 25 list-directed formatting 195, 225-229 list-directed input/output statement 182 literal constant 17, 97 literal-constant 23 local entities 345 LOGICAL 38, 65 logical constant 38 logical intrinsic operations 38, 132 logical type 37 LOGICAL type specifier 70 logical-exp 118 logical-literal-constant 38 loop 158 M main program 12, 235 main-program 9, 235 many-one array section 103 masked array assignment (WHERE) 140 model bit 281 integer 282 real 282 MODULE 236 module 13, 236 module 9 MODULE PROCEDURE 246 module procedure 12 module reference 19, 237 module subprogram 12 module-subprogram 10 N name 18 name 23 name association 353 NAME= specifier in the INQUIRE statement 201 in the language-binding-spec 81 named common block 93 named constant 17, 71, 84, 97 NAMED= specifier 201 named-constant 23 NAMELIST 89 namelist formatting 196, 229-234 namelist input/output statement 182 NAMELIST statement 89 namelist-stmt 89 NaN 291, 371 nested form 57 NEXTREC= specifier 202 NML= specifier 182 NON_INTRINSIC 237 NON_OVERRIDABLE attribute 42, 54 nonblock-do-construct 159 NONE see IMPLICIT NONE NONE (DELIM value) 234 NONKIND attribute 39 nonkind type parameter 30 normal 371 NULL intrinsic 40, 47, 66, 139 NULLIFY 108 NULLIFY statement 108 nullify-stmt 108 NUMBER= specifier 201 numeric conversion 136 numeric editing 214 numeric intrinsic operations 129 numeric sequence type 50 numeric storage unit 358 numeric-expr 119 O object -- see data object object designator 18 ONLY 237 OPEN 175 OPEN statement 174 OPENED= specifier 201 open-stmt 175 operations 30 character intrinsic 130 defined 132 logical intrinsic 132 numeric intrinsic 129 relational intrinsic 130 OPERATOR 246 operator precedence 133 operators 23 OPTIONAL 66, 81 OPTIONAL attribute 77 optional dummy argument 261, 280 OPTIONAL statement 81 optional-stmt 81 OUT 72 OUTPUT_UNIT 173, 342 output-item 184 override 54 P PAD= specifier 177, 204 PARAMETER 17 PARAMETER 65, 84 PARAMETER attribute 71 PARAMETER statement 84 parameter-stmt 84 parent data transfer statement 191-195, 207 parent type 53 parentheses 126 partially [storage] associated 359 part-ref 98 PASS_OBJ attribute 41, 42, 48, 256 passed-object dummy argument 48 PENDING= specifier 204 POINTER 40, 66, 83 pointer assignment 139 pointer association 356 pointer association status 356 POINTER attribute 77 POINTER statement 83 pointer-assignment-stmt 139 pointer-stmt 83 polymorphic 71 POS= specifier 202 POSITION= specifier 177, 203 positional arguments 279 position-edit-desc 211 precedence of operators 133 PRECISION intrinsic 33 preconnected files 174 prefix 266 present (dummy argument) 260 PRESENT intrinsic 77 primary 114 primary 114 PRINT 180 PRINT statement 179 print-stmt 180 PRIVATE 39, 72 PRIVATE attribute 72 PRIVATE statement 82, 237 PROCEDURE 252 procedure 12 characteristics of 244 dummy 243 elemental 276 external 243 internal 243 intrinsic 279-342 non-Fortran 272 pure 274 procedure interface 244 procedure pointer 252 procedure reference 19, 254 procedure references generic 347 resolving 348 procedure-declaration-stmt 252 procedure-stmt 246 processor 1 PROGRAM 235 program 12 program 9 program name 235 program unit 11 program-stmt 235 program-unit 9 PUBLIC 72 PUBLIC attribute 72 PUBLIC statement 82, 237 PURE 266 pure procedure 274 Q QUOTE (DELIM value) 234 R RANGE intrinsic 31, 33 rank 17, 17 READ 179 READ statement 179 READ= specifier 203 read-stmt 179 READWRITE= specifier 203 REAL 33, 65 real and complex editing 215 real model 282 real part 34 real type 33-34 REAL type specifier 69 real-literal-constant 34 REC= specifier 182 RECL= specifier 176, 202 record 165 RECURSIVE 266 relational intrinsic operations 130 rename 237 repeat specification 210 resolving procedure references 348 restricted expression 121 RESULT 265, 269 result variable 12 RETURN 271 RETURN statement 271 return-stmt 271 REWIND 197 REWIND statement 199 rewind-stmt 197 ROUND= specifier 178 ROUND= specifier 205 S SAVE 66, 82 SAVE attribute 77, 85 SAVE statement 82 saved object 77 save-stmt 82 scalar 17, 97 scale factor 211 scope of names 345 scoping unit 12 section-subscript 101 SELECT CASE 152 SELECT CASE statement 151 SELECT TYPE construct 154, 352, 355 select-case-stmt 152 SELECTED_INT_KIND intrinsic 31, 281 SELECTED_REAL_KIND intrinsic 33, 280 SEQUENCE 39 sequence association 260 SEQUENCE property 52 SEQUENCE statement 38, 50 sequence structure 71 sequence type 38, 50 sequential access 167 sequential access input/output statement 182 SEQUENTIAL= specifier 201 shape 17 signed-int-literal-constant 32 sign-edit-desc 211 size 17 SIZE= specifier 182, 203 specific interface 247 specific interface block 247 specification expression 121 specification function 122 specification-expr 121 specifications 65-95 specification-stmt 10 standard-conforming program 2 STAT= 104 statement 25 statement function 274 statement keyword 18 statement label 24, 163 statement order 13 statements accessibility 82 ALLOCATABLE 83 ALLOCATE 104 arithemetic IF 163 assignment 135 ASYNCHRONOUS 84 attribute specification 81-95 BACKSPACE 198 BIND 84 CALL 254 CASE 151 CLOSE 178 COMMON 92-95 computed GO TO 163 CONTAINS 271 CONTINUE 163 CYCLE 161 DATA 85 data transfer 179 DEALLOCATE 108 DIMENSION 83 direct access input/output 182 DO 158 DO WHILE 158 END 14 ENDFILE 198 EQUIVALENCE 90-92 EXIT 161 EXTERNAL 252 file positioning 197 FORALL 143, 148 FORMAT 209 formatted input/output 181 FUNCTION 265 GO TO 163 IF 151 IMPLICIT 87 input/output 165-207 INQUIRE 199 INTENT 81 INTRINSIC 254 list-directed input/output 182 MODULE 236 MODULE PROCEDURE 246 NAMELIST 89 namelist input/output 182 NULLIFY 108 OPEN 174 OPTIONAL 81 PARAMETER 84 POINTER 83 PRINT 179 PRIVATE 82 PROCEDURE 246 PROGRAM 235 PUBLIC 82 READ 179 RETURN 271 REWIND 199 SAVE 82 SELECT CASE 151 sequential access input/output 182 STOP 163 SUBROUTINE 268 TARGET 83 type declaration 65-79 unformatted input/output 181 VOLATILE 84 WHERE 141 WRITE 179 STATUS= specifier 176, 179 stmt-function-stmt 274 STOP 163 STOP statement 163 stop-stmt 163 storage associated 358 storage association 90-95, 358 storage sequence 93, 358 storage unit 358 Stream access 168 stream file 165 STREAM= specifier 202 stride 102 string - see character string structure 16, 56, 71 structure component 98 structure constructor 56 subobjects 16 SUBROUTINE 268 subroutine 12 subroutine reference 264 subroutine subprogram 268 subroutine-stmt 268 subroutine-subprogram 9 subscript 101, 143 subscript triplet 102 subscript-triplet 101 substring 98 T TARGET 66, 83 target 139 TARGET attribute 77 TARGET statement 83 target-stmt 83 terminal point 169 THEN 150 totally [storage] associated 359 transfer of control 149, 162, 206, 207 transformational function 279 TYPE 38, 39, 65 type base 53 character 35-37 complex 34 declared 71 derived types 38-58 dynamic 71 extended 53 extensible 53 extension 53 integer 31-33 intrinsic types 31-38 logical 37 parent 53 real 33-34 type alias 60 type conformance 136 type declaration statements 65-79 TYPE DEFAULT 154 type equality 52 TYPE IN 154 TYPE IS 154 type parameter 30, 31, 33 type parameter inquiry 100 type specifier CHARACTER 69 COMPLEX 69 derived type 70 DOUBLE PRECISION 69 INTEGER 69 LOGICAL 70 REAL 69 TYPE 70 TYPE type specifier 70 TYPEALIAS statement 60 type-bound procedure 47 type-compatible 71 type-declaration-stmt 65 type-spec 65 U ultimate component 38 undefined 19 undefinition of variables 360 unformatted data transfer 190 unformatted input/output statement 181 unformatted record 166 UNFORMATTED= specifier 202 unit 172 unlimited polymorphic 71 USE 237 use association 353 USE statement 237 use-stmt 237 V VALUE attribute 66, 80 value separator 226 VALUE statement 84 variable 97 variables 16 definition & undefinition 360 vector subscript 103 VOLATILE statement 84 volatile-stmt 84 W wait operation 178, 187, 196, 197 WAIT statement 196 WHERE 141 WHERE construct 141 WHERE statement 141 where-construct 141 where-stmt 141 WHILE 158 WRITE 179 WRITE statement 179 WRITE= specifier 203 write-stmt 179 Z zero-size array 17, 75, 86