단 한 명의 데이터 처리가 아닌, 지정된 횟수만큼 로직을 연속해서 회전시키며 대량 연산을 수행하는 포트란 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 루프의 문을 닫지 못해 컴파일 파괴 사고가 나므로 절대 주의해야 한다.
'프로그래밍 > Fortran 77' 카테고리의 다른 글
| [FORTRAN 기초] 알고리즘 2편: 피보나치 수열과 팩토리얼 계산 fortran code (0) | 2026.06.22 |
|---|---|
| [FORTRAN 기초] 알고리즘 1편: 1에서 100까지 합 구하기 기본 fortran code (0) | 2026.06.22 |
| [FORTRAN 기초] 5편: 조건문(IF ~ THEN ~ ENDIF)으로 합격/불합격 판별하기 fortran code (0) | 2026.06.22 |
| [FORTRAN 기초] 4편: 사칙연산과 출력 포맷(FORMAT) 정의 실전 fortran code (0) | 2026.06.22 |
| [FORTRAN 기초] 3편: 데이터 타입(INTEGER, REAL, CHARACTER) 선언과 변수 문법 정복 fortran code (0) | 2026.06.22 |