이전 편에서 데이터 타입을 정의하는 법을 배웠으니, 이제 그 재료들을 가지고 사칙연산을 수행하고 결과를 사람이 읽기 편하게 가공하는 FORMAT 제어문의 연동 문법을 알아본다.
🟦 1. 포트란 77의 기본 연산 기호와 FORMAT 식별자
- 사칙연산 기호
- 더하기(+), 빼기(-), 곱하기(*), 나누기(/) 기호를 그대로 사용함.
- 주요 FORMAT 제어 식별자
- I (Integer) : 정수형 데이터를 출력할 때 사용함. (예: I4는 4자리 공간 확보)
- F (Floating-point) : 실수형 데이터를 소수점 위치까지 지정해 출력함. (예: F6.2는 총 6자리 공간 중 소수점 이하 2자리를 뜻함)
- A (Alphanumeric) : 문자형 데이터를 출력할 때 사용함.
- X (Spaces) : 출력 시 원하는 개수만큼 공백(Space)을 강제로 띄울 때 사용함.
🟪 2. 사칙연산과 FORMAT 연동 실전 fortran code
아래 코드는 국어와 영어 점수를 더하고 나누어 평균을 구한 뒤, 의미 없는 앞자리 0을 지우고 소수점을 예쁘게 정렬하여 화면에 출력하는 포트란 77의 표준 코딩 스펙임.
fortran code
12345678901234567890123456789012345678901234567890123456789012345678901234567890
C =================================================================
C [선언부] 연산에 사용할 정수형, 실수형 변수를 명시적 선언함 (7칸 시작)
C =================================================================
PROGRAM FORMAT_MASTER
IMPLICIT NONE
INTEGER KOR, ENG, TOTAL
REAL AVERAGE
C =================================================================
C [실행부] 데이터를 대입하고 수식을 계산함 (7칸 시작)
C =================================================================
KOR = 95
ENG = 80
* [사칙연산] 총점과 평균을 구하는 정밀 계산 수식 실행
TOTAL = KOR + ENG
AVERAGE = TOTAL / 2.0
* -> 실수 연산을 위해 정수 2가 아닌 '2.0' 실수 상수로 나누어야 함
* -----------------------------------------------------------------
* [출력 제어] WRITE 구문과 포맷 레이블 번호를 링크하여 출력함
* -----------------------------------------------------------------
* WRITE(출력장치, 포맷레이블번호) 구조를 취함. *은 표준 화면 출력을 의미함
WRITE(*, 100) TOTAL
WRITE(*, 200) AVERAGE
C =================================================================
C [FORMAT 정의 구역] 1~5칸 구역에 레이블 번호를 박아 포맷 규격을 선언함
C =================================================================
100 FORMAT(1X, 'TOTAL SUM : ', I4)
* -> 1X로 첫 칸을 비우고 문자열 출력 후, 정수 4자리(I4) 공간에 총점을 찍음
200 FORMAT(1X, 'AVERAGE : ', F6.2)
* -> 실수 포맷 F6.2를 통해 총 6자리 확보 후 소수점 이하 2자리 규격으로 평균을 찍음
* -> 변환 전 통글자 상태의 데이터를 ' 87.50' 형태로 예쁘게 변환하여 표출함
STOP
END
코드를 사용할 때는 주의가 필요합니다.
💡 [실무 팁] FORMAT 100번 첫 칸에 쓰인 '1X'의 숨겨진 비밀 (Carriage Control)
포트란 77에서 화면이나 프린터로 출력을 제어할 때 입문자들이 가장 많이 실수하고 당황하는 전설의 캐리지 컨트롤(프린터 줄 제어) 규칙을 정리함.
- 첫 번째 칸의 문자는 화면에 나오지 않는다
- 포트란 77 시스템은 WRITE나 PRINT 문이 실행될 때, 출력될 데이터의 맨 첫 번째 글자(1바이트)를 화면에 보여주는 글자가 아닌 '종이 줄 바꿈 제어 명령용' 기호로 강제 인식하여 삼켜버림.
- 만약 위 코드에서 100 FORMAT('TOTAL SUM : ', I4) 라고 적었다면 맨 앞 글자인 대문자 'T'를 제어 기호로 오해하여 삼켜버리기 때문에 화면에는 OTAL SUM : 175 라고 첫 글자가 잘려서 출력되는 대참사가 터짐.
- 무조건 1X로 방어벽을 칠 것
- 이 현상을 막기 위해 모든 포트란 FORMAT 구문의 괄호 안에는 가장 먼저 1X (공백 1칸 강제 지정)를 적어주는 것이 철칙임.
- 공백 문자 하나를 컴파일러에게 제어 기호 몫으로 제물로 던져주고, 진짜 출력하고 싶은 문자열('TOTAL')은 안전하게 두 번째 칸부터 정상 출력되도록 보호하는 실무 필수 테크닉이다.
'프로그래밍 > Fortran 77' 카테고리의 다른 글
| [FORTRAN 기초] 6편: 반복문(DO ~ CONTINUE)으로 대량 데이터 루프 제어하기 fortran code (0) | 2026.06.22 |
|---|---|
| [FORTRAN 기초] 5편: 조건문(IF ~ THEN ~ ENDIF)으로 합격/불합격 판별하기 fortran code (0) | 2026.06.22 |
| [FORTRAN 기초] 3편: 데이터 타입(INTEGER, REAL, CHARACTER) 선언과 변수 문법 정복 fortran code (0) | 2026.06.22 |
| [FORTRAN 기초] 2편: 가로 80칸 칼럼 구조와 영역별 문법 배치 실전 가이드 (0) | 2026.06.22 |
| [FORTRAN 기초] 1편: 예약어, 기본어, 변수 및 상수 개념과 문법 분류 총정리 (0) | 2026.06.22 |