2012-08-02 1 views
1

DO를 사용하여 한 줄씩 파일을 읽으려고하고 개별 줄을 조작하기 위해 읽으려고합니다. 그러나, 나는 내가 원하지 않는 것을 볼 때마다 줄을 건너려고 노력하고있다. FORTRAN 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 

내가 그것을 어떻게 수행 할 수 있습니다 여기에

는 지금까지이 무엇입니까?

+4

CYCLE 문을 사용하면 DO 루프의 시작 부분으로 돌아가지만, CONTINUE 또는 전혀 코드를 사용하지 않으면 선이 건너 뜁니다. 순차적으로 형식화 된 파일을 읽으므로 각 READ 문은 레코드 위치를 하나씩 증가시킵니다. 따라서 귀하의 경우 아무런 행동도 취하지 않으면 그 라인을 효과적으로 건너 뜁니다. 게시 한 코드는 원하는 것을 수행해야합니다. – milancurcic

답변

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 

대로 IF ... END IF 다음 이상의 문이있는 경우, CYCLE에만 필요합니다.

+2

이 경우'CYCLE'은 아무 것도하지 않습니다. 'END IF' 이후 루프 본문에 다른 실행 문이 없습니다. –

+0

@HristoIliev, Correct. 나는 OP가'IF ... END IF' 다음에 더 많은 코드를 넣고 싶어하는 것처럼 이것을 썼습니다. – astay13

+1

당신은'! 'CYCLE'은 다음 문장이 생략되어야하는 경우에만 필요하다는 것을 명확히하기 위해'END IF' 이후에 더 많은 진술을합니다. –