포트란 77(FORTRAN 77) 소스코드는 과거 펀치 카드 입력 방식의 전통을 그대로 따르고 있음. 따라서 명령어 종류에 따라 작성할 수 있는 세로 칸(칼럼, Column)의 위치가 엄격하게 통제됨. 영역 위반 시 발생하는 컴파일 에러를 방지하기 위한 표준 칼럼 레이아웃을 알아본다.
🟦 1. 포트란 77의 4대 가로 영역 (Column)
포트란의 소스코드는 가로 1칸부터 80칸까지의 쓰임새가 아래와 같이 사전에 완벽히 고정되어 있음.
text
칸 수: 12345 6 78901234567890~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~72 73~~~~80
영역별: [레이블] [?] [실제 소스코드 구역 (선언 및 실행 구문 작성 공간)] [프로그램ID]
| | | |
| | | +-- 73~80칸: 인식 안 함
| | +-- 7~72칸: PROGRAM, INTEGER, PRINT, STOP 등 모든 본문 작성
| +------- 6칸: 줄 바꿈 기호 공간 (공백이 아니면 앞줄 코드가 연장됨)
+------------- 1~5칸: Statement Label (행 번호 적는 특수 공간)
* 주석 규칙: 1번째 칸에 대문자 'C' 또는 별표('*')를 적으면 그 줄 전체가 주석 처리됨.
🟪 2. 순서별 칼럼 매칭을 반영한 포트란 77 예시 코드
아래 코드는 블로그 독자들이 눈금자를 보며 각 칸의 위치에 어떤 문법 요소가 들어가는지 한눈에 파악할 수 있도록 조립한 실전 매뉴얼임.
fortran code
12345678901234567890123456789012345678901234567890123456789012345678901234567890
C =================================================================
C [1칸 주석] 1번째 칸에 적힌 대문자 'C'는 해당 라인을 주석으로 만듦
C =================================================================
PROGRAM COLUMN_GUIDE
* [7칸 시작] 프로그램 시작 선언 키워드는 무조건 7번째 칸부터 타이핑함
C =================================================================
* [변수 선언 영역] 선언문(Specification) 역시 7번째 칸 규칙을 준수함
C =================================================================
INTEGER NUM1, NUM2, SUM
CHARACTER*10 TITLE
* -> 7칸 뒤에 정수형 및 문자열 변수 레이아웃을 선언해 줌
C =================================================================
* [실행 및 명령 영역] 대입, 사칙연산, 제어 명령어들의 배치 위치
C =================================================================
* [값 대입] 일반 할당문은 무조건 7번째 칸 이후 공간에 작성함
NUM1 = 50
NUM2 = 30
* [연산 실행] 수식 계산 및 포맷 출력문도 7번째 칸 라인을 엄수함
SUM = NUM1 + NUM2
TITLE = 'TOTAL SUM'
* -----------------------------------------------------------------
* [6칸 줄바꿈의 마법] 코드가 72칸을 넘을 것 같을 때 연장하는 특수 방법
* -----------------------------------------------------------------
PRINT *, 'THIS IS A VERY LONG STRING PRINT OUT DEMO
$ FOR FORTRAN 77 COLUMN RULE TEST'
* -> 6번째 칸에 달러 기호($)를 박아 넣음
* -> 컴파일러는 이 아랫줄을 앞줄에 연속된 한 문장으로 강제 병합하여 인식함
* -----------------------------------------------------------------
* [1~5칸 레이블 구역] 강제 점프나 루프의 종결 이정표 번호를 적는 공간
* -----------------------------------------------------------------
20 PRINT *, TITLE, ' RESULT : ', SUM
* -> 1~5칸 구역에 레이블 번호 '20'을 명시하여 행의 고유 이정표를 세움
* -> 실제 명령어(PRINT)는 여전히 7번째 칸 이후 구역에 유지해야 함
STOP
END
💡 [실무 팁] 포트란 칼럼 에러를 유발하는 2대 함정 요약
코볼의 A/B 영역 에러처럼 포트란 77 코딩 시 초보자들이 가장 많이 틀리는 캄프라치 실수를 정리함.
- 6번째 칸 공백 미준수 사고
- 평소에 들여쓰기를 하지 않고 7번째 칸에서 정상적으로 타이핑을 하다가, 실수로 키보드를 잘못 눌러 명령어가 6번째 칸 영역을 침범하는 경우가 자주 발생함.
- 6번째 칸에 공백이 아닌 문자가 들어가면 컴파일러는 무조건 앞 라인의 연장선으로 해석하기 때문에, 멀쩡한 명령어가 앞 문장과 꼬이면서 원인 불명의 구문 에러가 터지게 됨. 6번째 칸은 줄 바꿈 연장 기호($)를 쓸 때를 제외하고는 항상 무조건 비워두는 것이 철칙임.
- 72칸 한계 돌파 사고
- 포트란 77 컴파일러는 가로 72번째 칸까지만 실제 소스코드로 인식함.
- 문자열을 길게 타이핑하다가 72칸을 초과하여 73~80칸 구역으로 글자가 넘어가면, 컴파일러는 그 뒷부분을 아예 없는 유령 코드 취급함. 문장이 강제로 끊겨서 에러가 나므로, 코드가 길어질 때는 무조건 6번째 칸 연장 기호를 써서 다음 줄로 행을 내려야 안전하다.
'프로그래밍 > Fortran 77' 카테고리의 다른 글
| [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 |
| [FORTRAN 기초] 1편: 예약어, 기본어, 변수 및 상수 개념과 문법 분류 총정리 (0) | 2026.06.22 |
| (FORTRAN 기초) 포트란 문법 및 엄격한 칼럼 규칙 총정리 (0) | 2026.06.22 |