END(构造)

用途

END (Construct) 语句终止构造的执行。 构造终止语句表列出了结束每个构造的相应语句。
表 1. 构造终止语句
构造 终止语句
ASSOCIATE 1 END ASSOCIATE
BLOCK 2 END BLOCK
DO END DO
DO CONCURRENT 2
DO WHILE
FORALL END FORALL
IF END IF
SELECT CASE END SELECT
SELECT TYPE 1
WHERE END WHERE
备注信息:
  • 1 Fortran 2003
  • 2 Fortran 2008

语法

读取语法图跳过可视语法图ENDASSOCIATEASSOCIATE_construct_name1BLOCKBLOCK_construct_name2DODO_construct_nameFORALLFORALL_construct_nameIFIF_construct_nameSELECTCASE_construct_nameSELECT 类型构造名称3WHERE其中 _construct_name
备注信息:
  • 1 Fortran 2003
  • 2 Fortran 2008
  • 3 Fortran 2003
ASSOCIATE_construct_name (Fortran 2003)
用于标识 ASSOCIATE 构造的名称。
BLOCK_construct_name (Fortran 2008)
用于标识 BLOCK 构造的名称。
DO_construct_name
一个代表 DOFortran 2008 开始DO CONCURRENTFortran 2008 结束DO WHILE结构。
FORALL_construct_name
用于标识 FORALL 构造的名称。
IF_construct_name
用于标识 IF 构造的名称。
CASE_construct_name
用于标识 SELECT CASE 构造的名称。
SELECT_TYPE_construct_name (Fortran 2003)
用于标识 SELECT TYPE 构造的名称。
where_construct_name
用于标识 WHERE 构造的名称。

规则

如果您为 END DO语句,您可以将其作为带标签或未带标签的语句的最终语句 DOFortran 2008 开始DO CONCURRENTFortran 2008 结束DO WHILE结构。 一个 END DO语句终止了最内层的 DOFortran 2008 开始DO CONCURRENTFortran 2008 结束DO WHILE结构。 如果一个 DOFortran 2008 开始DO CONCURRENTFortran 2008 结束语句未指定语句标签,则语句的终端为 DO WHILE语句未指定语句标签,则 DODO WHILE结构必须是一个 END DO语句。

您可以从以下构造的内部或外部分支到其相应的 END 语句。
表 2。 从构造的内部或外部分支到其 END 语句
构造名称 从内部分支 从外部分支 分支目标
ASSOCIATE 1   END ASSOCIATE 1
BLOCK 2 END BLOCK 2
DO   END DO
DO CONCURRENT 2  
DO WHILE  
IF 3 END IF
CASE   END SELECT
备注信息:
  • 1 Fortran 2003
  • 2 Fortran 2008
  • 3 在 Fortran 95 中,不能从 IF 构造外部分支到其 END IF 语句。

如果在开始构造的语句上指定构造名,那么终止构造的 END 语句必须具有相同的构造名。 相反,如果未在开始构造的语句上指定构造名,那么不得在 END 语句上指定构造名。

END WHERE 语句不得是分支目标语句。

示例

INTEGER X(100,100)
DECR: DO WHILE (I.GT.0)
     ...
  IF (J.LT.K) THEN
     ...
  END IF                 ! Cannot reference a construct name
  I=I-1
END DO DECR              ! Reference to construct name DECR mandatory

END
以下示例显示了 where_construct_name 的无效使用:
BW: WHERE (A /= 0)
  B = B + 1
END WHERE EW      ! The where_construct_name on the END WHERE statement
                  ! does not match the where_construct_name on the WHERE
                  ! statement.

相关信息