250x250
01-18 15:15
관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[코볼] 코볼 프로그램의 구조 본문

코볼(COBOL)

[코볼] 코볼 프로그램의 구조

프로그래밍막내 2021. 10. 18. 20:30
300x250
SMALL



 

*******

코드 인덱스를 정확히 안한점은 양해 부탁드립니다 :)

*******

코볼은 구글링을 해도 잘 설명된 절차적인 자료가 많지 않고 한국 유튜브 강의도 없습니다.
받은 코볼 책을 보고 공부하고 조금씩 기록해보려고 합니다.
저도 처음 공부하고 교육을 받은 사항이 아니니 부족한 점이 많습니다. 양해 부탁드립니다 :)

 


 

[코볼 프로그램의 구조]


코볼은 4개의 DIVISION으로 구성됩니다.
그리고 이것은 반드시 아래 순서대로 작성되어야 합니다.
참고로 코볼은 끝나는 부분에 .(점)을 붙입니다. 자바로 치면 ;(세미콜론)으로 보면 될 것 같습니다.

IDENTIFICATION DIVISION.
표제 부문 - 프로그램에 대한 설명 사항을 기술

ENVIRONMENT DIVISION.
환경 부문(생략 가능) - 컴퓨터 시스템과 파일 할당에 관한 사항을 기술

DATA DIVISION.
자료 부문 - 프로그램에서 사용되는 자료에 대한 사항을 기술

PROCEDURE DIVISION
처리 부문 - 프로그램의 실행 과정을 기술

먼저 구조를 간단히 나타내면 위와 같습니다. (악필 ㅈㅅ)


[IDENTIFICATION DIVISION(표제 부문)]

프로그램의 시작 부문으로 다음 7가지 사항을 기술합니다.
1. PROGRAM-ID. : 프로그램명
2. AUTHOR. : 작성자
3. INSTALLATION : 설치 장소
4. DATE-WRITTEN : 작성 날짜
5. DATE-COMPLIED : 컴파일 날짜
6. SECURITY : 보안 사항
7. REMARKS : 참고 사항
이 중에서 프로그램명은 반드시 기술해야하고 제일 처음에 기술해야합니다. 나머지는 생략가능합니다.
예시는 다음과 같습니다. 코드블록으로 작성하니 열이 이상하게 안맞네요. (코볼은 파이썬처럼 열칸(인덱스(을 규칙대로 맞춰줘야하고 매우 중요합니다.

IDENTIFICATION DIVISION. PROGRAM-ID. 
FruitSale. AUTHOR. 막내. 
INSTALLATION. 막내컴퍼니. 
DATE-WRITTEN. 2021.10.18. 
DATE-COMPLIED. 2021.10.18. 
SECURITY. 1급 기밀. 
SECURITY. 암호 : 125678. 
SECURITY. 너만 사용하길. 
REMARKS. 열대 과일 판매.

SECURITY와 REMARKS 는 한 사항을 여러 줄에 작성할 수 있습니다.


 

[ENVIRONMENT DIVISION(환경 부문)]


크게 두가지 SECTION 으로 구성됩니다.
1. CONFIGURATION SECTION - 컴퓨터 시스템에 대한 사항을 기술
1) SOURCE-COMPUTER. - 프로그램을 개발한 컴퓨터 기종
2) OBJECT-COMPUTER. - 프로그램이 사용되는 컴퓨터 기종
3) SPECIAL-NAMES. - 프로그램중에서 사용되는 특수 명칭

2. INPUT-OUTPUT SECTION - 입출력 관한 사항을 기술
1) FILE-CONTROL. - SELECT 문을 사용하여 입출력에 사용할 입출력 장치를 할당합니다.
2) I-O CONTROL. - 외부장치에로의 입출력 제어에 관한 사항을 기술합니다.

다음은 예시입니다. 참고로 * 는 주석을 의마합니다.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER COMPUTER-A.
OBJECT-COMPUTER COMPUTER-A.
SPECIAL-NAMES.
CURRENCT SIGN IS 'W'.
*-----------------------------------------------
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IN-File ASSIGN TO 'MyData.DAT'.
SELECT OUT-File ASSIGN TO 'YourData.DAT'.
I-O-CONTROL.
RETURN EVERY 100 RECORDS OF In-File.

생략이 가능한 만큼 많이 중요하지는 않는 부분이기도 한 것 같습니다.


 

[DATA DIVISION(자료 부문)]


프로그램의 처리 대상/결과/중간결과 등을 보관할 기억장소(메모리)를 할당하고, 그 구조를 정의합니다.

크게 4가지의 섹션으로 나누어집니다.

 

1. FILE SECTION (파일의 레코드 구조를 정의)

프로그램중에서 사용되는 파일의 레코드 구조에 의거, 파일 입출력용으로 사용되는 기억장소의 구조를 기술합니다. 

2. WORKING-STORAGE SECTION (작업용 기억장소를 정의)

프로그램 실행에 따른 자료를 보관할 기억장소(변수, 배열 등)를 정의합니다. 

3. LINKAGE SECTION (다른 프로그램과의 자료 연결 관계를 설정)

다른 프로그램으로부터 넘겨받는 자료(인자)를 보관할 기억장소를 정의합니다.

4. REPORT SECTION (레포트 파일에 대한 세부 사항을 기술)

레포트 파일을 어떠한 내용/구조로 할 것인가를 기술합니다. 컴퓨터 기종/컴파일러에 따라 이 섹션은 사용할 수 없는 경우도 있습니다. 

 

예시는 다음과 같습니다. 

DATA    DIVISION.

FILE     SECTION.

FD In-File.

01 In-Record.

    02 MakB PIC X(10).

    02 MakA PIC 9(3).

    02 MakB PIC 9(3).

*------------------------------------

WORKING-STORAGE    SECTION.

77 X    PIC    9(5).

77 Y    PIC    9(5).

*------------------------------------

LINKAGE    SECTION.

77 NeA    PIC    X(5).

77 NeB    PIX    9(3).

*------------------------------------

REPORT    SECTION.

RD Report-FIle.

 

 

 


[PROCEDURE DIVISION(처리 부문)]

 

프로그램의 실제 처리 과정을 기술하는 부문입니다. 즉 위에서 살펴본 ENVIRONMENT, DATA DIVISION은 프로그램 처리를 위한 준비 부문이고, PROCEDURE DIVISION은 처리를 집행하는 부문입니다. 

 

프로시저는 여러개로 분할할 수 있고 이 필요성은 다음과 같습니다.

1. GO TO, PERFORM 문으로 프로그램의 실행을 다른 곳으로 이동시킬 때

2. 내용이 길거나 복잡한 처리를 아흔ㄴ 루틴의 각 부분의 기능을 보다 용이하게 판독하기 위해

 

예시는 다음과 같습니다.

PROCEDURE        DIVISION.

Start-P

    DISPLAY    '원금 이자 합계'

    PERFORM    GyeSan-P 5 TIMES.

    GO TO    Keut-P.

 

GyeSan-P.

    COMPUTE IJa = WonGeum * 0.1.

    COMPUTE Hab = WonGeum + IJa.

    DISPLAY WonGeum ' ' IJa ' ' Hab.

    ADD    1000 TO WonGeum.

 

Keut-P.

    DISPLAY    '끝'

    STOP    RUN.

 

 

 

 

 

 

 


 

 

 

이상 코볼의 프로그램 구조에 대해 살펴보았습니다. 

댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!!

300x250
LIST
0 Comments
댓글쓰기 폼