H601 function-stmt is [ prefix ] FUNCTION function-name ( [ dummy-arg-name-list ] ) [ RESULT ( result-name ) ] H602 subroutine-stmt is [ prefix ] SUBROUTINE subroutine-name [ ( [ dummy-arg-list ] ) ] H603 prefix is prefix-spec [ prefix-spec ] ... H604 prefix-spec is type-spec
H605 program-stmt is [ extrinsic-prefix ] PROGRAM program-name H606 module-stmt is [ extrinsic-prefix ] MODULE module-name H607 block-data-stmt is [ extrinsic-prefix ] BLOCK DATA [ block-data-name ]
H608 extrinsic-prefix is EXTRINSIC ( extrinsic-spec ) H609 extrinsic-spec is extrinsic-spec-arg-list
H610 extrinsic-spec-arg is language
H611 language is [ LANGUAGE = ] scalar-char-initialization-expr H612 model is [ MODEL = ] scalar-char-initialization-expr H613 external-name is [ EXTERNAL_NAME = ] scalar-char-initialization-expr
Note that these rules for extrinsic-spec-arg-list are as if EXTRINSIC were a procedure with an explicit interface with a dummy-arg-list of LANGUAGE, MODEL, EXTERNAL_NAME, each of which were OPTIONAL.
Note that, for most implementations, "0DC"0D will only be allowed for function-stmts and subroutine-stmts occurring in an interface-body.
H614 extrinsic-kind-keyword is HPF