DO

用途

DO 语句控制其后面的语句的执行,直到并包括指定的终端语句。 这些语句共同构成 DO 构造。

语法

读取语法图跳过可视语法图DO_construct_name:DO标准标签,变量名 =  a_expr1 a_expr2 ,  a_expr3
DO_construct_name
是标识 DO 构造的名称。
stmt_label
是出现在同一作用域限定单元中 DO 语句之后的可执行语句的语句标签。 此语句表示 DO 构造的结束。
var_name
是类型为整数或实数的标量变量名称,称为 DO 变量
a_expr1a_expr2 a_expr3
都是类型为整数或实数的标量表达式

规则

如果在 DO 语句上指定 DO_construct_name ,那么必须使用 END DO 和相同的 DO_construct_name来终止构造。 相反,如果未在 DO 语句上指定 DO_construct_name ,并且使用 END DO 语句终止 DO 构造,那么 END DO 语句上不得有 DO_construct_name

如果在 DO 语句中指定语句标签,那么必须使用带有该语句标签的语句来终止 DO 构造。 您可以使用带有该语句标签的 END DO 语句来终止带标签的 DO 语句,但不能使用未带标签的 END DO 语句来终止该语句。 如果未在 DO 语句中指定标签,那么必须使用 END DO 语句终止 DO 构造。

如果缺少控制子句 (以 var_name开头的子句) ,那么该语句是无限 DO。 循环将无限迭代,直到中断为止 (例如,通过 EXIT 语句)。

示例

INTEGER :: SUM=0
OUTER: DO
  INNER: DO M=1,10
    READ (5,*) J
    IF (J.LE.I) THEN
      PRINT *, 'VALUE MUST BE GREATER THAN ', I
      CYCLE INNER
    END IF
    SUM=SUM+J
    IF (SUM.GT.500) EXIT OUTER
    IF (SUM.GT.100) EXIT INNER
  END DO INNER
  SUM=SUM+I
  I=I+10
END DO OUTER
PRINT *, 'SUM =',SUM
END

相关信息