ADD GuGer Sansu GIVING Hab.
DIVIDE HabGye BY 2 GIVING PyungGyun.
MOVE Yonee-Record TO Out-Record.
WRITE Out-Record.
ADD GuGer Sansu GIVING Hab. : GuGer과 Sansu를 더하여 그 결과를 Hab에 수록DIVIDE HabGye BY 2 GIVING PyungGyun : HabGye를 2로 나누어 그 결과를 PyungGyun에 수록MOVE Yonee-Record TO Out-Record : Yonee-Record를 Out-Record로 복사(이동)WRITE Out-Record. IDENTIFICATION DIVISION: 프로그램의 기본 정보를 정의하는 곳으로, 프로그램의 이름, 작성자, 버전 등과 같은 메타데이터를 포함합니다. // 표제 부문. 프로그램에 대한
설명사항을 기술.
ENVIRONMENT DIVISION: 프로그램이 실행되는 환경을 설정하는 곳으로, 파일 및 입출력 장치와 관련된 설정을 다룹니다. // 환경 부문(생략 가능). 컴퓨터 시스템과 파일 할당에 관한 사항을 기술.
DATA DIVISION: 프로그램의 데이터 구조를 정의하는 곳으로, 변수 및 데이터의 형식, 크기, 초기값 등을 선언합니다. // 자료 부문. 프로그램에서 사용되는 자료에 대한 사항을 기술.
PROCEDURE DIVISION: 실제 프로그램 로직이 작성되는 곳으로, 프로그램의 동작과 절차를 기술합니다. 프로시저(Procedure)들이 여기에 포함됩니다. // 처리 부문. 프로그램의 실행 과정을 기술.
IDENTIFICATION DIVISION.
PROGRAM-ID. WONRI. *> 프로그램 식별 부분
AUTHOR. YONEE. *> 프로그램 작성자 정보
REMARKS. 원리합계. *> 비고 정보
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
CURRENCY SIGN IS 'w'. *> 환경 설정 부분
DATA DIVISION.
WORKING-STORAGE SECTION.
77 I PIC 99 VALUE 1. *> 카운터 변수 I (초기값 1)
77 WonGeum PIC 9(5) VALUE 10000. *> 원금 변수 WonGeum (초기값 10000)
77 Ija PIC 9(4)V9 . *> 이자 변수 Ija (소수점 형식)
77 Hab PIC 9(5)V9. *> 합계 변수 Hab
PROCEDURE DIVISION.
SiJak-P.
DISPLAY "========================="
DISPLAY "원금 이자 합계"
PERFORM GyeSan-P 5 TIMES *> GyeSan-P 프로시저를 5번 반복 실행
GO TO Keut-P.
GyeSan-P.
COMPUTE Ija = WonGeum * 0.1 *> 이자 계산: 원금 * 0.1
COMPUTE Hab = WonGeum + Ija *> 합계 계산: 원금 + 이자
DISPLAY WonGeum " " Ija " " Hab *> 원금, 이자, 합계를 출력
ADD 10000 TO WonGeum. *> 원금에 10000을 추가
Keut-P.
DISPLAY "========================="
DISPLAY " "
DISPLAY "실행 끝"
STOP RUN. *> 프로그램 실행 종료
=========================
원금 이자 합계
10000 1000.0 11000.0
20000 2000.0 22000.0
30000 3000.0 33000.0
40000 4000.0 44000.0
50000 5000.0 55000.0
=========================
실행 끝
- PROGRAM-ID. : 프로그램명
- AUTHOR. : 작성자
- INSTALLATION. : 설치 장소
- DATE-WRITTEN. : 작성 날짜
- DATE-COMPILED : 컴파일 날짜
- SECURITY : 보안 사항
- REMARKS. : 참고 사항
IDENTIFICATION DIVISION.
PROGRAM-ID. WONRI. *> 프로그램명
AUTHOR. YONEE. *> 작성자
INSTALLATION. HQ Office. *> 설치 장소
DATE-WRITTEN. 2023-08-07. *> 작성 날짜
DATE-COMPILED. 2023-08-08. *> 컴파일 날짜
SECURITY. 암호 : 1234 *> 보안 사항
SECURITY. 관리부에서만 사용. *> 보안 사항
REMARKS. 원리합계 계산. *> 참고 사항
REMARKS. 요니은행/연말정산. *> 참고 사항
- CONFIGURATION SECTION : 컴퓨터 시스템에 대한 사항을 기술.
- INPUT-OUTPUT SECTION : 입출력 관련 사항을 기술
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. COMPUTER-X.
OBJECT-COMPUTER. COMPUTER-Y.
SPECIAL-NAMES.
CURRENCY SIGN IS 'W'.
* 특수 이름 섹션: 통화 기호를 'W'로 설정
* ------------------------------
INPUT-OUTPUT SECTION.
FILE-CONTROL.
* 파일 제어 섹션: 입력 및 출력 파일 설정
SELECT IN-FILE ASSIGN TO 'JaRyo.DAT'.
* IN-FILE 파일 선택: 'JaRyo.DAT' 파일에 연결
SELECT OUT-FILE ASSIGN TO 'Bogoseo.DAT'.
* OUT-FILE 파일 선택: 'Bogoseo.DAT' 파일에 연결
I-O-CONTROL.
* 입출력 제어 섹션
RETURN EVERY 100 RECORDS OF IN-FILE.
* IN-FILE의 모든 100개의 레코드마다 리턴
컴퓨터 시스템에 대한 사항을 기술
- SOURCE-COMPUTER. : 프로그램을 개발한 컴퓨터 기종
- OBJECT-COMPUTER. : 프로그램이 사용되는 컴퓨터 기종
- SPECIAL-NAMES. : 프로그램 중에서 사용되는 특수 명칭
(Mnemonic : 니모닉)
SPECIAL-NAMES. : 프로그램 중에서 사용되는 특수 명칭을 적음. 여기에 사용할 수 있는 예약어는 여러가지가 있으나 구체적인 내용은 컴퓨터 기종에 따라 다름. ex. CURRENCY SIGN IS 'W'
FILE-CONTROL : SELECT 문을 사용하여 <입출력에 사용할 입출력 장치>를 할당.
I-O-CONTROL : 외부장치에로의 입출력 제어에 관한 사항을 기술.
DATA DIVISION.
FILE SECTION.
FD F0 LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "In-File"
DATA RECORD IS In-Record.
01 In-Record.
02 Irum PIC X(10).
02 GuGer PIC 9(3).
02 SanSu PIC 9(3).
* ---------------------------------------------------
WORKING-STORAGE SECTION.
77 X PIC 9(5).
77 Y PIC 9(5).
* ---------------------------------------------------
LINKAGE SECTION.
77 InJa1 PIC X(5).
77 InJa2 PIC 9(3).
* ---------------------------------------------------
REPORT SECTION.
RD R0 REPORT IS STANDARD
HEADING "Report Heading"
FIRST DETAIL 2 LINES AFTER 1.
* 리포트 섹션: 리포트 파일 정의와 레포트 관련 사항
01 Rpt-Line.
05 Rpt-Field1 PIC X(10).
05 Rpt-Field2 PIC X(5).
* 리포트 라인 정의: 리포트 필드들에 대한 구조
01 Rpt-Footer.
05 Total-Amount PIC $$$$$$$.99.
* 리포트 푸터 정의: 총액 필드
01 Rpt-Summary.
05 Summary-Title PIC X(20) VALUE "Summary Report".
05 Summary-Amount PIC $$$$$$$.99.
* 리포트 서머리 정의: 서머리 제목과 금액 필드
* ---------------------------------------------------
준비 부문이지만, 그것에 대한 처리 집행 부문은 PROCEDURE DIVISION이다. PROCEDURE DIVISION.
SIJAK-P. * ----- SIJAK-P 프로시저 -----
DISPLAY "==========================="
DISPLAY "원금 이자 합계"
DISPLAY "==========================="
PERFORM GYESAN-P 5 TIMES.
GO TO KEUT-P.
GYESAN-P.
COMPUTE IJA = WONGEUM * 0.1.
* 원금에 10%의 이자 계산
COMPUTE HAB = WONGEUM + IJA.
* 이자를 원금에 더한 총액 계산
DISPLAY WONGEUM " " IJA " " HAB.
* 계산 결과 출력
ADD 10000 TO WONGEUM.
* 원금에 10000 추가
KEUT-P.
DISPLAY "========================="
DISPLAY " "
DISPLAY "실행 끝"
STOP RUN.
* 프로그램 종료
PROCEDURE DIVISION.
프로시저 이름. // 프로시저 시작
// 프로시저 내용
EXIT 프로시저 이름. // 프로시저 종료
COBOL의 프로시저와 자바의 메서드는 일부 유사한 측면이 있지만, 개념적으로는 조금 다릅니다.
유사성
- 모듈화: COBOL의 프로시저와 자바의 메서드는 모두 코드의 모듈화를 가능하게 합니다. 이들은 특정 작업 또는 동작을 논리적으로 묶어 관리할 수 있는 방법을 제공합니다.
- 재사용성: 양쪽 모두 프로그램의 재사용성을 증가시키는데 도움을 줍니다. 프로시저나 메서드를 작성한 후 여러 프로그램에서 호출하여 재사용할 수 있습니다.
- 코드 가독성: 프로시저와 메서드는 코드를 논리적인 블록으로 구성하여 가독성을 향상시키는데 도움을 줍니다.
차이점
- 선언 방식: COBOL의 프로시저는 PROCEDURE DIVISION 안에서 정의되며, 호출하기 위해 PERFORM 문을 사용합니다. 반면 자바의 메서드는 클래스 안에 정의되며, 호출하기 위해 해당 메서드의 이름과 필요한 매개변수를 사용합니다.
- 리턴 타입: 자바의 메서드는 일반적으로 값을 반환할 수 있으며, 반환 타입을 지정합니다. COBOL의 프로시저는 일반적으로 값을 반환하지 않습니다.
- 프로그래밍 언어 특성: COBOL은 업무 처리 중심의 프로그래밍 언어이며, 프로시저는 업무 로직을 처리하기 위해 사용됩니다. 자바는 다목적 프로그래밍 언어이며, 메서드는 다양한 작업을 수행할 수 있습니다.
- 오버로딩: 자바의 메서드는 오버로딩을 지원하여 같은 이름의 메서드를 여러 형태로 정의할 수 있습니다. COBOL의 프로시저는 오버로딩을 지원하지 않습니다.
요약하면, COBOL의 프로시저와 자바의 메서드는 코드 모듈화와 재사용성을 위한 목적에서 유사한 역할을 하지만, 프로그래밍 언어의 특성에 따라 구현 방식이 다를 수 있습니다.
PROCEDURE DIVISION은 필요한 경우 여러 개의 프로시저로 분할하여 기술한다.
이와 같은 필요성은 다음과 같은 경우에 발생한다.
- GO TO, PERFORM 문으로 프로그램의 실행을 다른 곳으로 이동시킬 때.
- 내용이 길거나 복잡한 처리를 하는 루틴의 각 부분의 기능에 대한 가독성을 증대시킬 때.
프로그램의 각 부분에 프로시저 명을 지정할 때는 다음 사항에 유의해야 함.
- 프로시저명의 끝에
.을 적는다.- 프로시저 명이 적힌 줄부터 다음 프로시저 명이 적힌 줄까지가 하나의 프로시저로 간주, 처리된다.
IDENTIFICATION DIVISION.
PROGRAM-ID. EXAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 X PIC 9(5).
01 Y PIC 9(5).
LINKAGE SECTION.
01 InData PIC X(10).
01 OutData PIC X(10).
PROCEDURE DIVISION.
PERFORM Initialization
PERFORM Calculate-Sum
PERFORM Display-Result
PERFORM Finalization
GOBACK.
Initialization.
MOVE 10000 TO X
MOVE 5000 TO Y.
Calculate-Sum.
COMPUTE Result = X + Y.
Display-Result.
DISPLAY "Sum: " Result.
Finalization.
MOVE "Finished" TO OutData.
END PROGRAM EXAMPLE.
IDENTIFICATION DIVISION.
PROGRAM-ID. EXAMPLE.
* 프로그램 식별 정보 섹션: 프로그램 이름 정의
DATA DIVISION.
WORKING-STORAGE SECTION.
01 X PIC 9(5).
01 Y PIC 9(5).
* 데이터 섹션: 변수 X와 Y를 선언
LINKAGE SECTION.
01 InData PIC X(10).
01 OutData PIC X(10).
* 링크 섹션: 프로그램과 다른 프로그램 간의
* 데이터 교환을 위한 변수 InData와 OutData를 선언
PROCEDURE DIVISION.
* 프로시저 섹션 시작
PERFORM Initialization
* Initialization 섹션 호출
PERFORM Calculate-Sum
* Calculate-Sum 섹션 호출
PERFORM Display-Result
* Display-Result 섹션 호출
PERFORM Finalization
* Finalization 섹션 호출
GOBACK.
* 프로그램 종료
Initialization.
* 초기화 섹션 시작
MOVE 10000 TO X
* 변수 X에 10000을 대입
MOVE 5000 TO Y.
* 변수 Y에 5000을 대입
Calculate-Sum.
* 합계 계산 섹션 시작
COMPUTE Result = X + Y.
* 변수 Result에 X와 Y의 합을 계산하여 대입
Display-Result.
* 결과 출력 섹션 시작
DISPLAY "Sum: " Result.
* 합계를 화면에 출력
Finalization.
* 마무리 섹션 시작
MOVE "Finished" TO OutData.
* 변수 OutData에 "Finished"를 대입
END PROGRAM EXAMPLE.
* 프로그램 종료