본문 바로가기
프로그래밍/Fortran 77

[FORTRAN 기초] 6편: 반복문(DO ~ CONTINUE)으로 대량 데이터 루프 제어하기 fortran code

by 오!쎈세! 2026. 6. 22.
단 한 명의 데이터 처리가 아닌, 지정된 횟수만큼 로직을 연속해서 회전시키며 대량 연산을 수행하는 포트란 77 표준 반복문의 구조와 코딩법을 알아본다.
🟦 1. 포트란 77 DO 루프의 3대 인자 구성
포트란의 반복문은 인덱스 제어 변수를 한 줄에 정의하므로 무한 루프 사고를 예방하는 강력한 장점이 있음.
  • 기본 구조: DO [레이블번호] [카운터변수] = [시작값], [종료값], [증감값] [2, 3]
  • 레이블 번호: 루프가 어디까지 돌고 되돌아올지 지정하는 종료 이정표 번호임. (보통 CONTINUE 문과 결합함) [3]
  • 증감값: 한 바퀴 돌 때마다 몇 씩 증가시킬지 지정함. (생략 시 기본값은 1로 처리됨) [3]

🟪 2. DO 루프를 활용한 연속 데이터 출력 실전 fortran code
아래 코드는 루프 카운터를 1부터 5까지 1씩 증가시키며 현재 몇 번째 학생의 데이터를 처리 중인지 화면에 반복 출력하는 일관된 매커니즘임.
fortran code
12345678901234567890123456789012345678901234567890123456789012345678901234567890
C      =================================================================
C      [선언부] 루프 카운터로 사용할 정수형 인덱스 변수 선언 (7칸 시작)
C      =================================================================
       PROGRAM LOOP_MASTER
       IMPLICIT NONE
       
       INTEGER IDX

C      =================================================================
C      [실행부] DO 루프를 개방하여 반복 제어를 수행함 (7칸 시작)
C      =================================================================
       WRITE(*, 400)
       
*      -----------------------------------------------------------------
*      [DO 반복문 구조] DO 10 IDX = 1, 5, 1 -> 10번 줄까지 1부터 5까지 돌림
*      -----------------------------------------------------------------
       DO 10 IDX = 1, 5, 1
*          [반복 실행 내용] 루프 내부에 들어갈 일련의 명령어 배치 구역
           WRITE(*, 500) IDX
10     CONTINUE
*      -> 1~5칸 레이블 구역에 정확하게 번호 '10'을 기재하여 루프의 짝을 맞춤
*      -> CONTINUE는 아무 일도 하지 않고 루프를 이어주는 이정표 역할임 [3]

       STOP
       
C      =================================================================
C      [FORMAT 정의 구역] 리포트 헤더와 반복 출력용 포맷 선언
C      =================================================================
400    FORMAT(1X, '--- BATCH PROCESS START ---')
500    FORMAT(1X, 'PROCESSING STUDENT NO : ', I2)
*      -> 정수 2자리 포맷(I2)을 활용해 인덱스 번호를 정렬하여 출력함

       END
코드를 사용할 때는 주의가 필요합니다.
 

💡 [실무 팁] 코볼 유저가 감탄하는 포트란 반복문의 간결함과 주의점
코볼의 반복 시스템과 비교했을 때 포트란 77이 가지는 결정적인 차이점과 시험장 단골 오답 요소를 짚어봄.
  • 카운터 수동 증감의 해방
    • 코볼의 PERFORM UNTIL 구문은 루프 내부 마지막 줄에 개발자가 직접 ADD 1 TO CNT 같은 증감 명령을 빼먹으면 시스템이 멈추는 무한 루프 버그가 빈번했음.
    • 반면 포트란은 DO 한 줄에 증감폭까지 완벽히 내장되어 시스템 내부 인터프리터가 알아서 인덱스를 올려주므로 코드가 극도로 단순해지고 안전해짐.
  • 종료 레이블 번호의 위치 규칙 엄수
    • 10 CONTINUE 문장을 적을 때, 이 10이라는 숫자는 무조건 가로 1~5번째 칸(레이블 영역) 사이에 완벽하게 정렬하여 박아 넣어야 함.
    • 만약 이 숫자를 명령어 시작 선인 7번째 칸 이후로 밀어서 10 CONTINUE 라고 적어버리면, 컴파일러는 이를 레이블이 아닌 일반 에러 코드로 인식하여 DO 루프의 문을 닫지 못해 컴파일 파괴 사고가 나므로 절대 주의해야 한다.