1. Window > Appearance 에서 Font settings > Change.. 선택

 

2. 일본어를 지원하는 폰트로 변경하고, 언어를 일본어로 변경

 

3. Window > Translation 에서 Remote character set 설정을 'Use font encoding' 으로 바꿔주기

 

4. 콘솔에서 일본어가 제대로 출력되는 것을 확인

사내 메신저로 슬랙을 사용중인데, 알람 팝업이 항상 제대로 보이지 않아 불편했다.

어느 날 보니 창 뒤에 숨어서 뜨고 있었다.

...

알고보니 슬랙 알림 설정 문제가 아니라 컴퓨터 설정 문제였다.

해결 방법은 다음과 같다. (OS가 일본어라 기본 언어가 일본어이다.)

 

1. Windows 10에서 시작 메뉴 > 설정 > 시스템 클릭 후 왼쪽 사이드바에서 '알림 및 작업' 을 클릭

 

2. 목록에서 Slack을 찾아 우선순위를 상 으로 설정한다.

 

이후 슬랙 알림을 정상적으로 받을 수 있다.

 

※ 내가 보려고 만든 대출 상환 방식 정리글

 

① 원금균등상환

매월 대출원금을 균등하게 나눠 갚는 방식

 

 

② 원리금균등상환

매월 대출원금과 이자를 합한 금액을 동일하게 납부하는 방식

 

 

③ 기한일괄

1) 이자 일괄

채권 만기 때 원금과 이자를 한꺼번에 투자자에게 주는 채권. (이자만기일괄채)

* 참고 사이트 :

https://moneyworld.jp/page/term.html?word=%E5%88%A9%E5%AD%90%E6%BA%80%E6%9C%9F%E4%B8%80%E6%8B%AC%E5%82%B5

 

2) 이자 분할

이자만 갚다가 마지막에 원금을 전부 갚는 방식. (=만기일시상환)

 

 

벌룬형(バルーン返済)

고객이 원하는 대로 상환하는 방식. 일본에 있는 상환 방식이고, 우리 나라에는 없다.

 e.g.) 5개월동안 80만원을 갚다가

       나머지 기간동안은 자동주기복합방식으로 상환할게요.

       => , 이자율이 높다거나 그런 조건이 붙을 수 있음.

아래는 번역기 돌린 내용.

벌룬상환(일부원리균등상환 후 일괄상환)이란 설정한 상정기간을 기준으로 산출한 원리균등상환금액(혹은 원금균등상환금액)을 지급하고 마지막 회에 잔원금을 일괄 지급하는 변제방식을 말합니다. 마지막회에 잔원금을 지불하기 위해 지불금액이 마지막에 부풀어 오르는 모양이 풍선(風線)과 비슷하다고 해서 붙여진 이름입니다. 차입 기간과는 별도로 차입 기간보다 긴 상정 기간을 설정합니다. (: 차입기간 5, 상정기간 25)

* 참고 사이트 :

https://www.eloan.co.jp/dictionary/21/

https://www.ifinance.ne.jp/glossary/loan/loa215.html

 

PROCEDURE DIVISION


  PROCEDURE DIVISION 은 컴퓨터가 처리할 내용을 구체적으로 지시하는 명령문을 기술한다. COBOL 명령문을 이용하여 구조적인 처리 순서에 맞도록 일의 진행 순서를 기술한다.

 PROCEDURE DIVISION은 데이터의 실제 처리를 위하여 명령문이 기술되는데 SECTION이름, PARAGRAPH 이름은 프로그래머가 규칙에 따라서 임의로 부여하여 사용할 수 있으며, SECTION이름, PARAGRAPH 이름은 8 column, 명령문은 12column부터 기술한다. 또 한줄에 여러개의 명령문을 기술할 수 있으며, 조건문의 범위에 포함되지 않는 문장 끝에는 반드시 마침표(.)를 찍어야 한다.

 

** ------------------------------------------------
** 가장 단순한 PROCEDURE DIVISION. 형식
** ------------------------------------------------
       PROCEDURE   DIVISION.
       SIJAK[.]                         [ SECTION.]
            DISPLAY " HELLO COBOL ! ".
            STOP  RUN.
            
** ------------------------------------------------
** PROCEDURE   DIVISION   형식  1
** ------------------------------------------------
       PROCEDURE   DIVISION     [ USING  데이터이름-1 ... ].
     [   DECLARATIVES.
     섹션 이름 SECTION [ 세그먼트 번호 ].  declarative 문장...
       [ 패러그래프 이름.   [ 문장 ] ... ] ...
      END  DECLARATIVES.  ]
     섹션 이름   SECTION  [ 세그먼트 번호 ].
       [ 패러그래프 이름.    [ 문장 ] ... ] ...
     [ END  PROGRAM. ]
     
** ------------------------------------------------
** PROCEDURE   DIVISION   형식  2
** ------------------------------------------------
 PROCEDURE   DIVISION     [ USING  데이터이름-1 ... ].
      [ 패러그래프 이름.    [ 문장 ] ... ] ...
     [ END  PROGRAM. ]

 

(1) USING 구

  USING 구 주프로그램 과 부프로그램이 공통으로 사용할 수 있는 데이터 항목을 지정하는 명령으로 CALL문의 제어 아래서 존재한다.  USING은 주프로그램 CALL문, 부프로그램 PROCEDURE DIVISION의 첫 머리에 기술된다. 그리고 PROCEDURE DIVISION USING문에 지정된 데이터 항목들은 부프로그램의 LINKAGE SECTION에 정의된 항목들이어야 한다.

1. 입˙출력 명령문.

(1) ACCEPT 문

** --------------------------------------
** ACCEPT 형식1
** --------------------------------------
            ACCEPT  데이터 항목  FROM   [  DATE / DAY / DAY-OF-WEEK / TIME ]
            [END-ACCEPT]
** --------------------------------------
** 사용예)
** --------------------------------------
        DATA  DIVISION.
        WORKING-STORAGE  SECTION.
         01 CUR-DATE.
              03 YY          PIC 9(04).
              03 MM       PIC 9(02).
              03 DD         PIC 9(02).
          .........................................
          PROCEDURE  DIVISION.
          GET-DATE.
              ACCEPT C-DATE FROM DATE.
              DISPLAY 'DATE = ' C-DATE.
              ....................................................
              STOP  RUN.

 

- ACCEPT 문은 입력 자료를 데이터 파일이 아닌 콘솔이나 터미널(keyboard) 에서 직접 입력 받고자 할 경우에 사용한다. 
- DATE는 8자리로 YYMMDD 형태로 현재 사용중인 컴퓨터가 기억하고 있는 날짜를 년(YYYY), 월(MM), 일(DD)로 입력 받는다.
- DAY는 7자리 수치로 YYYYDDD 형태로 현재날짜를 나타내며 YYYY는 연도 DDD는 YY년도의 현재 일까지를 일자수(Julian date)로 계산하여 날짜 수를 나타내 준다.
- DAY-OF-WEEK는 1자리 수치로 오늘의 요일을 월요일을 1로 일요일은 7로 하여 그 수치를 나타내준다.
- TIME은 8자리 수치로 HHMMSSOO 형태로 현재 시간을 24시간 기준으로 나타내준다.  HH는 시간, MM은 분, SS는 초, OO는 100분의 1초를 의미한다. 
- 참고사항으로는 Y2K가 적용되는 IBM OS 에서는 FUNCTION 함수가 사용된다.
  사용예 : MOVE  FUNCTION  CURRENT-DATE (1:8)  TO  A-DATE.

** ------------------------------------------
** ACCEPT 문 사용형식
** ------------------------------------------
            ACCEPT  identifier-1
                              [ ,UNIT { identifier-2 } ]
                              [ ,LINE { identifier-3 } ]           [ ,POSITION { identifier-4 } ]
                              [ ,SIZE { identifier-5 } ]       ,PROMPT { 리터럴-5 }
                                      [ UPDATE ] [ ECHO ] [ CONVERT ] [TAB ]
                                      [ BLINK ] [ REVERSE ]
                               [ NO BEEP ] ERASE  ( [EOL ][   HIGH ] )
                                                                    (  [EOS] [LOW ] )
                                                                    (              [OFF] )
                               [ ON EXCEPTION  identifier-6 { NEXT SENTENCE } ]
                                         [ NOT ON EXCEPTION imperative-statement-2 ]
              [ END-ACCEPT] 
** ------------------------------------------
** 사용예제   
** ------------------------------------------
            PROCEDURE DIVISION.
            ...
           ACCEPT  TODAT-DATE.
           ACCEPT  AIN-REC     ON ESCAPE   GO TO LAST-RTN.
           ACCEPT  YOUR-NAME  LINE  21  POSITION  50
                                                         NO BEEP ECHO PROMPT "-"
                                                         ON  EXCEPTION CUSOR
                                                         MOVE  CUSOR TO CUSOR.


① LINE 구는 ACCEPT에서 데이터를 받아들이는 화면의 행(LOW)의 위치를 지정한다.  일반적으로 사용하는 화면은 1행부터 24행으로 되어 있으며, LINE 0으로 지정하거나 생략하면 현재 커서가 위치한 다음 행을 의미한다.

② POSITION 구는 터미널 화면에서 데이터를 ACCEPT 하는 열(COLUMN)의 위치를 지정하며 화면 왼쪽열이 1, 맨 우측열이 80에 해당된다.

③ SIZE 구는 지정한 identifier-5, 리터럴-4의 값에 따라 터미널에서 입력받을 수 있는 데이터의 길이가 결정된다.   SIZE구가 생략되었거나 SIZE 0으로 기술되면 identifier-1 기억공간의 크기가 사용되면 80보다 큰 길이는 80으로 처리된다.   키보드로부터 입력한 문자 수가 identifier-1 크기와 같으면 ENTER키를 누르지 않아도 입력이 완료되지만 identifier-1의 크기보다 문자수가 적으면 ENTER키를 눌러야만 입력이 완료된다.

⑤ ERASE 구가 지정되면 화면이 지워진다.

- NO BEEP 구 : ACCEPT문을 만나면 "삑"소리가 나게되는데 NO BEEP구를 지정하면 소리가 나지 않는다.
- BLINK 구 : 화면상의 PROMPT 문자와 데이터를 깜박이게 한다.
- ON EXCEPTION 구 : 유효하지 않은 문자가 입력되었을 때 ON EXCEPTION 구 뒤의 명령문을 수행한다.

 

 

 (2) DISPLAY 문

** --------------------------------------
** DISPLAY 문 사용형식
** --------------------------------------
            DISPLAY    identifier-1
                              [ ,UNIT { identifier-2 } ]
                              [ ,LINE { identifier-3 } ]           [ ,POSITION { identifier-4 } ]
                              [ ,SIZE { identifier-5 } ]     [ BLINK ] [ REVERSE ]
                               [ BEEP ] ERASE  ( [EOL ][   HIGH ] ) 
                                                             (  [EOS] [LOW ] )
** --------------------------------------
** 사용예 )
** --------------------------------------
            PROCEDURE DIVISION.
            ....
                ACCEPT  TODAY-DATE.
                DISPLAY " " ERASE.
                DISPLAY TODAT-DATE.
               DISPLAY " ************************ " LINE 02 POSITION 30.
               DISPLAY " **  고객관리 MAIN 화면  ** "  LINE 03 POSITION 30.
               DISPLAY " ************************ " LINE 04 POSITION 30.
               DISPLAY SPACES LINE 20 POSITION 01 SIZE 80 REVERSE.

 

 

(3) OPEN 문
  - OPEN 문은 ENVIRONMENT DIVISION과 DATA DIVISION에서 기술한 입.출력화일에 대하여 자료의 입.출력이 가능하도록 준비시켜 주는 명령이다.  이미 OPEN된 파일은 다시 OPEN할 수 없으나 CLOSE한 후에 OPEN 명령을 사용할 수 있으며, 하나의 OPEN문에 여러 파일을 지정할 수 있다.

** ------------------------------------
** OPEN 문 사용 형식
** ------------------------------------
          OPEN  { INPUT  파일 이름-1 [WITH LOCK]  /
                  [ REVERSED   /   WITH NO REWIND ]
              { OUTPUT 파일 이름-2 [WITH LOCK]
                  [ REVERSED   /    WITH NO REWIND ]
              { I-O  파일이름-3  [WITH LOCK]
              { EXTEND  파일 이름-4  [WITH LOCK]       
 
** ------------------------------------
** 일반적인 OPEN 문 사용 예
** ------------------------------------
     PROCEDURE DIVISION.
          OPEN  INPUT   IN-F   OUTPUT   PR-F  OUTPUT OUT-F.
          ...
          CLOSE IN-F PR-F OUT-F. 
          STOP RUN.


-1- INPUT 구
 파일이 입력으로 사용하기 위해서는 OPEN 다음에 INPUT으로 기술한다.
① 파일의 레코드를 읽어들일 때 사용하며 레코드 포인터를 첫 번째 레코드로 이동시켜 준다.
② 만약 파일에 데이터 레코드가 없다면 READ문에서 AT END 다음에 기술된 명령문을 수행한다.
③ INPUT으로 지정된 파일은 이미 만들어져 있어야 하고 READ명령만 사용할 수 있다.

-2- OUTPUT구
파일이 출력으로 사용하기 위해서는 OPEN 다음에 OUTPUT으로 기술한다.
① 파일의 데이터 레코드를 출력하기 위하여 사용한다. 즉 DISK 장치를 사용하는 경우에는 새로운 파일이 만들어지고 프린터장치를 사용하는 경우라면 데이터가 프린터로 출력됨을 의미한다.
② OUTPUT으로 지정된 파일은 새로 만들어지는 파일이므로 WRITE 명령만 사용할 수 있다.

-3-  I-O 구
파일이 입.출력 공용화일일 경우에는 OPEN다음에 I-O으로 기술한다.
① 파일에 대해서 입.출력을 모두 실행할 수 있으며 I-O로 지정된 파일은 이미 만들어져 있어야 한다.
② I-O문은 프린터에 대해서는 사용할 수 없고 랜덤 장치 형태로 지정된 파일에만 사용할 수 있다.
③ 만약 파일에 데이터 레코드가 없다면 READ문에서 AT END문을 수행한다.

-4- EXTEND 구

순차화일에 새로운 데이터 레코드를 추가실킬 때 사용한다.
① 순차화일에 대해서만 사용하며 레코드 포인터를 마지막 레코드 다음에 위치시킨다.
② EXTEND 구로 지정된 파일은 WRITE문만 사용할 수 있다.

 

-5- REVERSED 구
REVERSED 구는 테이프 장치에 대해서만 사용한다.
① 테이프 파일을 사용할 경우 파일의 끝에서 거꾸로 되읽기를 하고자할 때 사용한다.

-6- NO REWIND 구
NO REWIND 구는 테이프 장치에 대해서 사용한다.

-7- 특정 파일을 독점으로 사용 하도록 한다.
① LOCK구는 처리한 파일을 CLOSE 할 때 파일의 손상을 방지하기 위하여 그 프로그램 내에서는 더 이상 입.출력으로 사용할 수 없도록 조치는 명령이다.
② LOCK을 사용하면 그 프로그램 처리가 완료될 때 가지 다시 OPEN,CLOSE할 수 없다.

 

- 상대.색인화일의 OPEN 규정

화일ACCESS모드 명령문 OPEN MODE
INPUT OUTPUT INPUT-OUTPUT
순차
SEQUENTIAL
READ O X O
WRITE X O X
REWRITE X X O
START O X O
DELETE X X O
랜덤
RANDOM
READ O X O
WRITE X O O
REWRITE X X O
START X X X
DELETE X X O
동적
DYNAMIC
READ O X O
WRITE X O O
REWRITE X X O
START O X O
DELETE X X O

 

(4) CLOSE 문
  - 입.출력을 위하여 OPEN 시켰던 파일은 사용이 종료되었으면 CLOSE 함으로써 파일을 안전하게 보전할 수 있다.  하나의 CLOSE문에 여러개의 파일을 기술할 수 있다.

** ---------------------------------------
** CLOSE 문 사용 형식
** ---------------------------------------
       CLOSE  파일이름-1   [  UNIT [ WITH NO REWIND ] ] ]
                                        [  WITH { NO REWIND }   ]
                                        [            { LOCK  }   ]
                                        [             REEL         ]

** ---------------------------------------
** 일반적인 CLOSE 문 사용 예
** ---------------------------------------
          PROCEDURE  DIVISION.
          ....
          CLOSE  IN-F   PR-F  OUT-F.
          STOP  RUN.

① REEL / UNIT 구 :  하나의 파일이 여러 개의 테이프 리일이나 디스크에 분산 수록된 경우 특정한 reel 이나 장치에 대하여 LCOK 시키고자 할 경우 사용한다(일반적으로 생략)
② NO REWIND 구 : 순차화일로 되어있는 테이프 장치에 대해서만 사용한다.(일반적으로 생략)
③ LOCK 구 : 특정 파일을 독점으로 사용하도록 한다.(일반적으로 생략)
  

(5) READ 문
  - READ 명령문은 외부 기억장치의 입력 파일에서 주기억장치의 논리적 레코드영역으로 레코드를 읽어들인다.  READ문이 수행되기 전에 파일은 반드시 OPEN INPUT 이나 I-O로 되어 있어야 한다.

** ------------------------------------------------
** 순차 파일에 대한 READ 문 (형식 1)
** ------------------------------------------------
       READ 파일이름 [ NEXT ] RECORD [ INTO identifier ]
                     [ AT END 무조건문-1 ]
                     [ NOT AT END 무조건문-2 ]
       [ END-READ ]      
** ------------------------------------------------
** 상대(직접) 파일 및 색인(index) 파일에 대한 READ 문 (형식 2)
** ------------------------------------------------
       READ 파일이름 RECORD [ INTO identifier ]
                          [ INVALID  KEY  무조건문-1 ]
                     [ NOT INVALID    무조건문-2 ]
       [ END-READ ]
** ------------------------------------------------
** 상대 파일 및 색인(index) 파일에 대한 READ 문 (형식 3)
** ------------------------------------------------
  READ 파일이름 RECORD [ INTO identifier ]
                      [ KEY  IS  데이터 이름 ]
                     [ INVALID  KEY  무조건문-1 ]
                     [ NOT INVALID KEY 무조건문-2 ]
       [ END-READ ]


** ------------------------------------------------.
** 일반적인 READ 문 사용 예
** ------------------------------------------------
   PROCEDURE   DIVISION.
   222-READ-START.
          READ  IN-F  AT  END
                                        GO TO 111-LAST RTN.
          ....................
          GO TO  222-READ-START.
    111-LAST-RTN.
           ....................
          STOP RUN.    
** ------------------------------------------------
** READ 문 사용 예 2
** ------------------------------------------------
                 INPUT-OUTPUT               SECTION.                              
                 FILE-CONTROL.                                                    
                     SELECT  JUSO-F     ASSIGN  TO  JUSOFILE                
                                  ACCESS  MODE  IS  RANDOM                   
                                  ORGANIZATION  IS  INDEXED                  
                                  RECORD  KEY   IS  JUSO-CODE-KEY.            
                    SELECT  OUT-F  ASSIGN  TO  OUTFILE.       
                ......
               PROCEDURE                      DIVISION.
                ......
                MOVE  JUSO-KEY         TO  JUSO-CODE-KEY.
                READ  JUSO-F  INVALID                                  
                          GO  TO  240-KEY-SKIP.                                  
                  MOVE  JUSO-REC          TO  OUT-REC.                          
                  WRITE  OUT-REC.                                              
          240-KEY-SKIP.  
          
                 READ  MST-F
                           RECORD   KEY   IS   MST-KEY
                           INVALID    KEY  DIPLAY "해당자료 없습니다."
                          GO  TO  PROGRAM-END.

 

-1- 형식1 은  순차(LINE SEQUENTIAL , BINARY SEQUENTIAL)에서 사용된다.

-2- 형식2 는 상대화일, 색인화일에서 사용하며, 순차 엑세스모드에 대해서만 사용할 수 있다.

-3- 형식3 는 상대화일(RELATIVE FILE) 및 색인화일(INDEX FILE) 에서 사용한다. 레코드가 랜덤(Random)하게 읽혀질 때 ACCESS MODE IS RANDOM이나 ACCESS MODE IS DYNAMIC에서 사용한다.
① AT END 구
  READ 명령이 실행될 때 파일의 끝이인 경우에 AT END 뒤의 명령문이 실행된다.
② NEXT 구
 ACCESS MODE IS DYNAMIC 파일을 순차적으로 읽을 때만 사용한다.
③ KEY IS 구
  검색하려는 레코드 키를 설정하며 상대.색인 파일에만 사용할 수 있다. KEY IS구에 지정된 데이터 이름 항목은 파일명과 관련된 레코드내에 있어야 하며 SELECT문에서 키 항목으로 정의 되어 있어야 한다.
④ INVALID KEY 구
  데이터 파일에서 읽으려는 키가 없을 때 INVALID KEY 뒤의 명령문을 실행한다.

 

 

(6) WRITE 문
  - 주기억장치(메모리)내에 있는 데이터의 레코드를 데이터 파일에 저장 또는 프린터로 출력시킨다.  이 명령문이 실행되기 전에 파일은 반드시 OPEN OUTPUT이나 EXTEND 또는 I-O로 되어있는 상태이어야 한다.  WRITE문의 레코드 이름은 FILE SECTION에서 정의된 논리 레코드의 이름이다.

** -------------------------------------------
** 순차 파일 및 프린트 WRITE 문 사용 형식 1
** -------------------------------------------
      WRITE 레코드 이름 [ FROM { identifier }   ]
          [ { BEFORE }  ADVANCING identifier } ]
             { AFTER   }
      [ END-WRITE ]
** -------------------------------------------
** 상대화일 및 색인화일 WRITE 문 사용 형식 2
** -------------------------------------------
      WRITE 레코드 이름 [ FROM { identifier }   ]
          [ INVALID KEY 무조건문-1 ]
          [ NOT INVALID KEY 무조건문-2 ]
      [ END-WRITE ]
** -------------------------------------------
** 일반적인 WRITE 문 사용 예
** -------------------------------------------
          WRITE  PR-R  AFTER   PAGE.
          WRITE  PR-R  FROM   HEAD-TITLE   AFTER 3.
          WRITE  PR-R  FROM    PR-1.
          WRITE  PR-R.   
          WRITE  IDX-REC   FROM    IN-REC INVALID KYE
                      DISPLAY   "같은 데이터가 파일에 이미 존재함 " BEEP
                      GO  TO  100-CHECK-DATA.


-1- 형식1은 순차화일(LINE SEQUENTIAL, BINARY SEQUENTIAL)이나 프린트 파일에서 사용된다.


-2-  형식2 는 상대화일 및 색인화일에서 사용된다.
① FROM 구
  FROM 다음의 identifier-1은 출력하고자 하는 레코드로서 identifier-1의 내용을 레코드 이름으로 옮긴후에 출력을 한다.
②ADVANCING 구
  ADVANCING구는 데이터를 프린터로 출력할 때 행 간격을 조정하기 위해서 사용한다.  생략하는 경우에는 AFTER ADVANCING 1 LINE이 기술된 것으로 간주한다.
  ㅇ BEFORE : 데이터를 인쇄한후에 지정된 행만큼 출력용지를 이동시킨다.
  ㅇ AFTER : 데이터를 인쇄하기 전에 지정된 행만큼 출력용지를 이동시킨다.
 ㅇ PAGE : 한 페이지를 이동시킨다.  즉 출력용지를 한 페이지 넘긴다.
③ INVALID KEY 구
  상대화일,색인화일에서 같은 레코드를 WRITE하려 하거나 파일의 영역을 벗어나서 WRITE하려고 할 때 INVALID KEY 뒤의 명령문을 수행한다.



(7) REWRITE 문
  - 이미 입력된 특정 레코드를 읽어들여 처리한후 다시 파일에 기록할 때 사용하며, REWRITE문이 수행되는 모든 파일은 OPEN I-O로 되어 있어야 한다.

** -----------------------------------
** REWRITE 문 사용 형식
** -----------------------------------
      REWRITE 레코드 이름 [ FROM { identifier }   ]
            [ INVALID  KEY  무조건문-1 ]
            [ NOT INVALID KYE 무조건문-2 ]
     [ END-REWRITE ]      
     
** -----------------------------------
** REWRITE 문 사용 예
** -----------------------------------
    REWRITE   DATA-R  FROM  EDIT-DATA-R .

 

① 랜덤(RANDOM)하게 접근할 수 있는 파일에 대해서만 사용한다.
② 레코드 이름은 FILE SECTION에 정의된 논리적 레코드이름으로 SELECT문에서 반드시 ASSIGN TO RANDOM으로 기술되어야 한다.
- INVALID 구 : 상대화일에서 순차 엑세스 모드 파일에 대한 REWRITE 문에는 INVALID KEY가 지정될 수 없다.

 
(8) DELETE 문
  - 이미 입력되어 있는 특정 레코드를 데이터 파일에서 삭제할 때 사용한다.

** -------------------------------------
** DELETE 문 사용 형식
** -------------------------------------
       DELETE 파일 이름 RECORD
            [ INVALID  KEY  무조건문-1 ]
            [ NOT INVALID KYE 무조건문-2 ]
       [ END-DELETE ]      
 
** -------------------------------------
**일반적인 DELETE 문 사용 예
** -------------------------------------
        DELETE  KEY-FILE  RECORD.

① DELETE 문이 수행되는 모든 파일은 OPEN I-O로 되어야 한다.
② 순차화일에서 레코드의 삭제는 DELETE 문 사용전에 읽혀진 레코드가 삭제된다.
③ ACCESS MODE IS RANDOM 또는 ACCESS MODE IS DYNAMIC 파일의 레코드의 삭제는 키로 지정된 데이터 항목의 값으로 레코드를 삭제한다.
④ 만일 지정된 킷값의 레코드가 없으면 INVALID KEY문을 수행하게 된다. 순차 파일의 DELETE문에는 INVALID KEY구가 지정될 수 없다.

 
(9) START 문
  - 파일에서 레코드를 검색할 경우 레코드 포인터(레코드가 있는 기억장소의 위치)를 지정하여 지정된 레코드부터 순차적으로 검색하고자 할 경우에 사용한다.

** -------------------------------------------
** START 문 사용 형식
** -------------------------------------------
       START 파일이름 KEY [ IS = ] 데이터 이름
                                       [ IS > ]
                                       [ IS < ]
            [ INVALID  KEY  무조건문-1 ]
            [ NOT INVALID KYE 무조건문-2 ]
      [ END-START ]      
** -------------------------------------------
** START 문 사용 예
** -------------------------------------------
       START  WORK-FILE KEY IS NOT < WORK-KEY
                    INVALID KEY
                         GO TO 100-LAST-RTN.

① 사용하려고 하는 모든 파일은 OPEN INPUT이나 I-O로 되어야 한다.
② ACCESS MODE IS SEQUENTIAL이나 ACCESS MODE IS DYNAMIC으로 지정되어야 한다.
③ 지정된 킷값과 관계연산에 일치하는 레코드가 없으면 INVALID KEY문이 수행된다.
④ KEY 구 : 레코드 포인터를 결정하는조건을 기술한다.

 

(10) UNLOCK 문
  - LOCK되어 있는 파일에서 가장 최근에 읽었던 레코드를 다른 프로그램에서 사용할 수 있게 해주는 명령으로 이 명령이 지정된 파일은 반드시 I-O 모드로 OPEN 되어 있어야 한다.

** UNLOCK 문 사용 형식
      UNLOCK 파일이름 RECORD

 

 

 

출처 : https://m.blog.naver.com/kilokilo77/40016871400

 

 

 

 

'개발 > cobol' 카테고리의 다른 글

02_cobol 구조  (0) 2021.12.15
01_cobol 기초  (0) 2021.12.15

1. COBOL의 구조

 COBOL PROGRAM - 부(DIVISION) - 절(SECTION) - 소절(paragraph) - 문장(SENTENCE),항(ENTRY) - 명령(STATEMENT),구절(CLAUSE) - 단어(WORD) - 문자(CHARACTER)

 4개의 DIVISION은 IDENTIFICATION, ENVIRONMENT, DATA, PROCEDURE   DIVISION이다.

 

 

2  COBOL의 6대 구성 요소

요소 예약어
예약어 예약어는 점유 단어라고도 한다. 코볼 컴파일러에 의미가 정해져 있는 단어이다. 사용자 단어는 사용할 수 없다.
사용자 단어 영문자,숫자, -(HYPHEN)를 사용한다. 하이픈은 단어의 처음과 마지막에 사용할 수 없다.  최대 길이는 30자 까지이다. 예약어는 사용할 수 없다. 첫 글자는 반드시 영문자, 처리부에서는 숫자로만 구성할 수 있다.
리터럴 문자리터럴은 따옴표로 묶어서 표현하며, 최대 120글자 이내이며, 어떠한 문자도 사용할 수 있다.
계층 번호 프로그램 내에서 취급되는 데이터의 구조를 설명하기 위하여 레코드와 레코드에 종속되는 항목들 또는 독립 항목에 붙이는 번호이다.  이들은 항목간의 상하, 좌우 관계를 표시한다.
PICTURE 데이터의 크기와 성격을 표시한다.
기호 뜻이 정해진 부호

 

 

3. IDENTIFICATION DIVISION

○ IDENTIFICATION DIVISION은 반드시 기술해야 하며 프로그램 이름을 비롯한 몇 가지의 내용들로 구성된다. 아래와 같은 7개의 Paragraph으로 구성되며 이 중 PROGRAM-ID. 은 반드시 기술해야하며 나머지는 생략가능하다.  프로그램의 문서적인 기능을 나타내주는 DIVISION이다.

     PROGRAM-ID.					프로그램 이름.
     [AUTHOR.					작성자 이름.]
     [INSTALLATION				설치 장소에 관한 정보.]
     [DATE-WRITTEN.				작성 일자.]
     [DATE-COMPILED.				번역 일자.]
     [SECURITY.					비밀 사항.]
     [REMARKS.					참고 사항.]


 사용 예시)
      IDENTIFICATION				DIVISION.
      PROGRAM-ID.				XXTEST.
      AUTHOR.					張星九.
      INSTALLATION.				KDN.
      DATE-WRITTEN.				1998.09.02.
      DATE-COMPILED.				1998.09.02
      SECURITY.					NONE
      REMARKS.					이것은 예제 프로그램 입니다.

(1) PROGRAM-ID Paragraph
  프로그램 이름을 기술하며 이름은 사용자가 임의로 지정할 수 있다. 프로그램 이름은 30자를 초과할 수 없다.  또한 반드시 기술해야 하며 다른 PROGRAM-ID와 중복되었을 경우는 다른 프로그램과 연결시(Link)킬 때 문제가 생기므로 주의해야 한다.

(2) AUTHOR   Paragraph
  프로그램 작성자의 이름을 기술하며 생략가능하다.  참고로 한글이나 한자도 가능하다.

(3) INSTALLIATION  Paragraph
  컴퓨터가 설치되어 있는 장소와 관련된 내용을 기술하며 생략가능하다.  보통 회사의 이름이 들어간다.

(4) DATE-WRITTEN  Paragraph
  프로그램 작성일자를 기술하며 생략 가능하다.

(5) DATE-COMPILED Paragraph
  프로그램 Compile 일자를 기술하며 생략 가능하다.

(6) SECURITY  Paragraph
  프로그램 관리에 주의사항이나 참고사항을 기입하며 생략가능하다.

(7) REMARKS  Paragraph
  주석문을 사용하는 Paragraph으로 생략 가능하며 SECURITY Paragraph와 사용법이 같다.

 

 

 

4. ENVIRONMENT DIVISION

○ ENVIRONMENT DIVISION은 프로그램이 실행될 주변 환경을 설정한다.  즉, 프로그램이 작성되어지는 컴퓨터 기종과 프로그램이 컴파일되어 실행되어지는 기종을 명시하는 CONFIGURATION SECTION과 입.출력 파일이 어떤 장치에 연결되어 있는가를 설정하는 INPUT-OUTPUT SECTION을 기술한다.

ENVIRONMENT					DIVISION.
[CONFIGURATION					SECTION.]
[SOURCE COMPUTER.				컴퓨터 이름.]
[OBJECT-COMPUTER.				컴퓨터 이름.]
[SPECIAL-NAMES.					특별이름 항목 ....] ].
[INPUT-OUTPUT					SECTION.
FILE-CONTROL.					문장.
I-O-CONTROL.					입.출력 제어문 항목. ]


사용 예시)
       ENVIRONMENT				DIVISION.
       CONFIGURATION				SECTION.
       SOURCE-COMPUTER.			PC.
       OBJECT-COMPUTER.			PC.
       SPECIAL-NAMES.				CURRENCY SIGN IS "₩".
       INPUT-OUTPUT				SECTION.
       FILE-CONTROL.
					SELECT  IN-F  ASSIGN TO INPUT "SAMPLE.DAT".

 

(1) CONFIGURATION SECTION.

1)  SOURCE-COMPUTER  Paragraph
    프로그램이 작성되어 컴파일 할 컴퓨터의 기종을 기술하며 생략 가능하다.

2)  OBJECT-COMPUTER  Paragraph
    컴파일된 프로그램을 실행하는 컴퓨터의 기종을 기술하며 생략가능하다.

3) SPECIAL-NAMES  Paragraph

        SPECIAL-NAMES.
                  [ switch-name [ IS mnemonic-name ]
                     ON STATUS IS condition-name-1
                     [ OFF STATUS IS condition-name-2 ]
                     OFF STATUS IS condition-name-2
                     [ ON STATUS IS condition-name-1  ]
                     [ALPHABETalphabet-name-1 IS
                                         STANDARD-1
                                         STANDARD-2
                                         NATIVE
                    [ CURRENCY SIGN IS literal ]
                    [ DECIMAL-POINT  IS  COMMA. ]  ]

○  switch-name은 switch-1, switch-2, switch-3, ... , switch-8 중 하나이다.
○  alphabet-name은 주석으로 처리된다.
○  CURRENCY SIGN IS literal에서 리터럴은 1문자로 제한되어 있으며 화폐기호를 나타내기 위해서 사용된다.
○  다음 문자들은 화폐기로로 지정할 수 없다.
     숫자 :  0 ~ 9  ,  영문자 : A,B,C,D,L,P,R,S,V,X,Z,공란(SPACE),    특수문자 : *,+,-, , , ; , (, ), /, =
○  우리나라 화폐기호 원(₩)을 RM/COBOL에서 사용하기 위해서는 아래와 같이 기술해야 한다.

     SPECIAL-NAMES.
                CURRENCY   SIGN IS  "₩".

 

(2) INPUT-OUTPUT SECTION
○  INPUT-OUTPUT SECTION은 FILE-CONTROL , I-O CONTROL Paragraph으로 구성되며 프로그램이 실행될 때 data 전송과 처리에 필요한 정보를 제공하여 준다.
  * 사용되는 파일이 없으면 생략해도 된다.

형식1) 순차파일
INPUT-OUTPUT      SECTION.
 FILE-CONTROL.
    SELECT file-name ASSIGN TO INPUT  "데이터 파일 이름"
                     OUTPUT              data-name-1
                     INPUT-OUTPUT
                     I-O
                     PRINT
                     RANDOM
                  [  ORGANIZATION  IS  {  LINE SEQUENTIAL }
                                           { BINARY                  }
                   [ ACCESS MODE IS   {  SEQUENTIAL  }
--------------------------------------------------------------------
형식2) 상대파일
INPUT-OUTPUT      SECTION.
 FILE-CONTROL.
    SELECT  file-name  ASSIGN   TO   RANDOM             "데이터 파일 이름"
                  ORGANIZATION   IS  RELATIVE
               [ ACCESS MODE IS    {  SEQUENTIAL  }
                                                 { RANDOM         }
                                                  { DYNAMIC        }
                RELATIVE KEY IS    data-name-2
                [ FILE STATUS IS   data-name-3 ]
--------------------------------------------------------------------
형식3) 색인파일
INPUT-OUTPUT      SECTION.
 FILE-CONTROL.
    SELECT  file-name  ASSIGN   TO   RANDOM               "데이터 파일 이름"
                  ORGANIZATION   IS  INDEXED
               [ ACCESS MODE IS    {  SEQUENTIAL  }
                                                 { RANDOM         }
                                                  { DYNAMIC        }
                RECORD KEY IS    data-name-2
                [ FILE STATUS IS   data-name-3 ]
--------------------------------------------------------------------
사용 예시)
        ENVIRONMENT DIVISION.
        INPUT-OUTPUT SECTION.
        FILE-CONTROL.
            SELECT IN1-F        ASSIGN TO INPUT "980815.DAT".
            SELECT IN2-F        ASSIGN TO INPUT "980816.DAT"
                                          ORGANIZATION IS LINE SEQUENTIAL.
            SELECT SORT-F  ASSIGN TO DISK.
            SELECT OUT-F    ASSIGN TO OUTPUT "980814.OUT".
            SELECT PRT1-F    ASSIGN TO PRINT "980814.PRT".
            SELECT PRT2-F    ASSIGN TO PRINT "PRINTER".
         DATA DIVISION.

○   FILE-CONTROL Paragraph
   사용하고자 하는 각각의 파일에 파일 이름을 지정하며 파일과 관련한 다른 정보를 기술한다.   

순차파일 기술방법(형식1)
순차파일은 레코드가 순차적으로 파일에 저장되며, 레코드를 읽어 들일 때 입력되어진 순서대로만 읽을 수 있는 파일이다.  일단 파일이 만들어진 후 레코드를 추가하려면 파일의 맨뒤에 추가시켜야 한다.
RM/COBOL에서 사용하는 순차화일은 LINE SEQUENTIAL 과 BINARY SEQUENTIAL 2가지이며 각각의 논리 레코드(Logical record)가 가질 수 있는 최대 길이는 65535Byte 이다.
LINE SEQUENTIAL FILE
  행 순차화일로서 데이터 파일내의 레코드가 행 단위로 입력되어 있는 형태의 파일을 말하며 이 파일의 데이터는 사용자가 Text Editor(예:TGEDIT,EDIT,EDLIN,PE2, SIDEKICK, QE)를 직접입력하여 만들 수도 있다.
  사용 예는 위에서와 같이 기술하며 즉
<< SELECT IN2-F        ASSIGN TO INPUT "980816.DAT"  ORGANIZATION IS LINE SEQUENTIAL. >>
  와 같이 기술한 경우에 해당된다.
BINARY SEQUENTIAL FILE
 이진 순차화일로서 행 순차화일은 각각의 레코드가 carriage return 이나 Lline feed 등에 의하여 레코드가 행 단위로 구분되어 있지만 이진 순차화일은 각 레코드가 행 구분이 없이 carriage return이나 line feed도 데이터(레코드)로 취급되는 형태의 파일구조를 말한다.  잘못하면 모든 데이터가 2자리씩 밀 리는 현상이 발생하므로 주의해야 한다.
-1- SELECT 구  :   SELECT 구는 맨 처음 반드시 기술해야 하며 SELECT구 다음 기술사항들은 순서에 상관없다.  SELECT 구에서 지정된 파일이름은 DATA DIVISION에서 FD로 기술하는 파일이름과 같아야 한다.

-2- ASSIGN 구 : 사용하고자 하는 파일이 어떤 장치에 연결되어 있는가를 기술하며 장치 형태는 기능에 따라 INPUT, OUTPUT, INPUT-OUTPUT, PRINT, RANDOM 중에서 하나를 기술한다.  "데이터 파일이름"은 30자 이내로 해야 하며 반드시 따옴표(" ")로 둘러싸야 한다. data-name-1은 DATA DIVISION에서 영숫자 항목(X MODE)로 정의되어야 한다.

-3- ACCESS MODE 구 : 레코드를 읽거나 쓰는 순서를 나타내는데 순차화일에서는 SEQUENTIAL로만 처리한다. 만약 생략한다면  ACCESS MODE IS SEQUENTIAL으로 처리된다.

-4- FILE STATUS 구 : 파일의 입출력 작업이 이루어지는 상태를 data-name-2에 어떤 값으로 기억하며 이때, data-name-2는 WORKING-STORAGE SECTION에 영숫자 항목(X MODE) 2자리로 정의되어 있어야 한다.

 

색인(INDEX) 화일 기술방법(형식3)
- 색인(INDEX) 파일이란 사용자가 지정한 레코드 키(KEY)에 의하여 각각의 레코드를 구분한다.  색인화일은 데이터가 기록되는 데이터 파일과 레코드 키 만을 따로 모아놓은 인덱스(index) 파일로 구성되며 RM/COBOL 에서는 색인화일과 데이터화일이 한 파일로 구성되는 경우도 있다.

- 색인화일은 입력 순서에 관계없이 키 값의 크기 순서에 따라 항상 오름차순(1234...9)으로 정렬되어 인덱스를 구성하고 데이터 레코드는 입력된 순서대로 저장된다.

- 따라서 색인화일은 순차(Sequential), 비순차(Random), 순차 비순차(Dynamic)적으로 레코드를 접근할 수 있다.  또한 색인화일의 키는 단순히 하나의 키만을 지정하여 레코드를 접근하는 형태와 Alternate키를 지정하여 서로 다른 여러개의 키로 레코드를 접근할 수 있는 형태로 구분한다.
-1- SELECT, FILE STATUS 구는 순차화일과 기술방법이 똑 같다.

-2- ASSIGN 구 : 순차화일과 같은 방법으로 기술하는데 장치 형태는 반드시 RANDOM으로 기술해야만 한다.  

-3- ORGANIZATION 구 : 데이터 파일이 어떠한 형태로 형성되어 있는가를 기술하며. ORGANIZATION은 INDEXED로 기술된다.

-4- ACCESS MODE 구 : 레코드를 읽거나 쓰는 순서를 나타내는데 순차화일인 경우는 오름차순으로 처리된다.  RANDOM일 경우는 레코드 키에 의하여 레코드의 내용을 접근할 수 있다.  DYNAMIC인 경우는 앞의 2가지 경우의 처리가 가능하다.  생략하는 경우에는 ACCESS MODE IS SEQUENTIAL로 지정된다.

-5- RECORD KEY구 : 파일을 접근할 때 주요 레코드 키를 지정하며 이 키가 인텍스 파일속에 있는 레코드들의 접근할 수 있는 경로를 제공한다.

-6- ALTERNATE RECORD KEY 구 : 파일에 대한 대체 레코드 키를 나타내며 이 키가 색인 파일속에 있는 레코드들의 대체 접근할 수 있는 경로를 제공한다. 대체할 수 있는 키는 14개 까지 가능하다.

-7- WITH DUPLICATES구 : 대체 키가 파일내의 다른 키와 중복될 수 있음을 나타내며 WITH DUPLICATES가 기술되지 않으면 대용 키는 중복되어서는 안된다.

 

○   I-O-CONTROL Paragraph
   이 구는 서로 다른 파일들을 메모리 영역을 공유시키거나 재수행(RERUN)되는 내용, 다중화일 장치의 파일 위치등을 명시한다. 보조기억장치 사용시 입.출력 관리를 위하여 기술한다.

형식)
 I-O-CONTROL.
   [  RERUN ON  [  file-name-1  ]
                   EVERY   { END OF    { REEL / UNIT }  /  {  integer-1   RECORDS  } OF file-name-2 ]
    [ SAME { RECORD / SORT } AREA FOR fine-name-3 ... ]
    [ MULTIPLE FILE TAPE CONTAINS fine-name-4 POSITION integer-2 ]

-------------------------------------------------------
사용 예제)
-------------------------------------------------------
        I-O-CONTROL
               RERUN  EVERY  2000  RECORDS OF  FILE-01.
// FILE-01을 처리하는데 매 2000개의 레코드가 처리될 때 마다 그 결과를수록 한다.
 -------------------------------------------------------
       I-O-CONTROL
               RERUN  EVERY  END OF REEL OF TAPE-F.
// 여러개의 REEL로 구성된 TAPE-F 파일을 처리할 때 매 REEL이 처리될 때마다 그 결과를 수록한다.
-------------------------------------------------------
      I-O-CONTROL
               SAME   RECORD  AREA  FOR  FILE-1 FILE-2 FILE-3 .
// FILE-1, FILE-2, FILE-3의 데이터 레코드 영역이
// 주기억장치에 동일한 구역으로 확보되어 공동으로 사용된다는 의미이다.
// 그러나 FILE-1,FILE-2,FILE-3의 데이터 레코드는 각각 별도로 작성된다.
-------------------------------------------------------
INPUT-OUTPUT               SECTION.
       FILE-CONTROL.
           SELECT  A-MAST-VSAM    ASSIGN  TO        VSAMMSTR
                                  ACCESS            SEQUENTIAL
                                  ORGANIZATION  IS  INDEXED
                                  RECORD  KEY   IS  A-MAST-KEY.
           SELECT  A-RANDOM-VSAM  ASSIGN  TO        VSAMFILE
                                  ACCESS            RANDOM
                                  ORGANIZATION  IS  INDEXED
                                  RECORD  KEY   IS  A-RANDOM-KEY.
       I-O-CONTROL.
           SAME  RECORD  AREA  FOR  A-MAST-VSAM  A-RANDOM-VSAM.
       DATA                       DIVISION.
       FILE                       SECTION.
       FD  A-MAST-VSAM
           LABEL   RECORD         STANDARD
           BLOCK   CONTAINS   10  RECORDS
           RECORD  CONTAINS  1000  CHARACTERS.                 
       01  A-MAST-VSAM-REC.
           03  A-MAST-KEY.
               05  A-MAST-CUST    PIC X(10).
           03  A-MAST-DATA        PIC X(990).
       PROCEDURE                   DIVISION.
       0000-START.
            OPEN    I-O     A-MAST-VSAM A-RANDOM-VSAM.
            ....
           REWRITE  A-MAST-VSAM-REC  FROM  WK-MAST-REC .
           WRITE  A-MAST-VSAM-REC  FROM  WK-MAST-REC .
           CLOSE   A-MAST-VSAM A-RANDOM-VSAM.
           STOP   RUN.

 

- RERUN 절
   어떤 파일을 처리함에 있어서 장시간을 요구할 때 처리도중 필요로 인하여 처음부터 다시 작업을 해야하는 경우가 생기는데 처리도중 일정한 중간 결과를 지정된 파일에  수록해 둠으로써 차후에 최종적으로 수록한 시점부터 다시 작업 할 수 있도록 하기위한 조치이다.

- SAME AREA 절
   주기억 장치의 기억장소를 절약하기 위하여 서로 다른 여러개의 파일에 대한 데이터 레코드가 기억장소를 공유하고자 할 때 사용한다. SAME SORT AREA절이 사용되면 파일중에 적어도 하나는 SORT나 MERGE 파일로 표현 되어야 한다.

 

 

5. DATA DIVISION


 (1) FILE SECTION

○   ENVIRONMENT DIVISION의 FILE-CONTROL절에서 선언한 입.출력 파일과 레코드에 대하여 설명하는 부분으로 DATA DIVISION에서 맨 처음 기술한다.  즉 파일을 구성하는 레코드 이름, 논리적.물리적 레코드 크기, 레코드의 레이블 지정등을 정의한다. FILE에 관한 설명과 레코드 구조, 레코드에 있는 각 항목의 성격과 크기를 기술한다.

파일 코딩 용지의 A 영역에 기술하며, 파일에 대한 설명을 기술한다.
레코드 레코드 각 항목들의 구조와 이름, 성격, 크기 등을 기술한다.
PICTURE 데이터의 크기와 성격을 기술한다.
숫자는 9(최대 18자리), 영숫자는 X(최대 120자) MODE로 기억된다.
FILE SECTION 사용 형식)
     FILE                             SECTION.
     FD   file-name
           [  LABEL   RECORD(S) { IS / ARE }  {  STANDARD / OMITTED }  ]
           [  BLOCK  CONTAINS integer-1   TO integer-2  {  RECORDS /  CHARACTERS }   ]
           [  RECORD CONTAINS integer-3  TO  integer-4    CHARACTERS  ]
           [  DATA     RECORD(S)  { IS / ARE  } data-name-1 data-name-2 ...    ]
--------------------------------------
사용 예시)
     ** 주의 : PIC 정의시에는 VALUE 구를 사용할 수 없습니다.
       FD IN-F.
       01 IN-R.
            03 FILLER  PIC X(01) .



(1)  파일 기술 항목
- FD(File Description) 문은 ENVIRONMENT DIVISION의 SELECT문에서 정의한 파일들에 대한 설명의 시작을 나타내며 FD 다음에는 파일 이름을 기술해야 한다. 그리고 이 파일이름은 SELECT문에서 정의된 파일이름과 같아야 하며 갯수도 같아야 한다.

1) LABEL RECORD
    기술된 파일의 레이블이 표준 레이블인가 아닌가를 정의하는 것으로 테이프 파일이나 디스크 파일처럼 레이블이 존재하는 장치에는 STANDARD로 기술하고 프린터 파일이나 카드 파일처럼 레이블이 존재하지 않은 장치에는 OMITTED로 기술한다.  그러나 생략해도 된다.

2) BLOCK CONTAINS
    물리적 레코드의 크기를 정의한다.  즉 하나의 BLOCK에 들어가는 레코드 수, 또는 문자 수를 숫자로 표시하며 interger-1, integer-2가 동시에 지정되면 BLOCK의 크기가 가변적임을 나타낸다. 그러나 integer-2 만 기술되면 BLOCK의 크기가 일정함을 나타낸다. 생략하면 BLCOK의 크기는 하나의 논리적 레코드 크기가 된다.

3) RECORD CONTAINS
   하나의 레코드가 몇 바이트로 구성되어 있는가를 표시한다. 생략하면 레코드 기술항목 부분에서 기술된 길이대로 지정된다. 논리적 레코드는 한번에 입.출력되는 단위를 말한다.  integer-3, integer-4가 모두 지정되면 레코드 길이가 가변적인 것을 의미하며 integer-3은 최소 레코드 길이, integer-4는 최대 레코드 길이를 지정한다.  integer-4 만 기술되면 레코드 길이가 일정함을 나타낸다.

4) DATA RECORD
   파일을 구성하고 있는 데이터 레코드의 이름을 정의한다.  한 파일 내에서 서로 다른 레코드의 이름을 지정하면 영역을 공유하며 각 레코드들은 서로 다른 형식을 가져도 되지만 각 레코드들의 크기는 같아야 한다.  생락하면 레코드 기술항목 부분에서 기술된 레코드 이름이 지정된다.  

    FD  IN-F
           DATA RECORDS ARE IN-1 IN-2
    01 IN-1.
         ...
     01 IN-2.
          ...

 


(2)  레코드 기술 항목
- 레코드 기술 항목은 논리 레코드의 특성, 레벨 번호, 각 항목의 구조와 이름, 성격 및 크기를 정의한다.

** 레코드 기술 형식)
 레벨넘버 { 항목이름-1 / FILLER / FIL }
       [  REDEFINES  항목이름-2  ]  [ { PICTURE / PIC }   IS 문자열(string) ]
       [ { COMPUTATIONAL / COMP / BINARY } ]
       [ [ USAGE IS ] { COMP-1 / COMP-2 / COMP-3 ] / DISPLAY / INDEX  } ]
      [  [ SIGN IS ] { LEADING / TRAILING } [ SEPARATE CHARACTER ] ]
      [ OCCURS { integer-1 TO integer-2 TIMES DEPENDING ON 항목이름-3 /
                          integer-1 TIMES  }
                     { ASCENDING / DESCENDING } KEY IS 항목이름-4  
                       [ INDEXED BY 인덱스이름-1 인덱스이름-2 ... ]
      ]
     [ { SYNCHRONIZED / SYNC  } { LEFT / RIGHT } ]
       [  { JUSTIFIED / JUST }  RIGHT ]
     [ BLANK WHEN ZERO ] [ VALUE IS  literal  ]

** -------------------------------------
** 사용 예시)
           01 IN-R.
              03 FILLER   PIC   X(01)   VALUE  SPACE.
** -------------------------------------
           01  T-DATA-TBL.                                                  
                 03  T-DATA-ROOM              OCCURS  20.                     
                        05  T-OFFICE-NO          PIC X(04).                      
                        05  T-CODE-VALUE       PIC 9(005).          
** -------------------------------------
 WORKING-STORAGE            SECTION.                              
      77   JJ            PIC 9(03)   VALUE  0.      
      01  W-OFFC-TABLE.                                                
            03  W-OFFC-TBL OCCURS  50  TO 150  DEPENDING  ON  JJ.
                  05  W-OFFC            PIC X(03).                            
                  05  W-SU-HO         PIC 9(07).                            
                  05  W-TOT-HO       PIC 9(08).


1) 레벨 넘버(LEVEL-NUMBER)
- 계층번호라고도 하며 논리적 레코드를 구성하는 항목들의 계층적 구조를 나타내며 사용할 수 있는 번호는 01-49,66,77,88 가 있다.
- 88 LEVEL-NUMBER : 조건변수와 관련된 조건이름(condition-name) 부여시에 사용한다.
- 레벨 넘버 01은 하나의 레코드를 대표할 때 주로 사용하며 레코드가 세분된 하위의 항목(Elementary-Item)에서는 02부터 49번까지 사용된다.  레벨 넘버는 세분되어질수록 그 값이 커지며 연속된 번호가 아니라도 된다.
- 레벨 넘버 77은 레코드에 속하지 않는 독립된 항목에 표시하며 WORKING-STORAGE SECTION이나 LINKAGE SECTION에서만 사용된다.

** 레벨 넘버(LEVEL-NUMBER) 예제
       77 AVE-PUNGKA PIC 9(3).
            88 AVEA  VALUES  90  THRU  100.
            88 AVEB  VALUES  80  THRU   89.
            88 AVEC  VALUES  70  THRU   79.
            88 AVED  VALUES  60  THRU   69.
            88 AVEF  VALUES    0  THRU   59.
        ...

***** 평균에 따라서 ABCDF등급을 화일에 출력 88 LEVEL NUMBER 적용.
            MOVE LINE-AVE TO AVE-PUNGKA.
            EVALUATE TRUE
               WHEN  AVEA    MOVE 'A우수' TO O-PUNGKA
               WHEN  AVEB    MOVE 'B보통' TO O-PUNGKA
               WHEN  AVEC    MOVE 'C부족' TO O-PUNGKA
               WHEN  AVED    MOVE 'D열심' TO O-PUNGKA
               WHEN  AVEF    MOVE 'F권총' TO O-PUNGKA
               WHEN OTHER  MOVE '기타 ' TO O-PUNGKA
            END-EVALUATE.
           ...


2) 항목이름 및 FILLER
- 항목이름은 기술되는 데이터의 이름으로 사용자가 규칙에 맞추어 임의적으로 부여한다.  
- FILLER 는 항목의 이름이 필요하지 않은 데이터에 부여하는 것으로 생략할 수도 있다. 사용되는 모든 레벨넘버에 부혀할 수 있고 FIL로 기술해도 된다.
 

(2) WORKING-STORAGE SECTION
 - 연산에 필요한 기억 장소나 출력에 필요한 기억 장소들을 정의한다.  프로그램 수행 중에 임시로 저장하고자 하는 파일의 영역이나 연산 및 출력 영역등과 같은 어떠한 파일에 종속되지 않고 사용되는 기억장소들을 할당하는데 사용한다.

 ** WORKING-STORAGE          SECTION  사용 형식
   WORKING-STORAGE          SECTION
  77  data-name-a
  77  data-name-b
  01  data-name-1
  01  data-name-2
  01  record-name-1
        03  data-name-11
             05  data-name-111
              ...

 

1) 독립 항목(Independent item)의 설정
  다른 항목과 종속 관계가 없이 단독으로 사용되는 항목을 독립 항목이라고 하며, 계층 번호는 77로 부여한다.  77로 지정된 항목을 조건변수(레벨넘버 88)로 사용할 수도 있다. 일반적으로 독립 항목은 WORKING-STORAGE SECTION에서 가장 먼저 기술한다.  

** 독립 항목 예제
   WORKING-STORAGE          SECTION
   77  WK-CNT        PIC   9(06)  VALUE   0.
   77  END-OF-FILE   PIC   X(03)  VALUE SPACE.

 -  VALUE 구
WORKING-STORAGE SECTION에서 확보하는 기억 장소에 초기값을 지정시키는 구이다. 초기값 지정시 PICTURE와 리터럴의 성격이 같아야만 한다.

2) 레코드 항목(Group Item), 그룹 항목
- 입.출력과 관련된 레코드를 기술하는 것으로 데이터 항목들이 계층적 구조를 갖는 그룹항목(Group Item)을 말한다.

** WORKING-STORAGE SECTION 사용 예제
       WORKING-STORAGE  SECTION.
        77  I                          PIC   9(03).
        77  TOT-CNT            PIC   9(07).
        77  EOF-STATUS      PIC   X(03) VALUE SPACE.
               88  EOF              VALUE  'EOF'.
       **  아래의 예가 그룹항목(Group Item)
        01  HEAD-LINE.
              03  FILLER           PIC X(80) VALUE ALL '-'.

 

3) PICTURE / PIC 기호
  기억될 데이터 항목의 성격과 크기 및 편집할 때 요구되는 사항을 기술하며 약속된 기호로 표시한다. 사용되는 기호는 기억형 기호와 편집형 기호로 구분한다. PICTURE/PIC 구는 Group-Item에 대해서는 사용하지 않고 Elementary-Item에 대해서만 사용한다.  단, 세분되지 않은 Group 항목은 예외이다.

** 사용형식
      레벨넘버     data-name [ PICTURE / PIC ] [ IS ] Mode        
** ---------------------------------
** 사용 예
       01              WK-REC                  PIC                    X(001) .

-> X (영숫자 표시 기호) Mode
 영문자,숫자,특수문자등 컴퓨터에서 사용하는 모든 문자를 기억할 수 있는 Mode이다. 가장 많이 사용되는 Mode이다. X 하나가 기억 장소 1 BYTE를 의미한다. 수치를 기억할 수 있으나 문자형태이므로 연산에 사용될 수 없다.  기억되는 순서는 왼쪽에서 오른쪽 방향이며 기억장소의 크기가 실제 기억되는 데이터보다 크면 오른쪽의 남는 부분에는 공백(Blank)이 채워지며 반대로 기억장소의 부족시에는 데이터의 오른쪽 부분이 모자라는 만큼 기억되지 않는다.

데이터 PICTURE 기억결과 비고
MAST X(07) MAST□□□  
KDN X(5) KDN□□  
SUPER XXX SUP 자리수 부족으로 ER이 잘림

 

(가) 연산을 위한 PICTURE
 - 숫자표시기호 ( 9 Mode )
   숫자를 기억시키기 위한 기호, 18자리 이내의 숫자만 사용가능하다, 9 하나가 기억장소 1 byte를 의미한다.
   기억되는 형태는 오른쪽에서 왼쪽 방향이며 기억 장소의 크기가 실제 기억되는 값보다 크면 왼쪽의 남는 부분에는 0 이 채워지며 반대로 기억장소의 부족시에는 값의 왼쪽부분이 모자라는 만큼 기억되지 않는다. 데이터가 연산에 사용되려면 9로 정의된 기억장소가 확보되어야 한다.  숫자 기억형[ 9 MODE] 과 같이 사용되는 연산을 위한 부호에는 S, V, P의 3가지가 있다.
   ①  S : 9 MODE의 왼쪽에 기술하며 기억되는 값이 양수, 음수인가를 표시하며 자리수에는 포함되지 않는다.

   03     A       PIC      9(3).       ** A= □□□
   03     B       PIC      S9(3).       ** B= □□□
   03     C       PIC      S9(4).        ** C= □□□
  MOVE      -130     TO     A     B.      ** A=  130  양수,   B=130  음수
  MOVE       135      TO     C.          ** C=  0135  양수

숫자 기억형[9 MODE]에 'S' 부호가 기술되지 않으면 음수를 기억시켜도 양수를 기억하게 되므로 기억 장소에 음수값을 갖게 하는 경우에는 반드시 S 부호를 PICTURE 왼쪽에 사용하여야 한다.                               

 

  ② V : 숫자 내에 존재하는 소수점을 표현하기 위해 사용되며 자리수에는 포함되지 않는다. 소수점을 나타내기 위해서 "."을 사용했다면 연산을 할 수 없다. V 는 하나만 기술해야 한다. 데이터의 기억은 V 기호를 기준으로 하여 정수부분은 오른쪽에서 왼쪽으로 소수 부분은 왼쪽에서 오른쪽으로 기억된다.

   03     A       PIC      9(3)V9.			** A= □□□ . □      . : 소숫점의 위치
   03     B       PIC      99V99.			** B= □□ . □□
  MOVE    253.2    TO     A.				** A=   253.2
  MOVE    25.32     TO    B.				** B=   23.23
데이터 PICTURE 기억결과 비고
1234 9(4)V99 1234^00  
567.8 99V9(3) 56^780 정수부 자리수 부족
1.234 99V99 01^23 소수부 자리수 부족
6.7A 9(5)V9 ERROR발생 문자가 있음

③ P : 숫자 외에 존재하는 소수점을 표시하기 위해 사용된다.  실제 자리수는 차지하지 않는다.  숫자 오른쪽이나 왼쪽에만 표시가 가능하다. P 기호가 9 기호의 왼쪽에 있으면 P 기호가 있는 자리에 9가 기술된 것으로 간주한다. V Mode 와 같이 사용할 수 없다.

   03     A       PIC      SPPP9(3).     ** A= .  000□□□       . : 소숫점의 위치
   03     B       PIC      S9(3)PP.          ** B= □□□□00.
  MOVE      -123     TO     A.        ** A=  .000123
  MOVE       456       TO    B.         ** B=   45600.

 

(나) 편집을 위한 기호(Editing Symbols)
  주기억 장치 내에 기억되어 있는 내용을 출력시킬 때 출력 형태에 따라 적당한 형태로 출력시킬 필요가 있다.  즉, 기억된 내용은 그대로 출력시키기 위해 사용되는 기호를 말한다.
- 편집에 사용되는 기호의 수만큼 자리수를 차지한다.
- 편집이 된 숫자 기억형 기억 장소를 연산식에 사용할 수 없다.

① , (COMMA)
- 숫자 사이에 삽입하기 위하여 사용되며 삽입하고자 원하는 위치에 표시한다.
- 주로 숫자 기억형에 사용된다. 문자, 문숫자 기억형에는 사용할 수 없다.

  03     A   PIC     99,99,99.			** A= □□□□□□□□ 8자리
  03     B   PIC        9(6).			** B= □□□□□□  6자리
  MOVE    123456  TO A   B.			** B=  123456   A=  12,34,56

 

② . 소수점(Decimal point) Code
- 가상 소수점(V)은 기계 내에서 소수점의 위치를 지시하며 실제 출력시, 가상 소수점의 위치를 표시하기 위하여 사용되는 부호이다. 수치항목에만 사용하며 자리수에 포함된다. 편집 데이터의 맨 앞이나 중간에 한번만 기술해야 한다.  "." 기호 뒤에서는 Z기호와 9기호를 같이 사용할 수 없다.

   03     A   PIC     9999V99.
   03     B   PIC     999.99.
   MOVE    123   TO  A.			** A=  123 ( .)  00
   MOVE    A   TO   B.			** B=   123 .00
데이터 PICTURE 기억결과 비고
123.56 9999.999 0123.560  
12.35 999.9 012.3  
12.35 99.99 12.35  
-12.35 S99.99 12.35  
12.35 999.99 ERROR V기호와 사용불가
012.35 9.99.99 ERROR 2 회 사용 안됨.
12.35 ZZZ.Z9 ERROR 기호뒤에서 Z,9 같이 사용 불가

 

③ Z (ZERO 삭제기호 코드)
- 숫자 데이터의 출력시 소수점이 없으면 PICTURE 기호의 우측 끝과 숫자의 끝자리가 맞추어져서 출력된다.  이 때 데이터의 유효 숫자가 작아서 픽쳐 기호의 왼쪽과 대응되는 값이 0이면 그 자리를 빈칸으로 인쇄한다.  PCITURE 기호 9가 유효 숫자보다 많으면, 남는 PICTURE 기호 9자리에는 0이 인쇄된다. 즉 의미없는 0를 공백(Blank)로 출력한다.

   03     A   PIC     99,999.
   03     B   PIC     ZZ,ZZ9.
   MOVE    1234  TO    A  B.		** A = 01, 204     B=   □1,204
데이터 PICTURE 기억결과 비고
123 Z(4)9 □□123  
456 Z9(5) □00456  
0 Z(3) □□□  
123 9ZZZ ERROR발생 9 기호 뒤 사용불가

Z 부호로 편집된 기억 장소는 연산식에 사용될 수 없다.  단 연산 결과를 받는 기억 장소는 편집을 위한 기호를 이용하여 편집되어도 된다.

④ B (공란 삽입)
- 인쇄하고자 하는 문자나 숫자 사이에 공백을 삽입하고자 할 때 사용한다. 반드시 다른 기호와 같이 사용해야만 한다.
- 숫자 기억형과 문숫자 기억형에 사용된다.

   03  A   PIC     X(3) VALUE 'KDN'.			** A= KDN
   03  B   PIC     XBBXX.
   MOVE    A    TO  B.					** B=I  □ □ B M

 

⑤ 기호 +, -
- 출력되는 수치에 대하여 양수, 음수인가를 표시하기 위하여 사용되는 부호이다.
- 출력에 +,- 의 부호를 표시하기 위해서는 반드시 부호를 기억할 수 있는 형태로 기억되어 있어야 한다.

   03  A   PIC   S9(5). VALUE -12345.		** A=12345
   03  B   PIC   -9(5).
   MOVE    A    TO  B.					** B=  - 1 2 3 4 5

- 화폐 기호로 사용하는 기호와 같은 방법으로 표시되며 기억되어 있는 값이 양수인 경우, - 부호를 PICTURE로 사용하면 음수 부호와 관계없이 출력에 부호가 인쇄되지 않는다.

⑥  $ ,  ₩기호
- 출력되는 수치에 화폐 기호를 삽입시켜 인쇄하고자 할 때 사용한다.
- 일반적으로 숫자 기억형에 사용되며, $ 기호는 아무런 제한없이 사용할 수 있으나 ₩ 기호를 사용하려면 SPECIAL-NAMES 소절에서 "CURRENCY SIGN IS W".  라고 기술해야 한다.

       ENVIRONMENT  DIVISION.
       CONFIGURATION  SECTION.
       SPECIAL-NAMES.  CURRENCY SIGN IS  '₩'.
       ....
       DATA  DIVISION.
       ..
       WORING-STORAGE  SECTION.
       01 PR-1.
            03 P-MONEY PIC ₩₩₩,₩₩₩.
   03  A   PIC   9(5) VALUE 12345.		** A=12345
   03  B   PIC   $9(6).
   03  C   PIC   $,$$$,$$$.
   03  D  PIC    W(6).
   03  D  PIC    W(3),W(3).			** B= $ 0 1 2 3 4 5   C= □ □$ 1 2 , 3 4 5
   MOVE    A    TO  B C D E.		** D= W 1 2 3 4 5    E= W 1 2 , 3 4 5

 

 ⑦   /  기호
- / 가 위치한 곳에는 무조건 /를 나타낸다.  반드시 다른 기호와 같이 사용해야만 한다.

⑧ CR , DB 기호
- 회계 장부에서 대변(CR), 차변(DB) 을 표시하기 위한 편집기호 사용한다. 항목의 수치가 음수일 경우에만 유효숫자 맨 끝에 CR 또는 DB를 표시하고 양수이면 공백 두 개를 표시한다.
- PICTURE 정리

구분 기호 기호의 의미 기호의 형태
기억용
PICTURE
9 숫자 데이터를 기억하는 기호 03 A PIC 9(003).
A 영문자 데이터를 기억하는 기호 03 A PIC A(003).
X 영숫자 데이터를 기억하는 기호 03 A PIC X(003).
연산용
PICTURE
S 수의 부호 표시 03 A PIC S9(003).
V 소수점의 위치 기억 03 A PIC 99V99.
P 소수점의 위치가 바깥쪽일 때 03 A PIC P9(003).
편집용
PICTURE
, 숫자 사이에 자리점 삽입 03 A PIC 99,999.
. 출력데이터의 소수점 위치 지정 03 A PIC 9.99.
Z 유효 숫자 앞의 0 제거 03 A PIC ZZ,ZZ9.
B 문자 또는 숫자 사이의 공백 03 A PIC XXBX(3).
+,- 숫자 사이에 음양 기호 붙여 인쇄 03 A PIC +999.
$,₩ 화페의 종류 표시 03 A PIC $9(03).

 

 5) USAGE 구
- 기억장소에 데이터를 기억시킬 때 컴퓨터가 처리하기 용이한 형태로 기억하여 연산처리 효율을 높이기 위하여 사용한다.  즉, 정수 및 실수형 데이터 형태를 취하여 연산처리 속도를 높이고자 할 경우 USAGE구를 사용한다.
- USAGE구는 레벨넘버에 관계없이 모든 수치 데이터 항목에 사용할 수 있다.
- USAGE 구가 Group item에 사용되면 그룹내의 각 항목에 적용된다.

 ** USAGE 형식
 USAGE   IS   {  DISPLAY / COMP / BINARY / COMP-1 / COMP-2 / COMP-3 / INDEX }

 

(가)  DISPLAY
- 1 Byte 에  한 문자씩 기억되는 10진(ASCII) 형태의 데이터 항목을 정의한다. USAGE구가 생략되면 USAGE IS DISPLAY로 간주된다.
- 문자 형태로 표현된 수치 데이터는 연산처리시 연산 속도는 떨어지나 입.출력시에 문자 형태 그대로 쓸 수 있으므로 편리하다.  반면에 2진 형태로 기억된 수치 데이터는 연산 처리시에는 효율적이나 연산 처리후 출력시키고자 할 경우는 다시 10진 형태로 바꾸어야 하므로 속도를 요하는 데이터가 아니면 문자 형태로 사용하는 것이 더 효율적이다.

(나) COMPUTATIONAL 또는 COMP, INDEX
- 10 진수 정수형을 2진수(BINARY) 로 기억시키고자 할 경우 사용한다. 9,S,V,P 기호에서만 사용할 수 있다.
- COMP구는 PICTURE구에서 지정된 정수형 자리수가 1~4자리일 경우는 2 Byte, 5 ~ 9자리일 경우는 4Byte, 10 ~18 자리일 경우는 기억장치 내에서 8 byte가 확보된다.
- COMP구는 실수표현 방식과는 달리 지수부분이 존재하지 않고 정규화도 필요치 않으며 음수일 경우는 보수로 기억된다.

** COMP 예제
       **  L,M,N,O에 각각 -1000 이 기억되어 있은 경우
        01   COMP-REC.
              03     L    PIC       9(03)     COMP.
              03    M    PIC     S9(03)     COMP.
              03    N    PIC      S9(05)    COMP.
              03    O    PIC      S9(04).  
** -----------------------------------------------
                 L    00000000   01100100          <=  sign의 개념이 없으므로 양수로 기억
                 M   11111111   10011100           <= 보수로 기억됨
                 N   11111111   11111111   11111111    10011100         <=    4 byte가 확보
                 O    3       0     3       1      3        0      D       0          <=   존 형식을 취함

①  COMP-1 , COMPUTATIONAL-1
- 10 진수를 실수형태로 기억시키는데 부동 소수점을 나타낼 때 사용한다. COMP-1으로 지정시 무조건 4 Byte(Full Word) 단정도(Single precision) 부동소수점 형태를 취한다.  이 항목의 최대 범위는 -32768 ~  32767 이다.

②  COMP-2 , COMPUTATIONAL-2
- COMP-1 과 동일하며 COMP-2으로 지정시 무조건 8 Byte(Double word) 배정도(double precision) 부동 소수점 형태를 취한다.

③  COMP-3 , COMPUTATIONAL-3 (PACK Type)
- 존(Zone) 형식의 10진수를 존 부분에도 숫자를 기억하게 하는 형태이다.  즉 PACK 10진 형태의 기억을 나타낸다.
- 부호(sign)는 맨 하위(byte)의 마지막 4 bit(digit) 부분에 표시된다.  양수이면 F 또는 C로 , 음수이면 D로 표시된다.  S가 지정되지 않은 양수에는 F가 표시된다.  수치형 데이터의 기억장소를 반정도를 절약할 수 있는 장점이 있다.

④  INDEX
- 해당 데이터 항목을 배열의 첨자나 색인용으로 사용하기 위하여 지정할 경우 사용한다.

 

 

(다) SYNCHRONIZED / SYNC 구
- 기억장치내의 데이터를 기억시킬 때 문자 단위가 아닌 WORD 단위로 기억시켜 처리 효율을 높이고자 할 경우 사용한다.  그룹 항목에서는 사용할 수 없으며 생략시는 SYNC LEFT로 간주된다.  

** SYNC 형식
        {  SYNCHRONIZED / SYNC }  {  LEFT / RIGHT }
** -------------------------------------
** SYNC 예제
        01  DATA-REC.
              03  DATA1  PIC  X(07)  VALUE  "COBOL" SYNC  RIGHT.
              03  DATA2  PIC  X(07)  VALUE  "COBOL" SYNC  LEFT.
** 설명 :    DATA1 에 기억장소에  "□□COBOL" 으로 저장된다.
**           DATA2 에 기억장소에  "COBOL□□" 으로 저장된다. 2개의 WORD가 할당된다.


(라) JUSTIFIED 구
- 문자 항목에 데이터를 기억시키면 왼쪽에서 오른쪽으로 기억되고 오른쪽 남는 부분이 공백으로 되는 것이 원칙이나 JUST RIGHT구를 사용하여 반대로 숫자 같이 기억시킬 수 있다.  그러나 숫자 항목과 레벨넘버 66,88로 지정된 항목에서는 사용할 수 없다.

** JUSTIFIED 형식
          {   JUSTIFIED / JUST  }  [  RIGHT ]
** ------------------------------------
** JUSTIFIED 예제
        01  DATA-REC.
              03  D-A   PIC  X(03)    JUST.
                MOVE    'A'    TO     D-A.
   ** 설명 :  D-A 기억장소에 "□□A"  으로 저장된다.

 

(마) BALNK WHEN ZERO
- 항목의 값이 0(ZERO)이면 그 항목의 값을 공백으로 바꾸어 준다.  이 구는 숫자 항목이나 숫자 편집 항목에서만 사용할 수 있으며 숫자 항목에 이 구가 지정되면 그 항목은 숫자 편집 항목으로 간주되어 연산에 사용할 수 없다.

** BALNK WHEN ZERO 형식
        BALNK  WHEN  ZERO
** ---------------------------------------------
** BALNK WHEN ZERO  예제
         01    PR-REC.
                   03    PR-A    PIC  9(03)  BLANK WHEN ZERO .
           MOVE    0    TO    PR-A.
  ** 설명 : PR-A 기억장소에  "□□0" 으로 저장된다.

 

(바) VALUE IS 구
- 어떤 기억장소에 초기값을 부여할 때 사용하며 WORKING-STORAGE SECTION에서만 기술할 수 있다. 단 레벨넘버 88로 지정된 항목은 예외이다. VALUE구 사용시 기억장소의 성격과 리터럴의 성격은 같아야 하며 항목의 크기는 리터럴의 크기보다 크거나 같아야 하고 REDEFINES,OCCURS 명령과는 같이 사용할 수 없다. FIGURATIVE CONSTANT를 지정했을 경우는 기억장소의 크기와 동일한 값으로 간주한다.

** VALUE IS  형식
        VALUE   [  IS  ] literal
** --------------------------------------
** VALUE IS 예제
        01  IN-REC.
             03   WK-CNT    PIC   9(02)   VALUE   0.
             03   WK-TITLE PIC X(10) VALUE "*REPORT*".

 

 

(3) SCREEN SECTION
- DATA DIVISION 의 WORKING-STORAGE SECTION 다음에 기술될 수 있는 것으로서 화면을 사용한 입력,출력 형식을 지정하기 위한 SECTION 이다.

** 형식
        SCREEN            SECTION.
        level-number     screen-name
        [ BLANK SCREEN ]
        [ LINE NUMBER IS {  identifier /  [ PLUS ] integer }
        [ COLUMN NUMBER IS { identifier /  [ PLUS ] integer }
        [ { PICTURE / PIC } IS  string   {   FROM { identifer / literal }  }
                                                             / {  TO  identifier  }  /  { USING  identifier }  ]
        [ BLANK LINE ]  
        [ BLANK REMAINDER ]
        [ BELL ]
        [ BLINK ]
        [ REVERSE ]
        [ { NO } HIGHLIGHT ]
        [ UNDERLINE ]
        [ VALUE ] IS literal
        [ BLANK WHEN ZERO ]    [   { JUSTIFIED / JUST   } RIGHT ]
        [ AUTO ]
        [ SECURE ]
        [ REQUIRED ]
        [ FULL ]
** ----------------------------------------------
** 사용예
        SCREEN      SECTION.
        01 SCR-R.
             03 BLANK SCREEN.
             03 LINE   3 COL 22 VALUE "* 사원 자료 입력화면 *".
             03 LINE   8 COL 12 VALUE "1. 사번 : ".
             03 LINE 10 COL 12 VALUE "2. 이름 : ".
             03 LINE 12 COL 12 VALUE "3. 학력 : ".
             03 LINE 14 COL 12 VALUE "4. 입사일: ".
             03 LINE 16 COL 12 VALUE "5. 부서 : ".
             03 LINE 18 COL 12 VALUE "6. 직급 : ".
             03 LINE 20 COL 12 VALUE "7. 기본급: ".
             03 LINE 22 COL 12 VALUE "8. 수당 : ".
        01 AIN-REC.
             03 A-SABUN       LINE 08 COL 25     PIC 9(06)   USING I-SABUN  AUTO.
             03 A-NAME        LINE 10 COL 25     PIC X(10)   USING I-NAME  AUTO.
             03 A-EDUC        LINE 12 COL 25     PIC X(08)   USING I-EDUC   AUTO.
             03 A-INDATE      LINE 14 COL 25    PIC 9(06)   USING I-INDATE   AUTO.
             03 A-PART        LINE 16 COL 25     PIC X(20)   USING I-PART   AUTO.
             03 A-CLASS      LINE 18 COL 25     PIC X(06)   USING I-CLASS   AUTO.
             03 A-KIBONSU   LINE 20 COL 25    PIC 9(07)   USING I-KIBONSU   AUTO.
             03 A-SUDANG    LINE 22 COL 25     PIC 9(07)   USING I-SUDANG   AUTO.

- SCREEN SECTION에 기술될 수 있는 사항들은 WORING-STORAGE SECTION에서와 비슷하다.
- SCREEN SECTION에서는 배열로 지정된 항목을 사용할 수 없다. 그러나 실행 프로그램 Vision 에 따라서는 사용될 수 있다.
- SCREEN SECTION에서 사용될 수 있는 실행문은 ACCEPT 문과 DISPLAY 문이 있다.
- level-number 66,88은 사용할 수 없다.

*  ACCEPT 문에 사용될 수 있는 절 : AUTO, FULL, SECURE, REQUIRE, JUST
*  DISPLAY 문에 사용될 수 있는 절
 -  BLANK SCREEN, BLANK LINE, BLANK REMAINDER, BELL, VALUE, BLANK WHEN ZERO
*  ACCEPT 문 / DISPLAY 문에 사용될 수 있는 절
 - LINE, COLUMN, REVERSE, UNDERLINE, BLINK, HIGHLIGHT

 ⓐ BLANK SCREEN 절
   현재의 전체화면이 지워지고 커서의 위치는 변하지 않는다.

SCREEN                            SECTION.
01  SCREEN-CLEAR.
     03  BLANK                    SCREEN.
.....
PROCEDURE                   DIVISION.
START-POINT.
     DISPLAY                   SCREEN-CLEAR.

ⓑ LINE NUMBER

   화면상의 커서의 행의 위치를 정할 때 사용한다. 기술된 identifier는 DATA DIVISION;에서 정의되어야 한다. 일반적으로 사용되는 화면은 1행부터 24행이다.

SCREEN                            SECTION.
01  SCREEN-CLEAR.
     03  BLANK                    SCREEN.
     03  LINE  PLUS  2    "초기 화면".
.....
PROCEDURE                   DIVISION.
START-POINT.
     DISPLAY                   SCREEN-CLEAR.

 ⓒ COLUMN  / COL UMBER 절

   화면상의 커서의 열의 위치를 정할 때 사용한다. 기술된 identifier는 DATA DIVISION;에서 정의되어야 한다. 일반적으로 사용되는 화면은 1열부터 80열까지 이다.    NUMBER는 생략될 수 있으며 COL 만 기술해도 된다.

SCREEN                            SECTION.
01  SCREEN-CLEAR.
     03  BLANK                    SCREEN.
     03  COL  PLUS  2    "초기 화면".
.....

ⓓ PIC 절
   PICTURE 구에서 사용되는 모든 코드를 사용할 수 있으나 V코드와 P코드는 사용할 수 없다.   PICTURE 구가 지정되었을 때는 반드시 USING, FROM, TO 중의 하나가 뒤따라 온다.
- FROM 구 : 필드값을 출력하는 기능이므로 DISPLAY문에만 사용한다.
- TO 구 : 필드값을 입력받는 기능이므로 ACCEPT 문에만 사용한다.
- USING 구 : 필드값을 입.출력 모드로 지정한다.  

 

ⓔ BLANK LINE 절
    현재의 커서 위치로부터 그 줄의 끝까지 지우기 위해서 사용

SCREEN                            SECTION.
01  LINE-ERASE.
     03  LINE   30  BLANK LINE.
...
PROCEDURE                   DIVISION.
DISPLAY  LINE-ERASE.

 

ⓕ BLANK REMAINDER 절
   현재의 커서 위치로부터 화면 끝까지 지우기 위해 사용되며 커서의 위치는 변동되지 않는다.

ⓖ BELL 절
  BELL문이 수행되면 PC의 스피커로 "삐" 소리가 나온다.

SCREEN                            SECTION.
01  BELL-REC.
     03  BELL.
     03  LINE   01   COL  10  PIC  X(09)  FROM "초기 화면" BELL.
.....
PROCEDURE                    DIVISION.
     DISPLAY   BELL-REC.

 

ⓗ BLINK 절
  BLINK문이 수행되면 필드의 내용이 화면에 표시될 때 깜빡인다.

ⓘ REVERSE 절
  필드의 내용이 화면에 역상으로 나타난다.

ⓙ { NO } HIGHLIGHT 절
  HIGHLIGHT문이 수행되면 필드의 내용이 화면에 밝게 표시되며 생략하면 NO HIGHLIGHT가 지정된 것으로 어둡게 표시된다.

ⓚ UNDERLINE 절
  필드이 내용이 화면에 표시될 때 밑줄이 나타난다.

  01 OUT-SCR.
       03 BLANK SCREEN.
       03 LINE 05 COL 10 "BLINK..."  BLINK.
       03 LINE      COL 10 "REVERSE..." REVERSE.
       03 LINE      COL 10 "HIGHLIGHT..." HIGHLIGHT.
       03 LINE      COL 10 "UNDERLINE..." UNDERLINE.
       03 LINE      COL 10 "BLINK/REVERSE..." BLINK REVERSE
         ...................
   PROCEDURE DIVISION.
        ...................
        DISPLAY OUT-SCR.

ⓛ VALUE IS 절
   VALUE문은 BLANK WHEN ZERO, JUST, SECURE, AUTO, FULL, REQUIRE와 같이 기술할 수 없다.  일반적으로 생략하며 DISPLAY문에서만 사용할 수 있다.

ⓜ AUTO 절
   AUTO문은 입력필드가 사용자의 입력에 의하여 자리수가 다 채워졌을 때 ENTER키를 누르지 않아도 자동으로 다음 입력항목으로 넘어간다. AUTO문이 지정된 필드가 그룹항목이 아닐 때에는 TO / USING 문이 기술되어야 한다. AUTO문이 그룹항목에 지정되면 그룹항목 내의 모든 입력필드가 AUTO문 적용받는다.

ⓝ SECURE 절
  SECURE 문은 입력되는 데이터가 화면에 표시되지 않게 한다.  데이터가 입력될 때마다 대신 * 가 표시되므로 PASSWORD(암호) 지정시 사용된다.

ⓞ REQUIRED 절
  REQUIRE 문은 입력필드에 반드시 공백이 아닌 데이터가 입력되어야만 다음으로 이동시킨다.

** SECURE 절, REQUIRE 절 예제
05  LINE  2  COLUMN  13   PIC   X(005)   TO  PASS   SECURE   REQUIRED..

 

ⓟ FULL 절
  FULL문은 입력필드에 반드시 공백이나 어떤 문자가 지정된 자리수만큼 채워졌을 때만 다음으로 이동시킨다.  데이터가 지정된 자리수만큼 입력되지 않으면 enter 키는 취소되면 다시 입력되도록 한다.

** FULL 예제
05  LINE  2  COLUMN  13   PIC   X(005)   TO  PASS   SECURE   FULL.

 

 

(4) LINKAGE SECTION.
-  LINKAGE SECTION은 부프로그램(Sub-Program)작성할 때 부프로그램의 DATA DIVISION의 기술하며 주프로그램 (Main-Program)에서 호출된 프로그램에 매개 변수(parameter)값을 넘겨 주는데 사용한다.
-  매개변수는 주프로그램의 CALL USING 문과 부프로그램의 PROCEDURE DIVISION USING문을 사용하여 지정한다.
-  LINKAGE SECTION에서는 조건변수(레벨넘버 88)을 제외하며, VALUE구를 사용하여 초기값을 부여할 수도 없다.
-  주프로그램의 WORKING-STORAGE SECTION에서 설정된 항목과 같은 이름이 부프로그램의 LINKAGE SECTION에서 기술될 수 있다.

** LINKAGE SECTION의 사용예(부프로그램) FILE-NAME : 980825S.CBL
        IDENTIFICATION DIVISION.
        PROGRAM-ID.       980825S.
        ...
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       ...
       LINKAGE        SECTION.
         01 L-SCORE.
              03 L-JUMSU PIC 9(3) OCCURS 2.
         01 L-SCORERED REDEFINES L-SCORE.
              03 L-JUM PIC X(3) OCCURS 2.
         01 L-RESULT.
              03 L-HAKJUM PIC X(2) OCCURS 2.
              03 L-PYUNG PIC 9V99.
        PROCEDURE DIVISION
                     USING L-SCORE L-RESULT.
        SIJAK.
            ....
            EXIT PROGRAM.
TOTAL-ADD.
          IF L-JUM(K) = SPACE
              MOVE '/' TO L-HAKJUM(K)
           ELSE
              INSPECT L-JUM(K) REPLACING LEADING SPACE BY ZERO
              MOVE 0 TO T FIND
              PERFORM FIND-HAK UNTIL OK
              MOVE SJUM(T) TO L-HAKJUM(K)
               COMPUTE TOT = TOT + SHAK(T) * HJ(K)
               COMPUTE SIN = SIN + HJ(K)
           END-IF.
        FIND-HAK.
           ADD 1 TO T.
           IF L-JUM(K) > SCR(T) OR L-JUM(K) = SCR(T)
               MOVE 1 TO FIND
           ELSE
           GO TO FIND-HAK.
** -----------------------------------------------------------------------------
** LINKAGE SECTION의 사용예(주프로그램)
        WORKING-STORAGE SECTION.
         .....
        01 PARAMETERS.
             03 PARM1 PIC X(6).
             03 PARM2 PIC X(10).
        PROCEDURE DIVISION.
        SIJAK.
              OPEN INPUT S-F OUTPUT P-F.
              .....
              IF NOT EOF
                ADD 1 TO CNT
                MOVE T-SCORE(CNT) TO PARM1
                CALL '980825S' USING PARM1 PARM2
                MOVE PARM2 TO T-RESULT(CNT)
              END-IF.
              ....

 

 

 

출처 : https://m.blog.naver.com/kilokilo77/40016871304

 

 

 

 

 

 



 

'개발 > cobol' 카테고리의 다른 글

03_cobol 명령문  (0) 2021.12.15
01_cobol 기초  (0) 2021.12.15

+ Recent posts