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