본문 바로가기
프로그래밍/RM-COBOL

[COBOL 기초] 알고리즘 1편: 1에서 100까지 합 구하기 기본 COBOL code

by 오!쎈세! 2026. 6. 22.
90년대 정보처리기능사 및 알고리즘 입문 시 가장 먼저 배우는 기초 중의 기초임. 변수에 숫자를 1씩 누적하여 더하는 반복문의 기본 원리를 코볼 코드로 구현해 본다.
🟪 1. 누적용 변수와 인덱스 설계 (DATA DIVISION)
1부터 100까지 증가할 카운터 변수와, 값이 누적되어 저장될 합계 변수를 선언함. 대장 격인 01 레벨은 A영역(8칸)에, 하위 변수 05B영역(12칸)에 배치한다.
cobol code
12345678901234567890123456789012345678901234567890123456789012345678901234567890
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  LOOP-VARIABLES.
*          -------------------------------------------------------------
*          [카운터 변수] 1부터 100까지 1씩 증가할 인덱스 변수 선언 (B영역 시작)
*          -------------------------------------------------------------
           05  CNT-IDX     PIC 9(03)     VALUE 1.
*          -------------------------------------------------------------
*          [누적 합계 변수] 1부터 100까지 합산하면 5050이므로 4자리 공간 확보
*          -------------------------------------------------------------
           05  SUM-TOTAL   PIC 9(04)     VALUE ZERO.
 
 

🟩 2. PERFORM UNTIL을 이용한 누적 연산 (PROCEDURE DIVISION)
인덱스가 100을 넘어설 때까지 루프를 돌며 계속 더해주는 영역임. 문단의 이정표는 A영역(8칸)에 적고, 실질적으로 일하는 제어 명령어들은 무조건 B영역(12칸) 안쪽에서 코딩해야 한다.
cobol code
12345678901234567890123456789012345678901234567890123456789012345678901234567890
       PROCEDURE DIVISION.
       MAIN-LOGIC SECTION.
       A000-START.
           DISPLAY "--- 1 TO 100 SUM PROCESS START ---".

*          -------------------------------------------------------------
*          [반복 실행] CNT-IDX가 100보다 커질 때까지(101이 되는 순간 탈출) 루프 작동
*          -------------------------------------------------------------
           PERFORM UNTIL CNT-IDX > 100
*              [누적 계산] 기존 합계 금액에 현재 인덱스 숫자를 누적하여 더함
               ADD CNT-IDX TO SUM-TOTAL
               
*              [인덱스 증가] 다음 회전을 위해 인덱스 번호를 1 증가시킴
               ADD 1 TO CNT-IDX
           END-PERFORM.

*          -------------------------------------------------------------
*          [결과 출력] 100까지 모두 더해진 최종 합계 값을 화면에 표출함
*          -------------------------------------------------------------
           DISPLAY "1 FROM 100 TOTAL SUM RESULT : " SUM-TOTAL.
*          -> 정상 구동 시 화면에 전설의 숫자 '5050'이 출력됨.

           STOP RUN.
 
 

💡 [실무 팁] 코볼 누적 연산 시 초깃값(VALUE ZERO) 설정의 중요성
타 언어(C, Java 등)도 마찬가지이지만, 코볼은 특히 누적 합계를 구하는 변수(SUM-TOTAL)의 초기화 작업이 절대적임.
  • 초깃값(VALUE ZERO)을 누설한 경우의 대참사
    • 05 SUM-TOTAL PIC 9(04). 처럼 뒤에 초기화 구문을 생략하면, 메모리에 할당될 때 이전에 다른 프로그램이 쓰다 버린 쓰레기 값(Garbage Data)이나 공백(Space)이 그대로 남아있게 됨.
    • 이 상태에서 ADD CNT-IDX TO SUM-TOTAL 연산을 시도하는 순간, 숫자가 아닌 데이터와 더하기를 했다고 컴파일러가 판단하여 시스템이 즉시 전송 오류(SOC7 / Data Exception)를 일으키며 다운됨.
    • 따라서 무언가를 누적해서 담을 변수 뒤에는 반드시 VALUE ZERO 또는 로직 시작 전에 INITIALIZE 구문을 통해 메모리를 깨끗하게 청소해 두는 것이 코볼 프로그래밍의 철칙이다.