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

[COBOL 기초] 조건문(IF ~ END-IF)으로 합격/불합격 판별하는 COBOL code 작성법

by 오!쎈세! 2026. 6. 22.
이전 편에서 구한 평균 점수 데이터를 바탕으로, 특정 기준 점수를 넘겼을 때 합격(PASS) 또는 불합격(FAIL)을 판별하는 조건문 제어 로직을 알아본다.
🟪 1. 조건 판별용 문자 변수 추가 (DATA DIVISION)
판별된 결과 문자열("PASS" 또는 "FAIL")을 담아두기 위해 4바이트 크기의 문자형 변수(PIC X(04))를 추가로 선언해 준다.
cobol code
12345678901234567890123456789012345678901234567890123456789012345678901234567890
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  SCORE-RECORDS.
           05  KOR-SCORE   PIC 9(03)     VALUE 090.
           05  ENG-SCORE   PIC 9(03)     VALUE 085.
           05  MAT-SCORE   PIC 9(03)     VALUE 095.
           05  TOTAL-SUM   PIC 9(04)     VALUE ZERO.
           05  AVG-RESULT  PIC 9(03)V99   VALUE ZERO.
*          -------------------------------------------------------------
*          [결과 변수 추가] 합격/불합격 문자열을 저장할 4바이트 공간 선언
*          -------------------------------------------------------------
           05  PASS-FAIL   PIC X(04)     VALUE SPACES.

       01  PRINT-RECORDS.
           05  AVG-PRINT   PIC ZZ9.99.
 
 

🟩 2. IF 조건문을 활용한 합격 판별 (PROCEDURE DIVISION)
평균이 60점 이상이면 "PASS", 60점 미만이면 "FAIL"을 결과 변수에 넣는 조건문 영역임. 조건문(IF)과 문장 종료자(END-IF)는 무조건 B영역(12칸) 안쪽에서 수행되어야 한다.
cobol code
12345678901234567890123456789012345678901234567890123456789012345678901234567890
       PROCEDURE DIVISION.
       MAIN-LOGIC SECTION.
       A000-START.
*          [기본 연산] 총점과 평균 계산 수행
           COMPUTE TOTAL-SUM = KOR-SCORE + ENG-SCORE + MAT-SCORE.
           COMPUTE AVG-RESULT = TOTAL-SUM / 3.
           MOVE AVG-CALC TO AVG-PRINT.

*          -------------------------------------------------------------
*          [COBOL code 조건문 구조] IF ~ ELSE ~ END-IF 제어 흐름
*          -------------------------------------------------------------
           IF AVG-RESULT GREATER THAN OR EQUAL TO 60.00
               MOVE "PASS" TO PASS-FAIL
           ELSE
               MOVE "FAIL" TO PASS-FAIL
           END-IF.
*          -> GREATER THAN OR EQUAL TO 대신 기호(>=)를 사용해도 무방함.
*          -> 옛날 코볼과 달리 현대 코볼은 명시적 종료자 END-IF를 쓰는 것이 안전함.

*          -------------------------------------------------------------
*          [화면 출력] 조건문 판별 결과 출력
*          -------------------------------------------------------------
           DISPLAY "--- FINAL REPORT ---".
           DISPLAY "AVERAGE : " AVG-PRINT.
           DISPLAY "RESULT  : " PASS-FAIL.

           STOP RUN.
 
 

💡 [실무 팁] 코볼 조건문 작성 시 마침표(.) 조심하기
타 프로그래밍 언어와 달리 코볼 조건문 내부에서 마침표(.)를 잘못 찍으면 치명적인 논리 오류가 발생함.
  • 잘못된 예시 (문장 중간에 마침표를 찍는 경우)
    cobol code
               IF AVG-RESULT >= 60.00
                   MOVE "PASS" TO PASS-FAIL.   <-- 여기에 마침표를 찍어버림!
               ELSE
                   MOVE "FAIL" TO PASS-FAIL
               END-IF.
    
     
     
  • 문제점 분석
    • 코볼 컴파일러는 문장 중간에 마침표(.)를 만나면 IF 조건문 전체가 거기서 완전히 끝난 것으로 인식함.
    • 따라서 뒤에 오는 ELSE와 END-IF 구문을 조건문 짝꿍이 아닌 독단적인 명령어로 오해하여 구문 에러(Syntax Error)를 발생시킴.
    • 조건문 내부의 실행 명령줄 끝에는 마침표를 절대 찍지 말고, END-IF가 완전히 끝나는 맨 마지막에만 마침표를 딱 한 번 찍어주는 것이 안전함.