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

[FORTRAN 기초] 2편: 가로 80칸 칼럼 구조와 영역별 문법 배치 실전 가이드

by 오!쎈세! 2026. 6. 22.
포트란 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번째 칸 연장 기호를 써서 다음 줄로 행을 내려야 안전하다.