FORTRAN如何在DO循环中读取行时跳过一行?

时间:2012-08-02 20:46:28

标签: fortran fortran90

我正在尝试使用DO逐行读取文件并读取操作单个行。但是,无论我在哪里看到我不想要的东西,我都试图跳过一条线。

这是我到目前为止所拥有的:

DO J=1,10000
  READ(1,'(A150)') ROW
  IF (J==A(1)+1 .AND. ROW(17:17)=='|') THEN
    WRITE(2, '(A)') ROW(1:12) // ROW(15:150)
  ELSEIF (J>A(1) .AND. J<A(2) .AND. ROW(1:1)=='#') THEN
  ! Here's where I need to skip J and go onto J+1 and then continue the DO loop from there
  END IF
END DO

我该怎么做?

1 个答案:

答案 0 :(得分:3)

使用CYCLE

DO J=1,10000
  READ(1,'(A150)') ROW
  IF ((J==A(1)+1) .AND. (ROW(17:17).EQ.'|')) THEN
    WRITE(2, '(A)') ROW(1:12) // ROW(15:150)
  ELSEIF (J.GT.A(1) .AND. J.LT.A(2) .AND. ROW(1:1)=='#') THEN
    CYCLE
  END IF
  ! More statements here
END DO

正如Hristo指出的那样,CYCLE只有在IF ... END IF之后有更多陈述时才有必要。